-15% na nową książkę sekuraka: Wprowadzenie do bezpieczeństwa IT. Przy zamówieniu podaj kod: 10000

Alexa, daj mi dostęp do lokalnego shella. Alexa: kernel panic ;-)

01 sierpnia 2017, 20:47 | Aktualności | komentarze 2
Tagi: , , ,

Może Alexa sama nie udostępni ssh z rootshellem, ale mamy ładny opis jak można zrootować sobie Amazon Echo:

Amazon Echo

Procedura jest względnie prosta, od lokalizacji portów debug (ogólny tutorial tutaj), przez bootowanie w trybie debug:

$ screen /dev/ttyUSB0 115200 8N1
Texas Instruments X-Loader 1.51 (Oct 2 2016 - 09:08:33)
LAB126 Rev 0
Starting X-loader on mmc-0...failed! 
Starting X-loader on mmc-0...failed! 
Booting from eMMC . . .
Starting X-loader on mmc-1...Reading boot sector
156780 Bytes Read from MMC
Starting OS Bootloader from MMC...
Starting OS Bootloader...(time = 785 ms)
U-Boot 2010.06-00005-g2e50740 (Jan 30 2017 - 17:24:38)
OMAP34xx/35xx-GP ES2.1, CPU-OPP2 L3-165MHz
OMAP3 LAB126 board + LPDDR/NAND
I2C: ready
DRAM: 256 MiB
MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
Using default environment
...

…niestety bez możliwości zastopowania bootowania czy zalogowania się domyślnym użytkownikiem. Ale może uda się podłożyć własny bootloader (U-boot)?

Bingo, dalsza ścieżka prowadziła przez możliwość bootowania z zewnętrznej karty SD (dokładniej został tu uruchomiony zewnętrzny U-boot, z możliwością podania własnych parametrów bootowania):

During power-up the device boots from the MLO and U-Boot binaries on the SD Card. This U-Boot implementation allows us to interrupt the boot process and enter into the U-Boot command line interface. From here it is possible to inspect the contents of the file systems on the internal memory and reconfigure the kernel arguments.

Bootowanie z zewnętrznej karty SD

Użytkownicy Linuksa, zapewne znają trick z odzyskiwaniem hasła do roota, przez podanie w standardowym bootloaderze parametru do kernela: init=/bin/sh

Właśnie tą technikę widzimy tutaj:

uboot> setenv mmc_part 1:6 # or 1:7 depending where the kernel and file system are
uboot> setenv root /dev/mmcblk0p6 # or mmcblk0p7 depending where the file system is
uboot> setenv mmcargs 'setenv bootargs console=${console} root=${root} ${mount_type} rootfstype=ext3 rootwait ${config_extra} init=/bin/sh'
uboot> setenv mount_type rw
uboot> boot

Efekt jest dość przewidywalny:

sh-3.2# whoami
root

Dalej jesteśmy już w hackerskim raju – możemy śmiało analizować samo urządzenie – szukać podatności, zmieniać jego działanie, itp.

–ms

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. q

    Przewaznie wystarczy podmienic zmienne srodowiska uboot, a w szczegolnosci zmienna bootcmd. Troche urzadzen juz zdebrickowalem. W 90% urzadzen dane bootloadera nie sa zaszyfrowane, wiec mozna to zrobic nawet na iglach. Do tej pory spotkalem tylko jedno urzadzenie ktore wymagalo podania hasla przed wejsciem w tryb interaktywny. Ale w tym wypadku dalo wgrac sie bootloader przez uart (pozwarciu 2 pinow)

    Odpowiedz
    • Często tak, jak się da przerwać bootowanie jakoś i b) można podmienić odpowiednie parametry. Np. taki tp-link pozwala na pauzę ale nie pozwala (AFAIK) na podmianę krytycznego parametru…

      Odpowiedz

Odpowiedz na sekurak