#4 Процесс разработки эксплойтов.
Здравствуйте, дорогие друзья. Продолжаем рассматривать разработку эксплойтов, и остановимся, непосредственно, на самом процессе.
Хотя де-факто не существует стандарта разработки эксплойтов, эксперты по кибербезопасности согласовали несколько ключевых шагов.
- Фаззинг.
2. Proof-of-Concept (PoC) Creation
3. Hijacking Execution
4. Bad Character Analysis and Elimination
5. Successful Exploitation
Рассмотрим первый пункт, а именно – Фаззинг. Существует много коммерческих фаззеров с открытым исходным кодом. Цель использования состоит в том, чтобы рассмотреть и проанализировать текущий процесс, а также результаты сбоя программы.
После того, как мы завершим работу приложения и проанализируем зарегистрированные результаты, мы сможем найти возможности для разработки эксплойта. Такие показатели бывают …
- Перезапись указателя расширенной инструкции (Overwriting the Extedned Instruction Pointer).
2. Перезапись обработчика структурированных исключений (Owerwriting the Structured Exception Handler (SHE Overwrites).
3. Обнаружение нарушений доступа по недействительным адресам памяти.
Это не полный список индикаторов использования возможностей.
Предположим, что мы случайно перезаписали адрес памяти, в котором находится указатель расширенной инструкции (EIP), с помощью шестнадцатеричного значения A’s (0x41).
Это дает нам возможность перехватить выполнение функции EIP.
Перезаписывая значение EIP четырьмя шестнадцатеричными числами B’s (0x42s), мы проверяем, можем ли мы перехватить выполнение, сначала отправив известный буфер шестнадцатеричных чисел A’s (0x41), а затем чисто перезаписав регистр EIP четырьмя шестнадцатеричными числами B’s (0x42).
На этом этапе Вы можете использовать отладчик для поиска повторно используемых инструкций сборки, таких как JMP ESP, в самом отлаживаемом приложении. И замените B’s на действительный адрес памяти в формате Little Endian (байты в обратном порядке).
Плохие символы (Bad Character) — это простейшая форма, шестнадцатеричных кодов операций и операндов сборки, которые НЕ отображаются должным образом в памяти отлаженного приложения, например, «0x0a» превращается в «0x29» в дампе стека. Он также может усекать или искажать следующие за ним шестнадцатеричные коды операций.
Таким образом, Вы потратите значительное количество времени на поиск и устранение «Bad Character».
И, наконец Успешная эксплуатация.
После того, как мы успешно 1) перехватим выполнение и 2) удалим плохие символы и 3) сможем вставить действительный шелл-код в приложение, мы приступим к успешной эксплуатации.
#1 Введение в разработку эксплойтов. Вводная часть.