Firmware Analysis
Last updated
Last updated
Jifunze na zoezi la AWS Hacking:Mafunzo ya HackTricks AWS Red Team Expert (ARTE) Jifunze na zoezi la GCP Hacking: Mafunzo ya HackTricks GCP Red Team Expert (GRTE)
Firmware ni programu muhimu inayowezesha vifaa kufanya kazi kwa usahihi kwa kusimamia na kurahisisha mawasiliano kati ya vipengele vya vifaa na programu ambayo watumiaji wanashirikiana nayo. Imehifadhiwa kwenye kumbukumbu ya kudumu, ikahakikisha kifaa kinaweza kupata maagizo muhimu tangu kifunguliwe, ikisababisha uzinduzi wa mfumo wa uendeshaji. Kuchunguza na labda kurekebisha firmware ni hatua muhimu katika kutambua mapungufu ya usalama.
Kukusanya taarifa ni hatua muhimu ya awali katika kuelewa muundo wa kifaa na teknolojia inayotumia. Mchakato huu unahusisha kukusanya data kuhusu:
Miundo ya CPU na mfumo wa uendeshaji inayotumika
Maelezo ya bootloader
Mpangilio wa vifaa na datasheets
Vigezo vya msingi vya kanuni na maeneo ya chanzo
Maktaba za nje na aina za leseni
Historia za sasisho na vyeti vya udhibiti
Michoro ya usanifu na mifumo
Tathmini za usalama na mapungufu yaliyotambuliwa
Kwa madhumuni haya, zana za open-source intelligence (OSINT) ni muhimu, kama vile uchambuzi wa vipengele vya programu zilizopo kupitia mchakato wa ukaguzi wa mwongozo na wa kiotomatiki. Zana kama Coverity Scan na Semmle’s LGTM hutoa uchambuzi wa tuli wa bure ambao unaweza kutumika kutambua masuala yanayowezekana.
Kupata firmware kunaweza kufikiwa kupitia njia mbalimbali, kila moja ikiwa na kiwango chake cha ugumu:
Moja kwa moja kutoka kwa chanzo (waendelezaji, watengenezaji)
Kuijenga kutoka kwa maagizo yaliyotolewa
Kuidownload kutoka kwenye tovuti rasmi za msaada
Kutumia Google dork kutafuta faili za firmware zilizohifadhiwa
Kupata ufikiaji wa kuhifadhi wingu moja kwa moja, kwa zana kama S3Scanner
Kuingilia sasisho kupitia mbinu za mtu katikati
Kuichimbua kutoka kwenye kifaa kupitia uhusiano kama UART, JTAG, au PICit
Kuchunguza maombi ya sasisho ndani ya mawasiliano ya kifaa
Kutambua na kutumia vituo vya sasisho vilivyoingizwa kiotomatiki
Kuidondoa kutoka kwa bootloader au mtandao
Kuondoa na kuisoma chipu ya kuhifadhi, wakati njia zingine zote zinashindwa, kwa kutumia zana sahihi za vifaa.
Sasa unayo firmware, unahitaji kutoa taarifa kuhusu hiyo ili ujue jinsi ya kuishughulikia. Zana tofauti unazoweza kutumia kwa hilo:
Ikiwa hauoni mengi na zana hizo, angalia entropy ya picha na binwalk -E <bin>
, ikiwa entropy ni ndogo, basi ni nadra kuwa imefichwa. Ikiwa entropy ni kubwa, ni nadra imefichwa (au imepakatishwa kwa njia fulani).
Zaidi ya hayo, unaweza kutumia zana hizi kutoa faili zilizowekwa ndani ya firmware:
File/Data Carving & Recovery ToolsAu binvis.io (code) kuchunguza faili.
Kwa zana zilizotajwa hapo awali kama binwalk -ev <bin>
, unapaswa kuweza kutoa mfumo wa faili.
Kawaida, Binwalk hutoa ndani ya folda iliyoitwa kama aina ya mfumo wa faili, ambayo kawaida ni moja ya yafuatayo: squashfs, ubifs, romfs, rootfs, jffs2, yaffs2, cramfs, initramfs.
Marafiki, binwalk hawana herufi ya uchawi ya mfumo wa faili katika saini zake. Katika kesi hizi, tumia binwalk kutafuta offset ya mfumo wa faili na uchimbe mfumo wa faili uliopakatishwa kutoka kwa binary na utoe mfumo wa faili kwa mkono kulingana na aina yake kwa kutumia hatua zifuatazo.
Chukua amri ya dd ifanyie kazi mfumo wa faili wa Squashfs.
Kwa upande mwingine, amri ifuatayo inaweza pia kutekelezwa.
$ dd if=DIR850L_REVB.bin bs=1 skip=$((0x1A0094)) of=dir.squashfs
Kwa squashfs (ilitumika katika mfano hapo juu)
$ unsquashfs dir.squashfs
Faili zitakuwa katika saraka ya "squashfs-root
" baadaye.
Faili za kumbukumbu za CPIO
$ cpio -ivd --no-absolute-filenames -F <bin>
Kwa mfumo wa faili za jffs2
$ jefferson rootfsfile.jffs2
Kwa mifumo ya faili za ubifs na NAND flash
$ ubireader_extract_images -u UBI -s <start_offset> <bin>
$ ubidump.py <bin>
Marafiki firmware inapopatikana, ni muhimu kuitenganua ili kuelewa muundo wake na uwezekano wa mapungufu. Mchakato huu unahusisha kutumia zana mbalimbali kuchambua na kutoa data muhimu kutoka kwa picha ya firmware.
Seti ya amri zinatolewa kwa ukaguzi wa awali wa faili ya binary (inayojulikana kama <bin>
). Amri hizi husaidia katika kutambua aina za faili, kutoa herufi, kuchambua data ya binary, na kuelewa undani wa sehemu na maelezo ya mfumo wa faili:
Kuchunguza hali ya kifaa cha kielelezo, entropy hupimwa kwa kutumia binwalk -E <bin>
. Entropy ya chini inaashiria ukosefu wa kifaa cha kielelezo, wakati entropy ya juu inaweza kuashiria kuwepo kwa encryption au compression.
Kwa ajili ya kutoa faili zilizofichwa, zana na rasilimali kama nyaraka za file-data-carving-recovery-tools na binvis.io kwa ukaguzi wa faili zinapendekezwa.
Kwa kutumia binwalk -ev <bin>
, kwa kawaida unaweza kutoa mfumo wa faili, mara nyingi kwenye saraka iliyoitwa kwa jina la aina ya mfumo wa faili (k.m., squashfs, ubifs). Hata hivyo, wakati binwalk inashindwa kutambua aina ya mfumo wa faili kutokana na kuwepo kwa magic bytes zilizokosekana, uchimbaji wa kawaida unahitajika. Hii inahusisha kutumia binwalk
kutambua offset ya mfumo wa faili, ikifuatiwa na amri ya dd
kuchonga mfumo wa faili:
Baadaye, kutegemea aina ya mfumo wa faili (k.m., squashfs, cpio, jffs2, ubifs), amri tofauti hutumiwa kuchambua maudhui kwa mkono.
Baada ya mfumo wa faili kuchambuliwa, utafutaji wa dosari za usalama huanza. Tahadhari hulipwa kwa daemons dhaifu za mtandao, siri za nguvu, vituo vya API, utendaji wa seva ya sasisho, nambari isiyokamilika, hati za kuanzisha, na binaries zilizokamilishwa kwa uchambuzi nje ya mtandao.
Maeneo muhimu na vitu vya kuangalia ni pamoja na:
etc/shadow na etc/passwd kwa siri za mtumiaji
Vyeti vya SSL na funguo katika etc/ssl
Mipangilio na faili za hati kwa dosari za uwezekano
Binaries zilizojumuishwa kwa uchambuzi zaidi
Seva za wavuti za vifaa vya IoT na binaries
Zana kadhaa husaidia kufunua habari nyeti na dosari ndani ya mfumo wa faili:
LinPEAS na Firmwalker kwa utafutaji wa habari nyeti
The Firmware Analysis and Comparison Tool (FACT) kwa uchambuzi kamili wa firmware
FwAnalyzer, ByteSweep, ByteSweep-go, na EMBA kwa uchambuzi wa tuli na wa kudumu
Zote nambari ya chanzo na binaries zilizokamilishwa zilizopatikana kwenye mfumo wa faili lazima zichunguzwe kwa dosari. Zana kama checksec.sh kwa binaries za Unix na PESecurity kwa binaries za Windows husaidia kutambua binaries zisizolindwa ambazo zinaweza kutumiwa vibaya.
Mchakato wa kuenakili firmware huwezesha uchambuzi wa kudumu wa operesheni ya kifaa au programu binafsi. Mbinu hii inaweza kukutana na changamoto za vifaa au mitego ya usanifu, lakini kuhamisha mfumo wa faili wa msingi au binaries maalum kwa kifaa chenye usanifu na endianness inayolingana, kama Raspberry Pi, au kwa mashine ya kawaida iliyoundwa mapema, inaweza kurahisisha majaribio zaidi.
Kwa kuchunguza programu moja, kutambua endianness na usanifu wa CPU wa programu ni muhimu.
Kwa kuenakili binary ya usanifu wa MIPS, mtu anaweza kutumia amri:
Na kufunga zana za uigaji muhimu:
Kwa MIPS (big-endian), qemu-mips
hutumiwa, na kwa mipangilio ya little-endian, qemu-mipsel
ingekuwa chaguo sahihi.
Kwa mipangilio ya ARM, mchakato ni sawa, na emulator qemu-arm
hutumiwa kwa uigaji.
Zana kama Firmadyne, Firmware Analysis Toolkit, na zingine, hufanikisha uigaji kamili wa firmware, kiotomatiki mchakato na kusaidia katika uchambuzi wa kudumu.
Katika hatua hii, mazingira halisi au yaliyoigizwa ya kifaa hutumiwa kwa uchambuzi. Ni muhimu kudumisha ufikiaji wa kabati kwa OS na mfumo wa faili. Uigaji huenda usiigeze kikamilifu mwingiliano wa vifaa, hivyo kuhitaji kuzindua upya uigaji mara kwa mara. Uchambuzi unapaswa kurejelea mfumo wa faili, kutumia kurasa za wavuti zilizofichuliwa na huduma za mtandao, na kuchunguza mapungufu ya bootloader. Vipimo vya usalama wa firmware ni muhimu kutambua mapungufu ya mlango wa nyuma.
Uchambuzi wa wakati wa uendeshaji unahusisha kuingiliana na mchakato au binary katika mazingira yake ya uendeshaji, kutumia zana kama gdb-multiarch, Frida, na Ghidra kwa kuweka vituo vya kuvunja na kutambua mapungufu kupitia fuzzing na mbinu zingine.
Kuendeleza PoC kwa mapungufu yaliyotambuliwa kunahitaji uelewa wa kina wa muundo wa lengo na programu katika lugha za kiwango cha chini. Kinga ya wakati wa uendeshaji wa binary katika mifumo iliyowekwa ni nadra, lakini ikipo, mbinu kama Return Oriented Programming (ROP) inaweza kuwa muhimu.
Mifumo ya uendeshaji kama AttifyOS na EmbedOS hutoa mazingira yaliyopangwa mapema kwa ajili ya upimaji wa usalama wa firmware, yenye zana muhimu.
AttifyOS: AttifyOS ni distro iliyokusudiwa kukusaidia kufanya tathmini ya usalama na upimaji wa kuingilia kati wa vifaa vya Intaneti ya Vitu (IoT). Inakusaidia kuokoa muda kwa kutoa mazingira yaliyopangwa mapema na zana zote muhimu zilizopakiwa.
EmbedOS: Mfumo wa uendeshaji wa upimaji wa usalama uliojikita kwenye vifaa vilivyowekwa Ubuntu 18.04 uliopakiwa na zana za upimaji wa usalama wa firmware.
Kwa mazoezi ya kutambua mapungufu katika firmware, tumia miradi ifuatayo ya firmware yenye mapungufu kama mwanzo.
OWASP IoTGoat
The Damn Vulnerable Router Firmware Project
Damn Vulnerable ARM Router (DVAR)
ARM-X
Azeria Labs VM 2.0
Damn Vulnerable IoT Device (DVID)