Обратная разработка вредоносного ПО Ghidra, часть 3: Анализ вируса-вымогателя WannaCry

  • Автор темы Автор темы LeSh1y777
  • Дата начала Дата начала

LeSh1y777

Пользователь
Регистрация
25/9/25
Сообщения
5,682
Репутация
49
Лайки
152
Депозит
-8.95$
Добро пожаловать обратно, мои начинающие кибервоины!

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

6a4a49_3f788787e095445daaa79ea24a655eee~mv2.png


В этом руководстве мы рассмотрим одну из самых известных вредоносных программ в истории вирусов-вымогателей — WannaCry. Она заразила более 300 000 компьютеров по всему миру и могла бы нанести серьёзный ущерб, если бы не усилия и навыки одного человека, Маркуса Хатченса, также известного как MalwareTech. Маркус Хатченс получил копию этой вредоносной программы и немедленно начал изучать её код. В ней он обнаружил то, что часто называют «аварийным выключателем». На самом деле, он обнаружил URL-адрес, который должен был использоваться для управления и контроля (C&C) этой программы-вымогателя. Когда он обнаружил, что URL-адрес ещё не зарегистрирован, он это сделал. Тем самым он лишил авторов программы-вымогателя доступа к управлению их вредоносным ПО, тем самым спасая Интернет!

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

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

Обратная разработка вредоносного ПО: Ghidra, часть 1

Обратная разработка вредоносного ПО: Ghidra, часть 2

Кроме того, вам будет полезно почитать;

Обратный инжиниринг, часть 4: Внутреннее устройство Windows

Шаг №1: Подготовьте свою среду и установите Ghidra

Для этого руководства я рекомендую использовать виртуальную машину с Kali или другой операционной системой. Это необходимо для того, чтобы случайно не заразить WannaCcy другие системы или сеть (это, как правило, хорошая практика при работе с вредоносным ПО). Затем скачайте WannaCry. Его можно скачать во многих местах, например, на VirusTotal.

Убедитесь, что вы находитесь в каталоге Ghidra, и запустите Ghidra.

kali > sudo ./ghidraRun

6a4a49_6775e94e458f4bd29d58329d1cb19e13~mv2.png


После запуска Ghidra откройте проект, нажав Файл > Новый проект .

Затем перетащите файл вируса-вымогателя WannaCry на дракона или перейдите в Файл -> Импорт файла.

6a4a49_b1078a7ed5ad4d04af99ad83cc473a4a~mv2.png


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

6a4a49_b81bccf787ae4ed7a1535f34b3d44514~mv2.png
6a4a49_8f640abb5cdb43a699b3c561ea8ac663~mv2.png


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

6a4a49_40249533f6314d2886034d82d277f1fb~mv2.png


В процессе анализа WannaCry с помощью Ghidra вы, вероятно, получите следующее сообщение об ошибке. Не волнуйтесь, просто нажмите «ОК» .

6a4a49_9715181a1ce347058a107d4d48cdf584~mv2.png


Теперь у вас должен быть следующий пользовательский интерфейс Ghidra с данными от WannaCry.

6a4a49_406bf6a45a004860b0d496ec23b270b9~mv2.png


Шаг №2: Найдите функцию Main()

Следующий шаг
— поиск функции, запускающей вредоносную программу WannaCry. Как отмечалось при загрузке вредоносной программы в Ghidra, WannaCry — это портативный исполняемый файл (PE). У каждой программы Windows есть точка входа, обычно называемая WinMain или wWinMain. См. документацию Microsoft ниже.

6a4a49_1eb20fb158524f5fa67c8225b139037a~mv2.png


Когда мы переходим в дерево символов и раскрываем папку «Функции», мы не видим ни функции WinMain, ни функции wWinMain, но видим входную функцию. Она может выполнять ту же функцию, что и WinMain(). Давайте рассмотрим её.

6a4a49_4662a13b30474f4fba81a9db3477548a~mv2.png


Дважды щелкните по нему, и он появится как в окне листинга, так и в окне декомпиляции .

6a4a49_b29656866354412286c41139cf4aa9f2~mv2.png


Шаг №3: Поиск «аварийного выключателя»

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

6a4a49_11f53e5aac1045cabe80672ddf022681~mv2.png


Почти сразу же в окне листинга и в окне декомпиляции вы увидите нечто похожее на URL-адрес.

6a4a49_18c401ce55fe48f5b9888ba92babc34c~mv2.png


Похоже, он помещает URL в переменную с именем puVar3 .

6a4a49_09cfec383328461e91eb13f409c23f97~mv2.png


Просматривая декомпилятор немного дальше, мы видим ссылку на функцию InternetOpenUrlA .

6a4a49_dff8703b89a74bcea1e0dc61617a1008~mv2.png


Мы можем выполнить поиск в Microsoft Technet и увидеть, что функция InternetOpenUrlA работает именно так, как и ожидалось: она вызывает и открывает указанный URL-адрес.

6a4a49_c947b7ed9d8349edbfdfe357680671c0~mv2.png


Чуть ниже InternetOpenUrlA мы видим несколько строк, использующих InternetCloseHandle . Они указывают, что если iVar2 равен 0, то закрыть дескриптор и запустить FUN_00408090 , в противном случае закрыть дескриптор и завершить программу.

6a4a49_81a31e44775a4fecbc80478b10dcf769~mv2.png


Именно это заметил Маркус Хатчинс, когда впервые исследовал и проанализировал WannaCry. Это URL-адрес командного сервера (C&C). Если программа пытается обратиться к этому URL-адресу и возвращает 0, она автоматически завершает работу. Если же она не завершается, она выполняет FUN_00408140. Давайте проследим за FUN_00408140.

Шаг №4: Плывите по течению


На следующем шаге давайте проследим за процессом из FUN_00408140. Перейдите на вкладку «Окно» в верхней части Ghidra и нажмите «График функции» .

6a4a49_8416b736e0714018acbe4f91539bf12a~mv2.png


Как видно выше, Ghidra предоставляет нам удобный график потока выполнения этой функции, как восходящего, так и нисходящего. Видно, что функция входа находится выше по течению от FUN 00408140, а ниже по течению от неё — InternetOpenA , InternetOpenUrlA , InternetCloseHandle и FUN_00408090.

Вернитесь в окно декомпиляции и дважды щелкнем по FUN_00408090 , чтобы попытаться определить, что он делает.

6a4a49_b613a3c0414d4d8b8daaf8cb86d23075~mv2.png


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

6a4a49_8e90343d1b1b4c71b78032fcdfbce9d3~mv2.png


Обратите внимание, что декомпилятор показывает, что вредоносная программа пытается выполнить OpenServiceA . Это включает аргумент для открытия mssecsv2.0_004312fc . Похоже, это открывает службу безопасности Microsoft. Вот это интересно…

Поиск на сайте Microsoft Technet показал, что такой службы НЕ существует. Вредоносная программа запускает новую службу, которая выглядит как легитимная служба безопасности Microsoft, чтобы скрыть свою истинную природу.

Краткое содержание

Вирус-вымогатель Wannacry мог нанести сокрушительный удар по Интернету в 2017 году. Он использовал недавно выпущенный эксплойт EternalBlue для проникновения в компьютерные системы и последующего шифрования всех данных пользователей до тех пор, пока они не заплатят выкуп. По всей видимости, шифровальщик был разработан Северной Кореей в спешке, чтобы выпустить его до выхода обновлений для систем Windows, но хакеры не смогли скрыть или обфусцировать вредоносное ПО и, что самое важное, не зарегистрировали домен управления и контроля. Благодаря Маркусу Хатчинсу, последствия атаки были смягчены благодаря обнаружению «аварийного выключателя» и обезвреживанию этого потенциально опасного вируса-вымогателя.

Теперь, когда у вас есть навыки, позволяющие сделать то же самое, может быть, именно вы станете следующим человеком, который спасет Интернет?
 
цікаво але занадто складно для того щоб зрозуміти як це працює та створюється
 
Назад
Сверху Снизу