<bdo id="2b3yk"><code id="2b3yk"></code></bdo>

  • <output id="2b3yk"><sup id="2b3yk"></sup></output>
    <output id="2b3yk"><ruby id="2b3yk"></ruby></output>
  • <code id="2b3yk"><delect id="2b3yk"></delect></code>

  • UEFI Firmware Parser:可解析BIOSIntel MEUEFI固件結構

    2019-02-26 24559人圍觀 工具

    UEFI Firmware Parser,即UEFI固件解析器,它是一個簡單的腳本模塊集合。它可以解析、提取并重建UEFI固件卷宗。其中包括針對BIOS、OptionROM、Intel ME和其他格式的解析模塊。

    UEFI Firmware Parser

    工具安裝

    這個模塊整合進了PyPy,模塊名為uefi_firmware。安裝命令如下:

    $sudo pip install uefi_firmware

    如果你想從GitHub安裝,請克隆代碼庫,并運行下列代碼:

    $sudo python ./setup.py install

    依賴組件

    1、 Python相關庫,可在python-dev包中獲取;

    2、 壓縮/解壓縮功能需要使用Python庫和gcc;

    3、 pefile為可選項,可用于高級解析

    工具使用

    使用該模塊來檢測或解析固件的最簡單方法就是使用AutoParser類:

    import uefi_firmware
    with open('/path/to/firmware.rom', 'r') as fh:
      file_content = fh.read()
    parser= uefi_firmware.AutoParser(file_content)
    if parser.type() != 'unknown':
      firmware = parser.parse()
      firmware.showinfo()

    uefi、pfs、me和flash包中提供了多個類,可直接接收相應結構的文件內容。所有的類都包含實現了抽象方法:

    1、 process()可執行解析任務,并返回True或False;

    2、 showinfo()可以打印數據結構;

    3、 dump()可以遍歷每一份文件

    腳本

    Python腳本會自動安裝uefi-firmware-parser:

    $uefi-firmware-parser -h
    usage:uefi-firmware-parser [-h] [-b] [--superbrute] [-q] [-o OUTPUT] [-O]
                                [-c] [-e] [-g GENERATE] [--test]
                                file [file ...]
     
    Parse,and optionally output, details and data on UEFI-related firmware.
     
    positionalarguments:
      file                  The file(s) to work on
     
    optionalarguments:
      -h, --help            show this help message and exit
      -b, --brute           The input is a blob and may containFV headers.
      --superbrute          The input is a blob and may containany sort of
                            firmware object
      -q, --quiet           Do not show info.
      -o OUTPUT, --output OUTPUT
                            Dump firmware objectsto this folder.
      -O, --outputfolder    Dump firmware objects to a folder based onfilename
                            ${FILENAME}_output/
      -c, --echo            Echo the filename before parsing orextracting.
      -e, --extract         Extract all files/sections/volumes.
      -g GENERATE, --generate GENERATE
                            Generate a FDF, impliesextraction (volumes only)
      --test                Test file parsing, output name/success.

    測試單個文件或目錄下的文件:

    $uefi-firmware-parser --test ~/firmware/*
    ~/firmware/970E32_1.40:UEFIFirmwareVolume
    ~/firmware/CO5975P.BIO:EFICapsule
    ~/firmware/me-03.obj:IntelME
    ~/firmware/O990-A03.exe:None
    ~/firmware/O990-A03.exe.hdr:DellPFS

    功能介紹

    1、 UEFI固件卷宗、文件系統、文件和數據域解析;

    2、 Intel PCH閃存描述符;

    3、 Intel ME模塊解析(ME和TXE等等);

    4、 Dell PFS(HDR)更新解析;

    5、 Tiano/EFI和本地LZMA(7z)壓縮/解壓;

    6、 顯示完整的UEFI固件卷宗對象層級;

    7、 使用解析輸入卷生成/重建固件描述符;

    8、 固件文件域注入

    GUID注入

    GUID注入或替換可以直接在UEFI固件文件中執行:

    $python ./scripts/fv_injector.py -h
    usage:fv_injector.py [-h] [-c] [-p] [-f] [--guid GUID] --injection INJECTION
                          [-o OUTPUT]
                          file
     
    Searcha file for UEFI firmware volumes, parse and output.
     
    positionalarguments:
      file                  The file to work on
     
    optionalarguments:
      -h, --help            show this help message and exit
      -c, --capsule         The input file is a firmware capsule.
      -p, --pfs             The input file is a Dell PFS.
      -f, --ff              Inject payload into firmwarefile.
      --guid GUID           GUID to replace (inject).
      --injection INJECTION
                            Pre-generated EFI fileto inject.
      -o OUTPUT, --output OUTPUT
                            Name of the outputfile.

    注意:注入固件文件后,用戶需要選擇替換的數據區域。

    IDA Python支持

    模塊中包含了支持生成額外GUID標簽的腳本,可直接使用Snare插件導入至IDA Python中。使用-g參數后,腳本可以生成Python字典格式的輸出:

    $python ./scripts/uefi_guids.py -h
    usage:uefi_guids.py [-h] [-c] [-b] [-d] [-g GENERATE] [-u] file
     
    OutputGUIDs for files, optionally write GUID structure file.
     
    positionalarguments:
      file                  The file to work on
     
    optionalarguments:
      -h, --help            show this help message and exit
      -c, --capsule         The input file is a firmware capsule,do not search.
      -b, --brute           The input file is a blob, search forfirmware volume
                            headers.
      -d, --flash           The input file is a flashdescriptor.
      -g GENERATE, --generate GENERATE
                            Generate abehemoth-style GUID output.
      -u, --unknowns        When generating also print unknowns.

    支持的廠商

    該模塊已在下列廠商的BIOS/UEFI固件更新上進行過測試,但并非所有廠商的所有更新都支持解析,有些需要進行額外的解壓縮或提取操作:

    -ASRock

    -戴爾

    -技嘉

    -英特爾

    -聯想

    -惠普

    -微星

    -VMware

    -蘋果

    * 參考來源:kitploit,FB小編Alpha_h4ck編譯,轉載請注明來自FreeBuf.COM。

    取消
    Loading...
    css.php 宁夏卫视在线直播观看