Wednesday 26 February 2014

Nmap truyền kì - Hồi 1 - Host Discovery

List scan là một dạng suy biến của host dicovery, nó đơn giản chỉ liệt kê các host trên network được chỉ định mà không cần gửi bất kì gói tin nào đến target.
List scan là hành động kiểm tra đúng đắn đảm bảo rằng bạn có các địa chỉ IP của đúng target. Nếu hiện ra các domain name mà bạn không nhận ra được thì nên tìm thêm để tránh việc scan nhầm mạng của công ty khác.
Một trong những điểm mạnh của list scan là stealth ( tránh được sự chú ý không mong muốn từ IDS). Trong những trường hợp target chú ý đến tất cả reverse-DNS request, chúng ta có thể sử dụng anonymous recursive DNS server bằng cách sử dụng --dns-servers.
List scan không thể sử dụng chung với các hàm cao cấp hơn như port scanning, OS detecttion, ping scanning.

-sP (Ping scan)
default = -PE -PA
Chỉ thực hiện ping, và in ra các host hồi đáp lại. Không thực hiện thêm các hàm kiểm tra khác như (OS detect, port scanning), ngoại trừ Nmap Scripting Engine (--script) và traceroute probing (--traceroute). Đây là một bước xâm nhập xa hơn list scan, và có thể sử dụng cùng chung mục đích. Đây là việc thực hiện do thám (light reconnisance) network của target nhanh chóng mà không thu hút nhiều sự chú ý.
SysAdmin có thể sử dụng option này một cách hữu ích. Nó có thể được sử dụng để đếm các máy available trên mạng hay monitor server availability. Hành động này được gọi là "ping sweep", đáng tin tưởng hơn là ping địa chỉ broadcast vì nhiều host không trả lời broadcast query.
-sP gửi ICMP echo request và TCP-ACK vào port 80 (default). Vì một số unprivileged Unix user (Window user without WinPcap installed) không thể gửi được raw packet, vì thế SYN được thay thế (-PS). Gói SYN được gửi đi sử dụng TCP connect() system call đến port 80 của target. Khi privileged user thực hiện scan target trên local ethernet network, ARP request (-PR) được sử dụng nếu không có option --send-ip được sử dụng.

.::Host Discovery techniques::.
Nếu chỉ định option -P... option này sẽ thay thế default discovery probé thay vì add thêm vào.

TCP SYN PING (-PS<port-list>)
-PS gửi đi gói tin TCP rỗng được set SYN flag. Port mặc định là 80.
Bình thường khi port closed, gói tin RST được gửi trả về. Khi port open, gói tin SYN/ACK được gửi trả về. Khi đó, nmap sẽ đóng kết nối mới chuẩn bị mở bằng cách gửi gói RST thay vì gói ACK để hoàn thành 3-way-handshake và thiêt lập full connection.
Ở đây nmap không quan tâm port mở hay đóng. Chỉ cần biết gói trả về là RST hay SYN/ACK để xác đinh target up hay down.
Trên Unix, chỉ có user privileged root mới có thể tạo gửi và nhận gói TCP raw. Với unprivileged user, phương pháp thay thế được thực hiện bằng system call connect() được khởi tạo với target port.

TCP ACK PING (-PA<port-list>)
Giống với SYN Ping, nhưng khác ở chỗ gửi đi gói ACK để đồng ý thiết lập kết nối, nhưng không có kết nối đó tồn tại, do đó target luôn trả lời bằng gói RST, làm lộ diện sự tồn tại của target.
-PA sử dụng default port 80. Nếu unprivileged user thử option này, hoặc IPv6 được chỉ định, system call connect() được thảo luận ở phía trên được sử dụng. Phương pháp thay thế này không hoàn hảo vì connect() thực chất gửi đi gói SYN thay vì gói ACK.
Mục đích của việc cung cấp cả SYN và ACK ping probe làm tăng cơ hội bypass fw. Hầu hết các admin cấu hình router và các fw khác block incomming SYN ngoại trừ các dịch vụ public như website hay mail server.

UDP Ping (-PU<port-list>)
gửi gói UDP rỗng (nếu không sử dụng --data-length để chỉ định độ dài của dữ liệu) đến một port xác định. Nếu không chỉ định port, port mặc định là 31,338. Chỉ định port cao không phổ biến được khuyến khích ở đây vì khi gửi đến port open thường không mong muốn cho loại scan này.
Dựa trên việc gửi vào port close của target, nếu target up, nó sẽ trả về gói tin ICMP port unreachable. Có nhiều loại ICMP error, như host/network unreachable hay TTL exceeded chỉ ra host down hay unreachable. Việc không trả về kết quả có thể xảy ra theo cách này, khi gửi gói tin UDP rỗng vào port open, hầu hết các service sẽ ignore gói tin đó, và tất nhiên sẽ không có gói tin nào sẽ được trả về.
Lợi ích của kĩ thuật này chính là có khả năng bypass fw cũng như filter chỉ quan tâm đến TCP.

ICMP Ping Type (-PE, -PP, -PM)
-PE nmap sẽ gửi gói tin imcp type 8 (echo request) đến target, và hy vọng nhận về icmp type 0 (echo reply) từ host available. Nhưng nhiều host và firewall block loại scan này, dẫn đến kết quả có thể không chính xác.
Trong khi echo request được xem như là dạng chuẩn của ICMP ping query, nhưng nmap không dừng lại ở đây. ICMP standard (RFC 792) cũng chỉ định các loại request khác như: timestamp request (code 13), information request (code 15), address mask request (code 17). Nmap hiện tại chưa hỗ trợ gói tin information request vì nó chưa được hỗ trợ rộng rãi (RFC 1122 nhấn mạnh "a host SHOULD NOT implement these messages").
-PP sẽ gửi gói icmp timestamp request. ICMP code 14 sẽ trả về nếu host available
-PM sẽ gửi gói icmp address mask request. ICMP code 18 sẽ trả về nếu host available

IP Protocol Ping (-PO<protocol-list>)
gửi gói tin IP mà protocol number được set trong IP header. Nêu không có protocol nào được chỉ định, mặc định sẽ gửi gói IP với ICMP (protocol 1), IGMP (protocol 2), IP-in-IP (protocol 4). Chú ý đối với ICMP, IGMP, TCP (protocol 6), UDP (protocol 17), the packets are sent with the proper protocol headers while other protocols are sent with no additional data beyond the IP header(unless the --data-length option is specified)
Phương pháp này tìm kiếm những trả lời sử dùng cùng chung protocol khi probe, hay ICMP unreachable message chỉ ra dấu hiệu protocol không được hỗ trợ. Cả 2 dấu hiệu đó điều chỉ ra là host available.

ARP Scan (-PR)
Một trong những môi trường sử dụng Nmap nhiều nhất là LAN. Khi nmap thử gửi raw IP như là ICMP echo request, OS phải xác định được địa chỉ ARP của target IP do đó

--send-ip chỉ định nmap gửi gói tin ở cấp độ IP (chứ không phải raw ethernet) ngay cả khi ta ở trong mạng local.