Friday, September 25, 2009

NMAP - Port Scanning Techniques

TCP Syn Scan = -sS

- Teknik ini juga dikenali sebagai half open scanning kerana ia tidak buka keseluruhan sambungan TCP .
- SYN packet akan dihantar dahulu untuk memulakan sambungan dan kemudian tunggu maklumbalas dari penerima (targeted mechine).
- Jika menerima paket SYN/ACK menunjukkan port listening (open)
- Jika menerima paket RST (reset) menunjukkan port non-listener
- Jika tiada maklumbalas setelah beberapa percubaan, port tersebut adalah filtered
- Port juga dlm keadaan filtered jika mesej "ICMP unreachable error" (type 3 code 1,2,3,9,10 atau 13) di terima.


TCP Connect Scan = -sT

- Teknik ini akan digunakan jika SYN scan bukan pilihan
- Digunaka jika user tiada akses raw packet privileges (root) atau scan IPv6 network.
- Kebanyakan Scan Technique adalah dengan menulis raw packets.
- Teknik ini akan membertahu "underlying operating system" supaya membuat sambungan ke target mechine dan port dgn menggunakan "connect system call".
- High level system call yang sama ini digunakan juga oleh web server , P2P client dan aplikasi network yg lain utk membuat sambungan.
- Ia adalah sebahagian "programming interface" yang dikenali sebagai Berkeley Sockets API.
- Drpd hanya membaca raw packets yg di captured, NMAP guna API ini utk mendapatkan informasi pada setiap sambungan yg berlaku.
- Adalah digalakkan mengguna TCP SYN drpd TCP Connect Scan kerana NMAP kurang efisen (less control) kpd "connect system call" berbanding Raw Packets
- Teknik ini juga memerlukan masa yg panjang & memerlukan packet yg banyak untuk dapatkan informasi yg sama dgn SYN teknik.
- Target mechine juga akan log connection yg di buat menggunakan teknik ini.


UDP Scan = -sU

- Teknik ini digunakan utk scan service UDP
- DNS(53), DHCP(67/68) dan SNMP (161/162) adalah protocol UDP yg biasa digunakan dlm internet.
- UDP scanning adalah lebih sukar & perlahan berbanding TCP.
- UDP scan boleh digabung dgn TCP scan . Cth :: nmap -sS -sU
- UDP scan berfungsi dgn hantar header yg kosong kpd semua targeted port.
--- Jika error "Destination port unrechable" (type 3, code 3), port adalah "closed"
--- Jika error ICMP
(type 3, codes 1, 2, 9, 10, or 13) ,port adalah "filtered"
--- Jika menerima UDP packet, port adalah dlm keadaan "open"
--- Jika tiada respon selepas beberapa cubaan, port adalah "open|filtered"
- Open|Filtered adalah keadaan di mana port dalam keadaan "open" atau di block oleh Firewall/Packet Filter. Gunakan option
(-sV) untuk menentukan sama ada port dlm keadaan "open" atau "filtered".

TCP NULL, FIN, and Xmas scans = -sN; -sF; -sX

-sN = NULL scan. Does not set any bits. TCP flag header is 0
-sF = FIN scan. Hanya set TCP FIN bit.
-sX = Xmas scan. Sets FIN, PSH & URG Flags.
lighting the packet up like a Christmas tree.

- Ketiga-tiga teknik di atas adalah sama kecuali pada TCP flag yg di set pada probe packets.
- Jika menerima RST packet, port tersebut adalah dlm keadaan "close".
- Jika tiada response, port tersebut adalah dlm keadaan "open | filtered".
- Jika menerima "ICMP Unreachable Error (t:3, c:1,2,3,9,10 & 13) port dlm keadaan "filtered"

- Kelebihan teknik ini adalah ia dapat melalui / menembusi sesetengah non-stateful firewall & packet filtering routers. Teknik ini juga lebih senyap (stealth) berbanding SYN scan.
- Kelemahan sistem ini ialah tak dapat membezakan antara "open port" & "filtered port" dan akan menyebabkan hasil scan adalah "open|filtered"

- Teknik ini juga mengexploitasi kelemahan pada RFC 793(page 64,65) iaitu ::

SEGMENT ARRIVES

If the state is CLOSED (i.e., TCB does not exist) then ::

all data in the incoming segment is discarded. An incoming
segment containing a RST is discarded. An incoming segment not
containing a RST causes a RST to be sent in response. The
acknowledgment and sequence field values are selected to make the
reset sequence acceptable to the TCP that sent the offending
segment.

If the state is LISTEN then ::

1- first check for an RST
2- second check for an ACK
3- third check for a SYN

4- fourth other text or control

Any other control or text-bearing segment (not containing SYN)
must have an ACK and thus would be discarded by the ACK
processing. An incoming RST segment could not be valid, since
it could not have been sent in response to anything sent by this
incarnation of the connection. So you are unlikely to get here,
but if you do, drop the segment, and return.

- Apabila membuat scan pada target mechine yg memenuhi standard RFC793 ini, semua packet yg tidak mempunyai Flag SYN, RST atau ACK bits akan memulangkan flag RST bit jika port tersebut "closed"
- Jika port tersebut dlm keadaan "open", tiada respon akan diterima.
- Oleh itu, jika flag yang lain digunakan iaitu FIN, PUSH dan URG , NMAP dapat membuat exploit terhadap targeted mechine menggunakan kaedah di atas (-sN,-sF,-sX).

TCP ACK scan = -sA

TCP Window scan = -sW

TCP Maimon scan = -sM

Custom TCP scan = --scanflags

SCTP COOKIE ECHO scan = -sZ

idle scan =
-sI [:]

IP protocol scan = -sO

FTP bounce scan = -b

SCTP INIT scan
= -sY

Reference ::
Port Scanning Techniques
RFC 793

No comments: