Tuyển dụng
Viettel IDC

Tìm hiểu về tấn công từ chối dịch vụ DoS

19/10/2019

Khái niệm

DoS là tấn công làm Server từ chối các dịch vụ hiện có ví dụ như không tiếp nhận thêm kết nối từ ngoài vào.

Mục đích

  • Cố gắng chiếm băng thông mạng và làm hệ thống mạng bị ngập (flood), khi đó hệ thống mạng sẽ không có khả năng đáp ứng những dịch vụ khác cho người dùng bình thường.
  • Cố gắng làm ngắt kết nối giữa hai máy, và ngăn chặn quá trình truy cập  vào dịch vụ.
  • Cố gắng ngăn chặn những người dùng cụ thể vào một dịch vụ nào đó
  • Cố gắng ngăn chặn các dịch vụ không cho người khác có khả năng truy cập vào.
  • Phá hoại hoặc thay đổi các thông tin cấu hình.
  • Phá hoại tầng vật lý hoặc các thiết bị mạng như nguồn điện, điều hoà…

Các phương thức tấn công

1. SYN attack

Trước hết, bạn hãy xem lại tiến trình bắt tay 3 bước của một kết nối TCP/IP. Một client muốn kết nối đến một host khác trên mạng.

  • Bước 1: client gởi một SYN packet với số Sequence Number ban đầu(ISN) đến host cần kết nối:
    client—–SYN packet—– > host
  • Bước 2: host sẽ phản hồi lại client bằng một SYN/ACK packet, ACK của packet này có giá trị đúng bằng ISN ban đầu do client gởi đã gởi đến host ở bước 1 và chờ nhận một ACK packet từ client:
    host—–SYN/ACK packet—– > client
  • Bước 3: client phản hồi lại host bằng một ACK packet:
    client—–ACK packet—– > host

Khi host nhận được ACK packet này thì kết nối được thiết lập, client vào host có thể trao đổi các dữ liệu cho nhau.

Trong SYN Attack, hacker sẽ gửi đến hệ thống đích một loạt SYN packets với địa chỉ IP nguồn không có thực. Hệ thống đích khi nhận được các bad SYN packets này sẽ gởi trở lại SYN/ACK packet đến các địa chỉ không có thực này vào chờ nhận được ACK messages từ các địa chỉ IP đó. Vì đây là các địa chỉ IP không có thực, hệ thống đích sẽ chờ đợi vô ích và còn nối đuôi các “request” chờ đợi này nào hàng đợi, gây lãng phí một lượng đáng kể bộ nhớ trên máy chủ mà đúng ra là phải dùng vào việc khác thay cho phải chờ đợi ACK messages.

Cách giảm thiểu: Thay đổi cấu hình iptable firewall

  • Chỉnh sửa file: /etc/sysctl.conf
    nano /etc/sysctl.conf
#securing tcp connectionsnet.ipv4.tcp_syncookies=1#reducing timed out to 30net.netfilter.nf_conntrack_tcp_timeout_syn_recv=30
  • Chỉnh sửa iptables firewall
# create new chainsiptables -N syn-flood# limits incoming packetsiptables -A syn-flood -m limit --limit 10/second --limit-burst 50 -j RETURN# log attacksiptables -A syn-flood -j LOG --log-prefix "SYN flood: "# silently drop the restiptables -A syn-flood -j DROP
  • Lưu lại cấu hình:
    service iptables save
  • Khởi động lại iptables firewall:
    service iptables restart

Ngoài ra còn một số cách: Tăng kích thước hàng đợi, giảm khoảng thời gian thiết lập kết nối.
2. Ping of Death

Kiểu tấn công này dùng giao thức ICMP. Có 2 phần quan trọng trong ICMP packet là ICMP ECHO_REQUEST và ICMP ECHO_RESPONSE datagrams và thông thường dùng PING command đế thi hành các hoạt động của ICMP. Khi 1 máy tính gửi ICMP ECHO_REQUEST đến 1 máy nào đó, nếu máy đó đang hoạt động thì nó sẽ gữi trả lại ICMP ECHO_RESPONSE.
Hacker dùng PING program để tạo nên kích thước lớn cho gói tin ICMP (gói gọn trong 1 IP packet), có nhiều cách để gửi ICMP datagrams mà packet mà chỉ bao gồm 8 bits ICMP header infomation, Hacker thuong dùng PING program để gừi những packet lớn hơn 65536 bytes ( vượt qua sự cho phép của TCP/IP)

Khi tấn công bằng Ping of Death một gói tin echo được gửi đi có kích thước lớn hơn kích thước cho phép là 65,536 bytes.Gói tin sẽ bị chia nhỏ ra thành các phần khi máy đích lắp ráp lại thì do gói tin quá lớn với buffer bên nhận nên hệ thống không thể quản lý nổi gây ra bị reboot hoặc bị treo.

Dưới đây là thông tin của TCP dump khi bị tấn công:

8:40:14..690000 192.168.123.101 > 192.168.123.100: icmp echo request (frag 11267:1480@0+) 8:40:14.690000 192.168.123.101 > 192.168.123.100: (frag 11267:1480@1480+) 8:40:14.690000 192.168.123.101 > 192.168.123.100 (frag 11267:1480@5920+) ............................................. 8:40:14. 74000 192.168.123.101 > 192.168.123.100 (frag 11267:1480@65527)

Các bạn để ý sẽ thấy máy có IP 192.168.123.101 gửi 1 ping packet có size là 65527 đến địa chỉ IP192.168.123.100.

Thông thường các hề điều hành đều cài đặt PING program, trong MS-DOS thì có DOS command, MS-NT có Command Promt và Unix có Terminal vvv..

Windows option -l  ping -l 65527 địa chỉ IP của máy nạn nhân
Unix option -s ping -s 65527 địa chỉ IP của máy nạn nhân.

Một số công cụ thực hiện tấn công : Jolt, Sping, ICMP Bug, IceNewk

Cách phòng chống:

  • Cập nhật những bản patch khi những công ty sản xuất về hệ điều hành đưa ra nhắc nhở cho các lỗ hổng mới
  • Cài đặt trên router hoặc firewall block để ngặn chặn một số gói tin có kích thước lớn quá mức

3. LAND

Tấn công LAND cũng gần giống như tấn công SYN, nhưng thay vì dùng các địa chỉ IP không có thực, hacker sẽ dùng chính địa chỉ IP của hệ thống nạn nhân. Điều này sẽ tạo nên một vòng lặp vô tận giữa hệ thống nạn nhân với chính hệ thống nạn nhân đó, giữa một bên chờ nhận ACK messages còn một bên thì chẳng bao giờ gửi ACK messages. Tuy nhiên, hầu hết các hệ thống đều dùng filter hoặc firewall để tránh khỏi kiểu tấn công này! Đây là một dạng tấn công cũ trên các hệ điều hành Windows XP SP2 và Windows Server2003 (sử dụng chương trình Hping)
4. Winnuke

Kiểu tấn công này chỉ có thể áp dụng cho các máy tính đang chạy Windows9x . Hacker sẽ gởi các packet với dữ liệu “Out of Band” đến cổng 139 của máy tính đích. Cổng 139 chính là cổng NetBIOS, cổng này chỉ chấp nhận các packet có flag OOB được bật. Khi máy tính đích nhận được packet này, một màn hình xanh báo lỗi sẽ đến với nạn nhân do chương trình của Windows đã nhận được các packet này, tuy nhiên nó lại không biết được cần phải đối xử với các dữ liệu Out Of Band như thế nào nữa dẫn đến hệ thống sẽ bị crash.
5. Smurf

Điều khiển các agent hay client tự gửi message đến một địa chỉ IP broadcast làm cho tất cả các máy trong subnet này gửi message đến hệ thống dịch vụ của mục tiêu làm gia tăng traffic không cần thiết và làm suy giảm băng thông mục tiêu

Hai nhân tố chính trong Smuft Attack là là các ICMP echo request packets và chuyển trực tiếp các packets đến các địa chỉ broadcast.

  •  Giao thức ICMP thường dùng để xác định một máy tính trên mạng Internet có còn hoạt động(alive) hay không. Để xác định một máy có alive không, bạn cần gởi một ICMP echo request đến máy đó. Khi máy nhận được packet này, nó sẽ gởi trả lại bạn một ICMP echo reply packet. Trong trường hợp bạn không nhận được ICMP echo reply packet, điều này có nghĩa là máy đó không còn hoạt động(not alive). Đây cũng chính là cách hoạt động của các chương trình ping.
  • Mỗi mạng máy tính đều có địa chỉ địa chỉ broadcast và địa chỉ mạng. Địa chỉ broadcast có các bit host đều bằng 0 và địa chỉ broadcast có các bit host đều bằng 1. Ví dụ địa chỉ IP lớp B 140.179.220.200 sẽ có địa chỉ mạng là 140.179.0.0 và địa chỉ broadcast mặc định là 140.179.0.0. Khi một packet được gởi đến địa chỉ broadcast, lập tức packet này sẽ được chuyển đến tất cả các máy trong mạng.

Trong Smurf Attack, cần có ba thành phần: hacker (người ra lệnh tấn công), mạng khuếch đại (sẽ nghe lệnh của hacker) và nạn nhân. Hacker sẽ gởi các ICMP echo request packets đến địa chỉ broadcast của mạng khuếch đại. Điều đặc biệt là các ICMP echo request packet này có địa chỉ IP nguồn chính là địa chỉ IP của nạn nhân. Khi các packet đó đến được địa chỉ broadcast của mạng khuếch đại, lập tức tất cả các máy tính trong mạng khuếch đại sẽ nhận được các packet này.

Các máy này tưởng rằng máy tính nạn nhân đã gởi ICMP echo request packets đến (do hacker đã làm giả địa chỉ IP nguồn), lập tức chúng sẽ đồng loạt gởi trả lại hệ thống nạn nhân các ICMP reply echo request packet. Hệ thống máy nạn nhân sẽ không chịu nổi một khối lượng khổng lồ packet và nhanh chóng bị ngừng hoạt động, crash hoặc reboot. Như vậy, bạn có thể thấy rằng hacker chỉ cần gởi một lượng nhỏ các ICMP echo request packets đi, và hệ thống mạng khuếch đại sẽ khuếch đại lượng ICMP echo request packet này lên gấp bội.
Tỉ lệ khuếch đại phụ thuộc vào số mạng tính có trong mạng khuếch đại. Nhiệm vụ của các hacker là cố chiếm được càng nhiều hệ thống mạng hoặc routers cho phép chuyển trực tiếp các packets đến địa chỉ broadcast và không lọc địa chỉ nguồn của các outgoing packets. Có được các hệ thống này, hacker sẽ dễ dàng tiến hành Smurf Attack trên các hệ thống cần tấn công.

Cách phòng chống:

Đối với cá nhân hay công ty phải biết config máy tính của hệ thống để không biến thành magnj khuếch đại.Khi bị tấn công thì các công ty hoặc cá nhân cần phải phối hợp với ISP nhằm giới hạn lưu lượng của ICMP

  • Đối với các bộ định tuyến:
    • Cisco: vô hiệu hóa bằng lệnh no ip directed-broadcast
    • Đối với thiết bị khác bạn nên tham khảo tài liệu
  • Solaris: bổ sung thêm dòng sau vào:/etc/rc2.d/S69inet
ndd -set /dev/ip

ip_respond_to_echo_broadcast 0

  • Linux :Áp dụng bức tường lửa ở cấp độ nhận thông qua ipfw.
ipfwadm -I -a deny -P icmp -D10.10.10.0 -S 0/0 0 8 ipfwadm -I -a deny -P icmp -D 10.10.10.255-S 0/0 0 8

6. Teardrop

Tất cả các dữ liệu chuyển đi trên mạng từ hệ thống nguồn đến hệ thống đích đều phải trải qua 2 quá trình sau: dữ liệu sẽ được chia ra thành các mảnh nhỏ ở hệ thống nguồn, mỗi mảnh đều phải có một giá trị offset nhất định để xác định vị trí của mảnh đó trong gói dữ liệu được chuyển đi. Khi các mảnh này đến hệ thống đích, hệ thống đích sẽ dựa vào giá trị offset để sắp xếp các mảnh lại với nhau theo thứ tự đúng như ban đầu. Ví dụ, có một dữ liệu gồm 4000 bytes cần được chuyển đi, giả sử rằng 4000 bytes này được chia thành 3 gói nhỏ(packet):

  • packet thứ nhất sẽ mang các 1bytes dữ liệu từ 1 đến 1500
  • packet thứ hai sẽ mang các bytes dữ liệu từ 1501 đến 3000
  • packet thứ ba sẽ mang các bytes dữ liệu còn lại, từ 3001 đến 4000

Khi các packets này đến đích, hệ thống đích sẽ dựa vào offset của các gói packets để sắp xếp lại cho đúng với thứ tự ban đầu: packet thứ nhất – > packet thứ hai – > packet thứ ba
Trong tấn công Teardrop, một loạt gói packets với giá trị offset chồng chéo lên nhau được gởi đến hệ thống đích. Hệ thống đích sẽ không thể nào sắp xếp lại các packets này, nó không điều khiển được và có thể bị crash, reboot hoặc ngừng hoạt động nếu số lượng packets với giá trị offset chồng chéo lên nhau quá lớn!
Hãy xem lại ví dụ trên, đúng ra các packet được gởi đến hệ thống đích có dạng như sau: (1- > 1500 bytes đầu tiên) (1501- > 3000 bytes tiếp theo) (3001- > 4000 bytes sau cùng), trong tấn công Teardrop sẽ có dạng khác: (1- > 1500 bytes) (1501- > 3000 bytes) (1001- > 4000 bytes). Gói packet thứ ba có lượng dữ liệu sai!
7. Slowloris

Là kĩ thuật tương tự như SYN flood (tạo nửa kết nối để làm cạn kiệt tài nguyên máy chủ) nhưng diễn ra ở lớp HTTP (lớp ứng dụng). Để tấn công, tin tặc gửi yêu cầu HTTP đến máy chủ, nhưng không gửi toàn bộ yêu cầu, mà chỉ gửi một phần (và bổ sung nhỏ giọt, để khỏi bị ngắt kết nối). Với hàng trăm kết nối như vậy, tin tặc chỉ tốn rất ít tài nguyên, nhưng đủ để làm treo máy chủ, không thể tiếp nhận các kết nối từ người dùng hợp lệ.

Cách thức tấn công

  • Tạo hoặc tải tệp tin perl: slowloris.pl
  • Cấp quyền thực thi cho tệp tin này: perl chmod +x slowloris.pl
  • Thực thi tệp tin perl : ./slowloris –dns địa chỉ trang web muốn tấn công –port 80 –timeout 1 –num 1000 cache

Cách phòng chống

  • Không dùng Apache nữa! Nếu dùng Apache sau proxy nghịch, thì chỉ cho nghe trên cổng 127.0.0.1 hoặc các IP cục bộ.
  • Giảm Timeout cho Apache.
  • Giới hạn số kết nối đến Apache cho mỗi IP. Có thể dùng mod_qos chẳng hạn để làm việc này.
  • Giải quyết ở lớp dưới: cấu hình firewall để giới hạn số kết nối đến cổng 80 trên mỗi IP.

 Theo SecurityDaily

 

Bình luận ()

Đăng nhập | Đăng ký
để gửi bình luận
Ý kiến của bạn sẽ được xét duyệt trước khi đăng.
Ý kiến của bạn sẽ được xét duyệt trước khi đăng.
Ý kiến của bạn sẽ được xét duyệt trước khi đăng.
Xem thêm bình luận

Tin liên quan

05/11/2026

Lỗi msvcr100.dll là gì? Hướng dẫn cách sửa lỗi msvcr100 dll nhanh chóng

Lỗi msvcr100.dll khiến phần mềm không khởi chạy trên Windows. Xem hướng dẫn khắc phục từng bước để bổ sung thư viện còn thiếu và sửa chữa chương trình bị lỗi.

05/11/2026

Top 20 các extension visual studio code hữu ích cho lập trình viên

Các extension Visual Studio Code hữu ích mở rộng khả năng của trình soạn thảo, giúp lập trình viên tối ưu môi trường làm việc và nâng cao hiệu quả viết mã.

05/11/2026

Bridge là gì? Cách hoạt động và ứng dụng trong mạng LAN

Bridge là gì? Cầu nối mạng hoạt động dựa trên địa chỉ MAC để kết nối các phân đoạn LAN, kiểm soát luồng dữ liệu và hỗ trợ triển khai mạng vật lý lẫn mạng ảo.

05/11/2026

Lỗi Blocked due to other 4xx issue là gì? Nguyên nhân và cách fix lỗi

Lỗi Blocked due to other 4xx issue khiến Google không lập chỉ mục URL, cần xác định đúng mã HTTP và nguyên nhân để khắc phục hiệu quả trong Search Console.

05/11/2026

Test case là gì? Cách viết test case và mẫu minh họa cho người mới

Test case là gì và làm sao để viết rõ ràng, đúng yêu cầu? Nắm vững cách xây dựng trường hợp kiểm thử qua ví dụ cụ thể để phát hiện sai lệch trong hoạt động phần mềm.

05/11/2026

AI Inference là gì? Cơ chế và vai trò trong vận hành AI

AI inference là gì? Cách mô hình AI tạo kết quả sau huấn luyện, phân biệt với AI training, các hình thức triển khai và ứng dụng thực tế trong doanh nghiệp.

05/11/2026

DBeaver là gì? Hướng dẫn cài đặt và kết nối cơ sở dữ liệu với DBeaver

DBeaver là gì? Khám phá tính năng quản lý cơ sở dữ liệu, các phiên bản miễn phí và trả phí cùng hướng dẫn cài đặt, kết nối, chạy truy vấn SQL cho người mới.

05/11/2026

Cách thay đổi mật khẩu máy tính trên Windows 10, 11 đơn giản

Cách thay đổi mật khẩu máy tính trên Windows 10, 11 qua Settings, Control Panel, CMD và các công cụ quản trị được hướng dẫn chi tiết theo từng bước dễ thực hiện.

05/11/2026

Microsoft Management Console là gì? Cách sử dụng MMC cho người mới

Microsoft Management Console là gì? Đây là nền tảng tập hợp các công cụ quản trị Windows, hỗ trợ quản lý hệ thống, thêm snap-in và lưu console theo nhu cầu sử dụng.

05/11/2026

Rủi ro khi sử dụng giả lập online và cách phòng tránh

Rủi ro khi sử dụng giả lập online có thể gây lộ dữ liệu, mất quyền kiểm soát tài khoản, lừa đảo trực tuyến, vi phạm chính sách game, gián đoạn thao tác và phát sinh chi phí.