Добро пожаловать обратно, мои начинающие кибервоины!
Реверс-инжиниринг — один из самых востребованных и ценных навыков в области кибербезопасности/информационной безопасности. Немногие достигли уровня, достаточного для овладения этим востребованным навыком. Ghidra — относительно новый и бесплатный инструмент для реверс-инжиниринга от американского разведывательного агентства АНБ.
В этом руководстве мы рассмотрим одну из самых известных вредоносных программ в истории вирусов-вымогателей — 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
После запуска Ghidra откройте проект, нажав Файл > Новый проект .
Затем перетащите файл вируса-вымогателя WannaCry на дракона или перейдите в Файл -> Импорт файла.
После импорта файла вы увидите экран, подобный показанному ниже, со всеми подробностями файла.
Далее откроется экран с подробными параметрами анализа. Оставьте все значения по умолчанию и добавьте идентификатор параметра декомпилятора (это создаст параметры и локальные переменные для функции. Это может значительно увеличить время анализа для больших файлов, но для WannaCry это не должно вызвать проблем).
В процессе анализа WannaCry с помощью Ghidra вы, вероятно, получите следующее сообщение об ошибке. Не волнуйтесь, просто нажмите «ОК» .
Теперь у вас должен быть следующий пользовательский интерфейс Ghidra с данными от WannaCry.
Шаг №2: Найдите функцию Main()
Следующий шаг
— поиск функции, запускающей вредоносную программу WannaCry. Как отмечалось при загрузке вредоносной программы в Ghidra, WannaCry — это портативный исполняемый файл (PE). У каждой программы Windows есть точка входа, обычно называемая WinMain или wWinMain. См. документацию Microsoft ниже.
Когда мы переходим в дерево символов и раскрываем папку «Функции», мы не видим ни функции WinMain, ни функции wWinMain, но видим входную функцию. Она может выполнять ту же функцию, что и WinMain(). Давайте рассмотрим её.
Дважды щелкните по нему, и он появится как в окне листинга, так и в окне декомпиляции .
Шаг №3: Поиск «аварийного выключателя»
Теперь просмотрите окно декомпиляции. Там мы видим, что эта функция вызывает другую функцию FUN_00408140. Дважды щёлкните по ней, чтобы проанализировать её.
Почти сразу же в окне листинга и в окне декомпиляции вы увидите нечто похожее на URL-адрес.
Похоже, он помещает URL в переменную с именем puVar3 .
Просматривая декомпилятор немного дальше, мы видим ссылку на функцию InternetOpenUrlA .
Мы можем выполнить поиск в Microsoft Technet и увидеть, что функция InternetOpenUrlA работает именно так, как и ожидалось: она вызывает и открывает указанный URL-адрес.
Чуть ниже InternetOpenUrlA мы видим несколько строк, использующих InternetCloseHandle . Они указывают, что если iVar2 равен 0, то закрыть дескриптор и запустить FUN_00408090 , в противном случае закрыть дескриптор и завершить программу.
Именно это заметил Маркус Хатчинс, когда впервые исследовал и проанализировал WannaCry. Это URL-адрес командного сервера (C&C). Если программа пытается обратиться к этому URL-адресу и возвращает 0, она автоматически завершает работу. Если же она не завершается, она выполняет FUN_00408140. Давайте проследим за FUN_00408140.
Шаг №4: Плывите по течению
На следующем шаге давайте проследим за процессом из FUN_00408140. Перейдите на вкладку «Окно» в верхней части Ghidra и нажмите «График функции» .
Как видно выше, Ghidra предоставляет нам удобный график потока выполнения этой функции, как восходящего, так и нисходящего. Видно, что функция входа находится выше по течению от FUN 00408140, а ниже по течению от неё — InternetOpenA , InternetOpenUrlA , InternetCloseHandle и FUN_00408090.
Вернитесь в окно декомпиляции и дважды щелкнем по FUN_00408090 , чтобы попытаться определить, что он делает.
Окно декомпиляции должно выглядеть следующим образом.
Обратите внимание, что декомпилятор показывает, что вредоносная программа пытается выполнить OpenServiceA . Это включает аргумент для открытия mssecsv2.0_004312fc . Похоже, это открывает службу безопасности Microsoft. Вот это интересно…
Поиск на сайте Microsoft Technet показал, что такой службы НЕ существует. Вредоносная программа запускает новую службу, которая выглядит как легитимная служба безопасности Microsoft, чтобы скрыть свою истинную природу.
Краткое содержание
Вирус-вымогатель Wannacry мог нанести сокрушительный удар по Интернету в 2017 году. Он использовал недавно выпущенный эксплойт EternalBlue для проникновения в компьютерные системы и последующего шифрования всех данных пользователей до тех пор, пока они не заплатят выкуп. По всей видимости, шифровальщик был разработан Северной Кореей в спешке, чтобы выпустить его до выхода обновлений для систем Windows, но хакеры не смогли скрыть или обфусцировать вредоносное ПО и, что самое важное, не зарегистрировали домен управления и контроля. Благодаря Маркусу Хатчинсу, последствия атаки были смягчены благодаря обнаружению «аварийного выключателя» и обезвреживанию этого потенциально опасного вируса-вымогателя.
Теперь, когда у вас есть навыки, позволяющие сделать то же самое, может быть, именно вы станете следующим человеком, который спасет Интернет?
Реверс-инжиниринг — один из самых востребованных и ценных навыков в области кибербезопасности/информационной безопасности. Немногие достигли уровня, достаточного для овладения этим востребованным навыком. Ghidra — относительно новый и бесплатный инструмент для реверс-инжиниринга от американского разведывательного агентства АНБ.
В этом руководстве мы рассмотрим одну из самых известных вредоносных программ в истории вирусов-вымогателей — 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
После запуска Ghidra откройте проект, нажав Файл > Новый проект .
Затем перетащите файл вируса-вымогателя WannaCry на дракона или перейдите в Файл -> Импорт файла.
После импорта файла вы увидите экран, подобный показанному ниже, со всеми подробностями файла.
Далее откроется экран с подробными параметрами анализа. Оставьте все значения по умолчанию и добавьте идентификатор параметра декомпилятора (это создаст параметры и локальные переменные для функции. Это может значительно увеличить время анализа для больших файлов, но для WannaCry это не должно вызвать проблем).
В процессе анализа WannaCry с помощью Ghidra вы, вероятно, получите следующее сообщение об ошибке. Не волнуйтесь, просто нажмите «ОК» .
Теперь у вас должен быть следующий пользовательский интерфейс Ghidra с данными от WannaCry.
Шаг №2: Найдите функцию Main()
Следующий шаг
— поиск функции, запускающей вредоносную программу WannaCry. Как отмечалось при загрузке вредоносной программы в Ghidra, WannaCry — это портативный исполняемый файл (PE). У каждой программы Windows есть точка входа, обычно называемая WinMain или wWinMain. См. документацию Microsoft ниже.
Когда мы переходим в дерево символов и раскрываем папку «Функции», мы не видим ни функции WinMain, ни функции wWinMain, но видим входную функцию. Она может выполнять ту же функцию, что и WinMain(). Давайте рассмотрим её.
Дважды щелкните по нему, и он появится как в окне листинга, так и в окне декомпиляции .
Шаг №3: Поиск «аварийного выключателя»
Теперь просмотрите окно декомпиляции. Там мы видим, что эта функция вызывает другую функцию FUN_00408140. Дважды щёлкните по ней, чтобы проанализировать её.
Почти сразу же в окне листинга и в окне декомпиляции вы увидите нечто похожее на URL-адрес.
Похоже, он помещает URL в переменную с именем puVar3 .
Просматривая декомпилятор немного дальше, мы видим ссылку на функцию InternetOpenUrlA .
Мы можем выполнить поиск в Microsoft Technet и увидеть, что функция InternetOpenUrlA работает именно так, как и ожидалось: она вызывает и открывает указанный URL-адрес.
Чуть ниже InternetOpenUrlA мы видим несколько строк, использующих InternetCloseHandle . Они указывают, что если iVar2 равен 0, то закрыть дескриптор и запустить FUN_00408090 , в противном случае закрыть дескриптор и завершить программу.
Именно это заметил Маркус Хатчинс, когда впервые исследовал и проанализировал WannaCry. Это URL-адрес командного сервера (C&C). Если программа пытается обратиться к этому URL-адресу и возвращает 0, она автоматически завершает работу. Если же она не завершается, она выполняет FUN_00408140. Давайте проследим за FUN_00408140.
Шаг №4: Плывите по течению
На следующем шаге давайте проследим за процессом из FUN_00408140. Перейдите на вкладку «Окно» в верхней части Ghidra и нажмите «График функции» .
Как видно выше, Ghidra предоставляет нам удобный график потока выполнения этой функции, как восходящего, так и нисходящего. Видно, что функция входа находится выше по течению от FUN 00408140, а ниже по течению от неё — InternetOpenA , InternetOpenUrlA , InternetCloseHandle и FUN_00408090.
Вернитесь в окно декомпиляции и дважды щелкнем по FUN_00408090 , чтобы попытаться определить, что он делает.
Окно декомпиляции должно выглядеть следующим образом.
Обратите внимание, что декомпилятор показывает, что вредоносная программа пытается выполнить OpenServiceA . Это включает аргумент для открытия mssecsv2.0_004312fc . Похоже, это открывает службу безопасности Microsoft. Вот это интересно…
Поиск на сайте Microsoft Technet показал, что такой службы НЕ существует. Вредоносная программа запускает новую службу, которая выглядит как легитимная служба безопасности Microsoft, чтобы скрыть свою истинную природу.
Краткое содержание
Вирус-вымогатель Wannacry мог нанести сокрушительный удар по Интернету в 2017 году. Он использовал недавно выпущенный эксплойт EternalBlue для проникновения в компьютерные системы и последующего шифрования всех данных пользователей до тех пор, пока они не заплатят выкуп. По всей видимости, шифровальщик был разработан Северной Кореей в спешке, чтобы выпустить его до выхода обновлений для систем Windows, но хакеры не смогли скрыть или обфусцировать вредоносное ПО и, что самое важное, не зарегистрировали домен управления и контроля. Благодаря Маркусу Хатчинсу, последствия атаки были смягчены благодаря обнаружению «аварийного выключателя» и обезвреживанию этого потенциально опасного вируса-вымогателя.
Теперь, когда у вас есть навыки, позволяющие сделать то же самое, может быть, именно вы станете следующим человеком, который спасет Интернет?