o dwóch takich, co chcieli odblokować laptopa · freelancer, ex-google. twitter: @q3k irc: q3k @...
TRANSCRIPT
![Page 1: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/1.jpg)
O dwóch takich, co chcieli odblokować laptopa
Security PWNing Conference 2017
![Page 2: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/2.jpg)
whoisSergiusz Bazański
W dzień DevOps, w nocy hardware hacker.
Współzałożyciel Warszawskiego Hackerspace’u.
Freelancer, Ex-Google.
Twitter: @q3k
IRC: q3k @ freenode.net
Michał Kowalczyk
Wicekapitan @ Dragon Sector
Researcher @ Invisible Things Lab
Współautor “Praktycznej Inżynierii Wstecznej”
Twitter: @dsredford
IRC: Redford @ freenode.net
![Page 3: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/3.jpg)
Toshiba Portégé R100
Intel Pentium M 1 GHz256MB RAM
![Page 4: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/4.jpg)
Mały problem...
![Page 5: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/5.jpg)
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.
![Page 6: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/6.jpg)
Aha!
![Page 7: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/7.jpg)
Analiza BIOS-u
![Page 8: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/8.jpg)
Jak zdobyć kod BIOS-u?
Pamięć fizyczna? Nie z zablokowanym laptopem.
Dump kości Flasha? Ech.
Rozpakowanie aktualizacji? Spróbujmy!
![Page 9: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/9.jpg)
Rozpakowanie aktualizacji
https://support.toshiba.com/
![Page 10: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/10.jpg)
7-Zip
![Page 11: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/11.jpg)
+254 KB skompresowanych danych
![Page 12: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/12.jpg)
DekompresjaNieznany format
Domyślny updater to 16-bit EXE
Jest alternatywny, 32-bit!
![Page 13: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/13.jpg)
Dekompresja
BuIsFileCompressed
BuGetFileSize
BuDecodeFile
![Page 14: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/14.jpg)
Dekompresja50 linii C i mamy dekompresor!
...
BuIsFileCompressed(compressed, &is_compressed);
if (is_compressed) {
BuDecodeFile(compressed, fsize, decompressed);
}
...
![Page 15: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/15.jpg)
Rezultat
![Page 16: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/16.jpg)
Dump flasha BIOS-u
![Page 17: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/17.jpg)
Gdzie szukać?
![Page 18: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/18.jpg)
Identyfikowanie układów na szybko
RAM Flash uC / wszystko inne
WLPPZ2137ST 1308
Model
Datecode
![Page 19: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/19.jpg)
Interfejsowanie
In-circuit: układ pozostaje na oryginalnym PCB.
Out-of-circuit (?): wylutowanie układu, wlutowanie
do breakoutu.
![Page 20: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/20.jpg)
Breakout board et al.
Projekt w KiCAD (lub czymkolwiek innym).
Wykonanie PCB metodą chałupniczą (termotransfer).
Wylutowanie hot-airem, wlutowanie grotem.
![Page 21: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/21.jpg)
Narzędzia
~200zł ~300zł
~10zł
![Page 22: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/22.jpg)
Hackerspace100zł/msc. + piwo
![Page 23: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/23.jpg)
![Page 24: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/24.jpg)
FPGA(Spartan 3E)
Flash
Masa drutów
xD
![Page 25: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/25.jpg)
![Page 26: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/26.jpg)
Breakout Board
Setup
FlashFPGADevboard
A/A Mux(~30 linii)PC Serial
(2 linie)
Pobierz blok X
Słowo
X * 1024 + 4
Słowo
1k danych
X * 1024
X * 1024 + …
Słowo
![Page 27: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/27.jpg)
Breakout Board
Problemy
FlashFPGADevboard
A/A Mux(~30 linii)PC Serial
(2 linie)
Pobierz blok X
Słowo
X * 1024 + 4
Słowo
1k danych
X * 1024
X * 1024 + …
SłowoBrak checksum
Pomieszane linie adresu
![Page 28: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/28.jpg)
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 ¯\_(ツ)_/¯ .
![Page 29: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/29.jpg)
![Page 30: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/30.jpg)
Analiza kodu BIOS-u
![Page 31: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/31.jpg)
Jak zacząć?Tryb procesora?
Entry point?
Mapa pamięci?
![Page 32: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/32.jpg)
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
![Page 33: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/33.jpg)
![Page 34: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/34.jpg)
Start procesoraStartujemy pod adresem
CS:EIP = CS.Base + EIP = 0xFFFFFFF0
Real Mode ⇒ adres fizyczny. A20 włączone.
Tylko co tam jest?
![Page 35: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/35.jpg)
Mapowanie pamięciNorthbridge: Intel Odem MCH-M
Brak informacji o tym rejonie ⇒ sprawdźmy
southbridge
![Page 36: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/36.jpg)
Mapowanie pamięciSouthbridge: Intel ICH4-M
FWH = Firmware Hub = BIOS flash
Nasz dump ma dokładnie 0x80000 bajtów!
![Page 37: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/37.jpg)
Więcej mapowań
...
![Page 38: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/38.jpg)
Entry pointFFFFFFF0: jmp far FC00:3FA0
000FFFA0: jmp far FC00:00A2
000FC0A2: cli
000FC0A3: cld
000FC0A4: mov al, 2
000FC0A6: out 92h, al ; Włączenie A20 ...
![Page 39: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/39.jpg)
RE BIOS-u: InicjalizacjaBrak stosu! (i w ogóle RAM-u)
16-bit Protected Mode + Unreal Mode
Sumy kontrolne
Inicjalizacja RAM-u
Skopiowanie się do RAM-u
![Page 40: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/40.jpg)
RE BIOS-u: Inicjalizacja
16-bit Protected Mode → segmenty!
Musimy sparsować GDT
Dopiero po tym możemy analizować kod
![Page 41: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/41.jpg)
RE BIOS-u: Sprawdzanie hasła
![Page 42: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/42.jpg)
RE BIOS-u: Sprawdzanie hasłaWszystko trafia do jednej funkcji
f(in_buf) → out_buf
Po długiej analizie: wszystko trafia na porty 62h i
66h
![Page 43: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/43.jpg)
RE BIOS-u: Sprawdzanie hasłaManual southbridge’a:
Table 6-2. Fixed I/O Ranges Decoded by Intel ICH4
![Page 44: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/44.jpg)
“Microcontroller”???
![Page 45: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/45.jpg)
EC/KBC
CPU
Intel Pentium M
Northbridge
Intel Odem
MCH-M
RAM
GPU
Trident XP4
Southbridge
Intel ICH4-M
HDD Audio
Ethernet
LPC
EC/KBC
Renesas
M306K9FC
LRP
Battery
Keyboard
PSC
Touchpad
BIOS
![Page 46: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/46.jpg)
EC: DumpSkąd wziąć kod?
Aktualizacje!
![Page 47: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/47.jpg)
EC: DumpBrak aktualizacji do pobrania
Changelog BIOS-u: też nic o EC
Może podobny model?
Portégé S100!
![Page 48: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/48.jpg)
EC: Aktualizacje
W środku 3 bloby z
aktualizacjami
(w różnych wersjach)
![Page 49: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/49.jpg)
EC: Instalator aktualizacjiUżywa portów 62h i 66h
Wysyła część 1. (~2,5KB)
Wysyła część 2. (~100KB)
![Page 50: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/50.jpg)
EC: Blob aktualizacjiDekodowane w środku EC - nie mamy kodu :(
Spróbujmy jego analizy!
![Page 51: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/51.jpg)
EC: Blob aktualizacji - analizaWysoka 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
![Page 52: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/52.jpg)
EC: Blob aktualizacji - analiza
Wygląda to na ślepy zaułek...
![Page 53: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/53.jpg)
Sergiusz, wylutowałbyś mi jeszcze jedną rzecz…?
![Page 54: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/54.jpg)
EC..?
![Page 55: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/55.jpg)
Jeden breakout później...
![Page 56: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/56.jpg)
No to dumpujemy?
![Page 57: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/57.jpg)
EC: Protokół
M16CProgramator
SCLK
RXD
TXD
Busy
![Page 58: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/58.jpg)
EC: Protokół
![Page 59: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/59.jpg)
EC: ProtokółM16CProgramator
Flash Page X?
Flash Page X
![Page 60: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/60.jpg)
A jednak nie tak łatwo.
![Page 61: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/61.jpg)
EC: ProtokółM16CProgramator
ID Check (K0...K6)
Status?
Status (Unlocked/locked)
Flash Page X?
Flash Page X
![Page 62: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/62.jpg)
Sidechannel
![Page 63: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/63.jpg)
Możliwe ataki sidechannel
Analiza zużycia prądu
Analiza elektromagnetyczna
Glitching (VCC, CLK, ...)
![Page 64: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/64.jpg)
Ale może najpierw...
![Page 65: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/65.jpg)
Możliwe ataki ‘side’channel - prościej
O tutaj.
![Page 66: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/66.jpg)
EC: Podatność
Analiza statystyczna czasu między wysłaniem
ostatniego bajtu PINu a opadnięciem linii Busy.
![Page 67: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/67.jpg)
EC: PodatnośćM16CProgramator
ID Check - 00 FF FF FF FF FF FF
ID Check - 01 FF FF FF FF FF FF
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
Pomiar czasu odpowiedzi
Średni czas +3ms
Klucz:? ? ? ? ? ? ?
![Page 68: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/68.jpg)
EC: PodatnośćM16CProgramator
ID Check - 00 FF FF FF FF FF FF
ID Check - 01 FF FF FF FF FF FF
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
Pomiar czasu odpowiedzi
Średni czas +3ms
Klucz:02 ? ? ? ? ? ?
![Page 69: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/69.jpg)
EC: PodatnośćM16CProgramator
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
ID Check - 02 FE FF FF FF FF FF
ID Check - 02 FF FF FF FF FF FF
Pomiar czasu odpowiedzi
Średni czas +3ms Klucz:
02 FE ? ? ? ? ?
![Page 70: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/70.jpg)
EC: Podatność
FPGA(iCE40)
(EC)M16C
![Page 71: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/71.jpg)
EC: Podatność
PoC || GTFO
https://github.com/q3k/m16c-interface/
![Page 72: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/72.jpg)
EC: RE
Kod
(~700 funkcji)
Dane
Kryptografia
Bootloader
![Page 73: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/73.jpg)
EC: REZnacznie prostszy kod niż BIOS
Brak stringów
Szukamy komunikacji po LPC oraz tabeli
BIOS-calli
![Page 74: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/74.jpg)
EC: REZnalezienie tabeli jest łatwe
~100 różnych wywołań
Znamy numery, które nas interesują ⇒ analiza
handlerów
Brzmi prosto…?
![Page 75: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/75.jpg)
EC: RE handlerówRęczny context-switching
Brak spójnej konwencji wywołań
Brak podziału handlerów na funkcje
Skoki w środki funkcji
![Page 76: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/76.jpg)
Sprawdzenie hasła: BIOSout_buf = call_EC(
func=0x24,
in_buf=MD5(input)[:8] + pwd_type
)
out_buf[0] == 0 ⇒ sukces
![Page 77: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/77.jpg)
Sprawdzenie hasła: ECSpójrzmy na handler po stronie EC...
…6 poziomów w głąb:
BMGEU/C p6_4, p6
BSET pd6_4, pd6
JSR.W set_p6_5
JSR.W clear_p6_5
I/O na pinach 40 i 41
![Page 78: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/78.jpg)
Sprawdzenie hasła: ECNo ile można? :(
![Page 79: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/79.jpg)
Sprawdzenie hasła: ECTym razem to tylko EEPROM :)
EC czyta jeden blok, deszyfruje i porównuje z
otrzymanym MD5
![Page 80: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/80.jpg)
Challenge/ResponseSzukamy uniwersalnego ataku
Pora na analizę challenge/response!
![Page 81: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/81.jpg)
Challenge: BIOSout_buf = call_EC(
func=0x1A,
in_buf=rdtsc() + MD5(pc_serial)[:8]
)
challenge = bytes_to_string(out_buf)
![Page 82: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/82.jpg)
Challenge: EC
7 random bytes
RDTSC
Checksum
PC_SERIAL_MD5
ENC
Entropy pool
DEC
CHALL 1 CHALL 2
![Page 83: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/83.jpg)
Response: BIOSout_buf = call_EC(
func=0x1B,
in_buf=string_to_bytes(user_input)
)
out_buf[0] ⇒ sukces/porażka
![Page 84: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/84.jpg)
7 bytes CHK
DEC
DEC
RESP 1 RESP 2 PC_SERIAL_MD5
Verify
checksum
CHALL 2
ENC
== 0?
![Page 85: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/85.jpg)
EC: SzyfrowanieENC? DEC?
![Page 86: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/86.jpg)
EC: Szyfrowanie64-bitowy szyfr blokowy
ENCKEY A (256B) KEY B (128B)
INPUT (8B)
OUTPUT (8B)
![Page 87: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/87.jpg)
Challenge/ResponseWystarczy przepisać do Pythona i ...
![Page 88: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/88.jpg)
DEMO!
![Page 89: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/89.jpg)
EC: System aktualizacjiRozszyfrujmy aktualizacje!
![Page 90: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/90.jpg)
EC: System aktualizacjiPodpis symetryczny?
Możemy generować własne!
![Page 91: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/91.jpg)
Ciekawe, jak to wygląda w nowych laptopach…?
![Page 92: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/92.jpg)
Po co zmieniać kod, który działa? :)
![Page 93: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/93.jpg)
No i klucze w sumie też :)))
![Page 94: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/94.jpg)
Impact
Odblokowanie dowolnego (biznesowego) laptopa.
Permanent rootkit w EC.
Możliwość atakowania hosta z EC.
![Page 95: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/95.jpg)
Rootkit w EC?
DMA do hosta via LPC (ale nie na M16C) .
Keylogging & storage.
USB-Rubber-Ducky-like (wstrzykiwanie klawiszy / myszy).
Exploitowanie BIOS-u.
![Page 96: O dwóch takich, co chcieli odblokować laptopa · Freelancer, Ex-Google. Twitter: @q3k IRC: q3k @ freenode.net Michał Kowalczyk Wicekapitan @ Dragon Sector Researcher @ Invisible](https://reader035.vdocuments.site/reader035/viewer/2022062919/5ee30281ad6a402d666d25fb/html5/thumbnails/96.jpg)
Oficjalne stanowisko ToshibyToshiba 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.