O dwóch takich, co chcieli odblokować laptopa. Security PWNing Conference 2017

Podobne dokumenty
Krótka historia o debugowaniu laptopa, który nie budził się z uśpienia , Warsaw C++ Users' Group Michał Redford Kowalczyk

Komputery klasy PC. Dariusz Chaberski

USB firmware changing guide. Zmiana oprogramowania za przy użyciu połączenia USB. Changelog / Lista Zmian

Płytka uruchomieniowa XM32

Płytka uruchomieniowa XM64

USB firmware changing guide. Zmiana oprogramowania za przy użyciu połączenia USB. Changelog / Lista Zmian

Organizacja typowego mikroprocesora

Programowanie Mikrokontrolerów

Użycie AVR Studio do kompilacji AVRUB

USB firmware changing guide. Zmiana oprogramowania za przy użyciu połączenia USB. Changelog / Lista Zmian

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

Rev Źródło:

Laboratorium - Instalacja Virtual PC

Podstawy Techniki Mikroprocesorowej

Instrukcja instalacji oprogramowania pixel-fox

STEROWNIK STEROWNIK CNC/PLC XCx 1100

Instrukcja obsługi. Grand IP Camera III. Kamera IP do monitoringu

DVD MAKER USB2.0 Instrukcja instalacji

USB firmware changing guide. Zmiana oprogramowania za przy użyciu połączenia USB. Changelog / Lista Zmian

Konwersja maszyny fizycznej na wirtualną

STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

Wybrane zagadnienia elektroniki współczesnej

Camspot 4.4 Camspot 4.5

Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski

MARTECH SPI Tools. MARTECH SPI Tools Instrukcja obsługi v1.0. Instrukcja obłsugi

CPU. Architektura FLAGS Bit: dr Paweł Kowalczyk; DPTNS, KFCS UŁ. SI 16 bit. 16 bit. 16 bit.

DIGA Object Dictionary opis

Mikroinformatyka. Wielozadaniowość

Opis czytnika TRD-80 CLASSIC ver Moduł czytnika transponderów UNIQUE z wbudowaną anteną

INSTRUKCJA OBSŁUGI PROGRAMATORA WILLEM

Wykład 3. Przegląd mikrokontrolerów 8-bit: STM8

Niektóre piny mogą pełnić różne role, zależnie od aktualnej wartości sygnałów sterujących.

Laboratorium - Przechwytywanie i badanie datagramów DNS w programie Wireshark

MARTECH MicroWire Tools. MARTECH MicroWire Tools Instrukcja obsługi v1.0. Instrukcja obłsugi

Moduł komunikacyjny Modbus RTU do ciepłomierza SonoMeter 30

Programowanie na poziomie sprzętu. Tryb chroniony cz. 1

Laboratorium - Konfiguracja zabezpieczeń sieci bezprzewodowej

Zaliczenie Termin zaliczenia: Sala IE 415 Termin poprawkowy: > (informacja na stronie:

Dystrybucja oprogramowania przez portal PSB

Opis czytnika TRD-55 CLASSIC ver Moduł czytnika transponderów UNIQUE z zewnętrzną anteną

KATEDRA SYSTEMÓW MULTIMEDIALNYCH SEMINARIUM MULTIMEDIALNE SYSTEMY MEDYCZNE

Architektura komputerów

AVR DRAGON. INSTRUKCJA OBSŁUGI (wersja 1.0)

Wybrane bloki i magistrale komputerów osobistych (PC) Opracował: Grzegorz Cygan 2010 r. CEZ Stalowa Wola

Instrukcja użytkownika istorage datashur Instrukcja użytkownika

Technologia Informacyjna Wykład II Jak wygląda komputer?

Instrukcja instalacji oprogramowania pixel-fox

Instrukcja do oprogramowania ENAP DEC-1

Akademia Górniczo- Hutmicza w Krakowie Katedra Elektroniki WIET

AKTYWNY SAMORZĄD. Instrukcja instalacji, aktualizacji i konfiguracji.

Opis czytnika TRD-FLAT CLASSIC ver Naścienny czytnik transponderów UNIQUE w płaskiej obudowie

UTK ARCHITEKTURA PROCESORÓW 80386/ Budowa procesora Struktura wewnętrzna logiczna procesora 80386

PAKIET nr 12 Instytut Fizyki Teoretycznej

MDK-Plus. Licencja Node-Locked 8260 EUR 5740 EUR 3340 EUR gratis 3300 EUR 2300 EUR 1330 EUR 650 EUR 3970 EUR 2760 EUR 1600 EUR

Architektura systemu komputerowego

Moduł nie może być zasilany z PoE. Nie ma wbudowanej przetwornicy PoE, a posiada tylko wyprowadzenie pinów RJ45 na płytkę PCB

Dr Michał Tanaś(

Wykład 4. Przegląd mikrokontrolerów 16-bit: - PIC24 - dspic - MSP430

ZyXEL NBG-415N. Bezprzewodowy router szerokopasmowy n. Skrócona instrukcja obsługi. Wersja /2006 Edycja 1

STM32 Butterfly. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Programowanie w asemblerze Środowiska 64-bitowe

Programowalne układy logiczne

Opis przedmiotu zamówienia. Dział II CZĘŚĆ 1 DVD

MOBOT-RCR v2 miniaturowe moduły radiowe Bezprzewodowa transmisja UART

Moduł komunikacyjny Modbus RTU w standardzie RS-485 do ciepłomierza SonoMeter 31 i przelicznika energii Infocal 9

Laboratorium - Zabezpieczanie kont, danych i komputera w systemie Windows XP

IR106ROM ID100 FLASHROM SDRAM 29W320EB. 256MBit ADDRESS DATA ROM INTERFACE. 16 Bit MICROPROCESSOR I 2 C-BUS INTERFACE 0 INTERRUPT CONTROLLER

USB interface in 8-bit microcontrollers PIC18F family manufactured by Microchip.

MODUŁ UNIWERSALNY UNIV 3

Instrukcja obsługi rejestratorów XVR. Zapoznaj się przed użyciem

Vivotek ST3402 Skrócona instrukcja uŝytkownika

Mikrokontroler AVR ATmega32 - wykład 9

Komputer IBM PC niezależnie od modelu składa się z: Jednostki centralnej czyli właściwego komputera Monitora Klawiatury

Liczniki, rejestry lab. 08 Mikrokontrolery WSTĘP

Systemy Wbudowane. Arduino, AVR. Arduino. Arduino. Arduino. Oprogramowanie. Mikrokontroler. Mikrokontroler Platforma Arduino. Arduino IDE: Arduino C:

NPS-520. Serwer druku do urządzeń wielofukcyjnych. Skrócona instrukcja obsługi. Wersja 1.00 Edycja 1 11/2006

Pamięć. Podstawowe własności komputerowych systemów pamięciowych:

INSTRUKCJE JAK AKTYWOWAĆ SWOJE KONTO PAYLUTION

Wymagania systemowe oraz sposób instalacji systemu Lokale Spis treści

Instrukcja dla: Icomsat v1.0 SIM900 GSM/GPRS shield for Arduino oraz dla GPRS Shield produkcji Seeedstudio.

MIKROKONTROLERY - ŁADOWANIE KODU

SIWAREX WP521/WP522. Moduł SIWAREX występuje w dwóch wersjach: WP521 jednokanałowej, WP522 dwukanałowej. FAQ: /PL Data: 06/09/2016

1.10 MODUŁY KOMUNIKACYJNE

EASY WEASEL TM MOBILITY 3G 4G LTE ACCESSPOINT & TRAVEL ROUTER

URZĄDZENIA WEJŚCIA-WYJŚCIA

Opis przedmiotu zamówienia. Dział II DVD

INSTRUKCJA INSTALACJI OPROGRAMOWANIA DIAGNOSTYCZNEGO PRINS DATA SOFTWARE

Współpraca procesora ColdFire z pamięcią

Programowanie mikrokontrolerów. 8 listopada 2007

Przemysłowy odtwarzacz plików MP3

Aneks do instrukcji obsługi routera Asmax Br-804v II

Technologia informacyjna. Urządzenia techniki komputerowej

Technologie informacyjne Wykład I-III

m e d i a s e r v i c e Moduł kamery JPEG z komunikacją szeregową CJ0706A

Konfigurator Modbus. Instrukcja obsługi programu Konfigurator Modbus. wyprodukowano dla

Część I: Komputery przenośne... 2 LAPTOP STACJA DOKUJĄCA DO LAPTOPA LAPTOP STACJA DOKUJĄCA DO LAPTOPA

Instrukcja instalacji oprogramowania pixel-fox

Transkrypt:

O dwóch takich, co chcieli odblokować laptopa Security PWNing Conference 2017

whois Sergiusz Bazański Michał Kowalczyk W dzień DevOps, w nocy hardware hacker. Współzałożyciel Warszawskiego Hackerspace u. Freelancer, Ex-Google. Wicekapitan @ Dragon Sector Researcher @ Invisible Things Lab Współautor Praktycznej Inżynierii Wstecznej Twitter: @q3k IRC: q3k @ freenode.net Twitter: @dsredford IRC: Redford @ freenode.net

Toshiba Portégé R100 Intel Pentium M 1 GHz 256MB RAM

Mały problem...

Większy problem? Reset zworką? Nie ma żadnej. Wyciągnięcie baterii? Nic to nie daje. Szuranie kluczem po wszystkich kościach pamięci w nikłej nadziei na błąd checksumy? Punkty za styl. Niestety nie.

Aha!

Analiza BIOS-u

Jak zdobyć kod BIOS-u? Pamięć fizyczna? Nie z zablokowanym laptopem. Dump kości Flasha? Ech. Rozpakowanie aktualizacji? Spróbujmy!

Rozpakowanie aktualizacji https://support.toshiba.com/

7-Zip

+ 254 KB skompresowanych danych

Dekompresja Nieznany format Domyślny updater to 16-bit EXE Jest alternatywny, 32-bit!

Dekompresja BuIsFileCompressed BuGetFileSize BuDecodeFile

Dekompresja 50 linii C i mamy dekompresor!... BuIsFileCompressed(compressed, &is_compressed); if (is_compressed) { BuDecodeFile(compressed, fsize, decompressed); }...

Rezultat

Dump flasha BIOS-u

Gdzie szukać?

Identyfikowanie układów na szybko Model WLPPZ2137 ST 1308 Datecode RAM Flash uc / wszystko inne

Interfejsowanie In-circuit: układ pozostaje na oryginalnym PCB. Out-of-circuit (?): wylutowanie układu, wlutowanie do breakoutu.

Breakout board et al. Projekt w KiCAD (lub czymkolwiek innym). Wykonanie PCB metodą chałupniczą (termotransfer). Wylutowanie hot-airem, wlutowanie grotem.

Narzędzia ~200zł ~10zł ~300zł

Hackerspace 100zł/msc. + piwo

FPGA (Spartan 3E) Masa drutów Flash xd

Setup PC Serial (2 linie) FPGA Devboard A/A Mux (~30 linii) Flash Breakout Board Pobierz blok X X * 1024 Słowo X * 1024 + 4 Słowo X * 1024 + 1k danych Słowo

Pomieszane linie adresu Problemy PC Serial (2 linie) FPGA Devboard A/A Mux (~30 linii) Flash Breakout Board Pobierz blok X X * 1024 Słowo X * 1024 + 4 Słowo X * 1024 + Brak checksum 1k danych Słowo

FPGA? FPGA było niepotrzebne - użyte tylko dla ilości pinów. Względnie trudne do debugowania i rozwijania. Trzeba było użyć uc z większą ilością I/O albo multiplexera. Ale nauczyliśmy się czegoś po drodze, więc \_(ツ)_/.

Analiza kodu BIOS-u

Jak zacząć? Tryb procesora? Entry point? Mapa pamięci?

Start procesora A hardware reset sets each processor s registers to a known state and places the processor in real-address mode. Intel 64 and IA-32 Architectures Software Developer s Manual Volume 3

Start procesora Startujemy pod adresem CS:EIP = CS.Base + EIP = 0xFFFFFFF0 Real Mode adres fizyczny. A20 włączone. Tylko co tam jest?

Mapowanie pamięci Northbridge: Intel Odem MCH-M Brak informacji o tym rejonie sprawdźmy southbridge

Mapowanie pamięci Southbridge: Intel ICH4-M FWH = Firmware Hub = BIOS flash Nasz dump ma dokładnie 0x80000 bajtów!

Więcej mapowań...

Entry point FFFFFFF0: jmp far FC00:3FA0 000FFFA0: jmp far FC00:00A2 000FC0A2: 000FC0A3: 000FC0A4: 000FC0A6: cli cld mov al, 2 out 92h, al ; Włączenie A20...

RE BIOS-u: Inicjalizacja Brak stosu! (i w ogóle RAM-u) 16-bit Protected Mode + Unreal Mode Sumy kontrolne Inicjalizacja RAM-u Skopiowanie się do RAM-u

RE BIOS-u: Inicjalizacja 16-bit Protected Mode segmenty! Musimy sparsować GDT Dopiero po tym możemy analizować kod

RE BIOS-u: Sprawdzanie hasła

RE BIOS-u: Sprawdzanie hasła Wszystko trafia do jednej funkcji f(in_buf) out_buf Po długiej analizie: wszystko trafia na porty 62h i 66h

RE BIOS-u: Sprawdzanie hasła Manual southbridge a: Table 6-2. Fixed I/O Ranges Decoded by Intel ICH4

Microcontroller???

EC/KBC GPU Trident XP4 PSC CPU Intel Pentium M HDD Ethernet Northbridge Intel Odem MCH-M Southbridge Intel ICH4-M RAM Audio BIOS LPC Battery EC/KBC Renesas M306K9FC LRP Keyboard Touchpad

EC: Dump Skąd wziąć kod? Aktualizacje!

EC: Dump Brak aktualizacji do pobrania Changelog BIOS-u: też nic o EC Może podobny model? Portégé S100!

EC: Aktualizacje W środku 3 bloby z aktualizacjami (w różnych wersjach)

EC: Instalator aktualizacji Używa portów 62h i 66h Wysyła część 1. (~2,5KB) Wysyła część 2. (~100KB)

EC: Blob aktualizacji Dekodowane w środku EC - nie mamy kodu :( Spróbujmy jego analizy!

EC: Blob aktualizacji - analiza Wysoka entropia szyfrowanie lub kompresja Brak regularności w trigramach szyfrowanie Rozmiar zawsze podzielny przez 8 szyfrowanie Krótkie najdłuższe powtórzone podsłowo jeśli szyfrowanie, to nie ECB

EC: Blob aktualizacji - analiza Wygląda to na ślepy zaułek...

Sergiusz, wylutowałbyś mi jeszcze jedną rzecz?

EC..?

Jeden breakout później...

No to dumpujemy?

EC: Protokół SCLK RXD Programator TXD Busy M16C

EC: Protokół

EC: Protokół M16C Programator Flash Page X? Flash Page X

A jednak nie tak łatwo.

EC: Protokół M16C Programator ID Check (K0...K6) Status? Status (Unlocked/locked) Flash Page X? Flash Page X

Sidechannel

Możliwe ataki sidechannel Analiza zużycia prądu Analiza elektromagnetyczna Glitching (VCC, CLK,...)

Ale może najpierw...

Możliwe ataki side channel - prościej O tutaj.

EC: Podatność Analiza statystyczna czasu między wysłaniem ostatniego bajtu PINu a opadnięciem linii Busy.

EC: Podatność Pomiar czasu odpowiedzi Programator M16C ID Check - 00 FF FF FF FF FF FF ID Check - 01 FF FF FF FF FF FF Średni czas +3ms ID Check - 02 FF FF FF FF FF FF ID Check -.. FF FF FF FF FF FF ID Check - FE FF FF FF FF FF FF ID Check - FF FF FF FF FF FF FF Klucz:???????

EC: Podatność Pomiar czasu odpowiedzi Programator M16C ID Check - 00 FF FF FF FF FF FF ID Check - 01 FF FF FF FF FF FF Średni czas +3ms ID Check - 02 FF FF FF FF FF FF ID Check -.. FF FF FF FF FF FF ID Check - FE FF FF FF FF FF FF ID Check - FF FF FF FF FF FF FF Klucz: 02??????

EC: Podatność Pomiar czasu odpowiedzi Programator M16C ID Check - 02 00 FF FF FF FF FF ID Check - 02 01 FF FF FF FF FF ID Check - 02 03 FF FF FF FF FF ID Check - 02.. FF FF FF FF FF Średni czas +3ms ID Check - 02 FE FF FF FF FF FF ID Check - 02 FF FF FF FF FF FF Klucz: 02 FE?????

EC: Podatność FPGA (ice40) (EC) M16C

EC: Podatność PoC GTFO https://github.com/q3k/m16c-interface/

EC: RE Dane Kod (~700 funkcji) Kryptografia Bootloader

EC: RE Znacznie prostszy kod niż BIOS Brak stringów Szukamy komunikacji po LPC oraz tabeli BIOS-calli

EC: RE Znalezienie tabeli jest łatwe ~100 różnych wywołań Znamy numery, które nas interesują analiza handlerów Brzmi prosto?

EC: RE handlerów Ręczny context-switching Brak spójnej konwencji wywołań Brak podziału handlerów na funkcje Skoki w środki funkcji

Sprawdzenie hasła: BIOS out_buf = call_ec( func=0x24, in_buf=md5(input)[:8] + pwd_type ) out_buf[0] == 0 sukces

Sprawdzenie hasła: EC Spójrzmy na handler po stronie EC... 6 poziomów w głąb: BMGEU/C BSET JSR.W JSR.W p6_4, p6 pd6_4, pd6 set_p6_5 clear_p6_5 I/O na pinach 40 i 41

Sprawdzenie hasła: EC No ile można? :(

Sprawdzenie hasła: EC Tym razem to tylko EEPROM :) EC czyta jeden blok, deszyfruje i porównuje z otrzymanym MD5

Challenge/Response Szukamy uniwersalnego ataku Pora na analizę challenge/response!

Challenge: BIOS out_buf = call_ec( func=0x1a, in_buf=rdtsc() + MD5(pc_serial)[:8] ) challenge = bytes_to_string(out_buf)

Challenge: EC RDTSC PC_SERIAL_MD5 Entropy pool 7 random bytes Checksum DEC CHALL 1 CHALL 2 ENC

Response: BIOS out_buf = call_ec( func=0x1b, in_buf=string_to_bytes(user_input) ) out_buf[0] sukces/porażka

RESP 1 RESP 2 7 bytes == 0? CHALL 2 DEC ENC CHK Verify checksum DEC PC_SERIAL_MD5

EC: Szyfrowanie ENC? DEC?

EC: Szyfrowanie 64-bitowy szyfr blokowy INPUT (8B) KEY A (256B) ENC OUTPUT (8B) KEY B (128B)

Challenge/Response Wystarczy przepisać do Pythona i...

DEMO!

EC: System aktualizacji Rozszyfrujmy aktualizacje!

EC: System aktualizacji Podpis symetryczny? Możemy generować własne!

Ciekawe, jak to wygląda w nowych laptopach?

Po co zmieniać kod, który działa? :)

No i klucze w sumie też :)))

Impact Odblokowanie dowolnego (biznesowego) laptopa. Permanent rootkit w EC. Możliwość atakowania hosta z EC.

Rootkit w EC? DMA do hosta via LPC (ale nie na M16C). Keylogging & storage. USB-Rubber-Ducky-like (wstrzykiwanie klawiszy / myszy). Exploitowanie BIOS-u.

Oficjalne stanowisko Toshiby Toshiba is working on a temporary BIOS update that can be used to prevent the security issue that has been raised and expects to release this update on its website within the next 2 weeks. Toshiba plans to start the release of a permanent fix for some models from January, 2018 and will complete the releases of permanent fix for all applicable models by the end of March 2018.