<summary><strong>Dowiedz się, jak hakować AWS od zera do bohatera z</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
Oprogramowanie układowe to istotne oprogramowanie umożliwiające urządzeniom poprawne działanie poprzez zarządzanie i ułatwianie komunikacji między komponentami sprzętowymi a oprogramowaniem, z którym użytkownicy wchodzą w interakcje. Jest przechowywane w pamięci stałej, zapewniając urządzeniu dostęp do istotnych instrukcji od momentu włączenia zasilania, co prowadzi do uruchomienia systemu operacyjnego. Badanie i ewentualna modyfikacja oprogramowania układowego to kluczowy krok w identyfikowaniu podatności na ataki.
**Zbieranie informacji** to kluczowy początkowy krok w zrozumieniu budowy urządzenia i technologii, które wykorzystuje. Proces ten obejmuje zbieranie danych na temat:
W tym celu narzędzia **open-source intelligence (OSINT)** są nieocenione, podobnie jak analiza dostępnych składników oprogramowania open-source za pomocą procesów manualnych i zautomatyzowanych. Narzędzia takie jak [Coverity Scan](https://scan.coverity.com) i [Semmle’s LGTM](https://lgtm.com/#explore) oferują bezpłatną analizę statyczną, którą można wykorzystać do znalezienia potencjalnych problemów.
Teraz, gdy **masz oprogramowanie układowe**, musisz wyodrębnić informacje na jego temat, aby wiedzieć, jak je traktować. Różne narzędzia, których możesz użyć do tego:
Jeśli nie znajdziesz wiele za pomocą tych narzędzi, sprawdź **entropię** obrazu za pomocą `binwalk -E <bin>`, jeśli entropia jest niska, to prawdopodobnie nie jest zaszyfrowany. Jeśli entropia jest wysoka, jest prawdopodobnie zaszyfrowany (lub skompresowany w jakiś sposób).
Dzięki wcześniej wspomnianym narzędziom, takim jak `binwalk -ev <bin>`, powinieneś być w stanie **wyodrębnić system plików**.\
Binwalk zazwyczaj wyodrębnia go do **folderu nazwanego tak jak typ systemu plików**, który zazwyczaj jest jednym z następujących: squashfs, ubifs, romfs, rootfs, jffs2, yaffs2, cramfs, initramfs.
Czasami binwalk **nie będzie miał magicznego bajtu systemu plików w swoich sygnaturach**. W takich przypadkach użyj binwalka, aby **znaleźć przesunięcie systemu plików i wydobyć skompresowany system plików** z pliku binarnego, a następnie **ręcznie wyodrębnij** system plików zgodnie z jego typem, korzystając z poniższych kroków.
Po uzyskaniu firmware'u konieczne jest jego analizowanie w celu zrozumienia struktury i potencjalnych podatności. Proces ten polega na wykorzystaniu różnych narzędzi do analizy i wydobycia wartościowych danych z obrazu firmware'u.
Zestaw poleceń jest dostarczany do wstępnej inspekcji pliku binarnego (nazwanego `<bin>`). Te polecenia pomagają zidentyfikować typy plików, wydobywać ciągi znaków, analizować dane binarne oraz zrozumieć szczegóły partycji i systemu plików:
Aby ocenić stan szyfrowania obrazu, sprawdzana jest **entropia** za pomocą `binwalk -E <bin>`. Niska entropia sugeruje brak szyfrowania, podczas gdy wysoka entropia wskazuje na możliwe szyfrowanie lub kompresję.
Do wyodrębniania **osadzonych plików** zaleca się korzystanie z narzędzi i zasobów takich jak dokumentacja **file-data-carving-recovery-tools** oraz **binvis.io** do inspekcji plików.
Za pomocą `binwalk -ev <bin>` zazwyczaj można wyodrębnić system plików, często do katalogu nazwanego zgodnie z typem systemu plików (np. squashfs, ubifs). Jednak gdy **binwalk** nie rozpoznaje typu systemu plików z powodu braku magicznych bajtów, konieczne jest ręczne wyodrębnienie. Polega to na użyciu `binwalk` do zlokalizowania przesunięcia systemu plików, a następnie polecenia `dd` do wyodrębnienia systemu plików:
Po wyodrębnieniu systemu plików rozpoczyna się poszukiwanie luk w zabezpieczeniach. Uwaga jest skupiona na niezabezpieczonych demonach sieciowych, stałych poświadczeniach, punktach końcowych interfejsu API, funkcjach serwera aktualizacji, nie skompilowanym kodzie, skryptach uruchamiania oraz skompilowanych binariach do analizy offline.
- [**LinPEAS**](https://github.com/carlospolop/PEASS-ng) i [**Firmwalker**](https://github.com/craigz28/firmwalker) do wyszukiwania poufnych informacji
- [**The Firmware Analysis and Comparison Tool (FACT)**](https://github.com/fkie-cad/FACT\_core) do kompleksowej analizy oprogramowania układowego
- [**FwAnalyzer**](https://github.com/cruise-automation/fwanalyzer), [**ByteSweep**](https://gitlab.com/bytesweep/bytesweep), [**ByteSweep-go**](https://gitlab.com/bytesweep/bytesweep-go) i [**EMBA**](https://github.com/e-m-b-a/emba) do analizy statycznej i dynamicznej
Zarówno kod źródłowy, jak i skompilowane binaria znalezione w systemie plików muszą być dokładnie przeanalizowane pod kątem podatności. Narzędzia takie jak **checksec.sh** dla binariów Unix oraz **PESecurity** dla binariów Windows pomagają zidentyfikować niezabezpieczone binaria, które mogą być wykorzystane.
Proces emulowania oprogramowania układowego umożliwia **analizę dynamiczną** działania urządzenia lub pojedynczego programu. Ten podejście może napotkać wyzwania związane z zależnościami sprzętowymi lub architektonicznymi, ale przeniesienie systemu plików głównego lub określonych binariów do urządzenia o pasującej architekturze i kolejności bajtów, takiego jak Raspberry Pi, lub do wirtualnej maszyny zainstalowanej wcześniej, może ułatwić dalsze testowanie.
Narzędzia takie jak [Firmadyne](https://github.com/firmadyne/firmadyne), [Firmware Analysis Toolkit](https://github.com/attify/firmware-analysis-toolkit) i inne ułatwiają pełną emulację oprogramowania układowego, automatyzując proces i pomagając w analizie dynamicznej.
W tym etapie używane jest środowisko rzeczywiste lub emulowane urządzenia do analizy. Istotne jest utrzymanie dostępu do powłoki systemu operacyjnego i systemu plików. Emulacja może nie doskonale odwzorowywać interakcji sprzętowych, co wymaga czasami ponownego uruchomienia emulacji. Analiza powinna ponownie przejrzeć system plików, wykorzystać wystawione strony internetowe i usługi sieciowe oraz badać podatności bootloadera. Testy integralności oprogramowania układowego są kluczowe dla identyfikacji potencjalnych podatności na tylne drzwi.
Analiza w czasie rzeczywistym polega na interakcji z procesem lub plikiem binarnym w jego środowisku operacyjnym, używając narzędzi takich jak gdb-multiarch, Frida i Ghidra do ustawiania punktów przerwania i identyfikowania podatności poprzez testowanie losowe i inne techniki.
Rozwinięcie PoC dla zidentyfikowanych podatności wymaga głębokiego zrozumienia architektury docelowej i programowania w językach niskiego poziomu. Ochrony czasu wykonania binarnego w systemach wbudowanych są rzadkie, ale gdy występują, mogą być konieczne techniki takie jak Return Oriented Programming (ROP).
Systemy operacyjne takie jak [AttifyOS](https://github.com/adi0x90/attifyos) i [EmbedOS](https://github.com/scriptingxss/EmbedOS) zapewniają prekonfigurowane środowiska do testów bezpieczeństwa oprogramowania układowego, wyposażone w niezbędne narzędzia.
* [**AttifyOS**](https://github.com/adi0x90/attifyos): AttifyOS to dystrybucja przeznaczona do przeprowadzania oceny bezpieczeństwa i testów penetracyjnych urządzeń Internetu Rzeczy (IoT). Oszczędza czas, dostarczając prekonfigurowane środowisko z wszystkimi niezbędnymi narzędziami.
* [**EmbedOS**](https://github.com/scriptingxss/EmbedOS): System operacyjny do testów bezpieczeństwa wbudowany w Ubuntu 18.04, załadowany narzędziami do testowania bezpieczeństwa oprogramowania układowego.
* [Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things](https://www.amazon.co.uk/Practical-IoT-Hacking-F-Chantzis/dp/1718500904)