Hướng Dẫn Sử Dụng Cobalt Strike Trong Kiểm Thử Xâm Nhập

Giới Thiệu Về Cobalt Strike

Cobalt Strike là một công cụ mạnh mẽ và toàn diện được sử dụng rộng rãi trong các hoạt động kiểm thử xâm nhập và mô phỏng tấn công nâng cao. Được thiết kế với kiến trúc client-server, Cobalt Strike cho phép nhiều người dùng kết nối đến một máy chủ điều khiển duy nhất, tạo điều kiện thuận lợi cho các nhóm làm việc cùng nhau trong các chiến dịch.

Khả năng của Cobalt Strike rất đa dạng, bao gồm nhưng không giới hạn ở:

  • Chuyển tiếp cổng (port forwarding)
  • Quét dịch vụ (service scanning)
  • Tấn công tràn bộ đệm tự động (automated exploitation)
  • Lắng nghe nhiều chế độ (multi-mode listeners)
  • Tạo các payload độc hại cho Windows (EXE, DLL), Java, và macro Office
  • Khả năng đóng gói phần mềm độc hại (payload bundling)
  • Các tính năng tấn công lừa đảo (phishing), như nhân bản trang web (site cloning), thu thập thông tin mục tiêu, thực thi Java, và tấn công trình duyệt tự động.

Cài Đặt Cobalt Strike Trên Kali Linux

Để cài đặt Cobalt Strike, trước tiên cần đảm bảo rằng Java Development Kit (JDK) đã được cài đặt. Hướng dẫn sau đây sẽ mô tả quy trình cài đặt JDK và Cobalt Strike trên Kali Linux.

Cài Đặt Java Development Kit (JDK)

Giả sử bạn đã tải xuống gói JDK (ví dụ: jdk-8uXXX-linux-x64.tar.gz) và muốn cài đặt nó.

1. Di chuyển gói JDK đã tải xuống vào một thư mục tạm thời trên Kali Linux.

2. Giải nén gói tin vào một vị trí thích hợp, ví dụ /opt/java:

sudo mkdir -p /opt/java
sudo tar -xzf jdk-8uXXX-linux-x64.tar.gz -C /opt/java
sudo mv /opt/java/jdk1.8.0_XXX /opt/java/default_jdk # Đổi tên thư mục giải nén cho dễ quản lý

3. Cấu hình các biến môi trường Java bằng cách chỉnh sửa tệp ~/.bashrc:

vim ~/.bashrc

Thêm các dòng sau vào cuối tệp:

# Cấu hình biến môi trường JAVA_HOME
export JAVA_HOME=/opt/java/default_jdk
export PATH="$JAVA_HOME/bin:$PATH"
export CLASSPATH=".:$JAVA_HOME/lib:$JAVA_HOME/jre/lib"

Lưu và đóng tệp, sau đó áp dụng các thay đổi:

source ~/.bashrc

4. Đặt cấu hình Java mặc định cho hệ thống:

sudo update-alternatives --install /usr/bin/java java /opt/java/default_jdk/bin/java 100
sudo update-alternatives --install /usr/bin/javac javac /opt/java/default_jdk/bin/javac 100
sudo update-alternatives --set java /opt/java/default_jdk/bin/java
sudo update-alternatives --set javac /opt/java/default_jdk/bin/javac

5. Kiểm tra phiên bản Java đã cài đặt:

java -version
javac -version

Cài Đặt và Khởi Chạy Cobalt Strike

Giả sử bạn đã tải xuống tệp zip của Cobalt Strike (ví dụ: cobaltstrike.zip).

1. Giải nén tệp Cobalt Strike vào một thư mục mong muốn:

unzip cobaltstrike.zip -d /opt/cobaltstrike
cd /opt/cobaltstrike

Khởi Chạy Máy Chủ Cobalt Strike (Teamserver)

Máy chủ Cobalt Strike là trái tim của hệ thống, nơi thu thập các shell và quản lý các hoạt động.

./teamserver <Địa_Chỉ_IP_Của_Kali> <Mật_Khẩu>
# Ví dụ: ./teamserver 192.168.1.100 mySecurePass

Để máy chủ chạy ngầm ngay cả khi bạn đóng terminal:

nohup ./teamserver <Địa_Chỉ_IP_Của_Kali> <Mật_Khẩu> &

Mặc định, teamserver lắng nghe trên cổng 50050. Bạn có thể thay đổi cổng này bằng cách chỉnh sửa tệp teamserver.

Khởi Chạy Máy Khách Cobalt Strike (Client)

Để kết nối với máy chủ, bạn có thể sử dụng máy khách trên Kali hoặc trên một hệ thống khác (ví dụ: Windows).

./cobaltstrike

Trong giao diện kết nối, nhập địa chỉ IP của máy chủ Kali và mật khẩu bạn đã thiết lập khi khởi động teamserver.

Sử Dụng Các Tính Năng Của Cobalt Strike

Tạo Listener

Listener là cơ chế để Cobalt Strike nhận các kết nối từ các payload đã thực thi trên hệ thống mục tiêu.

Chọn Cobalt Strike > Listeners > Add.

  • Name: Tên định danh cho Listener.
  • Payload: Chọn loại payload (ví dụ: windows/beacon_http/reverse_http).
  • Host: Địa chỉ IP của máy chủ Kali (máy chủ điều khiển).
  • Port: Cổng mà Listener sẽ lắng nghe.

Có hai loại Listener chính:

  • Beacon (Internal): Các payload tích hợp sẵn của Cobalt Strike, có thể sử dụng DNS, HTTP, HTTPS, SMB để giao tiếp. Beacon hỗ trợ nhiều kết nối và có khả năng chuyển đổi giao thức.
  • Foreign (External): Được thiết kế để tích hợp với các công cụ khác như Metasploit Framework, cho phép chuyển shell về các công cụ đó.

Tạo Payload Tấn Công (Attacks > Packages)

Cobalt Strike cung cấp nhiều tùy chọn để tạo payload:

  • HTML Application: Tạo một tệp .hta độc hại sử dụng PowerShell.
  • MS Office Macro: Tạo mã macro độc hại cho các tài liệu Office.
  • Payload Generator: Tạo payload bằng nhiều ngôn ngữ lập trình khác nhau.
  • USB/CD AutoPlay: Tạo payload tự động chạy khi kết nối USB/CD.
  • Windows Dropper: Trình đóng gói (bundler) giúp kết hợp payload với các tệp tin hợp pháp (ví dụ: tài liệu).
  • Windows Executable (S): Tạo tệp .exe có/không trạng thái để thực thi payload.

Các Kỹ Thuật Tấn Công Qua Web (Attacks > Web Drive-by)

Đây là các module tấn công web của Cobalt Strike:

  • Clone Site: Nhân bản một trang web để thu thập thông tin đăng nhập từ nạn nhân.
  • Host File: Cung cấp một tệp để nạn nhân tải xuống, có thể kết hợp với DNS spoofing để thực hiện tấn công drive-by download.
  • Scripted Web Delivery: Tương tự như web_delivery của Metasploit, cung cấp script để nạn nhân thực thi.
  • System Profiler: Thu thập thông tin hệ thống của nạn nhân như phiên bản hệ điều hành, trình duyệt, Flash.
  • Spear Phish: Module gửi email lừa đảo (spear phishing).

Quản Lý Thông Tin (View)

Tab View cung cấp các tùy chọn để xem và quản lý thông tin từ các beacon đã kiểm soát:

  • Applications: Hiển thị các ứng dụng đang chạy trên máy mục tiêu.
  • Credentials: Hiển thị thông tin đăng nhập thu thập được.
  • Downloads: Quản lý các tệp đã tải xuống từ mục tiêu.
  • Event Log: Xem nhật ký sự kiện, bao gồm các hoạt động của đội và hệ thống.
  • Keystrokes: Xem nhật ký bàn phím (keylogger).
  • Proxy Pivots: Quản lý các proxy đã thiết lập.
  • Screenshots: Xem các ảnh chụp màn hình từ mục tiêu.
  • Script Console: Nơi tải và thực thi các script mở rộng chức năng (ví dụ: từ GitHub).
  • Targets: Tổng quan về tất cả các mục tiêu đã kiểm soát.
  • Web Log: Xem nhật ký hoạt động web.

Thao Tác Với Máy Chủ Bị Kiểm Soát

Khi đã có một beacon trên hệ thống mục tiêu, bạn có thể thực hiện nhiều thao tác khác nhau thông qua menu ngữ cảnh (chuột phải vào beacon) hoặc giao diện tương tác Beacon.

  • Interact: Mở cửa sổ tương tác Beacon.
  • Access:
    • dump hashes: Trích xuất các hash mật khẩu NTLM.
    • Elevate: Thực hiện nâng cao đặc quyền.
    • Run Mimikatz: Chạy Mimikatz để trích xuất mật khẩu dạng plaintext và các thông tin xác thực khác.
    • Make Token: Chuyển đổi thông tin xác thực thành token để sử dụng.
  • Explore:
    • File Browser: Duyệt các tệp và thư mục trên hệ thống mục tiêu.
    • Process list: Liệt kê các tiến trình đang chạy.
    • Screenshot: Chụp ảnh màn hình.
    • Port scan: Thực hiện quét cổng từ máy mục tiêu.
  • Pivoting:
    • SOCKS Server: Thiết lập máy chủ SOCKS để định tuyến lưu lượng mạng qua mục tiêu vào mạng nội bộ.
    • Listener: Chuyển tiếp cổng hoặc thiết lập listener ngược.

Trích Xuất Hash và Mật Khẩu Dạng Cleartext

Các chức năng này yêu cầu beacon có quyền quản trị viên hoặc SYSTEM.

  • Trích xuất hash mật khẩu: Chuột phải vào beacon > Access > Dump Hashes.
  • Trích xuất mật khẩu dạng plaintext bằng Mimikatz: Chuột phải vào beacon > Access > Run Mimikatz.

Nâng Cao Đặc Quyền

Cobalt Strike tích hợp sẵn một số exploit để nâng cao đặc quyền (ví dụ: MS14-058, UAC bypass). Để sử dụng, chuột phải vào beacon > Access > Elevate. Chọn một payload nâng đặc quyền và nhấn Launch.

Bạn cũng có thể mở rộng khả năng nâng đặc quyền bằng cách tích hợp các script bên ngoài. Ví dụ, tải về ElevateKit từ GitHub (https://github.com/rsmudge/ElevateKit), sau đó tải nó vào Cobalt Strike thông qua Cobalt Strike > Script Manager.

Thiết Lập Proxy SOCKS4a

Khi kiểm soát một máy chủ biên, bạn có thể thiết lập proxy SOCKS để tiếp tục xâm nhập vào mạng nội bộ.

Chuột phải vào beacon > Pivoting > SOCKS Server. Nhập một cổng chưa được sử dụng trên máy Kali của bạn và nhấn Launch.

Sau đó, bạn có thể cấu hình các công cụ khác trên máy Kali của mình để sử dụng proxy SOCKS4a với IP của máy Kali và cổng đã chọn.

Để xem các proxy SOCKS đang hoạt động, chọn View > Proxy Pivots.

Liệt Kê Tiến Trình và Ghi Nhận Phím Bấm

Để xem danh sách các tiến trình trên mục tiêu, chuột phải vào beacon > Explore > Process List.

Từ danh sách tiến trình, bạn có thể thực hiện:

  • Inject: Tiêm beacon vào một tiến trình khác. Khi tiến trình bị tiêm chết, beacon cũng sẽ mất.
  • Log Keystrokes: Kích hoạt ghi nhận phím bấm cho tất cả các hoạt động bàn phím trên máy mục tiêu.
  • Screenshot: Chụp ảnh màn hình của tiến trình cụng thể.
  • Steal Token: Đánh cắp token người dùng đang chạy tiến trình đó.

Để xem kết quả ghi nhận phím bấm, bạn có thể chọn View > Keystrokes hoặc gõ lệnh keylogger trong cửa sổ tương tác Beacon.

Thẻ: CobaltStrike KaliLinux PenetrationTesting RedTeam Beacon

Đăng vào ngày 1 tháng 11 lúc 12:33