DNS protokolunde sorun giderme – dig

By | January 25, 2009

Dig, nslookup ve host gibi dns sorgulama araçları yerine kullanılabilen gelişmiş bir araçtır. ISC tarafından geliştirilen BIND DNS sunucusu ile birlikte geliştirilir  ve uzun vadede Linux dağıtımlarında nslookup komutunun yerini alması beklenmektedir.  Dig komutu domains sorgulama için çalıştırıldığında  cevapla birlikte detay bilgiler de döner.

Bu detay bilgiler ek parametrelerle gizlenebilir.

# dig www.lifeoverip.net

; <<>> DiG 9.3.3 <<>> www.lifeoverip.net
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47172
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;www.lifeoverip.net.            IN      A

;; ANSWER SECTION:
www.lifeoverip.net.     14400   IN      A       80.93.212.86

;; AUTHORITY SECTION:
lifeoverip.net.         30637   IN      NS      ns3.tekrom.com.
lifeoverip.net.         30637   IN      NS      ns4.tekrom.com.

;; ADDITIONAL SECTION:
ns4.tekrom.com.         91164   IN      A       70.84.223.227
ns3.tekrom.com.         165971  IN      A       70.84.223.226

;; Query time: 213 msec
;; SERVER: 195.175.39.40#53(195.175.39.40)
;; WHEN: Sat Jan 24 10:56:14 2009
;; MSG SIZE  rcvd: 130

Çıktıların Detay açıklaması Read more »

E-posta adresinizi her siteye yazar mısınız?

By | January 24, 2009

Yakin gelecekte(bazilarimiz icin simdilerde) birincil tanıtım ve kimlik aracımız e-postalar olacak. Özellikle 3G ile hızlı internetin yaygınlaşması ile insanlar artık SMS’e para vermek yerine mailleşmeye başlayacaklar. Mail SMS’e göre hem daha pratik hem de heryeden ulaşılabilir bir teknoloji, üstelik mail başına para ödemeniz gerekmiyor. Kısaca yakın gelecekte e-posta olarak adlandırdığımız teknoloji cok daha yaygınlaşacak. Bu da  e-posta adreslerimizin daha değerli olacağı demek oluyor.

Şimdilik e-posta adreslerinin kötü niyetli kullanımı olarak Spam, Phishing ve adres çalma yöntemlerini görüyoruz. Bir de pek önemsemediğimiz fakat bazı durumlarda ciddi olarak işe yarayan bilgiler sunar e-postalarımız. Nedir bu bilgi? Çoğu site(legal/illegal), forum, download hizmetleri vb gibi yerler basit bir işlem için bile e-posta adreslerimizi istiyor. Internet altyapısı kullanılarak bir kişinin hangi adreslerde dolaştığı(Gmail açıkken google kullanıyorsanız tüm aramalarınız kaydedilir örneği), nerelerden hangi dosyaları indirdiği, hangi forumlara, gruplara üye olduğu gibi bilgiler rahatlıkla toplanabilir.

Bazen öyle durumlara giriyoruz ki bir siteden/forumdan yorum okumak için bizden e-posta adresimizi istiyor. Vermeseniz amacınıza ulaşamayacaksınız verseniz e-posta adresiniz o site/foruma kayıtlı olacağı için ilerde sitenin/forumun görüşlerinden dolayı sıkıntı yaşayabilirsiniz. Bu gibi durumlarda yedek birkaç e-posta adresi bulundurmak bir çözüm olsa da  bazen adreleri karıştırıp gerçeğini kullanabiliyor insan.

Şöyle anlık oluşturup kullanabileceğimiz anonoim bir mail hizmeti olsa. Üye olmak için bir dünya girdi vermesek sadece e-posta adresini alsak, kullansak ve atsak diyorsanız Yopmail’i öneririm. Yopmail bu tip paranoyak(!) kişilikler için geliştirilmiş anonim bir e-posta hizmeti. Bir site sizden üyelik için adres mi istedi ? Hemen Yopmail’e gelip rastgele bir isim yazın ve saniyesinde anonim, geçici mail adresiniz oluşsun. Kullandıktan sonra mail adresini iptal etme zahmetine bile girmenize gerek yok.

yopmailyopmail-ii

Hem her yere mail adresinizi bırakmayarak  Spamcilerden kurtulmuş hem de gerekmediği yerlere mailinizi vermeyerek  ilerde başınıza gelebilecek muhtemel sıkıntılardan korunmuş olursunuz.

Web 2.0 uygulamalarinda adiniz alinmis mi?

By | January 19, 2009

Yeni nesil internetin heyecanli oyuncaklarindan biri de hic suphesiz Web 2.0 uygulamalari. Sayilarini saymakla bitiremeyeceğimiz kadar gerekli gereksiz bir dünya uygulama var. Eğer bu tip uygulamalarin mudavimi iseniz ve kendi adınız/nickiniz ile ile gözükmek istiyorsanız UsernameCheck servisini denemenizi öneririm. Böylece hangi web uygulamasında isminiz alınmış/alınmamış öğrenebilirsiniz.

Uygulama basitce sizin verdiğiniz ismi 70~den fazla web uygulamasına sorup alınmış/alınmamış şeklinde çıktı üretiyor. Böylece hangi web uygulamasında adınızın boşta olup olmadığını öğreniyorsunuz. Özellikle son dönemlerde bu tip uygulamalarda sahte kimlikler vs görülmeye başlandı. Bazı arkadaşlar kullanmadığı halde ismini alıp kendi adına sahte kimliklerin üretilmesine engel olmaya çalışıyor. Güzel bir düşünce fakat bu kadar çok uygulamanın hangi birine üye olacağız?
Şahsım adına Linkedin haricinde hiçbirini aktif kullanmıyorum. Boş, gereksiz ve zaman öldürücü geliyor:)

web2_zimpirti

OpenBSD Packet Filter yük dengelemede FTP kullanımı

FTP, sık kullanılan protokoller(HTTP, SMTP, DNS vs) arasında en sorunlu protokoldür. Diğer protokoller tek bir TCP/UDP portu üzerinden çalışırken FTP birden fazla ve dinamik portlarla çalışır.   Bir Firewall’da HTTP bağlantısını açmak için sadece 80. portu açmanız yeterlidir fakat FTP için 21. portu açmak yetmez.

Zira FTP komutlarin gidip geldiği ve verinin aktığı port olmak üzere iki farklı port üzerinden çalışır. İlk port sabit ve bellidir:21. port fakat veri bağlantısının gerçekleştiği port olan diğer port Aktif FTP ve PAsif FTP kullanımına göre değişir ve eğer firewall FTP protokolünden anlamıyorsa genelde sorun yaşanır.

Çoğu zaman arkadaşlarınızın FTP ye bağlanıyorum ama ls çektiğimde bağlantı kopuyor ya da öylesine bekliyor dediğine şahit olmuşsunuzdur. Bu gibi istenmeyen durumlar FTP’nin karmaşık yapısı ve Firewall’ların protokolden anlamamasından kaynaklanır.

Yeni nesil Firewall’larda bu sıkıntı büyük ölçüde giderilmiş olsa da ara ara eksik yapılandırmalardan aynı hataların yaşandığını görüyoruz. Linux Iptables’da ftp problemini aşmak için mod ftp_conntrack modülünün sisteme yüklenmesi gerekir. OpenBSD Packet Filter ise bu tip aykırı protokoller için en uygun yapı olan proxy mantığını kullanır. FTP için ftp-proxy, upnp için upnp proxy, sip için sip-proxy vs.

FTP protokolü eğer çıkış hattı bir tane ise oldukça rahat çalışır fakat hatlar birden fazla ve bunlar arasında load balance işlemi yapılıyorsa problem yaşatır. Aşağıdaki örnek iki farklı çıkışı olan ve iç ağında VLAN’lere bölünmüş(her bir VLAN ayrı hattan çıkıyor) OpenBSD PF için ftp-proxy’nin sorunsuz kullanımını anlatmaktadır. Read more »

Az bilinen yonleri ile Nmap

By | January 17, 2009

10 yılı aşkın süredir açık kaynak kodlu geliştirilen Nmap’e özellikle son birkaç yıldır güvenlik uzmanlarının işlerini kolaylaştıran özellikler ekleniyor. Yine yoğun olarak eğitim notlarını güncellerken aslında Nmap’in birçok özelliğini eksik bıraktığımı farkettim. Nmap notlarım iki senedir felan güncellenmediği için gözüme bayat geliyordu.

Bu aralar işimin de tamamen güvenlik testlerine kayması ile birlikte bol zaman bulabiliyorum. Eğitim notları hazırlarken buraya da ufak tefek eklemeler yapıyorum.

İşte nmap’in az bilinen fakat çok işe yarayan özelliklerinden birkaçı.

En sık kullanılan portlar üzerinde tarama

Port taramalarında en büyük sorunlardan biri hangi portların taramaya dahil edileceğidir. Bilindiği üzere TCP ve UDP protokollerinin her biri 65535 port olasılığı var.  Taramalarda tüm bu portları taramaya dahil edecek olursak tarama zamanı oldukça uzayacaktır. Dahil edilmezse de arada açık olup fakat bizim taramadığımız portlar olabilir. Bu sıkıntıyı aşmak için Nmap yazarı Fyodor geçen sene internet üzerinde yaptığı uzun araştırmalar sonucu internete açık portların belli oranını çıkartmış. Bu araştırma ile top 10, top 100, top 1000 gibi portları taratmak mümkün hale gelmiştir.

Taramanın sonuçlarına göre internette en fazla bulunan açık portlar şu şekildedir. Read more »

Thsark ile TCP/IP Paket Analizi

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: 0x2a35 [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

By | January 13, 2009

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

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/

Güvenligi gercekten ciddiye aliyor muyuz-DNS Cache poisoning acikligi

By | January 12, 2009

Yeni hazirladigim bir egitim icin DNS Cache Poisoning acikligini test eden uygulamalari test ediyordum. Normalde dig ya da nslookup kullanarak aciklik testini gostermeye calisiyorum fakat her zaman bu ikilinin parametreleri hatirlanamiyor. Dolayisi ile bu isi web uzerinden yapan bir servis isimi oldukca kolaylastiracakti. Internette bu sekilde cesitli servisler var fakat ben IANA’ninkini tercih ettim.

Verilen servisin ne kadar saglikli ciktilar urettigini test etmek isterken aklima acaba son acikliktan sonra hala dns sunucularinda gerekli onlemleri almamis birileri var mi diye merak ettim ve sonuc gercekten korkuttu. Aralarinda  devlet/özel üniversite Turkiye’nin en hassas kurumlari, telco sirketleri , medya sirketleri ve guvenlik uzerine is yapan sirketler ve bu konuda bilincli olacagini dusundugum arkadaslarin sistemleri olmak uzere 10-15 sisteme baktim .Cogu hala gerekli onlemi almamis gorunuyordu. Buradan benim cikardigim sonuc: guvenlik isini hakettigi kadar ciddiye almadigimizdir. Ne demis atalarimiz “bir musibet bin nasihatten evladir”. Henuz bizdeki hacker tayfasinin teknik kapasitesi web sayfalarini deface etmenin uzerine cikamadigi icin simdilik musibet konusunda rahatiz fakat ilerde bu bakis acisi degisecek ve web sayfalarindan istedigini elde edemeyeneler daha komplike saldiri yontemlerine basvuracak.

Aciklik ciktiktan sonra bunu duymamis olma ihtimalimiz yok ama nedense kendi sistemimize bir bakip bu zaafiyetten etkileniyor mu kontrol etmiyoruz -edenleri tenzih ederim-. Belki usengenclik belki “adam sendecilik” ne dersek diyelim  bir yerler eksiklik kaliyor hep…

dnscache_poisoning1

OpenSSH ile VPN Kurulumu

By | January 7, 2009

Ilk ciktiginda nasil yapilacagi konusunda birseyler yazmistim burada bulunmasinda da fayda gordugum icin tekrar yaziyorum.  Linux-FreeBSD arasinda OpenSSH’i kullanarak pointo-to-point VPN yapmak icin asagidaki adimlari izlemeniz yeterli olacaktir.

Not-1:noktadan noktaya VPN kurulumu icin sshd-config dosyasinda PermitTunnel secenegi yes olmali.
Not-2: VPN Tüneli kurulabilmesi için SSH’in root kullanıcısına izin vermiş olması gerekir. Bunun için sshd_config dosyasındaki PermitRootLogin yes olmalıdır.

PermitTunnel yes
PermitRootLogin yes

Örnek;

Site1(++)–GW1–internet--GW2(5.6.7.1)–Site2(++)
yukarıdaki sistemde site1 ile site2 arasında VPN yapmak istiyoruz.
Bunun için gerekli ssh ve ip yapilandirmasi.. Read more »