Поскольку киберугрозы продолжают развиваться и становятся все более изощренными, исследователям и специалистам в области безопасности крайне важно оставаться на шаг впереди. В этой статье мы рассмотрим, как ChatGPT помогает в анализе вредоносных программ, в частности трояна удаленного доступа (RAT) AsyncRAT, и углубимся в возможности ChatGPT, обсудив, как он может помочь в идентификации путем анализа сетевого трафика и выявления команд и контроля (C2). ) Инфраструктура Индикаторы угроз. Но прежде чем продолжить, краткое введение в ChatGPT.
ChatGPT принадлежит и управляетсяИИ(ИИПрототип, запущенный OpenAI в ноябре 2022 года, предназначен для ответов на длинные и сложные вопросы. ChatGPT революционен тем, что его обучают понимать смысл вопросов. В результате выдаваемые ответы очень похожи на человеческие. Пока неясно, будет ли ChatGPT поддерживать или создавать проблемы в борьбе с киберпреступностью, но сейчас давайте сосредоточимся на ChatGPT и егоАнализ вредоносного ПОСпособности.
Итак, независимо от того, являетесь ли вы опытным специалистом по безопасности или только начинаете, эта статья предоставит вам ценную информацию об использовании языковых моделей высокого уровня при анализе вредоносного ПО.
Давайте начнем!
Чтобы понять возможности и функциональность ChatGPT, мы начали анализировать AsyncRAT. Нам любопытно, как эта передовая технология искусственного интеллекта может помочь раскрыть внутреннюю работу этого вредоносного ПО и потенциально помочь в выявлении индикаторов угроз путем анализа сетевого трафика и выявления инфраструктуры управления и контроля (C2).
В результате нашего исследования мы обнаружили следующий фрагмент кода, который действует как загрузчик этапа 1 для AsyncRAT и содержит обширную обфускацию и строку в кодировке Base64. Код написан на Python и использует библиотеку CLR для взаимодействия с .NET Framework для загрузки и запуска сборки в кодировке Base64.
В ходе дальнейших исследований мы обнаружили, что ChatGPT очень полезен при анализе вредоносных программ, таких как AsyncRAT, но также обнаружили, что в некоторых областях он все еще имеет ограничения. Тем не менее, мы считаем, что использование языковых моделей высокого уровня, таких как ChatGPT, является многообещающим развитием в борьбе с киберугрозами.
Здесь мы решили использовать этот код в качестве входных данных для ChatGPT и рассмотреть его поближе.
В предоставленном коде используется строка в кодировке Base64, которую ChatGPT не может декодировать из-за ограничений длины строки и ограничений на операции, которые ему разрешено выполнять. Однако ChatGPT по-прежнему предоставляет простое для понимания объяснение функциональности кода и потенциальных злонамеренных намерений. Стоит отметить, что ChatGPT — мощная языковая модель, но ее следует использовать в сочетании с другими методами и приемами, и она не является панацеей для всех задач, связанных с анализом вредоносного ПО.
Вот почему мы используем Cyberchef для декодирования строки base64, которая оказывается скриптом Python загрузчика второго этапа.
Давайте снова используем этот код в качестве входных данных для ChatGPT и посмотрим, что он мне скажет:
Опять же, у нас есть длинная строка в кодировке Base64, которую нам нужно декодировать с помощью Cyberchef.
Эта строка оказалась PE-файлом. Мы не можем передавать PE-файлы в ChatGPT, поэтому с точки зрения анализа PE-файлов это бесполезно. Но мы решили продолжить просмотр содержимого PE-файла.
Мы будем использовать Dnspy для декомпиляции этого двоичного файла.
Как видите, выходные данные функции декодирования base64 передаются в качестве входных данных функции декомпрессии.
Приведенный выше код представляет собой функцию C#, которая распаковывает массив байтов под названием «gzip». Эта функция создает новый поток с использованием класса GZipStream и передает ему объект MemoryStream, созданный с использованием массива байтов «gzip». Затем используйте GZipStream для чтения сжатых данных частями по 4096 байт и записи их в новый объект MemoryStream. Затем функция использует метод ToArray объекта MemoryStream для возврата распакованных данных в виде массива байтов.
Проще говоря, эта функция принимает сжатый массив байтов, распаковывает его с помощью алгоритма Gzip и возвращает распакованные данные в виде массива байтов. Эту функцию можно использовать для распаковки данных, ранее сжатых с помощью алгоритма Gzip.
Мы снова решили использовать Cyberchef для декодирования,
Это снова PE-файл, который на момент анализа представляет собой сборку .NET. Мы используем Dnspy для его анализа.
Этот двоичный файл имеет строку в кодировке Base64, но если вы внимательно посмотрите на последнее слово, вы увидите, что строка base64 при декодировании превращается в сценарий PowerShell.
Как видите, powershell очень непонятен, поэтому мы решили проверить, сможет ли ChatGPT его декодировать. Ниже приведен результат.
На вопрос, какова функция такого сценария, полученный результат выглядит следующим образом.
В сборке .NET имеется дополнительная строка в кодировке Base64. Сначала он передается функции cipher, параметром которой является ключ шифра.
Поэтому мы решили посмотреть, в чем логика функции Cipher.
Теперь мы решили использовать этот код в качестве входных данных для ChatGPT и попросить его распознать пароль.
Этот результат нас удивил.
Мы реализовали ту же логику в Python, чтобы перейти к следующему этапу.
Это результат. Окончательный PE-файл:
Это снова файл .NET. При проверке в Dnspy мы получаем вот что.
Глядя на функции, мы имеем четкое представление о функции этого файла, а именно о его технологии антианализа, функциях реестра и т. д. Нам интересно посмотреть, поймет ли ChatGPT назначение этого кода и определит, какой тип вредоносного ПО он представляет собой.
Ключевой функцией в коде является метод «Install», который, судя по всему, отвечает за установку и запуск указанных файлов при запуске.
Объект FileInfo используется для указания файла, который код пытается установить и запустить.
«Process.GetCurrentProcess().MainModule.FileName» и «fileInfo.FullName» используются для проверки того, совпадает ли текущий запущенный процесс с указанным файлом.
Метод «Process.GetProcesses()» используется для получения списка всех запущенных процессов, и код проходит по ним, чтобы остановить любой процесс, который имеет тот же путь к файлу, что и указанный файл.
Метод «Methods.IsAdmin()» используется для проверки наличия у пользователя прав администратора.
Команда «schtasks» используется для создания запланированной задачи для запуска указанного файла при входе в систему (если у пользователя есть права администратора).
Метод "Registry.CurrentUser.OpenSubKey" используется для открытия ключа HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun. Метод "registryKey.SetValue" используется для установки значения ключа в указанный файл-путь (если у пользователя нет прав администратора).
Метод File.Exists используется для проверки существования указанного файла, а метод File.Delete — для его удаления, если он существует.
Объект FileStream используется для создания нового файла по указанному пути и записи в него содержимого файла текущего процесса.
Выполните метод «Methods.ClientOnExit()».
Метод «Path.GetTempFileName()» используется для создания временного файла .bat, а объект «StreamWriter» используется для записи в него ряда команд.
Метод «Process.Start» используется для запуска файла .bat, а метод «Environment.Exit(0)» — для выхода из текущего процесса.
Из этого кода можно сделать вывод, что код пытается установить и запустить определенный файл при запуске, и, похоже, он предназначен для обеспечения того, чтобы указанный файл запускался при запуске и запускался с правами администратора. Код также пытается удалить исходный файл и создать новый с тем же именем и содержимым, что может указывать на то, что он пытается заменить исходный файл вредоносной версией. Использование таких методов, как проверка наличия у пользователя прав администратора, создание запланированных задач и изменение ключей реестра, указывает на то, что он пытается запустить файл при запуске, когда это возможно. Также существуют различные способы скрыть выполнение файлов, например, создание bat-файла, запуск его в скрытом режиме и последующее удаление bat-файла после выполнения.
Он понимает, что код является вредоносным, и правильно идентифицирует его как средство удаленного доступа (RAT).
Благодаря этому обучению мы смогли лучше расшифровать ChatGPT и понять, как он помогает в анализе вредоносного ПО. Хотя ChatGPT продемонстрировал свои базовые возможности, в настоящее время он не может сравниться с анализом вредоносных программ на основе человеческого интеллекта, который является более полным. Мы продолжим следить за ChatGPT и в будущем будем делиться новыми обновлениями, чтобы расширить его возможности и мощность.
Оригинальная статья написана Chief Security Officer, при воспроизведении просьба указывать: https://cncso.com/ru/анализ-асинхронности-с-помощью-chatgpt-html.