Linux Nmap Kullanımı


Nmap: network mapper. En yaygın bilinen şekliyle bilgisayarın açık olan portlarını, parmak izini, kullanılan servislerin isim ve versiyon numaralarını bulmaya yarar. Desteklenen platformlar ; FreeBSD, OpenBSD, NetBSD, Solaris, IRIX, MAC OS X, HP-UX, Sun OS, Amiga, Linux ve Microsoft Windows.

Nmap Neden Kullanırız?

Kendi ağımız ve ya uzaktaki bir ağda hangi makinaların göndereceğimiz isteklere yanıt verdiğini görmek için.
İstenen ağda veya bilgisayarda açık olan portları bulmak için.
İstenen ağda ve ya bilgisayarda iletim sistemi ve o ağda-bilgisayarda kullanılan servisler hakkında detaylı bilgi.
Gönderdiğimiz paketlere ağ veya bilgisayarların verdikleri cevaplar.



Nmap ile en basit arama işlemi “nmap ip” şeklindedir. Burda dikkat edilmesi gereken eğer root iseniz bu SYS scan şeklinde değilseniz Connect scan şeklinde çalışacaktır. İkisinin arasındaki fark hızdır. Connect scan Sys scan a oranla daha yavaştır.

nmap 192.168.2.1

Şeklinde port taramasını yapabiliriz. Şimdi çıktımızı inceleyelim.

ercan# nmap 192.168.2.1

Starting Nmap 4.11 ( Nmap - Free Security Scanner For Network Exploration & Security Audits. ) at 2006-12-24 23:31 EET
Interesting ports on 192.168.2.1:
Not shown: 1675 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
23/tcp open telnet
80/tcp open http
1050/tcp open java-or-OTGfileshare
MAC Address: 00:12:BF:37:14:B2 (Arcadyan Technology)

Nmap finished: 1 IP address (1 host up) scanned in 14.408 seconds

Görüldüğü gibi açık adresleri ve sonuç olarak MAC adresi ile üretici firmasını veriyor. Dikkat etmemiz gereken ise bu mac adresini ve üretici firmayı sadece LAN da çalışırken alabilirsiniz. Aynı zamanda bu scan işleminin nekadar zaman sürdüğünü belirtiyor.

Eğer daha detaylı çıktı istiyorsak

nmap –v 192.168.2.1

şeklinde arama yapmalıyız (-v verbose) hatta daha fazla bilgi almak isterseniz –vv parametresi ile taramalarınızı yapabilirsiniz. Şimdi TCP SYN Scan ve TCP Connect Scan`i görelim.


TCP SYN Scan ve TCP Connect Scan

Bunlardan önce TCP bayraklarından (flags) bahsedeyim.

SYN = Senkronize mesajı (Synchronize)
ACK = Alındı Mesajı (Acknowledgement)
RST = Bağlantı iptali(Reset)
FIN = Bitirme mesajı (Fnish)


TCP SYN Scan

Şimdide SYN Scan`in açık bir port üzerindeki hareketini gösterelim.

Birincibilgisayardan SYN gönderilir. ikinci bilgisayardan karşılığında SYN/ACK alınır ve birinci bilgisayardan RST gönderilir.

Nmap –sS 192.168.2.1

Not: SYN şeklindeki taramalarınızı ancak root olduğunuz zamanlar yapabilirsiniz.

$ nmap -sS 192.168.2.1
You requested a scan type which requires root privileges. Sorry dude.

TCP Connect Scan

Bu ise Unixden bildiğimiz connect() fonksiyonunu kullanarak açık olan TCP portlarını bulmaya çalışır. Hareketini gösterelim.

Birinci bilgisayardan SYN gönderilir, ikinci bilgisayardan karşılık olarak SYN/ACK gönderilir ve birinci bilgisayardan ACK gönderilir.

Nmap –sT 192.168.2.1

Şimdide SYN yada Connect Scan lerin kapalı porttaki hareketini bakalım. Birinci bilgisayardan SYN gönderilir, ikinci bilgisayardan karşılık olarak RST gelir ve biter.



UDP Port Scan

TCP port aramlarından bahsettik. Şimdide UDP portlarını kontrol edelim.

nmap –sU 192.168.2.1


Ping Scan

Bu ise portları taranacak bilgisayara ping yollayıp ordan gelen cevaba göre açık olup olmadığını söler. Dikkat edilmesi gereken şey ise karşı taraf ping e kapalı olabilir.

Nmap –sP 192.168.2.1

Birde bunun ping olmadan scan edeni var. Yani ping cevabına yanıt vermesede önemli değil. O ise,

Nmap –P0 192.168.2.1

Burada –P0 ( eksi, p, sıfır).


Servis Versiyonları

Tarama yaptığımız ağ veya bilgisayarda kullanılan servis versiyonlarını öğrenmek isteriz.

nmap –sV 192.168.2.1

ercan# nmap -sV 192.168.2.1


Starting Nmap 4.11 ( Nmap - Free Security Scanner For Network Exploration & Security Audits. ) at 2006-12-25 00:13 EET
Interesting ports on localhost (192.168.2.1):
Not shown: 1674 closed ports
PORT STATE SERVICE VERSION
21/tcp open ftp ProFTPD 1.3.0
22/tcp open ssh OpenSSH 4.2p1 (FreeBSD 20050903; protocol 2.0)
80/tcp open http Apache httpd 2.2.0 ((FreeBSD) DAV/2 PHP/5.2.0 mod_ssl/2.2.0 OpenSSL/0.9.7e-p1)
110/tcp open pop3?
143/tcp open imap Courier Imapd (released 2005)
3306/tcp open mysql MySQL (unauthorized)
Service Info: OSs: Unix, FreeBSD

Görüldüğü gibi Kullanılan işletim sistemi ve üzerindeki açık vervislerin versiyonları çıktı.

Birde işletim sistemini belirlemek için

Nmap –O 192.168.2.1

kullanılır. Bu aslında TCP/IP fingerprint in çıktısıdır.

Nmap –A 192.168.2.1

Buda hem –O ve hemde –sV yi nin ortak halidir.




Bu port aramalarımız uzun sürüyor diyorsanız , bunun içinde bir parametre var.

nmap –F 192.168.2.1

-F fast port scan dir. Yani nmap-services dosyasındaki belirtilen portları arar sadece.

ercan# cat /usr/local/share/nmap/nmap-services | more
# Well known service port numbers -*- mode: fundamental; -*-
# From the Nmap security scanner ( Nmap - Free Security Scanner For Network Exploration & Security Audits. )
#
# $Id: nmap-services 3515 2006-06-19 04:01:16Z fyodor $
# For a HUGE list of services (including these and others),
# see http://www.graffiti.com/services
tcpmux 1/tcp # TCP Port Service Multiplexer [rfc-1078]
tcpmux 1/udp # TCP Port Service Multiplexer
compressnet 2/tcp # Management Utility
compressnet 2/udp # Management Utility
compressnet 3/tcp # Compression Process
compressnet 3/udp # Compression Process
rje 5/tcp # Remote Job Entry
rje 5/udp # Remote Job Entry
echo 7/tcp #
echo 7/udp #
discard 9/tcp # sink null
discard 9/udp # sink null
systat 11/tcp # Active Users
systat 11/udp # Active Users
...



-P Parametresi

nmap -p 1-1024 192.168.2.1 ilk 1024 portu tarar.

Buradaki –p aralıkları belirtir ve onun dışında « –p 10 » « -p 1-22,25,80 » şeklindede kullanabiliriz. Yani tek bir portu veya üç dört tane portu veya hem belli bir aralığa ve aynı aralıkla birlikte bir kaç portuda ilave edebiliriz.
mutasyon# nmap -p 10-60 192.168.2.1

Starting Nmap 4.11 ( Nmap - Free Security Scanner For Network Exploration & Security Audits. ) at 2006-12-25 00:30 EET
Interesting ports on localhost (192.168.2.1):
Not shown: 49 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh

Nmap finished: 1 IP address (1 host up) scanned in 0.019 seconds

Belli bir network aralığını ise

Nmap 192.168.2.1-3 şeklinde tarayabilirsiniz. Bu 192.168.2.1, 192.168.2., 192.168.2.3 ipsine sahip makinalara bakacaktır.s

Bu parametreleri birliktede kullanabilirsiniz.




ercan# nmap -p 1-250 -O -sV 192.168.2.1-3

Starting Nmap 4.11 ( Nmap - Free Security Scanner For Network Exploration & Security Audits. ) at 2006-12-25 00:40 EET
Interesting ports on 192.168.2.1:
Not shown: 246 closed ports
PORT STATE SERVICE VERSION
21/tcp open tcpwrapped
22/tcp open tcpwrapped
23/tcp open telnet BusyBox telnetd
80/tcp open http Mini_httpd 1.19
MAC Address: 00:12:BF:37:14:B2 (Arcadyan Technology)
Device type: general purpose
Running: Linux 2.4.X
OS details: Linux 2.4.6 - 2.4.26 or 2.6.9
Uptime 3.516 days (since Thu Dec 21 12:16:51 2006)
Service Info: Host: localhost

Interesting ports on localhost (192.168.2.2):
Not shown: 245 closed ports
PORT STATE SERVICE VERSION
21/tcp open ftp ProFTPD 1.3.0
22/tcp open ssh OpenSSH 4.2p1 (FreeBSD 20050903; protocol 2.0)
80/tcp open http Apache httpd 2.2.0 ((FreeBSD) DAV/2 PHP/5.2.0 mod_ssl/2.2.0 OpenSSL/0.9.7e-p1)
110/tcp open pop3?
143/tcp open imap Courier Imapd (released 2005)
No exact OS matches for host (If you know what OS is running on it, see Nmap Fingerprint Submitter 2.0).
TCP/IP fingerprint:
SInfo(V=4.11%P=i386-portbld-freebsd6.1%D=12/25%Tm=458F0266%O=21%C=1)
TSeq(Class=TR%IPID=I%TS=1000HZ)
T1(Resp=Y%DF=Y%W=FFFF%ACK=S++%Flags=AS%Ops=MNWNNT)
T2(Resp=N)
T3(Resp=Y%DF=Y%W=FFFF%ACK=S++%Flags=AS%Ops=MNWNNT)
T4(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=)
T5(Resp=Y%DF=Y%W=0%ACK=S++%Flags=AR%Ops=)
T6(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=)
T7(Resp=Y%DF=Y%W=0%ACK=S%Flags=AR%Ops=)
PU(Resp=Y%DF=N%TOS=0%IPLEN=38%RIPTL=148%RID=E%RIPC K=E%UCK=0%ULEN=134%DAT=E)


Uptime 0.082 days (since Sun Dec 24 22:44:56 2006)
Service Info: OSs: Unix, FreeBSD

......
Bu Şekilde de bir ağı tarayabilirsiniz.

nmap 192.168.2.1/10
nmap -p 10 "192.168.2.*"
nmap –v www.ercanyuzuk.com/10




Nmap Çıktıları

-oN: Ekranda gözüken gibi dosyaya yazdırılırS

nmap –oN 192.168.2.1

-oG: Çıktıları birleştirerek yazar.
-oX: XML çıktısı olarak kaydeder.
-oA: Script kidyler hariç tüm logları oluşturur.

ercan# pwd
/usr/home/ercan/nmapstudy


ercan# nmap -oA mynmaplog -p 10-100 192.168.2.1

Starting Nmap 4.11 ( Nmap - Free Security Scanner For Network Exploration & Security Audits. ) at 2006-12-25 01:03 EET
Interesting ports on localhost (192.168.2.2):
Not shown: 88 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open http

Nmap finished: 1 IP address (1 host up) scanned in 0.025 seconds
mutasyon# ls
mynmaplog.gnmap mynmaplog.nmap mynmaplog.xml
Not: mynmaplog.xml dosyasınıda web sunucuna koyup browserden bakmanızı tavsiye ederim.

Yukarıda paketlerin bayraklarından bahsetmiştik. Genel olmayıp fakat zaman zaman kullanılan farklı paketler için port arama yöntemleri var.


-sF : FIN paketleri için.
-sX : FIN paketleri ve URG, PSH bayrakları için.
-sN : Null scandir.

Peki bunca iş yapıyoruzda bu aramalarda arkada dönen nedir?
Yukarıda TCP SYN Scan ve TCP Connect Scan den bahsetmiş hatta hareketlerini incelemiştik. Şimdi bu hareketleri canlı olarak görelim.

En basit haliyle

nmap --packet_trace 192.168.2.1

Bunları dosyaya yazmanızı tavsiye ederim. Takip edip okumak açısından daha kolay olucaktır.

nmap -oN cikti1 --packet_trace 192.168.2.1

Sonra cikti1 dosyasının içini inceleybilirsiniz.

Aynı şekilde “—version_trace” yi kullanabilirsiniz. Buda tahmin ettiğiniz gibi –sV nin detayıdır. Yani servislerin versiyonlarını gösteren trace...



Aramalarımızda hangi protokollerin (TCP, UDP, ICMP etc) açık olduğunuda merak edebiliriz. Nmap bunuda bize sunar.
nmap –sO 192.168.2.1

ercan# nmap -sO 192.168.2.1


Starting Nmap 4.11 ( Nmap - Free Security Scanner For Network Exploration & Security Audits. ) at 2006-12-25 01:51 EET
Interesting protocols on localhost (192.168.2.1):
Not shown: 253 open|filtered protocols
PROTOCOL STATE SERVICE
1 open icmp
6 open tcp
17 open udp

Nmap finished: 1 IP address (1 host up) scanned in 9.308 seconds

Nmap ile port taraması yaparken istediğimiz ethernet üstünden aramalarımızı yapabiliriz.

ercan# nmap -P0 -e eth0 -S 192.168.2.2 Google


Starting Nmap 4.11 ( Nmap - Free Security Scanner For Network Exploration & Security Audits. ) at 2006-12-25 01:55 EET
Warning: Hostname Google resolves to 3 IPs. Using 209.85.129.147.
Interesting ports on 209.85.129.147:
Not shown: 1676 filtered ports
PORT STATE SERVICE
80/tcp open http
113/tcp closed auth
179/tcp closed bgp
443/tcp open https

Nmap finished: 1 IP address (1 host up) scanned in 46.800 seconds

Burada –e bir ethernet arayuzunu belirteceğimi söylüyor. –S ise kaynak ip yi yani şuan o ethernet ile kullandığım ipyi belirtmeye yarıyor.

Şimdi birazda LAN dışında hatta LAN içinde bir çok bilgisayarın portlarını tararken harcayacağımız vakiti biraz düşürelim...

ercan# nmap -p 1-1024 192.168.2.1

Şeklinde bir nmap sorgusunda yaklaşık olarak 6,5 saniye zaman harcıyorum. Fakat –T parametresini kullanarak bu hız ;

ercan# nmap -T5 -p 1-1024 192.168.2.1

Nmap finished: 1 IP address (1 host up) scanned in 4.299 seconds

Gördüğünüz gibi arada bayağı bir zaman oynadı.. Yukarıdada bahsettiğimiz gibi nmap paket gönderip ordan dönen pakete göre açık olup olmadığına karar veriyor. Bu paket gönderim sırasında paketin cevabının gelmesi için belli bir süre bekliyor. Bizim yaptığımız ise bu süreyi azaltmak. Tabiki bu süreyi azaltmakla istediğimiz bilginin güvenirliliğinide azaltmış oluyoruz.

Bir kaç parametre daha ekleyelim;

--max_rtt_timeout : Kat edilen yol süresi
--initial_rtt_timeout : Kaç mili saniye ile başlayacağı

Bir örnek yapalım.

mutasyon# nmap -T5 --max_rtt_timeout 150 --initial_rtt_timeout 150 -p 80

Yorumlar