**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 開啟

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

* 要選最小安裝 Minimal installation
:::danger
VMware的使用者帳號必須設為==cape==,因為後面服務或是其他設定都會用到
密碼這裡如果用==特殊符號==,後面設定==cape.sh==安裝資料庫需要轉代碼才能登入,需要多留意。
:::

ubuntu24

- 環境更新
```
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會實際使用記憶體名稱,如果是用亂數代替,在分析時可能會無法對記憶體進行分析

下圖示我實際安裝時,名稱為==Custom==

# 下載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 打開會成這樣,就是安裝完成了

---
# 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複製到同一個資料夾

---
## 2. 安裝windows,打開Virt-Manager
- 安裝

- 新增一個VM

- 選擇ios檔

- 最後設定為這樣

- 需要特別注意Name:==win10== 是後面要設定的名稱
## 3. 開始安裝
- 先中斷vmware的對外網路連線

==不要設密碼==,選擇自訂安裝整顆硬碟
- 在 Windows 搜尋列中鍵入「服務」並開啟「服務」應用程式。捲動找到“Windows 更新”,雙==雞==它,然後按一下“停止”以停止任何正在進行的更新。將啟動類型設為停用,以防止將來透過點擊屬性自動進行更新

- 刪除Task Scheduler >Windows Update:
- 開啟Task Scheduler (任務規劃程式)並導航至 Microsoft 資料夾。在 Windows 中尋找與 Windows Update 相關的資料夾。刪除這些資料夾中的所有任務,以確保它們不會重新啟用您已停用的服務或設定。

- 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.

- Navigate to Computer Configuration > Administrative Templates > Network > DNS Client, and open Turn off Multicast Name Resolution. Enable it.


- Go to Computer Configuration > Administrative Templates > System > Internet Communication Management, and open Restrict Internet Communication. Enable this setting to further reduce system noise.



## 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

1. `nano /opt/CAPEv2/conf/kvm.conf `
如下圖所示

1. `參考設定 nano /opt/CAPEv2/conf/kvm.conf`



# CAPEV2安裝
1. 下載檔案
`cd~`
`git clone https://github.com/kevoreilly/CAPEv2.git`
- 可先查看自己kvm網卡
`ip a`

> 最下一行
> ==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(還在測試)

:::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說明`

- 安裝會遇到一個Wireshark-common確認 可以選 yes

4. 到這裡安裝完CAPE2 重新啟動
`sudo reboot`
5. 設定postgres資料庫
`sudo -u postgres psql`
`ALTER DATABASE cape OWNER TO cape;`
`\q`

6. CAPEv2服務檢查
`cd /opt/CAPEv2`
`sudo journalctl -u cape.service`
7. 到這裡會發現錯誤,必須安裝peepdf, batch_deobfuscator, or httpreplay

- 安裝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 <你的網卡名稱>`

- 開機綁定,修改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 **正常畫面**

:::
---
# 常用指令
停止
` 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 沙盒風格的技術,用來注入監控代碼以捕捉惡意軟件的行為。
:::

# 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/ "游標顯示")