日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
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)容等一系列信息。

在Linux中,可以使用lsusb命令,如圖所示:

我們這里主要演示USB的鼠標(biāo)流量和鍵盤流量。Linux下的分析已經(jīng)比較多了,下面的環(huán)境均在Windows下進(jìn)行。

一、鼠標(biāo)流量

1.1 特點(diǎn)分析

USB鼠標(biāo)流量的規(guī)則如下所示:

1.2 使用Wireshark捕獲和分析

要想使用Wireshark進(jìn)行捕獲,需要在安裝時(shí)勾選上usbpcap工具選項(xiàng),這樣你的Wireshark中會(huì)有一個(gè)usb接口的選項(xiàng),點(diǎn)擊就可以進(jìn)行抓包了。

下圖是我點(diǎn)擊鼠標(biāo)左鍵在屏幕上畫圓圈的流量:

有的鼠標(biāo)可能協(xié)議不是很標(biāo)準(zhǔn),會(huì)導(dǎo)致分析不了。

Wireshark中捕獲的USB流量集中在Leftover Capture Data模塊,我們可以使用tshark工具來進(jìn)行提取。在Windows中安裝tshark.exe的目錄中輸入:

tshark.exe -r b.pcap -T fields -e usb.capdata >b.txt //這里b.pcap是我抓捕的數(shù)據(jù)包名字,b.txt是把提取的數(shù)據(jù)輸入到b.txt中

查看b.txt的內(nèi)容會(huì)發(fā)現(xiàn),因?yàn)橛械臄?shù)據(jù)包無用所以出現(xiàn)了很多空行,在進(jìn)行下一步之前,我們需要把空行去掉。

把空行去掉之后,根據(jù)鼠標(biāo)流量的規(guī)則繪制像素坐標(biāo),最后通過畫圖工具(如matlab或者python的matplotlib進(jìn)行繪制圖像即可)。

了解原理之后,為了方便,可以直接使用王一航大佬的工具進(jìn)行提取,輸入:

 
 
 
 
  1. python UsbMiceDataHacker.py b.pcap LEFT //其中b.pcap是我抓捕的數(shù)據(jù)包的名字 

運(yùn)行之后就可以看到畫面:

需要注意的是這個(gè)工具必須在python2環(huán)境下,同時(shí)保證安裝了matplotlib和numpy。

二、鍵盤流量

2.1 特點(diǎn)分析

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

在USB協(xié)議的 文檔中搜索 keyboard。就可以找到擊鍵信息和數(shù)據(jù)包中16進(jìn)制數(shù)據(jù)的對(duì)照表:

2.2 使用Wireshark捕獲和分析

捕獲的步驟與上面相似。下面以XCTF的高校戰(zhàn)疫比賽中的一道例題(ez_mem&usb)來說明。

最后一步我們得到一個(gè)壓縮包,通過密碼進(jìn)行解壓后,得到一個(gè)鍵盤流量的文本文件:

根據(jù)鍵盤流量的特點(diǎn),我們可以很容易判斷出。

對(duì)照解碼表使用代碼進(jìn)行提取即可,這里貼出代碼:

 
 
 
 
  1. # coding:utf-8 
  2. import sys 
  3. import os 
  4.  
  5. usb_codes = { 
  6.     0x04: "aA", 0x05: "bB", 0x06: "cC", 0x07: "dD", 0x08: "eE", 0x09: "fF", 
  7.     0x0A: "gG", 0x0B: "hH", 0x0C: "iI", 0x0D: "jJ", 0x0E: "kK", 0x0F: "lL", 
  8.     0x10: "mM", 0x11: "nN", 0x12: "oO", 0x13: "pP", 0x14: "qQ", 0x15: "rR", 
  9.     0x16: "sS", 0x17: "tT", 0x18: "uU", 0x19: "vV", 0x1A: "wW", 0x1B: "xX", 
  10.     0x1C: "yY", 0x1D: "zZ", 0x1E: "1!", 0x1F: "2@", 0x20: "3#", 0x21: "4$", 
  11.     0x22: "5%", 0x23: "6^", 0x24: "7&", 0x25: "8*", 0x26: "9(", 0x27: "0)", 
  12.     0x2C: "  ", 0x2D: "-_", 0x2E: "=+", 0x2F: "[{", 0x30: "]}", 0x32: "#~", 
  13.     0x33: ";:", 0x34: "'\"", 0x36: ",<", 0x37: ".>", 0x4f: ">", 0x50: "<" 
  14.  
  15.  
  16. def code2chr(filepath): 
  17.     lines = [] 
  18.     pos = 0 
  19.     for x in open(filepath, "r").readlines(): 
  20.         code = int(x[6:8], 16)  # 即第三個(gè)字節(jié) 
  21.         if code == 0: 
  22.             continue 
  23.         # newline or down arrow - move down 
  24.         if code == 0x51 or code == 0x28: 
  25.             pos += 1 
  26.             continue 
  27.         # up arrow - move up 
  28.         if code == 0x52: 
  29.             pos -= 1 
  30.             continue 
  31.  
  32.         # select the character based on the Shift key 
  33.         while len(lines) <= pos: 
  34.             lines.append("") 
  35.         if code in range(4, 81): 
  36.             if int(x[0:2], 16) == 2: 
  37.                 lines[pos] += usb_codes[code][1] 
  38.             else: 
  39.                 lines[pos] += usb_codes[code][0] 
  40.  
  41.     for x in lines: 
  42.         print(x) 
  43.  
  44.  
  45. if __name__ == "__main__": 
  46.     code2chr('E://CTF練習(xí)/雜項(xiàng)/18e4c103d4de4f07b33a42cb1f0eaa1d/00000122/usbdata.txt') 

當(dāng)然也可以直接使用王一航大佬的代碼,直接從pcap包提取出文件,省去了中間很多步驟,代碼也很通用。


本文題目:USB流量取證分析
瀏覽路徑:http://www.5511xx.com/article/cojjgoo.html