Jak Linksys „szyfruje” pliki konfiguracyjne ruterów

dodał 12 lutego 2014 o 17:34 w kategorii Krypto  z tagami:
Jak Linksys „szyfruje” pliki konfiguracyjne ruterów

Co robi normalny producent sprzętu i oprogramowania, w którym znaleziono stertę różnych błędów? Naprawia błędy i przeprasza. Co robi sprytny producent w tej samej sytuacji? Utrudnia badaczom przeprowadzanie kolejnych analiz.

Czy można próbować zabezpieczyć urządzenie przed niezależnymi próbami oceny poziomu jego bezpieczeństwa? Zawsze może próbować zaszyfrować jego oprogramowanie i pliki konfiguracyjne. Jeśli jednak robi się to nieudolnie, możecie się spodziewać efektów.

Historia błędów Linksysa

Może to być temat na osobny artykuł, ale ograniczając się tylko do błędów odkrytych w ostatnich miesiącach trzeba wspomnieć o roocie na WRT54GL (błąd w UPnP) oraz śmiesznej tylnej furtce na niestandardowym porcie w wielu modelach. Linksys najwyraźniej postanowił ograniczyć podobne publikacje w przyszłości. Zamiast jednak wzmocnić procedury kontroli jakości kodu źródłowego lub przeprowadzić rekrutację fachowców zajmujących się testami penetracyjnymi, poszedł drogą na skróty i wprowadził szyfrowanie oprogramowania wbudowanego.

Linksys WRT120N

Linksys WRT120N

Na efekty takiej decyzji nie trzeba było długo czekać. Craig, autor serwisu /dev/ttyS0, postanowił bliżej przyjrzeć się oprogramowaniu rutera WRT120N. Polecamy Wam lekturę opisu całego procesu omijania szyfrowania pliku oprogramowania, a tych, którzy się na nią nie skuszą, informujemy, że Craig dokonał identyfikacji oprogramowania podłączając się do portu szeregowego po czym zrzucił zawartość pamięci flash, przeprowadził analizę wsteczną bootloadera, znalazł procedurę zaciemniającą (bo trudno to nazwać szyfrowaniem) oprogramowanie i stworzył narzędzie, umożliwiające bezproblemowe odpakowanie „zaszyfrowanego” oprogramowania rutera (potem jeszcze aktywował port JTAG i zmodyfikował kod bootloadera, by móc z niego korzystać, ale to osobna historia).

Zaszyfrowaliśmy plik konfiguracyjny

W komentarzu do zmian w najnowszej wersji oprogramowania rutera Craig znalazł także ciekawy fragment:

Ciekaw, jakie to szyfrowanie pliku konfiguracyjnego wymyślił Linksys, postanowił przyjrzeć się bliżej tej kwestii. Przeprowadził klasyczny atak ze znanym tekstem jawnym na algorytm szyfrujący. Skorzystał w tym celu z opcji stworzenia kopii bezpieczeństwa konfiguracji. Wygenerował dwie kopie – jedną z hasłem „admin”, drugą z hasłem „aa”, po czym porównał oba pliki wynikowe.

Porównanie dwóch wersji szyfrowania

Porównanie dwóch wersji pliku

Już na pierwszy rzut oka widać, że litera „a”, od której zaczynają się oba hasła, jest zaszyfrowana w ten sam sposób – zaszyfrowana ma postać 9E. Widać także, że w drugim haśle druga litera „a” również w formie zaszyfrowanej ma postać 9E. Widać zatem, że wynik szyfrowania nie zależy od pozycji znaku. Czy możliwe zatem, że całe to „szyfrowanie” to tak naprawdę funkcja XOR na poszczególnych bajtach? Łatwo to sprawdzić.

Wystarczy wykonać operację XOR na jawnym i zaszyfrowanym znaku, by otrzymać klucz szyfrujący. Zatem

(61 to wartość HEX dla „a”)

Widzimy zatem, że kluczem może być wartość FF. Przetestujmy to dla pozostałych znaków:

Jak zatem widać, „szyfrowanie” producenta ruterów Linksys okazało się warte dokładnie tyle, co jego wcześniejsze tylne furtki.