Посоветуйте, что почитать. Часть 2
Как и обещали, продолжаем рассказывать, где почерпнуть новые знания в ИБ. Публикуем вторую часть подборки полезных ресурсов.
Satisfiability modulo theories (SMT)
Если вы решили погрузиться в эту тему, пожалуй, лучшим материалом для первого знакомства с SMT будет Theorem prover, symbolic execution and practical reverse-engineering. Он позволит быстро познакомиться с принципом применения SMT и символьного исполнения в реверсе, получить навыки работы с Z3 через Python. Также в презентации разбирается ряд конкретных задач реверс инжиниринга: обращение хэш-функций, деобфускация, поиск ROP-гаджетов и др.
Для более глубокого погружения в тему рекомендуем книгу SAT/SMT by Example. В этой книге более чем на 500 страницах разбираются различные задачи, которые можно решить с помощью SMT. Автор не ограничивается задачами реверс инжиниринга и приводит решения некоторых математических задач и головоломок. Отдельное внимание стоит уделить главе 18, посвященной работе с KLEE.
Также для общего развития можно посмотреть академическую работу SMT Solvers for Software Security, Sean Heelan, Rolf Rolles. Это одна из первых научных работ, в которой было предложено применять SMT в области безопасности ПО, благодаря ей всё и “завертелось”.
Имея базовое понимание и навыки работы с SMT, можно перейти к изучению других материалов и знакомству с утилитами и фреймворками:
- Фреймворки:
- Утилиты:
- KLEE,
- PONCE – интересный плагин для IDA Pro
- Статьи:
… и всё, что сами найдете, конечно.
Для IDA Pro
Если вы уже отлично владеете IDAPyhton API для IDA Pro и хотите выйти на новый уровень, самое время посмотреть на Hex-Rays API (ida_hexrays) и Microcode API. Первый позволяет поиграться с возможностями декомпилятора, а второй как раз лежит в основе декомпилятора.
Как же к этому подступиться? Все, что касается документации и IDA, — полных крах, так что тут лучше начать с изучения чужих творений. Далее приводим несколько небольших (до 600 LOC) скриптов, которые помогут окунуться в тему.
1) HRDevHelper — отображает ctree дерево, по которому вам придётся ходить при работе с декомпилятором.
2) xray — помогает выделить интересные участки кода, которые могут быть полезны при анализе вредоносного ПО и выявлении уязвимостей.
3) MrsPicky — помощник для аудита memcpy() и memmove() функций, также использует функциональность декомпилятора для своей работы.
4) dsync — простенький скрипт для синхронизации окна дизассемблера и декомпилятора в IDA.
5) genmc — основной помощник при написании плагинов для работы с Microcode IDA. Он отображает, как исследуемый вами код выглядит в микрокоде IDA.
ML и (In)security
1) Книга от разработчиков антивируса на базе ML — Cylance "Introduction To Artificial Intelligence For Security Professionals" + сразу гуглим "Bypassing Cylance" и получаем множество постов о том, как обойти это "чудо" ML десятками способов.
2) Интересный пост "DETECTING MALWARE PRE-EXECUTION WITH STATIC ANALYSIS AND MACHINE LEARNING" от создателей другого ML антивируса SentinelOne (все из этой области называют себя NGAV — Next-Generation Antivirus) — тоже обходится, можно гуглить и смотреть на Youtube.
3) Книга Malware Data Science от парней из АВ компании Sophos, есть глава про ML (кстати, доступна как free).
4) Книга Machine Learning and Security
5) Искренне рекомендуем и наш цикл статей на Хабре: 1, 2, 3.
6) Также очень рекомендуем выступление Thomas Dullien "Machine learning, offense, and the future of automation" c ZeroNights 2017, где автор выражает непопулярную точку зрения, что ML скорее будет полезен для атак, нежели для защиты.
7) Пул ссылок Awesome Machine Learning for Cyber Security, здесь есть и книги, что упоминались выше, в формате pdf.
8) Полезно знать и о таком направлении как Adversarial machine learning, которое заключается в атаках на ML, ознакомиться можно по ссылке.
9) Microsoft знает о возможностях атаковать такие алгоритмы и думает об их защите — Protecting the protector: Hardening machine learning defenses against adversarial attacks.
Наш опыт с ML в области ИБ показывает следующее:
- Не столько важны ML, нейронки, алгоритмы и т.п., сколько dataset, на котором это все будет строиться.
- Обучаться на плохом/вредоносном — это все равно отставать от атакующего и быть догоняющим в этой гонке.
Jailbreak iOS
Если вам интересна данная тема, рекомендуем посмотреть доклады:
Из этих источников вы узнаете, как все начиналось и что нужно сделать сегодня, чтобы получить полный JB на устройстве, а также какие механизмы защиты существуют; узнаете мнение авторов о том, как долго это еще будет актуально. Доклады 2018-2019 гг, так что они покрывают и одни из последних версий iOS. Узнаете, какие механизмы используют разработчики защиты, и как их обходят атакующие.
AFL++
Пожалуй, все интересующиеся знакомы с фаззером AFL. К сожалению, автор забросил его на версии 2.52b, и сообщество стихийно начало пилить свои патчи, улучшения, форки и т.д. Но совсем недавно появился AFL++, в котором товарищ van Hauser из команды The Hacker's Choice собрал то, что сделало сообщество, и объединил в одном проекте. На сегодняшний день это лучший выбор при фаззинге с помощью AFL.
Мы уже публиковали материал о вспомогательных утилитах для AFL и его модификациях, за подробностями можно обратиться к нему.
P.S.
Для желающих получить более фундаментальные знания у нас есть большая подборка по reverse engineering, она все так же хороша, как и 3 года назад.
Спасибо за подбор материалов @d1g1!
Надеемся, что вы нашли для себя что-то новое и полезное. Не стесняйтесь делиться в комментариях своими находками.
P.P.S.
Если вы пропустили первую часть подборки, она здесь