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