W większości przypadków pakiety aktualizacji dla urządzenia można pobrać ze strony dostawcy. Obecnie wiele, jeśli nie większość aktualizacji, nie jest szyfrowanych, dlatego potencjalnie można je zdekonstruować za pomocą różnych narzędzi, takich jak unzip, binwalk i Firmware Mod Kit. W celach instruktażowych przyjrzymy się systemowi opartemu na systemie Linux, ponieważ prawdopodobnie znasz te systemy. W systemach wbudowanych opartych na systemie Linux pakiety aktualizacji często zawierają nową kopię wszystkich niezbędnych plików i katalogów wymaganych do obsługi systemu. Wymagane katalogi i pliki są określane jako system plików głównych (RFS). Jeśli atakujący może uzyskać dostęp do RFS, będzie miał procedury inicjalizacji, kod źródłowy serwera WWW, wszelkie pliki binarne wymagane do uruchomienia systemu, a także prawdopodobnie niektóre pliki binarne, które zapewnią atakującemu przewagę podczas próby wykorzystania systemu. Na przykład, jeśli system używa BusyBox i zawiera serwer telnetd, atakujący może wykorzystać serwer Telnet do zapewnienia zdalnego dostępu do systemu. Dokładniej, serwer telnetd zawarty w BusyBox dostarcza argument, który pozwala na jego wywołanie bez uwierzytelniania i powiązanie z dowolnym programem (/usr/sbin/telnetd –l /bin/sh). Jako przykład zbadamy starszą wersję aktualizacji oprogramowania sprzętowego bezprzewodowego wzmacniacza zasięgu D-Link DAP-1320 (wersja 1.1 sprzętu A). Wybraliśmy tę aktualizację, ponieważ jest to starsza aktualizacja, która została załatana, a ujawnienie podatności (www.kb.cert.org/vuls/id/184100) zostało zgłoszone przez kilku autorów.
Pierwszym krokiem jest stworzenie środowiska do dekonstrukcji oprogramowania sprzętowego. W naszym przypadku użyjemy binwalk. Podstawowym systemem hosta do naszej analizy jest Kali Linux 2021.1. Aby zainstalować binwalk, musimy najpierw zainstalować wymagania wstępne za pomocą menedżera pakietów apt-get, aby zainstalować pip3 i usunąć zainstalowaną wersję binwalk (1). Po spełnieniu wymagań wstępnych instalacja wymaga sklonowania projektu z GitHub, sprawdzenia określonej znanej działającej wersji, zmodyfikowania skryptu deps.sh w celu skorygowania błędów związanych z Kali, uruchomienia skryptu deps.sh (2) i zainstalowania binwalk. Następnie próbujemy wyodrębnić oprogramowanie sprzętowe (3) , a jeśli pakiet i typy zawartości są znane narzędziu, zostaną one wyodrębnione w celu dalszej analizy. Z danych wyjściowych możemy wywnioskować, że narzędzie znalazło zarówno obraz jądra MIPS Linux (4), jak i system plików squashfs (5)(6). Przeglądając ekstrakcję, identyfikujemy ją jako system rootfs (7) i weryfikujemy, czy pliki binarne są kompilowane dla MIPS (8).
Teraz, gdy pakiet aktualizacji został wyodrębniony, nadszedł czas na przeglądanie plików, szukając funkcji, konfiguracji lub nieznanych aplikacji. Tabela definiuje niektóre elementy, których należy szukać podczas przeglądania.
UWAGA Każda znaleziona wersja pliku wykonywalnego lub biblioteki musi zostać sprawdzona pod kątem znanych luk. Na przykład użyj wyszukiwania Google pod kątem luki <name> <version number>.
Po zebraniu wszystkich tych informacji będziesz chciał zrozumieć, co przetwarza żądania z przeglądarki lub jakichkolwiek uruchomionych usług. Ponieważ wykonaliśmy już wszystkie poprzednie kroki, skróciliśmy poniższy przykład, aby analiza była bardziej skondensowana i prostsza. Odkryto, że serwerem internetowym jest lighttpd (1), który używa lighttpd*.conf (2) i modules.conf (3) do konfiguracji. Ponadto używa cgi.conf (4), który kieruje prawie całą obsługę do /bin/ssi (5) (plik wykonywalny binarny).
Mamy już pomysł, jak postępować i rozpoczniemy analizę podatności.