Bước tiếp theo sau khi phát hiện ra hệ điều hành của mục tiêu đó là dò quét mạng mà không bị các vành đai bảo mật mạng như tường lửa và IDS phát hiện. IDS và tường lửa là cơ chế bảo mật hiệu quả; tuy nhiên, chúng vẫn có một số hạn chế về bảo mật.
Một số nội dung trong phần này:
- Quét né tránh IDS/tường lửa bằng nhiều kỹ thuật trốn tránh khác nhau
- Tạo các gói tin tùy chỉnh bằng cách sử dụng Colasoft Packet Builder
- Tạo các gói UDP và TCP tùy chỉnh bằng cách sử dụng Hping3
- Duyệt ẩn danh bằng Proxy Switcher
- Duyệt web ẩn danh bằng CyberGhost VPN
Hệ thống phát hiện xâm nhập (IDS) và tường lửa là các cơ chế bảo mật nhằm ngăn chặn những đối tượng cụ thể không được phép truy cập vào mạng. Tuy nhiên, ngay cả IDS và tường lửa cũng có một số hạn chế về bảo mật. Một số kỹ thuật né tránh tường lửa như mình đã giới thiệu ở bài trước như:
- Phân mảnh gói: Gửi các gói thăm dò bị phân mảnh đến mục tiêu đã định, mục tiêu này sẽ tập hợp lại nó sau khi nhận được tất cả các mảnh
- Định tuyến nguồn: Chỉ định đường dẫn định tuyến cho gói không đúng định dạng để đến được mục tiêu đã định
- Mồi nhử IP: Tạo hoặc chỉ định thủ công địa chỉ IP của mồi nhử để IDS/tường lửa không thể xác định địa chỉ IP thực
- Giả mạo địa chỉ IP: Thay đổi địa chỉ IP nguồn để che giấu nguồn tấn công
- Tạo các gói tùy chỉnh: Gửi các gói tùy chỉnh để quét mục tiêu dự kiến bên ngoài tường lửa
- Randomizing Host Order: Quét số lượng máy chủ trong mạng mục tiêu theo thứ tự ngẫu nhiên
- Gửi giá trị checksum không chính xác: Gửi các gói có giá trị TCP/UPD checksum bị sai đến mục tiêu dự định
- Sử dụng proxy server: Sử dụng một chuỗi proxy server để ẩn IP thực
- Ẩn danh: Sử dụng công cụ ẩn danh cho phép họ vượt qua kiểm duyệt Internet và tránh các quy tắc tường lửa và IDS
Kỹ thuật né tránh tường lửa và IDS
Ở phần này mình chuẩn bị hai máy ảo là Kali Linux và Windows 10. Máy Kali Linux đóng vai trò là máy tấn công và Windows 10 là máy victim. Tại máy Windows 10, các bạn bật Firewall giúp mình.
Tiếp theo, cũng trên Windows 10, các bạn tải và bật phần mềm Wireshark để bắt gói tin.
Phân mảnh gói tin sử dụng nmap
Trên máy Kali Linux, các bạn mở Terminal và gõ lệnh:
nmap -f <IP máy Windows>
Trong đó option -f
dùng để phân mảnh gói tin thành những mảnh nhỏ. Khi các gói này đến máy đích, IDS và tường lửa thường đưa các gói này vào hàng đợi và xử lý từng gói một. Tuy nhiên, do phương pháp xử lý này liên quan đến mức tiêu thụ CPU cũng như tài nguyên mạng lớn nên hầu hết IDS bỏ qua viêc kiểm tra này để chống lãng phí tài nguyên.
Kali đã dò quét máy Windows 10 thành công và phát hiện máy Windows đang bật cùng với port 53 đang mở. Ngoài ra còn tìm được địa chỉ MAC là 00:50:56:E6:94:88 là địa chỉ MAC của VMware.
Ta quay lại máy Windows, mở phần mềm Wireshark lên, ta có thể dễ dàng thấy được các gói tin bị phân mảnh hiển thị như hình bên dưới:
Source Port Manipulation
Tiếp theo ta sẽ thử với phương pháp Source Port Manipulation, tức là đánh lừa số port thật với bằng số port phổ biến. Đây cũng là một trong những kỹ thuật né tránh tường lửa và IDS, kỹ thuật này hữu ích khi tường lửa cho phép các gói từ các port thông dụng như HTTP, DNS, FTP, … đi qua.
Trên máy Kali, gõ lệnh:
nmap -g 80 <IP máy Windows>
Trong đó, option -g
hay --source-port
dùng để thực hiện kỹ thuật này. Kết quả trên Wireshark ta có thể quan sát các gói TCP có port số 80 được sử dụng để quét các port khác của máy đích:
Phân mảnh gói tin bằng cách thay đổi MTU
Trên Kali Linux, gõ lệnh:
nmap -mtu 8 <IP máy Windows>
Với option -mtu 8
là ta chỉ định giá trị Maximum Transmission Unit (MTU) là 8 bytes. Sử dụng MTU, các gói sẽ được chia nhỏ thành các mảnh có độ lớn tối đa bằng giá trị MTU thay vì gửi một gói hoàn chỉnh.
Trong phần mềm Wireshark, ta có thể quan sát các gói bị phân mảnh có độ dài tối đa là 8 byte:
Mồi nhử IP
Tiếp theo trong Kali Linux, gõ:
nmap -D RND:10 <IP máy đích>
Trong đó -D
để thực hiện quét mồi nhử (IP decoy) và RND
là tạo địa chỉ IP ngẫu nhiên (ở đây lấy giá trị là 10). Kỹ thuật này khiến IDS/tường lửa khó xác định địa chỉ IP nào đang thực sự dò quét và IP nào là mồi nhử. Trên Wireshark:
Ta có thể thấy IP nguồn là các IP public giả mạo.
Giả mạo địa chỉ MAC
Trên Kali Linux, gõ lệnh:
nmap -sT -Pn -spoof-mac 0 [Target IP Address]
Trong lệnh này, -spoof-mac 0
đại diện cho việc ngẫu nhiên hóa địa chỉ MAC, -sT
thực hiện quét TCP connect/full open scan, -Pn
được sử dụng để bỏ qua quá trình host discovery.
Trên Wireshark:
Tạo gói tin tùy chỉnh
Tạo gói tin tùy chỉnh sử dụng Colasoft Packet Builder
Colasoft Packet Builder là một công cụ cho phép tạo các gói tin tùy chỉnh để đánh giá an ninh mạng. Nó cũng cung cấp sẵn các gói TCP và ta chỉ cần thay đổi các tham số trong decoder editor, hexadecimal editor, hay ASCII editor để tạo gói. Ngoài việc xây dựng các gói, Colasoft Packet Builder hỗ trợ lưu các gói vào các file gói và gửi các gói tin đó ra mạng.
Trên máy Windows 10, trước tiên các bạn bật Wireshark như phần trước, sau đó cài đặt phần mềm Colasoft Packet Builder và mở lên. Lưu ý các bạn nhớ chọn Run as administrator để tránh bị lỗi Adapter. Sau khi cửa sổ mở lên, mình bấm vào Add trên thanh công cụ. Hộp thoại Add Packet xuất hiện và các bạn chọn Select Template là ARP Packet, với Delta Time là 0.1 second như hình bên dưới.
Sau khi bấm OK, một gói tin sẽ xuất hiện ở mục Packet List ở bên phải, ta có thể chỉnh sửa gói tin bằng hai mục Decode Editor và Hex Editor (như khoanh đỏ) ở hình bên dưới:
- Decode Editor: cho phép chỉnh sửa thông tin giải mã gói tin bằng cách nhấp đúp vào mục mà ta muốn giải mã.
- Hex Editor: hiển thị nội dung gói thực tế với giá trị thập lục phân thô ở bên trái và ASCII tương đương ở bên phải.
Trong cửa sổ Send Selected Packets, chọn tùy chọn Burst Mode (no delay between packets) tức là liên tục và không có độ trễ giữa các gói, rồi bấm Start.
Khi gói ARP này được quảng bá trong mạng, các máy đang hoạt động sẽ nhận được gói và một số máy bắt đầu phản hồi bằng một phản hồi ARP. Kết quả trên Wireshark như sau:
Tạo gói tin tùy chỉnh sử dụng 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.
Các bạn xem thêm về hping3 tại bài viết Module 3 – Phần 1 – Network Scanning là gì?
Ở đây ta tiếp tục sử dụng 1 máy Kali Linux là máy attacker và máy victim sử dụng Windows 10 và chạy Wireshark để bắt gói tin. Trên máy Kali Linux, gõ lệnh:
hping3 [Target IP Address] --udp --rand-source --data 500
Với option --udp
chỉ định sẽ gửi các gói UDP đến máy đích, --rand-source
bật chế độ IP nguồn ngẫu nhiên và --data
chỉ định kích thước thân gói.
Trên Wireshark, ta mở một gói tin UDP bất kỳ, quan sát giá trị Data đúng bằng 500 bytes,
Tiếp theo ta gõ lệnh:
hping3 -S [Target IP] -p 80 -c 5
Trong lệnh này, -S
chỉ định gửi TCP SYN request, -p
chỉ định số port để gửi lưu lượng và -c
là số lượng gói được gửi đến máy đích. Trong kết quả, có 5 gói đã được gửi và nhận qua port 80.
Chuyển qua Wireshark, ta thấy bắt được 5 gói tin màu đỏ như hình dưới:
Tiếp tục gõ lệnh:
hping3 [Target IP Address] --flood
Lệnh này thực hiện tấn công TCP flooding (tràn TCP), khi máy đích bị tràn thì sẽ không gửi phản hồi về cho máy tấn công.
Trên Wireshark, ta thấy chỉ trong vài giây đã bắt được hàng triệu gói tin.
Attacker thường sử dụng kỹ thuật tràn TCP SYN để tấn công DoS vào mục tiêu. Nếu tài nguyên máy mục tiêu không đủ lớn thì sẽ bị treo và bị mất tính sẵn sàng.