Как пишут эксплойты

Введение в разработку эксплоитов. Часть 1

Дата публикации 20 фев 2017

| Редактировалось 15 апр 2017

Часть 1: Введение в разработку эксплоитов

Это первая часть в (скромной) многотомной серии туториалов, посвященной разработке эксплоитов. Эта часть просто расскажет некоторые базовые вещи, такие, которые нам нужны, чтобы сделать нашу работу, основные идеи скрытые за разработкой эксплоитов и некоторые вещи, которые нужно держать в памяти, если мы хотим заслать и выполнить наш шеллкод. Эти туториалы не будут рассказывать как находить ошибки, вместо этого, каждая часть будет включать уязвимую программу, для которой нужна определенная техника, чтобы успешно эксплуатировать ошибку в ПО. Через определенное время, я намерен рассказать всё, от “
Сохранения Адреса Возврата при Переполнении” до “ROP (Возвратно Ориентированное Программирование)”, конечно эти туториалы не напишут сами себя, поэтому это займёт немного времени, чтобы написать это всё. Стоит отметить, что эти туториалы будут затрагивать все мелкие детали и случаи; это достигается благодаря дизайну, который (1) позволяет мне сэкономить время и (2) позволяет прилежному читателю учиться участвуя в процессе разработки.

Я бы хотел выразить особую благодарность Offensive Security и Corelan`y, спасибо Вам, за то что дали мне эту удивительное и болезненное пристрастие!!

(1) Что нам понадобиться

Immunity DebuggerDownload
Immunity Debugger похож на Ollydbg, но он имеет поддержку Python, который нужен нам, чтобы запускать плагины, которые помогут нам с разработкой эксплоита. Он бесплатен; когда перейдите по ссылке, просто заполните поля левыми данными и нажмите скачать.

Mona.py Download
Mona — это офигенная примочка с кучей функций, которая позволяет нам проводить быстро и надёжно разработку эксплоита. Я не буду обсуждать все её опции здесь, мы дойдём до них вскоре во время следующих частей туториала. Загрузите её и положите её в каталог Immunity’s PyCommands.

Pvefindaddr.pyDownload
Pvefindaddr — это предшественник Mona’ы . Я знаю, что он немного устарел, но остаётся всё ещё полезным, т.к. есть некоторые фишки, которые не были перенесены ещё в Mona’у. Загрузите её и положите в каталог Immunity’s PyCommands.

Metasploit FrameworkDownload
Мы будем использовать Metasploit Framework очень интенсивно. Больше всего мы будем генерировать шеллкоды для наших эксплоитов, но нам также нужна платформа, которая поможет получить любые соединения, чтобы можно было вернуться в программу после выполнения эксплоита. Я предлагаю Вам использовать Backtrack, т.к. у него есть всё, что нам нужно, но не стесняйтесь настроить metasploit в любом случае для себя.

Программное обеспечение для виртуализации
В основном здесь существует два варианта — VirtualBox, который бесплатен и Vmware, который не бесплатен. Если это возможно, я предложил бы использовать Vmware; умный человек, возможно, не должен платить за это ;)). Вместе с этим нам будут нужны несколько (32-битных) операционных систем, чтобы разрабатывать наши эксплоиты (Вы получите больше пользы из WindowsXP PRO SP3 и любой Windows7).


(2) Переполнения

В обучающих целях, я думаю важно подать вещи очень просто, а не сложно. В общем, когда мы пишем эксплоит, нам нужно найти переполнение в программе. Обычно эти ошибки будут на Переполнение Буфера (место в памяти получает больше данных, чем планировалось) или Переполнение Стэка (обычно Переполнение Буфера, которое записывает за концом стэка. Когда такое переполнение случается, есть две вещи, которые мы ищем; (1) наш буфер должен перезаписать EIP (Текущий указатель на инструкцию) и (2) один из регистров ЦП должен содержать наш буфер. Вы можете увидеть список регистров x86 ЦП ниже, с их отдельными функциями. Всё что мы должны помнить, это то, что любой из этих регистров может хранить наш буфер (и шеллкод).

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

EBX — Регистр базы. Указатель на данные в сегменте DS. Используется, чтобы хранить базовый адрес программы.

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

EDX — регистр общего назначения. Также используется, для операций в/в. Помогает расширить регистр EAX до 64 бит.

ESI — Индексный регистр источника. Указатель на данные в сегменте указанном регистром DS. Используется как смещение в строковых и массивных операциях. Он хранит адреса откуда читаются данные.

EDI — Индексный регистр назначения. Указатель на данные(или назначение) в сегменте указанном регистром ES. Используется как смещение в строковых и массивных операциях. Он хранит адреса куда пишутся данные.

EBP — Указатель на базу. Указатель на данные, которые хранятся в стэке (в сегменте SS). Он указывает на начало фрэйма стэка. Он используется, чтобы обращаться к локальным переменным.

ESP — Указатель на стэк (в сегменте SS). Он указывает на вершину стэка в текущем фрэйме. Он используется, чтобы обращаться к локальным переменным.

EIP — Указатель на инструкцию (хранит адрес следующей инструкции, которая должна быть выполнена)


(3) Как это работает?

В основном (1) мы заставляем программу хранить очень длинную строчку, (2) эта строка перезаписывает EIP и часть её храниться в регистре ЦП, (3) мы находим указатель, который указывает на регистр, который содержит наш буфер, (4) мы помещаем этот указатель в правильное место в нашем буфере, так, чтобы он перезаписал EIP, (5) когда программа достигает нашего указателя, она исполняет заданную нами инструкцию и прыгает на регистр, который содержит наш буфер и наконец (6), мы кладем наш шеллкод в часть буфера, который храниться в регистре ЦП . В сущности, мы угоняем поток выполнения программы и указываем ей на область памяти, которую мы контролируем. Если мы сможет это сделать, мы сможем исполнять на удаленной машине любые инструкции. Это немного упрощенно, но этого должно нам хватить, чтобы понять базовые идеи того как работают эксплоиты.

Перевод на русский Яша_Добрый_Хакер
Перевод специально для форума системного и низкоуровневого программирования — WASM.IN
20.02.2017


yashechka

yashechka
Ростовский фанат Нарвахи

Регистрация:
2 янв 2012
Публикаций:
90

Комментарии

      1. yashechka 22 фев 2017

        Класс. Это чьё? Я себе сайт забодяжил :lol:
        Буду туда ПДФ сливать статей, для тех кто печатать хочет))
        http://yasha.su/

      2. yashechka 22 фев 2017

        >yashechka, вспомни правила про «тся» и «ться», пожалуйста, и не делай глупых грамматических ошибок.
        Я его знаю, оно очень простое, это просто у меня от мозговой усталости))

      3. yashechka 22 фев 2017

        Да. Я согласен, туториалы Корелана хороши, но они уже были переведены, а хотелось кое-чего новенького, поэтому решил взять эти туториалы. Они конечно не настолько хороши, но всё же)) Книга очень хороша, у меня есть в бумаге, а вот вторую часть я всё никак не заставлю себя прочитать.

      4. psh3nka 22 фев 2017

        Проблема еще усугубляется ASLR’ом… Часть вторая, если Вы ее переведете, будет неюзабельна на ОСях выше XP, либо придется искать модули, которые не используют ASLR и отталкиваться от них, но об этом вообще ничего не говорится в туториале, да и требует бОльших знаний, которые за 1 15минутный ман не приобретаются. ИМХО, конечно. Сам сейчас столкнулся с подобной проблемой, когда начал читать Shellcoder’s handbook. Но она мне нужна для глубокого понимания базы и азов, дальше уже можно будет почитывать маны по обходу Stack Cookies, SafeSeh, SEHOP, HW DEP and ASLR

      5. SadKo 21 фев 2017

        yashechka, вспомни правила про «тся» и «ться», пожалуйста, и не делай глупых грамматических ошибок.

      6. yashechka 21 фев 2017

        >что это? неужели нельзя было написать по-русски:
        Ничего сам не дописывал, хотел показать как это перевести с англ. на русский
        >мое мнение — подобные темы стоит писать и переводить, только если разбираетесь сами в этой теме, и достаточно хорошо.
        Это точно))
        >Вам самим это нравится?
        Мне нравиться)
        >И я не говорю о том, что закончили статью, толком еще даже не сказав ничего. Не говоря о переводе в стиле «гугл транслейт»
        Как Вы поняли, на этом статья и заканчивается)
        >Так же нигде вы не описали хотя бы в двух словах почему такую вещь, как переполнение буфера, можно эксплуатировать.
        Это перевод, а не авторская статья, от себя ничего не добавлял.
        >>один из регистров ЦП должен содержать наш буфер
        >- это как? ))
        Х.з., так у автора)) я сам не вьехал, лиюо какие то новые плюшки появились
        >Разные люди по разному работают. Кто-то берет количеством, кто-то качеством, «рожая» 1-2 публикации за полгода. Правы и те, и те.
        Этого ответа я и ждал, Спасибо Вам За Добрые Слова
        >Вот, держите: http://www.fuzzysecurity.com/tutorials.html
        Вы не должны были искать, предполагалось, что никто про эти статьи ничего не знает.)) Это был секрет
        >Они переведены на R0crew и частично дублируют эти
        Exploit Writing Tutorial Part 1: Stack Based Overflows (Перевод: ===> p(eaz, RDot.org) ))
        >Посмотрим как Яша осилит перевести главы по хип-спреинг )))
        Если не будет получаться, я попрошу у Вас помощи.

      7. yashechka 21 фев 2017

        Вроде всё. Теперь отвечаю на вопросы.

      8. yashechka 21 фев 2017

        В редакторе и после сохранения разные шрифты получаются.

      9. TermoSINteZ 21 фев 2017

        psh3nka , посмотрел ссылку. Удивительно. такая глупая статья там, и при этом куча положительных комментариев. X_X
        ну да ладно. видимо есть какая то целевая аудитория.

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

      10. _edge 21 фев 2017

        Разные люди по разному работают. Кто-то берет количеством, кто-то качеством, «рожая» 1-2 публикации за полгода. Правы и те, и те.

        Яше респект просто за то, что что-то делает, не без ошибок, но выдает что-то осязаемое. А ошибки и поправить можно, на то и Песочница.

        От себя тоже добавлю, про написание «ться» и «тся», вот такая я бяка

        tsya.ru

      11. RET 21 фев 2017

        >один из регистров ЦП должен содержать наш буфер
        — это как? ))
        обычно идет подмена адреса возврата при возникновении сепшена, а это делается на стеке

      12. TermoSINteZ 20 фев 2017

        Если это перевод — где ссылка на оригинал?
        И если вы переводите — будьте добры хотя бы немного изменять, в соответствии с тем, чтоб читать понял, что вы хотите этим сказать.
        > Обычно эти ошибки будут на Переполнение Буфера (место в памяти получает больше данных, чем планировалось)
        что это? неужели нельзя было написать по-русски:
        «Рассмотрим классический прием эксплуатации — переполнения буфера. Ошибка происходит в случаях когда принимающий буфер имеет размер меньший, чем данные, которые туда записываются. Иными словами, нет проверки размера и ограничения на запись»

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

        И я не говорю о том, что закончили статью, толком еще даже не сказав ничего. Не говоря о переводе в стиле «гугл транслейт»

        Вам самим это нравится?

        мое мнение — подобные темы стоит писать и переводить, только если разбираетесь сами в этой теме, и достаточно хорошо.

      13. yashechka 20 фев 2017

        В редакторе везде один и тот же размер, сейчас подпись добавил, сохранил, шрифт больше чем в редакторе.

      14. yashechka 20 фев 2017

        Я не знаю, что и где глючит((. У меня текст набран в ЛибреОфисе Liberation Serif. Третий и второй абзац, только заголовок болдом. Тело без болда. Тут он(редактор) мне делает его весь жирным. Если я исправляю, то первый абзац становится весь жирным


    WASM

    Предлагаю вникнуть в бинарные уязвимости и эксплойтостроение на примере просто ROP (return oriented programming) – одного из методов эксплуатации уязвимостей в ПО. Это достаточно мощный инструмент, с помощью которого можно обойти различные методы защиты. Конкретно мы будем разбираться с гаджетами и ROP-цепочками.

    Что такое ROP-гаджеты

    По умолчанию гаджет завершается RET (это инструкция возврата), которая расположена в ОЗУ в коде программы или распределяемой библиотеки. В процессе кибератаки мошенники делают так, чтобы все гаджеты выполнялись через инструкции возврата, а для этого они определенным образом формируют их цепочки (последовательности) – их и называют ROP-цепочками или ROP-chain.

    ​Вот так могут выглядеть гаджеты

    Допустим, мы возьмем необходимые нам гаджеты в цепочку. Ее отправим в стек и добьемся выполнения любого кода. Код может быть вообще любым, но нам нужно вызвать шелл (оболочку). Под linux это делается с помощью execve() (аналог system()) – его и будем применять для создания системного вызова.

    Linux System Calls

    Системные вызовы помогают получить определенные системные функции. Полный их список с присвоенными номерами вызываем следующим образом:

    Зачем нужен номер? Зная его, мы сможем вызвать конкретную системную функцию:

    unistd.h представляет собой файл заголовка, через который мы получаем доступ к API нашей ОС. Его содержимое можно увидеть через простой редактор nano.

    Системные вызовы для x86 и x64​

    Что содержится в unistd_32.h?

    В unistd_32.h ровно 336 системных вызова​

    Видим, что перед нашим системным вызовом стоит 11.

    Идем дальше – прототип системного вызова execve().

    ​Прототип системного вызова execve()

    Filename – указатель на строку (у нас это путь к двоичному файлу ptr для «/bin/sh»).

    ARGV[] – перечень аргументов программы (отсутствуют, потому ставим 0).

    Envp[] – аргумент параметров среды (снова 0).

    Получаем:

    Ассемблер

    Разберемся, как у него обстоят дела с командами и регистрами.

    Основные регистры:

    EIP – служебный регистр, указывает на адрес текущей исполняемой инструкции;

    ESP – хранит указатель на вершину стека;

    EBP – указатель на фрейм, применяется для адресации данных в стек;

    EAX – используется как универсальное хранилище при накоплении данных;

    EBX – хранит адреса в памяти (регистр общего назначения, хранит любые данные в оперативной памяти);

    ECX – применяется для организации циклов. Перед циклом в него заносят необходимое количество итераций, каждая команда loop уменьшает значение этого регистра на единицу. При достижении нуля цикл завершается;

    EDX – аналог EAX, тоже универсальный аккумулятор значений, часто используется для умножения и деления (DIV, SUB).

    Последние четыре регистра используются для хранения определенных значений.

    Есть еще 6 с аргументами системных вызовов: EBX, ECX, EDX, ESI, EDI и EBP. Если аргументов 7 и больше, ячейка памяти первого сохраняется в EBX.

    Снова возвращаемся к execve(). Для ее вызова нужно придумать, где хранить аргументы. Используем для этого те самые шесть регистров.

    Для самого системного вызова нам понадобится int 0x80 (80h), где int – прерывание, а 0х80 – его номер.

    Обработкой прерываний в linux занимается его ядро, оно же отвечает за выполнение системных вызовов другими программами. Ядро получает сведения о том, какой вызов хочет сделать определенная программа после того, как проанализирует содержимое EAX (туда записывается номер системного вызова).

    Чтобы сделать системный вызов:

    • перемещаем его номер в EAX (у нас 11);
    • сохраняем аргументы в регистрах EBX, ECX и EDX;
    • делаем int 0x80 -> EAX (11) => run execve().

    Получаем:

    Дальше находим гаджеты, которые соответствуют нашим критериям, и собираем ROP-цепочку.

    Формируем ROP-chain

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

    У нас есть два способа: найти гаджеты в программе stack7 или в библиотеке libc. И снова второй вариант лучше, так как чем «тяжелее» программа, тем больше в ней обнаружится гаджетов, хотя не факт, что нужные там будут.

    Найдем, какие библиотеки привязаны к нашей программе, с помощью утилиты ldd.

    Где находится библиотека?

    Пока видим только ярлык, но сама библиотека располагается там же и называется libc-2.11.2.so. Скачиваем ее и загружаем в онлайн-сервис. Для скачивания рекомендую WinSCP – свободно распространяемый графический клиент SFTP под Windows.

    Запускаем клиент WinSCP​

    RSA-ключ​

    Ищем в папке libc-2.11.2.so и загружаем его.

    Со своего компьютера загружаем скачанный файл в онлайн-сервис ROPShell. Как это выглядит – смотрим здесь.

    Теперь возьмем некоторые фрагменты из ранее написанного эксплойта.

    Нам нужна часть кода.

    По результатам анализа библиотеки получаем такую картину:

    Вот что мы получили после анализа библиотеки​

    Чтобы сформировать ROP-последовательность, найдем здесь три инструкции:

    pop [register] – переносит данные с вершины стека в [register];

    xor eax, eax; – записывает в EAX ноль;

    inc eax; – добавляет к содержимому EAX на единицу.

    Теперь переходим к конструированию ROP-эксплойта.

    1. Переполняем буфер на 80 байтов. offset eip.

    2. Переходим на RET address.

    3. Обнуляем содержимое регистров ECХ и EDX.

    Ищем гаджеты с нужными нам инструкциями. Пишем в ROPShell:

    Подставляем четырехбайтное значение ‘x00x00x00x00’, обнуляем содержимое регистра ECX.

    И еще:

    pop edx; ret

    ‘x00x00x00x00’ в регистр EDX записываем 0.

    В списке есть регистр с одной из нужных нам инструкций​

    Одного гаджета с обеими инструкциями «pop ecx; ret» & «pop edx; ret» мы не нашли, продолжаем поиски.

    Значения подставляем такие, которые соответствуют выбранным гаджетам.

    4. В регистр EAX записываем 0.

    Пишем xor, eax в ropshell.

    ​Ищем xor eax

    5. Снова нужен EAX, но сейчас записываем туда 11.

    ​Ищем inc eax

    Сейчас в EAX записано значение 0, с помощью инкрементации увеличиваем его до 11.

    6. Смотрим, что с EBX.

    ​Обращаемся к EBX

    7. Добавляем ‘bin/sh’.

    8. Вызываем int 0x80.

    ​Прерывание int 0x80

    9. Суммируем и печатаем.

    Вместо адреса system() подставляем адрес сишной библиотеки. Нам нужен адрес, по которому мы искали гаджеты. Используем «info proc map» – эта команда позволит увидеть адресное пространство и понять, где libc загружен в память.

    ​Находим адрес libc

    Адрес выяснили – libc загружен по адресу 0xb7e97000.

    И теперь код эксплойта полностью.

    Как проверить, что все верно?

    ​Эксперимент завершился успешно

    Ура, root получили! Наш эксплойт целиком состоит из цепочки гаджетов ROP-chain. Об их классификации можно узнать здесь, а про ROP – здесь.

    Больше интересных тем по кибербезопасности вы найдете на нашем форуме https://codeby.net. Всех желающих приглашаем на обучение – преподаватели нашей школы разработали курс по анонимности и безопасности в интернете. Узнать подробности и записаться: вам сюда.

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

    Типы эксплойтов

    Типы эксплойтов в Metasploit:

    • Активный
    • Пассивный

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

    Наша установка

    Программное обеспечение, которое мы будем использовать в этом руководстве, включает следующее:

    Эксплойт: Для целей этого краткого руководства мы будем использовать уже существующую уязвимость на FTP-сервере freefloat.

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

    Пакет обновления 3 для Windows XP установлен

    Kali Linux: Очевидно, что это бесспорно ведущее средство для тестирования на проникновение.

    Mona.py: Плагин на основе Python, который помогает с отладкой иммунитета. Загрузите Mona.py и переместите его в каталог отладчика иммунитета (папка команды py).

    Процесс

    Имитация фаззинга

    Мы выполним псевдофаззинг, который предполагает заполнение системы случайными данными. Мы создадим шаблон из 1000 символов и воспользуемся им для перегрузки порта 21, поскольку это командный порт FTP-сервера.

    После выполнения модуля запустите отладчик иммунитета и убедитесь, что EIP был перезаписан.

    Огонь вверх Мона

    После перезаписи EIP мы можем продолжить работу с отладчиком иммунитета. Введите следующее:

    >!Мона предлагает

    Для продолжения выберите TCP-клиент и порт 21.

    Настроить эксплойт

    Вы увидите созданный в результате файл на основе рубина. Вы можете изменить его как хотите. Здесь мы переименуем его в f.rb.

    Запустите эксплойт в Metasploit

    Загрузите файл в Kali Linux и реплицируйте эксплойт из корня в платформу Metasploit:

    Вы можете видеть, что Metasploit принимает изменения и совместим.

    Вывод

    Это было мини-руководство о том, как написать эксплойт для Metasploit. Мы обсудим более сложные эксплойты и посмотрим, как они будут написаны в следующих статьях.

    Просмотров: 69

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

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

    Шеллкод представляет собой двоичный исполняемый код.

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

    И, наоборот, есть reverse-shell, который делает обратное подключение с машины жертвы, на нашу целевую машину. Все, что от нас требуется, это вовремя прослушивать порт, который мы прописали в эксплойте. Все довольно просто. Таким образом мы можем обойти файрволл, и без препятствий провести соединение. Для ловли входящего подключения с машины жертвы, нам пригодится команда: «nc –nlvp <прослушивающийся порт>».

    Еще хотелось бы добавить немного про Meterpreter, который входит в состав фреймворка Metasploit. Meterpreter можно называть трояном (Remote Access Trojan). Он позволяет получить удаленный доступ к машине жертвы.

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

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

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

    1. Immunity Debugger

    2. GDB-PEDA (GNU Debugger)

    3. EDB (Evan’s Debugger)

    Итак, технические особенности. Нам нужна среда виртуализации на Вашем ноутбуке или ПК. Также требуется Windows 7, Vista или XP, и, в качестве целевого хоста, Kali Linux.

    #1 Введение в разработку эксплойтов. Вводная часть.

    #2 Введение в разработку эксплойтов. Дополнительные модули.

    Понравилась статья? Поделить с друзьями:
  • Как пишут шутки для квн
  • Как пишут шизофреники
  • Как пишут читы для игр
  • Как пишут чистосердечное признание
  • Как пишут числа арабы