Chương trình DDoS điển hình:TFN (Tribe Flood Network)

Một phần của tài liệu tìm hiểu tấn công ddos và cách phòng chống (Trang 41)

Malicious TCP

2.5.4.2.Chương trình DDoS điển hình:TFN (Tribe Flood Network)

TFN là một chương trình tấn công từ chối dịch vụ phân tán ra đời vào năm 1999, hoạt động trên hệ điều hành Unix, cùng phát triển với nó là Trin00, cũng là một chương trình DDoS ra đời đầu tiên (giới thiệu ở trên). Mã nguồn TFN xây dựng gồm 2 tập tin nhị phân chính, một đóng vai trò Client (nó được điều khiển bởi attacker), một đóng vai trò Deamon (nằm trên máy bị thỏa hiệp – compromised). TFN có khả năng khởi phát tấn công với nhiều loại: ICMP Flood, SYN Flood, UDP Flood Smurf attack, cũng như cung cấp một cổng

TCP với đặc quyền root (quyền cao nhất trong Unix)

Bằng cách khai thác một lỗ hổng về bảo mật, attacker có thể chèn tập tin nhị phân TFN Daemon và điều khiển nó thông qua TFN Client (TFN Client cũng giống như TFN Deamon, cũng là một tập tin sẽ bị lây nhiễm trên một máy tính nào đó, nhưng nó đóng vai trò trung gian là điều khiển các máy Daemon nhằm tăng thêm tính “bảo mật” cho attacker). Về nguyên thủy, những Daemon này sẽ bị điều khiển dựa trên những tập lệnh truy xuất từ xa (remote command shells). Đối với một attacker chuyên nghiệp (experience attacker), họ có thể thay đổi mã nguồn với mật khẩu khác, phương thức tấn công khác hay những dấu hiệu khác.

Hiện tại, cả hai Client và Daemon đều chạy trên môi trường Unix cũng như Linux. Nó tuân theo mô hình tấn công từ chối dịch vụ phân tán, đó là: attaker(s) client(s) daemon(s) victim(s).

Mã nguồn TFN có 2 tập tin chính: “tribe.c” làm client và “td.c” làm daemon. Attacker sẽ điều khiển một hoặc nhiều client, client sẽ điều khiển một hoặc nhiều daemon. Những daemon này sẽ trực tiếp xây dựng những gói tin (packet) phục vụ cho mục đích tấn công, đồng loạt tấn công vào một hay nhiều mục tiêu (victim) do client yêu cầu.

G

i a o ti ế p:

Điều khiển từ xa của mạng TFN được thực hiện bởi chương trình client thông qua dòng lệnh, nó xác lập nhiều phương thức kết nối với daemon, chẳng hạn như; tập lệnh truy xuất từ xa dựa trên cổng TCP, hay tập lệnh từ xa theo mô hình client/server dựa trên UDP, hoặc ICMP như LOKI, phiên đầu cuối SSH, hay

Khi chạy client không cần password, client sẽ nắm giữ một tập tin liệt kê danh sách những daemon mà nó thuộc về.

Giao tiếp giữa Client và Daemon xác lập thông qua những gói tin ICMP_ECHOREPLY. Do nó không phải là những gói TCP hay UDP, người ta ít khi nào“dán mắt” vào những gói ICMP, cho nên nó lợi dụng đặc điểm nào để truyền thông vớinhau.

Nguyên thủy (không thay đổi mã nguồn), sau khi biên dịch chạy chương trình Client, nó có giao diện như sau (giả định chương trình Daemon được kích hoạt và chạy tiềm ẩn):

Hình 2.18: Minh họa công cụ DDoS – TFN

<iplist>: chứa danh sách những máy tính (host) bị nhiễm phần mềm Daemon. Nó sẽ thỏa hiệp phát lệnh tấn công cho những host này.

<type>: các loại tấn công ngập lụt (Flood). Ví dụ: số 1 đại diện loại tấn công là UDP.

<ip>: địa chỉ IP của máy victim, nếu nhiều victim, cách nhau bởi dấu “@” <port>: chỉ định cổng tấn công, 0 :ngẩu nhiên

N

h ậ n d ạ n g m ậ t kh ẩ u:

Trong khi client không có mật khẩu, mỗi lệnh gởi qua Daemon chứa một con số nhị phân 16 bit trong trường id của gói ICMP_ECHOREPLY. Trong khi trường sequence number chứa hằng số là 0x0000, trông giống như gói tin bằng lệnh “ping” đầu tiên.

Hình 2.19: Tập tin chứa danh sách các mật khẩu điều khiển agent

Nhìn vào hình trên, có thể thấy, nếu như một attacker kinh nghiệm, họ có thể thay đổicác thông số giao tiếp. Như vậy sẽ giúp cho họ dễ điều khiển các Daemon cũng như khỏi“đụng chạm” với các attacker khác.

Dưới đây là quá trình thực hiện ngập lụt các gói tin TCP vào máy victim:

Hình 2.20: quá trình tấn công diễn ra

Quan sát trên máy victim bằng phần mềm bắt gói Ethereal, sẽ nhận biết được lưu lượng TCP tăng đột biến:

Hình 2.21: Bị Flood bởi các gói TCP SYN

Công cụ TFN còn giả mạo cả địa chỉ IP nguồn (source address) khiến cho người quản trị khó nhận biết được lưu lượng thực xuất phát từ daemon.

Hình 2.22: Minh họa bằng công cụ bắt gói Ethereal L

Giám sát lưu lượng mạng bằng công cụ Ethearel, thực hiện lệnh “ping –c 3 192.168.1.111” (ý nghĩa: gửi 3 gói ICMP_ECHO và chờ đáp ứng trở lại). Ta sẽ thấy được những gói ICMP_ECHOREQUEST với trường payload

cố định và gói đáp trả về ICMP_ECHOREPLY cũng với payload tương tự. Đồng thời trường sequence number sẽ tăng dần khi mỗi gói tin gởi đến (cũng

như trả về tương ứng)

Khi điều khiển TFN Client, gởi những lệnh tới Daemon đều sử dụng những gói

ICMP_ECHOREPLY thay vì ICMP_ECHO. Lý do thực hiện điều này (adsbygoogle = window.adsbygoogle || []).push({});

nhằm tránh nhân (kernel) của hệ thống máy Daemon không chấp nhận những gói ICMP_ECHOREQUEST mà vẫn chấp nhận những gói ICMP_ECHOREPLY.

Daemon sau đó nếu cần thiết có thể đáp lại Client cũng bằng những gói

ICMP_ECHOREPLY.

Sử dụng tiện ích tcpdump (tiện ích bắt gói và giải mã gói tin, hỗ trợ sẵn có trong kernel) của Linux, có thể thấy được một thủ tục truyền thông giữa Client và Daemon:

Hình 2.23: nhận dạng quá trình giao tiếp giữa Client – Deamon

Theo dõi quá trình trao đổi ICMP, Client sẽ gởi gói ICMP_ECHOREPLY

với trường ID có mã hexa là 0x016F (dạng thập phân là 567) theo như tập tin cấu hình config.h trong mã nguồn, yêu cầu Daemon ngưng tấn công. Ngoài ra, trường sequence number luôn là

0x0000 (không giống như gói tin “ping” thông thường).

Đây là dấu hiệu nhận biết có thể giúp ta phát hiện ra một cuộc tấn công TFN (nếu như mã nguồn không thay đổi).

Một phần của tài liệu tìm hiểu tấn công ddos và cách phòng chống (Trang 41)