Nmap ile ögrenme

ArticleCategory: [Choose a category for your article]

System Administration

AuthorImage:[Here we need a little image form you]

[Foto del Autor]

TranslationInfo:[]

original in es Danilo Lujambio
es to en Iván Rojas Aguilar
es to en Javier Palacios

en to en:Lorne Bailey

en to tr:Erdal MUTLU

AboutTheAuthor:[A small biography about the author]

Abstract:[Here you write a little summary]

ArticleIllustration:[This is the title picture for your article]

[nmap]

ArticleBody:[The article body]

Ağ güvenliği için tarayıcıların önemi neden bu kadar fazladır? Bunun nedeni, sisteme saldıracak kişilerin vazgeçilmez araçları olduklarındandır. Bir saldırganın sisteme saldırmadan önce yaptığı hazırlıklar aşağıdaki gibidir :



Sistem güvenligine önem veren sistem yöneticilerin, niyetleri iyi olmayanlarin sistem açiklarini kesfetmeden önce kendi sistemlerinde açik olup olmadigini sürekli denetlemeleri çok önemlidir.

Bu is için yazilmis birçok tarayici vardir. Ancak bu makalede nmap adli tarayicidan söz edecegiz. Nmap güvenlik araçlari ve tarayicilari arasinda en yeterli olanidir.

Nmap sayesinde sistem yöneticileri ag üzerinde tarama yaparak, hangi sunucularin hangi hizmetleri sunduklarini ögrenebilmektedirler. Bunun için nmap birçok teknik kullanmaktadir. Bu makalede bunlardan sinirli sayidakiler üzerinde çalisma yapacagiz. Bu arada TCP protokolünün bazi konularini gözden geçirecegiz veya ögretecegiz.

Bu makalenin stratejisi, sistemler hakkinda bilgi toplamak ve bunun paralelinde hedef sistem üzerinde tarama yapilacak yollari bulmak için, nmap programinin en çok kullanilan seklini göstermek olacaktir.

Nmap programini www.insecure.org adresinden edinmek mümkündür. Programi elde ettikten sonra asagidaki komutlari çalistirin:

tar zxvf nmap-2.30BETA17.tgz
cd ...../nmap-2.30BETA17/
./configure
make
make install
ve böylece progarmi yüklemis olacaksiniz.

Nmap programinin çiktilari genellikle hedef bilgisayardaki "ilginç" (açik) olan portlarin bir listesi olmaktadir. Sunulan hizmetin adi, durumu ve hangi protokol oldugu bu portlardan ögrenmek mümkündür.

TCP ile tarama yapmak, TCP'nin üçlü elsikisma (-sT seçenegi)

Nmap ile tarama yapmanin en basit yolu -sT seçenegi ile olmaktadir. Bu yöntem TCP protokolündeki baglanti kurma yöntemine dayandirilmaktadir ve buna üçlü elsikisma adi verilmektedir. [1] nin adimlari kabaca asagidaki gibidir :

  1. Sunucu baglanti kabul etmek için hazir olmak zorundadir (genellikle socket, bind ve listen fonksiyonlari yardimiyla).
  2. Istemci connect() fonksiyonu yardimiyla aktif baglanti kurmaya baslamaktadir. Bu, istemcinin gönderecegi verilerin baslangiç sira numarasini haberdar etmek için sunucuya SYN paketi göndermektedir. SYN genellikle IP basligi - TCP basligi ve belki de bazi TCP seçenekleri içermektedir.
  3. Sunucu aldigi SYN'ye karsilik SYN'in ve sira numarasinin da içerildigi (ayni TCP paketinde) bir ACK onaylama paketini istemciye göndermelidir.
  4. Istemci sunucudan aldigi SYN'yi ACK ile onaylamalidir.


Bu sekilde tarama yapmanin iki avantaji vardir:

ancak çok büyük bir dezavantaji vardir. Taramayi tespit etmek çok basit bir islemdir ve kolayca süzgeçten geçirilerek önlenebilir.

Nmap programinin -sT seçeneginin neler yaptigini hedef bilgisayarda tcpdump komutu yardimiyla görecegiz. Nmap 192.168.255.20 IP numarali bilgisayardan, house2.xxx.xxx.xxx bilgisayarina yöneltilmis olarak Ethernet ag üzerinden çalistirilmaktadir.

1) 08:24:18.393108 192.168.255.20.1024 house2.xxx.xxx.xxx.653: S 2632227152:2632227152(0) win 16060 < mss 1460,sackOK,timestamp 232602[|tcp] (DF)
2) 08:24:18.393167 house2.xxx.xxx.xxx.653 192.168.255.20.1024: R 0:0(0) ack 2632227153 win 0
3) 08:24:18.393227 192.168.255.20.1025 house2.xxx.xxx.xxx.6141: S 2644226118:2644226118(0) win 16060 < mss 1460,sackOK,timestamp 232602[|tcp] (DF)
4) 08:24:18.393258 house2.xxx.xxx.xxx.6141 192.168.255.20.1025: R 0:0(0) ack 2644226119 win 0
5) 08:24:18.453343 192.168.255.20.1298 house2.xxx.xxx.xxx.pop3: S 2640612362:2640612362(0) win 16060 < mss 1460,sackOK,timestamp 232608[|tcp] (DF)
6) 08:24:18.453542 house2.xxx.xxx.xxx.pop3 192.168.255.20.1298: S 1658259980:1658259980(0) ack 2640612363 win 16060 < mss 1460,sackOK,timestamp 243353[|tcp] (DF)
7) 08:24:18.458667 192.168.255.20.1298 house2.xxx.xxx.xxx.pop3:. ack 1 win16060<nop,nop,timestamp 232609 243353 (DF)
8) 08:24:18.461280 192.168.255.20.1298 house2.xxx.xxx.xxx.pop3: F 1:1(0) ack 1 win 16060 < nop,nop,timestamp 232609 243353 (DF)

Satir numaralari anlatimi basitlestirmek amaciyla eklenmistir. 1. satir saldirinin geldigi 192.168.255.20 IP numarali bilgisayarin SYN paketini 1024 nolu porttan house2.xxx.xxx.xxx adli bilgisayarin 653 nolu portuna gönderdigini görmekteyiz. Bunun SYN oldugunu port numarasindan (653) sonra gelen S harfinden anlamaktayiz. Bu üçlü elsikisma yöntemindeki 2. adimi göstermektedir.
2. satirda hedef bilgisayar 653 portunda herhangi bir sürecin (proccess) olmadigini belirten RESET (1024 port numarasindan sonra gelen R harfine dikkat ediniz) paketini göndermektedir. 3. ve 4. satirlar 1. ve 2. satirlarin benzeridir. Tek fark 653 portu yerine 6141 nolu porta baglanilmak istenilmesidir.
5. satir 192.168.255.20 bilgisayarinin hedef bilgisayarinin POP3 (110) portuna nasil SYN paketi gönderdigini ve hedef bilgisayarin buna karsilik almis oldugu sira numarasini (2640612362) ACK paketi ile birlikte 1 arttirarak (yani 2640612363 yaparak) ve 1658259980 sira numarasi ile birlikte geri gönderdigini görmekteyiz. house2 bilgisayarin göndermis oldugu paketlerdeki SYN ve ACK bitlerin aktif olduklarina dikkat ediniz. Bu 6. satirda ve yukarida belirtigimiz üçlü elsikisma yönteminin 3. adiminda görülmektedir.
7. satirda 192.168.255.20 bilgisayarinin en son paketi aldiginin isareti olan ACK paketini göndererek görmekteyiz. Bu da üçlü elsikisma yönteminin 4. adimini olusturmaktadir.
8. satir ise, baglantinin sona erdirildiginin isaretidir. 192.168.255.20 IP'li bilgisayar FIN göndererek baglantiyi sona erdirmektedir (pop3 den sonraki F'ye dikkat ediniz).

Bu sekilde nmap programinin hedef bilgisayarinin 110 (pop3) nolu portunun açik oldugunu nasil yakaladigini görmekteyiz.

Yukarida da belirtildigi gibi bu sekilde yapilan tarama yöntemini /var/log/messages dosyasina 5-8. satirlarindakine karsilik yazmis oldugu (bu tabii syslog.conf'taki ayarlara baglidir) asagidaki satirlardan anlasilmaktadir:

May 6 08:24:01 house2 in.pop3d[205]: connect
from root@192.168.255.20


SYN kullanilarak tarama yapmak (yari açik, -sS seçenegi)

Bu tarama sekli nmap programini -sS seçenegi ile çalistirildiginda olmaktadir. Kullanilan teknik, "yari baglanti" (: biz bir SYN gönderiyoruz ve eger ACK alirsak, hedef bilgisayarin bu portunun aktif oldugunu tespit etmekteyiz. Sonunda RESET göndererek baglantiyi kapatmaktayiz.) açmaktan geçmektedir. Eger, ACK yerine RST (RESET) alirsak, hedef bilgisayarin bu portunun kapali oldugu sonucuna varabiliriz. Bu tarama yönteminin dezavantaji root haklarina sahip olmayi gerektirmesidir. Ancak, karsi tarafin sizi farketmesi zorlasmaktadir.

Nmap programin yaptiklarini yukaridakine benzer bir analiz ile inceleyelim.Yine tcpdump programindan yararlanacagiz ve satirlari anlatim kolayligi açisindan numaralandiracagiz.

1) 22:25:45.856936 192.168.255.20.40175 house2.tau.org.ar.946: S 1292785825:1292785825(0) win 3072
2) 22:25:45.857078 house2.tau.org.ar.946 192.168.255.20.40175: R 0:0(0) ack 1292785826 win 0


1. ve 2. satirlari bir önceki bölümde yer alan 1. ve 2. satirlarina benzemektedir. Tek fark, SYN paketi 192.168.255.20 bilgisayari tarafindan bu kez hedef bilgisayarin (house2) 946 nolu portuna gönderilmis olmasidir. Buna karsilik house2 bilgisayari bu portun kapali oldugunu belirten RST paketini göndermistir.

3) 22:25:45.970365 192.168.255.20.40175 house2.tau.org.ar.pop3: S 1292785825:1292785825(0) win 3072
4) 22:25:45.976022 house2.tau.org.ar.pop3 192.168.255.20.40175: S 185944428:185944428(0) ack 1292785826 win 16080 < mss 536 (DF)
5) 22:25:45.979578 192.168.255.20.40175 house2.tau.org.ar.pop3: R 1292785826:1292785826(0) win 0

3., 4. ve 5. satirlar house2 bilgisayarinin 110 (pop3) nolu portunun açik oldugunun kesfedildiginin isaretleridir. Üçlü elsikisma yönteminde de zözedildigi gibi, bu baglanti tamamlanmis bir baglanti degildir. SYN paketine karsilik ACK paketini house2'den aldigi anda (4. satir) nmap programi, RESET paketini geri göndermektedir. Böylece baglantiyi yarida kesmektedir.

house2 bilgisayari üzerinde yapilan bu tarama, /var/log/messages dosyasina daha önce de belirtildigi gibi yansimamistir.

FIN kullanilarak tarama yapmak

Bu tarama yöntemi, hedef bilgisayarlarin kapali olan portlara FIN paketi gönderildiginde RST ile cevap verme gerçegine dayandirilmaktadir. Böylece, açik olan portlarin listesini, cevap almadigimiz portlardan olusturabiliriz. Microsoft yüklü bilgisayarsayarlarinda bu yöntem geçerli olmamaktadir. Çünkü, Microsoft TCP protokolunü standartlara uygun olarak uygulamamistir.

-sF, -sX ve -sN olmak üzere nmap'in kullandigi üç benzer yöntem vardir. Biz burada -sF seçenegini inceleyecegiz.

1) 06:50:45.643718 192.168.255.20.35600 casahouse.tau.org.ar.864: F 0:0(0) win 2048
2) 06:50:45.643865 house2.tau.org.ar.864 192.168.255.20.35600: R 0:0(0) ack 0 win 0

1. ve 2. satirlarda FIN paketinin hedef bilgisayardaki hareketleri görülmektedir. FIN 1. satirda (864 port numarasindan sonraki F dikkat ediniz) paketine karsilik 2. satirda hedef bilgisayar RST (2. satirdaki 35600 den sonraki R harfine dikkat ediniz.) paketini göndermistir. Böylece nmap programi hedef bilgisayardaki 864 portunun kapali oldugunu anlamaktadir.

3) 06:50:47.933227 192.168.255.20.35600 > house2.tau.org.ar.pop3: F 0:0(0) win 2048
4) 06:50:48.251147 192.168.255.20.35601 > house2.tau.org.ar.pop3: F 0:0(0) win 2048

3. ve 4. satirlar house2 bilgisayarindaki pop3 portunu örnek olarak göstermektedir. 3. satirda hedef bilgisayara FIN gönderilmis, ancak cevap alinamamistir. 4. satir ise, bir sürpriz, nmap programi porttan cevap alamayinca bir FIN paketi daha göndermistir, ancak sonuç olarak buna da cevap alamayacaktir. Bunun nedeni ise pop3 portunun açik olmasidir.

Tcpdump programinin faydali özelligi

"Üçlü elsikisma tarama yöntemi" bölümünde tarama yapildiginda arkasinda iz biraktigini, yani sistem loglarinda kayit tutuldugunu gördük. Daha sonra ise, -sS ve -sF seçenekleri kullanilmasiyla geride hiçbir iz kalmadigini da gördük. Bu sekilde yapilan saldirilari gözleyebilmek için tcpdump programindan yararlanabiliriz. Ancak, tcpdump programinin büyük bir dezavantaji, çok sayida veri üretmesidir ve bunun için çok fazla yere ihtiyaç vardir. Ayrica, bu verileri incelemek de oldukça zor ve zaman alici bir islemdir. Burada, olusan verileri aza indirmek ve incelemeyi kolaylastirici hale getirmek için, filtre özelligi tasiyan bazi ifadeler kullanilmistir.

Ifadelerin kolayca anlasilmasini saglamak için TCP'nin [2] paket yapisi gösterilmistir.

TCP (RFC 793)

0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Source Port          |        Destination Port       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Sequence Number                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Acknowledgement Number                   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Offset |  Reserver |U|A|P|R|S|F|             Window            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Checksum            |         Urgent Pointer        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                  Options                      |    Padding    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                              Data                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Sekilden de görüldügü gibi, 13. byte SYN, FIN vs. parametrelerin bulundugu yeri göstermektedir. Bu bilgiden hareketle ve ve (&) operatörü ile, bu parametreleri yakalayacak ifadeler için maskeler olusturabiliriz. Buna göre

tcpdump ' tcp[13] & 7 != 0 and dst 192.168.255.20 ' > /tmp/out7

ifadesi, aktif olan R,S ve F bitlerin (00000111 maskesi yardimiyla) yer aldigi 192.168.255.20 (tabi bu IP tespit edildikten sonra) bilgisayarindan gelen paketleri yakalamamizi saglamaktadir.



tcpdump ' tcp[13] & 1 != 0 and dst 192.168.255.20 ' > /tmp/out1

kullanilarak, nmap programinin -sF seçenegi ile çalistirilmasi halinde, aktif olan FIN bitlerinin (00000001 maskesi yardimiyla) yer aldigi paketleri yakalayabiliriz.

tcpdump ' tcp[13] & 2 != 0 and dst 192.168.255.20 ' > /tmp/out2

ifadesi yardimiyla da, nmap programini -sS seçenegi ile kullanilmasi durumunda aktif olan SYN bitlerinin yer aldigi paketleri yakalayabiliriz.

En son anlatilan (-sS seçenegi) grubu tarama yöntemi için, [3]'de kullanilabilecek çesitli programlar verilmistir.

Sonuç

Nmap gibi programlar sistem güvenligini saglamada çok faydali rol oynamaktadir. Bunlar sayesinde sisteme saldiracak kisilerin gözüyle ag üzerinde inceleme yapilabilmektedir. Nmap programinin kullandigi seçeneklerden çok az bir kismi üzerinde durduk. Ancak umariz ki bu bilgi ag üzerinde tarama yapma konusunda sizlere yardimci olmustur.

Referanslar

[1] W. Richard Stevens Unix Network Programming Volume 1
[2] RFC 793
[3] nmap programiyla birlikte gelen belgelere bakiniz.