
От нулевого дня до дня ноль — это практическое руководство для специалистов по кибербезопасности, которые хотят выйти за рамки чтения об уязвимостях и начать их находить. В книге представлен методичный взгляд на то, как на практике проводится исследование уязвимостей.
Юджин Лим — исследователь безопасности и белый хакер. В 2019 году он получил награду Самого ценного хакера на живом хакерском мероприятии H1-213 в Лос-Анджелесе, организованном Hackerone, ВВС США, Министерством обороны Великобритании и Verizon Media.
Книга разделена на три основные части: анализ кода, реверс-инжиниринг и фаззинг. Каждая часть шаг за шагом раскрывает технические процессы, которые исследователи уязвимостей используют для обнаружения изъянов в программном обеспечении. Это книга с рабочими примерами, настройками инструментов и отсылками к реальным ошибкам.
Первая часть посвящена чтению и пониманию исходного кода. Разборы основаны на реальных CVE, что даёт читателям представление о том, как известные уязвимости были обнаружены в реальных условиях. Далее в этой части автор рассказывает, как сопоставить код с поверхностью атаки, и знакомит с автоматизированными инструментами, такими как CodeQL и Semgrep, для масштабного анализа вариантов.
Следующая часть, посвящённая реверс-инжинирингу, рассматривает подход к бинарным файлам, когда исходный код недоступен. Лим классифицирует различные типы бинарных файлов — от скомпилированных программ на C до байт-кода Java — и даёт советы по их быстрой первоначальной оценке. Он охватывает использование таких инструментов, как Ghidra и Frida, и показывает, как находить уязвимые участки кода с помощью статических и динамических методов. Эта часть развивает логику «источник-приёмник» из предыдущих глав, что помогает связать всё воедино читателям, новичкам в работе с бинарными файлами.
Раздел о фаззинге — наиболее автоматизированная часть книги. Он начинается с быстрой настройки фаззинга с помощью таких инструментов, как boofuzz и radamsa, а затем переходит к фаззингу с контролем покрытия с использованием AFL++. Автор объясняет, как сделать фаззинг эффективным, выбирая правильные цели, создавая более качественные обёртки и интерпретируя результаты. Также есть целая глава о сложных целях для фаззинга, включая бинарные файлы с управляемой памятью и сложные форматы файлов.
Сильной стороной книги является то, что она не обходит стороной сложные моменты. Лим не делает вид, что исследование уязвимостей — это просто или быстро. Вместо этого он показывает, как разбивать задачи на более мелкие шаги и применять повторяемые рабочие процессы, чтобы сделать работу выполнимой. Это ценно для специалистов, у которых уже есть некоторый опыт в работе красных команд или тестировании на проникновение, но которые чувствуют себя потерянными, когда дело доходит до поиска оригинальных уязвимостей.
"От нулевого дня до дня ноля" — это практическое руководство, поощряющее самостоятельное исследование. Для профессионалов в области кибербезопасности, желающих глубже погрузиться в обнаружение уязвимостей, это отличный помощник.