FAQ for Exploits.
By Reanimator.
Вопрос: Что такое эксплоит?
Ответ: Эксплоит это такая программа, которая написана с целью эксплуатации (использования) конкретной дыры (уязвимости) в конкретном приложении (ОС, обычная программа, веб-приложение). Эксплоит может быть написан практически на любом языке программирования, (наиболее частые: C/C++, Perl, PHP, HTML+Javascript) . Также, эксплоит может представлять из себя одиночный файл, который необходимо либо сразу запустить, либо предварительно скомпилировать. И еще, эксплоит может представлять из себя архив, чаще с расширениями .tar или .tar.gz, потому как большинство из них пишутся под UNIX системы. В этих архивах может лежать что угодно:
* те же .pl файлы
* скрипт или исходник на C, Java, etc
* просто описание "хитрого обращения"
* etc
Вопрос: Какие бывают виды эксплоитов?
Ответ: Эксплоиты бывают локальными (local) и удаленными (remote). Используя локальные эксплоиты, можно изменить привилегии, уже имея доступ к машине. Удаленные же эксплоиты позволяют получить некоторые привилегии на удаленной машине, а уже эти полученные привилегии можно расширять, используя локальные эксплоиты. Так, например, если мы имеем FreeBSD <=4.3 с запущенным telnetd (23 порт), используя удаленный эксплоит, приводящий к переполнению буфера, получаем привилегии того пользователя, от которого запущен процесс telnetd.
Вопрос: На какие классы делятся эксплоиты?
Ответ: Class'ные эксплоиты.
Некорректно говорить, что эксплоиты приводят к тому-то и тому-то. На самом деле, они просто переполняют буфер, а какие-либо действия выполняет Shell-код. Именно от содержания Shell-кода зависит то, что произойдет при успешном выполнении атаки: откроется порт, выполнится команда или сервер уйдет в «Даун».
DOS Shellcode Xploits.
Чаще всего, эти эксплоиты удаленного действия. Целью, которую преследует ][акер, натравливая такую штуку на уязвимый сервер, является выведение из строя («Даун») атакуемого сервиса или всей операционной системы (да-да, бывают такие случаи, когда повешенный демон забирает с собой всю ОС). С каждым днем происходит все больше таких атак. Почему? Потому что тем, кто заказывает эти атаки, не нужна информация с сервера. Цель таких атак, как правило, банальное лишение конкурента дееспособности. Согласись, атаковать уязвимый сервис, подверженный DOS-атаке, проще, чем натравливать целую армию компьютеров на произведение ICMP- и подобных ей атак, действующих не проработанным принципом, а количеством. Второй причиной является то, что иногда, для того чтобы насолить врагу, достаточно DOS-атаки, а не rm rf, а уязвимостей, позволяющих произвести убойную атаку, гораздо больше, чем тех, которые позволяют получить доступ. Это происходит потому, что часто переполнить буфер бывает достаточно легко, а «впарить» shell-код так, чтобы он выполнился, как задумано, очень сложно, а порой даже нереально, так как в дырявой программе все-таки существует какая-то вредная проверка на «вшивость».
Вопрос: При компиляции исходника выдается ошибка (Не хватает библиотеки!), что делать?
Ответ: Вероятно, вы просто забыли установить какую нибудь библиотеку.
Посмотрите, какие библиотеки использует эксплоит (в исходнике) и проверьте, все ли они имеются в наличии. Как минимум должны быть библиотеки для работы с сетью.
Вопрос: При компиляции исходника выдается синтаксическая ошибка в исходнике, что не так?
Ответ: Ответов несколько. Возможно это не эксплоит, а фейк (если ты его
стрейдил). Возможна и другая ситуация, например в код вкралась
синтаксическая ошибка (при копировании ты чего-то не доглядел). Ну и
третий вариант - ошибка нарочно допущена автором эксплоита. Очень часто
эксплоиты защищают таким методом. Т.е. авторы слегка ломают эксплоит,
так, чтобы проффесионал, понимая суть происходящего, мог исправить код.
Таким образом, реализуется "защита от дурака".
Вопрос: Для чего нужен эксплоит?
Ответ: Эксплоиты используются в основном для того, чтобы:
1)получить доступ к системе;
2)поднять свои права в системе (наиболее характерно для *NIX)
3)за DoS'ить систему «до смерти» (отправить в полный даун)
4)получить пароли пользователей (взлом форумов, чатов, гостевых, и прочих веб-приложений)
Вопрос: Как пользоваться готовыми (скачанными с инета) эксплоитами?
Ответ: Эксплоиты, написанные на С/С++ нужно компилировать в исполняемые файлы (если они предоставлены в текстовом виде) и только потом запускать.
Для использования эксплоитов, написанных на Perl'е, PHP нужны интерпретаторы этих языков (компиляция не нужна).
Чтобы запускать эти эксплоиты нужно давать их на обработку интерпретатору (соответственно Perl интерпретатор и PHP интерпретатор
Вопрос: Как «писать» эксплоиты?
Ответ: Представим, что мы нашли баг на переполнение в каком-нибудь софте и просто горим желанием его использовать (а впоследствии сообщить о нем производителю), причем не как банальный DoS, а как способ получения доступа к машине с таким софтом. Для этого потребуется написать эксплоит под наш баг, который бы открывал командный shell (шелл) на каком-нибудь порту. Процесс написания эксплоита мы будем делить на три этапа, связанных с использованием разных инструментов.
Первый этап сбор данных об уязвимости: поиск функции, в которой происходит переполнение, запись адреса возврата этой функции, размера буфера и кучи других необходимых вещей. Для этих действий нам потребуются утилиты двух видов: отладчики и дизассемблеры. С помощью дизассемблеров очень легко ориентироваться в коде уязвимой программы, а отладчик (дебаггер) будет ключом к данным, возникающим в ходе работы приложения, возможность просмотреть стек в момент переполнения меня всегда очень радовала.
Второй этап написание shell-кода, голого куска программы, который бы открывал доступ к компьютеру жертвы. Это самая ответственная и сложная, на мой взгляд, часть процесса. Здесь нам понадобится ассемблер, ведь только с его помощью можно создать работающий, отвечающий всем хитрым требованиям код.
Третий этап собственно написание эксплоита, программы, которая бы реализовала переполнение: засунула бы в буфер shell-код и сразу же им воспользовалась. Тут никак не обойтись без хорошего компилятора Си, на котором проще и удобнее написать вкусный код.
Вопрос: Где взять отладчики и дизассемблеры, которые нужны для «написания» эксплоита?
Ответ: «Soft-Ice» (отладчик). ]]>http://www.numega.com]]>.
«Ida Pro» (дизассемблер). ]]>http://www.idapro.com]]>.
Вопрос: Как компилировать эксплоиты написанные на С в Windows?
Ответ: Компилировать нужно с помощью компилятора, который можно скачать здесь ]]>http://prdownloads.s...9.9.2_setup.exe]]>, или найти здесь ]]>http://www.bloodshed...dev/devcpp.html]]>.
Вопрос: Как обрабатывать эксплоиты, написанные на Perl и PHP с помощью интерпретатора?
Ответ: Отдать на обработку интерпретаторам.
PHP интерпретатор-http://ru2.php.net/get/php-5.0.4-Win32.zip/from/this/mirror
Perl интерпретатор-http://downloads.activestate.com/ActivePerl/Windows/5.8/ActivePerl-5.8.6.811-MSWin32-x86-122208.msi
Вопрос: Где можно найти информацию про эксплоиты (желательно на русском)?
Ответ: Про эксплоиты можно почитать на порталах по безопасности
(www.securityfocus.com и т.д.) или на сайтах отечественных ][ак-групп.
Вопрос: Где найти и скачать эксплоиты?
Ответ: Эксплоиты можно найти по следующим адресам:
www.securitylab.ru
www.insecure.org
www.hack.co.za
www.packetstormsecurity.org
www.securityfocus.com
www.ya.ru
www.gg.ru
Немного об SQL and PHP injection (непосредственно имеющим отношение к эксплоитам).
Вопрос: Что такое SQL, PHP-инъекции, межсайтовый скриптинг XSS атаки?
Ответ: Web-приложения, написанные на языках, использующих C/C++/Perl/PHP (точно на таких же языках пишутся эксплоиты) также могут быть уязвимы к таким традиционным атакам как XSS, могут быть произведены манипуляция кодом и содержимым SQL-инъекции и PHP-инъекции.
Одной из главных причин возникновения таких уязвимостей является недостаточное знание безопасных методов программирования разработчиками web-приложений (о них я расскажу позже). В результате получается, что защита приложения не является основной целью разработки. Другая причина появления уязвимостей - это большая сложность свойственная онлайновым системам, что требует создание комплексных проектов и логики программирования. Итак, начнем
1. Межсайтовый скриптинг (XSS).
Принцип работы межсайтового скриптинга основан на внедрении злонамеренного кода в HTML-код страницы, что приводит к выполнению такого кода на машине «жертвы». Давайте рассмотрим эту уязвимость на примере сайтов использующих PHP .Если атакующий получит возможность вставить произвольный HTML-код, то он сможет управлять отображением веб-страницы с правами самого сайта.
Пример XSS атаки: «http://host/xxx.php?name=»
Если внедрить код в уязвимую страницу сайта или форума, то вполне реально получить содержимое «печенек» администратора.
Также, XSS представляет опасность, если произвольный код отображается на страницах с расширением shtml, т.е. сервер поддерживает технологию SSI (Server Side Includes). Это может привести к чтению или выполнению произвольных файлов на сервере.
2. SQL-инъекции.
SQL-инъекция относится к вставке метасимволов SQL вводимые пользователем данные, что приводит к изменению запроса в конечной базе данных. Как правило, злоумышленники для начала определяют уязвимость сайта к такой атаке (для этого посылается знак одинарной «кавычки»). Последствия выполнения такой атаки на уязвимом сайте могут находиться в пределах от появления детального сообщения об ошибке, что раскрывает злоумышленнику используемую на сайте технологию, до доступа к закрытым областям сайта или выполнения на сервере произвольных команд операционной системы.
Методы SQL-инъекции зависят от типа используемой базы данных. Например, SQL-инъекция на базе данных «Oracle» осуществляется в основном с помощью использования ключевого слово union, и она намного более трудна, чем на MS SQL-сервере, где можно выполнить множественные запросы, отделяя их символом точки с запятой. В заданной по умолчанию конфигурации MS SQL-сервер выполняется с привилегиями Local System и имеет расширенную процедуру «xp_cmdshell», позволяющую выполнение команд операционной системы.
3. PHP-инъекции.
Из названия видно, что данной уязвимости подвержены скрипты, написанные на языке PHP. Метод реализации заключается в передачи функциям include() и reqiure() произвольных параметров, что может привести к выполнению произвольного кода на целевой машине с правами веб-сервера. Данная уязвимость более опасна, чем две предыдущие, т.к. при стандартной конфигурации PHP и веб-сервера (что характерно для большинства серверов) возможно использование командного интерпретатора.
Ну что ж, подведем итог
Подводя итог, нужно отметить, что независимо от конфигурации сервера, распределения прав невозможно полностью обезопасить себя от реализации подобного рода уязвимостей. Самым оптимальным решением является фильтрация переданных пользователем данных. Это и должны учитывать программисты при написании скриптов, при использовании данных методов решения задач.
Вопрос: Что такое уязвимости в Web-приложениях и как их использовать, если они доступны?
Ответ: Я выделю только десять, наиболее опасных «багов» (уязвимостей) в Web-приложениях.
На первом месте списка находится уязвимость, связанная с отсутствием проверки параметров в http-запросах. В результате, используя особые параметры, ][акер может получить доступ к ресурсам сервера через Web- приложение.
На втором месте находится несоблюдение политик управления доступом к ресурсам. Это позволяет злоумышленнику использовать закрытые ресурсы или получать доступ к учетным записям других пользователей.
На третьей позиции рейтинга значится несоблюдение правил управления учетными записями и пользовательскими сессиями. Эта уязвимость связана, прежде всего, с отсутствием надежной защиты опознавательных мандатов пользователя и идентификаторов сессий, таких как файлы cookie. Это позволяет ][акерам перехватывать данные других пользователей и пользоваться системой от их имени.
На четвертой позиции находятся уязвимости, связанные с XSS ошибками, которые могут использоваться для получения доступа к кукисам (печенькам) пользователя или нападений против Web приложения.
Под пятым пунктом упоминаются ошибки переполнения буфера, имеющиеся во многих программных продуктах - от скриптов и драйверов до операционных систем и серверного ПО. Отсутствие проверки некоторых параметров может приводить к переполнению буфера, а ][акер при этом захватывает управление компьютером. Сообщения об обнаружении ошибок переполнения появляются чрезвычайно часто.
На шестой позиции находятся дыры, связанные с отсутствием надлежащего контроля за параметрами, передаваемыми компьютерами при доступе к внешним ресурсам. Если ][акер сумеет ввести в эти параметры свои команды, последствия могут быть самыми печальными.
Далее я хочу отметить уязвимости, связанные с неправильной реализацией обработки ошибок в программном обеспечении. В некоторых случаях при возникновении ошибок ][акер может получить информацию о системе или даже доступ к ней.
На восьмой позиции находится неудачное использование криптографии. Я хочу отметить, что часто инструменты для шифрования информации имеют собственные дыры, из-за чего применение сильной криптографии теряет всякий смысл.
На девятом месте находятся уязвимости, связанные с отсутствием надлежащей защиты подсистем удаленного администрирования. И хотя наличие Web интерфейса удобно, поскольку позволяет администратору управлять системой с любого подключенного к cети компьютера, при отсутствии надежной защиты то же самое может делать и ][акер.
Наконец, на десятом месте среди уязвимостей я хотел бы опубликовать неправильное конфигурирование серверного ПО, многие настройки которого серьезно влияют на безопасности системы.
Ну вот в принципе и все
Special for ProLogic.ws
Друзья: Всё для вебмастера | [ Реклама на форуме ] |
1
FAQ по эксплоитам
Автор
Denis---Player
, 28 Jan 2007 06:43
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных