Phân tích lưu lượng mạng
Giới thiệu
Network Traffic Analysis (NTA) có thể được mô tả là việc kiểm tra lưu lượng mạng để xác định các protocol và port thường xuyên sử dụng, từ đó thiết lập các cơ sở (bình thường) của môi trường mạng, từ đó phát hiện các hành vi bất thường để ứng phó kịp thời, đồng thời cung cấp cái nhìn toàn cảnh và sâu sắc về môi trường mạng doanh nghiệp.

Có 2 mô hình mạng cơ bản mô tả cách mà dữ liệu được xử lý trong quá trình giao tiếp giữa các máy, là OSI và TCP/IP.
Một thuật ngữ khác cần quan tâm là PDU (Protocol Data Units), đây là cách gọi của gói tin dữ liệu được đóng gói ở mỗi layer. Trong đó, dữ liệu của layer sau sẽ luôn bao gồm header và content của layer trước.

Network Traffic Analysis
1. Link Layer Attacks
ARP (Address Resolution Protocol)
Trong môi trường mạng, địa chỉ IP có thể thay đổi, tuy nhiên địa chỉ MAC của mỗi thiết bị là không thay đổi. Link layer sử dụng địa chỉ MAC để gửi dữ liệu đến đúng đích.
Mỗi thiết bị sẽ duy trì một ARP cache để tham chiếu địa chỉ IP với địa chỉ MAC và trong trường hợp một địa chỉ IP không nằm trong ARP cache của thiết bị, nó sẽ sử dụng ARP protocol để "hỏi" toàn mạng (broadcast). Khi thiết bị có địa chỉ IP tương ứng nhận được "câu hỏi" (request), nó sẽ trả lời lại bằng địa chỉ MAC tương ứng của chính mình. Thiết bị "đi hỏi" lúc này nhận được câu "trả lời" (resply) và cập nhật "tin mới" vào ARP cache của nó.
ARP Poisoning & Spoofing
Kỹ thuật tấn công này diễn ra như sau:
- Giả sử có ba máy trong mạng: máy attacker, máy victim và router. Bất kỳ lưu lượng mạng nào từ máy victim cũng phải đi qua gateway của router.
- Kẻ tấn công bắt đầu gửi các ARP reply đến cả máy victim và gateway. Mục đích nhằm thao túng ARP cache ở cả 2 bên: máy victim cho rằng IP của gateway tương ứng với địa chỉ MAC của máy attacker và router cho rằng IP của máy victim tương ứng với địa chỉ MAC của máy attacker.
- Lúc này, ARP cache ở cả máy victim và router có thể tồn tại 2 địa chỉ MAC tương ứng với một IP (một địa chỉ MAC thật, một địa chỉ MAC giả của attacker). Tất cả dữ liệu sẽ bị chuyển hướng đến máy attacker.
- Nếu attacker dựng một proxy để chuyển tiếp bất kỳ lưu lượng nào từ máy victim đến router để thực hiện tấn công Man-in-the-middle.
- Tấn công này có thể được sử dụng để leo thang thành DNS poisoning để chuyển hướng máy victim đến trang web giả mạo hoặc SSL stripping để intercept dữ liệu.

Cách phát hiện tấn công:
- Một host gửi liên tục ARP response cho mọi ARP request
- Trên Wireshark, filter có thể có ích để phát hiện tấn công:
arp.opcode==1(ARP request),arp.opcode==2(ARP reply) vàarp.duplicate-address-detected(duplicate IP cho một địa chỉ MAC phát hiện bởi Wireshark) - Cách phát hiện máy victim, máy đã bị giả mạo địa chỉ MAC bởi attacker: máy victim sẽ có IP nhất quán, trong khi máy attacker có thể có địa chỉ IP khác.
ARP Scanning & Denial-of-Service
Máy attacker gửi số lượng lớn ARP request với hàng loạt địa chỉ IP, thu thập các ARP reply từ các thiết bị tồn tại trong mạng.
Sau khi có được danh sách của các máy tồn tại trong mạng, attacker có thể chuyển hướng qua việc tấn công DoS, thao túng càng nhiều ARP cache của các máy và router càng tốt.
Responding To ARP Attacks
- Tracing and Identification: xác định compromised host vật lý nằm trong mạng, nếu may mắn có thể phát hiện máy attacker điều khiển từ xa.
- Containment: cách ly compromised host bằng cách ngắt kết nối hoặc cô lập
Các cuộc tấn công lớp liên kết thường diễn ra mà không bị phát hiện. Mặc dù chúng có vẻ không đáng kể để xác định và điều tra, nhưng việc phát hiện ra chúng có thể đóng vai trò then chốt trong việc ngăn chặn việc rò rỉ dữ liệu từ các lớp cao hơn của mô hình OSI.
Wireless Protocol Attack (Wi-Fi)
Để theo dõi các frame của giao thức chuẩn 802.11, cần có các hệ thống như WIDS(Wireless Intrusion Detection System)/WIPS (Wireless Intrusion Prevention System) hoặc cấu hình Wi-Fi interface ở monitor mode.
Sử dụng command iwconfig để xem thông tin về Wi-Fi interface.
thune@htb[/htb]$ iwconfig
wlan0mon IEEE 802.11 Mode:Monitor Frequency:2.457 GHz Tx-Power=20 dBm
Retry short long limit:2 RTS thr:off Fragment thr:off
Power Management:off
Để giám sát một interface, ta có thể sử dụng 2 cách: sử dụng Airmon-NG hoặc cấu hình monitor mode cho interface trực tiếp.
Có 2 giá trị cần lưu ý trong mạng không dây là bissd và eissd
- BSSID là địa chỉ MAC của một access point riêng lẻ, được sử dụng để xác định điểm truy cập đó trong mạng.
- ESSID là tên của mạng không dây, cho phép các thiết bị xác định và kết nối với mạng đó.
Deauthentication Attacks
Kẻ tấn công gửi một 802.11 deauthentication frame đến máy victim, thông báo phiên đăng nhập đã hết hạn, đồng thời giải mạo địa chỉ MAC của access point. Máy nạn nhân sau khi nhận được deauthenticate frame, tiến hành quá trình đăng nhập lại. Việc nhận ra sự giả mạo này có thể rất khó khăn nếu môi trường mạng không triển khai với IEEE 802.11w (Management Frame Protection).
Trong các cuộc tấn công quy mô lớn, điều này có thể gây mất ổn định mạng, buộc các thiết bị phải thường xuyên kết nối lại, làm gián đoạn dịch vụ hoặc ngăn người dùng truy cập mạng.
Cách phát hiện loại tấn công này với Wireshark filter:
-
Filter các packet management với
subtype=0và deauthentication frame vớitype_subtype=12(wlan.bssid == xx:xx:xx:xx:xx:xx) and (wlan.fc.type == 00) and (wlan.fc.type_subtype == 12) -
Attacker có thể cố gắng qua mặt IDS bằng cách mở rộng thêm các reason code cho deauthentication frame
(wlan.bssid == F8:14:FE:4D:E6:F1) and (wlan.fc.type == 00) and (wlan.fc.type_subtype == 12) and (wlan.fixed.reason_code == 7) -
Filter các authentication frame (attacker có thể brute-force mật khẩu nhằm cố gắng truy cập vào mạng wireless)
(wlan.bssid == F8:14:FE:4D:E6:F1) and (wlan.fc.type == 00) and (wlan.fc.type_subtype == 0) or (wlan.fc.type_subtype == 1) or (wlan.fc.type_subtype == 11)
Rogue Access Point & Evil-Twin Attacks
Deauthentication Attack chính là bước đệm để attacker tiến hành các tấn công nâng cấp hơn.
Attacker có thể dựng một Rogue Access Point có EISSD giống với Access Point hợp pháp (nhưng sẽ khác BISSD). Sau đó, sử dụng deauthentication attack để buộc các máy victim kết nối lại đến Access Point giả mạo (khai thác lỗ hổng con người), cho phép tấn công ăn cắp thông tin đăng nhập vào Access Point hợp pháp, ăn cắp thông tin nhạy cảm,...
Để phát hiện loại tấn công này, cần dựa vào trường Robust Security Network (RSN) của header 802.11 frame, so sánh kỹ càng giữa header gửi của Access Point hợp lệ và Access Point giả mạo. Sau khi xác định được BISSD của Access Point giả mạo, cần xác định các máy victim đã kết nối đến để tiến hành response.

2. Detecting Network Abnormalities
Giao thức IP là giao thức phổ biến nhất ở Network Layer. Sau đây là ý nghĩa của một số trường trong IP header:
- Length - IP header length: chứa toàn bộ độ dài của IP header
- Total length - IP Datagram/Packet Length: định nghĩa toàn bộ độ dài của gói tin IP, bao gồm cả dữ liệu liên quan.
- Fragment Offset: trong trường hợp gói tin quá lớn, cần phải chia nhỏ để gửi đi, fragmentation offset sẽ được set để cung cấp chỉ dẫn sắp xếp lại gói tin vận chuyển đến đích.
- Source and Destination IP Address: chứa IP source và IP dest.
Trong quá trình phân mảnh (fragmentation), giá trị maximum transmisssion unit (MTU) được sử dụng để chia packet thành các fragment có kích thước bằng nhau, fragment cuối cùng có thể có độ dài nhỏ hơn MTU.

Fragmentation Attacks
Attacker thường lợi dụng cơ chế phân mảnh để thực hiện các mục đích sau:
- IPS/IDS/Firewall Evasion: áp dụng đối với các IDS/IPS/Firewall không lắp ráp các fragment hoàn chỉnh thành packet để kiểm tra. Từ đó, attacker cố gắng phân mảnh packet thật nhỏ để vượt qua.
- Firewall/IPS/IDS Resource Exhaustion: attacker thực hiện phân mảnh packet với MTU rất nhỉ (10, 15, 20, v.v), IPS/IDS/Firewall có thể không lắp ráp các fragment này lại do hạn chế về tài nguyên và attacker có thể sử dụng điều này để thu thập thông tin (enumeration).
- Denial of Service: đối với các host cũ, attacker có thể sử dụng lỗ hổng buffer overflow bằng việc gửi packet có độ dài vượt quá 65535 bytes để gây ra tấn công DoS.
IP Source & Destination Spoofing Attacks
Attacker có thể thiết kế thủ công các packet, thay đổi IP source và IP dest để thực hiện các tấn công sau:
- Decoy scanning: attacker thay đổi IP source thành IP nằm trong subnet với mục tiêu để bypass firewall
- Random Source Attack DDoS: thay đổi IP source liên tục, gửi tập trung vào 1 port của mục tiêu để tấn công DDoS.
- LAND Attacks: gửi packet có IP source và dest giống nhau, mục tiêu sau khi nhận được gọi tin sẽ liên tục gửi phản hồi đến chính nó khiến tài nguyên bị cạn kiệt hoặc dẫn đến crash.
- SMURF Attacks: attacker gửi số lượng lớn gói tin ICMP đến nhiều host với IP source là máy victim. Các host nhận gói tin ICMP lúc này đều phản hồi đến máy victim, gây cạn kiệt tài nguyên.
- Initialization Vector Generation: với các mạng không dây cũ sử dụng Wired Equivalent Privacy (WEP) để mã hoá, attacker có thể khai thác lỗ hổng trong quá trình tạo IV để thực hiện statistical attack để tổng hợp từ vựng bẻ khoá mã hoá. Việc này thực hiện bằng cách capture, giải mã và chỉnh sửa IP source và dest.
TCP Attacks
Các flag trong TCP packet:
| Flags | Mô tả |
|---|---|
| URG (Urgent) | This flag is to denote urgency with the current data in stream. |
| ACK (Acknowledgement) | This flag acknowledges receipt of data. |
| PSH (Push) | This flag instructs the TCP stack to immediately deliver the received data to the application layer, and bypass buffering. |
| RST (Reset) | This flag is used for termination of the TCP connection (we will dive into hijacking and RST attacks soon). |
| SYN (Synchronize) | This flag is used to establish an initial connection with TCP. |
| FIN (Finish) | This flag is used to denote the finish of a TCP connection. It is used when no more data needs to be sent. |
| ECN (Explicit Congestion Notification) | This flag is used to denote congestion within our network, it is to let the hosts know to avoid unnecessary re-transmissions. |
| Attacker có thể sử dụng TCP three-way-handshake để scan port của mục tiêu. Và nhằm trốn tránh các security control, attacker có thể gửi hàng loại TCP packet với SYN flag, không có flag, ACK flag, FIN flag hoặc kết hợp nhiều flag lại với nhau. Việc xác định port có đang mở hay không phụ thuộc vào TCP packet trả về từ mục tiêu. |
TCP Connection Termination: Attacker sẽ giả mạo địa chỉ IP nguồn của một máy trong mạng, gửi gói tin TCP chứa RST flag đến máy mục tiêu để chấm dứt phiên kết nối TCP hiện tại. Điều này có thể phát hiện bằng địa chỉ MAC, vì địa chỉ MAC của attacker sẽ khác với địa chỉ IP nguồn của máy ban đầu. Nhưng nếu, attacker đã thực hiện các tấn công nâng cao hơn như ARP poisoning thì việc này sẽ khó phát hiện hơn.
TCP Connection Hijacking: nâng cao hơn, attacker sẽ theo dõi mục tiêu muốn chiếm đoạt, dự đoán sequence number trong phiên kết nối TCP để inject gói tin theo đúng thứ tự bằng cách giả mạo địa chỉ IP nguồn. Để làm được điều đó, attacker cần chặn gói tin ACK từ máy có IP bị giả mạo. Tấn công này thường được kết hợp với ARP poisoning.

Tunneling
Tunneling là một kỹ thuật được attacker sử dụng để trích xuất dữ liệu. Có nhiều loại tunneling khác nhau sử dụng nhiều protocol khác nhau. Nói chung, attacker sẽ sử dụng proxy để bypass các network control.
SSH Tunneling: ssh -L 9999:remote_server:80 user@ssh_server cho phép chuyển tiếp traffic từ port 9999 trên máy đã bị chiếm trong mạng nội bộ tới c&c_server:80 thông qua ssh_server. Sau khi chiếm quyền kiểm soát host này, attacker có thể sử dụng tunnel để truy cập và trích xuất dữ liệu từ các dịch vụ nội bộ không được public ra bên ngoài.

ICMP Tunneling: thêm dữ liệu vào data field của gói tin ICMP, có thể dễ dàng phát hiện vì data trong gói tin ICMP bình thường thường có độ dài nhỏ, nếu có độ dài lớn, khả năng ICMP Tunneling là rất cao.
3. Application Layer Attacks
HTTP/HTTPs
Directory Fuzzing: sử dụng để thu thập thông tin bằng kỹ thuật brute-force đường dẫn. Trong nhiều trường hợp, attacker có thể tìm kiếm lỗi IDOR thông qua API call.

Có thể phát hiện HTTP request bất thường thông qua Headers
Cross-Site Scripting (XSS) & Code Injection Detection: phát hiện bằng cách quan sát các request URI path chứa các giá trị giống như cookie hay session.
TLS/SSL

Các tấn công được sử dụng có thể bao gồm:
- Denial of Service: việc tính toán mã hoá (cipher suite) cần một lượng tài nguyên ở máy chủ, khi có quá nhiều request có thể gây ra cạn kiệt tài nguyên.
- SSL/TLS Weakness Exploitation: khai thác các thuật toán mã hoá yếu.
- Cryptanalysis: sử dụng renegotiation để thu thập TLS/SSL pattern để statistic analysis.
DNS
Attacker có thể sử dụng DNS tunneling cho các mục đích sau:
- Data Exfiltration
- Command and Control
- Bypassing Firewalls and Proxies
- Domain Generation Algorithms (DGAs)
Attacker có thể lợi dụng các dịch vụ IPFS để che dấu mục đích vì URI của các dịch vụ có dạng:
https://cloudflare-ipfs.com/ipfs/QmS6eyoGjENZTMxM7UdqBk6Z3U3TZPAVeJXdgp9VK4o1Sz
Telnet & UDP
Giám sát các kết nối Telnet có port không tiêu chuẩn (port tiêu chuẩn là 23), các lưu lượng UDP bất thường. UDP thường được sử dụng cho các ứng dụng real-time (video, voice, game online), DNS, DHCP, SNMP (các công cụ network monitoring) và TFTP.