Как взломать TPM BitLocker

bitlocker

Мо­дули TPM час­то исполь­зуют­ся для шиф­рования дис­ков с помощью BitLocker даже без ведома поль­зовате­ля. Сис­тема заг­ружа­ется и зашиф­рован­ный том раз­бло­киру­ется нас­толь­ко проз­рачно, что поль­зователь может и не подоз­ревать, что накопи­тель в его устрой­стве зашиф­рован. Рас­шифро­вать такой диск мож­но лишь с исполь­зовани­ем клю­ча вос­ста­нов­ления или… или взло­мав чип TPM, в котором хра­нит­ся ключ шиф­рования.

Еще по теме: Возможен ли взлом Bitlocker?

Статья осно­вана на иссле­дова­нии Андрея Малыше­ва, руково­дите­ля евро­пей­ско­го фили­ала «Элкомсофт».

Что такое TPM и почему он мешает расшифровать диск

Trusted Platform Module (TPM) — тех­нология безопас­ности, пред­став­ленная в виде допол­нитель­ного чипа, рас­паян­ного или уста­нов­ленно­го на материн­ской пла­те компь­юте­ра. Нес­мотря на то что офи­циаль­но устрой­ства с TPM в Рос­сию не пос­тавля­ются, так как содер­жат несер­тифици­рован­ные средс­тва шиф­рования, тех­нология при­сутс­тву­ет в боль­шинс­тве ноут­буков. Чип TPM либо рас­паян на материн­ской пла­те (но не акти­виро­ван в BIOS), либо, что слу­чает­ся гораз­до чаще, при­сутс­тву­ет в «вир­туаль­ном» виде бла­года­ря исполь­зованию плат­формы Intel PTT (Intel Platform Trust Technology).

Как взломать TPM BitLocker

Для поль­зовате­ля и опе­раци­онной сис­темы прак­тичес­кой раз­ницы меж­ду эти­ми под­ходами нет, одна­ко с точ­ки зре­ния уяз­вимос­тей и их экс­плу­ата­ции раз­ница сущес­тву­ет.

Ес­ли рас­смат­ривать модуль TPM в качес­тве аппа­рат­ного «довес­ка», то он сос­тоит из крип­тогра­фичес­кого про­цес­сора и встро­енной памяти неболь­шого объ­ема. При этом крип­тогра­фичес­кий соп­роцес­сор не исполь­зует­ся для шиф­рования дан­ных — как, нап­ример, это сде­лала Apple с чипом T2.

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

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

По­чему одни дис­ки, зашиф­рован­ные BitLocker, мож­но взло­мать методом перебо­ра, в то вре­мя как дру­гие, точ­но такие же, нель­зя? Меша­ет то, что пароль в таких дис­ках не исполь­зует­ся вов­се, — переби­рать‑то, собс­твен­но, нечего. Ключ шиф­рования хра­нит­ся в аппа­рат­ном модуле TPM, и имен­но этот модуль будет решать, выдать ключ по зап­росу, отка­зать в дос­тупе или вов­се заб­локиро­вать чип, зас­тавив рас­шифро­вывать кон­тей­нер дру­гим спо­собом. (В скоб­ках замечу, что «дру­гой спо­соб» — это резер­вный ключ, так называ­емый ключ вос­ста­нов­ления дос­тупа, он всег­да сох­раня­ется при соз­дании тома или на дис­ке, или в обла­ке Microsoft, или в Active Directory. Зашиф­рован­ный этим клю­чом ключ шиф­рования дис­ка так­же сох­раня­ется в заголов­ке тома BitLocker.)

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

Как взломать TPM BitLocker

Ес­ли хочешь — можешь почитать, где взять ключ вос­ста­нов­ления дос­тупа. Я же про­дол­жу рас­сказ о модулях TPM.

Архитектура защиты

С точ­ки зре­ния поль­зовате­ля, защита, которую обес­печива­ет модуль TPM, не толь­ко совер­шенно проз­рачна, но и абсо­лют­но незамет­на. Я мно­го раз слы­шал о слу­чаях, ког­да вла­делец устрой­ства утвер­ждал, что никако­го шиф­рования нет, — при этом сис­темный раз­дел был зашиф­рован BitLocker. И если порой в утвер­жде­ниях поль­зовате­лей мож­но было усом­нить­ся, то в осталь­ных слу­чаях их сло­ва подоз­рений не вызыва­ли. Как пра­вило, речь идет о фун­кции шиф­рования устрой­ств BitLocker Device Encryption, опи­сан­ной в статье «Об­щие све­дения о фун­кции шиф­ровании устрой­ств BitLocker в Windows 10». Если не вда­вать­ся в детали, Windows (незави­симо от редак­ции — фун­кция под­держи­вает­ся даже в Windows 10 Home) авто­мати­чес­ки зашиф­рует сис­темный раз­дел в фоновом режиме при выпол­нении нес­коль­ких усло­вий:

  1. В устрой­стве при­сутс­тву­ет и акти­виро­ван чип TPM или тех­нология Intel PTT.
  2. Ус­трой­ство под­держи­вает Modern Standby.
  3. Поль­зователь с пра­вами адми­нис­тра­тора вошел в сис­тему через учет­ную запись Microsoft Account или исполь­зовал для вхо­да учет­ную запись домена.
  4. Сис­тема авто­мати­чес­ки соз­даст ключ вос­ста­нов­ления BitLocker и заг­рузит его в Microsoft Account поль­зовате­ля или Active Directory.

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

Как взломать TPM BitLocker

Итак, ты вошел в сис­тему с пра­вами адми­нис­тра­тора, исполь­зовав учет­ную запись Microsoft Account. Сис­темный диск был зашиф­рован, но ты это­го даже не заметил. Через какое‑то вре­мя ты перезаг­рузил сис­тему. Изме­нилось ли что‑нибудь в про­цес­се заг­рузки? С точ­ки зре­ния поль­зовате­ля — ров­ным сче­том ничего: компь­ютер заг­рузил­ся, Windows вывела зап­рос пароля. К это­му момен­ту зашиф­рован­ный BitLocker диск уже раз­бло­киро­ван, но ты даже не при­касал­ся к компь­юте­ру. С какой сто­роны это называ­ется защитой?

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

  1. Вход в опе­раци­онную сис­тему в обход стан­дар­тных механиз­мов аутен­тифика­ции.
  2. Из­вле­чение дис­ка и его перенос на дру­гой компь­ютер с целью пос­леду­ющей рас­шифров­ки.
  3. Сня­тие обра­за дис­ка и его рас­шифров­ка.
  4. Заг­рузка компь­юте­ра с внеш­него накопи­теля с целью рас­шифров­ки сис­темно­го раз­дела.
  5. Из­менение кон­фигура­ции заг­рузки с целью рас­шифров­ки сис­темно­го раз­дела.

Та­ким обра­зом, если тебе известен пароль вхо­да в сис­тему — ты не испы­таешь никаких неудобств от того, что диск зашиф­рован. А вот если пароля у тебя нет, то тебе не удас­тся даже запус­тить перебор: база дан­ных SAM хра­нит­ся на зашиф­рован­ном дис­ке, и дос­тупа к ней у тебя не будет до тех пор, пока ты не спра­вишь­ся с шиф­ровани­ем. Для парано­иков дос­тупны вари­анты уси­лен­ной защиты: нап­ример, на сис­темный раз­дел мож­но допол­нитель­но уста­новить PIN-код, сох­ранить ключ на USB-накопи­теле или исполь­зовать сра­зу оба спо­соба. В раз­деле, пос­вящен­ном про­тиво­дей­ствию ата­кам, как раз и упо­мина­ется этот спо­соб.

Как устроена защита

В BitLocker исполь­зует­ся сим­метрич­ное шиф­рование дис­ка. По умол­чанию — алго­ритм AES с клю­чом дли­ной 128 бит. В све­жих сбор­ках Windows 10 при­меня­ется режим XTS; более ста­рые вер­сии ОС и пер­вый релиз Windows 10 исполь­зуют режим CBC.

Как имен­но выпол­няет­ся шиф­рование: средс­тва­ми цен­траль­ного про­цес­сора (с исполь­зовани­ем команд AES-NI) или кон­трол­лера дис­ка, — воп­рос слож­ный. До недав­него вре­мени Windows отда­вала пред­почте­ние механиз­мам шиф­рования, встро­енным в кон­трол­лер дис­ка или SSD, одна­ко обна­ружен­ная иссле­дова­теля­ми в целом ряде моделей уяз­вимость в реали­зации подоб­ных механиз­мов зас­тавила Microsoft отка­зать­ся от этой прак­тики и реали­зовать шиф­рование силами цен­траль­ного про­цес­сора. Впро­чем, это каса­ется толь­ко вновь соз­дава­емых томов; уже зашиф­рован­ные дис­ки будут про­дол­жать исполь­зовать тот механизм, который был исполь­зован при их соз­дании.

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

  1. Рас­шифро­вать паролем, если раз­дел зашиф­рован имен­но таким обра­зом.
  2. Рас­шифро­вать клю­чом вос­ста­нов­ления (Recovery Key).
  3. Из­влечь непос­редс­твен­но из модуля TPM.

О пароль­ных ата­ках я писал уже дос­таточ­но; извле­чение клю­ча вос­ста­нов­ления — инте­рес­ная тема, зас­лужива­ющая отдель­ной статьи. Сей­час нас инте­ресу­ет исклю­читель­но тре­тий вари­ант — извле­чение клю­ча из модуля TPM.

Загрузка

Мо­дуль TPM или тех­нология Intel PTT исполь­зует­ся в том чис­ле для аппа­рат­ного кон­тро­ля «доверен­ной заг­рузки» (Trusted boot). Цель «доверен­ной заг­рузки» — убе­дить­ся, что заг­ружена имен­но та опе­раци­онная сис­тема и имен­но в той кон­фигура­ции, которая исполь­зовалась при соз­дании клю­чей. Для это­го исполь­зует­ся тех­нология, напоми­нающая блок­чейн. Стро­ится сво­еоб­разная «цепоч­ка доверия» — пос­ледова­тель­ность бло­ков с информа­цией об эта­пах заг­рузки, выс­тро­енная в хро­ноло­гичес­ком поряд­ке. Так же как и в блок­чей­не, информа­цию в цепоч­ке нель­зя изме­нить — толь­ко добавить. «Цепоч­ка доверия» сох­раня­ется в регис­трах PCR (Platform Configuration Register).

Для начала рас­смот­рим работу механиз­ма «доверен­ной заг­рузки» и роль модуля TPM без шиф­рования. Во вре­мя заг­рузки про­исхо­дят сле­дующие опе­рации.

  1. При вклю­чении компь­юте­ра управле­ние получа­ет пер­вый доверен­ный модуль SRTM (Static root of trust for measures), который находит­ся в области ROM, защищен­ной от записи. Важ­ный момент: SRTM по опре­деле­нию ста­тичен и защищен от изме­нений. Уяз­вимость в этом модуле может пос­тавить под угро­зу всю сис­тему безопас­ности, как это про­изош­ло в слу­чае с най­ден­ной в заг­рузчи­ках Apple уяз­вимостью checkm8. Под­робно об SRTM и дру­гой тех­нологии — DRTM мож­но узнать из отве­та на Stack Exchange «How does the TPM perform integrity measurements on a system?».
  2. SRTM дела­ет пер­вую запись в цепоч­ке: в регистр PCR0 записы­вает­ся кон­троль­ная сум­ма прог­рам­мно­го кода BIOS. Если в сис­теме про­писал­ся рут­кит, цепоч­ка доверен­ной заг­рузки будет прер­вана (см. «Как сис­тема Windows Defender System Guard защища­ет Windows 10 от рут­китов»).
  3. Те­перь управле­ние получа­ет доверен­ный UEFI BIOS, который фор­миру­ет даль­нейшие ком­понен­ты цепоч­ки. При этом ана­лизи­рует­ся мно­жес­тво парамет­ров: таб­лицы MBR, заг­рузчи­ка bootloader и дру­гих. В цепоч­ку добав­ляет­ся оче­ред­ная кон­троль­ная сум­ма, в соз­дании которой исполь­зует­ся информа­ция из пре­дыду­щего регис­тра PCR. Наруше­ние любого из ком­понен­тов при­водит к изме­нению содер­жимого регис­тров PCR и пре­рыва­нию доверен­ной заг­рузки.
  4. Уп­равле­ние переда­ется заг­рузчи­ку (bootloader), который счи­тыва­ет и запус­кает код из MBR дис­ка. При этом в цепоч­ку заг­рузки добав­ляет­ся еще нес­коль­ко записей.
  5. За­пус­кает­ся ядро опе­раци­онной сис­темы, которое добав­ляет оче­ред­ные эле­мен­ты в цепоч­ку.
  6. Заг­ружа­ется опе­раци­онная сис­тема. В резуль­тате на выходе — набор дан­ных в регис­трах PCR, однознач­но опи­сыва­ющий весь про­цесс заг­рузки. От модифи­кации содер­жимое регис­тров PCR защища­ется на аппа­рат­ном уров­не модулем TPM.

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

Системный раздел зашифрован BitLocker

В пре­дыду­щем сце­нарии сис­темный раз­дел не был зашиф­рован. Теперь пред­ста­вим, что исполь­зует­ся сис­тема с шиф­ровани­ем.

Ког­да поль­зователь вклю­чает шиф­рование заг­рузоч­ного раз­дела (или же Windows самос­тоятель­но шиф­рует заг­рузоч­ный диск при помощи BitLocker Device Encryption в авто­мати­чес­ком режиме), слу­чай­ным обра­зом генери­рует­ся мас­тер‑ключ. Кро­ме того, соз­дает­ся и ключ вос­ста­нов­ления (так­же слу­чай­ный набор дан­ных). Мас­тер‑ключ сох­раня­ется в модуле TPM, а его копия шиф­рует­ся клю­чом вос­ста­нов­ления и в зашиф­рован­ном виде записы­вает­ся в заголо­вок дис­ка. Ключ вос­ста­нов­ления при этом обя­затель­но сох­раня­ется (если в полити­ках безопас­ности кон­крет­ной сис­темы не ука­зано иное). Если речь идет об авто­мати­чес­ком шиф­ровании BitLocker Device Encryption, то ключ попада­ет в Microsoft Account того поль­зовате­ля с при­виле­гиями адми­нис­тра­тора, который пер­вым зашел в сис­тему с учет­ной записью Microsoft (а не локаль­ной учет­ной записью Windows), либо в Active Directory. При шиф­ровании, которое ини­циирует­ся самим поль­зовате­лем, ключ вос­ста­нов­ления мож­но сох­ранить на диск или рас­печатать.

Итак, диск зашиф­рован, компь­ютер перезаг­ружен. При этом:

  1. Мо­дуль TPM обну­ляет содер­жимое всех регис­тров PCR.
  2. Вы­пол­няют­ся пун­кты 1–5 доверен­ной заг­рузки сис­темы вплоть до заг­рузки ядра. Заг­рузка ядра ОС воз­можна потому, что ядро сис­темы хра­нит­ся на отдель­ном неболь­шом раз­деле, который не будет зашиф­рован BitLocker, а вот фай­лы под­качки, гибер­нации и база дан­ных SAM — уже на основном зашиф­рован­ном раз­деле.
  3. Яд­ро сис­темы пыта­ется про­дол­жить заг­рузку. Для это­го необ­ходимо смон­тировать зашиф­рован­ный раз­дел, что, в свою оче­редь, тре­бует клю­ча для его рас­шифров­ки. Ключ хра­нит­ся в TPM; ядро сис­темы зап­рашива­ет его из модуля.
  4. По­лучив зап­рос, модуль TPM ана­лизи­рует содер­жимое регис­тров PCR, что­бы про­верить цепоч­ку заг­рузки. Если все в поряд­ке, то модуль TPM выдаст сис­теме ключ шиф­рования, ядро смон­тиру­ет сис­темный раз­дел и заг­рузка про­дол­жится. Обра­ти вни­мание: к момен­ту, ког­да поль­зователь видит зап­рос на ввод пароля от учет­ной записи Windows, зашиф­рован­ный BitLocker раз­дел уже смон­тирован.
  5. Ес­ли чип обна­ружи­вает, что цепоч­ка доверия пов­режде­на, ключ не выда­ется. Поль­зователь при этом видит сле­дующее сооб­щение.
Как взломать TPM BitLocker

Мо­дуль TPM может отка­зать­ся выдавать ключ при изме­нении любого ком­понен­та сис­темы, учас­тву­юще­го в соз­дании цепоч­ки доверен­ной заг­рузки. Нап­ример, обновле­ние UEFI BIOS, изме­нение в MBR или заг­рузчи­ке сис­темы при­ведет к такому резуль­тату — о чем регуляр­но появ­ляют­ся сооб­щения на форумах. Осо­бен­но неп­рият­ным наруше­ние доверен­ной цепоч­ки ока­зыва­ется для тех поль­зовате­лей, которые и не подоз­ревали, что их заг­рузоч­ный диск зашиф­рован.

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

Ана­логич­ным обра­зом дол­жно выпол­нять­ся и обновле­ние сто­рон­них ком­понен­тов — нап­ример, вер­сии UEFI BIOS и про­шивок для некото­рых ком­понен­тов аппа­рат­ного обес­печения (таких как встро­енные дат­чики отпе­чат­ков паль­цев). При обновле­нии этих ком­понен­тов поль­зователь, как пра­вило, получа­ет сооб­щение, что необ­ходимо при­оста­новить работу BitLocker. Это мож­но про­делать как в инте­рак­тивном режиме из панели управле­ния (System and Security → BitLocker Drive Encryption → Suspend protection), так и из коман­дной стро­ки (manage-bde -pause) или PowerShell (Suspend-BitLocker). Как пра­вило, соот­ветс­тву­ющая ути­лита уста­нов­ки дела­ет это в авто­мати­чес­ком режиме.

Как взломать TPM BitLocker

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

Нес­мотря на то что сис­темный раз­дел зашиф­рован, пер­вый шаг — это снять образ дис­ка. Для это­го, ско­рее все­го, при­дет­ся заг­рузить­ся с флеш­ки — вари­антов здесь мно­жес­тво от раз­личных вер­сий Linux до ути­лит «все в одном» наподо­бие Elcomsoft System Recovery.

Да­лее про­ана­лизи­руй заголо­вок тома BitLocker и попытай­ся узнать, какие имен­но про­тек­торы могут быть исполь­зованы, что­бы смон­тировать диск. Про­ще все­го это сде­лать в Elcomsoft System Recovery, которая выведет спи­сок дос­тупных для кон­крет­ного тома про­тек­торов.

Как взломать TPM BitLocker

Ча­ще все­го в чис­ло про­тек­торов вхо­дят TPM или пароль. Гораз­до реже встре­чают­ся ком­бинации TPM + PIN или TPM + USB. Прак­тичес­ки всег­да в спис­ке про­тек­торов при­сутс­тву­ет ключ вос­ста­нов­ления (Recovery Key). Вот пол­ный спи­сок воз­можных ком­бинаций про­тек­торов:

  • Recovery Key, ключ вос­ста­нов­ления. При­сутс­тву­ет прак­тичес­ки всег­да. Поз­воля­ет раз­бло­киро­вать том вво­дом длин­ного клю­ча вос­ста­нов­ления (генери­рует­ся в момент соз­дания тома);
  • TPM. «Вы находи­тесь здесь». Ключ, который хра­нит­ся в модуле TPM;
  • Па­роль. Чаще все­го исполь­зует­ся для шиф­рования внеш­них накопи­телей и несис­темных раз­делов. На заг­рузоч­ных дис­ках встре­чает­ся край­не ред­ко;
  • USB. Сво­еоб­разный «кол­хоз», поз­воля­ющий вклю­чить защиту BitLocker на заг­рузоч­ном дис­ке, если в компь­юте­ре нет ни модуля TPM, ни под­дер­жки Intel PTT. Для акти­вации нуж­но редак­тировать полити­ки Windows, поэто­му отно­сит­ся к раз­ряду экзо­тичес­ких;
  • TPM + PIN, TPM + USB, TPM + PIN + USB. Дан­ные ком­бинации пот­ребу­ют наличия всех перечис­ленных про­тек­торов. Встре­чают­ся край­не ред­ко. Ком­бинация TPM + PIN рекомен­дует­ся в докумен­тации от Microsoft в качес­тве защиты от некото­рых типов атак.

Пытаемся получить ключ шифрования из оперативной памяти

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

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

Microsoft активно прод­вига­ет авто­риза­цию без пароля — прос­тым PIN-кодом, сос­тоящим, как пра­вило, из четырех цифр. Все­го четыре циф­ры? Воз­можно, у тебя воз­никнет соб­лазн попытать­ся подоб­рать PIN-код. В статье «По­чему ПИН‑код луч­ше пароля» под­робно объ­ясня­ется, почему не сле­дует это­го делать.

Ис­клю­читель­ная ситу­ация — исполь­зование допол­нитель­ного про­тек­тора (нап­ример, ком­бинации TPM + PIN). В этом слу­чае модуль TPM не выдаст ключ до тех пор, пока не будет вве­ден пра­виль­ный PIN. Пытать­ся подоб­рать его — пло­хая идея (см. врез­ку).

Ра­зуме­ется, если пароль (или PIN) от учет­ной записи известен, то рас­шифров­ка тома три­виаль­на: дос­таточ­но соз­дать образ опе­ратив­ной памяти и запус­тить поиск клю­чей шиф­рования (такая воз­можность есть, нап­ример, в пор­татив­ной вер­сии Elcomsoft Forensic Disk Decryptor). Нас же инте­ресу­ет вари­ант, ког­да пароль от учет­ной записи неиз­вестен.

Атака методом холодной загрузки

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

Пос­ледова­тель­ность дей­ствий здесь такая:

  1. По­луча­ем дос­туп к модулям опе­ратив­ной памяти. Если они рас­паяны, метод не сра­бота­ет.
  2. Вклю­чаем иссле­дуемый компь­ютер, дожида­емся окна зап­роса пароля.
  3. За­мора­жива­ем модули опе­ратив­ной памяти.
  4. От­клю­чаем питание (ни в коем слу­чае не поль­зуем­ся фун­кци­ей shutdown!).
  5. Быс­тро перено­сим модули в тес­товый стенд.
  6. Сра­зу же заг­ружа­емся с флеш­ки, извле­каем дамп памяти.
  7. Пы­таем­ся обна­ружить клю­чи шиф­рования.

Ме­тод слож­ный и рис­кован­ный; исполь­зуют его ред­ко даже в обо­рудо­ван­ных лабора­тори­ях.

  • Дос­тоинс­тва метода: высокая эффектив­ность, слож­но защитить­ся.
  • Не­дос­татки: чрез­вычай­но слож­ный и тру­доем­кий, высок риск пов­редить обо­рудо­вание.

Метод доступа через DMA

Ес­ли компь­ютер обо­рудо­ван интерфей­сом FireWire, Thunderbolt 3 или PC Card и при этом работа­ет под управле­нием ста­рой вер­сии Windows, то мож­но попытать­ся получить дос­туп к содер­жимому опе­ратив­ной памяти через них. Ата­ка осно­вана на том фак­те, что перечис­ленные выше интерфей­сы име­ют пря­мой дос­туп к шине PCI, которая, в свою оче­редь, име­ет пря­мой дос­туп к памяти компь­юте­ра (Direct Memory Access, DMA).

Собс­твен­но образ памяти соз­дает­ся ути­литой Inception для Linux.

К сожале­нию, метод силь­но уста­рел: он работал для компь­юте­ров под управле­нием Windows 7 и 8. Уже в Windows 8.1 пря­мой дос­туп к памяти был зак­рыт, если сис­тема находит­ся в режиме сна или экран устрой­ства заб­локиро­ван (показы­вает­ся окно зап­роса пароля на вход в сис­тему). Если же тебе повез­ло и дамп памяти соз­дать получи­лось, иссле­довать его мож­но в Elcomsoft Forensic Disk Decryptor в пол­ностью авто­мати­чес­ком режиме.

  • Дос­тоинс­тва метода: прос­то исполь­зовать.
  • Не­дос­татки: экс­пло­ит дав­но зак­рыт, работа­ет толь­ко для ста­рых сис­тем, тре­бует наличия пор­тов FireWire, Thunderbolt 3 или PC Card.

Сниффер для TPM

Еще одна уяз­вимость TPM кро­ется в самой архи­тек­туре модулей. Пожалуй, имен­но этот метод пред­став­ляет наиболь­ший инте­рес по совокуп­ности фак­торов. С одной сто­роны, он не тре­бует охлаждать модули опе­ратив­ной памяти и работа­ет на всех сов­ремен­ных сис­темах, в которых исполь­зует­ся TPM; с дру­гой — для его исполь­зования нуж­но спе­циаль­ное обо­рудо­вание и опыт работы паяль­ником, а для сис­тем, в которых вмес­то модуля TPM исполь­зует­ся эму­лятор Intel PTT, он не сра­бота­ет вов­се.

Об­щение аппа­рат­ного модуля TPM с осталь­ными ком­понен­тами компь­юте­ра орга­низо­вано через шину дан­ных LPC (Low Pin Count) или интерфейс SPI (Serial Peripheral Interface).

Как взломать TPM BitLocker

Оба вари­анта исполь­зуют­ся для переда­чи дан­ных от устрой­ств, работа­ющих с низ­кой ско­ростью. Шина LPI работа­ет на час­тоте 33 МГц, а дан­ные переда­ются в откры­том виде без какого‑либо шиф­рования. Соот­ветс­твен­но, сущес­тву­ет воз­можность перех­ватить переда­ваемый мас­тер‑ключ ата­кой man in the middle. Для это­го дос­таточ­но под­клю­чить­ся к шине LPC (или интерфей­су SPI) и исполь­зовать логичес­кий ана­лиза­тор.

Де­нис Андза­кович (Denis Andzakovic) про­демонс­три­ровал, как работа­ет этот спо­соб, в статье Extracting BitLocker Keys from a TPM.

Спо­собы нес­коль­ко отли­чают­ся для TPM 1.2 и TPM 2.0. В пер­вом слу­чае Денис исполь­зовал логичес­кий ана­лиза­тор DSLogic Plus с интерфей­сом USB. Нес­мотря на то что ата­ка ока­залась успешной, авто­ру приш­лось пре­одо­левать слиш­ком мно­го пре­пятс­твий, решая проб­лемы с син­хро­низа­цией и декоде­ром.

Се­год­ня встре­тить TPM вер­сии 1.2 уже тяжело; в боль­шинс­тве устрой­ств, в которых дос­тупен этот модуль, исполь­зует­ся вер­сия 2.0. Для нее решение ока­залось еще про­ще: Денис исполь­зовал FPGA-модуль с интерфей­сом USB Lattice ICEStick, в который была залита спе­циали­зиро­ван­ная про­шив­ка для сниф­финга TPM-модулей.

Под­клю­чение дела­ется к нож­кам GND, LCLK, LFRAME#, LRESET# и LAD[0:3]. Для устрой­ства Surface 3, которое ана­лизи­ровал Денис (кста­ти, опе­ратив­ная память в нем рас­паяна имен­но с целью про­тиво­дей­ствия ата­кам методом холод­ной заг­рузки) приш­лось вос­поль­зовать­ся паяль­ником, но для дес­ктоп­ных вер­сий чипа дос­таточ­но будет прос­то под­клю­чить­ся к разъ­ему.

Как взломать TPM BitLocker

В ито­ге сис­тема выг­лядела таким обра­зом.

Как взломать TPM BitLocker

Да­лее Денис выпол­няет коман­ду

$ sudo python3 parse/read_serial.py /dev/ttyUSB1  | tee log1

и заг­ружа­ет устрой­ство. Вот так это выг­лядит на экра­не.

Как взломать TPM BitLocker

Дан­ные из FPGA струк­туриро­ваны сле­дующим обра­зом:

b'[32 bit address][8 bit data][read (00) or write (02)]'

Для извле­чения мас­тер‑клю­ча тома исполь­зовалась сле­дующая коман­да:

$ cut -f 2 -d' log1 | grep '24..00$' > | perl -pe 's/.{8}(..)..\n/$1/' | grep -Po "2c0000000100000003200000(..){32}"
2c00000001000000032000009a126146b5b285c93f7c4bcd372f91d0181fe7eddc44e588459ebdb244d97baa

Мас­тер‑ключ успешно извле­чен:

9a126146b5b285c93f7c4bcd372f91d0181fe7eddc44e588459ebdb244d97baa

Да­лее Денис мон­тиру­ет том при помощи ути­литы dislocker, которая пред­назна­чена для работы с зашиф­рован­ными BitLocker томами в Linux.

Ин­терес­но то, что модули TPM 2.0 под­держи­вают шиф­рован­ный обмен тра­фиком, — в теории это спо­соб­но пре­дот­вра­тить подоб­ные ата­ки. Тем не менее Windows не исполь­зует этот режим, и уяз­вимость, таким обра­зом, до сих пор не зак­рыта.

  • Дос­тоинс­тва метода: сра­баты­вает всег­да, если исполь­зует­ся аппа­рат­ный модуль TPM и нет пред­варитель­ного про­тек­тора (нап­ример, TPM + PIN).
  • Не­дос­татки: доволь­но высокая тру­доем­кость, тре­бует­ся допол­нитель­ное обо­рудо­вание, лег­ко пре­дот­вра­тить, уста­новив допол­нитель­ный PIN на заг­рузку.

Страшный сон TPM

Сле­дующая уяз­вимость была обна­руже­на отно­ситель­но недав­но. В 2018 году корей­ские иссле­дова­тели Сын Хун Хан (Seunghun Han), Вук Шин (Wook Shin), Чун Хёк Парк (Jun-Hyeok Park) и Хён Чун Ким (HyoungChun Kim) из National Security Research Institute пред­ста­вили на кон­ферен­ции Usenix науч­ную работу под наз­вани­ем «Страш­ный сон».

Ис­сле­дова­тели уста­нови­ли, что при ухо­де компь­юте­ра в спя­щий режим модуль TPM сох­раня­ет регис­тры в NVRAM, а при выходе их вос­ста­нав­лива­ет. Ока­залось, что в некото­рых моделях модулей TPM есть воз­можность под­менить содер­жимое PCR регис­тров и получить дос­туп к внут­ренне­му жур­налу TPM, что поз­воля­ет узнать всю «цепоч­ку доверия» в момент штат­ной заг­рузки сис­темы. Иссле­дова­тели уве­доми­ли об уяз­вимос­ти про­изво­дите­лей материн­ских плат, вклю­чая Intel, Lenovo, Gigabyte, Dell и HP, которые выпус­тили обновле­ния BIOS, зак­рывшие уяз­вимость. Тем не менее мно­гие компь­юте­ры до сих пор работа­ют со ста­рыми вер­сиями BIOS, что поз­воля­ет вос­поль­зовать­ся уяз­вимостью.

Ис­сле­дова­тели выпус­тили две ути­литы, пер­вая из которых поз­воля­ет про­верить, есть ли в модуле TPM уяз­вимость, а вто­рая — исполь­зовать уяз­вимость, если она обна­ружит­ся.

Про­вер­ка наличия уяз­вимос­ти: Napper for TPM.
Экс­плу­ата­ция уяз­вимос­ти: Bitleaker.

Для про­вер­ки наличия уяз­вимос­ти нуж­но ска­чать образ Live CD со стра­ницы https://github.com/kkamagui/napper-for-tpm/releases, записать его на USB-накопи­тель, перезаг­рузить компь­ютер, отклю­чив пред­варитель­но Secure Boot в BIOS, и выб­рать Napper из меню.

Как взломать TPM BitLocker

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

Ес­ли уяз­вимость обна­руже­на, выводит­ся соот­ветс­тву­ющее сооб­щение.

Как взломать TPM BitLocker

К сожале­нию, на моем компь­юте­ре довес­ти экспе­римент до кон­ца не уда­лось: вмес­то модуля TPM у меня исполь­зует­ся эму­лятор Intel PTT, который неуяз­вим для это­го типа ата­ки. Если же уяз­вимость обна­руже­на, то сле­дующий шаг — запуск ути­литы Bitleaker.

Как взломать TPM BitLocker

Защита от взлома BitLocker

В статье «Ме­ры защиты для BitLocker» под­робно опи­саны спо­собы, которы­ми Microsoft про­тиво­дей­ству­ет опи­сан­ным ата­кам. (Пос­коль­ку Microsoft исполь­зует авто­мати­чес­кий перевод на рус­ский весь­ма низ­кого качес­тва, рекомен­дую озна­комить­ся со стать­ей на язы­ке ори­гина­ла.)

От пря­мого дос­тупа к памяти через FireWire/Thunderbolt спа­сает механизм защиты пор­тов DMA, появив­ший­ся в Windows 10 вер­сии 1803 (апрель 2018-го). Начиная с этой вер­сии Windows в новых устрой­ствах на базе про­цес­сора Intel по умол­чанию акти­виро­вана защита ядра от атак DMA через пор­ты Thunderbolt 3. Впро­чем, отме­чу, что защита дос­тупна лишь для отно­ситель­но све­жих компь­юте­ров, так как ее акти­вация пот­ребова­ла изме­нить встро­енный мик­рокод и/или BIOS. К при­меру, на моем не самом ста­ром компь­юте­ре, соб­ранном на базе Intel Core i7 9-го поколе­ния мень­ше года назад, вклю­чить эту защиту не уда­лось.

Про­верить, защищен ли твой компь­ютер, мож­но встро­енной в Windows ути­литой MSINFO32.EXE.

От атак методом получе­ния мас­тер‑клю­ча из памяти компь­юте­ра Microsoft рекомен­дует защищать­ся уста­нов­кой допол­нитель­ного пред­варитель­ного про­тек­тора — PIN-кода, который чип TPM будет тре­бовать для про­дол­жения заг­рузки. Этим же спо­собом ком­пания рекомен­дует защищать­ся и от сниф­финга модулей TPM: от того, что тебе удас­тся под­смот­реть дан­ные, не изме­нит­ся ров­ным сче­том ничего, если тебе неиз­вестен PIN-код. Попыт­ка же подоб­рать PIN-код быс­тро вве­дет модуль TPM в режим паники, в котором он либо отка­жет­ся сот­рудни­чать вов­се, либо сде­лает вид, что все в поряд­ке, но ключ шиф­рования не выдаст, даже если вве­ден­ный PIN-код ока­жет­ся пра­виль­ным. А вот от ата­ки методом «холод­ной заг­рузки», если в руки зло­умыш­ленни­ка попал вклю­чен­ный компь­ютер с уже раз­бло­киро­ван­ным дис­ком с BitLocker, внят­ной защиты не пред­ложено: раз­работ­чики мелан­холич­но отме­чают, что «спо­соб не защища­ет от физичес­ких атак, ког­да зло­умыш­ленник получа­ет физичес­кий дос­туп к ком­понен­там компь­юте­ра, вскрыв кор­пус устрой­ства».

От ата­ки под наз­вани­ем «страш­ный сон» ее раз­работ­чики совету­ют защищать­ся одним из трех спо­собов: уста­новить PIN-код на заг­рузку (сов­пада­ет с рекомен­даци­ей Microsoft), обно­вить BIOS или отклю­чить режим сна в нас­трой­ках BIOS.

Заключение

Как модуль TPM, так и тех­нология Intel PTT пре­дос­тавля­ют высокий уро­вень защиты, спо­соб­ный сущес­твен­но осложнить жизнь зло­умыш­ленни­ку и зат­руднить работу полицей­ско­го экспер­та. Даже в кон­фигура­ции по умол­чанию BitLocker в сочета­нии с TPM/PTT обес­печива­ет высокий уро­вень безопас­ности, а допол­нитель­ные нас­трой­ки, опи­сан­ные в раз­деле «Про­тиво­дей­ствие ата­кам», поз­волят надеж­но заб­локиро­вать дос­туп к зашиф­рован­ному раз­делу даже от самых ква­лифи­циро­ван­ных спе­циалис­тов.

В то же вре­мя, как это ни парадок­саль­но, аппа­рат­ный модуль может ока­зать­ся менее безопас­ным, чем прог­рам­мная эму­ляция: в модулях TPM сущес­тву­ют уяз­вимос­ти как минимум двух типов, а реали­зация на базе Intel PTT их лишена. Если на тво­ей материн­ской пла­те есть разъ­ем для уста­нов­ки модуля TPM — подумай, сто­ит ли это делать и не луч­ше ли вос­поль­зовать­ся фун­кци­ональ­ностью Intel PTT, если он дос­тупен в BIOS.

Еще по теме: Как не стоит прятать конфиденциальную информацию

ВКонтакте
OK
Telegram
WhatsApp
Viber

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *