Ở module 2 chúng ta đã tìm hiểu xong về giai đoạn footprinting – là giai đoạn đầu tiên của việc hacking, giai đoạn này attacker thu được thông tin chính về mục tiêu. Sau đó, attacker sử dụng thông tin này trong giai đoạn scanning để thu thập thêm thông tin chi tiết hơn về mục tiêu đó.
Tổng quan về Network Scanning
Scanning là quá trình thu thập thông tin chi tiết về mục tiêu bằng cách sử dụng các kỹ thuật trinh sát phức tạp và thực hiện một cách chủ động. Network scanning (dò quét mạng) đề cập đến một tập hợp các thủ tục được sử dụng để xác định server, port và các dịch vụ trong mạng. Dò quét mạng cũng được sử dụng để tìm các máy đang hoạt động trong mạng và xác định hệ điều hành đang chạy trên máy mục tiêu.
Đây là một trong những giai đoạn thu thập thông tin tình báo quan trọng nhất đối với attacker, cho phép attacker tạo hồ sơ về mục tiêu. Trong quá trình scanning, attacker cố gắng thu thập thông tin như các IP có thể được truy cập trực tiếp qua mạng internet, thu thập kiến trúc hệ thống và hệ điều hành cũng như các port đang mở cùng với các dịch vụ tương ứng chạy trên mỗi máy tính.
Các loại dò quét
- Port scanning (dò quét cổng): kĩ thuật này nhằm liệt kê các port và dịch vụ đang mở. Port scanning được thực hiện bằng cách gửi một chuỗi các thông báo nhằm cố gắng đột nhập vào bên trong. Port scanning liên quan đến việc kết nối hoặc thăm dò các port TCP và UDP của hệ thống đích để xác định xem các dịch vụ có đang chạy hay không hay có đang ở trạng thái lắng nghe (listening) hay không? Trạng thái lắng nghe cung cấp thông tin về hệ điều hành và ứng dụng hiện đang được sử dụng. Đôi khi, các dịch vụ đang hoạt động đang lắng nghe có thể cho phép attacker tái cấu hình hệ thống hoặc chạy phần mềm có lỗ hổng bảo mật.
- Network scanning (dò quét mạng): liệt kê các server đang hoạt động và IP của chúng nhằm tấn công chúng hoặc đánh giá tính bảo mật của mạng.
- Vulnerability scanning (dò quét lỗ hổng): cho thấy sự hiện diện của các điểm yếu đã biết. Quét lỗ hổng là một phương pháp để kiểm tra xem một hệ thống có thể bị khai thác hay không bằng cách xác định các lỗ hổng của nó. Một chương trình quét lỗ hổng bao gồm một công cụ quét và một danh mục. Danh mục này bao gồm danh sách các file phổ biến có các lỗ hổng đã biết và các cách khai thác phổ biến cho một loạt máy chủ.
Một nguyên tắc chung cho các hệ thống máy tính là số lượng port mở trên hệ thống càng nhiều thì hệ thống càng dễ bị tấn công.
Mục tiêu của Network Scanning
Càng có nhiều thông tin về một tổ chức, thì cơ hội tìm ra các lỗ hổng bảo mật càng cao. Một số mục tiêu của network scanning:
- Tìm các máy kết nối trực tiếp ra internet, địa chỉ IP và các port mở của các máy đó. Sử dụng các port đang mở, attacker sẽ xác định cách tốt nhất để xâm nhập vào hệ thống.
- Xác định hệ điều hành và kiến trúc hệ thống của mục tiêu (như là footprinting). Attacker có thể xây dựng chiến lược tấn công dựa trên các lỗ hổng của hệ điều hành.
- Xác định các dịch vụ đang chạy hoặc đang lắng nghe trên hệ thống đích.
- Xác định các ứng dụng hoặc phiên bản cụ thể của một dịch vụ cụ thể (Ví dụ: Nginx version, Apache version,…).
Network Scanning
TCP Communication Flags
TCP header chứa các cờ khác nhau kiểm soát việc truyền dữ liệu qua kết nối TCP. 6 cờ điều khiển (control flags) TCP quản lý kết nối giữa các máy chủ và đưa ra hướng dẫn cho hệ thống. Bốn trong số các cờ này (SYN, ACK, FIN và RST) chi phối việc thiết lập, duy trì và chấm dứt kết nối. Hai cờ còn lại (PSH và URG) cung cấp hướng dẫn cho hệ thống.
Kích thước của mỗi cờ là 1 bit. Vì có sáu cờ trong phần TCP Flags nên kích thước của phần này là 6 bit. Khi giá trị cờ được đặt thành “1”, cờ đó sẽ tự động được bật.
- SYN (cờ đồng bộ): thông báo việc truyền một số thứ tự (sequence number) mới. Cờ này thường đại diện cho việc thiết lập kết nối (bắt tay ba bước) giữa hai máy chủ.
- ACK (cờ xác nhận): xác nhận việc nhận truyền và xác định số thứ tự dự kiến tiếp theo. Khi hệ thống nhận thành công một gói tin, nó đặt giá trị cờ của nó thành “1”.
- PSH (cờ đẩy): Khi được đặt thành “1”, nó cho biết người gửi đã thực hiện thao tác đẩy tới người nhận; điều này ngụ ý rằng hệ thống từ xa sẽ thông báo cho ứng dụng nhận về dữ liệu được lưu vào bộ đệm đến từ người gửi. Hệ thống tăng cờ PSH khi bắt đầu và kết thúc quá trình truyền dữ liệu và đặt nó trên phân đoạn cuối cùng của tệp để ngăn chặn tắc bộ đệm.
- URG (cờ khẩn cấp): hướng dẫn hệ thống xử lý dữ liệu chứa trong các gói càng sớm càng tốt. Khi hệ thống đặt cờ thành “1”, ưu tiên xử lý dữ liệu khẩn cấp trước tiên và tất cả quá trình xử lý dữ liệu khác sẽ bị dừng.
- FIN (cờ kết thúc): được đặt thành “1” để thông báo kết nối được thiết lập bởi cờ SYN bị chấm dứt.
- RST (cờ đặt lại): khi có lỗi trong kết nối hiện tại, cờ này được đặt thành “1” và kết nối bị hủy do lỗi. Attacker thường sử dụng cờ này để dò quét các máy chủ và xác định các port đang mở.
SYN scanning chủ yếu xử lý ba cờ: SYN, ACK và RST.
Giao tiếp TCP/IP
TCP là giao thức hướng kết nối (connection-ortiented), nghĩa là nó ưu tiên thiết lập kết nối trước khi truyền dữ liệu giữa các ứng dụng. Kết nối này giữa các giao thức có thể thông qua bắt tay ba bước.
Khởi tạo kết nối TCP
Một phiên TCP được khởi tạo sử dụng kỹ thuật bắt tay ba bước như sau:
- Để khởi chạy kết nối TCP, giả sử có máy nguồn (10.0.0.2:21) gửi gói SYN đến máy đích (10.0.0.3:21).
- Khi nhận gói SYN, máy đích sẽ phản hồi bằng cách gửi gói SYN/ACK trở lại máy nguồn.
- Gói ACK xác nhận sự xuất hiện của gói SYN đầu tiên tới máy nguồn.
- Cuối cùng, máy nguồn gửi một gói ACK cho gói ACK/SYN được truyền bởi máy đích.
- Điều này kích hoạt kết nối “OPEN“, do đó cho phép giao tiếp giữa máy nguồn và máy đích, quá trình này tiếp tục cho đến khi một trong số chúng phát ra gói “FIN” hoặc “RST” để đóng kết nối.
Giao thức TCP duy trì kết nối có trạng thái (stateful connection) cho tất cả các giao thức hướng kết nối trên toàn Internet và hoạt động tương tự như giao tiếp qua điện thoại thông thường, trong đó một người nhấc ống nghe điện thoại, nghe âm quay số và quay số sẽ kích hoạt chuông ở đầu dây bên kia cho đến khi có người nhấc máy và nói, “Xin chào.”
Đóng kết nối TCP
Sau khi hoàn thành tất cả quá trình truyền dữ liệu thông qua kết nối TCP đã thiết lập, bên gửi sẽ gửi yêu cầu chấm dứt kết nối đến bên nhận thông qua gói FIN hoặc RST. Khi nhận được yêu cầu kết thúc kết nối, bên nhận xác nhận yêu cầu kết thúc bằng cách gửi gói ACK đến bên gửi và cuối cùng gửi gói FIN của chính nó. Sau đó, hệ thống kết thúc quá trình đóng kết nối.
Một số công cụ dò quét
Công cụ dò quét được sử dụng để quét và xác định máy chủ trực tiếp, port đang mở, dịch vụ đang chạy, thông tin vị trí, thông tin NetBIOS.
nmap
Nmap (Network Mapper) là một công cụ quét bảo mật để thăm dò mạng. Nó cho phép ta quét các port và dịch vụ trên mạng máy tính, tạo ra một “bản đồ” của mạng. Nó gửi các gói tin được thiết kế đặc biệt đến máy mục tiêu và sau đó phân tích các phản hồi. Nó có thể quét các mạng lớn gồm hàng trăm nghìn máy theo đúng nghĩa đen. Nmap bao gồm nhiều cơ chế để quét cổng (TCP và UDP), phát hiện hệ điều hành, phát hiện phiên bản, quét ping,…
Người quản trị mạng có thể sử dụng Nmap để kiểm kê, quản lý lịch nâng cấp dịch vụ và theo dõi thời gian hoạt động của máy chủ hoặc dịch vụ. Còn attacker sử dụng Nmap để trích xuất thông tin nâng cao như fiIters/firewaIIs, chi tiết về địa chỉ MAC và nền tảng hệ điều hành.
Cú pháp sử dụng nmap:
nmap <options> <Target IP address>
hping3
Hping3 là một công cụ tạo gói và dò quét mạng theo định hướng dòng lệnh cho giao thức TCP/IP, nó gửi các ICMP echo request và hỗ trợ các giao thức TCP, UDP, ICMP và raw-IP. Công cụ này có thể kiểm tra an ninh mạng, kiểm tra tường lửa, khám phá MTU, theo dõi nâng cao, footprinting hệ điều hành từ xa, đoán thời gian hoạt động từ xa, kiểm tra TCP/IP stack và các chức năng khác.
Nó có thể gửi các gói TCP/IP tùy chỉnh cũng như xử lý phân mảnh cũng như kích thước và phần thân gói tùy ý và nó có thể được sử dụng để truyền các file được đóng gói theo các giao thức được hỗ trợ. Hping3 cũng có chế độ Traceroute, cho phép attacker gửi tệp giữa các kênh bí mật. Nó cũng có thể xác định xem máy đích có hoạt động hay không ngay cả khi máy đích chặn các gói ICMP.
Một số lệnh trong hping:
ICMP ping
hping3 -1 10.0.0.25
Ping sweep hoặc Internet Control Message Protocol (ICMP) scanning là quá trình gửi ICMP request hoặc ping request tới tất cả các máy chủ trên mạng để xác định những máy chủ đang hoạt động. Hping thực hiện ICMP ping scan bằng cách chỉ định đối số -1
hoặc --ICMP
. Ở lệnh trên, hping gửi ICMP echo request đến 10.0.0.25 và nhận được ICMP response tương tự như công cụ ping.
ACK scan on port 80
hping3 -A 10.0.0.25 -p 80
Hping có thể quét ACK bằng cách chỉ định đối số -A
trong dòng lệnh. Kỹ thuật dò quét này có thể được sử dụng để thăm dò mạng đích có triển khai tường lửa hay không và các rule của tường lửa. Simple packet filtering cho phép thiết lập kết nối (các gói có bit ACK được đặt), còn nếu mạng đích triển khai stateful firewall thì không cho phép thiết lập kết nối.
UDP scan on port 80
hping3 -2 10.0.0.25 -p 80
Hping sử dụng TCP làm giao thức mặc định, để hping hoạt động ở chế độ UDP, các bạn thêm option -2
hoặc -udp
. Hping gửi các gói UDP đến port 80 trên máy (10.0.0.25). Nó sẽ trả về thông báo không thể truy cập cổng ICMP nếu thấy port bị đóng và không trả về thông báo nếu port đang mở.
Collecting Initial Sequence Number
hping3 192.168.1.103 -Q -p 139
Sử dụng đối số -Q
hping sẽ thu thập tất cả các TCP sequence numbers được tạo bởi máy đích (192.168.1.103).
Firewalls and Timestamps
hping3 -S 72.14.207.99 -p 80 --top-timestamp
Nhiều loại firewall có tính năng loại bỏ các gói TCP không có TCP stamp. Do đó ta có thể lợi dụng cách này để thăm dò xem máy đích có được bảo vệ bằng firewall hay không bằng cách thêm đối số --tcp-timestamp
.
SYN scan on port 50-60
hping3 -8 50-60 -S 10.0.0.25 -V
Ta có thể dò quét một loạt các port bằng cách thêm tùy chọn -8
hoặc --scan
. Còn thêm đối số -S
cho phép ta quét SYN.
FIN, PUSH and URG scan on port 80
hping3 -F -P -U 10.0.0.25 -p 80
Các đối số -F
, -P
và -U
dùng để đặt các gói FIN, PUSH và URG. Chức năng của lệnh trên là quét FIN, PUSH và URG trên port 80 trên máy đích (10.0.0.25). Nếu port 80 đang mở thì ta sẽ không nhận được phản hồi. Còn nếu port 80 bị đóng, hping sẽ trả về phản hồi RST.
Scan entire subnet for live host
hping3 -1 10.0.1.x --rand-dest -I eth0
Lệnh trên hping thực hiện dò quét ping ICMP trên toàn bộ IP nằm trong subnet 10.0.1.x. Nó sẽ gửi ngẫu nhiên một ICMP echo request (-rand-dest
) tới tất cả các máy từ 10.0.1.0 đến 10.0.1.255 được kết nối với interface eth0. Các máy có port đang mở sẽ phản hồi bằng ICMP reply. Trong trường hợp này, ta chưa chỉ định port thì mặc định hping gửi các gói đến port 0 trên tất cả các máy nằm trong subnet đó.
Intercept all traffic containing HTTP signature
hping3 -9 HTTP -I ethO
Khi gõ lệnh trên, hping bắt đầu lắng nghe trên port 0 (của tất cả các thiết bị được kết nối trong mạng với interface eth0), chặn tất cả các gói chứa HTTP.
SYN flooding a victim
hping3 -S 192.168.1.1 -a 192.168.1.254 -p 22 --flood
Attacker sử dụng kỹ thuật TCP SYN flooding bằng cách sử dụng các địa chỉ IP giả để tấn công DoS.
Metasploit
Metasploit là một dự án mã nguồn mở hỗ trợ kiểm tra thâm nhập và kiểm tra bảo mật toàn diện cũng như phát triển IDS signature. Nó còn cho phép ta tự động hóa quá trình thăm dò và khai thác. Ta có thể sử dụng Metasploit Pro để quét các port và dịch vụ đang mở, khai thác lỗ hổng, xoay vòng sâu hơn vào mạng, thu thập bằng chứng và xuất report về kết quả đã kiểm tra.
NetScanTools Pro
NetScanTools Pro là một công cụ điều tra cho phép khắc phục sự cố, theo dõi và phát hiện các thiết bị trên mạng của mình. Sử dụng công cụ này, ta có thể dễ dàng thu thập thông tin về mạng LAN cũng như người dùng Internet, địa chỉ IP, port, … Nó giúp attacker liệt kê IPv4/IPv6, hostname, tên miền, email và URL một cách tự động hoặc thủ công.
Ngoài ra còn có một số công cụ dò quét khác:
- Unicornscan
- SolarWinds Port Scanner
- PRTG Network Monitor
- OmniPeek Network Protocol Analyzer
Comments 4