PDA

Просмотр полной версии : Ифрейм - c чем его едят. Связки эксплоитов.



priv8v
19.08.2008, 20:48
Очень часто можно встретить пугающие высказывания о зараженных сайтах, о каких-то ифреймах и уж о совсем страшных "связках эксплоитов".

Рассмотрим и обсудим этот вопрос:


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

1). браузер заходит на страницу и его пробует "пробить" какой-то один эксплоит - т.е сделано так, что любого кто зайдет на страницу будет пробовать пробивать один и тот же эксплоит (обычно это какой-то свежи с милворма или еще откуда-нибудь) - это самый тупой пример. такая тупость - редкость. Но несмотря на тупость это сделать относительно сложно - это требует определенных знаний, как минимум немного пхп и яваскрипта. Установка связки эксплоитов (читайте ниже), как правило, не требуют специальных знаний (достаточно базовых).
2). на хосте лежит целая куча разных эксплоитов и при заходе браузером на определенную страницу браузер пытаются пробить сразу кучей эксплоитов одновременно/по очереди - это уже называется связкой эксплоитов - потому-что их несколько, связка эта неинтеллектуальная - т.к никаких зачатков интеллекта
тут не наблюдается - связка просто втупую пробует пробить браузер всеми эксплоитами, что есть у нее "в запасе".
3). ..и наконец - десерт - интеллектуальная связка эксплоитов. опишу наиболее частые их функции - обладают/поддерживают: развитой статистикой, отдельными скриптами для отстука для определения сколько пробито браузеров, базой данных MySQL, возможностью выдачи разных зловредных файлов в зависимости от страны/браузера (это к примеру), в зависимости от страны/браузера/версии браузера/ОС/рефереров(для того, что бы было понятно откуда идет "людской поток" на связку) - пытаются "пробить" браузер разными эксплоитами. Также этот "вид" связок богат и настройками - возможностью бана по IP, бана IP по маске и по странам, возможность "запоминания" посетителя - первый раз его связка пытается пробить (возможно успешно), а при повторном заходе игнорирует и выдает ему
пустую безобидную страницу.
Стоит отдельно упомянуть (отойдем немного от темы), что из браузера средствами php и/или яваскрипта можно "вытащить" относительно много информации, часть информации уже была мной упомянута выше - по ней ведется статистика и определение как пробивать браузер. О некоторых интересных вещах, которые можно узнать через браузер вы можете почитать здесь: :http:gemal.dk/browserspy/ (ссылкой поделился p2u), стоит также упомянуть, что раскрытие информации о плагинах и аддонах потенциально опасно - они могут атаковаться, что и происходит относительно часто.
Но вернемся к нашей теме:
Для того что бы эта вся прелесть заработала нужно зайти браузером на определенную страницу (чаще всего это index.php (хотя это не суть важно - имя можно поменять в настройках или в коде) - т.е на
страницу для которой и "служит" весь могучий функционал).
Качество связки определяется процентом пробива - 25% это уже очень хорошая связка. Также большое внимание уделяется тому вылетает браузер после пробива или продолжает работать (т.е заметит пользователь что-то или нет).
В виде дополнительных наворотов в таких связках может быть встроенный криптор ифрейма и выдачи в браузер - т.е ТО (зашифрованный ифрейм), что будет размещено на взломанном сайте; и сама страница будут закриптованы. Хотя эффективность этого с точки зрения "палимости" - сомнительна. Т.к 300 непонятных символов проще
будет детектить чем 20 символов незашифрованного ифрейма - шифровка служит только для введения в заблуждения админа сайта (если он плохо знает двиг сайта, то может новое и не заметить - увидит "абракадабру" и решит не трогать "от греха подальше").
...
Еще у связок может быть много функций, но они нам, думаю, не интересны - для понимания механизма пробива браузеров и заражения сайтов знания о этих функциях нам не нужны.


Теперь немного о методике заражения сайтов:

1). Сайты могут взламываться "руками" - т.е злоумышленник заходит на сайт и начинает искать уязвимости (активные хсс, мскл-инъекции и т.д и т.п)
2). Могут взламываться эксплоитами - т.е кто-то более умный взломал какой-то движок "руками" и написал скрипт, который автоматизирует его работу - т.е делает тоже самое, что и он, но все сам - требуется его только запустить и указать адрес сайта с таким-же движком и версией
3). Взлом посредством трояна - троян тащит пароли на админку из браузера или (что еще хуже) от FTP.
4). Взлом хостинга
5). Брутфорс (по-просту - брут) FTP (подбор паролей по словарю или простым перебором)
6). Брут доступа в админку
7). Основные способы уже рассмотрены и дальше изыскивать и вспоминать другие способы нерационально


А теперь самое главное:
Что же делается при взломе сайта?
Есть несколько вариантов (приведу некоторые):
1). Ничего не делается - злоумышленник выключает компьютер и идет спать
2). Администратор сайта оповещается о уязвимости
3). Администратору сообщается о взломе (в доказательство изменяют немного контент на пару символов) и с него пробуют вытрясти денег за подробную информацию о взломе (как взломали, как пофиксить и т.д). Т.е шантаж.
4). Делается дефейс (какая-либо надпись на главной (чаще всего) странице сайта или ее полная замена, при этом считается хорошим тоном не удалять главную страницу полностью, а переименовать ее, что бы было понятно, что это она и оставить на месте (в корне сайта))
5). Происходит заражение сайта с целью заражения заходящих на этот сайт пользователей.

Нас интересует в данный момент только пятый вариант, рассмотрим его:

На сайт внедряется ифрейм (он может быть зашифрован средствами яваскрипта, но он все равно остается ифреймом и выполняет свои функции) на index.php (допустим) связки эксплоитов - что за связка такая мы рассматривали выше. Т.е будет получаться, что пользователь зашедший на этот сайт одновременно еще зашел и на связку эксплоитов.
Поставка ифреймов на сайты - это в Интернете целый бизнес - именно поэтому в связках эксплоитов так развита статистика (по странам, по количеству посещений, по браузерам, высчитывание процентов пробива разных браузеров и т.д - см. выше). В этой сфере продается абсолютно все: сами связки эксплоитов, траффик (т.е кол-во посещений - не зря же там ведется учет посещений), продаются фтп-доступы к сайтам, цены при этом зависят от ТИЦа и ПР сайта (чаще всего так...).
Ифрейм чаще всего невидим - он является точкой - заданы нулевые параметры.
Зашифрованный ифрейм может занимать более 200 символов - при этом его очень просто добавить в базу антивируса и "палить" сигнатурно.


Пара слов о работе линк-чекера:
При этом работа линк чекера должна сводится не только к проверке страницы на наличие уже знакомого зашифрованного ифрейма (или незашифрованного), но и должна быть эвристика:

1). Обнаружение ифреймов (зашифрованных и нет)
2). Проверка куда ведет ифрейм - на внутренню страницу или на сторонний сайт (...и на какой именно, возможно создание базы "белых" сайтов - ифреймы часто используются при рекламе и в счетчиках посещений)
3). Попытка определения зловредости страницы на которую ведет ифрейм
4). Анализ где именно ифреймы стоят (если зашифрованный ифрейм, например, стоит после тега </html>, то это должно несомненно вызвать "бурный всплеск эмоций" у линк-чекера.
5). Автоматическая расшифровка ифреймов (расшифровка сложных ифреймов сложна, а примитивно зашифрованных (таких 90%) соответственно... - достаточно "познакомить" с несколькими командами, такими как eval, unescape и др.
6). Проверка сайта который в ифрейме открывается (если несколько последовательно ифреймов - проверка всех вложенных и докапывание до связки), и попытка найти по конечному сайту зловредные файлы по именам (они вшиты в связку и редко меняются), и т.д и т.п.

Функционал эвристики можно, в принципе, улучшать до бесконечности...


PS: На полный обзор не претендую - описал лишь наиболее распространенные случаи заражения сайтов и механизм пробива/заражения

zerocorporated
19.08.2008, 21:48
Нас интересует в данный момент только четвертый вариант, рассмотрим его:


Вы наверное ошиблись - там по идее пятый должен быть...

DVi
19.08.2008, 22:44
300 непонятных символов проще
будет детектить чем 20 символов незашифрованного ифрейма - шифровка служит только для введения в заблуждения админа сайта.
...
Зашифрованный ифрейм может занимать более 200 символов - при этом его очень просто добавить в базу антивируса и "палить" сигнатурно.

Это спорное утверждение. Потому что:
1. Смысл шифровки скрипта точно такой же, как у бинарных пакеров - ввести в заблуждение как исследователей, так и антивирус.
2. Автоматическое детектирование "непонятностей" - задача гораздо более сложная, нежели детектирование "понятностей".
3. Детектирование пакера чревато фолсами, т.к. для пакуют не только зловредные скрипты, но и вполне легитимные (легитимные - для того, чтобы сохранить интеллектуальную собственность, не дать скопировать скрипт с сайта).



Пара слов о работе линк-чекера:
При этом работа линк чекера должна сводится не только к проверке страницы на наличие уже знакомого зашифрованного ифрейма (или незашифрованного), но и должна быть эвристика:

Вдруг, откуда ни возьмись, начинается объяснение работы "линк-чеккера", о котором читатель ничего не знает
Если Вы хотите рассказать о линк-чеккере, начните с объяснения, что это такое и почему Вам захотелось о нем рассказать.




1). Обнаружение ифреймов (зашифрованных и нет)
2). Проверка куда ведет ифрейм - на внутренню страницу или на сторонний сайт (...и на какой именно, возможно создание базы "белых" сайтов - ифреймы часто используются при рекламе и в счетчиках посещений)
3). Попытка определения зловредости страницы на которую ведет ифрейм
4). Анализ где именно ифреймы стоят (если зашифрованный ифрейм, например, стоит после тега </html>, то это должно несомненно вызвать "бурный всплеск эмоций" у линк-чекера.
5). Автоматическая расшифровка ифреймов (расшифровка сложных ифреймов сложна, а примитивно зашифрованных (таких 90%) соответственно... - достаточно "познакомить" с несколькими командами, такими как eval, unescape и др.
6). Проверка сайта который в ифрейме открывается (если несколько последовательно ифреймов - проверка всех вложенных и докапывание до связки), и попытка найти по конечному сайту зловредные файлы по именам (они вшиты в связку и редко меняются), и т.д и т.п.
Все перечисленные пункты, на мой взгляд, отлично выполняются самим браузером и его внутренней скрипт-машиной. А антивирусу нужно лишь встроиться (а) между браузером и сервером и (б) между браузером и скрипт-машиной и проверять все пролетающие через него файлы.

Добавлено через 2 минуты

В остальном статья хорошая. Чувствуется, что автор понимает, о чем пишет.

priv8v
20.08.2008, 09:46
1. Смысл шифровки скрипта точно такой же, как у бинарных пакеров - ввести в заблуждение как исследователей, так и антивирус.

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


2. Автоматическое детектирование "непонятностей" - задача гораздо более сложная, нежели детектирование "понятностей".
...одно время я активно "сотрудничал" с ньювирус()касперску.ком - посылал им туда все что только можно и пробовал с ними еще и болтать по делу:D
по опыту: зашифрованный ифрейм они скорее заносят в базу чем незашифрованный.


3. Детектирование пакера чревато фолсами, т.к. для пакуют не только зловредные скрипты, но и вполне легитимные (легитимные - для того, чтобы сохранить интеллектуальную собственность, не дать скопировать скрипт с сайта).
мне всегда нравилась ЛК с точки зрения того, что они "играют честно" - т.е не детектят пакеры/крипторы (чаще всего) :)

...поэтому в базу антивиря добавляется зашифрованный ифрейм в таком виде в каком он есть - т.е без попытки отловки похожих на него ифреймов - т.е детектится будет только он, а достаточно убрать пару символов из середины и он палится перестанет - такой способ избавляет от фолсов и достаточно эффективен.
когда подобные заражения сайтов бизнес - один и тот же зашифрованный ифрейм (знак в знак - т.е ТОЧНО такой-же) стоит еще сайтах эдак на 100 - поэтому добавление этого ифрейма в базы Каспера спасет очень многих юзеров.



Если Вы хотите рассказать о линк-чеккере, начните с объяснения, что это такое и почему Вам захотелось о нем рассказать.
у меня небогатый опыт написания статей:(



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

ananas
10.09.2008, 03:07
антивирусу нужно лишь встроиться (а) между браузером и сервером и (б) между браузером и скрипт-машиной и проверять все пролетающие через него файлыА можно антивирусу встроиться (в) между клиентом и сервером на, к примеру, шлюзе провайдера инет-услуг?

DVi
10.09.2008, 11:37
Не только можно, но и нужно.
Большинство производителей антивирусов предлагает подобные решения.

NitroM$I
27.01.2009, 20:37
респект за статью давно искал!