日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

USB流量取证分析

發(fā)布時(shí)間:2024/9/30 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 USB流量取证分析 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

0x00:什么是USB?

USB是 UniversalSerial Bus(通用串行總線)的縮寫,是一個(gè)外部總線標(biāo)準(zhǔn),用于規(guī)范電腦與外部設(shè)備的連接和通訊,例如鍵盤、鼠標(biāo)、打印機(jī)、磁盤或網(wǎng)絡(luò)適配器等等。通過對(duì)該接口流量的監(jiān)聽,我們可以得到鍵盤的擊鍵記錄、鼠標(biāo)的移動(dòng)軌跡、磁盤的傳輸內(nèi)容等一系列信息。

USB流量指的是USB設(shè)備接口的流量,攻擊者能夠通過監(jiān)聽usb接口流量獲取鍵盤敲擊鍵、鼠標(biāo)移動(dòng)與點(diǎn)擊、存儲(chǔ)設(shè)備的銘文傳輸通信、USB無線網(wǎng)卡網(wǎng)絡(luò)傳輸內(nèi)容等等。

0x01:USB使用的三種方式

USB協(xié)議版本有USB1.0, USB1.1, USB2.0, USB3.1等,目前USB2.0比較常用。

1. USB UART

UART,這種方式下,設(shè)備只是簡(jiǎn)單的將 USB 用于接受和發(fā)射數(shù)據(jù),除此之外就再?zèng)]有,其他通訊功能了。

2. USB HID

HID 是人性化的接口。這一類通訊適用于交互式,有這種功能的設(shè)備有:鍵盤,鼠標(biāo),游戲手柄和數(shù)字顯示設(shè)備。

3. USB Memory

USB Memory是數(shù)據(jù)存儲(chǔ)

每一個(gè) USB 設(shè)備(尤其是 HID 或者 Memory )都有一個(gè)供應(yīng)商 ID(Vendor ID) 和產(chǎn)品識(shí)別碼(Product Id) 。 Vendor ID 是用來標(biāo)記哪個(gè)廠商生產(chǎn)了這個(gè) USB 設(shè)備。 Product ID 則用來標(biāo)記不同的產(chǎn)品.

0x02:lsusb命令

lsusb命令用于顯示本機(jī)的USB設(shè)備列表,以及USB設(shè)備的詳細(xì)信息。

  • Bus 002:指明設(shè)備連接到哪條總線
  • Device 002:表明這是連接到總線上的第二臺(tái)設(shè)備
  • ID : 設(shè)備的ID
  • VMware, Inc. Virtual Mouse:生產(chǎn)商名字和設(shè)備名

詳細(xì)命令

0x03 tshark命令

網(wǎng)絡(luò)抓包,分析工具。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ù)沒有冒號(hào),可以用腳本來加上冒號(hào)(因?yàn)橐话愕哪_本都會(huì)按照有冒號(hào)的數(shù)據(jù)來識(shí)別,有冒號(hào)時(shí)提取數(shù)據(jù)的[6:8],無冒號(hào)時(shí)數(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:設(shè)置tshark分析的輸入文件
  • -T:設(shè)置解碼結(jié)果輸出的格式,包括fileds,text,ps,psml和pdml,默認(rèn)為text

參數(shù)詳解

0x04:鼠標(biāo)流量

基礎(chǔ)知識(shí)

鼠標(biāo)移動(dòng)時(shí)表現(xiàn)為連續(xù)性,與鍵盤擊鍵的離散性不一樣,但實(shí)際上鼠標(biāo)動(dòng)作所產(chǎn)生的數(shù)據(jù)包也是離散的。不同的鼠標(biāo)抓到的流量不一樣,一般的鼠標(biāo)流量都是四個(gè)字節(jié)

  • 每一個(gè)數(shù)據(jù)包的數(shù)據(jù)區(qū)有四個(gè)字節(jié)
  • 第一個(gè)字節(jié)代表按鍵:
當(dāng)取0x00時(shí),代表沒有按鍵,當(dāng)取0x01時(shí),代表按左鍵,當(dāng)取0x02時(shí),代表當(dāng)前按鍵為右鍵。
  • 第二個(gè)字節(jié)可以看成是一個(gè)signed byte類型,其最高位為符號(hào)位:
當(dāng)這個(gè)值為正時(shí),代表鼠標(biāo)水平右移多少像素 當(dāng)這個(gè)值為負(fù)時(shí),代表鼠標(biāo)水平左移多少像素。
  • 第三個(gè)字節(jié)與第二字節(jié)類似,代表垂直上下移動(dòng)的偏移。


這個(gè)代表的意思便是鼠標(biāo)右移01像素,垂直向上移動(dòng)fc.

題目練習(xí)

描述:

這是一道鼠標(biāo)流量分析題。

使用下tshark命令將數(shù)據(jù)給提取出來

tshark -r usb2.pcap -T fields -e usb.capdata > usbdata.txt


沒有冒號(hào),需要通過腳本來添加冒號(hào),這題描述說了是鼠標(biāo)流量,所以長(zhǎng)度設(shè)置為8即可

導(dǎo)出之后,利用通用的鼠標(biāo)流量腳本處理下(但這里需要注意的是,因不知道操作者是用左鍵還是右鍵進(jìn)行鼠標(biāo)移動(dòng)以及拖動(dòng)軌跡,所以需要自己嘗試一下),這道題經(jīng)過測(cè)試發(fā)現(xiàn)是用右鍵畫的,將通用腳本中的btn_flag改為2即可。

nums = [] keys = open('out.txt','r') f = open('xy.txt','w') posx = 0 posy = 0 for line in keys:if len(line) != 12 :continuex = int(line[3:5],16)y = int(line[6:8],16)if x > 127 :x -= 256if y > 127 :y -= 256posx += xposy += ybtn_flag = int(line[0:2],16) # 1 for left , 2 for right , 0 for nothingif btn_flag == 2 : # 1 代表左鍵f.write(str(posx))f.write(' ')f.write(str(posy))f.write('\n')f.close()

即可恢復(fù)出一系列坐標(biāo)內(nèi)容

接下來使用命令gnuplot即可恢復(fù)出圖像

拿到本地旋轉(zhuǎn)一下即可獲得flag

除此之外,還可以使用主要用于GitHub上的工具
工具

命令:

python2 UsbMiceDataHacker.py usb2.pcap RIGHT//letf設(shè)置左鍵

0x04:鍵盤流量

基礎(chǔ)知識(shí)

鍵盤數(shù)據(jù)包的數(shù)據(jù)長(zhǎng)度為8個(gè)字節(jié),擊鍵信息集中在第3個(gè)字節(jié),每次擊鍵都會(huì)產(chǎn)生一個(gè)數(shù)據(jù)包。所以如果看到給出的數(shù)據(jù)包中的信息都是8個(gè)字節(jié),并且只有第3個(gè)字節(jié)不為0000,那么幾乎可以肯定是一個(gè)鍵盤流量了。

擊鍵信息和數(shù)據(jù)包中16進(jìn)制數(shù)據(jù)的對(duì)照表

詳細(xì)文檔

如:

擊鍵信息為0x09,對(duì)應(yīng)的按鍵信息即為F。

題目練習(xí)

描述:

安全評(píng)測(cè)人員在對(duì)某銀行卡密碼輸入系統(tǒng)進(jìn)行滲透測(cè)試,截獲了一段通過USB鍵盤輸入6位數(shù)字密碼的流量,其中也包含了一些其他無關(guān)的USB設(shè)備的流量,你能從中恢復(fù)出6位數(shù)字密碼嗎?最終提交的flag格式為flag。

先使用命令獲取到數(shù)據(jù)(不能有空格,否則會(huì)出錯(cuò)

tshark -r usb.pcap -T fields -e usb.capdata | sed '/^\s*$/d' > usbdata.txt


利用腳本加上冒號(hào),長(zhǎng)度改為16即可

通用腳本如下:

mappings = { 0x04:"A", 0x05:"B", 0x06:"C", 0x07:"D", 0x08:"E", 0x09:"F", 0x0A:"G", 0x0B:"H", 0x0C:"I", 0x0D:"J", 0x0E:"K", 0x0F:"L", 0x10:"M", 0x11:"N",0x12:"O", 0x13:"P", 0x14:"Q", 0x15:"R", 0x16:"S", 0x17:"T", 0x18:"U",0x19:"V", 0x1A:"W", 0x1B:"X", 0x1C:"Y", 0x1D:"Z", 0x1E:"1", 0x1F:"2", 0x20:"3", 0x21:"4", 0x22:"5", 0x23:"6", 0x24:"7", 0x25:"8", 0x26:"9", 0x27:"0", 0x28:"\n", 0x2a:"[DEL]", 0X2B:" ", 0x2C:" ", 0x2D:"-", 0x2E:"=", 0x2F:"[", 0x30:"]", 0x31:"\\", 0x32:"~", 0x33:";", 0x34:"'", 0x36:",", 0x37:"." }nums = [] keys = open('out.txt') for line in keys:if line[0]!='0' or line[1]!='0' or line[3]!='0' or line[4]!='0' or line[9]!='0' or line[10]!='0' or line[12]!='0' or line[13]!='0' or line[15]!='0' or line[16]!='0' or line[18]!='0' or line[19]!='0' or line[21]!='0' or line[22]!='0':continuenums.append(int(line[6:8],16))keys.close()output = "" for n in nums:if n == 0 :continueif n in mappings:output += mappings[n]else:output += '[unknown]'print 'output :\n' + output

7200[DEL]53[DEL]93 因?yàn)?span id="ozvdkddzhkzd" class="token punctuation">[DEL]是刪除鍵,所以,flag是720593

參考博客

關(guān)于usb流量分析
ga1axy

總結(jié)

以上是生活随笔為你收集整理的USB流量取证分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。