王東海,張 昊
(蘇州工業(yè)職業(yè)技術學院,江蘇 蘇州 215104)
隨著計算機技術的飛速發(fā)展和網(wǎng)絡的普及,給人們的生活帶來極大便捷的同時,網(wǎng)絡攻擊也日益增多,大量的企業(yè)和個人都面臨被攻擊和入侵的風險。在2014年DerbyCon的黑客大會上[1],柏林的安全研究人員公布了Badusb的危害,這種漏洞會危及大部分帶有USB接口的主機,而現(xiàn)在使用USB接口的設備越來越多[2],含有惡意代碼的USB設備一旦插入電腦,可控制電腦并傳播事先準備好的USB病毒[3]。因此,Badusb的攻擊手段引起了各個企業(yè)和研究人員的重視,研究其防范措施也變得十分重要。
Arduino是一款操作方便、易于學習的開源電子平臺。電子板上的微處理器可以通過Arduino的編程語言進行程序編寫,生成編譯出的hex文件燒錄進電子板,就可以通過微處理器來控制電路板上的各種硬件。
Cobalt Strike是一款用來進行滲透測試的工具,可以控制木馬,主要功能有端口轉發(fā)、端口掃描、生成木馬、克隆站點等。
Arduino Leonardo芯片是Atmel ATmega32u4型微控制器,可以提供20個數(shù)字IO(其中7個可以用來PWM輸出,12個用作模擬輸入)、一個16 MHz晶體振蕩器、一個微型USB連接、一個電源插孔、一個ICSP接頭盒和一個復位開關。ATmega32U4 MCU內置了USB的通信模塊,不需要輔助處理器,允許Leonardo作為HID設備連接計算機[4]。
一般情況下,普通的木馬都是通過互聯(lián)網(wǎng)進入目標主機,但要入侵主機,需要滿足的條件比較苛刻,主要有以下幾個因素:
(1)需要在互聯(lián)網(wǎng)上偽裝成正常軟件,誘導用戶下載。
(2)需要通過瀏覽器的安全檢測。
(3)需要通過殺毒軟件的安全檢測。
(4)在運行時,需要通過殺毒軟件的行為偵查檢測。
可以看出,普通木馬想要大展身手,最關鍵的就是如何進入被控制的主機,這種攻擊手法無法針對某臺特定主機進行攻擊。因此,通過具有社會工程學性的攻擊(即直接對物理設備)是一種比較好的選擇,將Shellcode放在服務器上,利用Badusb觸發(fā)下載Shellcode,并運行Shellcode,由于這個過程沒有文件落地,目標主機即使發(fā)現(xiàn)了入侵行為,也無法將木馬清除。
本設計選擇采用病毒免殺技術,即通過修改源碼,避免殺毒軟件通過檢測MD5值進行查殺。具體步驟如下:
(1)將主要函數(shù)內容復制出來。
(2)將內容加密成Base64編碼。
(3)將編碼分別賦值給函數(shù)$a1-$a5。
(4)設置函數(shù)$a6,即將$a1-$a5賦值給它,base64解碼并運行。
2.2.1 中文輸入法繞過
Badusb搭載Arduino驅動,通過Arduino IDE接收到Arduino代碼后,調用Arduino官方的鍵盤庫,進行模擬鍵盤操作控制主機,調用Keyboard.h庫后,啟動鍵盤模擬,用Keyboard.println函數(shù)對主機發(fā)送鍵盤的指令。
Keyboard.println函數(shù)向連接的主機發(fā)送一個鍵盤按鍵動作,以換行符和回車符結束。但在仿真環(huán)境測試中,由于中文輸入法的原因,影響到該函數(shù)的回車符,回車會變成中文輸入法,從而導致運行失敗。為了防止這種情況發(fā)生,用Keyboard.press(KEY_CAPS_LOCK)函數(shù)調用KEY_CAPS_LOCK后,可以打開大寫狀態(tài),繞過中文輸入法,在輸入完成后再將大寫狀態(tài)關閉。實現(xiàn)的關鍵代碼如下:
Keyboard.press(KEY_CAPS_LOCK);//利用打開大寫繞過輸入法
Keyboard.release(KEY_CAPS_LOCK);
2.2.2 敏感程序繞過
由于殺毒軟件會對某些函數(shù)進行行為探測,例如火絨、360安全衛(wèi)士、騰訊管家等,他們會對-w hidden隱藏窗口進行檢測。因此,設計過程中使用CMD窗口打開PowerShell,并將CMD的窗口大小cols設置為15,lines設置為1,命令為:CMD/t:01/k @ECHO OFF &&MODE CON:cols=15 lines=1。使用這種方法可以有效避免彈出警告窗口。
2.2.3 云木馬攻擊設計
主機一般都安裝了殺毒軟件,木馬存放在磁盤里非常容易被查殺,因此將木馬放置在云服務器上,在本地下載執(zhí)行,可以避免被殺毒軟件查殺。云木馬攻擊實現(xiàn)的關鍵代碼如下:
Delay(1000)
Keyboard.begin();
delay(1500);
Keyboard.press(KEY_LEFT_GUI);
delay(500);
Keyboard.press(‘r’)
delay(500);
Keyboard.release(KEY_LEFT_GUI);
Keyboard.release(‘r’);
delay(500);
Keyboard.press(KEY_CAPS_LOCK);
Keyboard.release(KEY_CAPS_LOCK);
Keyboard.println(“CMD/t:01/k @ECHO OFF &&MODE CON:cols=15 lines=1”);
delay(500);
Keyboard.press(KEY_RETURN);
Keyboard.release(KEY_RETURN);
由于云木馬需要存放在公網(wǎng)服務器上,所以必須先搭建一臺公網(wǎng)服務器。在公網(wǎng)服務器上安裝Java環(huán)境,使用CS框架實現(xiàn)云木馬攻擊。
搭建公網(wǎng)服務器的具體步驟如下:
(1)在阿里云上購買一臺主機。
(2)選擇輕量級服務器。
(3)將系統(tǒng)配置為Centos7。
(4)遠程連接設置服務器密碼。
(5)使用SSH連接工具登錄服務器。
(1)在安裝Java環(huán)境之前需要先更新Yum源,Yum源是Centos的軟件包管理器,主要功能是自動升級。只有更新完Yum源之后,安裝的Java環(huán)境才會是最新的。執(zhí)行命令如下:
[root@iZ2ze1e64qek16ztlp1f3tZ~]# yum install update。
(2)安裝Java庫。
執(zhí)行命令如下:
[root@iZ2ze1e64qek16ztlp1f3tZ~]# yum-y list java*。
(3)安裝Java11。
執(zhí)行命令如下:
[root@iZ2ze1e64qek16ztlp1f3tZ~]#yum-y install java-11-openjdk.x86_64。
(4)查看Java版本。
安裝好Java后,測試Java命令是否可以使用,執(zhí)行命令如下:
[root@iZ2ze1e64qek16ztlp1f3tZ~]# java-version。
(1)使用FTP工具將Cobalt strike上傳到阿里云服務器。
(2)給Teamserver增加執(zhí)行權限。
具體操作步驟如下:
[root@iZ2ze1e64qek16ztlp1f3tZ~]# cd/cobaltstrike4.0-cracked/
[root@iZ2ze1e64qek16ztlp1f3tZ cobaltstrike4.0-cracked]# chmod +x teamserver
(3)執(zhí)行Teamserver服務。
設置阿里云的服務器IP地址和密碼。
(4)使用Cobalt Strike 客戶端連接服務端。
在阿里云的安全組中打開50050端口,在Windows上打開Start-cn.bat,然后在主機上輸入服務器IP地址,使用默認端口號,輸入用戶名和服務器的密碼,單擊連接按鈕即可登錄。配置界面如圖1所示。
圖1 CS登錄界面
對設計的木馬通過常用的殺毒軟件進行測試,主要包括360安全衛(wèi)士、騰訊管家和火絨。
目前測試方式主要有兩種,一種是靜態(tài)掃描,將木馬存放在磁盤中,用殺毒軟件進行掃描,看能否識別;另一種是動態(tài)掃描,即木馬運行時,用殺毒軟件進行掃描,看是否檢測到。在此采用靜態(tài)掃描的方式,測試結果如表1所示。
表1 殺毒軟件測試結果
通過對測試結果進行比較,木馬的設計選擇采用PowerShell繞過的方式。
燒錄是對一次性可編程只讀存儲器進行一次寫入操作。燒錄時需要注意以下幾個方面:
(1)芯片類型的選擇。若芯片類型選錯,燒錄時會對存儲器造成不可逆的傷害。
(2)燒錄指令。若不小心給Badusb燒錄了一個關機的指令,插入Badusb就會關機,無法對Badusb再進行編程,從而進入一種死循環(huán)。因此,在燒錄的時候必須仔細檢查代碼,確認代碼無誤后,再進行燒錄。
燒錄的具體步驟如下:
(1)在Arduino IDE的工具欄中,選擇項目,編譯二進制文件后,編譯器會要求再次編譯,編譯后會產(chǎn)生2個hex文件。編譯后界面如圖2所示,其中powershell_360.ino.with_bootloader.leonardo.hex文件帶有bootloader固件,包含有引導裝載程序,會在操作系統(tǒng)運行內核之前運行,初始化系統(tǒng)的軟硬件,Badusb不需要這個功能,所以選擇不攜帶bootloade固件的powershell_360.ino.leonardo.hex文件。
圖2 hex文件生成界面
(2)在Progisp中,主控選擇Atmega32U4,在Parogisp的右側選中“調入flash”,在彈出的窗口中,選擇hex文件。設置好之后單擊“自動”按鈕,進入自動燒錄狀態(tài)。
Badusb是一種滲透能力非常強的攻擊方式,對安全防范不到位的主機威脅非常大。本文設計了一種改良型的木馬,在設計Arduino程序和Cobaltstrike木馬過程中,將木馬的特征碼進行分割加密,再組合起來解密,用Shellcode編譯器對文件進行編譯,將改良的木馬通過殺毒軟件進行測試,結果表明,Arduino增加了Badusb的執(zhí)行能力,可以繞過更多殺毒軟件的安全防護,達到了設計的預期效果。但本測試也有一些不足,主要是選擇的殺毒軟件種類偏少。