|
Постоянный
Регистрация: 06.01.2012
Сообщений: 913
С нами:
7552406
Репутация:
724
|
|
Тайна зашифрованного вредоносного функционала Gauss
В истории Gauss и Flame остается много загадок. Например, каким образом происходит заражение вредоносной программой? И каково назначение шрифта с уникальным названием Palida Narrow, устанавливаемого Gauss?
Вероятно, наиболее интригующая тайна – это зашифрованный блок кода Gauss. В состав программы входит модуль под названием Godel, содержащий зашифрованный функционал. Вредоносная программа пытается расшифровать этот функционал, используя несколько строк, взятых из системы, и в случае успеха выполняет расшифрованный код. Как мы ни старались, нам не удалось расшифровать код. Поэтому сегодня мы представляем всю известную нам информацию о зашифрованных данных в надежде, что кто-то найдет решение и сможет раскрыть секрет. Мы просим всех, кто интересуется криптологией и математикой, принять участие в наших усилиях по разгадке этой тайны и расшифровке скрытого вредоносного функционала.
Контейнеры
На зараженных USB-носителях присутствуют два файла, содержащие несколько зашифрованных секций. Файлы, носящие имена System32.dat и System32.bin, являются 32-битной и 64-битной версиями одного и того же кода. Эти файлы загружаются с зараженных носителей с использованием хорошо известного LNK-эксплойта, впервые появившегося в Stuxnet. Их главная задача – добыть как можно больше информации о системе жертвы и сохранить ее на том же носителе в файле под названием .thumbs.db. Несколько известных на сегодняшний день версий этих файлов содержат по три зашифрованных секции (одна секция кода и две секции данных).
Ключ для расшифровки этих секций генерируется динамически в зависимости от определенных свойств зараженной системы, что не позволяет извлечь содержимое секций на иных компьютерах, чем выбранные злоумышленниками для атаки.
К слову, в 64-битной версии модуля оставлена часть отладочной информации. Модуль содержит строки, используемые в отладочных сообщениях, и названия модулей:
[CODE]
.\loader.cpp
NULL != encSection
Path
NULL != pathVar && curPos
|