Phát triển phần mềm độc hại - The Dark Side: Phần 1
Bài viết dưới đây xin được giới thiệu tới các bạn về quá trình phát triển một phần mềm độc hại. Tuy nhiên trước đó cũng cần phải lưu ý nghiên cứu kỹ trước khi bắt đầu tiến hành thực hiện.
Nếu bạn chưa hiểu kỹ về phần mềm độc hại thì có thể tham khảo bài viết của Bizfly Cloud : Malware (phần mềm độc hại) là gì? để có thể hiểu rõ hơn nhé!.
Viết một phần mềm độc hại hoàn toàn không thể phát hiện (FUD) là một kỹ năng tuyệt vời nên có nếu bạn đang ở trong vùng cybersecurity, đặc biệt là Red Teaming. Folks có xu hướng sử dụng Metasploit kết hợp với Veil-Evasion hoặc PE injectors như LordPE hoặc Shelter, để tạo ra một nhị phân có thể bỏ qua phần mềm diệt virus. Đôi khi điều này có hiệu quả và cũng đôi khi không. Điều tệ nhất có thể xảy ra khi chạy một hoạt động của Red Team là việc nhị phân bị AV phát hiện và đưa ra một cảnh báo tới nhóm SOC/Phản hồi sự cố.
Một lý do nữa để viết phần mềm độc hại FUD từ scratch là loại bỏ nhu cầu dành cho Metasploit, vì nó chỉ có thể xử lý một kết nối tại một thời điểm. Trong khi đó, trong quá trình red teaming, tôi cần một Máy chủ CnC có thể điều khiển tất cả các máy được sinh ra với nhau, hay đơn giản mà nói đó là Botnet.
Do đó, blog này sẽ là blog giới thiệu để khởi động chương trình phát triển phần mềm độc hại. Trong blog tiếp theo tôi sẽ giới thiệu về các kỹ thuật liên quan. Dưới đây là một cái nhìn thoáng qua về toolkit sau cùng:
Malware CnC Server
Trước hết, phần mềm độc hại chỉ là một đoạn mã giống như mọi chương trình khác. Ví dụ, nếu bạn muốn viết một keylogger không thể phát hiện, trước tiên bạn nên kiểm tra xem một trò chơi bình thường sẽ hoạt động như thế nào trong Windows. Ví dụ: mỗi khi bạn nhấn một phím trong trò chơi -> lên, xuống, sang trái, phải, ctrl, v.v., một nút điều khiển Windows sẽ chụp phím tắt và thực hiện một số thao tác theo nó. Vì vậy, nếu tôi chỉ có thể viết một chương trình với cùng một mã chạy trong nền và chỉ sửa đổi một chút để lưu trữ các tổ hợp phím trong bộ nhớ thay vì thực hiện một số hoạt động dựa trên trò chơi, khi đó nó sẽ trở thành một keylogger. Sau đó tôi có thể chuyển đổi nó thành một mô-đun và đẩy nó vào trình reverse shell để kết xuất các lần nhấn phím từ một máy từ xa.
Tuy nhiên, có một vài điều kiện tiên quyết trước khi tiến hành nghiên cứu sâu về phần mềm độc hại. Chúng ta cần nghiên cứu thật kỹ trước khi chúng ta bắt đầu. Dưới đây là một tập hợp các câu hỏi quan trọng nhất trước khi bạn bắt đầu viết phần mềm độc hại:
1. Bạn muốn viết loại phần mềm độc hại nào?
1. Có phải một cái gì đó lây lan tự động như một worm không
2. Hay Trojan Horse?
3. Hay một cái gì đó tự động hóa một số nhiệm vụ khi tiến hành thực thi hơn là một reverse shell
4. Hay reverse shell mô phỏng Red Team/Phishing/Targeted Attack
5. Hoặc có thể là bind shell
2. Giao thức nào sẽ được sử dụng - TCP/ HTTP/ UDP hay HTTPS?
3. Tôi muốn viết bằng ngôn ngữ nào?
Dưới đây là một số ưu và nhược điểm của các ngôn ngữ lập trình khác nhau khi triển khai FUD đầu tiên của bạn:
Ngôn ngữ | Độ khó | Khả năng mang theo được | Khả năng mở rộng | Kích cỡ | Hiệu suất | Sự phát hiện |
Python / Ruby | Dễ | Có | Có | Lớn | Chậm vì tốn quá nhiều phí tổn điều khiển | Dễ vì quá nhiều thư viện |
Golang | Trung bình | Có | Có | Lớn | Nhanh hơn Python/ Ruby | Trung bình vì không có quá nhiều người viết trong Go |
C# | Trung bình | Không | Có | Lớn | Chậm do quá phí tốn điều khiển thư viện | Khó |
C/C | Khó | Dễ - vì bản chất là cấp thấp | Có | Nhỏ | Nhanh | Khó |
Assembly/ Shellcoding | Khó nhất | Dễ | Không | Nhỏ nhất | Nhanh nhất | Khó |
Chúng tôi sẽ sử dụng kết nối TCP trong toàn bộ blog, tuy nhiên phần mềm độc hại mà chúng tôi sẽ viết có thể dễ dàng được chuyển sang HTTP. Để đi vào mục đích thật sự của blog này, chúng tôi sẽ viết các phần mềm độc hại và phần mềm độc hại không mong muốn, vì việc viết phần mềm độc hại sẽ yêu cầu chúng tôi đi sâu vào lắp ghép, tạo shellcode và gửi nó vào bộ đệm để thực hiện bước tiến hành.
Nhưng trong trường hợp tôi muốn viết một cách nhanh chóng và đơn giản, tôi sẽ viết các chương trình này trong C và C và sử dụng Python 3 cho code server. Các tệp nhị phân dựa trên C / C có kích thước rất nhỏ và khi viết handler/ server cho phần mềm độc hại, chúng ta sẽ cần một thứ nhanh hơn để viết, đó chính là Python3. Tôi khuyên bạn không nên viết các phần mềm độc hại trong python hoặc ruby, vì kích thước được biên dịch của tệp nhị phân lên tới 1 megabyte trong khi đó phần mềm độc hại mà chúng tôi sẽ viết chỉ dưới 50 kilobyte.
Điều kiện tiên quyết
Dưới đây là một số kỹ năng cần có mà tôi nghĩ rằng là cần thiết để có thể hiểu đầy đủ code được viết trong suốt toàn bộ blog:
1.C / C [Phần mềm độc hại / Bot]
1. Con trỏ [để lưu trữ dữ liệu trong bộ nhớ ở phía nạn nhân]
2. TCP Sockets [reverse shell]
3. Thao tác bộ đệm trên heap [đọc các tệp lớn]
2. Python 3 [Code server/handler]
1. Đa xử lý / Đa luồng [Handler cho các đa bot]
2. Xử lý các kiểu dữ liệu với cấu trúc dữ liệu
3. TCP Socket
4. Xử lý tín hiệu các sự cố tác động
3. WINAPI [Windows Socket]
4. Trình biên dịch Mingw-g flag/tùy chọn [để giảm kích thước của tệp nhị phân]
5. Elasticsearch và Kibana [để hiển thị trực quan các hệ thống / người dùng bị xâm nhập, các đặc lợi có được từ việc đánh giá Red Team]
Các công cụ cần thiết để thiết lập môi trường kiểm tra phần mềm độc hại:
1. Linux [Ưu tiên Debian - sẽ chạy Máy chủ xử lý phần mềm độc hại]
Tải về theo link - https://www.debian.org/devel/debian-installer/
2. Windows [Máy ảo - để kiểm tra nhị phân]
3. Visual Code [để viết cả mã Python và C ]
Tải về theo link - https://code.visualstudio.com/download
Nếu máy nguồn của bạn là Linux (như của tôi), nó sẽ chạy mã Windows, tôi khuyên bạn nên cài đặt trình biên dịch chéo i686-w64-mingw32-gcc để biên dịch mã windows trong Linux.
Cài đặt trình biên dịch chéo Mingw trong Debian:
$ apt-get install mingw-w64-common mingw-w64-i686-dev mingw-w64-tools mingw-w64-x86-64-dev
Tuy nhiên, nếu bạn định sử dụng hệ thống Windows để thực hiện việc triển khai chương trình, bạn có thể sử dụng trình biên dịch Mingw tại đây - https://sourceforge.net/projects/mingw/files/
Chương trình làm việc của toàn bộ Blog
Các phần tiếp theo của loạt bài này sẽ bao gồm:
1. Viết một trình reverse shell hoàn toàn không thể phát hiện dựa trên TCP trong C / C
2. Viết một trình bind shell dựa trên TCP hoàn toàn không thể phát hiện trong C / C
3. Phần mềm độc hại phải tương thích với tất cả các phiên bản của windows [Windows Xp / 7/8/10/2012/2016]
4. Lập trình một trình xử lý hỗ trợ nhiều kết nối trong Python3 [Kiểu Botnet]
5. Sử dụng Elasticsearch và Kibana khi xử lý nhiều kết nối bot để hiển thị trạng thái và đặc quyền của chúng.
Toolkit/server phần mềm độc hại cuối cùng sẽ trông như thế này:
Building a C2 Server with FUD payload/malware
Khi bạn đã thiết lập tất cả các điều kiện tiên quyết, đã đến lúc bắt đầu liệt kê tất cả các tính năng mà bạn muốn phần mềm độc hại của mình chạy:
1. Người dùng nào bị nhiễm phần mềm độc hại (whoami)
2. In thư mục làm việc hiện tại (pwd)
3. Liệt kê các tệp trong thư mục hiện tại (ls)
4. Di chuyển / Sao chép tệp / thư mục (mv / cp)
5. Tạo tệp / thư mục (touch / mkdir)
6. Xóa tệp / thư mục (rm / rmdir)
7. Thực hiện lệnh Windows hoặc tệp nhị phân / tệp khác.
8. Download file
9. Upload file
10. Kết nối lại vào khoảng thời gian ngẫu nhiên với server CnC
11. Ẩn nhị phân khi thực hiện
12. Chuyển đổi giữa nhiều trình reverse shell được kết nối
13. Gửi lệnh đến nhiều Bots
Hãy nhớ rằng, tính năng số 7 chỉ chạy một cách ngẫu nhiên, lý do là mỗi khi bạn thực thi lệnh dựa trên Windows, nó tạo ra một quy trình và tạo điều kiện dễ dàng cho Windows ATP hoặc các giải pháp khác dựa trên agent như Crowdstrike / Sysmon nhằm theo dõi phần mềm độc hại đã làm những gì. Tất cả các tính năng được đề cập ở trên sẽ được viết bằng cách sử dụng các cuộc gọi API C / C của windows hoặc thứ gì đó được viết đơn thuần từ scratch.
Trong phần tiếp theo, chúng ta sẽ bắt đầu viết một reverse shell cmd-based đơn giản dựa vào netcat, và sau đó sửa đổi nó để kết nối với một server C & C Python.
Link gốc: http://niiconsulting.com/checkmate/2018/02/malware-development-welcome-dark-side-part-1/
Nguồn: Bizfly Cloud chia sẻ
>> Có thể bạn quan tâm: Phát triển phần mềm độc hại - Dark Side: Phần 2-1