Livejournal Facebook Twitter

Вирусные итоги 2017 года

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

Одно из примечательных отличий живого существа от операционной системы производства корпорации Microsoft заключается в том, что биологический организм сначала помирает, а уже потом его кушают черви, с виндой же все обстоит в точности наоборот. Первый червь семейства BackDoor.Ragebot приполз в нашу вирусную лабораторию еще в 2015 году, а его 45-ю модификацию аналитики исследовали в январе уходящего года. Проникнув на компьютер под управлением Windows, червий запускает собственный FTP-сервер и скачивает свою копию. Затем Ragebot начинает сканировать сеть в поисках хостов с открытым портом 5900 (он используется системой удаленного доступа к рабочему столу VNC), и при обнаружении таковых стучится на удаленный узел, перебирая пароли по словарю. Если это мероприятие увенчалось успехом, хитрый червь устанавливает соединение и имитирует нажатия пользователем клавиш, чтобы запустить консоль CMD, а в ней – выполнить FTP-команду загрузки собственной копии.

Судя по всему, этого трояна писал какой-то замшелый отлдфаг, последнее десятилетие не вылезавший из подземного бункера. Во-первых, команды трой получает по протоколу IRC (поднимите руки те, кто все еще пользуется «Иркой»!), а во-вторых, он умеет заражать RAR-архивы на съемных носителях. RAR-архивы! На съемных носителях, Карл! Но и это еще не все. Ragebot за номером 45 пытается найти на диске папку ICQ (когда деревья были маленькими, а динозавры – большими, в Интернетах существовал такой популярный мессенджер, %username%), и сохранить там свою копию. Наконец, червь умеет удалять с зараженного компьютера других троянцев, сканируя диски в поисках вредоносных файлов — в случае успеха он убивает соответствующий процесс и уничтожает бинарник, наверное, пытаясь составить таким образом конкуренцию антивирусам. Можно найти лишь одно разумное объяснение всем этим архаизмам: исходники ранних версий Ragebot некоторое время назад утекли в паблик, и, видимо, кто-то решил соорудить на их основе новую эволюцию червя, побоявшись трогать малопонятные куски работающего кода. Впрочем, подобный подход к вирусописательству не нов: нам как-то попадались вполне работоспособные троянцы для ОС Linux, в недрах которых внезапно обнаруживались куски вызовов WinAPI-функций. Кажется, некоторые вирмейкеры называют это «портированием». Лично я именую это «копипастой».

Тем не менее, в этом году черви попадались не только из разряда окаменелых ископаемых, встречались и вполне себе современные, крайне опасные экземпляры. Самый нашумевший из них — WannaCry. Этот червь-шифровальщик начал свое победное шествие по компьютерам всего мира примерно в 10 утра 12 мая 2017 года. Тут следует сделать важную ремарку о том, чем же примечателен WannaCry, как вредоносная программа. До этого исторического момента энкодеры преимущественно распространялись традиционными для троянов способами: либо под видом какого-то крайне «полезного» софта вроде Flash Player, который доверчивый пользователь должен был запустить собственноручно, либо вместе со спамом, использующим методы социальной инженерии. При этом в письма обычно был вложен не сам шифровальщик, а какой-нибудь скрипт-даунлоадер, который при открытии аттача и скачивал «подарочек», а потом запускал его. Какой бухгалтер не попытается ознакомиться с содержимым сообщения, имеющего заголовок «мы подаем на вас в суд!», «ваши банковские счета заморожены!» или «срочно перечислите оплату по договору!». Бывали случаи, когда особо одаренные офисные работники, игнорируя предупреждения антивируса, пытались отключить защиту, а если это не получалось (иногда умные админы все-таки используют антивирус с централизованным управлением и ограниченные учетки на компах юзеров), пересылали письмо на личный почтовый ящик и благополучно запускали трояна у себя дома. Черви же ползали где-то в стороне от этой мирской суеты и существовали все больше сами по себе. WannaCry объединил в себе эти две технологии.

Этот червь был написан на C/C++, собран в MS Visual Studio и распространялся с использованием уязвимости в протоколе SMB (MS17-10), опрашивая узлы локальной сети и компьютеры в Интернете со случайными IP-адресами, и пытаясь соединиться с портом 445. На инфицированной машине он запускался в виде системной службы с именем mssecsvc2.0, и через 24 часа автоматически завершал свою работу. Запустившись на атакуемой машине, WannaCry переименовывал файл  C:\WINDOWS\tasksche.exe в C:\WINDOWS\qeriuwjhrf, а вместо оригинального tasksche.exe записывал собственную копию.

Сам энкодер хранился в дроппере червя в запароленном ZIP-архиве. Там же лежали обои Рабочего стола Windows с требованиями выкупа, файлик, содержащий адреса серверов в сети TOR и реквизиты BTC-кошелька, и архив с софтом для работы в TOR-сети, чтобы жертва не утруждала себя загрузкой Tor Browser. 

 

Дроппер запускался из тела червя, после чего пытался создать на диске в папке %SYSDRIVE%\ProgramData, %SYSDRIVE%\Intel, %SYSDRIVE% или %TEMP% субдиректорию со случайным именем, а в ней — собственную копию с именем tasksche.exe. Этот файл трой пытался запустить в качестве системной службы. Если попытка не увенчалась успехом, дроппер создавал новую системную службу, регистрировал в ней запуск собственной копии с использованием вызова командной консоли «cmd.exe /c path», и запускал созданную службу.  Если не получалось и это, он стартовал как обычное приложение. Путь до своей текущей директории дроппер хранил в ветвях реестра HKLM\Software\WanaCrypt0r или HKCU\Software\WanaCrypt0r. Сохранив на диск содержимое своего архива, дроппер делал свою рабочую папку скрытой, открывал к ней доступ всем пользователем системы и запускал на выполнение энкодер.

Наконец, энкодер шифровал файлы на атакованном компьютере посредством алгоритма AES-128. В процессе шифрования он создавал с помощью функции CryptGenKey RSA-пару, публичная часть которой записывалась в файл 00000000.pky, приватная – шифровалась авторским публичным ключом и сохранялась в файле с именем 00000000.eky. Ключ генерировался для каждого шифруемого файла отдельно при помощи функции CryptGenRandom.

Каждый зашифрованный файл имел следующую структуру:

  • маркер «WANACRY!» длиной 8 байт;
  • длина зашифрованного ключа — 4 байта;
  • сам зашифрованный ключ — 256 байт;
  • сведения о типе шифрования — 4 байта;
  • исходный размер файла — 8 байт;
  • зашифрованное содержимое файла.

В процессе шифрования создавался отдельный список файлов, которые могли быть расшифрованы бесплатно в демо-режиме специальным декодером, встроенным в шифровальщик. Этот список пишется в файл f.wnry, а сами файлы шифруются сессионным AES-ключом, который, в свою очередь, шифруется собственным RSA-ключом, приватная чать которого хранится в теле троя. Из этого следует, что спешное восстановление тестовых файлов на самом деле ничего не гарантировало жертве. Кроме того, декодер устанавливал в системе веселенькие обои с требованиями выкупа, грохал теневые копии, отключал восстановление системы и распаковывал из архива софт для работы с TOR (либо скачивал его с управляющего сервера). Для связи с удаленными узлами WannaCry использовал собственный протокол. С помощью декодера можно было отправить текстовое сообщение разработчикам трояна, при этот текст менее 10 символов не отсылался (трой возвращал ошибку "Too short message!"), а длинные послания обрезались до 1000 знаков. При этом в трояне было реализовано программное ограничение на частоту отправки сообщений — видимо, авторы WannaCry боялись, что пострадавшие пользователи заDDoSят их сервер, осыпая вирусописателей проклятиями. Естественно, этот червь наделал в сети и за ее пределами много шума, став на некоторое время хедлайнером всех новостных заголовков.

Однако слава в быстро меняющемся сетевом пространстве скоротечна, и вскоре на информационном олимпе место WannaCry занял еще один червь-шифровальщик, получивший известность под именами NePetya, Petya.A, ExPetya и т.д (назвали его так из-за мнимой схожести с трояном Petya, хотя подробный анализ показал, что между этими двумя угрозами больше различий, чем общих черт). Если кто-то до сих пор не удосужился ознакомиться с историей данного шифровальщика из многочисленных сетевых публикаций, предлагаю пройтись крупными мазками по основным вехам его увенчанного славой эпохального пути. Минутку, только гусли достану.

Итак, в тридевятом царстве, в тридесятом государстве под названием Украина, жила-была компания, выпускавшая программу дивную для документооборота электронного под названием M.E.Doc. Был тот «медок»  сладок и всем люб, использовали его и купцы богатые, и прочий люд торговый. Только вот видно по всему, что доступ к серверам обновления этой программы распрекрасной имели все, кому не лень, от добрых молодцев-программистов до последней уборщицы в ступе и с метлой. Вирусным аналитикам стало известно, что в модуль обновления  M.E.Doc внедряли троянов и раньше, причем в ответ на жалобы пользователей о том, что на этот модуль ругаются антивирусы, его разработчики по слухам советовали юзерам просто отключить защитное ПО. В этом компоненте была обнаружена характерная строка, соответствующая ключу системного реестра HKCU\SOFTWARE\WC — этот же ключ использует в своей работе шифровальщик Trojan.Encoder.12703. А анализ логов с зараженной машины показал, что этот энкодер был запущен приложением ProgramData\Medoc\Medoc\ezvit.exe, которое является компонентом программы M.E.Doc.

Дальнейшие исследования продемонстрировали, что компонент обновления M.E.Doc, реализованный в виде библиотеки  ZvitPublishedObjects.dll, содержит полноценный бэкдор, который умеет собирать данные для доступа к почтовым серверам, выполнять в системе любые команды, загружать и запускать произвольные файлы и выгружать какие угодно файлы с компьютера обратно на управляющий сервер. Вот через этот бэкдор на машины ничего не подозревающих пользователей и прополз NePetya. А поскольку M.E.Doc был заточен под электронный документооборот в одной конкретной стране, прилетело в первую очередь жителям Украины.

NePetya использовал ту же уязвимость, которую до него юзал WannaCry, однако в отличие от предшественника, этот червь-энкодер с самого начала не предусматривал никакой возможности восстановления зашифрованных файлов. То есть, он был троянцем-вандалом. Однако имелось в его работе и несколько новелл, отличающих NePetya от WannaCry.

После запуска трой выделял для себя память, загружал туда собственную копию и вызывал процедуру с RVA 0x94A5, которая выгружала оригинальный файл с помощью FreeLibrary, затем перезаписывал свой исходный файл, забивая его мусором, и удалял его. Контроль повторного запуска осуществлялся при помощи сохраненного в системной папке файла, имя которого соответствовало имени трояна без расширения.

Для перехвата учетных данных локальных и доменных пользователей Windows этот червь использовал утилиты Mimikatz — с помощью украденных данных он искал в сети доступные на запись папки и пытался сохранить там свою копию. Но распространялся в сети он не только таким образом: NePetya использовал множество различных способов, один хитрее другого:

  • перечислял сетевые адаптеры с помощью GetAdaptersInfo, извлекал IP-адреса и маску подсети, а также IP-адрес DHCP;
  • если троянец запущен на сервере, он перечислял диапазоны DHCP DhcpEnumSubnets;
  • извлекал все активные соединения с помощью GetExtendedTcpTable;
  • извлекал информацию об ARP IP GetIpNetTable;
  • пытался перечислить машины в домене.

Получив список IP-адресов, NePetya приступал к сканированию портов 445 и 139. Обнаружив уязвимую машину, он сохранял на нее версию Mimikatz, соответствующую разрядности операционной системы, и запускал ее с именем pipe:

'%TEMP%\4214.tmp' \\.\pipe\{7AC40626-8E78-436F-8DFE-8EE9752FE743}

Через pipe троян и получал имена пользователей системы, кроме того, он пытался добыть их при помощи CredEnumerateW с фильтром TERMSRV и путем анализа командной строки с параметром –h, в которой передается список учетных записей. Затем NePetya ищет сетевые шары, пытается авторизоваться на них при помощи украденных учёток и сохранить там свою копию. Чтобы запустить эту копию на удаленной машине, он использует либо Sysinternals PsExec, либо утилиты wbem\wmic.exe.

Во-вторых, этот энкодер портил загрузочную запись системного раздела (VBR) диска C:, заполняя первый (начиная с нуля) сектор мусором, а потом при соблюдении ряда условий шифровал MBR и заражал загрузочную запись.  Начиная с нулевого сектора NePetya писал на диск собственный MBR и код, оригинальная загрузочная запись, зашифрованная XOR, сохранялась в  34-й сектор. В 32-й сектор записывалась используемая для шифрования структура, содержавшая ключи для шифрования диска. Примечательно, что рандомно генерируемый ключ, который пересылался авторам троя, отличался от того, который использовался для шифрования, поэтому злодеи при всем желании не могли предоставить жертве корректных ключ для расшифровки диска. Потом  NePetya создавал задание на перезагрузку.

После рестарта управление получала загрузочная запись троянца, который читал сектор 32, получал оттуда необходимые для работы данные и начинал шифрование диска, после чего приступал к шифрованию MFT.

Поскольку NePetya имел очень мощный технический арсенал для самостоятельного распространения, достаточно быстро он вырвался за пределы Украины. От его действий пострадало множество компьютеров в различных странах мира, жертвами стали десятки крупных организаций, включая банки, министерства и коммерческие компании.

В 2017 году заметно увеличилось количество Linux-троянцев, ориентированных на так называемый «Интернет вещей». Оно и неудивительно: большинство простых пользователей телеприставок, роутеров и сетевых накопителей даже не подозревают, что после извлечения девайса из коробки и его подключения к сети было бы неплохо поменять предустановленный пароль, чем и пользуются вирусописатели. Существует широчайший ассортимент IoT-троянов под различные архитектуры, включая х86, ARM, MIPS, MIPSEL, PowerPC, Superh, Motorola 68000, SPARC, — короче, для любого «умного» Linux-устройства можно найти подходящий троян. Одним из самых распространенных среди них можно назвать Linux.ProxyM. Этот трой примитивен, как шутки Петросяна, все что он умеет — это поднять на зараженном устройстве SOCKS-прокси-сервер. Ну, еще он умеет детектировать ханипоты (правда, у него это получается не слишком эффективно). Тем не менее, вирусописатели нашли для Linux.ProxyM множество «полезных» применений. Сначала ботоводы использовали зараженные «умные» девайсы для рассылки спама — вирусные аналитики установили, что с одного устройства спамеры рассылали более 400 сообщений в сутки. Затем злодеи стали отправлять с помощью Linux.ProxyM фишинговые письма, в частности, якобы от имени сервиса для работы с цифровыми документами DocuSign — после ввода логина и пароля в поддельную форму авторизации эти данные отправлялись ботоводам, а жертва перебрасывалась на настоящую страницу сервиса. Наконец, ближе к концу года с помощью Linux.ProxyM злоумышленники принялись взламывать сайты: они выполняли SQL-инъекции, использовали XSS (Cross-Site Scripting), а также пытались читать файлы на атакованном сервере с использованием метода Local File Inclusion (LFI). Судя по всему, интерес к IoT будет расти и дальше, и в следующем году мы увидим еще больше троянов для Linux с разнообразным и крайне любопытным функционалом.

Подводя итоги, кратко перечислю другие основные тенденции уходящего года с точки зрения вирусной активности:

  • Появление множества новых троянов для Android, в том числе, в каталоге Google Play (так, только в ноябре было выявлено приложение с троянцем, которое загрузили более 2 млн пользователей);
  • Распространение вредоносных программ, при создании которых были использованы такие языки программирования, как Python и Go.
  • Появление сайтов, содержащих скрипты, которые майнят криптовалюты прямо в браузере. Скорее всего, новые хитрые способы майнинга за счет ничего не подозревающих пользователей будут появляться и дальше.

Что нас ждет в следующем году? Увидим! Одно можно сказать определенно: опасных вредоносных программ в 2018-м меньше точно не станет.

 

 

Поиск

Энциклопедия Windows - Winpedia.ru Русское сообщество пользователей Android Дистанционное обучение нового поколения

Верстка, контент, дизайн © 2000 - 2018, Валентин Холмогоров.