Подтвердить что ты не робот

Каковы некоторые современные и современные ресурсы по написанию эксплойтов?

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

Когда печально известная статья Фрэка, Smashing the Stack for Fun and Profit, была написана в 1996 году, это было незадолго до того, что я рассматриваю Computer Безопасность "золотой век".

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

Если говорить легко, все стало намного сложнее. Теперь инженеры по безопасности должны бороться с такими вещами, как рандомизация макета пространства адресов (ASLR), Предотвращение выполнения данных (DEP), Стек Cookies, куки-куки и многое другое. Сложность написания эксплойтов поднялась как минимум на порядок.

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

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

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

Каковы более продвинутые и распространенные документы, книги или другие ресурсы, посвященные борьбе с проблемами написания эксплойтов для современных систем?

4b9b3361

Ответ 1

Вы упомянули "Smashing the stack". С научной точки зрения эта статья устарела, прежде чем она была опубликована. Червь Morris конца 80-х использовал его (чтобы использовать fingerd IIRC). В то время это вызвало огромный переполох, потому что тогда каждый сервер был написан оптимистичным C.

Потребовалось несколько (10 или около того) лет, но постепенно все стали более осознавать проблемы безопасности, связанные с серверами, стоящими перед публикой.

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

Сегодня все выглядит немного по-другому. Серверы не считаются большой целью. В эти дни это клиенты, которые являются большой рыбой. Устраните клиента, и сервер позволит вам работать под учетными данными этого клиента.

Пейзаж изменился.

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

Ответ 2

Я впечатлен, вы хакер-лейтенант Как и я. Вам нужно перейти на веб-приложения. Большинство номеров CVE, выпущенных за последние несколько лет, были в веб-приложениях.

Прочтите эти две статьи:

http://www.securereality.com.au/studyinscarlet.txt

http://www.ngssoftware.com/papers/HackproofingMySQL.pdf

Получите стек LAMP и установите эти три приложения:

http://sourceforge.net/projects/dvwa/ (php)

http://sourceforge.net/projects/gsblogger/ (php)

http://www.owasp.org/index.php/Category:OWASP_WebGoat_Project (j2ee)

Вы должны скачать w3af и освоить его. Создайте для него плагины. w3af - это потрясающая атака, но она глючит и имеет проблемы с DVWA, она разорвет оттенки серого. Acunetix - хороший коммерческий сканер, но он дорогой.

Ответ 3

Я настоятельно рекомендую "Руководство по Shellcoder". Это просто лучшая ссылка, которую я когда-либо читал, когда дело доходило до написания эксплойтов.

Если вам интересно писать эксплойты, вам, скорее всего, придется научиться реконструировать. Для 99% мира это означает IDA Pro. По моему опыту, нет лучшей книги IDA Pro, чем Крис Игл "Книга IDA Pro". Он подробно описывает все, что вам когда-либо понадобится в IDA Pro.

В OpenRCE.org есть довольно большое сообщество обратного проектирования. Там доступны тоны документов и различные полезные приложения. Я узнал об этом сайте на отличной двухгодичной конференции по обратному проектированию под названием Recon. Следующее мероприятие будет в 2010 году.

Большинство исследований в эти дни будут "низко висящими фруктами". Большинство обсуждений на недавних конференциях по вопросам безопасности, о которых я говорил, касались уязвимостей на мобильных платформах (iPhone, Android и т.д.), Где практически нет доступных средств защиты на современных ОС.

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

Удачи вам в учебе. Использование записи чрезвычайно расстраивает, и Чрезвычайно вознаграждение!

Ба! Спам thingy не дает мне опубликовать все мои ссылки. Извините!

Ответ 4

DEP (Предотвращение выполнения данных), NX (No-Execute) и другие улучшения безопасности, которые специально запрещают выполнение, легко обходить, используя другие методы использования, такие как Ret2Lib или Ret2Esp. Когда приложение скомпилировано, обычно это делается с другими библиотеками (Linux) или DLL (Windows). Эти методы Ret2 * просто вызывают существующую функцию(), которая находится в памяти.

Например, в обычном эксплоите вы можете переполнять стек и затем управлять адресом возврата (EIP) с адресом NOP Sled, вашего Шелкового кода или Экологической переменной, которая содержит ваш шеллкод. При попытке этого эксплойта в системе, которая не позволяет исполняемому файлу, ваш код не будет работать. Вместо этого, когда вы переполняете обратный адрес (EIP), вы можете указать его на существующую функцию в памяти, такую ​​как system() или execv(). Вы предварительно заполняете требуемые регистры параметрами, ожидаемыми этой функцией, и теперь вы можете вызывать /bin/sh без необходимости выполнять что-либо из стека.

Для получения дополнительной информации смотрите здесь:

http://web.textfiles.com/hacking/smackthestack.txt