NSA DanderSpiritz測試指南——木馬生成與測試
0x00 前言
DanderSpritz是NSA的一款界面化的遠控工具,基於FuzzBunch框架,執行Start.jar即可啟動。
在實際測試過程中,由於缺少說明文檔,遇到的問題有很多,同時一些細節也值得深入研究。所以本文將要幫助大家答疑解惑,分享測試心得,結合木馬特點分析防禦思路。
0x01 簡介
本文將要介紹以下內容:
執行pc_prep無法獲得回顯的原因及解決方法
Pc同Pc2.2的區別
level3和level4木馬代表的含義及如何使用
各類型木馬區別
dll木馬利用方式
Windows單條日誌刪除功能
木馬查殺思路
0x02 實際測試
測試環境:Win7 x86
安裝如下工具:
python2.6
pywin32
jdk
1、下載fuzzbunch
參考鏈接:https://github.com/3gstudent/fuzzbunch
註:
我fork了公開的fuzzbunch項目(https://github.com/fuzzbunch/fuzzbunch),並添加了部分內容,解決了一個bug,具體內容會在後面介紹
2、直接運行Start.jar
如圖
設置啟動參數,Log Directory需要設置成固定格式:c:logsxxx(xxx任意名稱)
否則,會出現報錯,如下圖
註:
網上的部分分析文章認為應該先用fb.py生成一個日誌文件,接著Start.jar指向該目錄,其實不需要,只要路徑格式正確即可
3、執行pc_prep配置木馬
輸入pc_prep獲得回顯,如下圖
註:
有很多人在測試的時候發現輸入pc_prep無法獲得回顯,如下圖
原因:
fuzzbunch工程下載自如下鏈接:https://github.com/x0rz/EQGRP_Lost_in_Translation
文件缺失,導致該錯誤。
正確的下載位置:https://github.com/fuzzbunch/fuzzbunch
但是,下載後還需要補全缺失的文件,才能完全正常使用。
我fork了上述工程,並補全了缺失文件,下載我的github即可解決上述問題,地址如下:https://github.com/3gstudent/fuzzbunch
補充:
在之前的測試過程中,使用了存在bug的版本,雖然pc_prep無法獲得回顯,但是使用pc2.2_prep可以生成木馬。如下圖
可是木馬無法回連
猜測原因:
pc相對於Pc2.2版本更高,低版本已經不再使用。
查看ResourcesPc2.2Version.xml,顯示:PeddleCheap 2.2.0.2,表示Pc2.2對應的PeddleCheap版本為2.2.0.2。
查看ResourcesPcVersion.xml,顯示:PeddleCheap 2.3.0,表示Pc對應的PeddleCheap版本為2.3.0。
註:
PeddleCheap用來操作同木馬通信,在DanderSpritz主面板顯示
4、木馬分類
可選擇的木馬類型如下:
1) - Standard TCP (i386-winnt Level3 sharedlib)
2) - HTTP Proxy (i386-winnt Level3 sharedlib)
3) - Standard TCP (i386-winnt Level3 exe)
4) - HTTP Proxy (i386-winnt Level3 exe)
5) - Standard TCP (x64-winnt Level3 sharedlib)
6) - HTTP Proxy (x64-winnt Level3 sharedlib)
7) - Standard TCP (x64-winnt Level3 exe)
8) - HTTP Proxy (x64-winnt Level3 exe)
9) - Standard TCP Generic (i386-winnt Level4 sharedlib)
10) - HTTP Proxy Generic (i386-winnt Level4 sharedlib)
11) - Standard TCP AppCompat-enabled (i386-winnt Level4 sharedlib)
12) - HTTP Proxy AppCompat-enabled (i386-winnt Level4 sharedlib)
13) - Standard TCP UtilityBurst-enabled (i386-winnt Level4 sharedlib)
14) - HTTP Proxy UtilityBurst-enabled (i386-winnt Level4 sharedlib)
15) - Standard TCP WinsockHelperApi-enabled (i386-winnt Level4 sharedlib)
16) - HTTP Proxy WinsockHelperApi-enabled (i386-winnt Level4 sharedlib)
17) - Standard TCP (i386-winnt Level4 exe)
18) - HTTP Proxy (i386-winnt Level4 exe)
19) - Standard TCP (x64-winnt Level4 sharedlib)
20) - HTTP Proxy (x64-winnt Level4 sharedlib)
21) - Standard TCP AppCompat-enabled (x64-winnt Level4 sharedlib)
22) - HTTP Proxy AppCompat-enabled (x64-winnt Level4 sharedlib)
23) - Standard TCP WinsockHelperApi-enabled (x64-winnt Level4 sharedlib)
24) - HTTP Proxy WinsockHelperApi-enabled (x64-winnt Level4 sharedlib)
25) - Standard TCP (x64-winnt Level4 exe)
26) - HTTP Proxy (x64-winnt Level4 exe)
按平台區分:x86、x64
按文件格式區分:exe、dll
按通信協議區分:Standard TCP、HTTP Proxy
按功能區分:Standard、AppCompat-enabled、UtilityBurst-enabled、WinsockHelperApi-enabled
按Level區分:Level3、Level4
註:
經實際測試,Level代表回連方式
level3表示反向連接,控制端監聽埠,等待回連
leve4表示正向連接,目標主機監聽埠,等待控制端主動連接
5、木馬測試
選擇代表性的進行測試
(1)Level3,選擇 3) - Standard TCP (i386-winnt Level3 exe)
按配置生成exe(此處不具體介紹,參照其他文章)
DanderSpiritz控制端選擇PeddleCheap-Listen-Start Listening
在目標主機直接執行exe
等待回連
操作同正常的反向連接木馬
註:
日誌文件下生成2個文件PC_Level3_exe.base和PC_Level3_exe.configured。PC_Level3_exe.base為模板文件,來自於ResourcesPcLevel3i386-winntrelease,PC_Level3_exe.configured為加入配置參數的文件。兩個文件大小相同,但在特定位置存在差異,如下圖
(2)Level3,選擇 6) - HTTP Proxy (x64-winnt Level3 sharedlib)
按配置生成PC_Level3_http_dll.configured(此處不具體介紹,參照其他文章)
載入方式:
1.利用DoublePulsar載入dll
(此處不具體介紹,參照其他文章)
2.手動載入dll
使用dumpbin查看dll的導出函數,如下圖
ordinal為1對應的dll導出函數名為rst32
也就是說,我們可以嘗試通過rundll32直接載入該dll
命令行代碼如下:
rundll32 PC_Level3_http_dll.configured,rst32
木馬正常回連
註:
對於http協議的木馬,記得設置listen協議的時候要選擇http
(3)Level4,選擇 17) - Standard TCP (i386-winnt Level4 exe)
按配置生成PC_Level4_exe.configured(可使用高級模式,指定固定監聽埠)
啟動exe後執行netstat -ano可看到開啟了固定埠
DanderSpiritz控制端選擇PeddleCheap-Connect,選擇ip,填入Level 4對應的埠
正向連接
(4)Level4,選擇 9) - Standard TCP Generic (i386-winnt Level4 sharedlib)
按配置生成PC_Level4_dll.configured(可使用高級模式,指定固定監聽埠)
查看其導出函數,如下圖
也就是說,不支持直接通過rundll32載入
猜測:
Level4的木馬要一直運行在後台,考慮到隱蔽性,所以不支持該功能
給出一種dll載入的測試方法:通過APC注入
如下圖,成功載入,打開監聽埠
參考代碼:
https://github.com/3gstudent/Inject-dll-by-APC/blob/master/test.cpp
註:
被注入的程序需要管理員許可權,否則會因為許可權問題無法打開監聽埠
給出另二種dll載入的測試方法:通過Application Compatibility Shims
可參考以下鏈接:
https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%B5%8B%E8%AF%95%E4%B8%AD%E7%9A%84Application-Compatibility-Shims/
如下圖,成功載入,打開監聽埠
(5)Level4,選擇 11) - Standard TCP AppCompat-enabled (i386-winnt Level4 sharedlib)
根據字面意思,猜測是支持Application Compatibility Shims
比較Generic和AppCompat-enabled的區別:
二者大小一樣,就是AppCompat-enabled多了一個導出函數GetHookAPIs
如下圖
0x03 木馬功能
木馬連接成功後,自動開始信息搜集,返回各種詳細信息。比較人性化的設計是會自動詢問用戶是否提權,在檢測到環境安全後會詢問用戶是否需要導出hash。
待信息搜集完成後,輸入help可獲得支持的操作
註:
help獲得的內容不完整,輸入aliases可獲得更多操作命令介紹
help+命令可獲得具體命令的操作介紹
例如,輸入help eventlogedit,回顯如圖
1、日誌操作功能
關於日誌操作的命令如下:
eventlogclear
eventlogedit
eventlogfilter
eventlogquery
具體功能如下:
eventlogquery:
統計日誌列表,查詢所有日誌信息,包含時間,數目
可查詢指定類別的日誌信息,包含時間,數目,命令如下:
eventlogquery -log Setup
該操作等價於
wevtutil.exe gli setup
註:wevtutil.exe操作系統默認包含
eventlogfilter:
查看指定類別的日誌內容
命令如下:
eventlogfilter -log Setup -num 19
該操作等價於
wevtutil qe /f:text setup
eventlogedit:
刪除單條日誌
可刪除單條日誌內容,命令如下:
eventlogedit -log Setup -record 1
註:
record序號可通過eventlogfilter獲得
該命令暫沒有公開工具支持
eventlogclear:
刪除該類日誌所有內容
命令如下:
eventlogclear -log Microsoft-Windows-Dhcpv6-Client/Admin
該操作等價於
wevtutil cl Microsoft-Windows-Dhcpv6-Client/Admin
0x04 木馬查殺思路
DanderSpritz的木馬生成方式如下:
文件夾ResourcesPcLevel3和ResourcesPcLevel4下保存模板文件,固定位置預留參數配置信息,實際生成時向模板文件寫入配置信息
目前殺毒軟體已經對這些模板文件成功識別並查殺,同時,這些模板文件的代碼並沒有開源,也會提高在惡意利用上面的門檻
建議普通用戶:更新系統補丁、更新殺毒軟體病毒庫,就能夠防範該工具的攻擊。
0x05 小結
本文分享了DanderSpiritz的測試心得,希望能夠幫助大家在技術研究上對其有更好的認識,省略了部分具體利用細節和章節,以防該工具被濫用。
本文為 3gstudent 原創稿件,授權嘶吼獨家發布,未經許可禁止轉載
※利用SCOM捕獲創建可疑進程的事件
※0點之後,報名通道關閉!
※惡意軟體偽裝成遊戲攻略應用偷跑廣告,Google Play商店數十萬用戶中招
※利用Office載入項進行持久化控制的6種姿勢
※物聯網變身黑暗森林:殭屍網路、守護者、毀滅者層出不窮
TAG:嘶吼RoarTalk |
※Gradle Kotlin DSL的accessors 生成問題
※DeepMind 最新Science論文:生成查詢網路GQN
※SpringMVC,Spring,Hibernate框架自動生成器
※TensorFlow官方力推、GitHub爆款項目:用Attention模型自動生成圖像字幕
※CodeWarrior IDE使用Tips-使用burner將elf文件轉換生成HEX和BIN文件的方法和步驟詳解
※教你在Python中用Scikit生成測試數據集
※WordPress怎麼生成sitemap.xml?插件XML Sitemap & Google News
※「Science重磅」DeepMind生成查詢網路GQN,無監督學習展現3D場景
※使用gradle生成Spring Boot應用的Docker Image
※Regenerate Thumbnails讓WordPress重新生成特色圖像更簡單
※NetCore2.1 WebAPI 根據swagger.json自動生成客戶端代碼
※自動「腦補」3D環境!DeepMind最新Science論文生成查詢網路GQN
※Additive Works推出用於生成3D列印支撐的新Amphyon模塊
※GreenDAO系列(二)GreenDao 代碼生成策略分析
※Ian Goodfellow:生成對抗網路 GAN 就是強化學習(超全資料)
※Mybatis+velocity自動生成代碼
※4月Feelreal將為氣味生成面具再次開啟Kickstarter眾籌
※使用 Lets Encrypt 生成免費的 SSL 證書
※「python」生成器的高級應用send、close和throw方法
※Ian Goodfellow:生成對抗網路 GAN 就是強化學習 超全資料