Lưu ý 1: Tools này chỉ với mục đích nghiên cứu và học hỏi vui lòng các bạn không nên sử dụng tools vào các mục đích xấu và thực hiện các hành vi phạm pháp luật.
Lưu ý 2: Bài viết này để các bạn làm quen với Python và các Module Python, chứ không phải viết Tool DDoS để đi tấn công người khác, khi viết xong, tuyệt đối không sử dụng Tool lên hệ thống không phải do bạn của bạn quản lý.
Lưu ý 3: Thật ra đây là Tool DoS, không phải DDoS, mình ghi DDoS trong tiêu đề để các bạn dễ phân biệt giữa Deny of service và MS-DOS
Hôm nay mình sẽ hướng dẫn cho các bạn cách làm tool TCP Flood đơn giản bằng Python. Đây là 1 công cụ khá là mạnh, có thể khiến máy các bạn hoặc máy các bạn mà muốn tấn công sẽ tràn ngập 1 số gói rác được gửi đến và khiến cho CPU tăng cao lên đến 100%. Nếu máy nào yếu thì chắc sẽ bị sập hoặc mua máy mới quá.
Trước khi vào viết tools thì mình muốn cho các bạn hiểu biết về Dos và nâng cao của DoS là DDoS. Vậy, Dos là gì? Và cách thức hoạt động của DoS ra sao? Bạn cần đọc kỹ bài DDOS là gì trước khi thực hành nội dung bên dưới.
Bắt đầu viết Tool DDoS đơn giản bằng Python
Đầu tiên các bạn phải Download Python. Các bạn có thể lên Youtube xem cách tải, tải Python cũng khá đơn giản lên mình cũng không hướng dẫn trong bài viết này.
Cài đặt Python: ở màn hình cài đầu tiên nhớ check vào dòng Add python x.x to path
Bây giờ các bạn mở CMD trên máy Windows lên và nhập lệnh: pip install termcolor
, đây là thư viện màu chữ thôi, còn ai không thích có thể bỏ qua.
Do đây là Tool DoS, sử dụng tài nguyên từ Modem và PC của bạn nên chỉ hoạt động tốt trong môi trường mạng LAN, nếu tấn công ra bên ngoài thì khá yếu và đôi khi bị phản dame nhé.
Ok, giờ thì các bạn sẽ import các module sau:
Sau khi import xong, các bạn tiến hành trang trí giao diện cho tool, cái này trang trí cho đẹp, còn ai không thích trang trí có thể vào viết code luôn.
Các bạn nào muốn trang trí giống như mình thì có thể lên google gõ từ khóa figlet online rồi vào trang web bất kì để lấy mẫu.
Như các bạn thấy đấy, câu code os.system('cls')
đây là dòng code thực thi lệnh trên cmd của hệ thống, khi các bạn chạy tool thì câu code này sẽ xóa hết tất cả các chữ hiện có trên cmd chỉ còn lại một mình dòng chữ DOS bự chà bá to ở dưới.
À mà còn 1 một vấn đề nữa là từ colored
đây là 1 module của termcolor và các bạn để ý có những từ như ‘red’, ‘green’,….. ở cuối câu code thì đó là màu sắc của chữ mà bạn muốn in ra.
OK, vậy chúng ta sẽ thực hiện bước tiếp theo thôi:
Giờ chúng ta viết 1 đoạn code ngắn để lấy dữ liệu đầu vào của người dùng hay còn gọi là “input”.
Tại đây, các bạn có thể tạo 1 biến bất kì, rồi chúng ta sẽ lấy input của người dùng.
Các bạn có thể thấy đấy,str
là 1 chuỗi kí tự trong Python, nên vì các số IP thường có các chuỗi kí tự khác nhau được cách bởi dấu chấm nên mình đặt nó là ‘str’. Còn ‘int’ viết tắt là Integer là một kiểu dữ liệu, được sử dụng trong Python để biểu diễn các số nguyên.
Như vậy đã xong. Giờ mình sẽ tiến hành trang trí phần tấn công. Mình trang trí để nhìn cho bố đời, còn các bạn nào không thích thì bỏ qua cũng được.
Ok, đây chính là giao diện code khi tool hoạt động tấn công. Câu code đầu, câu code 2 và thư viện màu chữ mình cũng đã giải thích rồi nên thôi.
Giờ vào vấn đề quan trọng nhất cho tool hoạt động đây.
Các bạn tiến hành tạo cho mình một hàm và 2 biến bất kì như trong hình.
Tại đây mình tạo 1 hàm tên là syn()
và 2 biến có tên là hevin
và bb
.
Các bạn thấy thấy biến 1. Mình đã gọi module random có sẵn trong Python và đã import nó ở bước đầu tiên, sau từ random là từ urandom
, cả 2 đều là hàm băm ngẫu nghiên được cài đặt một bộ tạo số giả ngẫu nhiên và chứa các hàm cho phép chúng ta giải quyết trực tiếp nhiều vấn đề lập trình khác nhau sử dụng đến tính ngẫu nhiên. Còn về biến bb
thì mình để số nguyên là 0.
Nào, các bạn hãy tạo cho mình 1 vòng lặp while True:
đây là vòng lặp giúp 1 đoạn mã nào đó hoạt động lặp đi lặp lại cho đến khi mình muốn dừng thì thôi.
Giờ các bạn tạo 1 cặp try, except
để bắt lỗi trong Python:
Đầu tiên mình tạo 1 biến có tên là h
trong biến đó mình đã gọi module socket được tích hợp sẵn trong Python. Socket là các endpoint của một kênh giao tiếp hai chiều. Nó sử dụng để kết nối với một chương trình khác chạy trên một máy tính khác trên Internet. Một chương trình mạng có thể sử dụng nhiều socket cùng một lúc, nhờ đó nhiều chương trình có thể sử dụng Internet cùng một lúc.
Tiếp theo là h.connect
đây là mình kết nối với ip và port của máy tấn công
Tiếp đến là h.send(hevin)
, mình dùng câu code này để gửi cho máy nạn nhân những thông số ngẫu nghiên từ 0 đến 900, như vậy là đủ rồi, còn các bạn nào muốn chỉnh cao hơn thì tùy ý.
Tiếp theo nữa :>>, chính là Hàm range()
trong Python vốn được sử dụng để tạo ra một đối tượng chứa các phần tử là dãy số gồm các số liên tiếp từ 0 đến một giá trị, mà giá trị đó không vượt qua đối số được chỉ định mà các bạn đã tạo input cho người dùng nhập
Câu code tiếp theo thì mình đã giải thích lúc nãy rồi nhé bây giờ chúng ta sẽ giải thích bb+=1
nhé:
Câu code có thể được dịch là “thêm bất cứ thứ gì ở bên phải dấu +=
vào biến ở bên trái dấu +=
.
Ví dụ. Nếu bạn cóa = 10
thì a += 5
sẽ là: a = a + 5
Vì vậy, “a” bây giờ bằng 15.
Còn phần in
kia mình cũng đã giải thích như trên rồi
Chúng ta đến phần ‘except’ nào
Tại đây mình dùng KeyboardInterrupt
để khắc phục lỗi khi dừng tool. Để tool dừng lại chúng ta nhấn tổ hợp phím Ctrl+C để dừng. Còn nếu bạn nào không thích thì các bạn dùng except:
thôi cũng được.
Đến phần h.close()
mình đã gọi hàm close()
để mỗi lần dừng lại thì tool sẽ ngừng chạy. Còn phần print(….)
mình sẽ giải thích qua là mỗi khi bạn cho tool dừng lại thì sẽ hiện ra Done
.
Đến phần cuối cũng thôi !!!!
Ở phần cuối là phần for i in range(thread)
mình cũng đã giải thích cho các bạn như ở trên rồi nên bỏ qua
Tiếp đến 2 câu code cuối cũng, mình đã tiến hành gọi module threads
được có sẵn trong Python đây là 1 module đa luồng. Như vậy ta có thể hiểu Thread là một đơn vị cơ bản trong CPU. Một luồng sẽ chia sẻ với các luồng khác trong cùng process về thông tin data, các dữ liệu của mình. Việc tạo ra thread giúp cho các chương trình có thể chạy được nhiều công việc cùng một lúc.
Không những vậy Python cung cấp thread Module và threading Module để bạn có thể bắt đầu một thread mới cũng như một số tác vụ khác trong khi lập trình đa luồng. Mỗi một Thread đều có vòng đời chung là bắt đầu, chạy và kết thúc. Một Thread có thể bị ngắt (interrupt), hoặc tạm thời bị dừng (sleeping) trong khi các Thread khác đang chạy – được gọi là yielding.
Tổng hợp Code DoS ở trên bạn có tải từ Github của mình. Nhưng mình khuyên bạn nên tập code theo hướng dẫn bên trên để hiểu hơn về Python thay vì tải sẵn về sử dụng, như vậy sẽ không nâng cao được kiến thức lập trình.
Cách sử dụng Tool:
Sau khi làm xong, các bạn mở cmd trên máy và trỏ đến tệp mà các bạn đã đặt (name).py rồi nhập lệnh
python (name).py
Lúc này giao diện tool của các bạn đã làm sẽ hiện trên màn hình cmd yêu cầu các bạn nhập các thông số: IP máy cần tấn công, Port ( cổng ) máy tính, Threads ( luồng tấn công ), Packet ( số lượng gói cần gửi ).
Kết Quả Tấn Công:
Như các bạn thấy đấy, mình nhập thông số vô cùng thấp nhưng kết quả của cuộc tấn công đạt hiệu quả rất cao. Các bạn lưu ý khi test trên chính máy của mình đấy =)). Mình để có hơn 5s máy mình đã lên đến 76% CPU rồi
VẬY LÀ MÌNH ĐÃ HƯỚNG DẪN CÁC BẠN XONG CÁCH VIẾT TOOL DOS BẰNG PYTHON. Hy vọng bạn sẽ bắt đầu tìm hiểu Python cơ bản với bài viết này. Mình mong các bạn không nên sử dụng tool Dos này vào mục đích xấu thay vào đó các bạn có thể nghiên cứu cách phòng chống và ngăn chặn nhé.
Tác giả: Van Son