成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

從CTF中學(xué)USB流量捕獲與解析

安全
USB接口是目前最為通用的外設(shè)接口之一,通過監(jiān)聽該接口的流量,可以得到很多有意思的東西,例如鍵盤擊鍵,鼠標(biāo)移動與點擊,存儲設(shè)備的明文傳輸通信、USB無線網(wǎng)卡網(wǎng)絡(luò)傳輸內(nèi)容等。本文將通過兩個CTF題,講解如何捕獲USB接口的數(shù)據(jù),以及鍵盤鼠標(biāo)USB協(xié)議的具體解析方式。

一、簡介

USB接口是目前最為通用的外設(shè)接口之一,通過監(jiān)聽該接口的流量,可以得到很多有意思的東西,例如鍵盤擊鍵,鼠標(biāo)移動與點擊,存儲設(shè)備的明文傳輸通信、USB無線網(wǎng)卡網(wǎng)絡(luò)傳輸內(nèi)容等。本文將通過兩個CTF題,講解如何捕獲USB接口的數(shù)據(jù),以及鍵盤鼠標(biāo)USB協(xié)議的具體解析方式。相關(guān)下載鏈接:http://pan.baidu.com/s/1i57b33B

[[180570]]

二、 USB capture

USB流量的捕獲可以使用wireshark或者usbpcap來進行,最新版本的wireshark已經(jīng)支持USB接口的捕獲,且在安裝時會提示usbpcap的安裝,當(dāng)前網(wǎng)上已有相關(guān)中文資料對wireshark抓取usb數(shù)據(jù)包的方法進行講解,感興趣的讀者可閱讀參考鏈接,在此我們使用一種相對簡單的方式,即直接采用usbpcap捕獲USB流量。該軟件的下載地址為http://desowin.org/usbpcap/,可支持32位以及64位的winxp至win10操作系統(tǒng),安裝完成后須重啟機器或者按照提示選擇重啟所有USB設(shè)備。

安裝完成后,直接雙擊USBPcapCMD.exe,按照提示信息選擇filter,輸入文件名,便可愉快地等產(chǎn)生的信息被捕獲了,程序運行界面如下圖:

USB capture

三、鍵盤流量解析

以今年xnuca misc 專場的old years 題為例,該題目給出一個pcap包,使用wireshark打開,看到Protocol 為USB協(xié)議。

USB協(xié)議的數(shù)據(jù)部分在Leftover Capture Data域之中,右鍵leftover capture data –> 應(yīng)用為列,可以將該域的值在主面板上顯示,鍵盤數(shù)據(jù)包的數(shù)據(jù)長度為8個字節(jié),擊鍵信息集中在第3個字節(jié),每次key stroke都會產(chǎn)生一個keyboard event usb packet ,如下圖:

keyboard event usb packet

網(wǎng)上查找USB協(xié)議的文檔,可以找到這個值與具體鍵位的對應(yīng)關(guān)系,http://www.usb.org/developers/hidpage/Hut1_12v2.pdf

第53頁有一個usb keyboard/keypad映射表:

usb keyboard/keypad映射表

使用wireshark自帶的tshark命令行工具,可以將 leftover capture data單獨提取出來,具體命令為:

  1. tshark.exe -r usb1.pcap -T fields -e usb.capdata > usbdata.txt 

然后我們需要編寫腳本從得出的userdata.txt文件中過濾出鍵盤擊鍵相關(guān)的流量,并根據(jù)上述映射表,將鍵盤按鍵按照對應(yīng)關(guān)系輸出出來,這里附上簡要的腳本:

  1. 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:"." } 
  2. nums = [] 
  3. keys = open('usbdata.txt') 
  4. for line in keys: 
  5.     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': 
  6.          continue 
  7.     nums.append(int(line[6:8],16)) 
  8. keys.close() 
  9. output = "" 
  10. for n in nums: 
  11.     if n == 0 : 
  12.         continue 
  13.     if n in mappings: 
  14.         output += mappings[n] 
  15.     else: 
  16.         output += '[unknown]' 
  17. print 'output :\n' + output 

運行該腳本,便可得到輸出結(jié)果如下:

http://p0.qhimg.com/t01aff4e155bc971b3b.png

這里還有最后一個小彎,由提示中的“不使用拼音 ”等信息推測出上文的特殊編碼可能是某種拼音之外的古老的輸入法,例如五筆,畢竟這也是做keylogger的人需要考慮而且頭疼的一個地方。嘗試對照著輸入,可以得出如下文字:

[[180572]]

最后得出flag . xnuca{wojiushifulagehaha}

四、鼠標(biāo)流量解析

這是xnuca第二道usb流量的題,首先可以直接使用上述的解決方案試一下,得到這樣一話:

[[180573]]

解決本題需要把鼠標(biāo)流量還原出來,然而鼠標(biāo)與鍵盤不同,鼠標(biāo)移動時表現(xiàn)為連續(xù)性,與鍵盤擊鍵的離散性不一樣,不過實際上鼠標(biāo)動作所產(chǎn)生的數(shù)據(jù)包也是離散的,畢竟計算機表現(xiàn)的連續(xù)性信息都是由大量離散信息構(gòu)成的。

首先同樣使用tshark 命令將cap data提取出來:

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

http://p0.qhimg.com/t015861d1cf458019d2.png

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

了解協(xié)議相關(guān)約定之后,可編寫腳本將數(shù)據(jù)包的內(nèi)容變成一系列點的集合,為了區(qū)分左右按鍵,可以特意對第一個字節(jié)的內(nèi)容作一下判斷。相關(guān)腳本如下:

  1. nums = [] 
  2. keys = open('data.txt','r') 
  3. posx = 0 
  4. posy = 0 
  5. for line in keys: 
  6.     if len(line) != 12 : 
  7.          continue 
  8.     x = int(line[3:5],16) 
  9.     y = int(line[6:8],16) 
  10.     if x > 127 : 
  11.         x -256 
  12.     if y > 127 : 
  13.         y -256 
  14.     posx += x 
  15.     posy += y 
  16.     btn_flag = int(line[0:2],16)  # 1 for left , 2 for right , 0 for nothing 
  17.     if btn_flag == 1 : 
  18.         print posx , posy 
  19. keys.close() 

本題的flag藏在右鍵信息中,當(dāng)btn_flag 取2時,運行腳本可以得到一系列坐標(biāo)點:

http://p3.qhimg.com/t0110b31c35de1bb2b7.png

得到這些點之后,需要將他們畫出來,因而需要輔以gnuplot 或者其他的繪圖工具,gnuplot的命令為"plot inputfile",運行如下:

gnuplot的命令為\"plot inputfile\"

最后得到本題的flag: XNUCA{USBPCAPGETEVERYTHING}

 XNUCA{USBPCAPGETEVERYTHING}

責(zé)任編輯:趙寧寧 來源: 安全客
相關(guān)推薦

2020-04-16 09:24:18

USB流量數(shù)據(jù)安全

2016-02-17 15:15:01

2013-08-19 12:46:27

2021-03-09 09:55:02

Vuejs前端代碼

2009-03-26 09:16:34

微軟裁員職位

2011-06-13 16:20:25

網(wǎng)站信息架構(gòu)收錄流量

2024-07-31 15:36:00

2022-07-20 09:07:03

Linuxtcpdump網(wǎng)絡(luò)工具

2019-11-28 09:04:32

DDoS網(wǎng)絡(luò)攻擊網(wǎng)絡(luò)安全

2019-01-02 13:45:19

2021-10-11 09:55:58

Facebook業(yè)務(wù)中斷網(wǎng)絡(luò)安全

2018-08-14 05:34:19

2009-12-31 10:49:36

VPN配置實例

2023-11-24 13:24:14

CIOOptus

2010-02-26 10:14:25

WCF全局錯誤捕獲

2020-05-19 13:46:33

勒索軟件信息安全攻擊

2020-11-04 07:13:57

數(shù)據(jù)工程代碼編程

2023-11-24 12:31:41

DiscordGolang

2023-11-29 07:29:28

ReactSolid

2010-02-24 17:01:49

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 中文字幕第三页 | 涩涩视频在线看 | 午夜免费精品视频 | 亚洲欧美日韩一区二区 | 搞黄网站在线观看 | 超碰免费在线 | 欧美精品三区 | 精品综合在线 | 亚洲欧美一区二区三区国产精品 | 中文在线播放 | 夜夜草 | 丁香综合| 婷婷中文字幕 | 成人精品一区二区三区中文字幕 | 久久国产欧美日韩精品 | 国产九九九九 | 国产精品精品视频一区二区三区 | 夜夜草视频 | 亚洲第一在线视频 | 成人精品国产 | 91在线看网站 | 做a视频在线观看 | 91亚洲欧美 | 一区二区三区在线免费观看视频 | 男女羞羞视频网站 | 欧美寡妇偷汉性猛交 | 久久99精品国产麻豆婷婷 | 精品一区二区电影 | 国产精品一区二区视频 | 亚洲不卡 | 一区二区三区在线 | 亚洲性在线 | 欧美日韩高清免费 | 国产欧美一区二区三区在线看蜜臀 | 国产精品美女久久久久aⅴ国产馆 | 中文字幕亚洲精品在线观看 | 黄色在线观看网址 | 国产一区二区三区四区五区3d | 日韩a在线| 国产精品一区二区三区四区 | 国产精选一区 |