Современный троянский конь: история одного расследования

- КиТ :: Будь в СЕТИ!

Всем привет! Сегодня я расскажу вам об одном троянском коне, забредшем в огород моего очень хорошего знакомого, о том, как я выгонял незваного гостя, о том, что у него внутри и какие уроки из всего этого я вынес. Если вам интересно — добро пожаловать под кат! Часть первая: начало Началось всё недели три назад тёплым весенним днём, когда ко мне позвонил мой очень хороший знакомый и рассказал вот такую историю: несколько минут назад он получил на email письмо от компании Admitad, с которой у него деловые отношения

Письмо было вот такого содержания: Отправителем значился Admitad Support. Ну и, естественно, к письму был приаттачен RAR-архив с XLS-файлом внутри.

Архив он, конечно же, распаковал, XLS-файл запустил и (та-даааа!) разрешил запуск макросов, потому что Excel вместо ожидаемой таблицы отображал пространное толкование про какие-то макросы (чёрт его знает — что это такое, да и слово какое-то дурацкое). Ну и после того, как он увидел какой-то счёт на оплату за просмотр видеоролика, наступило наконец-то прозрение, что его жестоко обманули. Он понял, что только что подхватил какую-то инфекцию и попросил меня глянуть компьютер — чтобы избавиться от неё.

Я выслушал историю, пожурил его немного, посочувствовал ему и попросил запустить Тимвьювер — потому как ехать через весь город было несколько лениво.

Часть вторая: первичное обследование

Подключившись к компьютеру через Тимвьювер, я начал обследование.

Первым делом аттач был отправлен на Virustotal: результат 0/56. Свежак — подумал я.

Затем я начал искать на диске свежие файлы. Таковые нашлись в папке temp: там среди прочего барахла лежало два запускаемых файла: run.exe и stream.js.

Беглый осмотр пациента дал понять, что это просто загрузчик, который грузит файл httр://s2.zalivalka.ru/download/344314/231.jpg, переименовывает его в run.exe и запускает. Здесь в URL я специально заменил в аббревиатуре http латинскую 'p' на русскую 'р' — чтобы URL не превратился в линк. На run.exe Virustotal также скромно не отреагировал.

Ладно — подумал я — и продолжил поиск свежих файлов в компьютере. Скоро обнаружилась папка "%appdata%\MicrocoftUpdate\" с кучкой файлов внутри. Да, да, именно так — Microcoft — через 'c'. Уж не знаю — специально была сделана эта ошибка или нет, но она значительно облегчила дальнейший поиск изменений, внесённых в реестр. В этой папке exe-шник был всего один: ctfmon.exe. Если кто подзабыл, то напомню, что так когда-то назывался переключатель раскладки клавиатуры в ОС Windows XP.

Для начала я решил переименовать эту папку — чтобы вирус, которого я ещё не обнаружил, не смог пользоваться файлами из неё. Однако попытка переименовать папку закончилась неудачей. А не cftmon.exe ли из неё запущен и не даёт мне этого сделать? — подумал я. Открыл диспетчер задач — ну так и есть — вот он, родимый. Терминировал его и папка после этого переименовалась.

Затем я отправил ctfmon.exe на Virustotal. Результат был не очень страшный — что-то около 5/56, причём эти пятеро говорили о том, что это не вирус, а так-называемое RiskWare — легальное программное обеспечение, используемое для удалённого управления компьютером. Тогда я вернулся в папку temp и в этот момент понял, что совершил серьёзную ошибку: папка была пуста. Параллельно со мной в компьютере покопался некто, собрал всё, что ему было нужно, аккуратно прибрался за собой и ушёл.

Чёрт, чёрт, чёрт! Моя лень дала недругу возможность сделать своё чёрное дело. Я набрал телефон знакомого, попросил его выключить компьютер, взял ноутбук и поехал к нему домой.

Часть третья: препарирование коня

Для проведения вивисекции на ноутбук была установлена виртуальная машина, на которую были поставлены Windows 7, Microsoft Office, Process Monitor и WireShark. Запустив вирус, я немного подождал — когда он закончит все свои дела и запустит ctfmon.exe, после чего терминировал ctfmon и приступил к изучению собранных логов.

Из лога Process Monitor-а скоро стало понятно, что run.exe — это самораспаковывающийся архив. Для проверки я открыл его как архив: ну так и есть — внутри два файла: t10.bat и poi.exe. Вытащив из архива t10.bat я решил его поизучать: но не тут-то было! Такого видеть мне ещё не приходилось.

Походило на какую-то шифровку от Алекса Юстасу. Пришлось разбираться.

Первой строкой шло:

Ясно, что в тексте все строки '%iDVrlM%' нужно заменить на 'set'. Сказано — сделано:

Теперь вторая строка стала выглядеть по-человечески. После знака равно в ней стоит пробел (здесь на коде этого не видно). Понятно, что теперь нужно заменить все строки '%pGJV%' на пробел:

Идём дальше. Третья строка говорит нам о том, что нужно заменить все строки '%lVOMlhijX%' на знак равенства:

Ну вот, теперь открылся весь алфавит замены. Потратив ещё минут 15, с помощью текстового и HEX-редакторов я заменил все %строки% на соответствующие им символы и в результате получился вот такой bat-файл:

Суть bat-файла оказалась весьма незамысловатой: при помощи пинга google.com проверяется наличие связи с Интернетом. Если связи нет — poi.exe удаляется вместе с самим bat-файлом и на этом всё заканчивается. Если же связь есть, то сначала терминируется процесс ctfmon.exe, потом запускается poi.exe с параметрами «verysilent» и «Password=345465122345» и потом самоуничтожается bat-файл.

Мне так и осталось неясным два момента — что предполагалось сделать командой «ping localhost -10» и к чему эти многократные повторения операций taskkill и del?

Ну да ладно. После этого я принялся за изучение poi.exe. Попытка открыть его как архив завершилась неудачей. Однако запуск программы с параметрами — несколько необычное поведение для вируса (как мне показалось). Поэтому я обратился к кладези знаний под названием Интернет и по ключевым словам «verysilent» и «Password» сразу нашёл искомое: .

Раз кто-то сделал архиватор, то кто-нибудь другой обязательно должен сделать распаковщик — подумал я — и продолжил поиск. Запрос «inno setup decompiler» сходу дал . Отлично! Скачал его и запустил:

Распаковщик быстро выполнил свою работу и я получил несколько файлов для дальнейшего изучения. Начал я с файла install_script.iss. Единственной заслуживающей внимания в нём была секция [Run]:

Из неё стало понятно, что первым запускается VB-скрипт test.vbs:

Скрипт тоже несложный: запускает test.bat и самоуничтожается.

Теперь смотрим test.bat:

Лень опять взяла верх надо мной, поэтому на этот раз я не стал париться с редакторами, а попросил друга написать программку на C#. Что он и сделал. Низкий ему за это поклон!

После расшифровки получился вот такой bat-файл:

Тут происходит следующее: проверяется наличие запущенного антивируса Avast. Если таковой имеется, то выполняется переход в папку "%appData%\MicrocoftUpdate\", из неё удаляются файлы sendok.txt и poi.exe, в системной папке «Startup» создаётся ярлык для запуска программы ctfmon.exe и выполняется самоликвидация работающего bat-файла. При этом ctfmon.exe будет запущен при следующей перезагрузке компьютера. Если же Avast не обнаружен, то в реестре по пути «HKCU\Software\Microsoft\Windows NT\CurrentVersion\Winlogon» значение ключа «Shell» заменяется на "%appData%\MicrocoftUpdate\ctfmon.exe, explorer.exe", ну а потом опять же выполняется переход в папку "%appData%\MicrocoftUpdate\", удаляются файлы sendok.txt и poi.exe, запускается ctfmon.exe и выполняется самоликвидация bat-файла. Таким образом, ctfmon.exe будет запускаться при старте любой программы через Проводник Windows.

Всё, конь выполнил свою грязную работу – установил в систему бэкдор. Теперь обратим взоры на виновника торжества — файл ctfmon.exe.

Часть четвёртая: изучение бэкдора

Осмотр бэкдора проводился снаружи — с помощью программ Process Monitor и WireShark.

Сначала заглянем в свойства exe-файла: Затем пройдёмся по логу Process Monitor-а в поисках слова «Microcoft». Для этого добавим в фильтр вот такое правило: И что же мы видим? Мы видим, что ctfmon.exe создаёт в реестре весьма интересный ключ:

и записывает в этот ключ путь к себе, любимому. Из чего я делаю предположение, что имею дело с программой LiteManager: иду на и скачиваю . Обратите внимание: он версии 4.7.2 — ничего не напоминает?

Распаковываю дистрибутив и вытаскиваю из него файл сервера: romserver.exe. Открываю окошко с его свойствами: Да, очень похоже: та же иконка, те же версии, только самую малость отличается размер и есть цифровая подпись. Очевидно, что файл «доработали напильником», потому что в исходном виде он не совсем устраивал злодеев. Может быть как-нибудь выдавал своё присутствие в системе — что было совсем лишним. Однако то, что файл был изменён, совершенно не напрягает антивирусы: на Virustotal-е большинство из них просто молчит и лишь несколько сообщают, что это просто RiskWare.

Продолжим. Теперь я буду изучать лог WireShark.

Первым делом ctfmon.exe выполняет соединение с адресом 91.240.86.200. По установленному каналу взад-вперёд бегает несколько коротких сообщений, следом за которыми ctfmon.exe получает вот такой пакет:

Похоже на регистрацию на одном из головных серверов LiteManager.

Затем некоторое время опять идёт обмен короткими сообщениями, за которыми приходит ещё один пакет:

Это уже интересней. Дело в том, что клиент LiteManager может соединяться с сервером не напрямую, а через третий узел — так называемый . Необходимость в этом может возникнуть в случае, если сервер спрятан от Интернета за какими-нибудь фаерволами/натами и т.п. Для злодеев же наличие подобного третьего узла — прекрасный способ анонимизироваться — скрыть свой клиентский IP от посторонних глаз. Данный пакет как раз содержит указания серверу — через что работать дальше (адрес и порт NoIPServer-а).

Смотрим дальше. Тут начинается самое интересное! Сразу после получения этого пакета ctfmon.exe отправляет по адресу httр://rmansys.ru/utils/inet_id_notify.php вот такой POST-запрос:

На что это похоже? Это похоже на то, что ctfmon с помощью скрипта inet_id_notify.php передаёт на email хозяина blackcc019@gmail.com информацию о параметрах подключения к инфицированному компьютеру.

Для проверки этой гипотезы я отправил подобный запрос со своего Debian-сервера:

Проверяю почту — вуаля!

Получено письмо с адреса 'TektonIT Corp. '

Тема письма: 'Remote Manipulator System установлен на удаленном компьютере, новый Internet-ID получен: 12345'

Текст письма:

Всё понятно. Господа с rmansys.ru предоставили хакерам отличную возможность получить нужную им информацию через такой вот своеобразный открытый почтовый релей. Молодцы, ничего не скажешь.

Затем ctfmon.exe, как ему было и указано, соединяется с компьютером по адресу 83.240.218.170:5651 и время от времени обменивается с ним короткими сообщениями — ждёт входа хозяина.

Наблюдать дальше смысла особого не было: алгоритм поведения понятен.

Часть пятая: лечение

Удалить эту инфекцию весьма не сложно (если, конечно, вам в компьютер не успели удалённо насовать ещё какой-нибудь вирусни). Нужно выполнить следующие шаги:

Терминировать процесс бэкдора через диспетчер задач. Называться, кстати, он может и по другому. Удалить службу сервера: выполнить в консоли команду: sc delete ROMService_Support. Удалить папку "%appdata%\MicrocoftUpdate\" со всеми файлами в ней. Восстановить в реестре ключ «HKCU\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell»: записать в него строку «explorer.exe». Пройтись по всему реестру в поисках ключей, содержащих слово «Microcoft» и удалить их. Перезагрузить компьютер.

Как превентивно защититься от подобного вторжения? От данной конкретной модификации бэкдора можно защититься, например, добавив в файл hosts строку «127.0.0.1 rmansys.ru» — тогда бэкдор не сможет отправить хозяину письмо. Если же под вашим управлением находится корпоративный фаервол, то в него можно добавить правило блокировки доступа к этому узлу из локальной сети.

Часть шестая: заключительная

Напоследок я поискал в Интернете других пострадавших от этой атаки. Найти их оказалось совсем не трудно: они обсуждали .

Так что картина вырисовывалась примерно следующая: хакеры проникли в сеть Admitad и утянули оттуда клиентскую базу. Затем состряпали этого трояна и разослали письма клиентам Admitad через подконтрольные им узлы бот-сети. Из той же бот-сети часть узлов, имеющих прямое соединение с Интернетом, была превращена в NoIP-сервера — посредством которых они смогли управлять вновь заражёнными компьютерами.

Какие выводы из этого всего я сделал для себя?

Вывод первый: на современном этапе в Интернете предостаточно средств для создания подобных троянов практически «на коленке». Зачем напрягаться и писать свой собственный бэкдор, если есть масса готовых, исключительно продвинутых и широкофункциональных вариантов? Нужно просто малость их доработать и всё.

Вывод второй: анонимность подобной атаки исключительно высокая. Всё что удалось выудить — email хозяина, толку от которого, в общем-то — ноль.

Вывод третий: я совершил грубейшую ошибку. Первое, что надо было сделать — это выключить заражённую машину, а не копаться в ней, тем более через Интернет. Заражённый винчестер нужно было подключить к своему компьютеру и только после этого выполнять исследования. Повезло ещё, что это оказался бэкдор, а не какой-нибудь навёрнутый криптошифровальщик.

Засим разрешите откланяться. Всем здоровья и удачи! Спасибо за внимание!

ПодпискаБудь в СЕТИ! Новости социальных сетей - всегда актуальное
 
Группы: ВК | OK | Tg