Русский
Русский
English
Статистика
Реклама

Бэкдоры

В поисках APT30 как мы заметили новую активность группировки после нескольких лет молчания

19.06.2020 16:07:35 | Автор: admin
image

Кибергруппировка APT30 известна довольно давно еще в 2015 году ее активность описывали наши коллеги из FireEye. Участники этой группы обычно атакуют государственные структуры в Южной и Юго-Восточной Азии (в Индии, Таиланде, Малайзии и др. странах) с целью кибершпионажа, а их инструментарий разрабатывается по крайней мере с 2005 года.

В последние несколько лет APT30 не очень активно проявляла себя, однако весной 2020 года нам удалось обнаружить следы новых разработанных хакерами вредоносов. Полное исследование опубликовано по ссылке, а в этой статье мы коснемся его основных моментов.

Введение


Восьмого апреля 2020 года наши специалисты из экспертного центра безопасности (PT Expert Security Center) обнаружили активность хорошо известной киберпреступной группы. На популярном ресурсе для динамического анализа вредоносного ПО сработали сетевые сигнатуры, описывающие активность APT30, о которой уже давно ничего не было слышно. Это послужило отправной точкой нашего исследования.

Как оказалось, хакеры не только продолжают поддерживать свои старые, хорошо известные инструменты десятилетней давности, но и придерживаются своих подходов к организации сетевых ресурсов.

Бэкдоры BACKSPACE и NETEAGLE


Двадцать пятого августа 2019 года на VirusTotal был загружен файл (MD5: f4f8f64fd66a62fc456da00dd25def0d) с названием AGENDA.scr из Малайзии. Это исполняемый PE-файл на платформе x86, упакованный UPX. Образец имеет иконку офисного документа с целью обмануть пользователя, а в ресурсах содержатся еще два зашифрованных объекта.

image

Первый файл (MD5: 634e79070ba21e1e8f08aba995c98112) записывается в каталог с шаблонами Microsoft Office %APPDATA%\Microsoft\Windows\Templates\AGENDA.docx и запускается. Это офисный документ, который содержит план совещания в одном из департаментов правительства Малайзии. Цель документа привлечь внимание пользователя.

image

Второй файл (MD5: 56725556d1ac8a58525ae91b6b02cf2c) помещается в каталог автозагрузки %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\WINWORD.EXE. В момент создания файл не запускается (злоумышленники рассчитывают на его работу, например, после перезагрузки системы, чтобы не привлекать внимания). Это бэкдор семейства NETEAGLE, модификации которого подробно рассмотрены в отчете наших коллег из FireEye. Любопытно, что характерная строка NetEagle из образцов 2015 года (которая и послужила названием семейства вредоносов) теперь заменена на JokerPlay.

image

Строка NetEagle в образце 2015 года

image

Строка JokerPlay в образце 2019 года

По полученным индикаторам были обнаружены еще два бэкдора (MD5: d9c42dacfae73996ccdab58e429548c0 и MD5: 101bda268bf8277d84b79fe52e25fee4). Согласно дате компиляции, они созданы 21 октября 2019 года, а один из них был тоже загружен на VirusTotal из Малайзии, причем только в мае 2020 года. Эти вредоносы относятся к семейству BACKSPACE, модификации которого также рассмотрены в отчете специалистов из FireEye. Приведем расшифрованные строки для каждого образца вместе с алгоритмом декодирования.

Бэкдор RHttpCtrl


Представляет собой исполняемый PE-файл на платформе x86. Первым делом вредонос пытается извлечь значение ключа random ветки реестра HKCU\Software\HttpDiv. Если это не удалось, средствами WinAPI-функции GetSystemTimeAsFileTime будет получено системное время и затем использовано в качестве seed генератора произвольных чисел. Сгенерированное произвольное число будет сохранено в реестр и использовано позднее.

С помощью GET-запроса к адресу hxxp://www.kabadefender.com/plugins/r.exe вредонос получает и сохраняет легитимный архиватор WinRAR (его CLI-составляющую, 4fdfe014bed72317fa40e4a425350288). Затем создает фингерпринт системы, собирая имя компьютера, IP-адрес и версию системы, и отправляет POST-запросом по адресу hxxp://www.kabadefender.com/clntsignin.php.

Бэкдор RCtrl


Представляет собой исполняемый PE-файл на платформе x86, разработанный с применением библиотеки MFC и упакованный с помощью UPX.

С помощью однобайтового XOR с числом 0x23 вредонос расшифровывает адрес основного сервера злоумышленников: 103.233.10\.152. Обратившись к нему по TCP на порт 4433, проверяет успешность соединения. Если соединиться не удалось, использует дополнительные данные для получения адреса сервера.

Дополнительные данные это адреса hxxp://www.gordeneyes.com/infos/p и hxxp://www.techmicrost.com/infos/p, закодированные однобайтовым XOR с числом 0x25. Расшифровав адреса, вредонос пробует соединиться с ними поочередно посредством GET-запроса. В ответе сервера ожидаются 8 байт: IP-адрес сервера и порт.

image

Получение адреса сервера злоумышленников: 0xAC 0xF7 0xC5 0xBD 172 247 197 189, 0xBB 0x01 0x00 0x00 0x1BB 443

Получив действующий IP-адрес сервера злоумышленников, вредонос повторно соединяется с сервером и ожидает получить от него строку Jo*Po*Hello. Эта строка закодирована в теле вредоноса однобайтовым XOR с числом 0x24. Любопытный прием: как правило, трояны сами инициируют обмен данными.

Если строка получена, создается фингерпринт системы: версия системы, IP-адрес, информация о марке и частоте процессора, объеме дискового пространства. Собранные данные шифруются уникальным алгоритмом на базе побитовых циклических сдвигов и XOR (а именно, циклического сдвига влево на 4 + 3 = 7 бит и XOR с 0x23) и отправляются на сервер злоумышленников.

Затем создается отдельный поток, который каждые 30 секунд отправляет на сервер один и тот же буфер данных. Далее управление получает функция обработки команд, которая расшифровывает принятые данные (алгоритм расшифровки состоит из действий, обратных рассмотренному алгоритму шифрования) и извлекает номер команды.

Заключение


Нельзя сказать, что созданное злоумышленниками ПО отличается высоким классом программного кода, какими-то уловками для сокрытия в системе или обхода обнаружения. Не похоже, что меняются и цели: возможно, более изощренный вредоносный арсенал им и не требуется. Говоря про новый инструментарий, мы отметили его незавершенность. Возможно, группа ведет тестирование свежего ПО в боевых условиях, выявляя недочеты. Так что в будущем стоит ожидать появления улучшенных бэкдоров RHttpCtrl и RCtrl, возможно с применением техник сокрытия или усложнения анализа.

Полная версия отчета доступна по ссылке.

Автор: Алексей Вишняков, Positive Technologies
Подробнее..

Как развивается ситуация вокруг запрета на end-to-end шифрование разбор последних событий

25.10.2020 18:16:57 | Автор: admin

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

P.S. Вчера мы рассказывали, чем интересен рынок интернет-провайдеров Румынии.

Flickr / Richard PattersonFlickr / Richard Patterson

Что-то пошло не так

Весной мы рассказывали о предполагаемых поправках в 230 раздел федерального закона о коммуникациях США. Их планируют внести с помощью EARNITA или EARN IT Actа расшифровывается как Eliminating Abusive and Rampant Neglect of Interactive Technologies Act.

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

В первых версиях документа в центре внимания была процедура проверки алгоритмов фильтрации, задействованных на стороне площадок для выявления и борьбы с подозрительным содержимым. Требования для такого аудита должна была сформулировать специальная комиссия, возглавляемая генеральным прокурором США, а за его прохождение законопроект гарантировал компаниям иммунитет от преследования за противоправные действия третьих лиц. (К слову, такую защиту по умолчанию предполагает действующая редакция 230-го раздела федерального закона.)

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

Unsplash / FelipepelaquimUnsplash / Felipepelaquim

На момент выхода нашего первого материала по теме, запустившего обсуждение на три с лишним сотни комментариев, экспертное сообщество обратило внимание на избыточный характер изменений и возможные побочные эффекты от принятия документа в таком виде.

В первом случае речь шла о том, что практика выявления пользовательских правонарушений уже существует. Существенное число площадок, соцсетей и контент-платформ достаточно давно внедрили алгоритмы модерации содержимого. Фактически они выполняют требования изначальной версии EARNITA, но отвечать запросам отдельных штатов конечно, не готовы.

Опасения вызвала перспектива тотального ограничения на сквозное шифрование. Плюс запрос от спецслужб нескольких стран на встраивание бэкдоров.

Ситуация вокруг последнего момента развивается параллельно с обсуждением акта. За последние десять лет появилось все больше примеров подобных экспериментов на уровне отдельных государств в Германии ими занимаются с 2011 года.

От постов к чатам

Запрет end-to-end шифрования обсуждают не первый год. Но некоторые страны вроде Австралии действуют на опережение. Там бизнес еще два года назад обязали предоставлять ключи спецслужбам.

В свою очередь, в UK тему продвигают аж с 2017-го, а в прошлом году местный Центр правительственной связи (GCHQ) даже предложил внедрять невидимых собеседников в подозрительные чаты и звонки. На инициативу последовала острая реакция IT-компаний, но Великобритания только усилила давление и на днях использовала международный рычаг в виде так называемого альянса Пяти глаз, в который входит та же Австралия, Канада, Новая Зеландия и США.

Unsplash / Clint PattersonUnsplash / Clint Patterson

Союзники подписали совместное коммюнике по теме сквозного шифрования с Индией и Японией, которые подтвердили свое стремление как можно быстрее стать полноправными участниками альянса. Интересно, что пресса уделила наибольшее внимание возможным последствиям для Facebook и Apple, но не акцентировала тот факт, что в перспективе регулирование распространится абсолютно на все интернет-компании.

Что дальше

Совместное заявление Пяти глаз не имеет законодательного статуса, поэтому IT-сектор и общественность может его просто проигнорировать. С другой стороны, в этому году вышло множество разоблачительных публикаций surveillance-программ АНБ, но сделал ли кто-то выводы на их основе относительно перспектив принятия чего-то вроде EARN IT Act'а, предполагающего массовую фильтрацию (и ответственность) контента, но уже на стороне компаний покажет время.

Дополнительное чтение по теме и не только:


Подробнее..

Как развивается ситуация вокруг возможного ввода ограничений на end-to-end шифрование обзор событий

25.10.2020 20:05:49 | Автор: admin

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

P.S. Вчера мы рассказывали, чем интересен рынок интернет-провайдеров Румынии.

Flickr / Richard PattersonFlickr / Richard Patterson

Что-то пошло не так

Весной мы рассказывали о предполагаемых поправках в 230 раздел федерального закона о коммуникациях США. Их планируют внести с помощью EARNITA или EARN IT Actа расшифровывается как Eliminating Abusive and Rampant Neglect of Interactive Technologies Act.

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

В первых версиях документа в центре внимания была процедура проверки алгоритмов фильтрации, задействованных на стороне площадок для выявления и борьбы с подозрительным содержимым. Требования для такого аудита должна была сформулировать специальная комиссия, возглавляемая генеральным прокурором США, а за его прохождение законопроект гарантировал компаниям иммунитет от преследования за противоправные действия третьих лиц. (К слову, такую защиту по умолчанию предполагает действующая редакция 230-го раздела федерального закона.)

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

Unsplash / FelipepelaquimUnsplash / Felipepelaquim

На момент выхода нашего первого материала по теме, запустившего обсуждение на три с лишним сотни комментариев, экспертное сообщество обратило внимание на избыточный характер изменений и возможные побочные эффекты от принятия документа в таком виде.

В первом случае речь шла о том, что практика выявления пользовательских правонарушений уже существует. Существенное число площадок, соцсетей и контент-платформ достаточно давно внедрили алгоритмы модерации содержимого. Фактически они выполняют требования изначальной версии EARNITA, но отвечать запросам отдельных штатов конечно, не готовы.

Опасения вызвала перспектива тотального ограничения на сквозное шифрование. Плюс запрос от спецслужб нескольких стран на встраивание бэкдоров.

Ситуация вокруг последнего момента развивается параллельно с обсуждением акта. За последние десять лет появилось все больше примеров подобных экспериментов на уровне отдельных государств в Германии ими занимаются с 2011 года.

От постов к чатам

Запрет end-to-end шифрования обсуждают не первый год. Но некоторые страны вроде Австралии действуют на опережение. Там бизнес еще два года назад обязали предоставлять ключи спецслужбам.

В свою очередь, в UK тему продвигают аж с 2017-го, а в прошлом году местный Центр правительственной связи (GCHQ) даже предложил внедрять невидимых собеседников в подозрительные чаты и звонки. На инициативу последовала острая реакция IT-компаний, но Великобритания только усилила давление и на днях использовала международный рычаг в виде так называемого альянса Пяти глаз, в который входит та же Австралия, Канада, Новая Зеландия и США.

Unsplash / Clint PattersonUnsplash / Clint Patterson

Союзники подписали совместное коммюнике по теме сквозного шифрования с Индией и Японией, которые подтвердили свое стремление как можно быстрее стать полноправными участниками альянса. Интересно, что пресса уделила наибольшее внимание возможным последствиям для Facebook и Apple, но не акцентировала тот факт, что в перспективе регулирование распространится абсолютно на все интернет-компании.

Что дальше

Совместное заявление Пяти глаз не имеет законодательного статуса, поэтому IT-сектор и общественность может его просто проигнорировать. С другой стороны, в этому году вышло множество разоблачительных публикаций surveillance-программ АНБ, но сделал ли кто-то выводы на их основе относительно перспектив принятия чего-то вроде EARN IT Act'а, предполагающего массовую фильтрацию (и ответственность) контента, но уже на стороне компаний покажет время.

Дополнительное чтение по теме и не только:


Подробнее..

Математические бэкдоры в алгоритмах шифрования

07.12.2020 12:09:16 | Автор: admin

Мы привыкли полагаться на современные алгоритмы шифрования. Однако, действительно ли они так безопасно защищают наши данные? Давайте разберёмся с таким понятием как математический бэкдор, что он из себя представляет и как работает.


Введение

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

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

  1. Суд ФБР и Apple

  2. История взаимодействия Роскомнадзора и Telegram

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

А вообще, узнать больше про терроризм как феномен информационного общества можно тут.

Inspiration

Данная статья вдохновлена выступлением французских исследователей на конференции Black Hat в 2017 году. Для более детального изучения статья и книга.

Как работают алгоритмы шифрования?

Обобщённо можно сказать, что основой любого шифра является некоторая общая информация доступная только отправителю и получателю. В случае шифра Цезаря это было число, на которое производится сдвиг. Или, например, известна история когда во время Второй мировой войны морские пехотинцы США завербовали и обучили людей из племени индейцев навахо, свободно владеющих языком навахо. Это был привлекательный способ использования кодирования, мало людей не из племени знали этот язык, а также не было никаких опубликованных книг на языке навахо. В данном случае общей информацией было знание языка навахо.

С развитием полупроводниковой логики алгоритмы шифрования стали базироваться на взрослой и суровой математике.

Тут необходимо остановиться и сделать небольшой ликбез, разделить алгоритмы шифрования на две большие группы:

  1. Симметричные

  2. Ассиметричные

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

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

В данной статье будет рассмотрен возможный механизм создания уязвимости в системах с симметричным шифрованием.

Про создание уязвимостей в ассиметричных алгоритмах шифрования можно почитать, например, тут.

Современные алгоритмы симметричного шифрования

К симметричным алгоритмам шифрования можно отнести такие игрушечные алгоритмы шифрования, как:

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

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

Ещё немного занудства

Потоковые шифры в отличие от блочных шифров часто могут быть атакованы при помощилинейной алгебры(так как выходы отдельных регистров сдвига с обратной линейной связью могут иметькорреляциюс гаммой). Также для взлома поточных шифров весьма успешно применяется линейный идифференциальный анализ.

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

Эта статья поможет вам детально разобраться с симметричными алгоритмами шифрования.

На данный момент времени, в основном используются блочные шифры. Например, широко известный AES, как раз симметричный блочный алгоритм шифрования. Ровно как и наш подозреваемый - симметричный блочный алгоритм шифрования, который незамысловато называется Backdoored Encryption Algorithm 1, BEA-1 сокращённо. Давайте разберёмся, где же там спрятан бэкдор.

Ещё немного про уязвимости

Для начала стоит обговорить, что уязвимости в алгоритмах шифрования бывают разными. Согласно статье французских исследователей , на данный момент основное внимание уделяется так называемым implementation backdoors, уязвимостям связанные с тем как алгоритм был реализован. То есть сам алгоритм шифрования может быть и надёжен, но, например, его обёртка при каждом шифровании сливает ваши ключи товарищу в погонах.

Цитата

Recent years have shown that more than ever governments and intelligence agencies try to control and bypass the cryptographic means used for the protection of data. Backdooring encryption algorithms is considered as the best way to enforce cryptographic control. Until now, only implementation backdoors (at the protocol, implementation or management level) are generally considered.

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

Цитата

In this paper we propose to address the most critical issue of backdoors: mathematical backdoors or by-design backdoors, which are put directly at the mathematical design of the encryption algorithm. While the algorithm may be totally public, proving that there is a backdoor, identifying it and exploiting it, may be an intractable problem.

К слову, примерно так и должен выглядеть идеальный бэкдор:
  • сложно обнаружить

  • можно использовать многократно

  • легко отрицать выглядит, как ошибка, и в случае обнаружения, разработчик может сослаться на то, что допустил эту ошибку случайно и злого умысла не имел

  • эксплуатируем только при знании секрета только тот, кто знает, как активируется бэкдор, может им воспользоваться

  • защищён от компрометации предыдущими использованиями даже если бэкдор был обнаружен, то невозможно установить, кем он до этого эксплуатировался, и какой информацией завладел злоумышленник

  • сложно повторить даже если бэкдор был кем-то найден, то его невозможно будет использовать в другом коде или в другом устройстве.

Согласно нынешним стандартам алгоритм должен быть устойчивым как к линейному так и к дифференциальному криптоанализу. BEA-1, по всем критериям текущих стандартов, как раз подходит под описание надёжного алгоритма, он устойчив как к линейному так и дифференциальному криптоанализу.

Цитата

Considering a particular family (among all the possible ones), we present BEA-1, a block cipher algorithm which is similar to the AES and which contains a mathematical backdoor enabling an operational and effective cryptanalysis. The BEA-1 algorithm (80-bit block size, 120-bit key, 11 rounds) is designed to resist to linear and differential cryptanalyses.

Если кратко, то линейный криптоанализ особый род атаки на симметричные шифры, направленный на восстановление неизвестного ключа шифрования, по известным открытым сообщениям и соответствующим им шифртекстам.

В общем случае атака на основе линейного криптоанализа сводится к следующим условиям. Злоумышленник обладает большим количеством пар открытый/зашифрованный текст, полученных с использованием одного и того же ключа шифрования K. Цель атакующего восстановить частично или полностью ключ K. Подробнее.

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

Целью атакующего, применяющего ДК, также является получение некоторой информации о ключе, которая может как полностью скомпрометировать ключ (что бывает очень редко), так и просто дать некоторое преимущество при подборе ключа. Подробнее.

Интересно рассмотреть гипотетические примеры бэкдоров в современных алгоритмах:

Уязвимость псевдослучайного генератора DUAL_EC_DRBG

DUAL_EC_DRBG - был разработан вАНБи стандартизован в качествекриптографически стойкого генератора псевдослучайных чиселнациональным институтом стандартов и технологий СШАNISTв 2006 году. Однако уже в 2007 году независимыми исследователями было высказано предположение, что в этот алгоритм мог быть встроен бэкдор. Раз и два.

Согласно статье о бэкдоре в DUAL_EC_DRBG также говорил Сноуден.

A concrete example is the pseudorandom number generatorDual_EC_DBRG designed by NSA, whose backdoor was revealed by Edward Snowden in 2013 and also in some research works.

Ошибка в реализации протокола проверки сертификатов TLS Apple

Исследователями компании Яндекс была обнаружена уязвимость в реализации протоколаTLSв одном из программных продуктовApple. По их мнению, данная ошибка вполне может оказаться бэкдором, намеренно встроенным в алгоритм кем-то из разработчиков. Ниже участок кода с ошибкой

static DSStatus SSLVerifySignedServerKeyExchnge(....){     DSStatus err;     ....     if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)          goto fail;          goto fail;     if ((SSHashSHA1.final(&hashCtx, &hashOut)) != 0)          goto fail;     ....     fail:          ....          return err;}

Как можно видеть, после первого оператораifстоят две строчкиgoto fail, и вторая строчка выполняется всегда, независимо от результатаif. Таким образом процедура проверки сертификата проходит не полностью. Злоумышленник, знающий об этой уязвимости, может подделать сертификат и пройти проверку подлинности. Это позволит ему организовать атаку типа"Man-in-the-middle", тем самым вмешаться в защищённое соединение между клиентом и сервером. Исследователи, обнаружившие данную ошибку в реализации, не могут точно сказать, намеренно она была сделана или случайно. Вполне возможно, что это бэкдор, встроенный в алгоритм кем-то из разработчиков.

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

Ну так где же кроется уязвимость в BEA-1?

Для того чтобы разобраться в том, где кроется уязвимость, придётся погрузиться в дебри математики, на которых базируются современные блочные алгоритмы шифрования. Основа теории кодирования - поля Галуа. Очень качественно и детально про это написано вот тут. Облегчая математическую нагрузку, предлагаю для начала разобраться с тем, что такое Substitution-Permutation Networks, основа современных блочных алгоритмов шифрования.

SP сеть - это вычислительная сеть, которая состоит из S-блоков, P-блоков и операций побитового XOR с секретными ключами. Любая двоичная функция может быть сведена к S-блоку, некоторые функции к P-блоку. Например, к P-блоку сводится циклический сдвиг. Такие функции, как правило, легко реализуются в аппаратуре, обеспечивая при этом хорошую криптостойкость. С точки зрения реализации, S и P блоки представляют собой таблицы подстановки.

Substitution-Permutation NetworkSubstitution-Permutation Network

Шифр на основе SP-сети получает на вход блок и ключ и совершает несколько чередующихся раундов, состоящих из чередующихся стадий подстановки (англ. substitution stage) и стадий перестановки (англ. permutation stage). Стоит отметить, что S и P блоки одинаковы для всех раундов. В целях повышения безопасности на каждом раунде используются разные ключи (обозначены как K_i на изображении). Можно обратить внимание, на то что в последнем раунде нет P блока и используется два раунда

Для достижения безопасности достаточно одного S-блока, но такой блок будет требовать большого объёма памяти. Поэтому используются маленькие S-блоки, смешанные с P-блокам. S-блок замещает маленький блок входных бит на другой блок выходных бит. Эта замена должна быть взаимно однозначной, чтобы гарантировать обратимость. Назначение S-блока заключается в нелинейном преобразовании, что препятствует проведению линейного криптоанализа. Одним из свойств S-блока является лавинный эффект, то есть изменение одного бита на входе приводит к изменению всех бит на выходе. S-блок представляет из себя таблицу соответствия.

Так выглядит S-блок для алгоритма шифрования Rijndael, основы стандарта AESТак выглядит S-блок для алгоритма шифрования Rijndael, основы стандарта AES

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

Как было умно написано в Википедии

Нелинейная стадия подстановки перемешивает биты ключа с битами открытого текста, создавая конфузию Шеннона. Линейная стадия перестановки распределяет избыточность по всей структуре данных, порождая диффузию

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

Расшифровка происходит с помощью обратного хода процесса, с использованием инвертированных S и P блоков (обратное преобразование) и раундовых ключей. Стоит отметить, что не зная секретный ключ расшифровать зашифрованное таким образом сообщение будет крайне трудно. Это займёт очень много времени.

То есть, подводя итог: алгоритм шифрования состоит из нескольких раундов, где каждый раунд состоит из:

  • Применения нелинейности в виде S-блоков

  • Линейного преобразования в виде P-блока

  • Побитового XOR с раундовым ключом

Последний раунд не содержит P-блока, но в нём используются два раундовых ключа.

Не знаю как вы, но я себя чувствую смотрящим на мастерскую игру напёрсточника. Давайте попробуем угадать, где же нас тут могли обмануть. Перестановка бит выглядит безобидно, суммирование с ключом тоже. Остаётся предположить, что S-блоки выглядят подозрительно.

Действительно, бекдор может скрываться в S-блоках, но всё не так просто. Попытаюсь объяснить максимально просто и не грузить вас сложной математикой полей Галуа. Но если вы чувствуете в себе силы разобраться с математикой сами, прошу сюда .

Чуть более подробно про BEA-1

Для наилучшего понимания того, как устроена уязвимость я приведу некоторую информацию касательно реализации шифра BEA-1, построенного на вычислительной SP сети.

Этот блочный шифр:

  • Оперирует с блоками данных в 80 бит

  • Мастер ключ имеет размер в 120 бит, на базе этого ключа происходит вычисление ключей для каждого раунда, по процедуре ExpandKey, описанной в статье

  • Состоит из 11 раундов, из которых 10 одинаковые, а последний требует два раундовых ключа. Таким образом, необходимо 12 раундовых 80-битных ключей

Цитата

The encryption consists in applying eleven times a simple keyed operation called /round function/to the data block. A different 80-bit round key is used for each iteration of the round function. Since the last round is slightly different and uses two round keys, the encryption requires twelve 80-bit round keys. These round keys are derived from the 120-bit master key using an algorithm called key schedule

Больше деталей!

Для вашего удобства привел реализацию алгоритмов из статьи

Алгоритм генерации раундов ключей на базе мастер ключаАлгоритм генерации раундов ключей на базе мастер ключаАлгоритм шифрованияАлгоритм шифрованияАлгоритм расшифровкиАлгоритм расшифровкиПроцедура генерации раундовых ключей на базе мастер ключаПроцедура генерации раундовых ключей на базе мастер ключаТак выглядит один раунд алгоритма шифрованияТак выглядит один раунд алгоритма шифрования

На Fig. 2. P-блоки обозначены как M

В случае с алгоритмом BEA-1, который удовлетворяет современным стандартам шифрования для взлома в лоб потребуется перебор по огромному числу вариантов. Стоит заметить, что такой перебор невозможен, потому что шифр оперирует с блоками размером 80 бит, то есть множество всех открытых текстов (и шифротекстов) имеет размер равный 2^80.

Цитата

Consequently, a differential cryptanalysis of the 10-round version of our cipher would require at least 2^117 chosen plaintext/ciphertext pairs and a linear cryptanalysis would require 2^100 known plaintext/ciphertext pairs.

Максимально подробное описание данного алгоритма можно найти в оригинальной статье, там приведены все данные.

Загадочные S-блоки и их секретные напарники

Математическая уязвимость в алгоритме BEA-1 кроется в так называемых Secret S-boxes, секретных S-блоках. Их можно условно назвать напарниками обычных S-блоков и они многократно упрощают процесс перебора, необходимого для взлома алгоритма.

Говоря о реализации, секретные S-блоки незначительно отличаются от обычных S-блоков, в небольшом количестве параметров. Однако такое незначительное отличие параметров подобрано специальным образом. Если кратко, то почти для всех входных данных выходные данные секретного S-блока и обычного одинаковы, однако для некоторого заранее известного набора входных данных выходные данные секретного S-блока и обычного отличаются. Именно это знание позволяет значительно упростить процесс перебора, необходимого для взлома алгоритма.

Чтобы не быть голословным, для алгоритма BEA-1 для S0, S1, S2 количество входных данных для которых выходные данные секретного S-блока и обычного одинаковы есть 944 (из 1024, так как блоки работают с сегментами данных по 10 бит) для S3 это число 925 (также из 1024)

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

Для процесса перебора необходимо некоторе количество известных пар (открытий текст, зашифрованный текст). Для взлома BEA-1 необходимо 30.000 таких пар, то есть (2 300 Kb) данных, сам процесс взлома занимает порядка 10 секунд на intel Core i7, 4 cores, 2.50GHz.

Стандарты алгоритмов шифрования

В статье несколько раз упоминалось про стандарты, распространяющиеся на современные алгоритмы шифрования, предлагаю уделить этому моменту больше внимания. Стандарт шифрования подразумевает полное описание алгоритма шифрования с S и P блоками. В рамках стандарта размер ключа и количество раундов может варироваться. Как правило такой стандарт создаётся в процессе конкурса, где разные компании предлагают свои реализации алгоритма шифрования, которые должны быть устойчивы ко всем известным видам криптоанализа. В частности, устаревший ныне стандарт DES был разработан на базе алгоритма шифрования Люцифер компании IBM.

Сейчас в основном используется стандарт AES, например шифрование данных на устройствах компании Apple соответсвует этому стандарту. Упомянутый французскими исследователями. Backdoored Encryption Algorithm 1 был создан по образу и подобию алгоритма Rijndael, который как раз таки лёг в основу стандарта AES. Если вам интересно, то вот тут можно посмотреть S-блоки и реализацию стандарта AES, а тут можно посмотреть хардверную реализацию алгоритма Rijandel.

Предшественником стандарта AES был упомянутый ранее DES, также блочный шифр. Интересна история, когда в конце 1970 к разработке S-блоков приложило руку АНБ. Агенство Национальной Безопасности обвиняли в сознательном снижении криптостойкости данного алгоритма.

Однако в 1990 году Эли Бихам и Ади Шамир провели независимые исследования по дифференциальному криптоанализу основному методу взлома блочных алгоритмов симметричного шифрования. Эти исследования сняли часть подозрений в скрытой слабости S-перестановок. S-блоки алгоритма DES оказались намного более устойчивыми к атакам, чем если бы их выбрали случайно. Это означает, что такая техника анализа была известна АНБ ещё в 1970-х годах. Авторы статьи уделили этому моменту внимание. Они выразили опасение, что алгоритмы начала 1990 могли быть слабыми к дифференциальному криптоанализу.

Цитата

The best historic example is that of the differential cryptanalysis. Following Biham and Shamirs seminal work in 1991, NSA acknowledged that it was aware of that cryptanalysis years ago Most of experts estimate that it was nearly 20 years ahead. However a number of non public, commercial block ciphers in the early 90s might have been be weak with respect to differential cryptanalysis.

Про отечественные стандарты шифрования хорошо написано вот тут. В частности, на блочные шифры распространяется ГОСТ 34.12-2018. Если что, S-блоки там обозначены как \pi , это если вам вдруг захочется поискать бэкдоры в отечественных алгоритмах. Приведу ряд статей про странности S-блоков отечественных алгоритмов шифрования: раз, два и три.

Интересны размышления на тему создания математического бэкдора для уже существующего стандарта шифрования. В комментариях к статье @pelbylна похожую тему возник такой вопрос. Бесспорно, обладая сильной математической базой и хорошей смекалкой для уже существующего стандарта шифрования можно разработать "секретные S-блоки", которые бы могли незначительно ускорить процесс взлома зашифрованного сообщения. Однако на расшифровку сообщения, даже в таком случае, сообщения может потребоваться очень продолжительный промежуток времени. Разработка же "секретных S-блоков", которые могли бы значительно ускорить взлом алгоритма для существующих стандартов шифрования, до минут или хотя бы дней, является невероятно сложной вычислительной задачей. Хотя бы потому что эти стандарты разрабатывают самые умные люди планеты, которые могли сделать защиту от такой атаки. Но нельзя исключать возможность, что кому-то может повезти и он по счастливой случайности сможет вычислить идеальные секретные S-блоки для того же AES. Хочется добавить, что такое открытие может принести очень много денег.

Возвращаясь к новости про взлом айфона террориста, упомянутой в начале статьи, ФБР всё таки удалось его взломать, по разным оценкам они потратили на это около миллиона долларов (1.3M USD). Про сам процесс взлома известно немного.

Что известно

Взято отсюда

В деле фигурирует iPhone 5C под iOS9, в котором установлена система на кристалле A6. В нём тоже может быть включено уничтожение данных после 10 попыток. В телефоне нет аппаратного Secure Enclave. В этой модели многие функции безопасности обеспечиваются на уровне операционной системы. Поэтому для взлома может понадобиться всего лишь специальное обновление операционки. После этого единственным ограничением останется частота получения ключа шифрования раз в 80 миллисекунд. Впрочем, всё это является мнением экспертов.

Суть далеко не в шифровании или технической возможности взломать его. Включённое по умолчанию шифрование в iOSпоявилосьещё в восьмой версии осенью 2014 года. Уже тогда американские спецслужбы начали проявлять беспокойство и недовольство новыми мерами безопасности. ФБР очень не понравилось, что получать доступ к данным будет невозможно. А доступ нужен, чтобы преследовать преступников и предотвращать терроризм, утверждает спецслужба. Директор ФБР Джеймс Коуми предложил ввести прозрачную, понятную процедуру, которую он назвал front door. Также он высказался против бэкдоров. Эксперты по компьютерной безопасности назвали подобное подменой понятий. Позднее ФБРобратилосьс предложением законодательно обязать производителей оставлять лазейки.

Скрытое противостояние переродилось в конфликт после дела о массовом убийстве в Сан-Бернандино. В ходе расследования потребовалось получить доступ к данным на служебном iPhone 5C одного из фигурантов дела. Apple в суде обязали создать инструмент для подбора пользовательского пароля. 16 февраля Тим Кукопубликовалоткрытое письмо, в котором он назвал подобное бэкдором.

Однако летом 2020 китайские хакеры из объединения Pangu сообщили о взломе чипа Secure Enclave. Эти ребята занимаются Jailbreak-ом.

Более подробно про взаимодействие Apple и ФБР касательно предоставления бэкдора (на английском).

А вообще, про безопасность телефонов компании Apple хорошо и и интересно написано в этой статье. Также интересно почитать про брутфорс пароля iPhone 5c c зеркалированием флэш-памяти. Подозреваю, что загрузил вас ссылками, но надеюсь, что они помогут вам полноценно разобраться с этой темой.

Так как теперь шифровать?

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

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

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

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

Подробнее..

Уязвимости неуязвимого Linux

03.03.2021 18:08:18 | Автор: admin

Cреди обычных пользователей и даже ИТ-сотрудников распространено убеждение в повышенной безопасности ОС семейства Linux по сравнению с дырявой виндой и попсовой макосью. Однако, как показало наше исследование, открытость исходников не избавляет Linux от ошибок и уязвимостей, которые несут риски, связанные с безопасностью. В этом посте мы рассмотрим, почему Linux стал привлекательной мишенью для злоумышленников, а также обсудим основные угрозы и риски, связанные с этой операционной системой.

Фото: Trend MicroФото: Trend Micro

По данным Linux Foundation, ещё в 2017 году под управлением Linux работали 90% клиентских ресурсов у всех облачных провайдеров, причём в девяти из десяти случаев и сам облачный провайдер использовал в качестве основной ОС именно Linux. Но облаками дело не ограничивается: 82% всех выпущенных в мире смартфонов также используют Linux, а среди суперкомпьютеров доля Linux составляет 99%.

По мере того, как предприятия и организации переносят данные в облака, где царит Linux, вектор интереса злоумышленников смещается на слабые места этого семейства операционных систем: уязвимости, неправильные настройки и пробелы в безопасности, а также вредоносное ПО.

Уязвимости

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

Количество критических уязвимостей в различных дистрибутивах за 2015-2020 год. Источник: Trend MicroКоличество критических уязвимостей в различных дистрибутивах за 2015-2020 год. Источник: Trend Micro

Важно отметить, что значительное количество уязвимостей в сервисе или платформе не обязательно означает, что эти уязвимости обязательно несут существенный риск.


Каждый производитель дистрибутива Linux выполняет свою процедуру обработки уязвимостей. В то время как исправления от вендоров приходят в разное время, заплатки upstream, будь то оригинальный пакет или исходный код утилиты, появляются первыми. Вендоры Linux отвечают за исправление уязвимостей в таких компонентах, как ядро, утилиты и пакеты. В 2019 году Red Hat исправил более 1000 CVE в своём дистрибутиве Red Hat Enterprise Linux (RHEL), согласно их отчёту Product Security Risk Report. Это более 70% от общего числа уязвимостей, исправленных во всех продуктах.

Количество важных и критических рекомендаций по безопасности для различных дистрибутивов Linux за 2015-2020 годы. Источник: Trend MicroКоличество важных и критических рекомендаций по безопасности для различных дистрибутивов Linux за 2015-2020 годы. Источник: Trend Micro

Уязвимости приложений, работающих под управлением Linux, были причиной нескольких серьёзных инцидентов. Например, нашумевшая утечка данных в Equifax произошла в результате эксплуатации уязвимости CVE-2017-5638 в Apache Struts. Тогда хакеры проникли в корпоративную сеть бюро кредитных историй Equifax 13мая 2017года, но подозрительную активность служба безопасности заметила только в конце июля. Киберпреступники провели внутри сети 76дней, успев за это время скачать из 51базы данных личную информацию 148млн американцев это 56% взрослого населения США. Помимо американских граждан в утечку попали сведения 15млн клиентов Equifax в Великобритании и около 20тыс. граждан Канады. Общие расходы Equifax в результате этого инцидента за два следующих года составили более 1,35млрд долларов США и включают расходы на укрепление систем безопасности, поддержку клиентов, оплату юридических услуг, а также выплаты по судебным искам.

Уязвимости публичных приложений входят в состав фреймворка MITRE ATT&CK (IDT1190), а также перечислены в топ-10 уязвимостей OWASP и являются наиболее популярными векторами проникновения в Linux-системы.

Ошибки конфигурации

Небезопасные настройки довольно распространены и всегда были критическим вопросом в области безопасности. Первая версия OWASP Top 10 Web Risks от 2004года, включала в себя Небезопасное управление конфигурацией (Insecure Configuration Management); в версии списка 2017года название изменилось на Ошибочные настройки безопасности (Security Misconfiguration).

Когда предприятия стали массово переходить на облачные технологии для обеспечения операционной и экономической устойчивости во время пандемии COVID-19, неправильная конфигурация стала ещё более серьёзной проблемой: по мере переезда предприятий и организаций в новые экосистемы они непреднамеренно вносили ошибки в конфигурации облачной инфраструктуры, контейнеров и бессерверных сред.

Ниже перечислены наиболее распространённые проблемы безопасности в конфигурации Linux.

Слабые пароли в Linux как массовое явление

Использование паролей по умолчанию или слабых паролей до сих пор удивительно распространено, причём даже самые популярные дистрибутивы не отличаются в лучшую сторону.

Например, в дистрибутивах Debian/Ubuntu время жизни пароля по умолчанию составляет 99999дней, а если требуется принудительно задать сложность пароля, придётся устанавливать пакет libpam-pwquality или его аналог.

Настройки времени жизни пароля по умолчанию в Ubuntu (файл /etc/login.defs). Источник: linuxtechiНастройки времени жизни пароля по умолчанию в Ubuntu (файл /etc/login.defs). Источник: linuxtechi

Известный пример злоупотребления из-за отсутствия аутентификации произошёл в Tesla, когда злоумышленники получили доступ панели управления административной консоли, смогли взломать работающую подсистему Kubernetes и получить AWS-удостоверения Tesla для запуска майнера криптовалюты.

В ноябре 2020 года ФБР выпустило предупреждение о том, что злоумышленники злоупотребляют неправильно настроенными экземплярами SonarQube, который обнаруживает ошибки и уязвимости в безопасности исходного кода. Из-за того, что некоторые организации не поменяли настройки систем по умолчанию, они были доступны через порт 9000 с использованием учётных данных admin/admin.

Такая же проблема массово присутствует среди работающих под управлением Linux IoT-устройств, производители которых часто не утруждают себя безопасными настройками паролей. Многие IP-камеры и роутеры также поставляются без паролей или с паролями по умолчанию, которые можно легко найти в общедоступной базе паролей по умолчанию (Default Passwords Database). Причём в некоторых случаях пароли жёстко прошиты и не могут быть изменены.

Уязвимые службы в интернете

Развитие специализированных поисковых систем привело к тому, что уязвимый открытый порт в интернете можно расценивать как приглашение к атаке. Например, используя специализированную поисковую систему Shodan, мы обнаружили более 8тыс. уязвимых экземпляров Redis, размещённых в публичном облаке без TLS-шифрования и даже без пароля. Позже оказалось, что все они уже использовались кем-то для майнинга криптовалюты.

Открытые файловые ресурсы на Linux-серверах

Публично доступные FTP-, SMB- и NFS-ресурсы, разрешённый листинг каталогов на веб-серверах под управлением Linux, открытые облачные службы хранения данных Amazon S3 и Azure Blobсоздают потенциальный риск несанкционированного доступа. С помощью Shodan мы обнаружили более 3млн уязвимых публичных FTP-серверов.

Общее количество уязвимых публичных FTP-серверов по состоянию на 5 января 2021 года. Источник: Trend MicroОбщее количество уязвимых публичных FTP-серверов по состоянию на 5 января 2021 года. Источник: Trend Micro

Вредоносное ПО

Под Linux существуют многие разновидности вредоносных программ: вымогатели, криптомайнеры, руткиты, черви, бэкдоры и трояны удалённого доступа (RAT). Преступники успешно используют их для получения финансовой выгоды, шпионажа, саботажа, хактивизма или просто из желания доказать, что системы могут быть скомпрометированы.

Ниже перечислены наиболее распространённые типы вредоносных программ в экосистеме Linux.

Вымогатели

Это, безусловно, самая финансово успешная категория вредоносных программ за последнее время. Учитывая растущую популярность Linux, злоумышленники, управляющие вымогателями, считают эту операционную систему очень перспективной мишенью.

В качестве примера Linux-вымогателей можно привести RansomEXX/Defray7777, относительно недавно портированный под эту операционную систему. Его применяла кибергруппировка Gold Dupont, атакующая организации из сфер здравоохранения и образование и технологические отрасли.

Другой вымогатель Erebus, впервые замеченный в сентябре 2016 года, в июне 2017года Erebus заразил 153Linux-сервера южнокорейской хостинговой компании NAYANA и вывел из строя 3400 клиентских сайтов.

Криптомайнеры

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

Многие вредоносные криптомайнеры не просто заражают Linux-системы, но и очищают их от присутствия майнеров-конкурентов, а также стремятся захватить как можно более мощные системы с практически неограниченными вычислительными возможностями, такие как контейнеры Docker или Redis.

Для проникновения в систему майнеры используют распространённые уязвимости. Например, программа coinminer, детектируемая компанией Trend Micro под названием Coinminer.Linux.MALXMR.SMDSL64, использует уязвимости обхода авторизации SaltStack (CVE-2020-11651) и обхода каталога SaltStack (CVE-2020-11652).

Вредоносные скрипты

Командные интерпретаторы присутствуют на всех UNIX-машинах, поэтому злоумышленники активно используют его, тем более что это значительно проще, чем использовать скомпилированные вредоносные программы.

Причин популярности вредоносных скриптов для атак на Linux:

  • они легко загружаются в виде текстовых файлов;

  • они имеют небольшой размер;

  • меньше вероятность того, что они будут легко обнаружены;

  • они могут быть созданы на лету.

Веб-шеллы и бэкдоры

Веб-шелл установленный на веб-сервере скрипт, который выполняет команды преступника и обеспечивает ему прямой доступ к взломанной системе. Например, в августе 2020 года мы столкнулись с Ensiko, веб-оболочкой PHP, нацеленной на Linux, Windows, macOS или любую другую платформу, на которой установлен PHP. Помимо удалённого выполнения кода с помощью Ensiko злоумышленники могут выполнять команды оболочки и повреждать веб-сайты.

Руткиты

Руткит набор вредоносных программ, которые внедряются в Linux-систему, частично или полностью подменяя стандартные системные утилиты, драйверы и библиотеки. Основная цель руткита скрывать своё присутствие от администраторов и пользователей скомпрометированной системы, обеспечивая злоумышленнику полный или частичный контроль.

В ходе наших исследований мы сталкивались с несколькими семействами руткитов. Чаще всего это были Umbreon, Drovorub или Diamorphine.

Рекомендации

Предприятия продолжают внедрять Linux, причём использование этой ОС не ограничивается серверными задачами. Крупные предприятия активно устанавливают свободную ОС на десктопы пользователей. Очевидно, что когда киберпреступники заметят эту тенденцию, они будут всё чаще нацеливаться на среду Linux с целью получения финансовой выгоды.

Вот несколько рекомендаций по обеспечению безопасности систем Linux:

  • внедрите в качестве обязательного принцип Инфраструктура как код (Infrastructure as Code, IaC), который гарантирует что системы создаются должным образом, а их конфигурации соответствуют решаемым задачам;

  • используйте принцип наименьших привилегий и модель совместной ответственности;

  • контролируйте целостность операционной системы, чтобы подозрительные изменения не могли произойти незаметно;

  • отслеживайте сетевой периметр, проводите мониторинг всех устройств, систем и сетей;

  • замените пароли по умолчанию на сильные и безопасные, по возможности всегда включайте многофакторную аутентификацию;

  • регулярно устанавливайте обновления и исправления ошибок.

Подробнее..

Исследуем Spyder еще один бэкдор группировки Winnti

04.03.2021 10:11:49 | Автор: admin

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

Последний раз деятельность Winnti попадала в наше поле зрения, когда мы анализировали модификации бэкдоров ShadowPad и PlugX в рамках расследования атак на государственные учреждения стран Центральной Азии. Оба эти семейства оказались схожи концептуально и имели примечательные пересечения в коде. Сравнительному анализу ShadowPad и PlugX был посвящен отдельный материал.

В сегодняшней статье мы разберем бэкдор Spyder именно так окрестили найденный вредоносный модуль наши вирусные аналитики. Мы рассмотрим алгоритмы и особенности его работы и выявим его связь с другими известными инструментами APT-группы Winnti.

Чем примечателен Spyder

Вредоносный модуль представляет собой DLL-библиотеку, которая на зараженном устройстве располагалась в системной директории C:\Windows\System32 под именем oci.dll. Таким образом, модуль был подготовлен для запуска системной службой MSDTC при помощи метода DLL Hijacking. По нашим данным, файл попал на компьютеры в мае 2020 года, однако способ первичного заражения остался неизвестным. В журналах событий мы обнаружили записи о создании служб, предназначенных для старта и остановки MSDTC, а также для исполнения бэкдора.

Log Name: SystemSource: Service Control ManagerDate: 23.11.2020 5:45:17Event ID: 7045Task Category: NoneLevel: InformationKeywords: ClassicUser: Computer: Description:A service was installed in thesystem.Service Name: IIJVXRUMDIKZTTLAMONQService File Name: net start msdtcService Type: user mode serviceService Start Type: demand startService Account: LocalSystem
Log Name: SystemSource: Service Control ManagerDate: 23.11.2020 5:42:20Event ID: 7045Task Category: NoneLevel: InformationKeywords: ClassicUser: Computer: Description:A service was installed in thesystem.Service Name: AVNUXWSHUNXUGGAUXBREService File Name: net stop msdtcService Type: user mode serviceService Start Type: demand startService Account: LocalSystem

Также мы нашли следы запуска других служб со случайными именами, их файлы располагались в директориях вида C:\Windows\Temp\<random1>\<random2>, где random1 и random2 являются строками случайной длины из случайных символов латинского алфавита. На момент проведения исследования исполняемые файлы этих служб отсутствовали.

Интересной находкой стала служба, свидетельствующая об использовании утилиты для удаленного исполнения кода smbexec.py из состава набораImpacket. С её помощью злоумышленники организовали удаленный доступ к командной оболочке в полуинтерактивном режиме.

Исследуемый вредоносный модуль oci.dll был добавлен в вирусную базу Dr.Web как BackDoor.Spyder.1. Это название пришло к нам из артефактов бэкдора. В одном из найденных образцов остались функции ведения отладочного журнала и сами сообщения, при этом те из них, которые использовались при коммуникации с управляющим сервером, содержали строку Spyder.

Бэкдор примечателен рядом интересных особенностей. Во-первых, oci.dll содержит основной PE-модуль, но с отсутствующими файловыми сигнатурами. Заполнение сигнатур заголовка нулями предположительно было сделано с целью затруднения детектирования бэкдора в памяти зараженного устройства. Во-вторых, полезная нагрузка сама по себе не несет вредоносной функциональности, но служит загрузчиком и координатором дополнительных плагинов, получаемых от управляющего сервера. С помощью этих подключаемых плагинов бэкдор выполняет основные задачи. Таким образом, это семейство имеет модульную структуру, как и другие семейства бэкдоров, используемые Winnti, упомянутые ранее ShadowPad и PlugX.

Анализ сетевой инфраструктуры Spyder выявил связь с другими атаками Winnti. В частности инфраструктура, используемая бэкдорами Crosswalk и ShadowPad, описанными в исследовании Positive Technologies, перекликается с некоторыми образцами Spyder. График ниже наглядно показывает выявленные пересечения.

Пожалуйста, масштабируйте страницу для чтения надписей, спасибо :)Пожалуйста, масштабируйте страницу для чтения надписей, спасибо :)

Принцип действия

Бэкдор представляет собой вредоносную DLL-библиотеку. Имена функций в таблице экспорта образца дублируют экспортируемые функции системной библиотеки apphelp.dll.

Функционально образец является загрузчиком для основной полезной нагрузки, которую хранит в секции .data в виде DLL, при этом некоторые элементы DOS и PE заголовков равны нулю.

Работа загрузчика

Загрузка выполняется в функции, обозначенной как malmain_3, вызываемой из точки входа DLL через две промежуточные функции-переходника.

Далее следует стандартный процесс загрузки PE-модуля в память и вызов точки входа загруженного модуля (DllMain) с аргументом DLL_PROCESS_ATTACH, а после выхода из нее повторный вызов с DLL_PROCESS_DETACH.

Работа основного модуля

В основном модуле значения всех сигнатур, необходимых для корректной загрузки файла, приравнены к нулю.

  • IMAGE_DOS_HEADER.e_magic

  • IMAGE_NT_HEADERS64.Signature

  • IMAGE_NT_HEADERS64.FileHeader.Magic

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

Анализ основного модуля затруднен, так как периодически используются нетипичные способы вызова функций. Для хранения и обработки структур используется библиотека UT hash. Она позволяет преобразовывать стандартные C-структуры в хеш-таблицы путем добавления одного члена типа ut_hash_handle. При этом все функции библиотеки, такие как добавление элементов, поиск, удаление и т. д., реализованы в виде макросов, что приводит к их принудительному разворачиванию и встраиванию (inline) компилятором в код основной (вызывающей) функции.

Для взаимодействия с управляющим сервером используется библиотека mbedtls.

Функция DllMain

В начале исполнения проверяется наличие события Global\\BFE_Notify_Event_{65a097fe-6102-446a-9f9c-55dfc3f45853}, режим исполнения (из конфигурации) и командная строка, затем происходит запуск рабочих потоков.

Модуль имеет встроенную конфигурацию следующей структуры:

structcfg_c2_block{inttype;charfield_4[20];charaddr[256];}structcfg_proxy_data{DWORDdw;charstr[256];charproxy_server[256];charusername[64];charpassword[32];charunk[128];};structbuiltin_config{intexec_mode;charurl_C2_req[100];charhash_id[20];charstring[64];charfield_BC;cfg_c2_block srv_1;cfg_c2_block srv_2;cfg_c2_block srv_3;cfg_c2_block srv_4;cfg_proxy_data proxy_1;cfg_proxy_data proxy_1;cfg_proxy_data proxy_1;cfg_proxy_data proxy_1;intCA_cert_len;charCA_cert[cert_len];};

Поле hash содержит некое значение, которое может являться идентификатором. Это значение используется при взаимодействии с управляющим сервером и может быть представлено в виде строки b2e4936936c910319fb3d210bfa55b18765db9cc, которая по длине совпадает с SHA1-хешами.

Поле string содержит строку из одного символа: 1.

CA_cert сертификат центра сертификации в формате DER. Он используется для установки соединения с управляющим сервером по протоколу TLS 1.2.

В функции DllMain предусмотрено создание нескольких рабочих потоков в зависимости от ряда условий.

  • Основной поток thread_1_main

  • Поток запроса нового сервера thread_2_get_new_C2_start_communication

  • Поток исполнения зашифрованного модуля thread_4_execute_encrypted_module

Основной поток

Вначале бэкдор проверяет версию ОС, затем подготавливает структуру для инициализации функций и структуру для хранения некоторых полей конфигурации. Процедура выглядит искусственно осложненной.

В структуру funcs_struc типа funcs_1 заносятся 3 указателя на функции, которые будут поочередно вызваны внутри функции init_global_funcs_and_allocated_cfg.

В функции set_global_funcs_by_callbacks происходит вызов каждой функции-инициализатора по очереди.

Общий порядок формирования структур выглядит следующим образом:

1) каждой функции передаются две структуры: первая содержит указатели на некоторые функции, вторая пустая;

2) каждая функция переносит указатели на функции из одной структуры в другую;

3) после вызова функции-инициализатора происходит очередное перемещение указателей на функции из локальной структуры в глобальный массив структур по определенному индексу.

В итоге после всех нестандартных преобразований получается некоторое количество глобальных структур, которые объединены в один массив.

В конечном итоге вызов функций можно представить следующим образом.

Сложные преобразования копирование локальных структур с функциями и их перенос в глобальные структуры вероятно, призваны усложнить анализ вредоносного образца.

Затем бэкдор при помощи библиотеки UT hash формирует хеш-таблицу служебных структур, ответственных за хранение контекста сетевого соединения, параметров подключения и т. д.

Фрагмент кода формирования хеш-таблицы.

Стоит отметить, что здесь располагается значение сигнатуры, которое позволяет определить используемую библиотеку: g_p_struc_10->hh.tbl->signature = 0xA0111FE1;.

Для рассматриваемого бэкдора характерно распределение значимых полей и данных по нескольким создаваемым для этого структурам. Эта особенность при анализе затрудняет создание осмысленных имен для структур.

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

Инициализация соединения с управляющим сервером

После ряда подготовительных действий бэкдор разрешает хранящийся в конфигурации адрес управляющего сервера и извлекает порт. Адреса в конфигурации хранятся в виде строк: koran.junlper[.]com:80 и koran.junlper[.]com:443. Далее программа создает TCP-сокет для подключения. После этого создает контекст для защищенного соединения и выполняет TLS-рукопожатие.

После установки защищенного соединения бэкдор ожидает от управляющего сервера пакет с командой. Программа оперирует двумя форматами пакетов:

  • пакет, полученный после обработки протокола TLS, транспортный пакет;

  • пакет, полученный после обработки транспортного пакета, пакет данных. Содержит идентификатор команды и дополнительные данные.

Заголовок транспортного пакета представлен следующей структурой.

structtransport_packet_header{DWORDsignature;WORDcompressed_len;WORDuncompressed_len;};

Данные располагаются после заголовка и упакованы алгоритмом LZ4. Бэкдор проверяет значение поля signature, оно должно быть равно 0x573F0A68.

После распаковки полученный пакет данных имеет заголовок следующего формата.

structdata_packet_header{WORDtag;WORDid;WORDunk_0;BYTEupdate_data;BYTEid_part;DWORDunk_1;DWORDunk_2;DWORDlen;};

Поля tag и id в совокупности определяют действие бэкдора, то есть обозначают идентификатор команды.

Данные структуры заголовков используются в обоих направлениях взаимодействия.

Порядок обработки команд сервера:

  • верификация клиента;

  • отправка информации о зараженной системе;

  • обработка команд по идентификаторам.

В структуре, отвечающей за взаимодействие с управляющим сервером, есть переменная, которая хранит состояние диалога. В связи с этим перед непосредственным выполнением команд необходимо выполнение первых двух шагов, что можно рассматривать как второе рукопожатие.

Этап верификации

Для выполнения этапа верификации значения полей tag и id в полученном от управляющего сервера первичном пакете должны быть равны 1.

Процесс верификации состоит в следующем:

1. Бэкдор формирует буфер из 8-байтного массива, который следует после заголовка пакета и поля hash_id, взятого из конфигурации. Результат можно представить в виде структуры:

struct buff{BYTEpacket_data[8];BYTEhash_id[20];}

2. Вычисляется SHA1-хеш данных в полученном буфере, результат помещается в пакет (после заголовка) и отправляется на сервер.

Отправка информации о системе

Следующий полученный пакет от управляющего сервера должен иметь значения tag, равное 5, и id, равное 3. Данные о системе формируются в виде структуры sysinfo_packet_data.

structsession_info{DWORDid;DWORDState;DWORDClientBuildNumber;BYTEuser_name[64];BYTEclient_IPv4[20];BYTEWinStationName[32];BYTEdomain_name[64];};structsysinfo_block_2{WORDfield_0;WORDfield_2;WORDfield_4;WORDsystem_def_lang_id;WORDuser_def_lang_id;DWORDtimezone_bias;DWORDprocess_SessionID;BYTEuser_name[128];BYTEdomain_name[128];DWORDnumber_of_sessions;session_info sessions[number_of_sessions];};structsysinfo_block_1{DWORDunk_0;//0DWORDbot_id_created;DWORDdw_const_0;//0x101DWORDos_version;WORDdw_const_2;//0x200BYTEcpu_arch;BYTEfield_13;DWORDmain_interface_IP;BYTEMAC_address[20];BYTEbot_id[48];WCHARcomputer_name[128];BYTEcfg_string[64];WORDw_const;//2WORDsessions_size;};structsysinfo_packet_data{DWORDid;sysinfo_block_1 block_1;sysinfo_block_2 block_2;};

Поле sysinfo_packet_data.id содержит константу 0x19C0001.

Примечателен процесс определения бэкдором значений MAC-адреса и IP-адреса. Вначале программа ищет сетевой интерфейс, через который прошло наибольшее количество пакетов, затем получает его MAC-адрес и далее по нему ищет IP-адрес этого интерфейса.

Версия ОС кодируется значением от 1 до 13 (0, если возникла ошибка), начиная с 5.0 и далее по возрастанию версии.

В поле sysinfo_packet_data.block_1.cfg_string помещается значение string из конфигурации бэкдора, которое равно символу 1.

Обработка команд

После верификации и отправки системной информации BackDoor.Spyder.1 приступает к обработке главных команд. В отличие от большинства бэкдоров, команды которых имеют вполне конкретный характер (забрать файл, создать процесс и т. д.), в данном экземпляре они носят скорее служебный характер и отражают инструкции по хранению и структурированию получаемых данных. Фактически все эти служебные команды нацелены на загрузку новых модулей в PE-формате, их хранение и вызов тех или иных экспортируемых функций. Стоит отметить, что модули и информация о них хранятся в памяти в виде хеш-таблиц с помощью UT-hash.

tag

id

Описание

6

1

Отправить на сервер количество полученных модулей.

2

Сохранить в памяти параметры получаемого модуля.

3

Сохранить в памяти тело модуля.

4

Загрузить сохраненный ранее модуль. Поиск выполняется в хеш-таблице по идентификатору, полученному в пакете с командой. Модуль загружается в память, вызывается его точка входа, затем получаются адреса 4 экспортируемых функций, которые сохраняются в структуре для дальнейшего вызова. Вызвать экспортируемую функцию 1.

5

Вызвать экспортируемую функцию 4 одного из загруженных модулей, затем выгрузить его.

6

Отправить в ответ пакет, состоящий только из заголовка data_packet_header, в котором поле unk_2 равно 0xFFFFFFFF.

7

Вызвать экспортируемую функцию 2 одного из загруженных модулей.

8

Вызвать экспортируемую функцию 3 одного из загруженных модулей.

5

2

Отправить на сервер информацию о текущих параметрах подключения.

4

-

Предположительно экспортируемая функция 1 может возвращать таблицу указателей на функции, и по этой команде программа вызывает одну из данных функций.

После обработки каждого полученного от сервера пакета бэкдор проверяет разницу между двумя значениями результата GetTickCount. Если значение превышает заданное контрольное значение, то отправляет на сервер значение сигнатуры 0x573F0A68 без каких-либо дополнительных данных и преобразований.

Заключение

Рассмотренный образец бэкдора для целевых атак BackDoor.Spyder.1 примечателен в первую очередь тем, что его код не исполняет прямых вредоносных функций. Его основные задачи скрытое функционирование в зараженной системе и установление связи с управляющим сервером с последующим ожиданием команд операторов. При этом он имеет модульную структуру, что позволяет масштабировать его возможности, обеспечивая любую функциональность в зависимости от нужд атакующих. Наличие подключаемых плагинов роднит рассмотренный образец с ShadowPad и PlugX, что, вкупе с пересечениями сетевых инфраструктур, позволяет нам сделать вывод о его принадлежности к деятельности Winnti.

Подробнее..

Пока расследование не разлучит нас малварь, которая может сидеть в сети компании годами

02.04.2021 12:23:26 | Автор: admin

Недавно мы расследовали АРТ-атаку на одну российскую компанию и нашли много занятного софта. Сначала мы обнаружили продвинутый бэкдор PlugX, популярный у китайских группировок, АРТ-атаки которых обычно нацелены на похищение конфиденциальной информации, а не денег. Затем из скомпрометированной сети удалось вытащить несколько других схожих между собой бэкдоров (nccTrojan, dnsTrojan, dloTrojan) и даже общедоступных утилит.


Программы, используемые в этой преступной кампании, не отличаются сложностью, за исключением, может быть, PlugX. К тому же три из четырех вредоносов использовали при запуске давно известную технику DLL hijacking. Тем не менее, как показало наше исследование, даже при таких условиях злоумышленники могут годами оставаться в скомпрометированных сетях.


Мы решили изучить обнаруженный софт и поделиться своими наблюдениями.


PlugX


PlugX сложная вредоносная программа. Мы постараемся рассказать о ее основных функциях, а более подробное описание малвари можно найти в отчете Dr. Web.


Запуск PlugX


PlugX, как правило, распространяется в виде самораспаковывающихся архивов, содержащих:


  • невредоносный исполняемый файл (EXE), подписанный цифровой подписью (нам попадались подписи McAfee, Kaspersky, Support.com);
  • вредоносную динамическую библиотеку (Dynamic Link Library DLL);
  • зашифрованную основную нагрузку файлы с произвольными именем и расширением.

Такой набор характерен для техники DLL hijacking, при которой злоумышленник заменяет легитимную DLL на вредоносную. При этом малварь получает возможность работать от имени легитимного процесса и обходить таким образом средства защиты (рис. 1).



Рис. 1. Наглядное представление техники DLL hijacking


Рассмотрим в качестве примера один из экземпляров PlugX, характеристики которого приведены в табл. 1.


Табл. 1. Свойства файлов одного из образцов PlugX
Свойство EXE DLL Зашифрованная нагрузка
Имя файла mcut.exe mcutil.dll mcutil.dll.bbc
Тип файла PE32 executable (EXE) PE32 executable (DLL) None
Размер (в байтах) 140 576 4 096 180 358
Время компиляции 13 июня 2008 года 02:39:28 9 декабря 2014 года 10:06:14
MD5 884d46c01c762ad6ddd2759fd921bf71 e9a1482a159d32ae57b3a9548fe8edec 2d66d86a28cd28bd98496327313b4343
SHA-1 d201b130232e0ea411daa23c1ba2892fe6468712 a2a6f813e2276c8a789200c0e9a8c71c57a5f2d6 7bcf4f196578f2a43a2cd47f0b3c8d295120b646
SHA-256 3124fcb79da0bdf9d0d1995e37b06f7929d83c1c4b60e38c104743be71170efe 2f81cf43ef02a4170683307f99159c8e2e4014eded6aa5fc4ee82078228f6c3c 0c831e5c3aecab14fe98ff4f3270d9ec1db237f075cd1fae85b7ffaf0eb2751

Вот что происходит при запуске невредоносного исполняемого файла (EXE) из пакета.


Сначала одна из импортируемых им библиотек (отдельная DLL) заменяется вредоносной. После загрузки в память процесса DLL открывает третий файл из пакета PlugX, который обходит средства защиты за счет отсутствия видимого исполняемого кода. Тем не менее он содержит шелл-код, после исполнения которого в памяти расшифровывается еще один дополнительный шелл-код. Он с помощью функции RtlDecompressBuffer() распаковывает PlugX (DLL). При открытии мы видим, что сигнатуры MZ и PE в исполняемом файле PlugX заменены на XV (рис. 2) скорее всего, это тоже нужно, чтобы скрыть модуль от средств защиты.



Рис. 2. Исполняемый файл PlugX в распакованном виде с измененными сигнатурами MZ и PE


Наконец, запускается распакованная вредоносная библиотека, и управление передается ей.


В другом экземпляре PlugX мы обнаружили интересную особенность: малварь пыталась скрыть некоторые библиотечные вызовы от песочниц. При восстановлении импортов вместо адреса импортируемой функции сохранялся адрес тремя байтами ранее. Результат для функции SetFileAttributesW() виден на рис. 3.



Рис. 3. При получении адреса функции SetFileAttributesW() сохраняется адрес 0x7577D4F4


В табл. 2 приведены характеристики этого экземпляра.


Табл. 2. Свойства файлов образца вредоносной программы PlugX, который пытался скрыть вызовы от песочниц
Свойство EXE DLL Зашифрованная нагрузка
Имя файла mcut.exe mcutil.dll mcutil.dll.bbc
Тип файла PE32 executable (EXE) PE32 executable (DLL) None
Размер 140 576 4 096 179 906
MD5 884d46c01c762ad6ddd2759fd921bf71 12ee1f96fb17e25e2305bd6a1ddc2de9 e0ae93f9cebcba2cb44cec23993b8917
SHA-1 d201b130232e0ea411daa23c1ba2892fe6468712 bf25f1585d521bfba0c42992a6df5ac48285d763 f0efdb723a65e90afaebd56abe69d9f649ca094c
SHA-256 3124fcb79da0bdf9d0d1995e37b06f7929d83c1c4b60e38c104743be71170efe 97ad6e95e219c22d71129285299c4717358844b90860bb7ab16c5178da3f1686 81e53c7d7c8aa8f98c951106a656dbe9c931de465022f6bafa780a6ba96751eb

На рис. 4 представлен фрагмент кода PlugX, где встречается функция SetFileAttributesW(), и листинг из одной из песочниц.



а)



б)
Рис. 4. Фрагмент декомпилированного кода (а) и соответствующий ему фрагмент листинга перехваченных инструкций (б), где встречается вызов функции SetFileAttributesW()


В листинге из песочницы мы не видим вызов функции SetFileAttributesW(). Впрочем, вызовы функций LoadLibrary() и GetProcAddress(), которые были импортированы аналогичным образом, мы тоже не видим.


Основная нагрузка PlugX не сохраняется в расшифрованном виде на диске.


Работа PlugX


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


При этом данные для конфигурации могут браться из основного загрузчика или из отдельного файла в текущей рабочей директории. Из того же файла может быть подтянута новая конфигурация при ее обновлении в ходе взаимодействия с сервером управления.


То, как вредонос будет вести себя дальше, во многом определяет его конфигурация.


В зависимости от значения check_flag в конфигурации PlugX вредоносная программа может начать поиск в зараженной системе сетевого адаптера, MAC-адрес которого совпадает с адресом, заданным в самой малвари. В случае совпадения вредоносная программа завершит свое исполнение. Вероятно, таким образом она пытается обнаружить виртуальную среду.


Режим работы вредоносной программы зависит от значения флага конфигурации mode_flag, которое может быть равно 0, 2, 3 или 4.


Если значение mode_flag равно 0, вредоносная программа закрепляется в системе (подробнее в разделе Закрепление в системе). Затем она переходит к инициализации плагинов и взаимодействию с сервером управления (подробнее в разделе Функциональность плагинов и исполнение команд).


Если значение mode_flag равно 2, вредоносная программа сразу переходит к инициализации плагинов и взаимодействию с сервером управления.


Если значение mode_flag равно 3, вредоносная программа внедряет шелл-код в Internet Explorer. Передача управления вредоносному коду осуществляется с помощью функции CreateRemoteThread(). Также производится инициализация плагинов, и создается именованный пайп, через который вредоносная программа получает команды, предназначенные для исполнения плагинами.


Если значение mode_flag равно 4, устанавливается перехват некоторых функций библиотеки wininet.dll. В функции-перехватчике извлекаются логины и пароли для подключения к прокси-серверу. Полученные данные будут сохранены в файле в рабочей директории вредоносной программы. При этом имена файлов, создаваемых малварью в процессе функционирования, генерируются на основе серийного номера диска и некоторого уникального для каждого файла значения. Перехватываются следующие функции:


  • HttpSendRequestA(),
  • HttpSendRequestW(),
  • HttpSendRequestExA(),
  • HttpSendRequestExW().

Закрепление в системе


Если конфигурация PlugX предусматривает закрепление вредоноса в зараженной системе, то в ней прописан каталог, в который будут скопированы компоненты малвари.


Анализируемый образец выбирает одну из следующих директорий в зависимости от разрядности малвари:


  • %SystemRoot%\System32\winssxs,
  • %SystemRoot%\SysWOW64\winssxs.

Для созданной директории и скопированных в нее компонентов программа пытается установить временные метки, совпадающие с временными метками библиотеки ntdll.dll из зараженной системы. Возможно, это нужно для маскировки под компонент ОС. Также PlugX скрывает эти файлы от пользователя, выставляя атрибуты FILE_ATTRIBUTE_SYSTEM и FILE_ATTRIBUTE_HIDDEN. В конфигурации указывается путь к месту, где будут сохраняться скриншоты, сделанные вредоносной программой.


В зависимости от persistence_flag PlugX может закрепляться:


  • как сервис (persistence_flag=1),
  • через реестр (persistence_flag=2),
  • любым из двух способов (persistence_flag=0), сначала попытаться создать сервис, а в случае неудачи закрепиться через реестр.

Помним, что малварь может и не закрепляться вовсе.


Когда вредонос пытается закрепиться как сервис, он маскируется под легитимную программу. Имя службы и ее параметры задаются в конфигурации. Например, в нашем образце создается сервис с именем SSXSS (отображаемое имя SSXS) и описанием McAfee OEM Info Copy Files, а качестве исполняемого файла службы используется невредоносный mcut.exe.


Если закрепиться в качестве службы не удается, программа пытается закрепиться через реестр и перезапускает себя из каталога, в который была скопирована ранее. Для этого она использует ключ реестра HKCU\Software\Microsoft\Windows\CurrentVersion\Run. Ключ реестра и параметр задаются через конфигурацию: в анализируемом образце в параметр, соответствующий отображаемому имени сервиса, программа прописывает путь до того же mcut.exe.


После того, как вредоносная программа закрепилась и перезапустилась, производится внедрение вредоносного кода. В анализируемом образце он работает в памяти легитимного процесса svchost.exe. Имя процесса подтягивается из конфигурации. Если внедрение кода прошло успешно, текущий процесс завершается.


В зависимости от конфигурации вредоносная программа может также попытаться создать процесс с повышенными привилегиями с последующим внедрением в него кода. В конфигурации могут быть перечислены до четырех целевых процессов.


Функциональность плагинов PlugX и исполняемые команды


Основная функциональность бэкдора реализована с помощью так называемых плагинов. Фрагмент функции, в которой производится инициализация плагинов, приведен на рис. 5.



Рис. 5. Фрагмент инициализации плагинов PlugX


PlugX может управлять процессами и службами, работать с файловой системой, вносить изменения в реестр. Он также имеет компоненты кейлоггера и скринлоггера и может получать удаленный доступ к зараженной системе все это дает обширные возможности злоумышленникам в скомпрометированной сети.


Полный перечень функций вредоносной программы, доступной через плагины, приведен в табл. 3.


Табл. 3. Функциональность PlugX, доступная через плагины


Плагин Команда Функциональные возможности
DISK
0x3000
Собрать информацию по всем дискам (тип и свободное пространство)
0x3001
Перечислить файлы в директории
0x3002
Перечислить файлы
0x3004
Прочитать файл
0x3007
Создать директорию и сохранить в нее файл
0x300A
Создать директорию
0x300C
Создать новый рабочий стол и запустить процесс
0x300D
Копировать, переместить, переименовывать или удалить файл
0x300E
Получить значение переменной окружения
KeyLogger
0xE000
Отправить данные кейлоггера на сервер управления
Nethood
0xA000
Перечислить сетевые ресурсы
0xA001
Установить соединение с сетевым ресурсом
Netstat
0xD000
Получить таблицу TCP
0xD001
Получить таблицу UDP
0xD002
Установить состояние TCP
Option
0x2000
Заблокировать экран компьютера
0x2001
Отключить компьютер (принудительно)
0x2002
Перезагрузить компьютер
0x2003
Отключить компьютер (безопасно)
0x2005
Показать окно с сообщением
PortMap
0xB000
Возможно, запустить маппинг портов
Process
0x5000
Получить информацию о процессах
0x5001
Получить информацию о процессе и модулях
0x5002
Завершить процесс
Regedit
0x9000
Перечислить подразделы ключа реестра
0x9001
Создать ключ реестра
0x9002
Удалить ключ реестра
0x9003
Скопировать ключ реестра
0x9004
Перечислить значения ключа реестра
0x9005
Задать значение ключа реестра
0x9006
Удалить значение из ключа реестра
0x9007
Получить значение из ключа реестра
Screen
0x4000
Использовать удаленный рабочий стол
0x4100
Сделать скриншот
0x4200
Найти скриншоты в системе
Service
0x6000
Получить информацию о сервисах в системе
0x6001
Изменить конфигурацию сервиса
0x6002
Запустить сервис
0x6003
Управлять сервисом
0x6004
Удалить сервис
Shell
0x7002
Запустить cmd-шелл
SQL
0xC000
Получить список баз данных
0xC001
Получить список описаний драйверов
0xC002
Выполнить SQL-команду
Telnet
0x7100
Настроить Telnet

Фрагмент функции обработки команд, полученных от сервера управления приведена на рис. 6.



Рис. 6. Команды сервера управления, которые получает PlugX


Описание команд приведено в табл. 4.


Табл. 4. Команды сервера управления, которые получает PlugX


Команда Описание
0x1 Отправить на сервер управления данные о зараженной системе:
имя компьютера;
имя пользователя;
информация о CPU;
текущее использование памяти системой;
информация об операционной системе;
системные дата и время;
системная информация;
язык системы
0x5 Самоудалиться (удалить службу, очистить реестр)
0x3 Передать команды плагинам со сменой протокола взаимодействия
0x6 Отправить текущую конфигурацию PlugX на сервер управления
0x7 Получить с сервера управления новую конфигурацию и обновить текущую
0x8 Отправить список процессов с внедренным шелл-кодом
default Передать команды плагинам

nccTrojan


Один из обнаруженных нами бэкдоров найден в отчете VIRUS BULLETIN и назван авторами nccTrojan по константному значению в коде основного пейлоада. Характеристики попавшегося нам образца малвари приведены в табл. 5.


Табл. 5. Свойства анализируемого образца nccTrojan
Свойство EXE DLL
Имя файла instsrv.exe windowsreskits.dll
Тип файла PE32 executable (EXE) PE32 executable (DLL)
Размер (в байтах) 83 968 514 048
Время компиляции 18 декабря 2019 года 03:13:03 21 марта 2020 года 15:19:04
MD5 c999b26e4e3f15f94771326159c9b8f9 056078b1c424667e6a67f9867627f621
SHA-1 ec12c469463029861bd710aec3cb4a2c01907ad2 5bd080285a09c0abf742fb50957831310d9d9769
SHA-256 07d728aa996d48415f64bac640f330a28e551cd565f1c5249195477ccf7ecfc5 3be516735bafbb02ba71d56d35aee8ce2ef403d08a4dc47b46d5be96ac342bc9

Запуск nccTrojan


Вредоносная программа состоит из двух файлов: EXE и DLL, но в данном случае техника DLL hijacking не используется. После запуска вредоносный EXE-файл (MD5: c999b26e4e3f15f94771326159c9b8f9) регистрирует библиотеку windowsreskits.dll (MD5: 056078b1c424667e6a67f9867627f621) в качестве сервиса. В зависимости от разрядности библиотеки ее файл копируется в одну из директорий:


  • %SystemRoot%\System32;
  • %SystemRoot%\SysWOW64 .

В результате создается сервис с именем WindowsResKits, работающий в контексте процесса svchost.exe.


Работа nccTrojan


nccTrojan расшифровывает конфигурацию, хранящуюся по определенному смещению в оверлее. Конфигурация зашифрована с помощью алгоритма AES-CFB-256, он же используется для шифрования взаимодействия с сервером управления. Пары ключ шифрования + вектор инициализации захардкоржены и различны для шифрования конфигурации и взаимодействия с сервером управления.


Расшифрованная конфигурация содержит информацию о сервере управления и выглядит следующим образом:


***news.niiriip.com|#|none|#|none|#|443|#|none|#|none|#|passwd|#|ncc|#|v2.2[Service]***


Строка v2_2[Service], вероятнее всего, характеризует версию вредоносной программы и также используется в качестве имени при создании мьютекса.


В зависимости от конфигурации nccTrojan может иметь до трех серверов управления. В исследуемом экземпляре вредоносной программы задан лишь один сервер управления news.niiriip[.]com, а поля конфигурации под оставшиеся два заполнены none.


Дальнейшее взаимодействие осуществляется только в случае получения с сервера управления пакета, который после расшифровывания содержит строку ncc.


Если соединение установлено, то на сервер управления отправляется следующая информация:


  • имя компьютера,
  • контрольная сумма от отправляемых данных,
  • имя пользователя,
  • уровень привилегий пользователя в системе (SYSTEM, Administrator или User),
  • IP-адреса зараженной системы,
  • идентификатор версии операционной системы,
  • язык системы.

При этом из собранных данных формируется строка, которая дальше зашифровывается и отправляется на сервер управления. Формат создаваемой строки:


passwd|#|<check_sum>|#|<computer_name>|#|<user_name>|#|<user_privilege>|#|<ip_addr_1 / ip_addr_2 / ...>|#|None|#|v2.2[Service]|#|<os_version_ID>|#|<language_ID>


Далее вредоносная программа переходит к взаимодействию с сервером управления и может исполнять команды, приведенные в табл. 6.


Табл. 6. Команды, исполняемые nccTrojan


Команда Назначение
0x2 Запустить сmd-шелл
0x3 Выполнить команду через cmd-шелл
0x4 Записать данные в файл
0x5 Получить информацию о дисках C-Z (тип, свободный объем памяти)
0x6 Получить информацию о файлах
0x8 Запустить процесс
0xA Удалить файл или директорию
0xC Прочитать файл
0xF Проверить наличие файла
0x11 Сохранить файл
0x13 Получить список запущенных процессов
0x15 Завершить процесс
0x17 Скопировать файл
0x1A Переместить файл
0x1D Запустить cmd-шелл с правами пользователя

dnsTrojan


Следующий бэкдор мы обнаружили впервые: на момент расследования мы не нашли упоминаний о нем в отчетах других экспертов. Его отличительная особенность общение с сервером управления через DNS. В остальном по своей функциональности вредоносная программа схожа с бэкдором nccTrojan. Чтобы сохранить единообразие в названиях найденной малвари, назвали ее dnsTrojan.


В рамках инцидента обнаружен CAB-архив, содержащий вредоносный исполняемый файл (MD5: a3e41b04ed57201a3349fd42d0ed3253). Характеристики образца, который мы вытащила в ходе расследования, приведены в табл. 7.


Табл. 7. Свойства анализируемого образца dnsTrojan
Свойство EXE
Имя a.exe.ok
Тип файла PE32 executable (EXE)
Размер (в байтах) 417 280
Время компиляции 13 октября 2020 года 20:05:59
MD5 a3e41b04ed57201a3349fd42d0ed3253
SHA-1 172d9317ca89d6d21f0094474a822720920eac02
SHA-256 826df8013af53312e961838d8d92ba24de19f094f61bc452cd6ccb9b270edae5

Запуск dnsTrojan


В файле захардкоржена строка AB0d3d3MS5kb3RvbWF0ZXIuY2x1Yjsw, которая является некоей конфигурацией. Вредоносная программа проверяет внутри этой строки третий байт и в зависимости от его значения выбирает свою рабочую директорию и некоторую функциональность:


  • b"30" ('0') вредоносная программа работает в своей текущей директории, в реестр не прописывается, по завершении исполнения все созданные в процессе функционирования файлы: LiveUpdate.exe, ccL100U.dll и сам исполняемый файл удаляются (конфигурация анализируемого образца);
  • b"31" ('1') вредоносная программа работает в %AppData%\Sep, прописывается в реестре, по завершении исполнения удаляется только сам исполняемый файл.

Подстрока d3d3MS5kb3RvbWF0ZXIuY2x1Yjsw представляет собой закодированную в base64 конфигурацию сервера управления www1.dotomater.club;0.


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


  • LiveUpdate.exe (MD5: 1a7f595ba8c28974619582040dcad404),
  • ccL100U.dll (MD5: 0697433432d209c1ed95f6f75a111234).

Далее запускается файл LiveUpdate.exe, имеющий цифровую подпись Symantec Corporation.


В этом случае злоумышленники снова используют технику DLL hijacking: легитимная DLL заменяется на вредоносную ccL100U.dll. В результате исполнения кода библиотеки из ее ресурсов извлекается и распаковывается код самого бэкдора, который внедряется и исполняется в памяти легитимного процесса dllhost.exe. Для внедрения кода применяется техника Process Hollowing.


Если вредоносная программа прописывается в реестр, в ключ реестра HKCU\Environment добавляется параметр UserInitMprLogonScript со значением %AppData%\Roaming\Sep\LiveUpdate.exe.


Работа dnsTrojan


Все свои действия вредоносная программа логирует в файл %ProgramData%\logD.dat, при этом записанные данные похожи на отладочную информацию для злоумышленников (рис. 7).



Рис. 7. Фрагмент файла logD.dat


Закодированная в base64 конфигурация содержит адреса сервера управления и DNS-сервера. В текущем семпле раскодированная конфигурация выглядит так: www1.dotomater.club;0, то есть адрес конкретного DNS-сервера злоумышленников отсутствует, а для взаимодействия с сервером управления используется DNS-сервер зараженной системы.


Взаимодействие с сервером управления осуществляется с использованием DNS-туннелирования. Данные передаются серверу управления в виде DNS-запроса TXT-записи в зашифрованном виде.


Сразу после запуска на сервер управления отправляются следующие данные:


  • имя компьютера,
  • имя пользователя,
  • текущие дата и время,
  • версия операционной системы,
  • информация о сетевом адаптере,
  • архитектура процессора.

Из них формируется сообщение вида 8SDXCAXRZDJ;O0V2m0SImxhY;6.1.1;1;00-13-d2-e3-d6-2e;2020113052831619.


Все передаваемые на сервер управления данные преобразуются следующим образом:


  • шифруются с помощью алгоритма AES-128-CBC, ключ шифрования вырабатывается из константной строки dadadadadadadada с помощью функции CryptDeriveKey();
  • кодируются в base64.

При формировании домена, для которого запрашивается TXT-запись, после каждого 64-го символа ставится точка. Запросы, отправляемые вредоносной программой, можно увидеть на рис. 8.



Рис. 8. Пример трафика вредоносной программы dnsTrojan

В ответ на запрос, отправленный на предыдущем шаге из TXT-записей, dnsTrojan получает команды сервера и может исполнить их (табл. 8).


Табл. 8. Команды, исполняемые dnsTrojan
Команда Назначение
0x1 Получить онлайн-данные
0x2 Запустить сmd-шелл
0x3 Выполнить команду через cmd-шелл
0x4 Получить информацию о дисках CZ (тип, свободный объем памяти) или файлах
0x6 Прочитать файл
0x7 Скопировать файл
0x8 Удалить файл
0x9 Проверить наличие файла
0xA Сохранить файл
0xB Установить время бездействия программы (в минутах)
0xD Самоудалиться (очистить реестр)

dloTrojan


dloTrojan еще одна обнаруженная в процессе расследования вредоносная программа, которую мы классифицировали как бэкдор. Эта малварь не относится ни к одному из известных семейств вредоносов.


В процессе исполнения кода расшифровывается строка dlo, поэтому по аналогии с предыдущими двумя программами мы назвали ее dloTrojan.


Характеристики файлов исследуемого нами образца приведены в табл. 9.


Табл. 9. Свойства анализируемого экземпляра dloTrojan
Свойство EXE DLL
Имя ChromeFrameHelperSrv.exe chrome_frame_helper.dll
Тип файла PE32 executable (EXE) PE32 executable (DLL)
Размер (в байтах) 82 896 240 128
Время компиляции 12 июля 2013 года 19:11:41 14 сентября 2020 года 16:34:44
MD5 55a365b1b7c50887e1cb99010d7c140a bd23a69c2afe591ae93d56166d5985e1
SHA-1 6319b1c831d791f49d351bccb9e2ca559749293c 3439cf6f9c451ee89d72d6871f54c06cb0e0f1d2
SHA-256 be174d2499f30c14fd488e87e9d7d27e0035700cb2ba4b9f46c409318a19fd97 f0c07f742282dbd35519f7531259b1a36c86313e0a5a2cb5fe1dadcf1df9522d

Запуск dloTrojan


На сцену опять выходит DLL hijacking.


Итак, вредоносная программа dloTrojan состоит из двух компонентов:


  • ChromeFrameHelperSrv.exe невредоносный исполняемый файл (EXE), имеющий цифровую подпись Google Inc.,
  • chrome_frame_helper.dll вредоносная динамическая библиотека (DLL).

После запуска исполняемого EXE-файла подгружается код вредоносной DLL. При этом библиотека проверяет имя процесса, в который она загружена, и оно должно соответствовать имени ChromeFrameHelperSrv.exe. В противном случае, вредоносный код завершит свое исполнение.


Далее библиотека расшифровывает вредоносный исполняемый файл, код которого внедряется в еще один запущенный процесс ChromeFrameHelperSrv.exe с использованием техники Process Hollowing.


Работа dloTrojan


Вредоносная программа пытается получить данные значения с именем TID из одного из двух ключей реестра (это зависит от имеющихся привилегий в системе):


  • HKLM\Software\VS,
  • HKCU\Software\VS.

Если же значение в реестре отсутствует, создается один из указанных ключей реестра. В параметре TID прописывается строка из 16 произвольных символов, которую в дальнейшем можно рассматривать как ID зараженной системы.


Далее dloTrojan проверяет наличие подключения к сети в зараженной системе. Для этого она пытается установить соединение с www.microsoft[.]com.


Строки во вредоносной программе зашифрованы методом простого сложения по модулю двух с одним байтом (отличается для различных строк).


Затем малварь расшифровывает адрес сервера управления. В зависимости от конфигурации вредоносная программа может иметь несколько адресов, в текущей конфигурации адрес сервера управления один.


Теперь dloTrojan устанавливает соединение с сервером управления. Если подключиться к серверу не удалось, малварь пытается найти настроенные прокси-серверы одним из способов:


  • вызывает функцию InternetQueryOptionA() с параметром INTERNET_OPTION_PROXY и получает список доступных прокси-серверов;
  • достает из реестра HKEY_USERS\<user_SID>\Software\Microsoft\Windows\CurrentVersion\Internet Settings из параметра ProxyServer.

Далее на сервер управления отправляется следующая информация о зараженной системе:


  • имя компьютера,
  • имя пользователя;
  • IP-адреса зараженной системы,
  • сведения о версии операционной системы,
  • принадлежность компьютера к рабочей группе или домену,
  • идентификатор оригинального производителя оборудования результат работы функции GetOEMCP(),
  • ID, хранимый в реестре.

Данные передаются на сервер управления в зашифрованном виде.


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


Перечень возможных команд приведен в табл. 10.


Табл. 10. Команды, исполняемые dloTrojan


Команда Назначение
0x1 Получить количество миллисекунд, прошедших с момента запуска системы
0x2 Запустить сmd-шелл
0x3 Выполнить команду через cmd-шелл
0x4 Закрыть cmd-шелл
0x5 Проверить существование файла. Если файла нет, создать его
0x6 Создать файл
0x7 Получить данные файла (размер, временные метки)
0x8 Прочитать файл
0x9 Получить информацию о дисках CZ (тип, объем свободной памяти)
0xA Перечислить файлы
0xB Удалить файл
0xC Переместить файл
0xD Запустить процесс
0xE Сделать скриншот
0xF Перечислить сервисы
0x10 Запустить сервис
0x11 Перечислить процессы и модули
0x12 Завершить процесс, затем перечислить процессы и модули
0x13 Закрыть сокет

И еще несколько программ, которые мы раскопали в ходе расследования


Вернемся к общедоступным утилитам, найденным на зараженных системах. С их помощью можно залезть в систему, утащить конфиденциальные данные и выполнить другие вредоносные действия. Ловите краткое описание каждой.


GetPassword


GetPassword предназначена для получения паролей из зараженной системы. Раньше исходный код утилиты лежал в репозитории MimikatzLite, но сейчас его почему-то удалили. Можем только поделиться скриншотом на рис. 9.



Рис. 9. Скриншот работы утилиты GetPassword


Quarks PwDump


Еще одна утилита для извлечения паролей из ОС Windows.


Исходный код можно найти в репозитории 0daytool-quarkspwdump. Скриншот утилиты приведен на рис. 10.



Рис. 10. Скриншот работы утилиты Quarks PwDump


wpmd v 2.3 (beta)


wpmd (windows password and masterkey decrypt) также предназначена для получения паролей в ОС Windows. Увы, источник мы не нашли, поэтому можем только показать скриншот (рис. 11).



Рис. 11. Скриншот работы утилиты wpmd v 2.3 (beta)


os.exe


os.exe позволяет определить версию ОС Windows (рис. 12). Источник тоже не найден :(



Рис. 12. Скриншот работы утилиты os.exe


nbtscan 1.0.35


nbtscan утилита командной строки, предназначенная для сканирования открытых серверов имен NETBIOS в локальной или удаленной TCP/IP-сети. Она обеспечивает поиск открытых общих ресурсов (рис. 13). Доступна на ресурсе Unixwiz.net.



Рис. 13. Скриншот работы утилиты nbtscan


Это расследование в очередной раз убедило нас, что даже заезженные и понятные техники способны доставить жертвам много неприятностей. Злоумышленники могут годами копаться в IT-инфраструктуре жертвы, которая и подозревать ничего не будет. Думаем, выводы вы сделаете сами :)


Напоследок хотим поделиться индикаторами компрометации:

PlugX (SHA256: EXE, DLL, Shell-code)


3124fcb79da0bdf9d0d1995e37b06f7929d83c1c4b60e38c104743be71170efe2f81cf43ef02a4170683307f99159c8e2e4014eded6aa5fc4ee82078228f6c3c0c831e5c3aecab14fe98ff4f3270d9ec1db237f075cd1fae85b7ffaf0eb2751e94004d84edf72720b270a49bf673c98aba2e4da65dc5a8542566cec073ee7812e3fcb055cf50884a192aca2f958f899eb0033c1a1b923deb7d56baaca9d7122d55efc36799631f12f54dfa574aafa1c8e1d4d1b659c159253987d24fecc3218518a98c2d905a1da1d9d855e86866921e543f4bf8621faea05eb14d8e5b23b60c68d58f68591a8306b15de98913897a34bc96ffc6db10e4113144cc54aaa0dda45697c9086fd5abd030ceb937c396c6893ecc8d4a848785fac61ce13d5740edca3124fcb79da0bdf9d0d1995e37b06f7929d83c1c4b60e38c104743be71170efe97ad6e95e219c22d71129285299c4717358844b90860bb7ab16c5178da3f168681e53c7d7c8aa8f98c951106a656dbe9c931de465022f6bafa780a6ba96751eb

PlugX-executor: (SHA256: EXE)


2f73a3c7fa58d93d60d3011724af2c7beddc39469c0613ce097657849ab32e8243f1bd29811393476320542473d6c1dedea172a62ccf1a876a04a53ed876f3a4

nccTrojan (SHA256: EXE, DLL)


07d728aa996d48415f64bac640f330a28e551cd565f1c5249195477ccf7ecfc53be516735bafbb02ba71d56d35aee8ce2ef403d08a4dc47b46d5be96ac342bc9

dnsTrojan (SHA256: EXE)


826df8013af53312e961838d8d92ba24de19f094f61bc452cd6ccb9b270edae5

dloTrojan (SHA256: EXE, DLL)


be174d2499f30c14fd488e87e9d7d27e0035700cb2ba4b9f46c409318a19fd97f0c07f742282dbd35519f7531259b1a36c86313e0a5a2cb5fe1dadcf1df9522d
Подробнее..

Исследование целевых атак на российские НИИ

02.04.2021 14:12:19 | Автор: admin

В конце сентября 2020 года в вирусную лабораторию Доктор Веб за помощью обратился один из российских научно-исследовательских институтов. Сотрудники НИИ обратили внимание на ряд технических проблем, которые могли свидетельствовать о наличии вредоносного ПО на одном из серверов локальной сети. В ходе расследования мы установили, что на НИИ была осуществлена целевая атака с использованием ряда специализированных бэкдоров. Изучение деталей инцидента показало, что сеть института была скомпрометирована задолго до обращения к нам и, судя по имеющимся у нас данным, не одной APT-группой.

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

Восстанавливаем события

Мы считаем, что найденные в сети бэкдоры принадлежат двум разным хакерским группировкам. Для удобства обозначим их как APT-группа 1 и APT-группа 2.

В ходе расследования было установлено, что APT-группа 1 скомпрометировала внутреннюю сеть института осенью 2017 года. Первичное заражение осуществлялось с помощьюBackDoor.Farfli.130 модификации бэкдора, также известного как Gh0st RAT. Позднее, весной 2019 года в сети был установлен Trojan.Mirage.12, а в июне 2020 BackDoor.Siggen2.3268.

APT-группа 2 скомпрометировала сеть института не позднее апреля 2019, и в этот раз заражение началось с установки бэкдораBackDoor.Skeye.1. В процессе работы мы также выяснили, что примерно в то же время в мае 2019 года Skeye был установлен в локальной сети другого российского НИИ.

Тем временем в июне 2019 года компания FireEye опубликовала отчет о целевой атаке на государственный сектор ряда стран центральной Азии с использованием Skeye. Позднее, в период с августа по сентябрь 2020 года вирусные аналитики Доктор Веб зафиксировали установку различных троянов APT-группой 2 в сети пострадавшего НИИ, включая ранее не встречавшийся DNS-бэкдорBackDoor.DNSep.1, а также хорошо известный BackDoor.PlugX.

Более того, в декабре 2017 года на серверы НИИ был установленBackDoor.RemShell.24. Представители этого семейства ранее были описаны специалистами Positive Technologies в исследовании Operation Taskmasters. При этом мы не располагаем такими данными, которые позволили бы однозначно определить, какая из двух APT-групп использовала этот бэкдор.

Кто стоит за атаками?

Деятельность первой APT-группы не позволяет нам однозначно идентифицировать атаковавших как одну из ранее описанных хакерских группировок. При этом анализ используемых вредоносных программ и инфраструктуры показал, что эта группа активна как минимум с 2015 года.

Второй APT-группой, атаковавшей НИИ, по нашему мнению является TA428, ранее описанная исследователями компании Proofpoint в материале Operation Lag Time IT. В пользу нашего вывода говорят следующие факты:

1) в коде бэкдоров BackDoor.DNSep и BackDoor.Cotx имеются явные пересечения и заимствования;

2) BackDoor.Skeye.1 и Trojan.Loader.661 использовались в рамках одной атаки, при этом последний является известным инструментом TA428;

3) бэкдоры, проанализированные нами в рамках этих атак, имеют пересечения в адресах управляющих серверов и сетевой инфраструктуре с бэкдорами, используемыми группировкой TA428.

Теперь подробнее рассмотрим выявленные связи. На графе приведена часть задействованной в атаке инфраструктуры с пересечениями бэкдоров Skeye и другим известным APT-бэкдором PosionIvy:

связей много, поэтому пожалуйста, масштабируйте, спасибо :)связей много, поэтому пожалуйста, масштабируйте, спасибо :)

На этом графе изображены пересечения в инфраструктуре бэкдоров Skeye и Cotx:

Детальный анализ бэкдора DNSep и его последующее сравнение с кодом бэкдора Cotx выявили сходство как в общей логике обработки команд от управляющего сервера, так и в конкретных реализациях отдельных команд. Мы рассмотрим их ниже.

Другой интересной находкой этого исследования стал бэкдор Logtu, один из его образцов мы ранее описывали в рамках расследования инцидента в Киргизии. Адрес его управляющего сервера совпал с адресом сервера бэкдора Skeye atob[.]kommesantor[.]com. В связи с этим мы также провели сравнительный анализ BackDoor.Skeye.1 с образцами BackDoor.Logtu.1 и BackDoor.Mikroceen.11.

Подробный разбор алгоритмов работы найденных бэкдоров читайте в нашем исследовании на сайте.

Сравнительный анализ кода DNSep и Cotx

Несмотря на то, что каналы связи с управляющим сервером у Cotx и DNSep кардинально различаются, нам удалось найти интересные совпадения в коде обоих бэкдоров.

Функция, отвечающая за обработку команд от управляющего сервера, принимает аргументом структуру:

structst_arg{_BYTE cmd;st_string arg;};

При этом, если нужная функция принимает несколько аргументов, то они все записаны в поле arg с разделителем |.

Набор команд BackDoor.Cotx.1 обширнее, чем у BackDoor.DNSep.1, и включает все команды, которые есть у последнего.

Ниже видно почти полное совпадение кода некоторых функций бэкдоров. При этом следует учитывать, в Cotx используется кодировка Unicode, а в DNSep ANSI.

Обработчик команды на отправку листинга каталога или информации о диске

BackDoor.DNSep.1BackDoor.DNSep.1BackDoor.Cotx.1BackDoor.Cotx.1

Функция получения информации о дисках

BackDoor.DNSep.1BackDoor.DNSep.1BackDoor.Cotx.1BackDoor.Cotx.1

Функция перечисления файлов в папке

BackDoor.DNSep.1BackDoor.DNSep.1BackDoor.Cotx.1BackDoor.Cotx.1

Функция сбора информации о файлах в папке

BackDoor.DNSep.1BackDoor.DNSep.1BackDoor.Cotx.1BackDoor.Cotx.1

Полученные в результате анализа данные позволяют предположить, что при создании бэкдора DNSep его автор имел доступ к исходным кодам Cotx. Поскольку эти ресурсы не являются общедоступными, мы предполагаем, что автор или группа авторов DNSep имеет отношение к группировке TA428. В пользу этой версии говорит и тот факт, что образец DNSep был найден в скомпрометированной сети пострадавшей организации вместе с другими известными бэкдорами TA428.

Сравнительный анализ кода бэкдоров Skeye, Mikroceen, Logtu

В процессе исследования бэкдора Skeye мы обнаружили, что адрес его управляющего сервера также используется бэкдором семейства Logtu. Для сравнительного анализа мы использовали ранее описанные нами образцы BackDoor.Logtu.1 и BackDoor.Mikroceen.11.

Функции логирования

Логирование во всех случаях так или иначе обфусцировано.

  • BackDoor.Mikroceen.11 сообщения в формате %d-%d-%d %d:%d:%d <msg>\r\n записываются в файл %TEMP%\WZ9Jan10.TMP, где <msg> случайная текстовая строка. В образце 2f80f51188dc9aea697868864d88925d64c26abc сообщения записываются в файл 7B296FB0.CAB;

  • BackDoor.Logtu.1 сообщения в формате [%d-%02d-%02d %02d:%02d:%02d] <rec_id> <error_code>\n<opt_message>\n\n перед записью в файл %TEMP%\rar<rnd>.tmp шифруются операцией XOR с ключом 0x31;

  • BackDoor.Skeye.1 сообщения в формате %4d/%02d/%02d %02d:%02d:%02d\t<rec_id>\t<error_code>\n записываются в файл %TEMP%\wcrypt32.dll.

Общая логика последовательности записи сообщений в журнал также схожа у всех трех образцов:

  • начало исполнения фиксируется;

  • в Logtu и Mikroceen в журнал записывается прямое подключение к управляющему серверу;

  • в каждом случае указывается, через какой прокси выполнено подключение к серверу;

  • в случае ошибки на этапе получения прокси из того или иного источника в журнале фиксируется отдельная запись.

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

  • начало исполнения;

  • попытка подключения напрямую;

  • получение адресов прокси;

  • запись о подключении через тот или иной сервер.

Поиск прокси-сервера

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

Получение адресов прокси-серверов BackDoor.Mikroceen.11:

  • из файла %WINDIR%\debug\netlogon.cfg;

  • из собственного лог-файла;

  • путем поиска соединений с удаленными хостами через порты 80, 8080, 3128, 9080 в TCP-таблице.

Поиск прокси в своем лог-файле:

Поиск в активных соединениях:

Получение адресов прокси-серверов BackDoor.Logtu.1:

  • из реестра HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer;

  • из раздела HKU реестра по SID активного пользователя;

  • с помощью WinHTTP API WinHttpGetProxyForUrl путем запроса к google.com.

Получение адресов прокси-серверов BackDoor.Skeye.1:

  • из раздела HKCU Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer;

  • из раздела HKU по SID активного пользователя;

  • путем поиска соединений с удаленными хостами через порты 80, 8080, 3128, 9080 в TCP-таблице.

Пересечения в сетевой инфраструктуре

Некоторые образцы совместно использовали одну и ту же сетевую инфраструктуру. Фрагмент графа наглядно показывает взаимосвязь между семействами.

масштабируйте страничку, спасибомасштабируйте страничку, спасибо

Идентификаторы

В образцах Logtu и Mikroceen присутствуют строки, которые используются в качестве идентификаторов сборок или версий. Формат некоторых из них совпадает.

BackDoor.Mikroceen.11

BackDoor.Logtu.1

SHA1

Id

SHA1

id

ce21f798119dbcb7a63f8cdf070545abb09f25ba

intl0113

029735cb604ddcb9ce85de92a6096d366bd38a24

intpz0220

0eb2136c5ff7a92706bc9207da32dd85691eeed5

hisa5.si4

7b652e352a6d2a511f226e4d0cc22f093e052ad8

retail2007

2f80f51188dc9aea697868864d88925d64c26abc

josa5w5n

1c5e5fd53fc2ee778342a5cae3ac2eb0ac345ed7

retail

2e50c075343ab20228a8c0c094722bbff71c4a2a

enc0225

00ddcc200d1031b8639026532c0087bfcc4520c9

716demo

3bd16f11b5b3965a124a6fc3286297e5cfe77715

520299

b599797746ae8ccf7907cf88de232faa30ec95e6

gas-zhi

5eecdf63e85833e712a1ff88df1341bbf32f4ab8

Strive

2d672d7818a56029b337e8792935195d53576a9d

jjlk

bd308f4d1a32096a3b90cfdae45bbc5c13e5e801

R0916

b1be4b2f874c8309f553acce90287c8c6bb2b6b1

frsl.1ply

21ffd24b8074d7cffdf4cc339d1fa8fe892eba27

Wdv

8fbec09e646311a285aee06b3dd45ccf58928703

intz726

19921cc47b3de003186e65fd12b82235030f060d

122764

0f70251abc8c64cbc7b24995c3d32927514d0a4b

V20180224

149947544ca4f7baa5bc3d00b080d0e943d8036b

SOE

e7f5a33b33e023a82ac9eee6ed40e4a38ce95277

int815

b4790eec7daa9f931bed43a53f66168b477599a7

UOE

ab660a3ac46d563c756463bd1b64cc45f347a1f7

B.Z11NOV20D

d0181759a175fbcc60975983b351f88970f484f9

299520

7a63fc9db2bc1e9b1ef793723d5877e6b4c566b8

WinVideo

13779006d0dafbe4b27bd282230df299eef2b8dc

SSLSSL

f53c77695a162c78c68f693f57f65752d17f6030

int007server

924341cab6106ef993b506193e6786e459936069

intl1211

8ebf78c84cd7f66ca8708467a28d83658bcf6710

intl821

f2856d7d138430e164f83662e251ee311950d83c

intl821

Кроме того, в значительном числе образцов данный идентификатор равен значению TEST или test.

Пример в BackDoor.Logtu.1 (9ea2488f07bf3edda23d9b7759c2d0c3c8501f92):

Пример в BackDoor.Mirkoceen.11 (81bb895a833594013bc74b429fb1f24f9ec9df26):

Таким образом, сравнительный анализ выявил у рассмотренных семейств сходства в:

  • логике ведения журнала событий и его обфускации;

  • логике подключения к управляющему серверу и алгоритмах поиска адресов прокси;

  • используемой сетевой инфраструктуре.

Заключение

В ходе расследования атак на российские НИИ наши вирусные аналитики нашли и описали несколько семейств целевых бэкдоров, включая ранее неизвестные образцы. Следует отдельно отметить длительное скрытое функционирование вредоносных программ в скомпрометированной сети пострадавшей организации несанкционированное присутствие первой APT-группы оставалось незамеченным с 2017 года.

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

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

Индикаторы компрометации

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru