---
# System prepended metadata

title: CAPEV2筆記
tags: [capev2, sandbox]

---

**CAPEV2筆記**


**全部都參考**
1.  Step-by-Step Guide of Installing and Configuring CAPEv2 Sandbox on Ubuntu 22.04 [[part1](https://muzammil-hassan.medium.com/step-by-step-guide-of-installing-and-configuring-capev2-sandbox-on-ubuntu-22-04-part-1-f08c17760c26)]
2.  Step-by-Step Guide of Installing and Configuring CAPEv2 Sandbox on Ubuntu 22.04 [[part2](https://muzammil-hassan.medium.com/step-by-step-guide-of-installing-and-configuring-capev2-sandbox-on-ubuntu-22-04-part-2-678dabcf3ba2)]
2.  Installing and Configuring CAPEv2 on Ubuntu Desktop 24.04.2 LTS version [Complete Setup](https://osintteam.blog/capev2-installation-and-configuration-on-ubuntu-desktop-24-04-2-beca4f7693a1)
3.  
    :::spoiler 省時間的人
    ```
    sudo apt update && sudo apt upgrade -y
    sudo apt-get install open-vm-tools-desktop git -y
    git clone https://github.com/kevoreilly/CAPEv2.git
    cd /home/cape/CAPEv2/installer
    sudo sed -i 's/<WOOT>/Custom/g' kvm-qemu.sh
    sudo chmod a+x *.sh
    sudo ./kvm-qemu.sh all cape 2>&1 | tee kvm-qemu.log
    sudo ./kvm-qemu.sh virtmanager cape 2>&1 | tee virtmanager.log
    sed -i 's/^NETWORK_IFACE=.*/NETWORK_IFACE=virbr0/' cape2.sh
    sed -i 's/^IFACE_IP=.*/IFACE_IP="192.168.122.1"/' cape2.sh
    sed -i 's/^DIST_MASTER_IP=.*/DIST_MASTER_IP="192.168.122.1"/' cape2.sh
    sed -i 's/^PASSWD=.*/PASSWD="1qaz2wsx"/' cape2.sh
    sed -i 's/^clamav_enable=.*/clamav_enable=1/' cape2.sh
    sudo ./cape2.sh base 2>&1 | tee cape2-base.log
    python3 -m http.server 8080
    ```
    :::
>[!Tip]在<font color="#f00">20241023後安裝的</font>，要用<font color="#f00">ubuntu24.04.1</font>不能用22的版本

:::spoiler ubuntu24.04.1 vmtools install
```
sudo apt install open-vm-tools open-vm-tools-desktop
```
:::
# 初始環境設定
## 1. VMware設定

* 需要設定VT-x/EPT 開啟
![image](https://hackmd.io/_uploads/HkYFPrLb1e.png)
## 2. ubuntu install
* [	ubuntu-22.04.5-desktop-amd64.iso](https://releases.ubuntu.com/jammy/ubuntu-22.04.5-desktop-amd64.iso)
* [日本載點 ubuntu-24.04.3-desktop-amd64.iso](https://ftp.udx.icscoe.jp/Linux/ubuntu-releases/24.04.3/ubuntu-24.04.3-desktop-amd64.iso) 選這個
* [台灣載點 ubuntu-24.04.3-desktop-amd64.iso](https://mirror.twds.com.tw/ubuntu-releases/24.04.3/ubuntu-24.04.3-desktop-amd64.iso)
![image](https://hackmd.io/_uploads/rkLUd5J0R.png)
* 要選最小安裝 Minimal installation
    :::danger
    VMware的使用者帳號必須設為==cape==，因為後面服務或是其他設定都會用到
    
    密碼這裡如果用==特殊符號==，後面設定==cape.sh==安裝資料庫需要轉代碼才能登入，需要多留意。
    :::
    ![image](https://hackmd.io/_uploads/Hyw5d910C.png)
    ubuntu24
    ![image](https://hackmd.io/_uploads/BJWXoV-plx.png)

- 環境更新
    ```
    sudo apt update && sudo apt upgrade -y 
    sudo apt-get install git -y
    sudo apt install open-vm-tools-desktop -y
    sudo reboot
    ```
    :::spoiler
    1. 更新KVM 
        - 套件安裝  (ubuntu24可略過)
        `sudo apt-get install -y git build-essential cmake ninja-build python3-dev cython3 pybind11-dev python3-pip libre2-dev acpica-tools net-tools gperf dbus-x11`
        - kvm-qemu檔案下載
        `wget https://raw.githubusercontent.com/doomedraven/Tools/master/Virtualization/kvm-qemu.sh`

    - 提取和反編譯 ACPI
    ```
    sudo acpidump > acpidump.out
    sudo acpixtract -a acpidump.out
    sudo iasl -d dsdt.dat
    ```
    :::
    :::spoiler 註解說明
            > * 提取和反編譯 ACPI (Advanced Configuration and Power Interface) 表格的。ACPI 是一種用於電腦系統與操作系統之間管理電源的標準。以下是每個指令的作用：
            > * sudo acpidump > acpidump.out： 
            > 這個指令使用 acpidump 來提取系統中的 ACPI 表格並將其保存到 acpidump.out 檔案中。ACPI 表格包含與電源管理、硬體配置等相關的信息。
            > * sudo acpixtract -a acpidump.out： 
            > 這個指令使用 acpixtract 從 acpidump.out 檔案中提取所有的 ACPI 表格（例如 DSDT、SSDT 等），並將它們保存為單獨的檔案（如 dsdt.dat）。
            > * sudo iasl -d dsdt.dat： 
            > 這個指令使用 iasl（Intel ACPI Source Language 編譯器）來反編譯 dsdt.dat，將它轉換為人類可讀的 ASL（ACPI Source Language）源代碼。DSDT（Differentiated System Description Table）是最主要的 ACPI 表格之一，定義了系統的硬體抽象層。
    :::
- 執行到sudo iasl -d dsdt.dat的時候須留意
下圖示教學的範例，在這特別注意 BXPC 需要改成系統安裝時的代號，在這裡設定的代號，為KVM會實際使用記憶體名稱，如果是用亂數代替，在分析時可能會無法對記憶體進行分析
![image](https://hackmd.io/_uploads/BkIvF51CA.png)
下圖示我實際安裝時，名稱為==Custom==
![image](https://hackmd.io/_uploads/rJFH9cyAA.png)

# 下載capev2

    git clone https://github.com/kevoreilly/CAPEv2.git
    cd CAPEv2/installer
    
## 設定
1. 取代kvm-qemu裡面實體名稱
`sed -i 's/<WOOT>/Custom/g' kvm-qemu.sh`
1. 修改執行權限
`sudo chmod +x kvm-qemu.sh`
1. 開始安裝kvm-qemu
    ```
    sudo ./kvm-qemu.sh all cape | tee kvm-qemu.log
    sudo reboot
    sudo ./kvm-qemu.sh virtmanager cape | tee kvm-qemu-virtmanager.log
    sudo reboot
    ```
    這裡參數的==cape==是本機使用者，**會持續一段很長的編譯安裝時間**    
    
1. 檢查qemu狀態
    - 安裝完成的KVM 打開會成這樣，就是安裝完成了
![image](https://hackmd.io/_uploads/Skwy1i1A0.png)

---
# QEMU
## 1. 環境準備 
### Win_iso
- windows10 iso檔可以到這裡下載，記得下載win10版本
https://github.com/mrrobot1o1/OS-Downloads?tab=readme-ov-file
- 這裡是序號
https://gist.github.com/c7x43t/ceb8ab75da308ea820546375e9230dd9
### Win_sandbox
- 先切換路徑，並下載下列檔案
`cd ~/Download`
    #### 環境檢查
    1. https://github.com/a0rtega/pafish
    #### 安裝軟體
    1. https://www.python.org/ftp/python/3.10.6/python-3.10.6.exe
    1. http://www.oldversion.com/windows/acrobat-reader-xi-11-0-01
    1. https://www.oracle.com/java/technologies/downloads/archive/
    #### 停用更新
    1. https://github.com/tsgrgo/windows-update-disabler
    1. https://github.com/WereDev/Wu10Man
    #### 停用防毒
    1. https://github.com/W4RH4WK/Debloat-Windows-10
    1. https://github.com/ionuttbara/windows-defender-remover/releases/download/release_def_12_8/DefenderRemover.exe

    #### 上傳agent py

    - 把/opt/CAPEv2/agent/裡面的agent.py複製到同一個資料夾
    ![image](https://hackmd.io/_uploads/Sk50to1AA.png)
---


## 2. 安裝windows，打開Virt-Manager
- 安裝
![image](https://hackmd.io/_uploads/SJVwcoy0A.png)
- 新增一個VM
![image](https://hackmd.io/_uploads/Hyzt5iyAC.png)
- 選擇ios檔
![image](https://hackmd.io/_uploads/B1o2qoJR0.png)
- 最後設定為這樣
![image](https://hackmd.io/_uploads/BykdiiJAC.png)
- 需要特別注意Name:==win10== 是後面要設定的名稱

## 3. 開始安裝

- 先中斷vmware的對外網路連線
![image](https://hackmd.io/_uploads/rJcN6ikCA.png)
==不要設密碼==，選擇自訂安裝整顆硬碟

- 在 Windows 搜尋列中鍵入「服務」並開啟「服務」應用程式。捲動找到“Windows 更新”，雙==雞==它，然後按一下“停止”以停止任何正在進行的更新。將啟動類型設為停用，以防止將來透過點擊屬性自動進行更新
![image](https://hackmd.io/_uploads/SyYmLnJR0.png)


- 刪除Task Scheduler >Windows Update：

- 開啟Task Scheduler (任務規劃程式)並導航至 Microsoft 資料夾。在 Windows 中尋找與 Windows Update 相關的資料夾。刪除這些資料夾中的所有任務，以確保它們不會重新啟用您已停用的服務或設定。
![image](https://hackmd.io/_uploads/rkL2U2kAC.png)


- Configure PowerShell:

    - Open an Administrator PowerShell session.Type 

        `Set-ExecutionPolicy Unrestricted `

    - and hit Enter. Confirm by typing A for all. Enter 

        `netsh interface teredo set state disabled `

        and press Enter.
![image](https://hackmd.io/_uploads/rJKLOp1A0.png)


- Navigate to Computer Configuration > Administrative Templates > Network > DNS Client, and open Turn off Multicast Name Resolution. Enable it.
![image](https://hackmd.io/_uploads/B1fVYakR0.png)
![image](https://hackmd.io/_uploads/SJCWY6yAA.png)

- Go to Computer Configuration > Administrative Templates > System > Internet Communication Management, and open Restrict Internet Communication. Enable this setting to further reduce system noise.
![image](https://hackmd.io/_uploads/Bk9TFaJRR.png)
![image](https://hackmd.io/_uploads/S1F2K6100.png)

![image](https://hackmd.io/_uploads/SyQlQJeRR.png)

## 4. 安裝choco 
在install資料夾內 有choco.bat
```
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
```


## 4. 佈置agent.py利用徘程登入啟動

- 建立快照

## 5. 最後的CAPE設定，與受測環境連接
    cd /opt/CAPEv2/conf/

1. `nano /opt/CAPEv2/conf/cuckoo.conf` 
修改resultserver
![image](https://hackmd.io/_uploads/HJm4xjXC0.png)

1. `nano /opt/CAPEv2/conf/kvm.conf `
如下圖所示
![image](https://hackmd.io/_uploads/B1OlTY70A.png)


1. `參考設定 nano /opt/CAPEv2/conf/kvm.conf` 
![image](https://hackmd.io/_uploads/HJvJZi70R.png)
![image](https://hackmd.io/_uploads/By6hZi7CA.png)
![image](https://hackmd.io/_uploads/rkf0WjX00.png)




# CAPEV2安裝
1. 下載檔案
`cd~`
`git clone https://github.com/kevoreilly/CAPEv2.git`

- 可先查看自己kvm網卡 
`ip a`
![image](https://hackmd.io/_uploads/SyS029kRR.png)
> 最下一行
> ==virbr0==: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
>     link/ether 52:54:00:3d:27:85 brd ff:ff:ff:ff:ff:ff
>     inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
>        valid_lft forever preferred_lft forever
> 
> **記得virbr0 跟inet 192.168.122.1，這是到時候需要改的**

- 切換路徑
`cd CAPEv2/installer`

     再來是修改cape2.sh

    > 一共改了
    > NETWORK_IFACE=virbr0
    > IFACE_IP="192.168.122.1"
    > PASSWD="1qaz2wsx"
    > DIST_MASTER_IP="192.168.122.1"
    > USER="cape"
    - [ ] librenms_enable=1(還在測試)
    - [ ] clamav_enable=1(還在測試)
    - [ ] librenms_ipmi=1(還在測試)

![image](https://hackmd.io/_uploads/HJVKcY_ekx.png)
:::spoiler 圖示說明
上面圖中的設定檔案主要用於配置 CAPE（可能是 CAPEv2 惡意軟體分析平台）和一些監控工具（如 Prometheus、Grafana、LibreNMS 等）的環境參數，以下是各個參數的說明：

1.  **NETWORK_IFACE=virbr0**
    
    -   這裡定義了 CAPE 使用的網路接口名稱（這裡是 `virbr0`），用於捕捉網路流量。
2.  **IFACE_IP="192.168.122.1"**
    
    -   這個參數定義了 TOR 服務應該監聽的 IP 地址。
3.  **INTERNET_IFACE=$(ip route | grep '^default'|awk '{print $5}')**
    
    -   這行指令會自動檢測並設置默認的網路接口名稱，通常用於路由到外部網路。
4.  **PASSWD="1qaz2wsx"**
    
    -   資料庫的密碼。
5.  **DIST\_MASTER\_IP="192.168.1.1"**
    
    -   如果你使用分布式 CAPE 並且 MongoDB 進行分片的話，這是主控節點的 IP 地址。
6.  **USER="cape"**
    
    -   指定使用者名稱（這裡是 `cape`）。
7.  **nginx_version=1.25.3**
    
    -   Nginx 的版本號設定。
8.  **prometheus_version=2.20.1**
    
    -   Prometheus 的版本號設定。
9.  **grafana_version=7.1.5**
    
    -   Grafana 的版本號設定。
10.  **node\_exporter\_version=1.0.1**
    
    -   Node Exporter 的版本號，用於監控 Linux 系統的資源。
11.  **librenms_enable=0**
    
    -   是否啟用 LibreNMS（0 表示關閉）。
12.  **snmp_community=ChangeMePublicRO**
    
    -   設定 SNMP 的 community string（公共字串，用來驗證 SNMP 訪問）。這個參數設為 `ChangeMePublicRO`，需要修改以符合實際情況。
13.  **snmp_agentaddress=""**
    
    -   SNMP 代理地址。若留空，則預設值會被使用。
14.  **snmp_location='Rack, Room, Building, City, Country \[GPSX,Y\]'**
    
    -   SNMP 的地點資訊，這裡描述的是設備的位置（如機櫃、房間、建築物、城市和國家），可以包含 GPS 座標。
15.  **snmp_contact='Foo foo@bar'**
    
    -   SNMP 的聯絡人資訊，這裡是用戶自定義的聯絡信息。
16.  **clamav_enable=0**
    
    -   是否啟用 ClamAV（0 表示關閉）。
17.  **librenms_ipmi=0**
    
    -   是否通過 LibreNMS 啟用 IPMI 感測器檢查（0 表示關閉）。
18.  **librenms\_mongo\_args=''**
    
    -   要傳遞給 `/usr/lib/nagios/plugins/check_mongodb.py` 的參數。這裡目前為空，表示使用默認參數。
19.  **librenms\_clamav\_warn=2**
    
    -   ClamAV 的警告閾值（2），表示檢測到 2 個威脅時觸發警告。
20.  **librenms\_clamav\_crit=3**
    
    -   ClamAV 的嚴重級別閾值（3），表示檢測到 3 個威脅時觸發嚴重告警。

:::




2. 增加執行權限
`sudo chmod +x cape2.sh`

3. 開始安裝cape2
`sudo ./cape2.sh base | tee cape.log`
 `這裡使用base這個參數，是基礎安裝，可以查看-h說明`
![image](https://hackmd.io/_uploads/SJBm0cyR0.png)

- 安裝會遇到一個Wireshark-common確認 可以選 yes
![translated_image_zh-TW](https://hackmd.io/_uploads/H1HCvc1C0.png)

4. 到這裡安裝完CAPE2 重新啟動
`sudo reboot`

5. 設定postgres資料庫
`sudo -u postgres psql`
`ALTER DATABASE cape OWNER TO cape;`
`\q`
![image](https://hackmd.io/_uploads/S1IRes1AC.png)

6. CAPEv2服務檢查
`cd /opt/CAPEv2`
`sudo journalctl -u cape.service`

7. 到這裡會發現錯誤，必須安裝peepdf, batch_deobfuscator, or httpreplay
![image](https://hackmd.io/_uploads/ryW9-okCA.png)

- 安裝peepdf
    `poetry run pip3 install https://github.com/CAPESandbox/peepdf/archive/20eda78d7d77fc5b3b652ffc2d8a5b0af796e3dd.zip#egg=peepdf==0.4.2`
- 安裝batch_deobfuscator:
    `poetry run pip3 install -U git+https://github.com/DissectMalware/batch_deobfuscator`
- 安裝httpreplay:
    `poetry run pip3 install -U git+https://github.com/CAPESandbox/httpreplay`


***到這裡第一部份就安裝完了，接者第二部份開始***

---





# **補充功能： INetSim**

安裝和配置一個網絡模擬服務，例如 INetSim（Internet Services Simulation Suite），是一種有效的方式來模擬網絡服務，並允許惡意軟件進行通信而不必連接到真實的互聯網 ：
1. 安裝
`sudo apt install inetsim`
2. 配置 INetSim
`sudo nano /etc/inetsim/inetsim.conf`
- 主要需要配置的參數包括，服務器 IP 地址：設定虛擬機的 IP 來進行流量的模擬。例如，設置本地虛擬網絡接口 192.168.1.2： 

    `service_bind_address 192.168.1.2`
- DNS 服務：如果需要模擬 DNS 請求，可以啟用 DNS 並配置端口（默認為 53）： 

    ```
    dns_default_ip 192.168.1.2
    dns_bind_port 53
    ```
3. 設定開啟網卡啟用
- 在這裡需要檢查有沒有實體IP能用 
`ip a`
- 然後再進行IP綁定
`sudo ip addr add 192.168.122.10/24 dev <你的網卡名稱>`
![image](https://hackmd.io/_uploads/ryEedwvgyl.png)

- 開機綁定，修改interfaces
    `sudo nano /etc/network/interfaces`
- 新增文件內容
    ```
    auto <你的網卡名稱>
    iface <你的網卡名稱> inet static
    address 192.168.122.10
    netmask 255.255.255.0
    ```


4. 啟動 INetSim
    `sudo inetsim`

- 配置 CAPEv2 與 INetSim 的
    在 CAPEv2 的 routing.conf 或相似的配置文件中，找到     inetsim 配置部分，並確保它與 INetSim 的服務器 IP     和接口一致：
    
    ```
    [inetsim]
    enabled = yes
    server = 192.168.1.2  # INetSim 伺服器的 IP 地址
    dnsport = 53
    interface = virbr1  # CAPEv2 使用的虛擬網絡接口
    ```

5. 除錯 
-    刪除 PID 文件    如果進程已經終止，但 PID 文件仍然存在，需要手動刪除該文件：
    `sudo rm /var/run/inetsim.pid`
-    重新啟動 INetSim
    `sudo inetsim`

:::spoiler **正常畫面**
![image](https://hackmd.io/_uploads/BJvoOKOgyx.png)
:::


---
# 常用指令

停止
` sudo systemctl stop cape`
重新啟動
   ` sudo systemctl restart cape`
手動執行 cuckoo.py
    `poetry run python cuckoo.py`
檢查服務正常
	`sudo journalctl -u cape.service`
postgresql
	檢查狀態：
	`sudo systemctl status postgresql`
	啟動 PostgreSQL：
	`sudo systemctl start postgresql`
	重新啟動 PostgreSQL：
	`sudo systemctl restart postgresql`

清除所有任務和樣本
`	poetry run python /opt/CAPEv2/utils/cleaners.py --clean`
執行清除後必須重新啟動 CAPE 服務，因為它會破壞資料庫
`	sudo systemctl restart cape`
更新
`sudo -u cape poetry install`
`sudo -u cape poetry update`




---
:::spoiler 上傳介面說明
1. Disable process dumps: 禁用進程轉儲功能，這樣分析期間不會保存內存中的進程數據，這通常用于保護內存內容不被保存以便進一步分析。
1. Full process memory dumps: 啟用完整進程的內存轉儲，將分析的進程內存整體保存下來，便於後續調試或深入分析。
1. AMSI dumps (Windows 10+ Anti-Malware Scan Interface): 生成 AMSI 轉儲，AMSI 是 Windows 10 及以上版本的反惡意軟件掃描接口，這可以捕捉惡意軟件與該接口的交互情況。
1. Enable import reconstruction in process dumps: 在進程轉儲中啟用導入表重建，這可以幫助分析 PE 文件的導入表，特別是當惡意軟件混淆或修改了導入表時。
1. Enforce Timeout: 強制超時控制，當分析進程達到一定時間時強制停止，防止惡意軟件使用長時間的延遲技術來躲避分析。
1. Run without monitoring (disables many capabilities): 無監控模式運行，這會禁用大部分沙盒的監控功能，適用於特定場景，例如需要最少的干預來觀察惡意軟件的自然行為。
1. 'Active' unpacking (uses debugger breakpoints): 主動解包，使用調試器斷點來捕獲並解包加密或混淆的惡意軟件。
1. Syscall hooks (Windows 10+): 使用系統調用鉤子，監控 Windows 10 及以上版本的內核層次調用，這可以幫助捕捉惡意軟件在系統中的行為。
1. No Fake Referrer for URL Tasks: 禁用虛假引用頭信息，對 URL 任務不使用虛假請求頭，這樣可以觀察惡意軟件如何處理真實的網絡環境。
1. Disable automated interaction: 禁用自動化的交互操作，防止沙盒系統自動與惡意軟件進行交互，如自動點擊或打開窗口。
1. Interactive desktop: 啟用互動式桌面，允許人工監控和與虛擬機交互，適合需要手動干預的分析場景。
1. Manual detonation. Must be used with Interactive desktop: 手動觸發，必須與互動桌面配合使用。允許分析人員手動啟動惡意軟件，而不是依賴自動化執行。
1. Try to extract config without VM (Submit to VM if not extracted): 嘗試在不使用虛擬機的情況下提取配置，如果無法提取則提交給虛擬機進行進一步分析。
1. Thread-based monitor injection (Cuckoo-style): 使用基於線程的監控注入技術，這是 Cuckoo 沙盒風格的技術，用來注入監控代碼以捕捉惡意軟件的行為。
:::
![image](https://hackmd.io/_uploads/r1dOHczAC.png)




# journalctl 指令
journalctl 是用來查看系統日誌的工具，要清除所有日誌，你可以使用以下命令：
1. 清除1秒前的所有日誌
`sudo journalctl --vacuum-time=1s`
1. 如果你只想清除特定單一服務的日誌，例如 cape.service，可以使用：
`sudo journalctl --vacuum-files=1`
1. 持續查看 CAPE 服務的執行狀況
你可以使用以下命令來持續實時顯示 cape.service 服務的日誌輸出：
`sudo journalctl -u cape.service -f`

[我把環境備份在這裡了](https://github.com/waason/ "游標顯示")