天天看點

使用Wireshark捕捉USB通信資料

使用Wireshark捕捉USB通信資料

USB,是英文Universal Serial Bus(通用串行總線)的縮寫,而其中文簡稱為“通串線”,是一個外部總線标準,用于規範電腦與外部裝置的連接配接和通訊。USB接口支援裝置的即插即用和熱插拔功能,是應用在PC領域的接口技術。

現在,越來越多的人喜歡使用USB裝置了。很多的裝置都會選擇使用USB接口來作為裝置的通信端口,而這也是一種流行的趨勢,這有助于不同裝置之間标準的統一。那麼,你對USB裝置的工作方式和運作機制真的了解嗎?無論你是一個硬體黑客,還是一名對外圍裝置感興趣的技術愛好者,USB裝置都是一個非常具有挑戰性的領域。在Wireshark的幫助下,我們不僅可以嗅探并截獲到USB裝置所發送的資料流資訊,而且我們還可以将這些捕獲到的資料存儲至我們的主機中。我們實驗所使用的主機安裝的作業系統為Windows或者Linux。

在這篇文章中,我們将會讨論如何使用Wireshark來捕捉USB裝置的通信資料。在我撰寫這篇文章的過程中,我使用到了下列材料:

在實際操作過程中,你可以選擇使用版本号高于1.2.0的任意版本Wireshark來進行操作。在此,我并沒有在本文中提供Windows系統的操作步驟,我會在實驗操作完成之後的第一時間給大家提供這部分的資訊。

一些背景知識

在我們開始操作之前,我覺得還是得給大家介紹一些有關USB裝置的基礎知識。USB有其自己的标準和規範。基本而言,我們可以通過以下三種方式來使用USB:

UART,即通用異步接收/發送器。這類裝置隻能夠利用USB來進行資料的接收和發送操作。實際上,這類裝置與普通的通信裝置并沒有本質上的差別。

HID,即人機互動裝置。這也是USB作為接口來使用的一種典型應用。這類裝置包括鍵盤,滑鼠,遊戲控制器,以及很多簡單的顯示裝置等等。

最後就是USB儲存設備,這也是最常見的一種USB使用形式。比如說外接硬碟,U盤和閃存驅動器等等,這些都屬于USB儲存設備這一類。

正如你所了解的那樣,USB互動裝置和USB存儲器這兩大類USB裝置是目前我們使用最為廣泛的。

現在,每一種USB裝置,尤其是人機互動裝置和儲存設備,都有一串特殊的數字,這串數字被稱為廠商ID和産品ID。這兩個數字一般是成對出現的。廠商ID用于标明該産品是由哪一個制造商所生産的,而産品ID是産品的辨別符。需要注意的是,産品ID并不是序列号。具體情況如下圖所示:

使用Wireshark捕捉USB通信資料

上圖所顯示的是連接配接至我這台計算機的USB裝置資訊。我們可以調用lsusb指令來檢視系統中的USB裝置資訊。

首先,我們要選擇一個裝置來進行實驗。我有一個羅技無線滑鼠,這是一種人機互動裝置。而這個滑鼠中也配備有一個資料接收裝置,是以我決定将這個無線滑鼠作為我的實驗對象。你能從上圖所示的資訊中找到這個滑鼠嗎?沒錯,就是第四個。該裝置的具體資訊如下:

ID部分所顯示的資料為046d:c52f,這是廠商ID和産品ID(廠商ID: 産品ID)。很明顯,廠商ID為046d,産品ID為c52f。

除此之外,我們可以看到開頭的“Bus 003 Device 010”。這段資訊告訴我們這一USB裝置所連接配接的是哪一條總線。這是一條非常重要的資訊。

準備工作

現在,我們需要使用root權限來運作Wireshark,并利用Wireshark來嗅探USB通信資料。當然了,我們并不建議大家利用root權限來進行操作。我們可以使用Linux提供的usbmon來為我們擷取和導出資料資訊的操作賦予足夠的權限。具體請參考Linux-udev。我們所要做的就是建立一個usbmon group,然後将我們的賬号加入這個組,最後生成相應的udev規則。相關操作指令如下:

接下來,我們需要使用usbmon的核心子產品。如果系統還未加載該子產品,我們可以使用root權限并運作下列指令來進行加載。

資料捕捉

打開Wireshark之後,我們可以看到如下圖所示的接口清單。你應該能看到形如usbmonX的資訊,其中X為數字。下圖顯示的是我的資訊(沒錯,我使用了root權限):

使用Wireshark捕捉USB通信資料

如果Wireshark檢測到了接口中有資料流資訊,它會以波形圖的形式将資訊顯示給我們。那麼,我們該選擇哪一個呢?還記得我之前說過的嗎?沒錯,數字“X”所對應的就是裝置所連接配接的USB總線。在我的操作過程中,目标裝置為usbmon3。我們打開它之後,就可以看到其中的資料流資訊了。點選usbmon接口,然後點選那個藍色的魚鳍圖示。

使用Wireshark捕捉USB通信資料

然後呢?

我們在成功捕獲了資料流資訊之後,我們能做什麼呢?這一切都将取決于我們自己。通常情況下,我們可以通過這些資訊來了解裝置與主機的通信機制。而且在某些情況下,我們還可以利用這些資訊并結合我們自己的知識來對其進行逆向工程分析。

繼續閱讀