Программа-вымогатель Wannacry — известный крипто-червь, который был использован в мае 2017 года и заразил более 200.00 компьютеров по ​​всему миру. В этой статье я попытаюсь использовать базовые навыки и инструменты, чтобы извлечь как можно больше из примера Wannacry.

Прежде чем мы начнем, кто бы это ни читал, помните НЕ ОТЛАДКАВАЙТЕ ЭТО В РЕАЛЬНОЙ СРЕДЕ!

В лаборатории я буду использовать образец с sha256 24d004a104d4d54034dbcffc2a4b19a11f39008a575aa614ea04703480b1022c.

его можно скачать с VirusTotal (только по подписке)

Образец Virus Total WannaCry

но и на базаре вредоносных программ для тех, у кого нет подписки на VT.

Образец «WalkCry на базаре вредоносных программ»

Мне страшно бежать (статический анализ)

Хорошо, давайте покопаемся в семпле и, как всегда, откроем его в PE studio. Вот что я заметил из общей вкладки

  1. образец имеет вводящее в заблуждение описание (Microsoft Disk Defragmenter);
  2. образец 32-битный;
  3. образец был создан с помощью Visual Studio 2003–7.10 SDK, Microsoft Visual c++ v5.0/v6.0 (MFC);

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

вещи, которые я заметил:

  1. жестко заданный домен;
  2. встроенный исполняемый файл;
  3. розетки;

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

  1. Создание сервиса (CreateService, ChangeServiceConfig);
  2. Шифрование (Крипт*);
  3. Связанные файлы (MoveFile, WriteFile);
  4. Сетевые штуки (тоже ws2_32.dll, но pestudio их не распознает в разделе strings, только в импорте);

Самое смешное, что автор вредоносного ПО установил ProductName и CompanyName на Microsoft :)

В любом случае (отладка)

Вы когда-нибудь слышали о выключателе, связанном с WannaCry? давайте углубимся в отладку, чтобы понять это подробно. Помните, что это 32-битная версия! (x32dbg)
Не задумываясь,

  1. нажмите f9, чтобы перейти от ntdll.dll к нашему модулю WantCry;
  2. правый клик -> поиск строковых ссылок, где будет виден наш суперстранный домен;
  3. двойной щелчок по этой строке перенесет вас к дизассемблированию, где строка найдена, и мы можем легко увидеть звонки, связанные с Интернетом, поблизости;
  4. добавить точку останова на InternetOpenUrlA (которая открывает URL-адрес и возвращает дескриптор или NULL);
  5. после перехода через (F8) мы видим, что eax (возвращаемое значение) равно 0, поэтому дескриптор недействителен (хм…);

в следующих инструкциях по смещению 0x81A3 видим

test edi edi

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

Если домен не разрешен, будет установлен нулевой флаг. Но что, если мы изменим нулевой флаг на 0 в отладчике? давайте узнаем :)

после нескольких прыжков мы приземлились с инструкцией по выходу.

так в ярлыке:

if connected:
  exit;
else
 call somethingbad;

Так работает знаменитый выключатель. Это была действительно замечательная находка от Маркуса Хатчинса.
Посмотрите на сегодняшнюю воронку для этого домена — она закрыта Kryptos Logic, поэтому аварийный выключатель все еще работает.

ХОРОШО! А как насчет этих странных ресурсов в PEFILE?

Взломщик ресурсов может показать нам, что исполняемый файл содержит раздел R с PE-файлом внутри ресурса R!
инсайдерский пример:

  1. написан на с++
  2. описание DiskPart
  3. хэш 5FF465AFAABCBF0150D1A3AB2C2E74F3A4426467 (sha1)
  4. ВирусТотал

Перейдя прямо к разделу ресурсов, легко увидеть ресурс XIA, который имеет подпись PKZIP.

Без пароля не распаковать, но пароль должен быть где-то здесь. Ищем пароль.

Более надежным способом может быть использование некоторых функций x32dbg:

  1. перейти к пользовательскому модулю (F9);
  2. правый клик -> найти межмодульные вызовы;
  3. добавить точку останова в функцию FindResourceA;

4. найти вызывающую функцию для 0x1DAB (пролог вызова функции push ebp);

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

изменить расширение на .rtf и

Остальные файлы из архива .bmp:

и домены:

Я думал, что образец загрузит браузер tor из домена torproject, но он также включен в образец в файле s.wnry.

Заключение

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