Хакер №024. Спецвыпуск
BACKSTEALTH
удар в спину
Спецвыпуск Xakep, номер #024, стр. 024-030-2
Ну что ж. Запускаем MSDN и смотрим, что это за функция и где она живет. Видим, данная функция позволяет работать с памятью, уже занятой другим процессом. В отличие от VirtualAlloc, которая управляет памятью, еще никому не выделенной или выделенной своему процессу. Создатель "случайно" перепутал функции?
LPVOID VirtualAllocEx(
HANDLE hProcess, // дескриптор процесса;
LPVOID lpAddress, // начальный адрес выделяемой памяти;
SIZE_T dwSize, // размер выделяемой памяти;
DWORD flAllocationType, // вид выделения памяти;
DWORD flProtect // вид защиты при работе с данной памятью.
);
Обрати внимание на последний формальный параметр функции. Он может принимать несколько значений, позволяющих либо полностью защитить выделенную память от чтения/записи, либо сделать это частично. Видимо, разработчики файрволлов не обратили на flProtect особого внимания и использовали память, не защищая ее от вторжения. Теперь же попытка обращения к защищенной памяти приводит к ошибкам или исключениям.
Также интересным является тот факт, что функцию VirtualAllocEx не поддерживают Win95/98/ME, хотя VirtualAlloc поддерживается всеми ОС.
Теперь становится почти прозрачным алгоритм работы BS:
1. Сканируем память и ищем запущенные файрволлы.
2. Внедряемся в их память (благо дома можно с помощью отладчика подобрать все размеры памяти либо адреса дескрипторов или сами дескрипторы файрвольных процессов).
3. Записываем свой небольшой кусочек кода, скачивающий наш файл. Можно либо поместить его в оставшееся свободное место в памяти (ты же помнишь, что память выравнивается по параграфам для ускорения обращения к ней), либо на занятое место процесса так, чтобы ОС не зависла.
Примечательно, что представитель компании Symantec заявил, что их пользователям данная программа не страшна, так ее еще на момент запуска отловит Norton Antivirus. В принципе, это самый верный подход, ведь фаерволл не может защитить сам себя от внутреннего вмешательства. Хотя эту дыру уже залатали (мы проверили работоспособность проги на САМЫХ последних версиях файрволлов - BS везде проваливается с треском), можно найти и новые. А вот антивирус здесь в самый раз. Если софтина ищет что-то в памяти и начинает прыгать по чужим процессам - значит она вирус или, в крайнем случае, просто подлежит уничтожению.
Другие компании отреагировали проще: втихую поменяли какие-то свои параметры и выпустили новые версии своих продуктов.
Обрати внимание, что всеми любимые ZoneAlarm Pro и Agnitum Outpost оказались на высоте - у них врожденный иммунитет к этой программе. Видимо, у автора просто не дошли руки до них...
Что касается BS, то тут можно согласиться с BugTraq, который на странице, посвященной творению Паоло, написал просто: "Дискуссия закрыта".
Мы же возвращаемся к нашим баранам: чтобы обойти файрволл, нужно найти в нем дырку, заслать свою прогу-эксплоит и придумать легенду, чтобы ее запустили. Самым сложным моментом является поиск дырок. Не все способны кодить в ring 0 или на низком осевом уровне, но посещать сетевые проекты, посвященные безопасности, может каждый. Опыт показывает, что 75% пользователей и сисадминов не реагируют на новые сообщения о дырках и ошибках. Поэтому единственное, что тебе нужно, - отыскать дыру среди вновь найденных и правильно ею воспользоваться. Вывод прост - чаще посещай www.xakep.ru, а конкретно - его раздел BugTraq, и не забывай поглядывать на www.securityfocus.com (там иногда тоже полезное лежит).
Назад на стр. 024-030-1 Содержание