Latest Publications

Dns Recursive Request Settings

Client aracılığıyla herhangi bir lokasyondan, dns servera yapılan isteklere “Recursion” sorgular denilmektedir.Dns sunucu, kendisine sorulan bir zone’nin mevcut kaydini uzerinde bulamayınca root dns serverlara sorar, eÄŸer cevap alırsa kendisine yapilan requeste bir cevap verir.

BIND sunucusundaki named.conf dosyasinda yapılacak bir kac değişiklik ile recursion sorguları  opsiyonel olarak ayarlamak mümkün.

Asagidaki secenek ile yerel network de kendi uzerinde bulunmayan bir zone’nin  IP adresini cozebilir, fakat disardan gelen tüm istekler  cevapsiz kalir (Tavsiye edilen güvenli seçenek.)

allow-recursion {
localnets;
}; 

Recursion sorglarini komple kapamak.

AÅŸağıdaki seçenek, any den gelen requestler de sadece kendi uzerinde bulunan bir zone icin cozumleme yapar.Dezavantajı yerel agda bile uzerinde bulunan zone kaydi  hariç  herhangi bir isim cozumlemesi yapmamasıdır. Belirtilen durumu,  “yes” ile  tersine cevirebiliriz.

options {
recursion:no;
}

Recursion sorgularını belirli networklere acmak.

recursion yes;

allow-recursion {
127.0.0.1; //Loopback
213.248.153.121/24;
};

Online Penetration Testing EÄŸitimleri

Elearnsecurity firmasinin hazırladığı Security Training ile ilgili  Darknet  de henuz yeni girilmis bir entry dikkatimi çekti.
ilgilenen arkadaÅŸlar inceleyebilirler.

http://www.darknet.org.uk/2010/05/elearnsecurity-online-penetration-testing-training

Detaylar:

http://www.elearnsecurity.com/course/penetration_testing/

DnsSec (DNSSEC might kill your internet?)

5 Mayis itibari ile  Amerika da bulunan root dns serverlar  ekstra(+) bir guvenlik yapılandırmasıyla “Dnssec”  isimli bir uygulama baslatti.
Konuyla ilgili gayet aciklayici ve teknik bilgileri asağıda belirtilen Türkçe ve İngilizce kaynaklı linkler aracılığıyla edinebilirsiniz.

http://blog.lifeoverip.net/2010/05/05/dnssec-sonrasi-yasanabilecek-muhtemel-sorunlar/

https://www.bilgiguvenligi.gov.tr/guvenlik-teknolojileri/dnssec-ile-biraz-daha-guvende-miyiz.html

http://labs.ripe.net/content/testing-your-resolver-dns-reply-size-issues

Kısa bilgi:

Sorgulayacagımız dns query’ler artık digital bir imza (Signature) ile cevap vereceginden dolayisla donen sorgunun miktarida artacaktir.

Standart bir dns servera (BIND) yapilan request sonucu:

;; Query time: 8 msec
;; SERVER: ###53(88#)
;; WHEN: Thu May  6 00:44:56 2010
;; MSG SIZE  rcvd: 89

DnsSec ile Root dns  serverlar her query icin 512 byte dan daha buyuk  miktarda cevap donecektir.Bu durum ozellikle firewall ve IPS’lerce bloklanabileceÄŸinden internette anlık  eriÅŸim problemleri yasanabilir.

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.

Windows Terminal Accessing for client on Ubuntu

rdesktop , Matthew Chapman tarafından Linux platformların dan Windows terminal sistemlere remote erişim için geliştirilmiş VNC connection benzeri  bir protokoldür.(GNU Licence)

Linux altında, rdesktop ile 192.168.99.129 IP adresli sanal bir windows pc’nin terminal server protokolune baÄŸlanalım.

Netcat ile remote eriÅŸim saÄŸlamak istedigim windows serverin  3389. Portu’nun dış network’e açık olup olmadığını kontrol ediyorum.

root@localroot:~# nc -v -n 192.168.99.129 3389
(UNKNOWN) [192.168.99.129] 3389 (?) open

ilgilendiğim port(3389), belli bir sayı aralıgında değişmiş de olabilir o aralığın 3380 ile 3389. Portlar  arasında var olabileceğini düşünerek asagidaki sekilde bir tarama işlemi yapabilirim.

root@localroot:~# nc -v -w2 -z 192.168.99.129 3380-3389
192.168.99.129: inverse host lookup failed: Unknown host
(UNKNOWN) [192.168.99.129] 3389 (?) open
(UNKNOWN) [192.168.99.129] 3388 (?) : Connection timed out
(UNKNOWN) [192.168.99.129] 3387 (?) : Connection timed out
(UNKNOWN) [192.168.99.129] 3386 (?) : Connection timed out
(UNKNOWN) [192.168.99.129] 3385 (?) : Connection timed out
(UNKNOWN) [192.168.99.129] 3384 (?) : Connection timed out
(UNKNOWN) [192.168.99.129] 3383 (?) : Connection timed out

İhtiyacımız olan port’un açık oldugunu netcat ile teyid ettik.Windows server tarafında terminal baÄŸlantı için gerekli ayarların yapılmış olduÄŸunu var sayarak “rdesktop” ile ilgili sisteme remote eriÅŸim saglayalım.Shell  de root yetkilerini alarak   asagıdaki komut istemlerini inceleyelim.

[ "Bağlantı penceresi açılır , password belirtilip sisteme bağlanılır."  ]

rdesktop -uAdministrator -p 192.168.99.129:3389

[Ortam da domain varsa -d parametresi ile domain ismini belirtip domain kullanıcısı olarak da oturum açabiliriz.]

rdesktop -dseclab  -uAdministrator -p 192.168.99.129:3389

[Full screen mode]

rdesktop -uAdministrator -p 192.168.99.129:3389  -f

[ Sounds driver share ]

rdesktop -uAdministrator -proot 192.168.99.129:3389 -f -r sound:local

[ Printer share ]

rdesktop -uAdministrator -proot 192.168.99.129:3389 -f  -r printer:xeonprinter

[Sistem den belli bir bölüm(Klasör,Dosya) bağlandıgımız client pc ile paylaştırılabiliyor (/root/desktop gibi.)]

rdesktop -uAdministrator -proot 192.168.99.129:3389 -r disk:doc=/root/Desktop

[ Diskleri aşağıdaki her 2 komut ile hedef client ile paylaştırabiliriz.]

rdesktop -uAdministrator -proot 192.168.99.129:3389 -r LPT1=/dev/sda6

rdesktop -uAdministrator -proot 192.168.99.129:3389 -r lptport:LPT1=/dev/sda6

sda6 isimli root diskimi bağlandıgım client pc  ile paylaştırdım.

“Rdesktop” adına yazacaklarım bu kadar.Sanırım tüm bunlar Linux altında windows bir servera, terminal eriÅŸim için  fazlasıyla  iÅŸinize yarayacaktır.

rdesktop -uAdministrator -proot 192.168.99.129:3389 -r lptport:LPT1=/dev/sda6

Dig nedir ? Nasıl kullanılır?

Dig, herhangi alan adi  icin bir dizi dns sorgusu yapılabilmesini saÄŸlayan kullanışlı bir network yazılımıdır. Dig’i iÅŸlevleri itibari ile windows sistemlerdeki nslookup’a benzetebilirsiniz.Linux/Unix sistemlerde default olarak network tool’lari içerisinde sistemde kurulu olarak bulunabildigi gibi  Bind-utils paketi ile sisteme harici olarak da kurulabilmektedir.Åžimdi client dns’imiz uzerinden youtube.com adresinin A,MX,SPF(TXT),NS,SOA.PTR  recordlarini sorgulayacagız.Bu iÅŸlemleri google’nin public ettiÄŸi dns serverlari kullanarak yapmak durumundayız cunku telekom’un  dns serverlari Youtube’nin real IP’lerini donmemektedir. (Sebebini herkes biliyor.)

Client dns sunucum, youtube.com’un IP adresini  > Turktelekom’un dns serverlarina soruyor

root@localroot:/home/ugur# dig A youtube.com +short +answer
88.255.41.21

http://www.db.ripe.net/whois?form_type=simple&full_query_string=&searchtext=88.255.41.21&submit.x=13&submit.y=6&submit=Search

88.255.41 subneti tabiki youtube.com’a ait degil.

inetnum:         88.224.0.0 - 88.255.255.255
netname:         TR-TELEKOM-20051027
descr:           PROVIDER Local Registry
descr:           Turk Telekom
country:         TR
org:             ORG-TT3-RIPE
admin-c:         TTBA1-RIPE
tech-c:          TTBA1-RIPE

Bu sebeple; resolv.conf dosyama, google’nin dns adreslerini giriyorum.

/etc/resolv.conf
; generated by /sbin/dhclient-script
search localdomain
#nameserver 10.0.0.1
nameserver 8.8.8.8
nameserver 8.8.4.4

Artık, Dig ile youtube.com uzerinde çalışmaya baslayabiliriz.

[root@labs ~]# dig

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5_4.1 <<>>
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21992
;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;.                IN    NS

;; ANSWER SECTION:  (THERE ARE 13 ROOT DNS SERVERS IN WORLD)

.            5    IN    NS    a.root-servers.net.
.            5    IN    NS    b.root-servers.net.
.            5    IN    NS    c.root-servers.net.
.            5    IN    NS    d.root-servers.net.
.            5    IN    NS    e.root-servers.net.
.            5    IN    NS    f.root-servers.net.
.            5    IN    NS    g.root-servers.net.
.            5    IN    NS    h.root-servers.net.
.            5    IN    NS    i.root-servers.net.
.            5    IN    NS    j.root-servers.net.
.            5    IN    NS    k.root-servers.net.
.            5    IN    NS    l.root-servers.net.
.            5    IN    NS    m.root-servers.net.

EÄŸer request’lerimizin sonuclarını istatistikleri ile  istiyorsak (MX,NS,SOA  ve TXT  kayitlari icin) dig A siteismi.com seklinde bir komut calıştırabiliriz.Dig her ayrı request icin ayrıntılı bir istatistik veriyor. (Bakınız A kaydı icin yapilan request)

[root@labs ~]# dig A youtube.com 

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5_4.1 <<>> A youtube.com
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43647
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL:

;; QUESTION SECTION:
;youtube.com.            IN    A

;; ANSWER SECTION:
youtube.com.        300    IN    A    74.125.127.100
youtube.com.        300    IN    A    74.125.45.100
youtube.com.        300    IN    A    74.125.67.100


;; Query time: 67 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)
;; WHEN: Sat Mar 20 03:02:05 2010
;; MSG SIZE  rcvd: 77

Dönen requestleri sadeslestirmek icin asagidaki parametleri sorgularımıza dahil edebiliriz.
+noall
+short
+nostats

[root@labs ~]# dig A youtube.com +noall +short +nostats
74.125.127.100
74.125.45.100
74.125.67.100

[root@labs ~]# dig MX youtube.com +noall +short +nostats +answer
10 sjl-mbox1.sjl.youtube.com.

[root@labs ~]# dig NS youtube.com +noall +short +nostats +answer
ns1.google.com.
ns3.google.com.
ns2.google.com.
ns4.google.com.

[root@labs ~]# dig SOA youtube.com +noall +short +nostats +answer
sjl-ins1.sjl.youtube.com. dns-admin.youtube.com. 1410044 10800 3600 604800 600

[root@labs ~]# dig TXT youtube.com +noall +short +nostats +answer
“v=spf1 ip4:208.117.224.0/19 ip4:208.65.152.0/22 ip4:64.15.112.0/20 include:google.com mx ~all”

[root@labs ~]# dig any youtube.com +noall +short +answer
ns2.google.com.
ns1.google.com.
ns4.google.com.
74.125.45.100
74.125.67.100
ns3.google.com.
10 sjl-mbox1.sjl.youtube.com.
“v=spf1 ip4:208.117.224.0/19 ip4:208.65.152.0/22 ip4:64.15.112.0/20 include:google.com mx ~all”
74.125.127.100
sjl-ins1.sjl.youtube.com. dns-admin.youtube.com. 1410051 10800 3600 604800 600

Åžimdi direk youtube.com’un host edildigi dns serverlara A kaydı requesti yapacagiz.Amacımız youtube’nin A kayıtlarını görmek.

[root@labs ~]# dig @ns1.google.com www.youtube.com +noall +short +answer +nostats
youtube-ui.l.google.com.
209.85.229.101
209.85.229.102
209.85.229.100

[root@labs ~]# dig @ns2.google.com A youtube.com +noall +short +answer
74.125.45.100
74.125.67.100
74.125.127.100

[root@labs ~]# dig @ns2.google.com youtube.com +noall +short +answer
74.125.45.100
74.125.67.100
74.125.127.100

Sadece 2 name server dan 6 adet IP adresi elde ettik.Bu durumda bir kac dakika icerisinde yukaridaki IP adreslerine istinaden youtube’nin subnet araligini tespit edip yuzlerce IP adresi de elde ederiz(Subnets: 74.125  / 209.85) daha sonra gene dig ile PTR sorgusu yapip IP adreslerine karsilik gelen alan adi isimlerini bulabiliriz.

[root@labs ~]# dig -x 74.125.45.100 +short +answer

Umarım, dig’in gizemli ve iÅŸlevsel gücünü anlatabilmiÅŸimdir.

Referanslar:

İlgili döküman’ın “pdf” formatını buradan edinebilirsiniz.

http://docs.google.com/View?id=dfx8xtf7_8f62v48fk

http://code.google.com/speed/public-dns/docs/security.html