Bezpłatne Dni Otwarte Sekurak Academy! Hackowanie na żywo, szkolenia, ebooki, …
Alexa, daj mi dostęp do lokalnego shella. Alexa: kernel panic ;-)
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
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)
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…