USB流量取证分析
0x00:什么是USB?
USB是 UniversalSerial Bus(通用串行總線)的縮寫,是一個外部總線標準,用于規(guī)范電腦與外部設備的連接和通訊,例如鍵盤、鼠標、打印機、磁盤或網(wǎng)絡適配器等等。通過對該接口流量的監(jiān)聽,我們可以得到鍵盤的擊鍵記錄、鼠標的移動軌跡、磁盤的傳輸內(nèi)容等一系列信息。
USB流量指的是USB設備接口的流量,攻擊者能夠通過監(jiān)聽usb接口流量獲取鍵盤敲擊鍵、鼠標移動與點擊、存儲設備的銘文傳輸通信、USB無線網(wǎng)卡網(wǎng)絡傳輸內(nèi)容等等。
0x01:USB使用的三種方式
USB協(xié)議版本有USB1.0, USB1.1, USB2.0, USB3.1等,目前USB2.0比較常用。
1. USB UART
UART,這種方式下,設備只是簡單的將 USB 用于接受和發(fā)射數(shù)據(jù),除此之外就再沒有,其他通訊功能了。
2. USB HID
HID 是人性化的接口。這一類通訊適用于交互式,有這種功能的設備有:鍵盤,鼠標,游戲手柄和數(shù)字顯示設備。
3. USB Memory
USB Memory是數(shù)據(jù)存儲
每一個 USB 設備(尤其是 HID 或者 Memory )都有一個供應商 ID(Vendor ID) 和產(chǎn)品識別碼(Product Id) 。 Vendor ID 是用來標記哪個廠商生產(chǎn)了這個 USB 設備。 Product ID 則用來標記不同的產(chǎn)品.
0x02:lsusb命令
lsusb命令用于顯示本機的USB設備列表,以及USB設備的詳細信息。
- Bus 002:指明設備連接到哪條總線
- Device 002:表明這是連接到總線上的第二臺設備
- ID : 設備的ID
- VMware, Inc. Virtual Mouse:生產(chǎn)商名字和設備名
詳細命令
0x03 tshark命令
網(wǎng)絡抓包,分析工具。wireshark 的 Linux命令行工具
常用命令
tshark -r usb.pcap -T fields -e usb.capdata > usbdata.txt如果提取出來的數(shù)據(jù)有空行,可以將命令改為如下形式:
tshark -r usb2.pcap -T fields -e usb.capdata | sed '/^\s*$/d' > usbdata.txt如果提取出來的數(shù)據(jù)沒有冒號,可以用腳本來加上冒號(因為一般的腳本都會按照有冒號的數(shù)據(jù)來識別,有冒號時提取數(shù)據(jù)的[6:8],無冒號時數(shù)據(jù)在[4:6])
f=open('usbdata.txt','r') fi=open('out.txt','w') while 1:a=f.readline().strip()if a:if len(a)==8: # 鍵盤流量的話len改為16out=''for i in range(0,len(a),2):if i+2 != len(a):out+=a[i]+a[i+1]+":"else:out+=a[i]+a[i+1]fi.write(out)fi.write('\n')else:breakfi.close()參數(shù):
- -r:設置tshark分析的輸入文件
- -T:設置解碼結(jié)果輸出的格式,包括fileds,text,ps,psml和pdml,默認為text
參數(shù)詳解
0x04:鼠標流量
基礎知識
鼠標移動時表現(xiàn)為連續(xù)性,與鍵盤擊鍵的離散性不一樣,但實際上鼠標動作所產(chǎn)生的數(shù)據(jù)包也是離散的。不同的鼠標抓到的流量不一樣,一般的鼠標流量都是四個字節(jié)
- 每一個數(shù)據(jù)包的數(shù)據(jù)區(qū)有四個字節(jié)。
- 第一個字節(jié)代表按鍵:
- 第二個字節(jié)可以看成是一個signed byte類型,其最高位為符號位:
- 第三個字節(jié)與第二字節(jié)類似,代表垂直上下移動的偏移。
這個代表的意思便是鼠標右移01像素,垂直向上移動fc.
題目練習
描述:
這是一道鼠標流量分析題。
使用下tshark命令將數(shù)據(jù)給提取出來
tshark -r usb2.pcap -T fields -e usb.capdata > usbdata.txt
沒有冒號,需要通過腳本來添加冒號,這題描述說了是鼠標流量,所以長度設置為8即可
導出之后,利用通用的鼠標流量腳本處理下(但這里需要注意的是,因不知道操作者是用左鍵還是右鍵進行鼠標移動以及拖動軌跡,所以需要自己嘗試一下),這道題經(jīng)過測試發(fā)現(xiàn)是用右鍵畫的,將通用腳本中的btn_flag改為2即可。
即可恢復出一系列坐標內(nèi)容
接下來使用命令gnuplot即可恢復出圖像
拿到本地旋轉(zhuǎn)一下即可獲得flag
除此之外,還可以使用主要用于GitHub上的工具
工具
命令:
python2 UsbMiceDataHacker.py usb2.pcap RIGHT//letf設置左鍵0x04:鍵盤流量
基礎知識
鍵盤數(shù)據(jù)包的數(shù)據(jù)長度為8個字節(jié),擊鍵信息集中在第3個字節(jié),每次擊鍵都會產(chǎn)生一個數(shù)據(jù)包。所以如果看到給出的數(shù)據(jù)包中的信息都是8個字節(jié),并且只有第3個字節(jié)不為0000,那么幾乎可以肯定是一個鍵盤流量了。
擊鍵信息和數(shù)據(jù)包中16進制數(shù)據(jù)的對照表
詳細文檔
如:
擊鍵信息為0x09,對應的按鍵信息即為F。
題目練習
描述:
安全評測人員在對某銀行卡密碼輸入系統(tǒng)進行滲透測試,截獲了一段通過USB鍵盤輸入6位數(shù)字密碼的流量,其中也包含了一些其他無關的USB設備的流量,你能從中恢復出6位數(shù)字密碼嗎?最終提交的flag格式為flag。
先使用命令獲取到數(shù)據(jù)(不能有空格,否則會出錯)
tshark -r usb.pcap -T fields -e usb.capdata | sed '/^\s*$/d' > usbdata.txt
利用腳本加上冒號,長度改為16即可
通用腳本如下:
參考博客
關于usb流量分析
ga1axy
總結(jié)
- 上一篇: 工控杯线上赛_wp
- 下一篇: “中能融合杯”线下赛感悟