Просто о сложном: как я написал книгу по реверс-инжинирингу встраиваемых систем

в 7:42, , рубрики: cybersecurity, взлом железа, Железо, книги, написать книгу, писатель, писательство, реверс-инжиниринг, реверс-инжиниринг для новичков, учебники

Привет всем читателям ! Этой статьей мы открываем серию публикаций о книгах наших авторов. Да-да, в Positive Technologies не только делают ресечи, расследуют деятельность хакерских группировок и разрабатывают технологии киберзащиты. Наши коллеги еще и пишут книги! И делают это весьма познавательно и увлекательно. Впрочем, пусть об этом они расскажут сами. Встречайте Алексея Усанова и его рассказ о своей книге «Реверс-инжиниринг встраиваемых систем».

Просто о сложном: как я написал книгу по реверс-инжинирингу встраиваемых систем - 1

Мысль о том, что я могу написать книгу, пришла после прочтения «Хулиномики» Алексея Маркова. Абсолютно, кажется, не подходящая книга для специалиста по реверсу. А я читал и думал, что смогу так же просто рассказать о тех сложных вещах, которыми занимаюсь всю жизнь.

Большую часть своей карьеры я руководил какими-то коллективами: брал себе стажеров, кого-то курировал, больше 10 лет преподавал в Бауманке. Мне всегда хотелось делиться своими знаниями.

И в какой-то момент я понял, что у меня нет источника информации, который я могу дать человеку со словами: «На, прочитай, и на многие вопросы, которые тебя сейчас, в самом начале пути, мучают, ты получишь ответы — кратко, сжато и в доступном виде».

Конечно, я мог поделиться каким-то материалом, но он был сложным для новичка. Специалист поймет, а начинающий реверсер — увы! И потом, в мануалах часто нет ответа на вопрос: а зачем все это делается? Текст в формате how to не объясняет, почему нужно производить именно эти действия, или почему мы ожидаем тот или иной результат. Тебе просто говорят: делай раз, делай два, делай три. Конечно, специалист прекрасно понимает, почему действия именно такие, но новичок — нет.

И тогда я подумал, что было бы неплохо написать книгу, где будут ответы на эти вопросы. Я прожил с этой идеей несколько лет. И вот года полтора назад наконец собрался, решился и… написал. Книгу по реверс-инжинирингу с ответами на вопросы, которые не так просто найти.


Про что и для кого моя книга

«Железо» — корень доверия всей информационной системы. На высоком уровне система может быть хорошо защищена, а вот на устройстве может появиться точка входа, если рассматривать это как расширение поверхности атаки. Через его взлом, который не является самоцелью, взламывается уже та информационная система, которая на этом «железе» исполняется или которая находится в одной сети с уязвимым устройством.

Тема реверс-инжиниринга непростая. Да, кстати, наверное, правильнее называть это не «реверс-инжинирингом», а «исследованием» встраиваемых систем, потому что мы в Позитиве в команде Positive Labs занимаемся преимущественно исследованием безопасности встраиваемых систем. Это узкоспециализированная тема, даже книг по ней до недавнего времени не было. Точнее, несколько лет назад вышла пара книг, естественно англоязычных, недавно переведенных на русский: «Аппаратный хакинг: взлом реальных вещей» и «Практический хакинг интернета вещей». Но идея моей книги возникла еще до появления хоть какого-то систематизированного материала, и, на мой взгляд, у всех трудов разные акценты.

Я понимал, какой информации нет и о чем необходимо написать. Важно, что моя книга — не хардкорное чтение для экспертов, а упорядоченная информация для человека, который никогда не занимался исследованием «железок», и хотел бы понять, с какой стороны к этой сфере подступиться. Если он эту книгу прочтет, то у него появятся базовые знания.

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

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

Мы живем во времени, когда по умолчанию нужно заботиться о безопасности своих решений. Разработчикам надо понимать, как их решения будут ломать, и в моей книге даются наиболее стандартные практики взлома устройств и способы митигации. А исследователи, которые никогда не работали с «железом», поймут, из чего оно состоит, как выглядят печатные платы, микроконтроллеры, память и т. д. Возможно, кто-то захочет попробовать себя в исследовании устройств.

Рисунок 1. Пример «плотной» компоновки элементов System in a Package

Рисунок 1. Пример «плотной» компоновки элементов System in a Package

Я старался писать простым языком, специально для людей, которые не имеют опыта в исследовании устройств. Как и в любой сфере, релевантный опыт появляется только после нескольких лет работы, когда ты постоянно читаешь исследования, профильную литературу и документацию. На одну только верификацию я потратил недели. Штудировать все материалы с нуля новичку придется годами.

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

Рисунок 2. Кристалл микросхемы после процедуры декапсуляции

Рисунок 2. Кристалл микросхемы после процедуры декапсуляции

Представьте, что у вас есть доступ к рентгеновскому аппарату, и вы можете сделать рентген платы и из этого извлечь какую-то дополнительную информацию для исследования, потому что знаете, куда копать. Есть оборудование, которое недоступно исследователю: оно дорого стоит или его сложно найти. Возможно, вам нужно будет искать человека, имеющего доступ к такому оборудованию, но вы хотя бы будете знать, где и зачем его искать.

Рисунок 3. Рентген фрагмента платы устройства, на котором видны проводники на внутренних слоях печатной платы

Рисунок 3. Рентген фрагмента платы устройства, на котором видны проводники на внутренних слоях печатной платы

Как я писал книгу

Но вернемся к истории написания. Первую часть я написал одним махом за месяц. Я специально ушел в отпуск и натурально «удалился в деревню» — снял загородный дом и уехал подальше от суеты. Надо сказать, это был отдельный кайф: ты встаешь и никуда не нужно ехать, неспешно завтракаешь, гуляешь, а потом закрываешься в кабинете и пишешь до позднего вечера. Старался писать по 8–10 часов в день.

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

А ̶с̶у̶д̶ь̶и̶ рецензенты кто?

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

Специалистов по теме реверса на всем земном шаре немного, а у нас вообще несколько десятков.

Разумеется, я отнес книгу Диме Склярову. Читал Дима книгу долго, так что рецензии от него я не дождался. Кстати, он в самый последний момент нашел логическую ошибку. Книга уже лежала в типографии, но я успел ее поправить.

Всего было пять рецензентов: Юра Васин, Паша Иванников (@Ivannikovp), Леша Коврижных (@a1exdandy) и Кирилл Малышев (@TwoGarin), а еще Максим Горячий (@h0t_max). Кроме Максима, все они сейчас работают со мной в Позитиве.

Горячий был последним, от кого я получил фидбэк. После его комментариев страниц прибавилось, и у него-то в итоге я и выпросил рецензию, которая сейчас находится в самом начале книги, за что я ему очень благодарен. Как и Юре, Паше, Леше и Кириллу, конечно.

Диме Склярову отдельное спасибо за то, что нашел ошибку.

Пишите планы, господа и дамы

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

Если спросите, надоедает ли, хочется ли бросить, я отвечу, что лично у меня усталость появилась месяца через два. Я общался с другими авторами, картина у всех похожая. Первоначальное сильное желание писать пропадает, и «хочу» меняется на «надо». Тебе уже надо довести это дело до конца, ведь ты поднял людей, они потратили свое время на тебя.

Мне помогло то, что сначала я составил план: подробную, на четыре страницы, структуру будущего текста. Конечно, в процессе написания она менялась. Но в целом это выручало, потому что даже когда какие-то разделы мне тяжело давались, «скелет» всегда стоял перед глазами. Естественно, я писал книгу не по порядку, иногда пропуская разделы, к которым совсем в тот момент не лежала душа. Главное потом было проверить, что все логические связки восстановлены.

Уровни

Если вы уже видели книгу, то заметили, что главы в ней названы по уровням, как в компьютерной игре. Так прямо и идут в книге «Уровень 0», «Уровень 1» и т. д. Почему и зачем нужны уровни? Их смысл в том, что читатель, как в компьютерной игре, может перескакивать с левела на левел, а если какой-то он уже «прошел» (читай — знал про то, о чем там говорится) раньше, может его пропустить и сразу переходить на следующий. Скажу честно, не везде я эту геймификацию вытянул, надо бы еще глубже продумать логику в будущих редакциях. А так читатель прыгает с уровня 0 все выше и выше и постепенно идет от простого к сложному, углубляя свои знания об исследовании устройств. Информация в книге дается автономно, то есть можно читать с середины.

Рисунок 4. Плата исследуемого устройства из главы 0 «Первичный анализ», в конце которой мы восстанавливаем структурную схему, показанную на рисунке 5. Здесь также отображены найденные контакты интерфейса JTAG, с помощью которого мы считываем прошивку устройства в главе 1 «Добываем прошивку».

Рисунок 4. Плата исследуемого устройства из главы 0 «Первичный анализ», в конце которой мы восстанавливаем структурную схему, показанную на рисунке 5. Здесь также отображены найденные контакты интерфейса JTAG, с помощью которого мы считываем прошивку устройства в главе 1 «Добываем прошивку».

Я старался каждый раз писать, зачем мы проходим ту или иную тему, чтобы люди сразу понимали, нужно им читать эту главу или можно ее проскочить. Хотелось объяснить, о чем эта глава-левел, на какой вопрос мы будем искать ответ.

Рисунок 5. Структурная схема исследуемого в главе 0 устройства

Рисунок 5. Структурная схема исследуемого в главе 0 устройства

Я так сделал, потому что сам прочел много учебников. Многие из них написаны так, что сперва ты должен прочесть много текста, получить тонну информации и только в конце понимаешь зачем. Мне хотелось, чтобы мой читатель сразу понимал, что получит на выходе. С удовольствием передал бы такую книгу себе 10-летней давности.

Что дальше?

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

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

Не знаю точно, как и когда это будет, но понимаю, что будет сложнее, чем в первый раз. Ведь тогда, в начале, в голове у меня был идеалистический план. Я рассчитывал, что быстро управлюсь. Это был план, я реально в него верил. Даже смешно сейчас… Если бы мне тогда сказали, что потрачу восемь месяцев, буду писать по утрам и ночам и совсем не спать под конец… уверен, что отбросил бы эту затею.

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

Работа над ошибками: есть куда расти

Сейчас я говорю себе: «Вот тут можно было и получше раскрыть тему», «Здесь не мешало бы дописать». Я веду черновик, чтобы в случае, если решусь на второе издание, внести дополнений еще страниц на 70.

Думаю, своей цели я достиг. Я получил много отзывов от тех, кто входит в целевую аудиторию, в кого изначально метил. В целом фидбэк от них позитивный. Ребята, кто прочитал или читает книгу, хвалят за то, что написано подробно и понятно и не занудно 😊. Даже те, кому и книга-то эта ни к чему (они и так все знают), что-то отмечают, как наиболее удачное. Наверное, такую обратную связь и хочется получать от читателя.

Послесловие

Я смотрю на взлом «железа» как на некую прорывную исследовательскую область. Многие из таких атак сложны и чрезвычайно дороги для исполнителя. В общем, реверс-инжиниринг — безумно классная исследовательская сфера.

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

Не могу сказать, что доверие пользователей к «железу» утрачено, ведь обычного пользователя эти уязвимости вряд ли коснутся или будут критически опасны. Через аппаратный взлом, скорее всего, не будет совершена какая-нибудь массовая кража пользовательских данных, что могло бы отразиться на большом числе потребителей. Однако исследовательская мысль (как и хакерские устремления) не стоит на месте.

Защита устройств становится распространенным явлением, и стоимость взлома «железа» растет. Есть мнение, что с какого-то момента такие исследования станут недоступны независимым исследователям, ведь они не смогут позволить себе дорогое оборудование.

Рисунок 6. Эмулятор SPI флеш памяти. Существенно ускоряет скорость экспериментов по разработке патчей прошивок

Рисунок 6. Эмулятор SPI флеш памяти. Существенно ускоряет скорость экспериментов по разработке патчей прошивок

Но мне кажется, что часть устройств все равно будет ломаться «в условиях гаража». Производитель всегда будет искать способ снизить себестоимость изделия — уж точно никто не стремится усложнить и удорожить процесс производства. Напротив, будут появляться новые игроки, которые предложат его удешевить. Сейчас много китайских производителей микроконтроллеров, которые наступают на те же грабли, что и старожилы рынка. Ошибки повторяются, поэтому найти устройство, которое будут исследовать успешно «в условиях гаража», я думаю, еще лет 10 точно будет возможно. К тому же оборудование, которое раньше было дорогим, дешевеет. Не знаю, что должно произойти в будущем, чтобы люди с паяльником и базовым набором какого-то измерительного оборудования не смогли бы покопаться в очередной «железке».

Просто о сложном: как я написал книгу по реверс-инжинирингу встраиваемых систем - 8

Алексей Усанов @Benonline

Руководитель направления исследований безопасности аппаратных решений Positive Technologies (Positive Labs)


Надеемся, вам понравился рассказ нашего коллеги. Книгу Алексея можно купить в магазине издательства. Промокод для читателей Хабра: Habr_Revers. Ну и до новых историй из ИБ-читальни!

Автор: ptsecurity

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js