Как вытащить прошивку из любого устройства

Вытащить прошивку устройства

Вы наверное как и я любили в детстве все разбирать и изучать, как и что работает. Некоторые повзрослели, а я все еще люблю этим заниматься )). В этой статье, я расскажу о том, как вытащить прошивку с любого устройства и как разрабы пытаются это предотвратить.

У старых ламповых при­емни­ков не было вообще никаких про­шивок, а единс­твен­ная защита, которая у них была — это анод­ное нап­ряжение. В наше время все иначе: мне попада­ются гаджеты, которые пытаются противодействовать уже на эта­пе вскрытия кор­пуса. Нач­нем наше увлекательное путешествие.

Осмотр платы устройства

Ес­ли вскры­тие не показа­ло, что паци­ент умер от вскры­тия, я сна­чала осматри­ваю пла­ту в поис­ках пинов отла­доч­ных интерфей­сов — обыч­но это JTAG или UART. Глав­ная проб­лема не в том, что нуж­ные кон­такты могут быть в очень неожи­дан­ных мес­тах, а в том, что обыч­но они отклю­чены. Конеч­но, даже в 2021 году все еще хва­тает уни­кумов, которые отправ­ляют в прод устрой­ства с вклю­чен­ным UART, но количес­тво таковых стре­митель­но пада­ет.

Осмотр платы устройства

Ес­ли тебе не повез­ло — вари­антов нем­ного: или пла­кать в подуш­ку, или искать чип памяти на бор­ту и читать его непос­редс­твен­но.

И вот с этим тебя ожи­дает уйма инте­рес­ного! Думал, нуж­но прос­то вытащить вось­миногую мик­руху в DIP-кор­пусе, похожую на ста­рый чип с BIOS? Как бы не так! Сей­час есть минимум четыре отно­ситель­но широко при­меня­емых вида памяти, и некото­рые из них могут быть похожи друг на дру­га так, что не раз­личишь.

Память

Преж­де чем я рас­ска­жу, что и как делать с памятью, давай сна­чала раз­берем­ся, какая она вооб­ще быва­ет и как ее отли­чить от дру­гих ком­понен­тов на пла­те.

Как вытащить прошивку из устройства

По опы­ту про­цес­сор (на скрин­шоте выше по цен­тру) обыч­но квад­ратной фор­мы и исполня­ется в BGA, а память пря­моуголь­ная и дела­ется в SOP-кор­пусах.

Час­то в уль­тра­пор­татив­ных вычис­литель­но мощ­ных устрой­ствах (смар­тфо­нах, нап­ример) исполь­зует­ся бутер­брод из про­цес­сора и памяти — так мень­ше раз­меры и задер­жки при работе. Форм‑фак­тор, конеч­но, BGA — прос­то потому, что ничего дру­гого в кро­хот­ный кор­пус запих­нуть нель­зя.

Снять прошивку микросхемы

ROM — пос­тоян­ную память — отли­чить доволь­но лег­ко. Пред­положим, чип с ней ты уже нашел. Теперь давай раз­берем­ся, какая она быва­ет.

Нас инте­ресу­ет EEPROM (Electrically Erasable Programmable Read-Only Memory), FRAM (сег­нето­элек­три­чес­кая память) и NOR/NAND flash — они тебе уже и так зна­комы. Из них ты мог не слы­шать толь­ко о FRAM — ее начали при­менять око­ло пяти лет назад, так что она еще не осо­бо популяр­на.

EEPROM

Сре­ди осо­бен­ностей этой памяти — побай­товые чте­ние и запись. Такая память самая дол­говеч­ная: по рас­четам, она может сох­ранять информа­цию в течение при­мер­но двух­сот лет! Но за надеж­ность при­ходит­ся пла­тить — глав­ным обра­зом объ­емом, с котором у это­го вида памяти все пло­хо: типич­ный объ­ем такого чипа изме­ряет­ся в килобай­тах. Из‑за низ­кого объ­ема для хра­нения про­шивок этот тип памяти поч­ти не при­меня­ется. Ну а раз загово­рили о минусах — сто­ит и о низ­кой ско­рос­ти ска­зать.

Устройство ячейки памяти EEPROM
Устройство ячейки памяти EEPROM

Ре­сурс ячей­ки — око­ло мил­лиона цик­лов переза­писи. По срав­нению с сов­ремен­ными ячей­ками NAND, у которых этот показа­тель находит­ся в пре­делах нес­коль­ких десят­ков тысяч цик­лов, EEPROM-память прос­то нере­аль­но надеж­ная.

РЕКОМЕНДУЕМ:
Как снять дамп прошивки и получить доступ к консоли управления гаджета

FRAM

FRAM — это сов­сем новый тип энер­гонеза­виси­мой памяти. Про­мыш­ленно его при­менять ста­ли все­го нес­коль­ко лет назад, так что шанс встре­тить имен­но FRAM в каком‑нибудь умном холодиль­нике неболь­шой, но ско­ро все может поменять­ся. Пока что основная проб­лема в цене, которая нес­коль­ко выше, чем у дру­гих типов памяти.

Ус­трой­ство FRAM-ячей­ки. Похоже на DRAM, прав­да?
Ус­трой­ство FRAM-ячей­ки. Похоже на DRAM, прав­да?

От EEPROM отли­чает­ся фун­дамен­таль­но дру­гим прин­ципом запоми­нания информа­ции: хра­нит­ся не заряд на зат­воре, а знак поляри­зации сег­нето­элек­три­ка. При при­ложе­нии нап­ряжения она меня­ется на про­тиво­полож­ную, что поз­воля­ет читать такую память и писать в нее.

Из‑за нового прин­ципа работы такая память зна­читель­но быс­трее, чем EEPROM, но ее дол­говеч­ность оста­лась прак­тичес­ки неиз­менной.

NOR/NAND Flash

NOR/NAND-флеш‑память — это прос­то EEPROM, соб­ранный в мас­сив. NOR от NAND отли­чает­ся толь­ко спо­собом упа­ков­ки в мас­сив, но это неболь­шое раз­личие ведет к дос­таточ­но силь­ным отли­чиям в такой памяти.

NOR NAND-флеш‑память

NOR быс­трее и надеж­нее, чем NAND, но сто­ит дороже из‑за мень­шей плот­ности ком­понов­ки. NAND же, нап­ротив, дешевый как мусор, но име­ет проб­лемы с надеж­ностью.

NOR- и NAND-память исполь­зует­ся в SSD и вся­ких флеш­ках. Из‑за низ­кой надеж­ности NAND-памяти такие накопи­тели в обя­затель­ном поряд­ке име­ют боль­шой пул запас­ных яче­ек, недос­тупных для обыч­ного исполь­зования, и умный кон­трол­лер, который всем этим хозяй­ством рулит. Дер­жать такой овер­хед в шир­потреб­ных умных муль­тивар­ках неп­рости­тель­но дорого, так что при­меня­ется обыч­но NOR, а NAND оста­ется для поль­зователь­ских накопи­телей, где проб­лемы надеж­ности мож­но перело­жить на поль­зовате­ля, который не дела­ет бэкапы. Хотя нет — даже в дешевых роуте­рах он все чаще при­меня­ется бла­года­ря прог­рам­мным механиз­мам защиты целос­тнос­ти.

Сводная таблица NOR NAND FRAM EEPROM
Сводная таблица NOR NAND FRAM EEPROM

NOR был бы иде­ален, если бы не его цена, так что рыночек порешал — и теперь у нас всех исполь­зует­ся NAND поч­ти вез­де. Даже во встра­иваемой тех­нике уже поч­ти научи­лись с ним безопас­но работать — кон­троль­ные сум­мы, ECC-коды и резер­вные бло­ки. Кра­сота!

Корпуса микросхем

Как видишь, с кор­пусами у памяти все пло­хо: помимо показан­ных на кар­тинке вари­антов, мож­но зап­росто вспом­нить еще с десяток, и не факт, что про­изво­дитель не решил исполь­зовать неч­то экс­клю­зив­ное, у чего может вооб­ще не быть наз­вания.

Корпуса микросхем
Корпуса микросхем

Маркировка

До­пус­тим, тебе повез­ло най­ти чип с памятью. Пер­вым делом нам нуж­но про­читать его мар­киров­ку.

Маркировка микросхем

Ес­ли мар­киров­ка есть — немал шанс встре­тить ее имен­но в таком фор­мате, как показан на кар­тинке выше. Пер­вые две бук­вы — код вен­дора, потом тип памяти в чипе, потом внут­ренний номер серии — и даль­ше уже чет­кой логики не прос­лежива­ется.

Так как еди­ного стан­дарта нет и не пред­видит­ся, про­изво­дите­ли воль­ны писать на сво­их чипах, что счи­тают нуж­ным. Это порой при­водит к кол­лизи­ям, вро­де того, что пред­став­лено на той же кар­тинке: два чипа раз­ных про­изво­дите­лей, оба 29-й серии, но один NOR, а дру­гой — NAND. Короче, не уга­даешь, и такие чипы при­ходит­ся про­бивать в поис­ковиках, что­бы выяс­нить хоть что‑то.

Типовой дизайн

Ус­трой­ства одно­го сег­мента про­екти­руют­ся очень похожи­ми — это впол­не оче­вид­но. Нап­ример, все бытовые роуте­ры изнутри выг­лядят поч­ти оди­нако­во. Та же ситу­ация на рын­ке устрой­ств SCADA, у которых свои каноны, но они прос­лежива­ются вез­де без осо­бых изме­нений.

Я рас­ска­жу о пяти катего­риях устрой­ств, с которы­ми тебе, воз­можно, при­дет­ся иметь дело:

  • ПК;
  • се­тевое обо­рудо­вание бытово­го сег­мента (роуте­ры, свит­чи, точ­ки дос­тупа);
  • обо­рудо­вание для ответс­твен­ных при­мене­ний (на заводах);
  • IoT — интернет вещей;
  • смар­тфо­ны.

Са­мо собой, мир кру­тит­ся не толь­ко вок­руг смар­тфо­нов да компь­юте­ров, но с ними у тебя шанс встре­тить­ся куда боль­ше, чем с каким‑нибудь кон­трол­лером для управле­ния ракет­ными дви­гате­лями. Поэто­му давай рас­смот­рим типовое устрой­ство толь­ко этих пяти катего­рий девай­сов.

ПК

Ус­трой­ство обыч­ных ПК под­разуме­вает модуль­ность, то есть поч­ти все детали мож­но лег­ко вынуть. Из‑за это­го на мат­пла­те из эле­мен­тов памяти есть толь­ко флеш­ка с BIOS/UEFI. При этом BIOS обыч­но сидит на мик­росхе­мах 24-й серии — I2C EEPROM, а в новых моделях сто­ит 25-я серия SPI NOR flash с UEFI.

Вытащить прошивку компьютера

Ес­ли же уста­нов­лен взрос­лый инте­лов­ский про­цес­сор с под­дер­жкой ME — на пла­те мож­но най­ти вто­рую такую же флеш­ку, но с про­шив­кой для ME. Это дела­ется в целях безопас­ности: находя­щуюся на физичес­ки отдель­ной мик­росхе­ме про­шив­ку заразить или под­менить слож­нее.

Intel ME

Intel Management Engine — это осо­бая сис­тема для UEFI-сов­мести­мых ПК на базе про­цес­соров Intel. Она име­ет свою выделен­ную мик­росхе­му памяти и собс­твен­ный про­цес­сор, а так­же собс­твен­ные каналы дос­тупа к сетевым адап­терам и основной опе­ратив­ной памяти. Может без огра­ниче­ний вза­имо­дей­ство­вать поч­ти с чем угод­но в сос­таве компь­юте­ра, что очень силь­но повыша­ет тре­бова­ния к ее защите.

Бытовые роутеры

С роуте­рами пот­ребитель­ско­го клас­са все доволь­но прос­то: тут ста­вят память SPI NOR 25-й серии, если тре­бует­ся не боль­ше 8 Мбайт, или NAND-память объ­емом поболь­ше. Изредка мож­но най­ти eMMC, но мне такое пока не попада­лось.

Вытащить прошивку роутера

Устройства для ответственного применения

Тут все нем­ного слож­нее. Стан­дарты тре­буют стран­ных вещей, поэто­му с боль­шим шан­сом устрой­ства этой катего­рии будут сос­тоять из нес­коль­ких плат, соеди­нен­ных переход­ными интерфей­сами. Будет мно­го раз­ных запоми­нающих устрой­ств, что­бы прос­то прой­ти сер­тифика­цию.

Дамп прошивки

Ло­ги обыч­но пишут­ся в EEPROM или FRAM 24-й серии, заг­рузчик лежит на NOR 25-й серии, а все встро­енное ПО кла­дут на NOR 26-й, 29-й серии. NAND исполь­зуют ред­ко, а если исполь­зуют — сра­зу боль­шими мас­сивами с резер­вирова­нием.

IoT

Сей­час понятие IoT слиш­ком рас­тяжимое: по сути, туда мож­но записать вооб­ще все умное домаш­нее и даже не очень домаш­нее. Из‑за это­го память там может быть любая: хоть EEPROM, хоть eMMC — это ког­да NAND с хост‑кон­трол­лером упа­кова­ны в один чип.

Дамп прошивки устройства умного дома

Смартфоны

В смар­тфо­нах обыч­но все самое передо­вое: тут тебе и eMMC, и eUFS, и даже NVMe SSD, как у Apple. При этом, как ни кру­ти, все эти чипы выг­лядят плюс‑минус оди­нако­во, так что ты их ни с чем не спу­таешь.

Вытащить прошивку телефона

Расшифровка имени

Те­перь, ког­да наш­ли нуж­ный чип и про­чита­ли мар­киров­ку, ее нуж­но декоди­ровать. Кста­ти, мар­киров­ка далеко не всег­да чита­ется целиком: часть может быть слу­чай­но или намерен­но скры­та, а то и вов­се под­делана, как любят устра­ивать китай­цы со сво­ими деталя­ми на Али.

Осо­бо круп­ные про­изво­дите­ли могут пре­дос­тавлять на сво­их сай­тах декоде­ры име­ни мик­росхе­мы, но поч­ти ник­то так не дела­ет.

Пох­валь­ный при­мер — про­изво­дитель Micron, который дал на сай­те внят­ную инс­трук­цию и фор­му для получе­ния даташи­та на свои мик­росхе­мы.

Расшифровка имени чипа

Ес­ли же декоде­ра нет, при­дет­ся вык­ручивать­ся. Мож­но поп­робовать разоб­рать­ся по схе­ме на скрин­шоте ниже, но, естес­твен­но, безо вся­ких гаран­тий успе­ха. Воз­можно, даже луч­ше сра­зу идти к япон­цам — они очень любят неадек­ватно запутан­ные наз­вания без извес­тной логики. Она, конеч­но, есть, но пока что ник­то ее не смог понять.

Расшифровка имени чипа

Поиск документации

Гуг­лить, думаю, ты и сам уме­ешь, но для поис­ка докумен­тации ко вся­ким экзо­тичес­ким чипам это может быть бес­полез­но. Во‑пер­вых, более эффекти­вен поиск по пер­вым N сим­волам наз­вания мик­росхе­мы. Во‑вто­рых, час­то про­ще най­ти по коду на Aliexpress или дру­гих круп­ных тор­говых пло­щад­ках.

Ес­ли уж любишь Google, поп­робуй поиск по кар­тинкам — там порой мож­но най­ти то, что тек­стом не ищет­ся.

Еще огромные базы чипов есть в ПО для прог­рамма­торов — я исполь­зую ПО ком­пании Elnec. Зачас­тую там даже есть даташи­ты, но слиш­ком на это наде­ять­ся не сто­ит.

И еще одно хорошее мес­то для поис­ков — GitHub. С боль­шим шан­сом там най­дет­ся что‑нибудь по зап­росу в духе «X microcircuit read poc». Даль­ше мож­но выд­рать ссыл­ку на даташит или что‑то еще полез­ное. Мне попада­лись даже скры­тые сер­висные коман­ды для бло­киров­ки/раз­бло­киров­ки чипа, что, конеч­но, очень при­ятно при изу­чении.

Оборудование

Тут мож­но толь­ко ска­зать, чего делать не сто­ит: не надо брать дешевые инс­тру­мен­ты и рас­ходни­ки. Из моего любимо­го — при­пой, который пла­вит­ся при совер­шенно неожи­дан­ных тем­перату­рах, про­водя­щий флюс (!) и одно­разо­вые пин­цеты.

Под­робнее хочет­ся рас­ска­зать о дешевом флю­се. Как при­мер — ТТ, так­же извес­тный как розовый гель. Он хорош, но он не отмы­вает­ся и про­водит ток на высоких час­тотах. Это не проб­лема в совет­ском радио или даже сов­ремен­ном бло­ке питания, но вот на пла­тах компь­юте­ров с гигагер­цами час­тоты он катего­ричес­ки про­тиво­пока­зан.

Сня­тие ком­паун­да — это воп­рос тем­перату­ры. Я обыч­но грею феном на ~250 гра­дусов, но есть одна проб­лемка. И сос­тоит она в том, что под ком­паун­дом ком­понен­ты могут быть при­паяны низ­котем­ператур­ным при­поем, вро­де спла­вов Розе или Вуда. Да, ком­паунд ты сни­мешь, но вмес­те с ним сой­дет полови­на пла­ты. А хит­рая флеш­ка может не завес­тись без кучи рас­сыпухи, которую обратно уже не соб­рать.

При сня­тии ком­паун­да не забывай о вытяж­ке — твое здо­ровье важ­нее любой мик­росхе­мы!

Что делать, если пла­та пок­рыта лаком? Мож­но поп­робовать свес­ти его аце­тоном, но он может пов­редить тек­сто­лит. Делай так, толь­ко если тебе терять нечего. Для осталь­ных слу­чаев — прос­то сни­мать скаль­пелем в нуж­ных мес­тах, а осталь­ное не тро­гать.

При пай­ке ори­енти­руй­ся на гра­фик тер­мопро­филя в кон­це даташи­та на мик­росхе­му. Он там раз­меща­ется не прос­то так, и на моей памяти дей­стви­тель­но были слу­чаи, ког­да мик­росхе­ма уми­рала от перег­рева при извле­чении. Как извес­тно, люди делят­ся на тех, кто не смот­рит гра­фики в докумен­тации, и тех, кто уже смот­рит.

микросхема снять прошивку

К завод­ско­му при­пою час­то име­ет смысл при­мешать менее тугоп­лавкий сплав Розе или ПОС63, ну или сплав Вуда, если все сов­сем пло­хо. Это зна­читель­но понизит тем­перату­ру пай­ки и уве­личит шан­сы не сжечь мик­руху.

Подготовка к чтению прошивки

Пос­ле выпай­ки ни в коем слу­чае нель­зя устра­ивать мик­росхе­ме тем­ператур­ные испы­тания: пусть полежит и осты­нет сама, а не в спир­те — так шан­сы сох­ранить работос­пособ­ность куда выше. Даль­ше нуж­но про­верить, все ли лап­ки чипа находят­ся в одной плос­кости и не обра­зова­лись ли от при­поя перемыч­ки меж­ду нож­ками. Их нуж­но убрать, что­бы не спа­лить прог­рамма­тор, не име­ющий защиты от такого, и сам чип тоже.

Подготовка к чтению прошивки

С BGA нуж­но убрать ста­рый при­пой и нанес­ти новые шарики. Ког­да чип очи­щен и под­готов­лен к чте­нию, не взду­май пихать его в прог­рамма­тор с при­жимом пря­мо в чип — велик шанс прос­то раз­давить его!

Чтение прошивки

Пом­ни, что память NOR flash идет с завода без битых яче­ек, а у NAND есть допус­тимый про­цент бра­ка, так что, если в NAND вид­ны битые ячей­ки, не спе­ши расс­тра­ивать­ся.

Чтение прошивки

Прог­рамма­тор перед чте­нием нуж­но пра­виль­но нас­тро­ить. В час­тнос­ти, надо зас­тавить его читать все, вклю­чая сис­темные стра­ницы в начале и кон­це памяти — они быва­ют край­не важ­ны!

Раз­работ­чики чипа нас­тоятель­но рекомен­дуют раз­работ­чикам устрой­ства исполь­зовать свои чипы в соот­ветс­твии с некото­рыми пра­вила­ми. Но вто­рые воль­ны не под­чинять­ся пер­вым, так что сис­темные стра­ницы порой ока­зыва­ются хра­нили­щем клю­чей шиф­рования или каких‑то дру­гих дан­ных. В общем, читай все — лиш­ним точ­но не будет.

РЕКОМЕНДУЕМ:
Способы защиты микроконтроллера

Вот теперь у тебя есть образ, который мож­но гру­зить в IDA и ковырять­ся даль­ше, но это уже тема для отдель­ной статьи.

Статья написа­на по мотивам док­лада Демида Узень­кова — спе­циалис­та ком­пании ИНФО­РИОН. Выс­тупле­ние сос­тоялось на кон­ферен­ции RuCTFE 2020. За помощь в под­готов­ке пуб­ликации редак­ция бла­года­рит коман­ду «Ха­кер­дом».

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (1 оценок, среднее: 5,00 из 5)
Загрузка...
Понравилась статья? Поделиться с друзьями:
Добавить комментарий