Easy-HackЗадача: определить версию http-сервераРешениеВ недавнем номере ][ была хорошая статья, в которой описана тема сокрытия/изменения баннеров для различных сервисов, будь то FTP- или HTTP-сервер. Но, чтобы ты был всесторонне вооружен, поведаю тебе о более продвинутых методах детекта ПО. В этом номере о HTTP-серверах. Конечно, строчка «Server» в заголовке — это хорошо. Но на нее слишком легко повлиять. Что же у нас есть еще? Достаточно многое. Суть в том, что разные веб-серверы по-разному поступают в различных ситуациях. То есть мы посылаем различные запросы серверам, а они по-разному отвечают. В основном это связано с неопределенностями RFC и/или отклонением от них. Поэтому можно составить определенные отпечатки (fingerprint) каждого HTTP-сервера, иногда до конкретной версии. Есть и пассивные методы, и активные. Активные — более точные, но требуют посыла (не)стандартных запросов, которые можно обнаружить. Вот некоторые способы фингерпринта:
То есть, на первый взгляд, способов очень много. Таким образом, мы можем достаточно точно выделить отпечаток каждого веб-сервера. Общая идея, я думаю, понятна. На практике же есть множество тулзов. Например, httprint под win/nix и входящий в BT 4 (net-square.com/httprint/), опенсорсный httprecon под win (computec.ch/projekte/httprecon/. Поговаривают, что одна из лучших :). Обе приложены на диске. Разница между ними, в основном, в количестве и качестве используемых тестов и логике, по которой они определяют важность «прохождения» веб-сервером какого-то теста. Ведь понятно, что точность определения версии сервера по отпечаткам имеет вероятностный характер и во многом основывается на методе выставления оценок за прохождение каждого из тестов, проводимых программой. Кстати, даже с учетом глубокого изменения каких-то характеристик вебсервера, определить версию можно. Например, есть net-square.com/httprint/httprint_paper.html для модуля ServerMask к IIS. Есть также и онлайн-фингерпринтер веб-серверов (и не только) — это www.netcraft.com. Дальнейшие примеры приводить не буду — проги слишком просты. Но для более четкого понимания (лучше один раз потрогать, чем 100 раз увидеть :)) советую поиграться с любой из этих программ и какимнибудь сниффером. Серверы можно найти на shodanhq.com. Теорию на простых примерах можно почерпнуть тут — ujeni.murkyroc.com/hmap/. База ответов на различные запросы — computec.ch/projekte/httprecon/?s=database. Следует также упомянуть, что HTTP-фингерпринт очень нежелательно проводить через HTTP-прокси, так как последний может сильно изменить ответ от сервера. Задача: определить использование php и его версию на удаленном сервереРешениеЗадача нетрудная, но в некоторых случаях бывает необходима. К примеру, когда на серверах часто юзают mod_rewrite (если не в теме — очень лаконично описано на Википедии в статье «ЧПУ_Интернет»). Зачем версия? К примеру, сам PHP имеет внутренние уязвимости, которыми можно воспользоваться. В этом можно убедиться, порыскав на exploit-db.com. Можно посмотреть заголовок от веб-сервера, где наряду с его баннером может быть и инфа о PHP. Но есть другой забавный способ. А именно — «пасхальные яйца» от создателей PHP. Причем они применимы к любым PHP-скриптам, даже с ошибками в стиле Fatal Error. Пишем любой из пунктов к любому скрипту:
Первый — забавная картинка, второй — лого PHP, потом лого ZEND, список авторов, лого от Suhosin (добавка к PHP). Причем отображение первого пункта сильно меняется в зависимости от версии PHP. Соответствие и описание «почему оно так» можно найти на www.0php.com/php_easter_egg.php. Жаль, что отключается эта фича тем же, чем и добавление в ответ сервера заголовка о PHP, а именно — установкой «expose_php=off» в php.ini. Задача: подсунуть жертве свой сплойт, используя фильтры ETTERCAPРешениеПродолжу тему атак обычных юзеров. Ситуация та же — «доступен» только браузер пользователя, а нам требуется «заставить» перейти его на нашу страницу с эксплойтом. Представим, что мы находимся с ним в одной подсети, так как нам снова понадобится возможность доступа к трафику. Но на сей раз воспользуемся такой хорошей вещью как «Ettercap NG». Что приятно — есть и GUI’шный интерфейс, и консольная версия. Последняя версия — 0.7.3. На сайте ettercap.sourceforge.net есть исходники как под разные виды nix’ов, так и под винду. В общем, это сниффер, наделенный важными и нужными для нас возможностями. В их число входят:
К тому же, Ettercap расширяет свой функционал за счет всевозможных плагинов. Но для данной задачи нам потребуются его возможности по поиску и модификации данных TCP/IP-пакетов на «живом» трафике. Общая идея такова: во-первых, получаем доступ к трафику; во-вторых, устанавливаем фильтр для Ettercap’а на модификацию HTTP-ответов от серверов, куда жертва заходит. Модификация будет заключаться в добавлении либо сплойта, либо ссылки на сплойт. Для точности буду рассказывать о консольной версии Ettercap, входящей в BackTrack 4. Приступим. Создаем текстовый файлик «http_filter.txt» и пишем в него следующий код — фильтр на HTTP-трафик.
Для создания фильтров к Ettercap существует примитивный «язык», которым мы и воспользовались. Здесь мы создали два «правила». Первое применяется к пакетам, отправленным на 80 порт по протоколу TCP. Обычно это запросы браузера на открытие той или иной страницы веб-серверу. В них ищем строчку «Accept-Encoding» (поле стандартного HTTP-заголовка, посылаемого браузером) и меняем ее на любой другой текст того же размера (это важно). Требуется это, потому что обычно в «Accept-Encoding» указывается, что ответы от веб-сервера можно сжимать. Но по сжатым данным мы не сможем провести необходимое нам изменение HTML-страниц. Поэтому мы меняем это поле на что-нибудь другое. Сервер же при разборе пропустит это кривое поле и ответит нам в несжатом виде. Второе правило применяется уже к принимаемым данным. Ситуация похожая. Делаем выборку пакетов от веб-сервера (протокол TCP, исходящий порт — 80). И меняем строчки «</body>», «</html >» на либо яваскриптовский, либо рисунок-сплойт, не суть важно. Почему именно эти теги будем менять? У них есть один плюс — они присутствуют почти на всех HTML-страничках в единичном числе, что повысит шансы на успешную эксплуатацию уязвимости при малом количестве запросов к нашему серваку. Но все зависит от ситуации, браузера жертвы и т.д. Еще пара моментов: функция «replace» регистрозависима, то есть можно повторить искомые строчки в разных регистрах, а функция «msg» выводит нам сообщения в логах, чтобы мы знали, когда правило задействовалось.
Где http_filter.txt — наш файл с фильтром, а в «-o http_filter.ef» указываем имя будущего Еttercap-фильтра (необязательная опция). Далее запускаем сам Ettercap.
Где опция «-T» указывает на то, что мы запускаем текстовую версию Ettercap; «-F http_filter.ef» — подключаем полученный от Etterfilter фильтр; «-M ARP /192.168.0.1/» — указываем Ettercap, что требуется запустить MitM атаку, а именно — arp-спуфинг (в Ettercap входит еще несколько классических атак). 192.168.0.1– IP шлюза. Кроме встроенности, бонусы использования встроенного arp-спуффинга еще и в том, что после своей работы сниффер восстанавливает ARP таблицы, посылая правильные значения, к тому же не надо заморачиваться с редиректами. В итоге Ettercap будет фильтровать трафик от нашей жертвы, добавляя в конец каждой HTML’ки наш сплойт. Как понимаешь, Ettercap — тулза крутая. Особенно с возможностями фильтров, а они широки. Это и изменение, декодирование пакетов, и использование регекспов, и запуск команд... Основную инфу можно почерпнуть из man’ов и прилагаемых к Ettercap’у примеров. Кстати, если будешь разбираться с этой тулзой, то помни, что она не сниффит трафик, посылаемый машиной, на которой она установлена. Задача: облегчить сбор информацииРешениеВ своих околохакерских или житейских делах мы часто сталкиваемся с необходимостью поиска информации. Будь то сбор информации о каком-то сервере или поиски какого-то эксплойта (или поиски любви :)). Я уверен, что каждый из нас имеет кучку закладок к основным ресурсам для этого. Также есть всевозможные плагины для ускорения этого дела. Но в обоих случаях ты привязываешься к определенному компьютеру/ софту (особенно когда пользуешься разными браузерами). Есть, конечно, решения этой трудности, но... Хочу поделиться находкой, которая чрезвычайно порадовала меня — сервис на http://yehg.net/q. По сути, это агрегатор кучи всевозможных поисковых (и не только) систем. Ввел что-то в строку поиска и снизу увидел выборку с гугла, один клик — и уже с вики. Но это не было бы настолько интересно, если бы не две вещи. Во-первых, yehg — это хакерская группа, потому и сервис заточен под задачи, связанные с информационной безопасностью. Поэтому тут и поисковики по сплойтам, уязвимостям, и всяческие whois’ы да портсканеры, кодеры/декодеры и т.д. Кстати, очень советую просмотреть весь набор сайтов. Подборка действительно хороша, на все случаи жизни, как говорится. Можно что-то для себя выделить, запомнить. Второй же плюс заключается в том, что это — общедоступный «веб-агрегатор» поисковиков (gosu.pl/wsa/). Он очень простой, так как использует только JavaScript и фреймы. То есть может работать даже локально и не привязан к браузеру. Поэтому его можно быстро и легко настроить под себя. Для того, чтобы добавить какой-то поисковик, требуется всего лишь вставить строчку в HTML’ку агрегатора. Например, добавим поиск по сайту журнала. Ищем и добавляем:
Где %s — место, куда будет вставляться та строка, которую ты ищешь. В итоге в категории «General» у нас появится пункт «xakep». Все просто. Причем можно ввести дополнительный текст или параметры к запросу. Как это сделано, например, в поиске сплойтов по гуглу, где добавляется к введенному запросу «(vulnerability or vulnerabilities) OR (exploits or security holes)», и в итоге нам надо вводить только название ПО. Версия агрегатора, используемая YEHG, явно более продвинутая, чем от разработчика. Там есть и многострочное окошко для запроса, и возможность редактирования итогового запроса. К тому же по основным сайтам поиск уже организован. Хотя она и с «мусором» (реферы на группу), удалить его не составит труда. В общем, на диске приложена именно она. Задача: украсть логин, пароль посредством xss и кейлоггераРешениеXSS бывают разные: активные, пассивные. Первые, конечно, более опасны, так как остаются на серваке, но и со вторыми можно кое-что сваять. Что очень хорошо для нас — XSS-уязвимости чрезвычайно распространены. Это связано и со сложностями защиты от них, но что важнее — с общим отношением к ним, даже у специалистов в области ИБ. Ведь многие не считают XSS за юзабельную уязвимость! Давай посмотрим. Как насчет кейлоггера через XSS? Примитивный кейлоггер состоит из двух компонентов: самого JavaScript’а, отвечающего за перехват нажатий и отправку данных о них, ну и сервера, который будет принимать и сохранять данные. Потому нам требуется левый (можно бесплатный) сервак с поддержкой, например, PHP. JavaScript (код с insanesecurity.info): Логика такова: скрипт перехватывает нажатия клавиш и сохраняет их в переменную, а через определенные промежутки времени коннектится к нашему PHP-скрипту, передавая полученную переменную в запросе. Далее заливаем на сервер PHP-скрипт:
В зависимости от ситуации, пихаем либо сам код, либо ссылку на него через XSS на сервер или пользователю. Теперь все нажатия клавиш пользователя на странице с нашим яваскриптом будут сохранены на нашем сервере. Но это был скорее показательный пример. Качественный яваскрипт-кейлоггер ты можешь взять с sourceforge.net/projects/jskeylogger/ (либо на диске). Версия 1.4. Суть здесь та же — скрипт и сервер. Но реализация гораздо лучше: при сохранении лога отмечается поле, в которое вводились данные и уникальный ID ввода данных, так что с парсингом нет вообще никаких проблем. Несколько странно, что сервер здесь реализован в виде exe’шника на питоне. Но перенос на PHP, например, проблем вызвать не должен. В архиве также прилагается пара примеров, все очень показательно. Один существенный минус данного логгера — нет поддержки русского языка. Но ее, я думаю, нетрудно будет прикрутить. Использование кейлоггера не всегда возможно и не всегда оправдано. Но в определенных случаях мы можем получить большие бонусы, чем, например, от классической кражи кукисов, так как данные мы получаем неизмененные, незашифрованные. Так что стоить помнить о такой штуке. |