To jedna z najlepszych historii, jakie kiedykolwiek słyszeliśmy. Jest w niej hakowanie sprzętu, inżynieria wsteczna, kryptografia i godny podziwu upór dwóch panów, którzy bardzo chcieli odblokować laptopa Toshiby. I zajęło im to tylko trzy lata.
Historię pierwszy raz mieliśmy przyjemność usłyszeć na żywo prawie rok temu, na konferencji Security PWNing 2017. Temat był jednak na tyle złożony, że z zamieszczeniem artykułu czekaliśmy na publikację nagrania prezentacji, by zweryfikować, czy wszystko dobrze zapamiętaliśmy. Nagranie jest już dostępne, więc czas na opisanie tej niecodziennej podróży dwóch fanatyków.
Początki historii
Jeśli macie 50 minut, to warto obejrzeć oryginalne nagranie. Niestety ścieżka głosowa przynajmniej częściowo nie pochodzi z mikrofonów prelegentów, przez co nie jest to najłatwiejsze. Ale jak mówią Chińczycy, lepszy ryż niż niż – nagranie poniżej, a pod nim wersja dla osób, które nie mają 50 minut wolnego lub cierpią, słuchając dudnienia słabego nagrania. My przecierpieliśmy dla Was.
Bohaterami historii są Michał „Redford” Kowalczyk, Sergiusz „q3k” Bazański oraz laptop Toshiba Portégé R100. Do Sergiusza zgłosił się kiedyś ktoś z prośbą o zresetowanie hasła w laptopie. To pozornie łatwe zadanie okazało się jednak całkiem skomplikowane. Chodziło o hasło na poziomie BIOS-u, którego nie imała się żadna popularna sztuczka typu zworki, baterie i inne triki sprzętowe. Internet jednak podpowiedział, że naciśnięcie kombinacji Ctrl+Tab Ctrl+Enter wywołuje tryb serwisanta, który umożliwia ominięcie hasła. Na ekranie pojawia się jednak pytanie w postaci „Challenge Code”, na które trzeba odpowiedzieć, podając „Response Code”. Brzmi jak zadanie dla hakera. Właściciel laptopa na tym etapie zrezygnował, ale Sergiusz dopiero się rozkręcał, więc pozyskał z Allegro trzy takie same zablokowane laptopy oraz współpracę Michała i zabrali się do pracy.
Postanowili zacząć od uzyskania dostępu do kodu BIOS-u. Nie mogli go uzyskać z pamięci systemu operacyjnego zablokowanego komputera. Można było dumpować zawartość kości po wylutowaniu – ale po co, skoro w sieci są aktualizacje BIOS-u? Michał pobrał zatem ze strony producenta odpowiednie pliki i poddał analizie. Zidentyfikował plik zawierający kod BIOS-u, lecz zawierał on skompresowane dane w nieznanym formacie. Mógł przeanalizować kod programu aktualizującego, lecz ten był stworzony w architekturze 16-bitowej, która jest niezbyt przyjemna do analizowania. Udało mu się jednak znaleźć nowszy aktualizator, 32-bitowy, a z tym mógł już sobie prosto poradzić. Michał napisał krótki program wykorzystujący funkcje odnalezionego aktualizatora i odpakował interesujący ich plik aktualizacji BIOS-u.
Gdy Michał męczył się z plikiem aktualizacji, Sergiusz kombinował ze zrzuceniem zawartości kości flash. Historię tego, jak płytkę przygotował, wytrawił, układ wylutował, wlutował i podłączył, polecamy miłośnikom takich kombinacji. Wyglądało to tak:
Dumpowanie było obarczone z wielu powodów błędami, dlatego zostało przeprowadzone kilkadziesiąt razy i wartości prawidłowe dla każdego bajtu zostały ustalone w drodze wyboru tych, które występowały najczęściej.
Co ciekawe, prace nad odpakowaniem aktualizacji i zrzucaniem zawartości kości zakończyły się tego samego dnia, więc badacze mogli porównać wyniki swoich prac i okazało się, że tylko jeden bajt w dumpowanej pamięci był błędny.
Czas na analizę
Mamy zatem plik o rozmiarze ok. 500 KB, w którym trzeba znaleźć odpowiedni fragment odpowiedzialny za obliczanie prawidłowego kodu odpowiedzi na pytanie systemu. Problemem zajął się Michał. Nie będziemy Was zabierać tu na wycieczkę drogą, którą pokonał Michał, bo to dla nas zbyt skomplikowane (pozdrawiamy czytelników trzeciego tomu podręczników Intela) – chętnych odsyłamy do ok. 14:30 w filmie. Nauczycie się przy okazji, co dzieje się w momencie uruchamiania procesora.
Po wykonaniu wszystkich niezbędnych magicznych zabiegów Michał zlokalizował fragment kodu wyświetlający pytanie o kod odblokowujący BIOS. Okazało się jednak, że wszystkie elementy procesu podawania hasła trafiają do jednej funkcji, która wysyła je na pewne porty i z nich otrzymuje odpowiedzi. Dalsza analiza pokazała, że porty te odpowiadają za komunikację z innym układem scalonym, który prawdopodobnie odpowiada za sprawdzanie poprawności hasła lub odpowiedzi w schemacie challenge-response. Tym innym układem okazał się kontroler klawiatury, pełniący także przy okazji kilka innych funkcji. Zatem to tam trzeba było teraz szukać kodu odpowiedzialnego za odblokowanie laptopa.
Drugi układ
Niestety nie udało się znaleźć odpowiednich aktualizacji oprogramowania dla tego modelu. Na szczęście dostępne były aktualizacje dla układu z bardzo podobnego modelu komputera, Toshiba Portégé S100. Okazało się jednak, że kod aktualizacji jest wgrywany bezpośrednio do kontrolera klawiatury, który rozpakowuje go sam, bez jego wcześniejszego rozpakowywania w systemie operacyjnym. Dzięki temu algorytm pakujący/szyfrujący nigdy nie musi opuszczać aktualizowanej kości. Testy statystyczne kodu pokazały, że kod jest raczej szyfrowany, niż kompresowany. Zadanie dla Sergiusza.
Sergiusz ponownie musiał przygotować odpowiednią płytkę, wylutować oryginalny układ, wlutować i zrzucić jego zawartość. Dumpowanie okazało się jednak z wielu powodów bardzo utrudnione. Wyjaśnienie jest długie, ale wniosek był jeden – bez znajomości tajnego klucza zrzucenie zawartości kości będzie niemożliwe. Sergiusz zaczął zatem szukać innej drogi.
Po kilku próbach znanych ataków zauważył, że istnieje możliwość odgadnięcia klucza. Otóż jeśli testował wszystkie możliwe kombinacje pierwszego bajtu klucza, to przy jednej z nich układ odpowiadał o 3 mikrosekundy dłużej. To pomogło, w wielu próbach, ustalić zawartość całego klucza, bajt po bajcie. Mając klucz, mogli zrzucić kod układu. Znaleźli w nim między innymi kod sprawdzający klucz bajt po bajcie, który po pierwszej niezgodności kończył sprawdzanie, co powodowało różnicę w czasie odpowiedzi wykorzystaną w ataku.
Analiza kodu znowu nie była prosta – ale wyjaśnienie jej zawiłości zostawiamy Michałowi, bo nikt tego nie zrobi lepiej. Gdy Michał dotarł już do kodu odpowiedzialnego za weryfikację poprawności hasła, trochę się przestraszył, ponieważ ponownie znajdowało się tam wywołanie do innego układu. Na szczęście układ ten okazał się tylko EPROM-em, który przechowywał skróty MD5 hasła użytkownika. To jednak nie było głównym celem badania – konieczność wylutowania układu z płyty sprawia, że atak na hasło jest mało praktyczny. Celem było uzyskanie możliwości odblokowania dowolnego laptopa, czyli analiza kodu challenge-response.
Kod okazał się nietrywialny, ale możliwy do analizy. Było trochę danych losowych, trochę powiązanych ze sprzętem, do tego XOR i dedykowany 64-bitowy szyfr blokowy używający kluczy zapisanych na stałe w oprogramowaniu. Nasi bohaterowie przepisali kod w Pythonie i uzyskali w ten sposób możliwość generowania prawidłowych kodów w schemacie challenge-response, co pokazali na żywo w trakcie prezentacji.
Oklaski były w pełni zasłużone.
Tego nie było jednak Michałowi i Sergiuszowi dosyć – ponieważ po drodze zostawili nierozszyfrowany plik aktualizacji kontrolera klawiatury. Układ używał kryptografii symetrycznej, zatem posiadając jego klucze, mogli uzyskać dostęp do kodu. Pobrali zatem aktualizacje oprogramowania dla nowszych modeli laptopów i zorientowali się, że algorytmy i klucze pozostawały bez zmian co najmniej od 14 lat. Po co zmieniać kod, który działa? W ten oto sposób Michał i Sergiusz mogli odblokować dowolny, najnowszy laptop Toshiby oraz stworzyć złośliwe oprogramowanie układu kontrolera klawiatury, na przykład umieszczając tam niezauważalną dla użytkownika tylną furtkę.
Cała operacja zajęła Michałowi i Sergiuszowi trzy lata, choć – jak sami przyznali – większość tego czasu stanowiło oczekiwanie przez Michała, aż Sergiusz wylutuje co trzeba. Toshiba obiecała aktualizację oprogramowania usuwającą możliwość przełamania zabezpieczeń BIOS-u i atakowania kontrolera klawiatury. Michałowi i Sergiuszowi należą się oklaski i wyrazy uznania – dla takich prezentacji warto chodzić na konferencje. Tu znajdziecie ich slajdy w wersji anglojęzycznej. Prosimy o więcej! A okazja wkrótce, bo kolejna edycja PWNing już 19-20 listopada 2018.
Oprócz prezentacji Sergiusza i Michała możecie także zobaczyć inne nagrania z zeszłorocznej edycji:
- Krystian Matusiewicz: ZIP file encryption weaknesses,
- Marcin Noga: When third-party components become a source of all evil,
- Mateusz Jurczyk: Automatyczne wykrywanie błędów ustawienia pamięci jądra w systemach Windows i Linux
- oraz na deser Adam Haertle: Dude, where’s my OPSEC, czyli cyberwpadki i wypadki.
Komentarze
>lepszy ryż niż niż
Czy aby na pewno te zdanie miało tak wyglądać?
Tak.
poczytaj sobie o niżu i kulturze ryżowej
Adamie, to nie są wariaci, to są ciekawscy ludzie:P
Jedno nie przeczy drugiemu!
Jak to ktoś kiedyś napisał. Managerowie takich każą przywiązywać łańcuchem w jaskini by obrazki malowali.
Ja już bym ich zatrudnił
Pasjonujące.
No to teraz Toshiba ich pozwie.
Ja jestem pod wrażeniem nie tylko pracy obydwóch Panów, ale też inżynierów Toshiby. Hasło jest zahashowane (md5, ale spodziewałem się plain text), a kod jest miejscami zaszyfrowany.
A co do samej analizy – taniej chyba by wyszło przekupić serwisanta Toshiby, żeby udostępnił generator kodów ;) I szczerze mówiąc byłbym zdziwiony, gdyby taki generator nie leżał gdzieś na jakimś bardzo niszowym forum albo torrencie.
Toshiba obiecała aktualizację – po co? jak ja ich nienawidzę od tej tej chwili.
Po to żeby nie wykorzystali tego sposobu hakerzy.
„pozdrawiamy czytelników trzeciego tomu podręczników Intela”
dla takich smaczków warto czytać artykuły
Ale wiecie, że wystarczyło wymienić płytę, nie?
Wystarczyło kupić odblokowanego laptopa i po sprawie! Nie wiadomo po co oni się tak męczyli ;)
Nie, nie. Tak właśnie zrobił gościu, co im tego laptopa przyniósł.
Natomiast serwis działa tak:
Nowy laptop: 2000zł
Używany laptop: 1500zł
Nowa płyta główna: 200zł
Używana płyta: 100zł
Kupujesz używaną, niezablokowaną płytę za 100zł od Chińczyka na aliexpress, wymieniasz płytę, inkasujesz klienta na 500zł, mówisz, jak ciężko było złamać to hasło i że poświęciłeś na to 2 tygodnie, a uratował Cię program do flashowania ROMów na chomiku.
Wszystko się tak robi.
I tak oszukujesz ludzi?
A gdzie ty masz oszukiwanie? Klient nie zaakceptuje ceny, jeśli zrobisz mu to w 20 min, bo nie ma dla niego znaczenie ile wcześniej czasu poświęciłeś na zdobycie wiedzy i umiejętności, dzięki którym robisz coś np w godzinę. Znajdź mi gościa który zaakceptuje 500, gdy części kosztują 100, a cała wymiana może ze dwie godziny. Oczywiście najważniejsza jest wiedza, że rozwiązaniem jest wymiana płyty głównej. Jak widać goście nie wiedzieli, więc zajęło im to 3 lata.
Innym prostym przykładem jest podpięci komputera do samochodu w celu diagnostyki. Ilu słyszałeś gości, którzy śmieli się z serwisantów, że szukają frajerów, którzy za wpięcie wtyczki krzyczą 100 PLN i bez znaczenia jest, że urządzenie kosztuje 20 000 PLN, i co 5 lat trzeba kupić nowe.
Ja myślę, kolego John Shakrat, że ci panowie doskonale wiedzieli o możliwości wymiany płyty. Nie zrozumiałeś kompletnie koncepcji tej idei…
Klient prędzej zapłaci ci 200, jak przez 6 godzin będziesz kopał dół, niż za wgranie Windowsa, sterowników, aktualizacji, konfigurację i zainstalowanie oprogramowania, które potrzebuje do codziennej pracy, bo w końcu to tylko klikanie muszką.
John Sharkrat:
> Jak widać goście nie wiedzieli, więc zajęło im to 3 lata.
Jak przeczytasz artykuł do końca, to się dowiesz, że odblokowanie pojedynczego laptopa nie było naszym celem ;)
@Redford
Sądzę, że chodziło mu o trochę inny kontekst ;p
>A gdzie ty masz oszukiwanie?
Klient placi ci za zlamanie hasla, a nie podmiane jego wlasnej plyty glownej bez jego wiedzy. Za cos takiego w normalnym serwisie wylatujesz na zbity p…
@R.
Co ty za przeproszeniem pier…? Klient płaci ci za odblokowanie laptopa. Nie ważne, czy przez złamanie hasła, podmianę fizyczną EEPROMu, zresetowanie hasła pinami czy flash BIOSu. Ważny jest efekt końcowy – działający laptop.
Jeżeli miałbym odgadywać „hasło” twoim sposobem, albo klient by sobie tego wyraźnie zażyczył, to 500zł z góry, poszedł do domu klienta, podpiął laptopa do prądu i odpalił bruteforca na 2 lata (może by mi się zechciało zaimplementować przeszukiwanie po tablicy ok. 2mld znanych haseł), z zaleceniem „nie wyłączać laptopa od zasilania do uzyskania wyniku”.
Albo powiedziałbym „800zł” i zadzwonił do Toshiby po hasło.
Myślisz, że serwisy działają inaczej? To idź do Apple, tam się sprzęty wymienia na nowe, a oddają je jako „naprawione” i zawsze trzeba dopłacić, bo nie opłaca się ich naprawiać. Nie jesteś wstanie nawet sprawdzić part numberów, bo otwarcie obudowy narusza gwarancję, więc albo wierzysz „serwisowi” albo nara bez gwarancji.
Żebym nie wspominał, jak działają serwisy ECU do samochodów, telewizorów czy drukarek. Autoryzowane serwisy drukarek wciskają podróbki tonerów, bo 70% taniej i w 90% przypadków się toner przyjmie, a jak się nie przyjmie – to się stwierdza, że był uszkodzony/zaschnięty i znowu wymienia, na nieoryginalny. Klient oczywiście płaci jak za oryginał. Nie podoba się? To możesz wymienić sam – tracąc gwarancję producenta.
Nawet nie wiesz, w ilu serwisach byłeś dymany i jeszcze się z tego cieszyłeś, a to normalna, akceptowalna praktyka. Nawet nie ograniczająca się do naszego kraju. Serwisy na całym świecie działają dokładnie tak samo, ze współpracą z producentem urządzenia, bo inaczej – nie przynosiły by zysków. Zysk, jest podstawą wykonywania czynności. Zwykły mechanik będzie cię robił w wała, zwykłe ASO Mercedesa w samym sercu Berlina będzie cię robiło w wała, wymieniając sprawne części i szukając problemów tam gdzie ich nie ma, bo na tym właśnie zarabia.
Daleko szukać, reballing CPU/GPU/Chipsetu w latopach. Stawki zaczynają się od 300zł, za 10 minut roboty (jak się ma sprzęt), a producenci układów zintegrowanych specjalnie wciskają GORSZEJ jakości kuleczki cyny (jakieś nawet łowca mitów robił porównanie), żeby autoryzowany serwis zarabiał hajs po 3 latach żywotności takiego sprzętu. Wiesz, czym jest reballing? Najprościej mówiąc, rozlutowaniem CPU i przylutowaniem tego samego CPU na wielowarstwowej płycie. Po co? Bo każdy producent laptopów musi mieć autoryzowany serwis, a autoryzowany serwis musi mieć zarobek „łatwy, szybki i przyjemny”, bo nie będzie chciał kupować licencji za spore hajsy.
I teraz fun-fact, wiesz jakie są zalecenia dla serwisantów od największych graczy?
Przykład: IBM (naprawienie czegokolwiek):
Działa poprawnie? TAK/NIE -> NIE
Czy świeci się dioda D2? TAK/NIE -> TAK
Wymień na nowe.
NIE ->
Wymień zasilacz na nowy.
Objaw dalej występuje? TAK/NIE -> TAK
Wymień na nowe.
Ba dum tsss!
To jest dokładnie tak, jak powiedział John, „za niewiedzę/brak umiejętności/głupotę się płaci”.
Czy aktualizacja do biosu została wydana/załatana? Czy Toshiba produkuje laptopy najbardziej odporne na łamanie biosu? bo jeśli tak, to warto je kupować jako najbezpieczniejsze.
Tylko po co skoro jezeli komus bedzie zalezalo na danych z lapka to po prostu wymieni plyte.
Chyba nikt nie zauważył, że „Cała operacja zajęła Michałowi i Sergiuszowi trzy lata”. Przy dwuletniej ważności podpisu kwalifikowanego jest to sukces Toshiby. Czternaście lat temu zrobili taką sztuczkę, Ciekawe co dzisiaj mogą wymyślić?
draft:
> Chyba nikt nie zauważył, że „Cała operacja zajęła Michałowi i Sergiuszowi trzy lata”.
3 lata kalendarzowe != 3 lata pracy. Sam projekt to było jakieś 2 tyg. roboty, tylko jak się coś robi hobbystycznie po godzinach to tak to się kończy. Jest to w artykule napisane, trzeba tylko przeczytać do końca ;)
To może teraz panowie spróbujcie podziałać coś z intelowskim AMT i tymi ich sekretnymi dodatkowymi procesorami w chipsecie z zaszyfrowanym kodem?
https://www.fsf.org/blogs/community/active-management-technology
Toshiba PC Business został wykupiony przez Sharp. Więc być może napis Toshiba już się nie pojawi na laptopach
czekam az ktos umozliwi wymiane biosu w malinie/orange pi i w koncu moze mali bedzie mozna uzywac do obliczen opencl
To może zamiast czekać, sam to zrób.
Specjalistę dźwiękowca należałoby zastrzelić, poza tym spoko.
Macie cenzurę lepszą niż w PRL. Gratuluję.
Bios to nic, załatać czarną dziurę, kosmos to jest coś, hermaszewski londowanie na marsie a oni napewno biorą narkotyki, widać po twarzach, takie zmęczone
Damn, byłem przy początku ich pracy, potem przez jakiś czas starałem się śledzić relacje w miarę na bieżąco (i widzę jak dużo skrótów i uproszczeń się tu znajduje, he he – przynajmniej jestem w stanie wszystko zrozumieć), ale nie wierzę że w końcu się udało ze wszystkim poradzić, gdzie już tyle razy stawali przed przeszkodami wydawałoby się nie do przeskoczenia. ?
4 lata :o. Wlasnie wykopalem moja korespondencje z grudnia 2014 :) Znalazlem im dataszity/updejty EC/serwisowke lapa.
Pozdrowienia dla Warszawskiego hackerspejsu.
Normalnie enigma.
Łezka się w oku kręci… Młodzi odkrywają biosa :-)
@Radford
Ja! Ja mam dla Was pomysł! Ja! Ja! JAaaa!
Podepnijcie ten oscyloskop do czego tylko chcecie, biosu, procesora, pamięci etc. Zapoznałem się z tym artykułem pobieżnie, ale najbardziej mnie zaciekawiło nanosekundowe opóźnienie w czasie odpowiedzi mikrokontrolera, na podanie pierwszego i kolejnego znaku hasła.
Co jest pomysłem? Sprawdźcie, czy pojawia się jakieś nanosekundowe opóźnienie widoczne na oscyloskopie, przy podawaniu hasła do zaszyfrowanego dysku od SHA256 w górę :D
Rozbilibyście bank (i to nie jeden). Boże, to by było piękne… mam taki stary wojskowy PRLowski oscyloskop z klasycznymi, złotymi wtykami, co waży z 25 kilo, ale bym go używał :3 Mam dostęp do nieograniczonej ilości zaszyfrowanych dysków, wanna deal? :>
@ Redford
Jak się wie jak zrobić, to się robi 2 tygodnie. Jak się nie wie i trzeba szukać, myśleć, czytać to zlatują 3 lata. Praca fizyczna <= praca intelektualna. Praca fizyczna + praca intelektualna + 300 piw (100 rocznie) = 3 lata.
Gratulacje dla obydwu Panów za upór w dążeniu do celu !
Miło przeczytać, że ktoś potrafi się poświecić w imię ciekawości i samorozwoju.
To ja Wam powiem gdzie teraz szukać zabezpieczeń w notebookach Toshiba, w procesorze karty LAN :) I jest tylna furtka w Toshibach, zawsze była, piny pod slotem pamięci. Podobnie jak w ACER Extensa 5220 nad którą kiedyś siedziałem 3 tygodnie :)
Ale szacun za timingowanie, stara dobra metoda wykorzystana przez JG2000 do złamania CRYPTOWORKS :)
W starych lapkach IBM ThinkPad było prościej – odczytać PonyProgiem eeprom 24C08 i potem dekoder z jakiejś ruskiej strony.
Swoją drogą… przez te trzy lata, ten staruteńki laptopik chyba całkiem stracił wartość. Sztuka dla sztuki. Ale lubię takich gości.