Блог
Главная » 2012 Январь 31 » Батники против эксплойтов21:27 Батники против эксплойтов |
Батники против эксплойтов
Доброго времени суток, многоуважаемый %USERNAME%. Меня зовут Голованов
Сергей, и я всё еще являюсь ведущим вирусным аналитиком в «Лаборатории
Касперского». Я понимаю, что название этого поста в корпоративном блоге
компании может вызвать смех, грусть, а у некоторых даже эпилептический
припадок, но дайте мне всё объяснить.
Я понимаю, что для всех батники выглядят как нечто очень простое и со времен AUTOEXEC.BAT уже практически забытое, в то же время эксплойты, если вы конечно не профессиональный исследователь уязвимостей, выглядят очень сложно и практически неправдоподобно, особенно для некоторых разработчиков. Но! В данном посте я постараюсь перевернуть эти представления и рассказать, что всё как будто наоборот. Батники чуть легче и сильнее по функционалу brainfuck'а, а эксплойты не страшнее сортировки пузырьком на basic'е. ![]() (Осторожно! 3 МБ иллюстрированного потока сознания и куча скриптов) Как я до этого дошел?Мне тут на глаза попалась коробка с Windows 7 x64 c минимальными системными требованиями в 2 ГБ оперативной памяти! И я тут подумал, неужели во всех этих гигабайтах не найдётся пары килобайт кода, которые могли бы защитить пользователей от такой напасти, как эксплойты и Drive-by? Это бич всех ОС от MS уже лет пять! Должны быть там средства для хоть какой-то защиты? Но как их заюзать, да еще и стандартными средствами? С помощью батников. А как? Чтобы это понять, нужно прочитать эту простыню до конца. 8) ТеорияВ упрощенной теории срабатывания эксплойтов всё выглядит так: «что-то где-то посмотрели, что-то где-то послали, что-то где-то запустилось». В реальной жизни это часто выглядит так: пользователь, гуляя по интернетам, попадает на честно взломанный сайт, где ему вместе с полезной информацией отдают или JavaScript или редирект на JavaScript, который, анализируя USER-AGENT, информацию о плагинах и т.д. выдаёт пользователю эксплойт, который точно у пользователя сработает. После этого на машину пользователя сгружается троянец, запускается, прописывается в системе и начинает делать свои грязные дела. ![]() Завалявшаяся картинка от Google Anti-Malware Team о Drive-By для визуалов, читающих на языке вероятного противника (-СГ. Юля, подправь, пожалуйста, по смыслу следующее предложение, чтобы было понятно, и удали этот комментарий. -Редактор. По смыслу??? Да я после «выделяет себе память» уже ничего не понимаю. Сам подправь и удали этот комментарий.) Если копнуть чуть глубже, то оказывается, что в таких эксплойт-паках часто (практически всегда) полезная нагрузка выделяет себе память в процессе жертвы, ищет нужные системные функции, сохраняет файл из интернета на локаль и делает CreateProcess или очень редко — ShellExecute, при этом проблемы повышения привилегий перекладываются на то, что скачали. Всё в принципе просто и понятно. И чего с этим делать? Хватать Стандартные средстваВ Windows 7 есть несколько способов ограничить или расширить работу программ. Самыми популярными средствами, пожалуй, являются ACL и всяческие политики. ![]() Наглядная схема SRP (Software Restriction Policies) от Microsoft В принципе, ни для кого не секрет, что можно создать специальную учетную запись пользователя, назначить ему специальные права в системе и гонять под ним потенциально уязвимые приложения. Пять минут руления мышкой — и всё готово. Проблема в том, что редкий пользователь будет этим заниматься, особенно, если это потребуется сделать админам на всех машинах в сети. Поэтому давайте-ка попробуем сделать батник, в котором сделаем примерно то же самое, только лучше, да еще так, чтобы пользоваться этим было удобно. БатникИтого: наш батник должен создать пользователя со стандартными правами, затем модифицировать эти права для запуска только определённого ПО и, наконец, сделать это прозрачно и удобно для пользователя. Начнем-с… 1. Создать пользователя. Халява.net user saferun_user Passw0rd /add Имя пользователя и пароль здесь указаны только для примера, их надо будет обязательно разбавить %random%’ами, чтобы не оказалась, что у нас у всех пользователей батника одинаковые имена пользователей и пароли на машинах. А то получится этакий Backdoor.Bat.Hren.a, его еще детектировать придется…))) 2. Модифицировать права. Э… а вот тут уже есть проблемыПо-хорошему назначать права на исполнение нужно AppLocker'ом с помощью PowerShell’a, например так: PS C:\> Get-ApplockerFileInformation -Directory 'C:\Program
Files (x86)\Adobe\' -Recurse -FileType Exe | New-ApplockerPolicy
-RuleType Publisher -User SafeRun_user -RuleNamePrefix Adobe -Optimize
-Xml > Adoby.xml Однако, вся эта хитрая хрень «is only available in Ultimate and Enterprise versions of Windows 7». Поэтому как альтернативу в Home версии Windows 7 можно использовать Parental Control (ссылка на форум — я не шучу), который хранит информацию о том, какие программы можно запускать в: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Parental
Controls\Users\UID\App Restrictions Значит, политики в топку, ибо неудобно, будем использовать ACL, тем более что, начиная с Vista’ы, появилась замечательная команда ICACLS. В принципе всё, что написано дальше, может быть спроецировано и на XP c помощью XCACLS, но по умолчанию такой команды в XP нет, и входит она только в пакет Resource Kit. Итого, в Windows 7 cначала вынесем пользователя из группы по умолчанию, чтобы ограничить его возможности благодаря групповым разрешениям создавать файлы где попало: net localgroup users saferun_user /delete А теперь скажем, что, дорогой пользователь, icacls %USERPROFILE% /deny saferun_user:(OI)(IO)(WDAC,WO,X) (-Редактор. Ты бы еще здесь попросил меня чего-нибудь проверить и подправить. Комментарии не забудь убить.) Параметры «(OI)(IO)» как бы говорят нам, что все файлы, находящиеся в указанной папке, наследуют права родителя, которые, собственно, Deny Execute. Проверяем, что выставленные права работают: C:\Users\Golovanov>runas /user: saferun_user cmd.exe Итого: Notepad.exe из папки Windows работает, а если его скопировать в папку TEMP и запустить, то ACCESS IS DENIED. Всё ОК. Идём дальше. 3. Удобство использованияДля удобства использования нам нужно обеспечить поддержку прозрачного запуска для максимального количества разнообразных браузеров под новым пользователем. Делать это предлагаю так: 1. Скопировать профайл браузера текущего пользователя к новому пользователю. Например, для Firefox’а так: xcopy /E /I /C /Y /Q /H /R %APPDATA%\Mozilla\*
C:\Users\saferun_user\AppData\Roaming\Mozilla\ 2. Создать в папке с браузером VBS файл, в котором прописать запуск Runas браузера. Делать это нужно через VBS, чтобы обойти ограничение по приёму пароля в STDIN к Runas’у. Прекрасный Microsoft сделал это, чтобы повысить защищенность своей ОС. Как обычно, защищенность осталась под вопросом, а геморроя прибавилось. VBS файл при этом будет выглядеть, например, так: Option explicit Маленький комментарий. В интернетах пишут, что Sendkeys в некоторых версиях отсутствует или запрещен, однако у меня на Windows 7 Professional, Ultimate и Home всё работает. Продолжаем. 3. Создать ярлык на новосозданный VBS файл c иконкой браузера. Set oWS = WScript.CreateObject("WScript.Shell") 4. Заменить новым ярлыком все уже имеющиеся у пользователя ярлыки на браузеры. Шутка. Положим ярлыки в отдельную папку на рабочем столе, а там пользователь пусть сам решает. Листинг батникаИтого вроде всё ОК, осталось это всё причесать и оттестить.
ТестированиеНу-с, а теперь попробуем, как это всё работает в дикой природе: 1. Выключаем антивирус и даунгрейдим, например, JAVA (чета мне сразу не по себе стало). 2. Копипастим батник из листинга. 3. Сохраняем его как saferun.bat, делаем глубокий вдох и кликаем на него два раза. 4. Мигают консоли и открывается окно эксплорера. Смотрим на окно с ярлыками и много думаем. 5. Выбираем любой браузер. Идём на Youtube, проверяем, что всё работает, кликается и т.д. 6. Теперь идём на Google и ищем «Самый популярный браузер рунета» (это мне сестра показывала, как скачать порно-блокер бесплатно). Кликаем на несколько ссылок, и наш компьютер начинает подозрительно трещать. Ждём минуту. Вроде ничего страшного не произошло. Смотрим в Process Explorer и видим, что наш браузер запустил JAVA.exe, который успешно унаследовал нашего нового пользователя. ![]() 7. Теперь идём во временную директорию нового пользователя и видим там следующее… ![]() 8. Проверяем права на файл «____991.exe» ![]() 9. Отрываем cmd.exe под созданным пользователем. Пароль для него можно посмотреть, например, в VBS скрипте рядом с EXE’шником браузера ![]() 10. Делаем cd %temp% в новой консольке и пишем «.\____991.exe». Жмём Enter! ![]() 11. УРА-УРА!!! Это победа. ![]() 12. Кому интересны подробности, то
Если бы этот файл запустился, то мы бы увидели веселые картинки и просьбу поработать с платёжным терминалом. Вместо заключения![]() Итого наш батник будет очень полезен для защиты от Drive-by атак и эксплойтов при работе с Windows 7 как из-под админа, так и под простым пользователем. Да, у него есть теоретическое ограничение на полезные нагрузки с повышением привилегий, но такое в дикой природе благо редко встречается. Плюсы при работе с батником — его можно очень быстро править и добавлять в него поддержку новых программ, таких как почтовые клиенты, офисные программы и т.д. Настройка, гибкость, клёвость и крутость очень важны, и мы в ЛК это прекрасно понимаем. Спасибо большое, что дочитали этот поток сознания автора до конца и еще ни разу не нажали на минус. 8) Удачи! ПС. Данный батник не имеет никакого отношения к SafeBrowser’у, входящему в продукты ЛК. ППС. Батник создаёт очень удобный Uninstall — на случай если что-то вдруг пошло не так. ПППС. Как обычно в комментариях тусуется доброжелательный пользователь k1k, который выдаёт себя за автора статьи. Так оно и есть. Спасибо! http://habrahabr.ru/company/kaspersky/blog/137304/ |
|
Всего комментариев: 0 | |