天天看點

CTF流量分析常見題型(二)-USB流量

在學習Wireshark常見使用時,對常見CTF流量分析題型和鐵人三項流量分析題的部分問題進行了簡單總結。由于篇幅過長,于是另起一篇總結USB流量包分析,包括<code>鍵盤流量</code>和<code>滑鼠流量</code>。

USB流量指的是USB裝置接口的流量,攻擊者能夠通過監聽usb接口流量擷取鍵盤敲擊鍵、滑鼠移動與點選、儲存設備的銘文傳輸通信、USB無線網卡網絡傳輸内容等等。在CTF中,USB流量分析主要以鍵盤和滑鼠流量為主。

USB協定資料部分在Leftover Capture Data域中,資料長度為<code>八個位元組</code>。其中鍵盤擊鍵資訊集中在第三個位元組中。

CTF流量分析常見題型(二)-USB流量

如圖,發現擊鍵資訊為0x06,即對應的按鍵為<code>C</code>

鍵位映射關系參考:《USB鍵盤協定中鍵碼》中的HID Usage ID

flag隐藏在usb流量中,通過USB協定資料中的鍵盤鍵碼轉換成鍵位。

1.使用kali linux中的tshark 指令把cap data提取出來:

2.根據《USB鍵盤協定中鍵碼》中的HID Usage ID将資料還原成鍵位,可寫一個Python腳本進行快速轉換。

【NSCTF】安全評測人員在對某銀行卡密碼輸入系統進行滲透測試,截獲了一段通過USB鍵盤輸入6位數字密碼的流量,其中也包含了一些其他無關的USB裝置的流量,你能從中恢複出6位數字密碼嗎?最終送出的flag格式為flag

提取碼:q6ro

(1)使用tshark 指令把pcap的資料提取并去除空行到<code>usbdata.txt</code>

CTF流量分析常見題型(二)-USB流量

(2)提取出來的資料可能會帶冒号,也可能不帶(有可能和wireshark的版本相關),但是一般的腳本都會按照有冒号的資料來識别

有冒号時提取資料的<code>[6:8]</code> 無冒号時資料在<code>[4:6]</code>

可以用腳本來加上冒号

此時對應的第三位元組,也就是[6:8]就代表了擊鍵資訊

(3)提取出鍵盤流量後需要用腳本還原資料對應的資訊。同時找到兩個還原資訊的腳本(python2):

<code>keyboard1.py</code>

<code>keyboard2.py</code>

運作第一個腳本得到

CTF流量分析常見題型(二)-USB流量

USB協定滑鼠資料部分在Leftover Capture Data域中,資料長度為<code>四個位元組</code>。

其中第一個位元組代表按鍵,當取0x00時,代表沒有按鍵、為0x01時,代表按左鍵,為0x02時,代表目前按鍵為右鍵。 第二個位元組可以看成是一個signed byte類型,其最高位為符号位,當這個值為正時,代表滑鼠水準右移多少像素,為負時,代表水準左移多少像素。 第三個位元組與第二位元組類似,代表垂直上下移動的偏移。
CTF流量分析常見題型(二)-USB流量

如圖,資料資訊為0x00002000,表示滑鼠垂直向上移動20。

flag隐藏在usb流量中,通過USB協定資料中的滑鼠移動軌迹轉換成flag。

1.使用kali linux中的tshark 指令把cap data提取出來,并去除空行

2.根據usb協定滑鼠資料還原滑鼠移動軌迹,可寫一個Python腳本進行快速還原。

【NSCTF】這是一道滑鼠流量分析題。

(2)使用上面提到過的加冒号的腳本,并将腳本裡提到的<code>16</code>改為<code>8</code>,得到

CTF流量分析常見題型(二)-USB流量

(3)使用mouse.py測試資訊隐藏位置

測試發現flag資訊藏在右鍵中,即當腳本中btn_flag取2時可以得到一系列坐标

CTF流量分析常見題型(二)-USB流量

(4)用gnuplot将<code>xy.txt</code>裡的坐标轉化成圖像

CTF流量分析常見題型(二)-USB流量

發現方向反了,使用windows上的"畫圖"垂直翻轉一下即可。

CTF流量分析常見題型(二)-USB流量

最終得到flag

CTF流量分析常見題型(二)-USB流量

本次總結了USB流量包的流量分析,對鍵盤流量和滑鼠流量有了簡單的了解。