Sau khi dò quét các host đang chạy, Bước tiếp theo trong quy trình dò quét mạng là kiểm tra xem trên các host đó có các port và service nào đang mở. Người quản trị thường dò quét port để kiểm tra các chính sách bảo mật còn attacker sử dụng kỹ thuật này để nhằm mục đích xâm phạm vào bên trong. Chúng lợi dụng các port đang mở để tấn công.
Phần 4 này mô tả các port phổ biến ứng với các dịch vụ cùng với các công cụ và kỹ thuật dò quét port khác nhau được attacker sử dụng.
Một số port và dịch vụ phổ biến
Name | Port/Protocol | Description |
---|---|---|
echo | 7/tcp, udp | |
discard | 9/ tep, udp | sink null |
systat | 11/tcp | Users |
daytime | 13/ tep, udp | |
netstat | 15/tcp, udp | |
qotd | 17/tcp, udp | Quote |
chargen | 19/tcp, udp | ttytst source |
ftp-data | 20/tcp | ftp data transfer |
ftp | 21/tcp | ftp command |
ssh | 22/tcp | Secure Shell |
telnet | 23/tcp | |
SMTP | 25/tcp | Email server |
time | 37/tcp, udp | Timeserver |
rip | 39/tcp, udp | resource location |
domain | 53/tcp, udp | domain name server |
sql*net | 66/tcp, udp | Oracle SQL*net |
bootps | 67/udp | bootp server |
bootpc | 68/udp | bootp client |
tf tp | 69/udp | Trivial File Transfer |
gopher | 70/tcp | gopher server |
finger | 79/tcp | Finger |
www-http | 80/tcp, udp | WWW |
www-https | 80/tcp | WWW |
kerberos | 88/tcp, udp | Kerberos |
pop2 | 109/tcp | PostOffice V.2 |
Pop3 | 110/tcp | PostOffice V.3 |
sunrpc | 111/tcp, udp | RPC 4.0 portmapper |
auth/ident | 113/tcp, udp | Authentication Service |
audionews | 114/tcp, udp | Audio News Multicast |
nntp | 119/tcp | Usenet Network News Transfer |
ntp | 123/udp | Network Time Protocol |
netbios-ns | 137/tcp, udp | NETBIOS Name Service |
netbios-dgm | 138/tcp, udp | NETBIOS Datagram Service |
netbios-ssn | 139/tcp, udp | NETBIOS Session Service |
imap | 143/tcp, udp | Internet Message Access Protocol |
sql-net | 150/tcp, udp | SQL-NET |
sqlsrv | 156/tcp, udp | SQL Service |
snmp | 161/tcp, udp | SNMP |
snmp-trap | 162/tcp, udp | |
cmip-man | 163/tcp, udp | CMIP/TCP Manager |
cmip-agent | 164/tcp, udp | CM IP/TCP Agent |
ire | 194/tcp, udp | Internet Relay Chat |
at-rtmp | 201/tcp, udp | AppleTalk Routing Maintenance |
at-nbp | 202/tcp, udp | AppleTalk Name Binding |
at-3 | 203/tcp, udp | AppleTalk |
at-echo | 204/tcp, udp | AppleTalk Echo |
at-5 | 205/tcp, udp | AppleTalk |
at-zis | 206/tcp, udp | AppleTalk Zone Information |
at-7 | 207/tcp, udp | AppleTalk |
at-8 | 208/tcp, udp | AppleTalk |
ipx | 213/tcp, udp | Novell |
imap3 | 220/tcp, udp | Interactive Mail Access Protocol v3 |
aurp | 387/tcp, udp | AppleTalk Update-Based Routing |
netware-ip | 396/tcp, udp | Novell Netware over IP |
rmt | 411/tcp, udp | Remote mt |
kerberos-ds | 445/tcp, udp | Microsoft DS |
isakmp | 500/udp | ISAKMP/IKE |
fcp | 510/tcp | First Class Server |
exec | 512/tcp | BSD rexecd(8) |
comsat/biff | 512/udp | Used by mail system to notify users |
login | 513/tcp | BSD rlogind(8) |
who | 513/udp | whod BSD rwhod(8) |
shell | 514/tcp | emd BSD rshd(8) |
syslog | 514/udp | BSD syslogd(8) |
printer | 515/tcp, udp | spooler BSD lpd(8) |
talk | 517/tcp, udp | BSD talkd(8) |
ntalk | 518/udp | SunOS talkd(8) |
netnews | 532/tcp, udp | Readnews |
uucp | 540/tcp, udp | uucpd BSD uucpd(8) |
klogin | 543/tcp, udp | Kerberos Login |
kshell | 544/tcp, udp | Kerberos Shell |
ekshell | 545/tcp | kremd Kerberos encrypted remote shell -kfall |
pcserver | 600/tcp | ECD Integrated PC board srvr |
mount | 635/udp | NFS Mount Service |
penf s | 640/udp | PC-NFS DOS Authentication |
bwnf s | 650/udp | BW-NFS DOS Authentication |
flexlm | 744/tcp, udp | Flexible License Manager |
kerberos-adm | 749/tcp, udp | Kerberos Administration |
kerberos | 750/tcp, udp | kdc Kerberos authentication |
kerberosjnaster | 751/tcp, udp | Kerberos authentication |
krb_prop | 754/tcp | Kerberos slave propagation |
applix | 999/udp | Applixware |
socks | 1080/tcp, udp | Socks Proxy |
kpop | 1109/tcp | Pop with Kerberos |
ms-sql-s | 1433/tcp, udp | Microsoft SQL Server |
ms-sql-m | 1434/tcp, udp | Microsoft SQL Monitor |
pptp | 1723/tcp, udp | Pptp |
nf s | 2049/tcp, udp | Network File System |
eklogin | 2105/tcp | Kerberos encrypted rlogin |
rkinit | 2108/tcp | Kerberos remote kinit |
kx | 2111/tcp | X over Kerberos |
kauth | 2120/tcp | Remote kauth |
lyskom | 4894/tcp | LysKOM (conference system) |
sip | 5060/tcp | Session Initiation Protocol |
sip | 5060/udp | Session Initiation Protocol |
xll | 6000-6063/tcp,udp | X Window System |
ire | 6667/tcp | Internet Relay Chat |
Kỹ thuật dò quét port (port scanning)
Port scanning được phân loại như hình dưới đây. Việc phân loại này dựa trên loại giao thức được sử dụng để giao tiếp với nhau trong mạng.
TCP Scan
TCP Connect/Full-Open Scan
TCP Connect/Full Open Scan là một trong những phương pháp quét TCP tin cậy nhất. Trong quá trình quét TCP Connect, lời gọi hệ thống connect() của hệ điều hành sẽ mở một kết nối tới các port trên máy mục tiêu. Nếu port đang lắng nghe, lời gọi connect() sẽ thành công với máy đích trên port đó. Nếu không, nó sẽ trả về thông báo lỗi cho biết không thể truy cập port này.
Trong quá trình bắt tay ba bước của TCP, máy client sẽ gửi một gói SYN mà người nhận xác nhận lại bằng một gói SYN+ACK. Sau đó, máy client xác nhận gói SYN+ACK bằng gói ACK để hoàn tất kết nối. Khi quá trình bắt tay hoàn tất, máy scanner sẽ gửi một gói RST để kết thúc kết nối.
Thực hiện lệnh gọi connect() cho từng port sẽ gây mất thời gian và tiêu tốn tài nguyên. Attacker có thể tăng tốc quá trình quét bằng cách sử dụng nhiều socket song song. Sử dụng tính năng non-blocking, I/O cho phép attacker đặt khoảng thời gian chờ ngắn hơn và theo dõi đồng thời tất cả các socket tại một thời điểm. Trong Zenmap, tùy chọn -ST
được sử dụng để thực hiện TCP Connect/Full-Open Scan.
Hạn chế của kiểu dò quét này là nó dễ bị phát hiện do máy mục tiêu sẽ bị ghi log lại.
Stealth Scan (Half-Open Scan)
Stealth Scan hay còn gọi là dò quét tàng hình. Quá trình dò quét này liên quan đến việc thiết lập lại kết nối TCP một cách đột ngột giữa máy client và server trước khi hoàn tất bắt tay ba bước, do đó làm cho kết nối ở trạng thái “nửa mở”. Quá trình quét tàng hình sẽ gửi một frame duy nhất đến một TCP port mà không thực hiện bắt tay ba bước. Nó gửi một frame duy nhất với kỳ vọng nhận được một phản hồi duy nhất. Quá trình quét này mở một phần kết nối nhưng dừng lại giữa chừng. Stealth scan còn được gọi là “SYN scan” vì nó chỉ gửi gói SYN.
Quá trình quét tàng hình cũng có cơ chế bắt tay ba bước.
- Máy client gửi một gói SYN duy nhất đến server trên port thích hợp.
- Nếu port đang mở, server sau đó sẽ phản hồi bằng gói SYN/ACK.
- Nếu server phản hồi bằng một gói RST, thì port trên server đang ở trạng thái đóng.
- Client gửi gói RST để đóng quá trình khởi tạo trước khi có thể thiết lập kết nối.
Trong Zenmap, tùy chọn -sS
được sử dụng để thực hiện quét Stealth Scan.
Inverse TCP Flag Scan
Trong kiểu tấn công đảo ngược cờ TCP, attacker sẽ gửi các gói thăm dò TCP có cờ TCP (FIN, URG, PSH) hoặc không có cờ. Khi port mở, attacker sẽ không nhận được phản hồi, còn khi port đóng, attacker sẽ nhận được RST từ máy mục tiêu.
Theo RFC 793, một gói RST/ACK được gửi để thiết lập lại kết nối khi máy đích đóng một port. Attacker sẽ tận dụng tính năng này để gửi các gói thăm dò TCP đến từng port của máy đích với nhiều cờ TCP khác nhau. Các cấu hình cờ phổ biến được sử dụng cho gói tin thăm dò bao gồm:
- Gói tin thăm dò FIN với cờ FIN TCP được đặt
- Gói tin thăm dò Xmas với các cờ TCP FIN, URG và PUSH được đặt
- Gói tin thăm dò NULL không có cờ TCP nào được đặt
- Gói tin thăm dò SYN/ACK
Tất cả các port đã đóng trên máy đích sẽ gửi phản hồi RST/ACK. Do các hệ điều hành như Windows hoàn toàn bỏ qua tiêu chuẩn RFC 793 nên ta có thể không thể thấy phản hồi RST/ACK khi được kết nối với một port đã đóng trên máy đích. Tuy nhiên, kỹ thuật này có hiệu quả khi được sử dụng để dò quét các hệ điều hành dựa trên UNIX.
Về ưu điểm, kỹ thuật này tránh được nhiều hệ thống IDS cũng như hệ thống ghi log.
Về nhược điểm:
- Yêu cầu quyền truy cập vào socket mạng và đặc quyền super-user.
- Chỉ hiệu quả trên các máy UNIX có bản phối BSD, và đặc biệt không khả quan đối với hệ điều hành Windows.
Lưu ý: Quét cờ TCP đảo ngược được gọi là quét FIN, URG và PSH dựa trên giá trị cờ được đặt trong gói thăm dò. Nếu không có cờ nào được đặt, nó được gọi là NULL scan. Nếu chỉ đặt cờ FIN, nó được gọi là FIN scan và nếu tất cả cờ FIN, URG và PSH được đặt, nó được gọi là Xmas scan.
Xmas Scan
Xmas Scan là một loại kỹ thuật TCP scanning đảo ngược với các cờ FIN, URG và PUSH được đặt. Nếu port trên máy đích mở, thì chúng ta sẽ không nhận được phản hồi còn nếu port đóng, thì ta sẽ nhận được phản bằng gói tin RST. Khi tất cả các cờ được đặt, một số hệ thống sẽ bị treo; do đó, các cờ thường được đặt theo “mẫu vô nghĩa” URG-PSH-FIN. Kỹ thuật quét này chỉ hoạt động khi hệ thống tuân thủ khi triển khai TCP/IP dựa trên RFC 793 và vô nghĩa khi scan máy tính chạy Windows. Khi scan máy Windows, ta sẽ thấy tất cả các port đều được mở.
Trong Zenmap, option -sX
được sử dụng để thực hiện Xmas scan trong khi các option -sF
và -sN
được sử dụng để quét FIN và quét NULL.
ACK Flag Probe Scan
Attacker gửi các gói thăm dò TCP với cờ ACK gán giá trị bằng 1 tới máy đích, sau đó phân tích thông tin header (giá trị TTL và WINDOW) của các gói RST nhận được để xác định xem port đang mở hay đóng. Kỹ thuật scan này cũng chỉ có hiệu quả trên các hệ điều hành và các bản phân phối BSD.
TTL-Based ACK Flag Probe Scanning
Trong kỹ thuật quét, trước tiên ta cần gửi các gói thăm dò ACK (vài nghìn gói) đến các port TCP khác nhau, sau đó phân tích giá trị TTL của các gói tin RST nhận được. Trong Zenmap, ta sử dụng cú pháp nmap -ttl [time] [target]
để quét TTL-Based ACK Flag Probe Scanning.
Nếu giá trị TTL của gói tin RST trả về nhỏ hơn 64 thì port đó đang mở. Một ví dụ hiển thị log của bốn gói tin RST đầu tiên nhận được như hình bên dưới:
Trong ví dụ này, port 22 trả về giá trị TTL là 50, nhỏ hơn 64, mặt khác tất cả các port khác trả về giá trị TTL là 80, lớn hơn 64. Do đó, port 22 đang mở.
Window-Based ACK Flag Probe Scanning
Cũng tương tự như TTL-based, trước tiên ta gửi các gói thăm dò ACK đến các port TCP khác nhau, sau đó phân tích giá trị Window của các gói RST nhận được. Trong Zenmap, option -sW
được sử dụng để thực hiện Window-based scanning.
Nếu giá trị trường Window của gói tin RST trả về trên một port cụ thể khác 0, thì port đó đang mở.
Hình trên cho thấy giá trị TTL trả về là như nhau (64) do đó kỹ thuật TTL-Based scanning không còn ý nghĩa. Từ đó ta quan sát giá trị Window thì thấy gói thứ ba có giá trị là 512 (khác 0) nên ta có thể đoán được port 22 đang mở. Nếu không có gói phản hồi kể cả sau nhiều lần truyền lại và trả về lỗi không thể truy cập ICMP (loại 3, code 1, 2, 3, 9,10 hoặc 13), thì port đó có thể được filter bởi tường lửa.
Tuy nhiên phương pháp này có một hạn chế lớn là cực kỳ chậm và chỉ có thể khai thác các hệ điều hành cũ.
Kiểm tra hệ thống lọc gói tin của mục tiêu
Kỹ thuật ACK Flag Probe Scanning cũng giúp kiểm tra hệ thống lọc gói tin của mục tiêu. Attacker gửi một gói thăm dò ACK để kiểm tra cơ chế lọc (tường lửa). Gói ACK có sequence number ngẫu nhiên và nếu không nhận được phản hồi thì có nghĩa là port đã được bảo vệ bởi tường lửa, còn nếu có gói tin phản hồi RST nghĩa là port không được lọc (không có tường lửa).
ACK Flag Probe Scanning sử dụng công cụ Nmap
Trong Zenmap, sử dụng option -sA
để quét thăm dò cờ ACK.
UDP Scan
UDP Raw ICMP Port Unreachable Scanning
UDP scan có thể khó sử dụng hơn TCP scan vì ta không thể xác định xem máy đích có online hay không. Nếu gửi một gói UDP đến một port mà không có ứng dụng nào đang chạy, IP stack sẽ trả về một gói tin không thể truy cập port ICMP. Nếu có bất kỳ port nào trả về lỗi ICMP, chứng tỏ port đó bị đóng, còn nếu không trả lời thì có thể chúng đang mở hoặc được lọc bởi tường lửa.
Trong Zenmap, option -sU
được sử dụng để thực hiện quét UDP.
Ngoài ra, UDP scan cung cấp ít thông tin hơn TCP scan. Nếu cần thêm thông tin về version, cần bổ sung với option -sV
hoặc nếu muốn lấy thông tin hệ điều hành thì sử dụng -O
. Quét UDP đặc quyền (privileged access); do đó chỉ khả dụng trên các hệ thống có quyền của người dùng phù hợp. Hầu hết các hệ thống mạng đều có lưu lượng TCP lớn nên hiệu quả quét UDP là khá thấp.
SCTP Scanning
SCTP INIT Scan
Giao thức truyền tải điều khiển luồng (Stream Control Transport Protocol – SCTP) là một giao thức tầng vận chuyển hướng thông điệp. Nó được sử dụng để thay thế cho các giao thức TCP và UDP vì các đặc điểm của nó tương tự như của TCP và UDP. SCTP được sử dụng để thực hiện các hoạt động đa luồng. Một số ứng dụng của SCTP như xác định các dịch vụ liên quan đến VoIP, hay hệ thống 7/SIGnaling TRANsport (SS7/SIGTRAN). Hình bên dưới là quá trình bắt tay bốn bước của SCTP.
Trong SCTP, việc quét INIT rất nhanh chóng bằng cách quét hàng nghìn cổng mỗi giây. Quét SCTP INIT rất giống với quét TCP SYN, làm cho kết nối nửa mở (half-open). Attacker gửi INIT chunk đến máy mục tiêu. Nếu port đang lắng nghe hoặc đang mở, nó sẽ gửi xác nhận dưới dạng INIT+ACK chunk.
Nếu mục tiêu không online hoặc port không mở, thì mục tiêu sẽ gửi xác nhận dưới dạng đoạn ABORT.
Sau vài lần truyền lại, nếu vẫn không có phản hồi hoặc phản hồi exception là ICMP unreachable (loại 3, mã 0,1, 2, 3, 9,10 hoặc 13) thì port đó có thể đang được bảo vệ bởi tường lửa. Trong Zenmap, tùy chọn -sY
được sử dụng để thực hiện quét SCTP INIT.
SCTP COOKIE ECHO Scan
SCTP COOKIE ECHO Scan là một loại dò quét cao cấp hơn. Trong kiểu quét này, attacker gửi đoạn COOKIE ECHO đến mục tiêu và nếu port mục tiêu đang mở, nó sẽ âm thầm thả các gói tin vào port đó và ta sẽ không nhận được bất kỳ phản hồi nào từ mục tiêu. Nếu mục tiêu gửi lại phản hồi đoạn ABORT, thì port đó đã đóng. COOKIE ECHO chunk không bị chặn bởi stateless firewall (tường lửa phi trạng thái) như trong quá trình quét INIT. Chỉ IDS mới có thể phát hiện SCTP COOKIE ECHO scan. Trong Zenmap, option -sZ
được sử dụng để thực hiện quét SCTP COOKIE ECHO.
SSDP Scan
Simple Service Discovery Protocol (SSDP) là một giao thức mạng thường giao tiếp với các máy khi truy vấn chúng bằng các địa chỉ routable multicast IPv4 hoặc IPv6. SSDP kiểm soát giao tiếp cho tính năng Universal Plug and Play (UPnP). SSDP sẽ phản hồi truy vấn được gửi qua địa chỉ multicast IPv4 hoặc IPv6. Phản hồi này bao gồm thông tin về tính năng UPnP được liên kết với nó. Attacker sử dụng kỹ thuật này để phát hiện các lỗ hổng UPnP nhằm khai thác buffer-over-flow hoặc tấn công DoS.
IPv6 Scan
IPv6 tăng kích thước của không gian địa chỉ IP từ 32 bit lên 128 bit. Các kỹ thuật dò quét mạng truyền thống ít khả thi hơn trong trường hợp này về mặt tính toán do không gian tìm kiếm lớn hơn. Ngoài ra, một số công cụ dò quét không hỗ trợ ping scanning trên IPv6. Attacker cần thu thập IPv6 từ traffic mạng, log, hoặc email để xác định IPv6 của mạng đích.
Tuy nhiên, attacker phải cần phân tích 2^64 địa chỉ để xác định xem một service có đang chạy trên máy trong mạng con đó hay không. Với tốc độ vừa phải là một probe mỗi giây, sẽ mất khoảng 5 tỷ năm để hoàn thành. Attacker có thể sử dụng Nmap để thực hiện quét IPv6. Trong Zenmap, tùy chọn -6
được sử dụng để thực hiện dò quét IPv6.
Bài tiếp theo chúng ta sẽ tiếp tục tìm hiểu về kỹ thuật dò quét để xác định phiên bản của dịch vụ đang chạy trên máy đích cũng như hệ điều hành của nó.
Comments 2