精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

AutoGadgetFS:一款針對USB設備的安全測試工具

倩倩 ? 來源:Alpha_h4ck ? 作者:Alpha_h4ck ? 2022-09-05 15:49 ? 次閱讀

關于AutoGadgetFS

AutoGadgetFS是一款開源框架,它可以幫助廣大研究人員在無需深入了解USB協議的情況下對USB設備以及相關的主機/驅動器/軟件進行評估。該工具基于Python 3開發,并且使用了RabbitMQ和WiFi訪問來幫助研究人員對遠程USB設備進行安全審計。在ConfigFS的幫助下,AutoGadgetFS允許用戶迅速克隆和模擬設備而無需深入研究每一個實現細節。除此之外,該框架還允許用戶創建自己的模糊測試器。

功能介紹

輕松查找、選擇并連接到USB設備。

模擬任何USB HID設備。

以中間件設備身份執行AGFS嗅探HID設備(將通信保存到磁盤)。

設備嗅探(任何設備)。

多個Fuzzer允許您對設備或主機進行模糊測試。

隨機Fuzzer(具有固定或隨機長度的數據包)。

智能Fuzzer,可以從以前的USB通信中學習。

可以告訴Fuzzer哪些字節要模糊化,使包的其余部分保持不變。

小工具Fuzzer。

順序Fuzzer。

控制傳輸枚舉器。

從文件中重放數據包。

從保存的USBLyzer捕獲重放數據包。

顯示數據包的可視方式,以便于對通信信息進行逆向分析。

DFU模式下的設備警報,或者設備泄漏信息。

支持對USB設備和主機進行遠程調試。

監控突然的界面變化。

工具要求

一臺運行了Linux的主機(Debian/Ubuntu/Kali);

支持WiFi訪問的樹莓派Raspberry Pi Zero;

目標設備選擇:虛擬機或單一主機;

兩條USB線纜;

目標USB設備;

硬件調試器(可選);

工具配置圖

設備測試

8293c79c-2c5b-11ed-ba43-dac502259ad0.jpg

設置中間件

82b3ca06-2c5b-11ed-ba43-dac502259ad0.jpg

設置中間件并支持設備調試

82ce6c62-2c5b-11ed-ba43-dac502259ad0.jpg

工具安裝

Linux設備

sudo apt install python3 ipython3 git python3-pip rabbitmq-server dfu-util

sudo service rabbitmq-server start

git clone https://github.com/ehabhussein/AutoGadgetFS

cd AutoGadgetFS

sudo -H pip3 install -r requirements.txt

sudo python3 -m pip install prompt-toolkit~=2.0

sudo rabbitmq-plugins enable rabbitmq_management

http://localhost:15672/ to reach the web interface

sudo rabbitmqctl add_user autogfs usb4ever

sudo rabbitmqctl set_user_tags autogfs administrator

sudo service rabbitmq-server restart

安裝完成后,請按照下列方式測試安裝結果

sudo ipython3

Python 3.7.7 (default, Apr  1 2020, 1352)

Type 'copyright', 'credits' or 'license' for more information

IPython 7.9.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: import libagfs

In [2]: x = libagfs.agfs()

***************************************

AutoGadgetFS: USB testing made easy

***************************************

Enter IP address of the rabbitmq server: 127.0.0.1

In [3]: exit

sudo `python3` agfsconsole.py

***************************************

AutoGadgetFS: USB testing made easy

***************************************

Enter IP address of the rabbitmq server: 127.0.0.1

Give your project a name?!:

工具運行截圖

中間人攻擊

82e73f6c-2c5b-11ed-ba43-dac502259ad0.jpg

USB設備模糊測試

8382367a-2c5b-11ed-ba43-dac502259ad0.jpg

主機端基于代碼覆蓋的模糊測試

839deea6-2c5b-11ed-ba43-dac502259ad0.jpg

基于字節的模糊測試

83b66198-2c5b-11ed-ba43-dac502259ad0.jpg

AutoGadgetFS命令行終端

83cd8dd2-2c5b-11ed-ba43-dac502259ad0.jpg

基于流量學習的智能Fuzzer

In [44]: x.devSmartFuzz(engine="smart",samples=5,filename="/home/raindrop/PycharmProjects/AutoGadgetFs/binariesdb/Nud-Nuvoton-1046-20764-1590421333.5169587-Nuvoton-1046-20764-1590421600.8067

...: 274-device.bin")                               

[+]General Statistics

Full charset                : !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~

Discarded charset           : !"#$%&'()*+,-./:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`ghijklmnopqrstuvwxyz{|}~

Final charset               : 0123456789abcdef

Word Length                 : 128

Lower Case index usage      : 92%

Lower Case index locations  : [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 121, 122, 124, 125, 127]

Upper Case index usage      : 0%

Upper Case index locations  : []

Digit index usage           : 96%

Digit index locations       : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 123, 126]

NonAN index usage           : 0%

NonAN index locations       : []

Counter statistics          : Uppercase: 0 , Lowercase: 133071, Digits:212017 , NonAlphaNumeric:0

All char Frequencies        :

character:5 found:5012 times

character:2 found:22563 times

character:3 found:12197 times

character:8 found:15008 times

character:4 found:13275 times

character:0 found:98056 times

character:1 found:17861 times

character:f found:87823 times

character:d found:7221 times

character:7 found:9614 times

character:a found:11148 times

character:6 found:10472 times

character:b found:8189 times

character:9 found:7959 times

character:c found:9172 times

character:e found:9518 times

***********************

generated:5 Packets

***********************

Out[44]:

['5608305852bf2ffd61770e2c827542f20be0b0fcba09db916bd07e1734b04cb0352b1d278068064d19f033bfad6fa90e53d865693fd4fee0214f00000eb0aa2c',

 '3b083595f276e2f1353a535c32f0f59516fc9328f7673bb80262c4da11c93683afe6dcff8a7a83018d78f41498a0da4d141ebd39c361b1724f2b00000eb0aa2c',

 '0120961963495c4dab9470738b497eddde07b0d70b357795ad9554d7964761969a6d997205e17eada6fa84eb33dcfb11412f75e04c195001283900000eb0aa2c',

 '091065d52127bbc6e840e02f8e1316f1c4d9c92a23931c00cdbb8c158368852ef8fabd461b98812b51ec84e1ccc5c04aaa366fbafabec623bd3500000eb0aa2c',

 '7300cc61151b7af27a578e766f49bebb2de68c48b37a00df1030ae464f456928eedd035303e697208bf58217af728a2a346fda5c8aef0335b82e00000eb0aa2c'

In [46]: x.edap.packets                                                                                                                                                                       

Out[46]:

['5608305852bf2ffd61770e2c827542f20be0b0fcba09db916bd07e1734b04cb0352b1d278068064d19f033bfad6fa90e53d865693fd4fee0214f00000eb0aa2c',

 '3b083595f276e2f1353a535c32f0f59516fc9328f7673bb80262c4da11c93683afe6dcff8a7a83018d78f41498a0da4d141ebd39c361b1724f2b00000eb0aa2c',

 '0120961963495c4dab9470738b497eddde07b0d70b357795ad9554d7964761969a6d997205e17eada6fa84eb33dcfb11412f75e04c195001283900000eb0aa2c',

 '091065d52127bbc6e840e02f8e1316f1c4d9c92a23931c00cdbb8c158368852ef8fabd461b98812b51ec84e1ccc5c04aaa366fbafabec623bd3500000eb0aa2c',

 '7300cc61151b7af27a578e766f49bebb2de68c48b37a00df1030ae464f456928eedd035303e697208bf58217af728a2a346fda5c8aef0335b82e00000eb0aa2c']

幫助模式

In [15]: x.help("")                                
Currently supported methods:
__________________________________________________________________________________________________________________________________________________________________

Method               ||-->Description

----------------------------------------------------------------------------------------------------------------------------

MITMproxy            ||-->This method creates a connection to the RabbitMQ and listen on received messages on the todev queue

____________________________________________________________________________________________________________________________

MITMproxyRQueues     ||-->This method reads from the queue todev and sends the request to the device its self.
____________________________________________________________________________________________________________________________

SmartFuzz            ||-->This method is generates packets based on what it has learned from a sniff from either the host or the device
____________________________________________________________________________________________________________________________

chgIntrfs            ||-->This method allows you to change and select another interface
____________________________________________________________________________________________________________________________

clearqueues          ||-->this method clears all the queues on the rabbitMQ queues that are set up

____________________________________________________________________________________________________________________________

clonedev             ||-->This method does not need any parameters it only saves a backup of the device incase you need to share it or use it later.

____________________________________________________________________________________________________________________________

createctrltrsnfDB    ||-->creates a SQLite database containing values that were enumerated from control transfer enumeration

____________________________________________________________________________________________________________________________

createdb             ||-->create the sqlite table and columns from usblyzer captures

____________________________________________________________________________________________________________________________

decodePacketAscii    ||-->This method decodes packet bytes back to Ascii

____________________________________________________________________________________________________________________________

describeFuzz         ||-->This method allows you to describe a packet and select which bytes will be fuzzed

____________________________________________________________________________________________________________________________

devEnumCtrltrnsf     ||-->This method enumerates all possible combinations of a control transfer request

____________________________________________________________________________________________________________________________

devReset             ||-->This method Resets the device

____________________________________________________________________________________________________________________________

devWrite             ||-->To use this with a method you would write to a device make sure to run the startSniffReadThread(self,endpoint=None, pts=None, queue=None,channel=None)

____________________________________________________________________________________________________________________________

devctrltrnsf         ||-->This method allows you to send ctrl transfer requests to the target device

____________________________________________________________________________________________________________________________

deviceInfo           ||-->gets the complete info only for any usb connected to the host

____________________________________________________________________________________________________________________________

deviceInterfaces     ||-->get all interfaces and endpoints on the device

____________________________________________________________________________________________________________________________

devrandfuzz          ||-->this method allows you to create fixed or random size packets created using urandom

____________________________________________________________________________________________________________________________

devseqfuzz           ||-->This method allows you to create sequential incremented packets and send them to the device

____________________________________________________________________________________________________________________________

findSelect           ||-->This method enumerates all USB devices connected and allows you to select it as a target device as well as its endpoints

____________________________________________________________________________________________________________________________

help                 ||-->AutogadgetFS Help method

____________________________________________________________________________________________________________________________

hostwrite            ||-->This method writes packets to the host either targeting a software or a driver in control of the device

____________________________________________________________________________________________________________________________

hstrandfuzz          ||-->this method allows you to create fixed or random size packets created using urandom and send them to the host queue

____________________________________________________________________________________________________________________________

monInterfaceChng     ||-->Method in charge of monitoring interfaces for changes this is called from def startMonInterfaceChng(self)

____________________________________________________________________________________________________________________________

newProject           ||-->creates a new project name if you were testing something else

____________________________________________________________________________________________________________________________

releasedev           ||-->releases the device and re-attaches the kernel driver

____________________________________________________________________________________________________________________________

removeGadget         ||-->This method removes the gadget from the raspberryPI

____________________________________________________________________________________________________________________________

replaymsgs           ||-->This method searches the USBLyzer parsed database and give you the option replay a message or all messages from host to device

____________________________________________________________________________________________________________________________

searchmsgs           ||-->This method allows you to search and select all messages for a pattern which were saved from a USBlyzer database creation

____________________________________________________________________________________________________________________________

setupGadgetFS        ||-->setup variables for gadgetFS : Linux Only, on Raspberry Pi Zero best option

____________________________________________________________________________________________________________________________

showMessage          ||-->shows messages if error or warn or info

____________________________________________________________________________________________________________________________

sniffdevice          ||-->read the communication between the device to hosts

____________________________________________________________________________________________________________________________

startMITMusbWifi     ||-->Starts a thread to monitor the USB target Device

____________________________________________________________________________________________________________________________

startMonInterfaceChng||-->This method Allows you to monitor a device every 10 seconds in case it suddenly changes its interface configuration.

____________________________________________________________________________________________________________________________

startQueuewrite      ||-->initiates a connection to the queue to communicate with the host

____________________________________________________________________________________________________________________________

startSniffReadThread ||-->This is a thread to continuously read the replies from the device and dependent on what you pass to the method either pts or queue

____________________________________________________________________________________________________________________________

stopMITMusbWifi      ||-->Stops the man in the middle thread between the host and the device

____________________________________________________________________________________________________________________________

stopMonInterfaceChang||-->Stops the interface monitor thread

____________________________________________________________________________________________________________________________

stopQueuewrite       ||-->stop the thread incharge of communicating with the host machine

____________________________________________________________________________________________________________________________

stopSniffing         ||-->Kills the sniffing thread strted by startSniffReadThread()

____________________________________________________________________________________________________________________________

usblyzerparse        ||-->This method will parse your xml exported from usblyzer and then import them into a database

____________________________________________________________________________________________________________________________

In [16]: x.help("findSelect")                                                                                                                                                                 

****

[+]Help for findSelect Method:

[-]Signature: findSelect(self, chgint=None)

[+]findSelect Help:

This method enumerates all USB devices connected and allows you to select it as a target device as well as its endpoints

審核編輯 :李倩
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • usb
    usb
    +關注

    關注

    60

    文章

    7897

    瀏覽量

    264001
  • 測試器
    +關注

    關注

    0

    文章

    54

    瀏覽量

    26151
  • 開源框架
    +關注

    關注

    0

    文章

    32

    瀏覽量

    9408

原文標題:AutoGadgetFS:一款針對USB設備的安全測試工具

文章出處:【微信號:技術讓夢想更偉大,微信公眾號:技術讓夢想更偉大】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    嵌入軟件單元/集成測試工具專業分析

    引言 在現代軟件開發過程中,單元測試作為確保代碼質量的重要環節,得到了廣泛的關注和應用。隨著嵌入式系統的復雜性日益增加,對高效、可靠的單元測試工具的需求也愈加迫切。WinAMS作為一款專為嵌入
    的頭像 發表于 11-19 16:41 ?152次閱讀

    CAN總線測試工具選擇與使用

    1. CAN分析儀 CAN分析儀是種高級的測試工具,能夠實時捕獲和分析CAN總線上的數據。它們通常具備以下功能: 數據捕獲和存儲 實時數據顯示 信號診斷和錯誤檢測 網絡參數配置 模擬CAN消息發送 2. CAN接口卡 CAN接口卡是
    的頭像 發表于 11-12 10:16 ?213次閱讀

    是德科技為FiRa2.0認證版本提供UWB設備致性測試工具

    近日,是德科技(Keysight Technologies)宣布了項重要進展,該公司已正式為最新發布的FiRa 2.0認證版本中的物理層(PHY)致性測試提供了全面的驗證測試工具
    的頭像 發表于 08-14 11:20 ?503次閱讀

    新品發布 | 多通道車載以太網仿真測試工具

    重磅推出多通道車載以太網/CANFD/LIN仿真測試工具—TC1054Pro產品助力行業進程。TOSUN01產品簡介TC1054Pro是同星智能推出的一款多通道車
    的頭像 發表于 07-27 08:21 ?842次閱讀
    新品發布 | 多通道車載以太網仿真<b class='flag-5'>測試工具</b>

    CAN總線測試工具的主要功能

    和分析CAN幀: CAN測試工具能夠捕獲CAN總線上的CAN幀,并進行詳細的分析。 這包括檢測報文、過濾報文、發送報文等。 常見的工具如Canalyser、Canoe、Canalyzer等,都具備這
    的頭像 發表于 06-25 16:02 ?995次閱讀

    新加坡推出Project Moonshot -- 這是一款生成式人工智能測試工具包,用于應對LLM安全和安保挑戰

    新加坡2024年6月3日?/美通社/ -- 新加坡通訊及新聞部部長Josephine Teo 女士推出了AI Verify- Project Moonshot,這是個易于使用的測試工具包,旨在
    的頭像 發表于 06-03 19:59 ?210次閱讀
    新加坡推出Project Moonshot -- 這是<b class='flag-5'>一款</b>生成式人工智能<b class='flag-5'>測試工具</b>包,用于應對LLM<b class='flag-5'>安全</b>和安保挑戰

    工具工具——映射與調度、模擬與驗證、開發與測試工具

    本篇文章將重點介紹工具鏈的工具相關知識,我們將從工具鏈的基本概念出發,重點介紹工具鏈中的映射和調度工具、模擬與驗證
    的頭像 發表于 05-16 14:30 ?2529次閱讀
    <b class='flag-5'>工具</b>鏈<b class='flag-5'>工具</b>——映射與調度、模擬與驗證、開發與<b class='flag-5'>測試工具</b>

    嵌入軟件單元測試工具的作用

    嵌入軟件單元測試工具是現代軟件開發過程中不可或缺的環。它的作用在于幫助開發人員對軟件中的各個單元進行測試,以確保其功能的正確性和穩定性。單元測試是軟件開發過程中的
    的頭像 發表于 04-23 15:31 ?409次閱讀
    嵌入軟件單元<b class='flag-5'>測試工具</b>的作用

    一款適合嵌入式工程師使用的在線工具

    一款適合嵌入式工程師使用的在線工具工具有如下功能,如下圖所示: 1. 報文校驗功能,如下圖所示 2. UDP服務端測試工具:該UDP服務端
    發表于 04-09 22:20

    DEKRA被CSA指定為Zigbee統一測試工具開發和優化新功能和測試用例

    DEKRA德凱被CSA聯盟(Connectivity Standards Alliance,CSA)指定負責為Zigbee統一測試工具(Zigbee Unified Test Harness,ZUTH)開發和優化新功能和測試用例。
    的頭像 發表于 04-09 14:10 ?478次閱讀

    如何在CY8CPROTO-062S2-43439中配置AIROC藍牙測試和調試工具CYW43439?

    如何在 CY8CPROTO-062S2-43439 中配置 AIROC 藍牙測試和調試工具CYW43439? 該設備在我的電腦中被檢測到 KitProg3 USB-UART,并且還顯示
    發表于 02-29 08:14

    Cybellum—信息安全測試工具

    Cybellum是一款信息安全測試與管理工具,幫助汽車OEM及其供應商在整個汽車生命周期內大規模評估和降低安全風險。它無需訪問源代碼,通過C
    的頭像 發表于 01-26 16:48 ?597次閱讀
    Cybellum—信息<b class='flag-5'>安全</b><b class='flag-5'>測試工具</b>

    Tessy—嵌入式軟件單元測試/集成測試工具

    Tessy源自戴姆勒—奔馳公司的軟件技術實驗室,由德國Hitex公司負責銷售及技術的支持服務,是一款專門針對嵌入式軟件進行單元/集成測試工具。它可以對C/C++代碼進行單元、集成
    的頭像 發表于 01-15 14:39 ?778次閱讀
    Tessy—嵌入式軟件單元<b class='flag-5'>測試</b>/集成<b class='flag-5'>測試工具</b>

    網絡安全測試工具有哪些類型

    網絡安全測試工具是指用于評估和檢測系統、網絡和應用程序的安全性的類軟件工具。這些工具可以幫助組
    的頭像 發表于 12-25 15:00 ?1213次閱讀

    redis集群性能測試工具有哪些

    Redis是種高性能的內存鍵值存儲系統,它被廣泛應用于各種互聯網應用和大規模的數據存儲中。為了評估Redis在不同場景下的性能,我們需要使用些性能測試工具來對Redis集群進行基準測試
    的頭像 發表于 12-04 11:36 ?756次閱讀