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.

Share on Facebook

Leave a comment

1 Comments.

  1. (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

Leave a Reply

Your email address will not be published. Required fields are marked *

*


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>