HTTP Protokolü nasıl çalışır?
“Software Identification” tekniginin öncüsü, OSI Modelinin 7.Katmanın da bulununan http protokolü’nün arkasında saniseler içerisinde dönen trafigi capture edip ilgili protokolun çalışma mantığı ve yapısı hakkında derinlemesine bilgi sahibi olmaya çalışacağız. Client tarafından 80. port aracılığıyla yapılan her request’e karşılık http protokolu bir response field döner.
securityfocus isimli sunucuya test amaçlı yapilan bir request ve dönen response içeriğini asağida görebilirsiniz.
Dikkat ederseniz dönen response içeriğinde gereginden fazla bilgi var ki bunlar gereksiz.
=== REQUEST ===
GET / HTTP/1.1
Host: www.securityfocus.com
Accept-Encoding: gzip
Connection: keep-alive
User-Agent: Mozilla/5.0 SF/1.26b
Range: bytes=0-199999
Referer: http://www.securityfocus.com/
=== RESPONSE ===
HTTP/1.1 200 Partial Content
Date: Tue, 13 Apr 2010 20:08:42 GMT
Server: Apache/1.3.41 (Unix) mod_perl/1.29 mod_ssl/2.8.31 OpenSSL/0.9.8g
Last-Modified: Tue, 13 Apr 2010 20:00:13 GMT
ETag: “b339d9-4d9b-4bc4cd4d”
Accept-Ranges: bytes
Content-Length: 19867
Content-Range: bytes 0-19866/19867
Keep-Alive: timeout=4, max=500
Connection: Keep-Alive
Content-Type: text/html
HTTP Protokolü Request ve Response istek yapıları.
Http Response Field Yapısı.
Request = Status-Line ;
*(( gener<al-header ;
| response-header ;
| entity-header ) CRLF) ;
CRLF
[ message-body ] ;
Http Response Header Listesi:
“Informational,Succes,Redirection,Client Error, Server Error”
Http Request Field Yapısı.
Request = Request-Line ;
*(( general-header ;
| request-header ;
| entity-header ) CRLF) ;
CRLF
[ message-body ]
Başlıca Http Request Header Listesi:
options,get,head,post,put,delete,trace,connect,host,user-agent,date,referer
TCP Session nasıl açılır ve HTTP isteği nasıl gerçekleşir ?
AÅŸağıda “Source” bölümü karşışında belirtilmiÅŸ olan IP adresi, sunucumuza istekde bulunan client’in adresidir. Destination ise, sunucumuzun IP adresi olsun.Client makine, hedef sunucuya doÄŸru her request de farkli bir port aracılığıyla ilgili session’un açılmasında rol üstleniyor.Dolayısıyla karşı sunucuya yapılan her request aynı zamanda client makine tarafında farkli bir source port’un Tcp Sessiona dahil olmasını ve aradaki baÄŸlantının açılmasını saÄŸlıyor.
Source IP: 10.0.0.2
Source Port: 46949
Destination IP: 205.206.231.12
Destination Port: 80
Åžimdi, client makine’de 205.206.231.12 nolu IP adresine doÄŸru yapılan requestleri wireshark ile capture edelim amacımız paketleri detaylıca incelemek fakat öncelikle shell de netstat -ant parametresiyle baÄŸlantı saÄŸlanmış basit bir tcp session çıktısını görelim.
netstat -ant | grep ’46949′ > http_session.txt
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address          Foreign Address        State
tcp       0     0 10.0.0.2:46949         205.206.231.12:80      ESTABLISHED
“Established” statusu bizlere TCP baÄŸlantıların da üçlü el sıkışma olarak adlandırdıgımız aksiyonun gercekleÅŸtiÄŸini ve hedef makine ile iletisim kurulabileceÄŸini gösteriyor.
3′lü el sıkışma nasıl gerçekleÅŸiyor?
Client “Syn” >  Sunucu (A)
Sunucu “Ack+Syn” > Client (A+1)
Client +Ack > Sunucu (B+1)
TCP baÄŸlantısı gerçekleÅŸtikten sonra 205.206.231.12 nolu IP adresine 1 bit’lik PSH ve ACK isimli tcp bayrakları gönderiliyor dolayısıyla request ettiÄŸimiz sayfanın içeriÄŸini görüntüleyebiliyoruz.
Client “Syn” >  Sunucu
Sunucu “Ack+Syn” > Client
Client +Ack > Sunucu
Client Psh + Ack > Sunucu
Biraz teknik bir anlatm oldu.
Apache sunucularda güvenlik sebebiyle özellikle Software Identification analizleri’ni engellemek için dönen response içeriklerini minimize edip filtreleyebiliriz fakat bunlar bir baÅŸka entry’nin konusu olsun.
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
(select CHAR(95)+CHAR(33)+CHAR(64)+CHAR(50)+CHAR(100)+CHAR(105)+CHAR(108)+CHAR(101)+CHAR(109)+CHAR(109)+CHAR(97))
Yapabildin mi?
http://www.db.ripe.net/whois?form_type=simple&full_query_string=&searchtext=78.180.42.47&submit.x=5&submit.y=10&submit=Search