Технический анализ вымогателя «Петя»

5 Июля 09:17
По материалам Fortinet
Недавно новый вирус-вымогатель разгромил весь мир. Этот новый вариант вредоносного ПО, которое сочетает в себе функциональность вымогателя с поведением червя и носит называние Petya, Petrwrap и даже NotPetya. Исследователи все ещё следят за тем, связана ли его способность модифицировать главную загрузочную запись цели (Master Boot Record)с семейством вредоносных программ Petya. Fortinet обозначил эту новую гибридную форму вредоносного ПО как вымогатель-червь, и эта атака, как сообщается, использовала тот же механизм червя для распространения в Интернете, как и WannaCry, что способствовало глобальному масштабу этой атаки.

В этой статье будут рассмотрены некоторые технические аспекты этого вируса, которые были исследованы лабораториями FortiGuard. Мы будем называть это вредоносное ПО Петя. Он определяется как W32/Petya.EOB!Tr. Вы можете прочитать наш последний блог на эту тему здесь.

Вредоносная программа поступает в виде DLL, и ее вредоносные действия обнаруживаются в первой экспортируемой функции.

Когда вирус попал в систему, его первые действия - обеспечить три привилегии на токен: SeShutdownPrivilege, SeDebugPrivilege и SeTcbPrivilege.

1_16


Рисунок 1. Настройка привилегий токена.

Затем он проверяет выполняемые процессы, выполняя хэш на названии процесса. Часть алгоритма хэширования выглядит следующим образом:

2_23

Рисунок 2. Хэширующий алгоритм для названий процессов.

Затем он проверяет, является ли результат одним из следующих, и устанавливает соответственно некоторые флаги:

    0x2E2A4B44
    0x6403527E
    0x651B3005

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

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

 

3_17

Рисунок 3. Получение собственного имени файла.

Это важно, поскольку он будет использовать это позже как своего рода killswitch.

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

Затем он проверяет, установлен ли флаг для скорректированных привилегий токена в значение 2. Это означает, что SeDebugPrivilege включен. Если это так, он пропускает два вызова функций (которые мы рассмотрим позже), а затем переходит к завершению работы системы.

4_13

Рисунок 4. Проверка флажка привилегии.

На рисунке выше видно, что если флаг не 2, Петя вызывает две функции.

Перейдя в первую функцию, которую мы назвали Msub_CreateWindowsFile, мы видим, что она проверяет, существует ли файл (через PathFileExistsW). Если это так, то оно переходит в код, который вызывает ExitProcess, тем самым заканчивая вредоносное ПО. Исследователи идентифицировали эту функцию как возможный «killswitch».

5_08


Рисунок 5. «killswitch».

Чтобы заставить вредоносное ПО вызывать ExitProcess, нам нужно найти название файла, который он проверяет. Посмотрев еще раз на код, мы видим, что имя файла хранится в области памяти pszPath.

6_05


Рисунок 6. Путь, который нужно проверить.

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

7_07


Рисунок 7. Внутри функции Msub_AppendToWindir.

На скриншоте выше полный путь и название файла DLL, которое мы использовали в наших тестах, это C:\_ Virus\Petya.dll, который был возвращен в коде, показанном ранее на рисунке 3. Давайте рассмотрим приведенный выше код в Рисунке 7:

  • Первый вызов API PathFindFileNameW возвращает Petya.dll (удаляет имя каталога).
  • Второй вызов API PathCombineW объединяет жесткий путь C:\Windows с этим именем файла, в результате чего -  C:\Windows Petya.dll.
  • Третий вызов API PathFindExtensionW с параметром C:\Windows\Petya.dll возвращает адрес имени расширения (.dll). Этот адрес хранится в регистре EAX.
  • В коде, указанном выше, вредоносное ПО сохраняет значение 0x00 по этому адресу, эффективно завершая строку. Теперь строка изменена на C:\Windows \Petya.

Затем он выходит из функции. Если теперь вернуться к рисунку 5, то мы теперь знаем, что проверяется при вызове PathFileExistsW. В нашем примере это будет C:\Windows\Petya. Если этот файл существует, вредоносное ПО затем переходит к вызову ExitProcess.

Это не простой killswitch, как в WannaCry, так как название файла, которое предполагаемая жертва получает, может измениться.

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

MD5: 71b6a493388e7d0b40c83ce903bc6b04

Защита от Fortinet

AV сигнатуры:

W32/Petya.EOB!tr

W32/Agent.YXH!tr

Другие сигнатуры в процессе иследования.

IPS сигнатуры:

MS.SMB.Server.SMB1.Trans2.Secondary.Handling.Code.Execution

Создана: 14 марта 2017 г.
Последнее обновление: 05 июня 2017 г.

Кроме того, правила WannaCry IPS от Fortinet, похоже, защищают от эксплойтов, нацеленных на эти уязвимости. Команды Fortinet проверяют это.

Обнаружение с помощью песочницы:

Fortinet Sandbox (FSA) обнаруживает эту атаку.

TOR Communications:

Заблокируйте исходящий трафик TOR с помощью сигнатур AppControl.

Материалы по теме:

Комментарии: