Archive

Archive for the ‘Network Tools’ Category

Agda Kullanilmayan IP Adreslerini Bulma

June 6th, 2009 admin 2 comments

Bulunduğumuz ağda DHCP kullanılmıyorsa ya da DHCP üzerinden bize ip verilmiyorsa ağa dahil olabilmek için boş bir ip adresi bulup kendimize atamamız gerekir. Bu durum daha çok kablosuz ağlarda yaşanır. bir ağa L2 seviyesinde dahil olduğumuzda(kablolu ya da kablosuz) ağdaki ip aralığını ve sonrasında boş ip adreslerini bulmak için aşağıdaki gibi bir yöntem izlenebilir.

Öncelikle ağdaki ip bloğunun bulunması gerekir. Bunun için tcpdump gibi bir ağ dinleyicisi(sniffer) kullanabiliriz. Ağlardaki ARP ve bazi UDP paketleri brodcast olacaktır. Biz de L2 seviyesinde ağa dahil olduğumuzdan bu broadcast paketleri görebiliriz. Ağda görünen broadcast paketlerden de hangi ip aralıklarının kullanıldığı bilgisine ulaşabiliriz.

root@home-labs:~# tcpdump -i eth1 -tttnn udp or arp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
000000 arp who-has 192.168.2.22 tell 192.168.2.1
000133 arp reply 192.168.2.22 is-at 00:1f:d0:5a:1b:96
32. 487744 arp who-has 192.168.2.222 tell 192.168.2.23
1. 000918 arp who-has 192.168.2.222 tell 192.168.2.23
1. 000618 arp who-has 192.168.2.222 tell 192.168.2.23
3. 277225 arp who-has 192.168.162.10 tell 192.168.162.129
198024 arp who-has 192.168.162.10 tell 192.168.162.129
802725 IP 192.168.2.20.138 > 192.168.2.255.138: NBT UDP PACKET(138)
197820 arp who-has 192.168.162.10 tell 192.168.162.129
802624 IP 192.168.2.20.138 > 192.168.2.255.138: NBT UDP PACKET(138)

Yukarıdaki tcpdump çıktısı incelenecek olursa ağda kullanılan IP adres aralıkları tespit edilebilir. Örnek: 192.168.2 bloğu, 192.168.162. bloğu gibi.

 

Hani ip aralığının kullanıldığını bulduktan sonra sıra boş ip adreslerini bulmaya geldi.  Bunun için arping aracını kullanıyoruz.

Basitçe for a in {1..26};do arping -c1 192.168.2.$a|grep   “Unicast”;done komutu ya da http://www.digininja.org/files/find_ip_1.0.tar.bz2 adresindeki mini scripti bize ağdaki hangi ip adreslerinin kullanımda hangilerinin boşta olacağını söyleyecektir.

root@home-labs:~# for a in {1..26};do arping -c1 192.168.2.$a|grep   “Unicast”;done
Unicast reply from 192.168.2.1 [00:1A:2A:A7:22:5C]  1.168ms
Unicast reply from 192.168.2.21 [00:1D:E0:17:C2:CB]  5.776ms
Unicast reply from 192.168.2.22 [00:1F:D0:5A:1B:96]  0.792ms

 

Yukardaki çıktıya göre 192.168.2.1, 192.168.2.21 ve 192.168.2.22 ip adresleri bu ağda kullanımda gözüküyor.

Tek satırlık script yerine biraz daha düzenli çıktı veren find_ip scriptini kullanmak istersek aşağıdaki gibi çıktı verecektir.

Not:Scriptte ufak düzenlemeler yapilmasi gerekiyor.(arping komutunun geçtigi satirdaki -O parametresinin kaldirilmasi gibi)

find_ip scriptinin sonucu

root@guvenliyim:~/find_ip# bash find_ip.sh -c 2 -s 10.10.10
10.10.10.1 Used
10.10.10.2 Used
10.10.10.3 Used
10.10.10.4 Free
10.10.10.5 Free
10.10.10.6 Free
10.10.10.7 Free
10.10.10.8 Used
10.10.10.9 Free
10.10.10.10 Free
10.10.10.11 Free
10.10.10.12 Free
10.10.10.13 Free
10.10.10.14 Free
10.10.10.15 Used
10.10.10.16 Free
10.10.10.17 Used
10.10.10.18 Used
10.10.10.19 Used
10.10.10.20 Free
…..

Categories: Netsec, Network Tools, Penetration Tags:

L2 seviyesinde paket işlemleri(arping)

June 6th, 2009 admin 1 comment

pentest

 Network güvenlik testlerinde bazen bulunduğunuz ağın yapısını çıkarmak için ip katmanı yeterli olmaz ya da bu katmana doğrudan ulaşımınız olmayabilir. Bu durumda L2 seviyesinde çeşitli paketler göndererek ağın yapısını çıkarabiliriz. L2 seviyesinde gönderebileceğimiz paketler ARP’a dayalıdır. L2′deki protokoller kullanılarak basitce ağdaki  ip adreslerinin hangi mac adresine sahip olduğunu, bir mac adresinin ip adresi vs gibi bilgiler edinilebilir.

Layer2′de bu tip işlemleri yapmak için sık kullandığım bir araç var: arping, kısaca bu araç kullanılarak neler yapılabilir bir bakalım.

 

Arping  aracı  ne işe yarar?

Arping adından da anlaşılacağı gibi Layer 2 seviyesinde ping atmaya yarayan bir araçtır. Arping kullanarak Layer 2 seviyesinde bir makinenin açık olup olmadığı, ağdaki ip çakışmaları, bir ipnin ağda kullanılıp kullanılmadığı gibi bilgiler edinilebilir. Aynı zamanda arping kullanılarak gratious arp paketleri üretilebilir. Gratious paketlerle bir ip adresine ait mac adresi tüm yerel ağdaki sistemlerde  güncellenebilir.

Arping ARP Request ve Reply paketleri kullanır.

Not: arping’i diğer l3 ping araçlarından ayıran önemli özelliği ağ arabirimi üzerinde ip adresi olmasa dahi ping işlemlerini gerçekleştirebilir(yani L2 de çalışabilir).

Basit arping kullanımı
 arping’in en basit kullanımı ağdaki bir ip adresinin L2 seviyesinde MAC adresinin alınmasıdır. Bunu aşağıdaki komutla gerçekleyebiliriz.

 

root@home-labs:~# arping 192.168.2.1 -c 1
ARPING 192.168.2.1 from 192.168.2.23 eth0
Unicast reply from 192.168.2.1 [00:1A:2A:A7:22:5C]  1.860ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

Yukardaki komuta ait tcpdump çıktısı;

root@home-labs:~# tcpdump -i eth1 -tttnn   arp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
000000 arp who-has 192.168.2.1 (ff:ff:ff:ff:ff:ff) tell 192.168.2.23
000918 arp reply 192.168.2.1 is-at 00:1a:2a:a7:22:5c

 

Kısaca yukardaki arp paketi brodcast paket olarak 192.168.2.1 ip adresinin kim olduğunu sorguladı. Bu ip adresini üzerinde barındıran sistem cevap olarak MAC adresini döndü.

Ağdaki IP Çakışmalarının Bulunması

Ağınızda IP çakışmasından şüpheleniyorsanız arping kullanarak emin olabilirsiniz.

arping -D IP_Adresi

root@home-labs:~# arping  -I eth1  -D 192.168.2.20

000000 arp who-has 192.168.2.20 (ff:ff:ff:ff:ff:ff) tell 0.0.0.0
000140 arp reply 192.168.2.20 is-at 00:0c:29:06:df:e4
001738 arp reply 192.168.2.20 is-at 00:1b:77:9b:cb:e2

Yukarıdaki çıktıda 192.168.2.20 ip adresi için yapılan sorguya iki farklı mac adresi cevap veriyor. Bu da ağda IP çakışmasının olduğu manasına gelir.

Güvenlik duvarı aktif edilmiş yerel sistemlerin arping ile bulunması

Eğitimlerimde Port Tarama kısmında katılımcılara sorduğum meşhur soru şudur: Bir ağda açık olduğunu bildiğiniz fakat güvenlik duvarı ile tamamen korunmuş bir sistemin  açık olduğunu teknik olarka nasıl ispatlarsınız?

Bu sorunun cevabı genellikle  ilgili makineye ulaşmaya çalışırız(ping vs) ya da port tarama yaparız oluyor. Fakat hostun üzerinde üzerinde bulunan güvenlik duvarı herhangi bir protokole izin vermediği için bu yöntemlerle hostun açık olup olmadığını anlaşılmaz.

Bunun tek yöntemi 2. katmanda(OSI katmanları) ilgili sistemin açık olup olmadığını öğrenmektir. L2(Ikinci katman) denildiğinde ise akla ilk gelen MAC adresleri ve ARP oluyor. L2 seviyesinde bir sistemin canlı olup olmadığını anlamak için arping komutu kullanılabilir.(Normal ping ve arp komutlarıyla da aynı iş yapılabilir)

#arping 192.168.2.1

komutu eğer hedef sistem canlı ise aşağıdaki gibi çıktı verecektir.

root@home-labs:~# arping 192.168.2.1
ARPING 192.168.2.1 from 192.168.2.23 eth0
Unicast reply from 192.168.2.1 [00:1A:2A:A7:22:5C]  1.343ms
^CSent 1 probes (1 broadcast(s))
Received 1 response(s)

Eğer hedef sistem kapalı ise aşağıdaki gibi çıktı verecektir.

root@home-labs:~# arping 192.168.2.111 -c1
ARPING 192.168.2.111 from 192.168.2.23 eth0
Sent 1 probes (1 broadcast(s))
Received 0 response(s)

Categories: Network Tools, Penetration Tags:

Network Penetrasyon Testleri Eğitimi / 17-18 Nisan

March 9th, 2009 Huzeyfe ONAL 6 comments

ninja

Bu eğitim güvenlik dünyasında ismi duyulmuş çeşitli açık kaynak kodlu yazılımların en etkin şekilde kullanılarak efektif güvenlik testlerinin yapılabilmesini amaçlamaktadır.

Eğitimde kullanılan araçların isimleri çok bilinmesine rağmen detay özellikleri ve etkin kullanımı genelde bilinmemektedir.

Eğitim sonrası katılımcılar herbiri kendi alanında en iyisi sayılabilecek bu araçları tüm detayları ile birlikte nerede nasıl kullanılacağını öğrenmiş olacaktır.

Diğer detaylar ve eğitim içeriğine bu adresten ulaşabilirsiniz.

Egitim icerigi: http://open.bilgi.edu.tr/freedays/?p=npt

Egitim icerigi ile ilgili teknik detaylar icin huzeyfe@lifeoverip.net adresine e-posta gonderebilirsiniz.

Zamani olanlar icin kacirilmayacak bir egitim:)

Backtrack 4 ve Ubuntu

February 21st, 2009 Huzeyfe ONAL 2 comments

2009 Shmoo konferansinda sunulan ve ardindan betasi yayinlanan Backtrack Security Live CD’nin onceki surumlerle en belirgin farki isletim sisteminin Slax’dan Debian’a gecilmis olmasi. Dagitim cikmadan birkac hafta oncesinde egitimlerde kullanmak uzere yeni bir dagitim arasiyina girmistim. Arayislarim sonucu isimi tam goren bir dagitim bulamadigim icin Ubuntu’yu deneyip katilimcilara Vmware imaji olarak vermeyi kararlastirdim. Boylece hem Backtrack’teki bulunan tum ozellikleri yeni dagitima aktaracaktim hem de Backtrack’in yeni paket ekleme, guncelleme gibi sorunlari ile ugrasmayacaktim.

Derken Backtrack 4 beta yayınlandı ve sanki arkadaslarin beni duymus gibi dagitimin temelini Slax’dan Debian’a aktardiklarini gordum ve aklin yolu birdir gercegini bir kez daha yasadim. Boylece belki bir ayi alacak bir ugrastan kurtulmus oldum. Kurtulmus olmasina kurtuldum ama denemek icin masaustune kurdugum Ubuntu’dan da cok hoslandim. Yaklasik 9 yildir Linux kullaniyorum ama Linux tarafinda RedHat’ten hic vazgecmedim. Ubuntu benim icin bir ilk oldu ve boyle giderse de kalici olacak. Masaustunde Ubuntu’yu kurmusken tekrar Backtrack’i sistemime kurup ughrasmak istemedim ama Backtrack ile birlikte gelen paketleri de sistemime kurmak istiyordum.

Backtrack ile birlikte gelen paketler cogu farkli depolarda olmak uzere Ubuntu icin de bulunabilirdi fakat bu cog ugras gerektiren bir is. Ben de Backtrack’in source.list dosyasina bakarak ilgili paketkleri hangi depodan aldigini gorendim ve kendi sistemime o depoyu ekledim.

Backtrack 4 paketlerinin bulundugu depoyu kendi sistemimize eklemek icin asagidaki komutlari vermemiz yeterli.

#wget -q http://repo.offensive-security.com/dist/bt4/binary/public-key -O- | sudo apt-key add -

#echo “deb http://repo.offensive-security.com/dist/bt4 binary/” >> /etc/apt/sources.list

#sudo apt-get update

Bundan sonra ister apt-get install komutu ile ister Synaptic ile Backtrack deposundaki paketler kullanılabilir.

synaptic

Categories: Misc, Network Tools Tags:

TOR Networku Uzerinden Port Tarama

February 16th, 2009 Huzeyfe ONAL 4 comments

nmapp Port taramalari guvenlik testlerinin en onemli bolumlerindendir. Eger hedef sistemi tarama izniniz yoksa ve taramaniz gerekiyorsa bunu Firewall ve IDS/IPS sistemlerine yakalanmadan yapmaniz gerekir. IDS/IPS atlatarak port taramanin cesitli yontemleri var(bkz. Network Pentest Egitimi*)fakat en kolay ve ise yarar yontemlerden birisi Acik Proxyler uzerinden port tarama.

Tor gibi herkese acik ve guvenilir(!) aglar kullanicilarin gercek ip adreslerini gizleyerek ulastiklari sistemlerde daha az iz birakmalarini saglar. Her bir baglanti farkli bir cikis noktasindan hedefe ulasacagi icin arka plandaki kullanicinin gercek bilgileri gozukmez.

Port tarama icin bu konudaki en yetkin program olan Nmap’i kullandigimiz dusunulurse Nmap’in guncel surumlerinde bu tip taramalari yapabilecegimiz proxy ozelligi yok. Yani Nmap port taramalarini herhangi bir proxy uzerinden geciremez. Ileriki surumlerde bu ozelligin eklenecegini dusunuyorum.

Simdilik isimizi Linux uzerinde proxy destegi olmayan uygulamalari Proxy uzerinden kullanilabilmesiin saglayan Tsocks ile halledelim.(Benzeri isi yapan farkli uygulamarda mevcut, bunlardan birisi de Proxychains uygulamasidir)

Tsocks, uygulamayi calistiracak kullanicinin LD_PRELOAD degiskenini tsocks uygulamasi olarak degistirerek uygulamayi transparan olarak proxy ozelligi ekleyen bir wrapper uygulamasi.

TSOCKS(1)

NAME tsocks - Shell wrapper to simplify the use of the tsocks(8) library to transparently allow an application to use a SOCKS proxy

root@elmasekeri:~# env|grep -i LD LD_PRELOAD=/usr/lib/libtsocks.so

Proxy uzerinden hangi tur port taramalar mumkundur. Read more…

Thsark ile TCP/IP Paket Analizi

January 17th, 2009 Huzeyfe ONAL No comments

Tshark, güçlü bir ağ protokolleri analiz programıdır. Tshark komut satırından çalışır ve yine bir ag trafik analiz programı olan Wireshark’da bulunan  çoğu özelliği destekler.

Komut satırından çalışan ve çok bilinen diğer bir trafik analiz aracı da tcpdump’dır.

Tshark ile tcpdump’ın ayrıldığı en belirgin nokta Tshark’ın trafik analizinde protokolleri tanıyabilmesi ve bunları detaylı bir şekilde gösterebilmesidir. Aşağıda vereceğim örneklerde
protokol tanımanın ne manaya geldiği daha iyi anlaşılacaktır. Kişisel olarak Tshark’ı imkanım olduğu ortamlarda tcpdump’a tercih ediyorum.

Bu ikili, networking konuları ile ilgilenen herkesin a-z’ye bilmesinde fayda olan araçlardır.

Basit Tshark Kullanımı

tshark, çeşitli işlevleri olan bir sürü parametreye sahiptir. Eğer herhangi bir paramnetre kullanmadan çalıştırılırsa ilk aktif ağ arabirimi üzerinden geçen trafiği yakalayıp ekrana basar.

home-labs ~ # tshark
Running as user “root” and group “root”. This could be dangerous.
Capturing on eth0
0.000000 192.168.2.23 -> 80.93.212.86 ICMP Echo (ping) request
0.012641 80.93.212.86 -> 192.168.2.23 ICMP Echo (ping) reply
0.165214 192.168.2.23 -> 192.168.2.22 SSH Encrypted request packet len=52
0.165444 192.168.2.22 -> 192.168.2.23 SSH Encrypted response packet len=52
0.360152 192.168.2.23 -> 192.168.2.22 TCP pcia-rxp-b > ssh [ACK] Seq=53 Ack=53 Win=59896 Len=0
0.612504 192.168.2.22 -> 192.168.2.23 SSH Encrypted response packet len=116
1.000702 192.168.2.23 -> 80.93.212.86 ICMP Echo (ping) request
1.013761 80.93.212.86 -> 192.168.2.23 ICMP Echo (ping) reply
1.057335 192.168.2.23 -> 192.168.2.22 SSH Encrypted request packet len=52
16 packets captured

Eğer çıktıların ekrana değil de sonradan analiz için  bir dosyaya yazdırılması isteniyorsa -w dosya_ismi parametresi kullanılır.

# tshark -w home_labs.pcap
Running as user “root” and group “root”. This could be dangerous.
Capturing on eth0

24

Gerektiğinde home_labs.pcap dosyası libpcap destekli herhangi bir analiz programı tarafından okunabilir. tshark ya da tcpdump ile kaydedilen dosyadan paket okumak
için -r parametresi kullanılır.

Arabirim Belirtme

İstediğiniz arabirim üzerinden dinleme yapılması istenirse -i arabirim_ismi parametresi kullanılır.

#tshark -i eth12
gibi.

-n parametresi ile de host isimlerinin ve servis isimlerinin çözülmemesi sağlanır.

Detaylı Paket Çıktısı

Paketleri ekrandan izlerken ilgili protokole ait tüm detayları görmek için -V parametresi kullanılabilir.

Mesela udp 53(DNS) paketlerini detaylı çıktısını incelyelim.

home-labs#thsark -i eth0 udp port 53
Frame 2 (100 bytes on wire, 100 bytes captured)
Arrival Time: Jan 17, 2009 11:54:34.174323000
[Time delta from previous captured frame: 0.001332000 seconds]
[Time delta from previous displayed frame: 0.001332000 seconds]
[Time since reference or first frame: 0.001332000 seconds]
Frame Number: 2
Frame Length: 100 bytes
Capture Length: 100 bytes
[Frame is marked: False]
[Protocols in frame: eth:ip:udp:dns]
Ethernet II, Src: Arcadyan_a7:22:5c (00:1a:2a:a7:22:5c), Dst: Giga-Byt_5a:1b:96 (00:1f:d0:5a:1b:96)
Destination: Giga-Byt_5a:1b:96 (00:1f:d0:5a:1b:96)
Address: Giga-Byt_5a:1b:96 (00:1f:d0:5a:1b:96)
…. …0 …. …. …. …. = IG bit: Individual address (unicast)
…. ..0. …. …. …. …. = LG bit: Globally unique address (factory default)
Source: Arcadyan_a7:22:5c (00:1a:2a:a7:22:5c)
Address: Arcadyan_a7:22:5c (00:1a:2a:a7:22:5c)
…. …0 …. …. …. …. = IG bit: Individual address (unicast)
…. ..0. …. …. …. …. = LG bit: Globally unique address (factory default)
Type: IP (0×0800)
Internet Protocol, Src: 192.168.2.1 (192.168.2.1), Dst: 192.168.2.23 (192.168.2.23)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0×00 (DSCP 0×00: Default; ECN: 0×00)
0000 00.. = Differentiated Services Codepoint: Default (0×00)
…. ..0. = ECN-Capable Transport (ECT): 0
…. …0 = ECN-CE: 0
Total Length: 86
Identification: 0×0000 (0)
Flags: 0×04 (Don’t Fragment)
0… = Reserved bit: Not set
.1.. = Don’t fragment: Set
..0. = More fragments: Not set
Fragment offset: 0
Time to live: 64
Protocol: UDP (0×11)
Header checksum: 0xb52e [correct]
[Good: True]
[Bad : False]
Source: 192.168.2.1 (192.168.2.1)
Destination: 192.168.2.23 (192.168.2.23)
User Datagram Protocol, Src Port: domain (53), Dst Port: blueberry-lm (1432)
Source port: domain (53)
Destination port: blueberry-lm (1432)
Length: 66
Checksum: 0×2a35 [correct]
[Good Checksum: True]
[Bad Checksum: False]
Domain Name System (response)
[Request In: 1]
[Time: 0.001332000 seconds]
Transaction ID: 0×0001
Flags: 0×8100 (Standard query response, No error)
1… …. …. …. = Response: Message is a response
.000 0… …. …. = Opcode: Standard query (0)
…. .0.. …. …. = Authoritative: Server is not an authority for domain
…. ..0. …. …. = Truncated: Message is not truncated
…. …1 …. …. = Recursion desired: Do query recursively
…. …. 0… …. = Recursion available: Server can’t do recursive queries
…. …. .0.. …. = Z: reserved (0)
…. …. ..0. …. = Answer authenticated: Answer/authority portion was not authenticated by the server
…. …. …. 0000 = Reply code: No error (0)

Questions: 1
Answer RRs: 1
Authority RRs: 0
Additional RRs: 0
Queries
1.2.168.192.in-addr.arpa: type PTR, class IN
Name: 1.2.168.192.in-addr.arpa
Type: PTR (Domain name pointer)
Class: IN (0×0001)
Answers
1.2.168.192.in-addr.arpa: type PTR, class IN, RT
Name: 1.2.168.192.in-addr.arpa
Type: PTR (Domain name pointer)
Class: IN (0×0001)
Time to live: 2 hours, 46 minutes, 40 seconds
Data length: 4
Domain name: RT

Benzer bir paketin tcpdump ile görüntüsü aşağıdaki gibi olacaktır. Her iki çıktıdan da görüleceği gibi Tshark ile protokol ve katmanlara ait tüm detaylar çözümlenirken tcpdump’da sadece özet bilgiler yer alır.

# tcpdump -i eth0 -n udp port 53 -vv
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes

11:57:12.096474 IP (tos 0×0, ttl 128, id 21291, offset 0, flags [none], proto UDP (17), length 59) 192.168.2.23.1446 > 192.168.2.1.53: [udp sum ok] 2+ A?

www.linux.com. (31)
11:57:12.820246 IP (tos 0×0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 215) 192.168.2.1.53 > 192.168.2.23.1446: 2 q: A? www.linux.com. 2/3/3

www.linux.com. CNAME linux.com., linux.com.[|domain]

Tshark’da Filtreler

Tshark aynı Wireshark’da olduğu gibi iki çeşit filtreleme özelliğine sahiptir. Bunlardan biri trafik yakalama esnasında kullanılan ve tcpdump ile hemen hemen aynı
özelliklere(Berkley Paket Filter) sahip olan capture filter, diğeri de yakalanan trafik üzerinde detaylı analiz yapmaya yarayan Display filter dır.
Display filterlar aynı zamanda paket yakalama esnasında da kullanılabilir.

Display filter Kavramı

Display filter özelliği ile Tshark çözümleyebildiği protokollere ait tüm detayları gösterebilir ve sadece bu detaylara ait paketleri yakalamaya yardımcı olur. Mesela
amacımız tüm dns trafiği değil de dns trafiği içerisinde sadece www.lifeoverip.net domainine ait sorgulamaları yakalamak istersek aşağıdaki gibi bir filtreleme işimize yarayacaktır.

Note: Display Filter için  -R ‘filtreleme detayı’ seçeneği kullanılır.

# tshark -i eth0 -n -R ‘dns.qry.name==www.lifeoverip.net’
Running as user “root” and group “root”. This could be dangerous.
Capturing on eth0
11.467730 192.168.2.23 -> 192.168.2.1  DNS Standard query A www.lifeoverip.net
13.467968 192.168.2.23 -> 192.168.2.1  DNS Standard query A www.lifeoverip.net
17.936486 192.168.2.23 -> 192.168.2.1  DNS Standard query A www.lifeoverip.net
17.938038  192.168.2.1 -> 192.168.2.23 DNS Standard query response A 80.93.212.86

Böylece normal snifferlarda sadece udp 53′u dinleyerek bulmaya çalıştığımız detaylar Tshark ile kolayca belirtilebiliyor.

Display Filterlari akılda tutmak ya da ilgili protokole ait tüm detayları bilmek zor olabilir. Bunun için gerektiğinde başvurulacak sağlam bir kaynak var: wireshark
Display Filter Reference
. Bu adresten ilgili protokole ait desteklenen tüm filtrelemeler incelenebilir.

dns_filter

Örnek: HTTP trafiği içerisinde GET, PUT ve OPTIONS kullanılan istekleri yakalama.

home-labs#tshark -i eth0 -n -R ‘http.request.method contains GET or http.request.method contains PUT or http.request.method contains OPTIONS’

Running as user “root” and group “root”. This could be dangerous.
Capturing on eth0
7.571543 192.168.2.22 -> 80.93.212.86 HTTP OPTIONS / HTTP/1.111
14.925700 192.168.2.22 -> 80.93.212.86 HTTP GET / HTRTP/1.1

Bir TCP Bağlantısına ait başlangıç ve bitiş  paketlerini yakalama

İçerisinde SYN veya FIN bayrağı set edilmiş paketleri yakalamak için

# tshark -n -R ‘tcp.port==80 and tcp.flags.fin==1 or tcp.flags.syn==1′
Running as user “root” and group “root”. This could be dangerous.
Capturing on eth0
1.245831 192.168.2.22 -> 80.93.212.86 TCP 36566 > 80 [SYN] Seq=0 Win=5840 Len=0 MSS=1460 TSV=2759271 TSER=0 WS=5
1.259797 80.93.212.86 -> 192.168.2.22 TCP 80 > 36566 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=1452 WS=1 TSV=2754203455 TSER=2759271
3.966800 80.93.212.86 -> 192.168.2.22 TCP 80 > 36566 [FIN, ACK] Seq=212 Ack=11 Win=66240 Len=0 TSV=2754206160 TSER=2759947
3.966919 192.168.2.22 -> 80.93.212.86 TCP 36566 > 80 [FIN, ACK] Seq=11 Ack=213 Win=6912 Len=0 TSV=2759952 TSER=2754206160

Filtrelemelerde kullanılacak operatörler(==, !=, contains, vs) için http://www.wireshark.org/docs/dfref/ adresi incelenebilir.

Nmap NSE kullanarak DNS Cache Poisoning Zafiyeti Testleri

January 13th, 2009 Huzeyfe ONAL 8 comments

Bir önceki blog girdisinde NSE’in faydalarından ve basit kullanımından bahsetmiştim. Şimdi de çeşitli NSE scriptlerini kullanarak manuel ya da scriptlerle yaptığımız işleri Nmap’e nasıl havale edeceğimize bakalım. Ilk test sistemlerin DNS cache poisoning’e açık olup olmadığını test etmek. Bugün yaptığım bazı testler sonrası bu konunun oldukça önemli olduğunu anladım. Hatta derdimi anlatacak birileri bulsam tüm Türkiye’nin ip aralığını alıp bu testten gerçirmek isterdim ama arada bir arıza çıkar da sen bizim networkümüzü hangi hakla tararsın(Taramak? DNS sunucusuna çeşitli istekler göndermek illegal mıdır?) diye söylenir diye bu fikrimden şimdilik vazgeçtim.

İçinde birden fazla DNS sunucu barındıranların kendi sistemlerini test etmeleri için buraya Nmap ile testlerin nasıl yapılacağını yazayım belki birilerine faydası dokunur.
Dns cache poisoning açıklığını test etmek için hedef sistemde iki değer kontrol edilir. Birincisi dns sorgulamalarında kaynak portun değiştirilmesi, diğeri de dns sorgularındaki TXID değerinin yeteri kadar random/rastgele olması. Nmap ile bu iki değeri de kontrol edebiliriz. Hatta tek bir taramada her ikisi de kontrol edilebilir.

Önce kaynak port rastgeleliğini test edelim.

# nmap -P0 -sU -p 53 –script dns-random-srcport 100.100.100.2 -vv

Starting Nmap 4.76 ( http://nmap.org ) at 2009-01-12 11:14 GMT
Initiating Parallel DNS resolution of 1 host. at 11:14
Completed Parallel DNS resolution of 1 host. at 11:14, 0.00s elapsed
Initiating UDP Scan at 11:14
Scanning (100.100.100.2) [1 port]
Completed UDP Scan at 11:14, 2.02s elapsed (1 total ports)
SCRIPT ENGINE: Initiating script scanning.
Initiating SCRIPT ENGINE at 11:14
Discovered open port 53/udp on 100.100.100.2
Completed SCRIPT ENGINE at 11:14, 5.83s elapsed
Host host- (100.100.100.2) appears to be up … good.
Scanned at 2009-01-12 11:14:39 GMT for 8s
Interesting ports on (100.100.100.2):
PORT STATE SERVICE
53/udp open domain
|_ dns-random-srcport: 100.100.100.2 is POOR: 52 queries in 108.6 seconds from 1 ports with std dev 0

Read data files from: /usr/local/share/nmap
Nmap done: 1 IP address (1 host up) scanned in 8.04 seconds
Raw packets sent: 2 (56B) | Rcvd: 0 (0B)

Benzer şekilde txid üretecinin tahmin edilebilirligini test etmek için

# nmap -P0 -sU -p 53 –script dns-random-txid 100.100.100.2 -vv
komutu kullanılabilir.

bt scripts # nmap -P0 -sU -p 53 –script dns-random-txid 100.100.100.5 -vv

Starting Nmap 4.76 ( http://nmap.org ) at 2009-01-12 11:50 GMT
Initiating Parallel DNS resolution of 1 host. at 11:50
Completed Parallel DNS resolution of 1 host. at 11:50, 0.10s elapsed
Initiating UDP Scan at 11:50
Scanning 100.100.100.5 [1 port]
Completed UDP Scan at 11:50, 2.02s elapsed (1 total ports)
SCRIPT ENGINE: Initiating script scanning.
Initiating SCRIPT ENGINE at 11:50
Discovered open port 53/udp on 100.100.100.5
Completed SCRIPT ENGINE at 11:50, 5.80s elapsed
Host 100.100.100.5 appears to be up … good.
Scanned at 2009-01-12 11:50:48 GMT for 8s
Interesting ports on 100.100.100.5:
PORT STATE SERVICE
53/udp open domain
|_ dns-random-txid: x.y.z.t is GREAT: 26 queries in 5.3 seconds from 26 txids with std dev 17822

Read data files from: /usr/local/share/nmap
Nmap done: 1 IP address (1 host up) scanned in 8.09 seconds
Raw packets sent: 2 (56B) | Rcvd: 0 (0B)

Her iki testi de tek bir Nmap taraması ile gerçekleştirmek için scriptler arasına “, ” koyulması yeterli olacaktır.

Nmap tarafından dns ile ilgili yapılabilecek diğer taramalar.

bt scripts # ls dns*
dns-random-srcport.nse dns-random-txid.nse dns-recursion.nse dns-test-open-recursion.nse dns-zone-transfer.nse

Nmap’i zayıflık tarama aracı olarak kullanma-NSE

January 13th, 2009 Huzeyfe ONAL No comments

NSE- Nmap Scripting Engine

Nmap’in en begendigim ozelliklerinden biri cok yaygin kullanilmayan NSE’dir. NSE(Nmap Script Engine) basit scriptlerle Nmap’in gucunu kat kat arttıran bir bileşen.  NSE ile Nessus benzeri zayıflık tarama sistemlerinin yaptığı bazı taramaları yapabilirsiniz. Mesela Turkiye’deki Zone transfere acık DNS sunucularını bulmak isterseniz NSE scriptleri arasından zone-transfer scriptini kullanabilirsiniz. Böylece hem ek bir program kullanmadan hem de Nmap’in hızını arkanıza alarak istediğiniz sonuçlara kısa sürede ulaşmış olursunuz.

Her ne kadar Nmap yazarı Fyodor yazılımının Nessus ya da Metasploit benzeri bir arac olmayacağını söylese de kullanıcılar tarafından hazırlanan lua scriptleri gidişatın o yönde olduğunu gösteriyor. Scriptler arasında basit sql-injection’dan tutun güncel Windows exploit denemelerine kadar bir sürü çeşit var. Kısaca Nmap NSE  özelliği ile Network tarayıcı kategorisine sığmaz olmuştur.

Uzun zamandır NSE konusunu detaylı incelemek için fırsat kolluyordum. Pentest eğitimi için notlarımı zenginleştireyim derken biraz daha detaylı inceleme fırsatı buldum ve çok hoşuma gitti. Buraya da basit basit aktarmaya çalışacağım…

NSE ile ilgili Nmap parametreleri

SCRIPT SCAN:
-sC: equivalent to –script=safe,intrusive
–script=<Lua scripts>: <Lua scripts> is a comma separated list of
directories, script-files or script-categories
–script-args=<n1=v1,[n2=v2,...]>: provide arguments to scripts
–script-trace: Show all data sent and received
–script-updatedb: Update the script database.

NSE’i test etmek için en basitinden -sC parametresi kullanılabilir.

# nmap -P0 -sC -p 21,22,23,25,80,3306  mail.lifeoverip.net

Starting Nmap 4.60 ( http://nmap.org ) at 2009-01-12 20:47 GMT
Interesting ports on mail.lifeoverip.net (80.93.212.86):
PORT     STATE  SERVICE
21/tcp   open   ftp
22/tcp   open   ssh
23/tcp   closed telnet
25/tcp   open   smtp
|  SMTP: Responded to EHLO command
|  mail.sistembil.com
|  AUTH LOGIN CRAM-MD5 PLAIN
|  AUTH=LOGIN CRAM-MD5 PLAIN
|  PIPELINING
|  250 8BITMIME
|  Responded to HELP command
|_ qmail home page: http://pobox.com/~djb/qmail.html
80/tcp   open   http
|_ HTML title: 302 Found
3306/tcp open   mysql
|  MySQL Server Information: MySQL Error detected!
|  Error Code was: 1130
|_ Host ‘85.96.187.185′ is not allowed to connect to this MySQL server

Nmap done: 1 IP address (1 host up) scanned in 6.237 seconds

NSE scriptleri /usr/local/share/nmap/scripts dizini altında bulunur. Ara ara svn update yaparak yeni eklenen imzalar indirilebilir. Her imza ekleme sonrası nmap –script-updatedb komutunun çalıştırılması gerekir.

Örnek Kullanımlar:

Anonim ftp destekleyen sistemlerin bulunması

# nmap -P0  -p 21 –script anonFTP.nse ftp.linux.org.tr

Starting Nmap 4.60 ( http://nmap.org ) at 2009-01-12 20:55 GMT
Interesting ports on ftp.linux.org.tr (193.140.100.100):
PORT   STATE SERVICE
21/tcp open  ftp
|_ Anonymous FTP: FTP: Anonymous login allowed

Nmap done: 1 IP address (1 host up) scanned in 0.152 seconds

Hedef sistemin SSLV2 desteklediğinin öğrenmek için

# nmap -P0 -p 443 –script SSLv2-support blog.lifeoverip.net

Starting Nmap 4.60 ( http://nmap.org ) at 2009-01-12 20:57 GMT
Interesting ports on mail.lifeoverip.net (80.93.212.86):
PORT    STATE SERVICE
443/tcp open  https
|  SSLv2: server still supports SSLv2
|       SSL2_DES_192_EDE3_CBC_WITH_MD5
|       SSL2_RC2_CBC_128_CBC_WITH_MD5
|       SSL2_RC4_128_WITH_MD5
|       SSL2_RC4_64_WITH_MD5
|       SSL2_DES_64_CBC_WITH_MD5
|       SSL2_RC2_CBC_128_CBC_WITH_MD5
|_      SSL2_RC4_128_EXPORT40_WITH_MD5

Nmap done: 1 IP address (1 host up) scanned in 0.114 seconds

Yukarıda basit scriptleri kullanarak Nmap’e port tarama haricinde bazı işler yaptırdık. Scriptler incelenirse daha ileri seviye işlemlerin yaptırılabileceği görülecektir.

NSE ve yazılan scriptler hakkında detay bilgi için aşağıdaki adresler kullanılabilir.

http://nmap.org/book/nse.html
http://nmap.org/nsedoc/

BSD sistemlerde systat ile ag baglanti durumu izleme

December 21st, 2008 Huzeyfe ONAL No comments

Linux/UNIX kullanirken sistemin durumunu izlemek icin cesitli araclar kullaniyoruz. Bunlardan cogu sistemle ilgili bilgileri kisaltmalarla vermekte boyle olunca da

ciktilari anlamak icin kisaltmalari ogrenmek -ve hatta ezberlemek- gerekiyor.

Bunun icin BSD sistemlerde systat kullanıyorum. systat *BSD sistemlerde anlık istatistiki bilgiler(network, cpu, disk vs) almak için kullanılan yararlı bir program.

Systat kullanarak sisteme ait gereksinim duyulan çoğu bilgi kolaylıkla alınabilir.

Temel kullanim sekli

#systat -parametre1 yenileme_sıklığı

parametre1 alanina icmp, icmp6,ifstat, iostat, ip, ip6, mbufs, netstat, pigs, swap, tcp, ve vmstat degerlerinden biri gelebilir.

Ağ arabirimlerinden geçen anlık trafik bilgisini öğrenme

#systat -ifstat 3

/0   /1   /2   /3   /4   /5   /6   /7   /8   /9   /10 Load Average   |

Interface           Traffic               Peak                Total

lo0  in      2.643 KB/s         64.832 KB/s          114.096 MB

out     2.643 KB/s         64.832 KB/s          114.096 MB

rl0  in      0.760 KB/s          9.843 KB/s            1.847 GB

out     0.692 KB/s         14.801 KB/s            2.827 GB

Sistemdeki TCP bağlantılarını detaylarıyla izleme

#systat -tcp 3

Benzer şekilde IP ya da UDP için bu bilgileri görmek isterseniz systat -ip 3 gibi bir komut kullanmaniz yeterli olacaktir.

Çıktılardan görüleceği üzere sisteme gidip gelen, başlatılan-bitirilen, sistem tarafından drop edilen vs gibi tüm bilgileri bu ekranlardan öğrenmek mümkün.

#systat -ip 3

Read more…

Categories: FreeBSD, Network Tools Tags:

Komut satirindan Nessus kullanimi

December 19th, 2008 Huzeyfe ONAL No comments

Nessus’un beğendiğim ozelliklerinden biri de komut satirindan kullanilabilmesidir. Böylece komut satırının gücünü de kullanarak nessus taramalarını istediğimiz gibi şekillendirebiliyoruz.

Mesela kullandığımız sistemleri her gece saat xx de otomatik olarak belirli açıklıklara karşı tarayıp alarm üretebiliyoruz ya da yeni Nessus’un pluginlerini güncel tutup yeni bir açıklık çıktığında bu açıklığın hangi sistemlerimizde olduğunu kolayca öğrenebiliriz.

Komut satırı Nessus kullanımı için nessuscmd komutu kullanılır. Hem Linux hem de Windows için kullanılabilir.(nessuscmd)

Komut satırından hangi tür taramalar yapılabilir?

  • Host Keşfi
    Port Taramaları
    Zaafiyet tarama
    Yerel güvenlik açıklıklarının taranması(user/pass/sertifika ister)

Nessus’un çalışma mantığını hatırlayacak olursak istemci-sunucu mimarisinde çalışırdı. Yani Nessus taramalarini yapan bir motor ve bu motoru yoneten istemci programi. Nessuscmd burada istemci tarafını oynadığı için oyunun tamamlanabilmesi için Nessus motoru(sunucu tarafı)nun da çalışıyor olması gerekir.

NOTE: Nessuscmd’nin çalışması için nessus motorunun aynı hostta çalışmasına gerek yoktur, uzaktaki bir Nessus motoruna bağlanarak da çalışabilir. Bunun için aşağıdaki parametrelerin verilmesi yeterli olacaktır.

Connecting to a remote Nessus scanner :
—————————————
–remote : Connect to the remote Nessus host
–remote-port
: Connect to the remote Nessus on port
–login : Connect to the remote Nessus with the login [optional]
–password
: Connect to the remote Nessus with the password
[optional]

Nessus motoru çalışmadan yapılacak bir tarama aşağıdakine benzer bir çıktı verecektir. Read more…