10/05/2008
Nmap mới bổ sung thêm rất nhiều tùy chọn, linh
hoạt hơn với người dùng. Bên cạnh đó hệ thống tài liệu hướng dẫn sử dụng được
viết lại hoàn toàn, tổ chức tốt hơn, phong phú, chi tiết, dễ sử dụng hơn.
Như vậy là sau hai năm phát triển kể
từ lúc phát hành phiên bản 3.50, Nmap 4.0 đã ra lò. Theo thông tin từ
Insecure.org, trong phiên bản này Nmap có khoảng 230 cải tiến (http://www.insecure.org/Nmap/changelog.html).
Một số tính năng nổi bật là Port scan engine được viết lại hoàn toàn, quá trình
quét diễn ra nhanh hơn và tốn ít bộ nhớ. Nmap mới bổ sung thêm rất nhiều tùy
chọn, linh hoạt hơn với người dùng. Bên cạnh đó hệ thống tài liệu hướng dẫn sử
dụng được viết lại hoàn toàn, tổ chức tốt hơn, phong phú, chi tiết, dễ sử
dụng hơn. Trong phạm vi bài viết này, tôi sẽ phân tích một số tính năng mới của
Nmap cũng như so sánh với phiên bản cũ. Chức năng quan trọng, nổi bật nhất của Nmap đó là quét cổng và nhận diện các dịch vụ. Trong phiên bản mới này, Nmap có thểm một số phương pháp mới, đồng thời mở hết các TCP flag cho phép người dùng tùy biến tự tạo kiểu quét cho riêng mình. Chúng ta sẽ điểm qua một số kỹ thuật quét cổng của Nmap.
ACK
scan
Nmap –sA –p22
203.162.168.143
Gửi đi các gói tin TCP chỉ bật cờ ACK, chờ phản hồi từ server
Tùy vào ứng xử của
các loại hệ điều hành: - Hệ điều hành Solaris, Linux không trả gói tin về. - Hệ điều hành Windows trả về các gói tin TCP với cờ RST được bật :
Window
Size Scan Gửi các gói tin TCP chỉ bật cờ ACK, chờ thông tin phản hồi và phán đoán trạng thái của cổng dựa vào giá trị Window Size của gói tin trả về. Ở một số hệ thống, gói tin trả về từ các cổng mở thì Window Size sẽ có giá trị dương( > 0), còn các cổng đóng thì Window Size có giá trị bằng 0. Vì vậy, Nmap sẽ dựa vào giá trị của Window Size của gói tin trả về (nếu có) để phán đoán tình trạng hiện tại của cổng. Tuy nhiên, bạn không nên tin tưởng tuyệt đối vào kỹ thuật này. Chúng ta thử vài ví dụ: Scan www.vietnamnet.vn. Hệ điều hành: Sun Solaris. Kết quả: Không nhận được gói tin phản hồi nào, Nmap kết luận filter
Tạo
các kiểu quét khác bằng cách sử dụng các TCP flag trong TCP Header (--scanflags
)
Ngoài các phương pháp
scan có sẵn, Nmap 4.x còn có thêm khả năng cho phép người dùng tùy biến một
cách linh hoạt 8 bit TCP flag. Các phương pháp quét có sẵn của Nmap đều có
những dấu vết nhất định và từ đây người quản trị hệ thống hình thành nên các bộ
luật cho hệ thống phát hiện xâm nhập. Chính vì lý do này mà các nhà phát triển Nmap
đưa thêm tùy chọn –scanflags cho
phép bạn có thể sáng tạo ra những phương pháp quét cổng mới cho mình.
Giá trị của TCP flag
có thể là số dạng thập phân hoặc danh sách tên(viết liền nhau, có thể không
theo thứ tự) của các bit cờ. Ví dụ: Để gửi đi các gói tin TCP có bật đồng thời
3 bit cờ ACK, PSH và FIN tới sample.com ta có thể dùng:
Nmap –scanflags 25 sample.com
hoặc:
Nmap –scanflags ACKPSHFIN sample.com
(Trong đó 25 là giá trị thập phân ứng với chuỗi 6
bit: 011001)
Kết quả: Nếu như bạn không chỉ định dùng tùy chọn nào khi scan thì mặc định Nmap sẽ sử dụng kiểu -sS tức là SYN scan.
IP Protocol scan là một kiểu quét mới, cho phép bạn
xác định host đích hỗ trợ những giao thức nào(TCP, UDP, ICMP...). Về bản chất
đây không phải là kỹ thuật quét cổng, vì giá trị mà bạn cần xác định ở đây là
danh sách các giao thức - một trường nằm trong IP Header có tên gọi là Protocol Value. Chúng ta lấy ví dụ:
Nmap -sO 203.162.1.169 Do option -sO được chỉ định, Nmap sẽ sử dụng 1 danh sách Protocol Value - Protocol Name được lưu trong file Nmap-protocols nằm trong cùng thư mục với file Nmap.exe.
Tôi dùng Ethereal để bắt các gói tin do Nmap tạo
ra. Kết quả cho thấy, các gói tin IP được tạo ra chỉ bao gồm IP Header và có
giá trị của trường Protocol thay
đổi(được lấy từ file Nmap-protocols).
Các gói tin IP này đều chỉ bao gồm IP Header và độ dài của nó là 20 bytes(Total
Length = 20bytes). Ngoại trừ 3 giá trị của protocol là: 1(ICMP), 6(TCP) và
17(UDP).Nmap sẽ tạo ra ba gói tin đặc biệt là: ICMP Echo Request(Type=8,
code=0), UDP(UDP lengh=8byte) và TCP(SYN = 1). Nếu host đích trả về gói tin
tương ứng với protocol nào thì Nmap sẽ hiển thị trạng thái Open đối với
Protocol đó. Ví dụ:
Trong
trường hợp này, máy tôi nhận được gói tin TCP với cờ RST được bật nên trạng
thái của TCP(6) sẽ là open.Do nhận
được các gói tin ICMP với type=3(Destination Unreachable), code=3(Port
Unreachable) kèm theo "xác" của gói tin UDP đã gửi đi cho nên Nmap
hiện trạng thái của UDP(17) là filtered.
Do có ICMP(Echo reply: type=0, code=0) và ICMP(type=3, code=3) nên trạng thái
của ICMP(1) là open(xem kết quả ở hình trên) Nhận diện các dịch vụ đang chạy và phiên bản tương ứng trên hệ thống
Sau khi sử dụng Nmap
để quét các cổng đang mở trên host đích, Nmap có thể dựa cơ sở dữ liệu về các
dịch vụ Nmap-services để phán đoán xem
cổng đang mở tương ứng với dịch vụ nào. Các bạn có thể tìm thấy file Nmap-services (trong cùng thư mục
với file Nmap.exe) với dấu hiệu nhận dạng của 2200 loại dịch vụ. Kết quả nhận
diện tên dịch vụ thường là chính xác ví dụ port mail server (SMTP) dùng port
25, web server (HTTP) dùng port 80, name server (DNS) port 53. Tuy nhiên,
kết quả này cũng không thể tin tưởng tuyệt đối vì các nhà quản trị có thể dùng
cổng khác thay vì cổng mặc định của một dịch vụ nào đó. Tuy nhiên việc phát
hiện ra dịch vụ nào đang chạy trên hệ thống đích cũng chưa cung cấp cho ta được
nhiều thông tin, cái mà chúng ta quan tâm hơn là phiên bản hiện tại của mail
server, web server, DNS server... là gì. Nếu ta biết được chính xác phiên bản
nào thì sử dụng các mã khai thác sẽ dễ dàng hơn. Đây là chức năng nhận diện
phiên bản của Nmap (Version Detection). Theo Fyodor bước tiến lớn nhất của Nmap ở chức năng nhận diện phiên bản
là số lượng các dấu hiệu nhận dạng. Hiện nay Nmap có 3,153 dấu hiệu nhận dạng
trên tổng số 381 giao thức. Bên cạnh đó, tốc độ và độ chính xác trong dự đoán
của Nmap cũng được cải thiện rất nhiều.
Quá trình nhận diện
phiên bản của Nmap diễn ra như sau: Đầu tiên là quét cổng và nhận diện tên dịch
vụ. Sau đó Nmap sẽ kết nối tới các cổng đang mở, dựa vào các thông tin trả về
(nếu có) ví dụ như banner của dịch vụ Nmap sẽ tiến hành so trùng các thông tin
này với cơ sở dữ liệu Nmap-service-probes
và đưa ra kết luận. Đây là một ví dụ về "dấu hiệu nhận dạng" dịch vụ
trong CSDL Nmap-service-probes Các bạn có thể xem thêm tại đây:
http://www.insecure.org/Nmap/vscan/vscan-fileformat.html
Ví dụ: Tôi dùng Nmap để thăm dò các dịch vụ đang chạy trên server 203.162.1.169,
đồng thời tôi cũng muốn biết phiên bản hiện tại của các phần mềm tương ứng trên
server này:
Kết
quả:
Đầu tiên, Nmap sẽ
tiến hành nhận diện các cổng đang mở và dịch vụ tương ứng. Danh sách các dịch
vụ cũng là một dấu hiệu để Nmap phân biệt các hệ điều hành. Quan sát cho thấy, Nmap
vẫn gặp khó khăn trong việc phân biệt các hệ điều hành của Microsoft. Trong ví
dụ trên, Nmap dự đoán 95% server này chạy hệ điều hành Microsoft Windows 2003
server, tuy nhiên nó vẫn không phân biệt được là Windows 2003 Server SP1 hay
SP2. Đó là do các gói tin trả về từ các hệ điều hành này đều có đặc điểm tương
đồng nhau, không có dấu hiệu khác biệt để Nmap có thể khẳng định chính
xác là phiên bản nào.
Đánh lừa IDS
Chức năng đánh lừa
IDS của Nmap hỗ trợ khá nhiều tùy chọn.
Ví dụ: Nmap –e eth0 –P0 –S 203.162.0.181–g 1234
–ttl 123 –badsum 203.162.1.169
–e eth0: dùng interface có tên là eth0
-P0: không cần gửi các gói tin ICMP echo request để thăm dò
host 203.162.1.169
–S 203.162.0.181: giả mạo địa chỉ IP nguồn là 203.162.0.181
-g : giả mạo địa chỉ cổng nguồn là 1234
--ttl 123: ấn định giá trị TTL trong IP Header là 123
-- badsum: làm sai lệch giá trị của TCP Checksum tức
là làm mất tính toàn vẹn của gói tin TCP
Việc gửi các gói tin
đi với mục đích qua mặt giúp attacker có thể kiểm tra được cách thức hành xử
của IDS với các gói tin này thông qua đó
có thể hình dung ra được được bộ luật mà IDS sử dụng.
Hiện tại, phiên bản
mới nhất của Nmap là 4.01, đây là một bước tiến lớn của Nmap và cộng đồng phát
triển nó. Trả lời phỏng vấn của SecurityFocus, Fyodor cũng cho biết đã có rất
nhiều thành viên của cộng đồng sử dụng Nmap đã tham gia tư vấn và phát triển
công cụ này. Vì vậy, các bạn có thể thấy phiên bản mới này đã được trang bị
thêm rất nhiều tính năng mới, thân thiện, cho phép người sử dụng có thể tùy
biến linh hoạt hơn. Một điều không thể không nhắc tới là tốc độ và hiệu năng
của Nmap cũng đã được cải thiện rất nhiều. Dưới đây là một bảng thống kê so
sánh tốc độ và bộ nhớ sử dụng của Nmap:
Tham khảo:
Nguồn: Sercurity Focus
|























