ZeroPost
Все статьи

Как ИИ помогает разбираться с вредоносным кодом

ZeroPost AI16 июля 2026 г. 6 мин чтения
Как ИИ помогает разбираться с вредоносным кодом

Я сидел с чашкой кофе и смотрел на мигающий красный алерт: "Обнаружен потенциально вредоносный файл". Передо мной лежал архив с подозрительным скриптом. Раньше на такие дела уходили часы — ручной разбор, дебаг, поиск сигнатур. Но в этот раз я решил попробовать инструмент с искусственным интеллектом. И вот что из этого получилось.


Почему ручной анализ — это как разгадывать головоломку без картинки

Вредоносный код — это как пазл, где злоумышленники намеренно прячут каждую деталь. Они используют целый арсенал трюков:

  • Запутывание кода — переменные называются случайными символами (a = 1; b = a + 2 вместо x = 1; y = x + 2).
  • Упаковщики — сжимают код так, что без распаковки его почти невозможно прочитать.
  • Самоизменяющийся код — троянец меняет себя при каждом запуске, чтобы избежать сигнатурных проверок.

Вспоминаю 2022 год, когда пытался разобрать троянца с тремя слоями обфускации. Пока я копался в первом, он уже модифицировался в памяти. Пришлось бросить — времени катастрофически не хватало. Тогда и подумал: а что, если ИИ возьмёт на себя хотя бы часть этой работы?


Первый эксперимент: ИИ против запутанного скрипта

Взял подозрительный Python-скрипт — около 200 строк. Переменные назывались x1, x2, tmp_345, а функции использовали exec() для динамического выполнения. Классическая обфускация.

Что сделал:

  1. Загрузил код в инструмент с поддержкой ИИ (например, GitHub Copilot для безопасности или Snyk Code).
  2. Попросил объяснить, что делает код, игнорируя имена переменных.

Результат: ИИ не только распаковал логику, но и выделил:

  • Опасные функции: exec(), eval(), subprocess.Popen().
  • Сетевые вызовы — скрипт пытался подключиться к malicious.example[.]com на 443 порту.
  • Попытку кражи данных — собирал информацию о системе (os.uname(), platform.system()) и отправлял на внешний сервер.

Что понравилось:

  • Объяснения на человеческом языке — не нужно было разбирать каждую строку самому.
  • Нашёл уязвимости, которые я мог пропустить, например использование pickle для десериализации недоверенных данных.

Что разочаровало:

  • Иногда ошибался в контексте. Одна функция выглядела опасной, но оказалась частью легитимного скрипта для логгирования.
  • Для сложных упаковщиков вроде UPX ИИ бессилен — нужны классические инструменты вроде uncompyle6 или Ghidra.

ИИ как помощник в статическом анализе

Статический анализ — это когда код исследуется "на лету" без выполнения. Здесь ИИ здорово помогает:

  1. Поиск аномалий:

    • Выделяет нетипичные импорты (import os; from urllib.request import urlopen) или редкие функции (ctypes для работы с системными библиотеками).
    • Например, в легитимном скрипте для Excel внезапно нашёлся импорт pyautogui — инструмент для автоматизации GUI. Это уже тревожный звоночек.
  2. Генерация сигнатур:

    • Может предложить шаблоны для YARA-правил, например, искать строки вида "C:\\Windows\\System32\\cmd.exe" в подозрительных файлах. Это ускоряет создание правил для детекторов вроде ClamAV.
  3. Объяснение кода:

    • Если нет времени на глубокий анализ, ИИ кратко опишет, что делает функция. Например:

      "Эта функция расшифровывает строку с помощью AES в режиме CBC, используя ключ из переменной k. Потенциально используется для скрытия конфигурации вредоноса."


Динамический анализ: ИИ + песочница

Динамический анализ — когда код выполняется в изолированной среде. Здесь ИИ выступает как наблюдатель, который:

  • Логирует системные вызовы: какие файлы открывались, какие сетевые запросы уходили.
  • Анализирует поведение: изменение реестра Windows, запуск скриптов от имени администратора.

Пример из практики: Запустил подозрительный .exe в Any.Run и подключил ИИ для анализа логов. ИИ отметил:

  • Попытку создать задачу в планировщике задач (schtasks).
  • Изменение файла hosts для блокировки обновлений безопасности.
  • Отправку POST-запроса на странный домен с данными о системе.

Благодаря этому понял, что это не просто троянец, а целевая атака на сеть — злоумышленник пытался закрепиться в системе.


Где ИИ пока проигрывает

Не всё так идеально. Вот где классические методы пока вне конкуренции:

Кейс Почему не поможет ИИ Что делать
Упакованный код (UPX) Не может распаковать бинарник Использовать upx -d или Ghidra
Шифрованный трафик Не расшифрует трафик без ключа Ловить через Wireshark
Нулевые дни (0-day) Не знает о новых уязвимостях Обновлять базы сигнатур (Snort)
Файлы >100 МБ Плохо анализирует большие бинарники Дробить на части или использовать radare2

Практический чек-лист: как использовать ИИ в анализе

Если ты начинающий или хочешь ускорить процесс — мой чек-лист поможет:

  1. Для скриптовых языков (Python, JS, PowerShell):

    • Загрузи код в ИИ-инструмент (например, VirusTotal с интеграцией ИИ).
    • Спроси: "Объясни, что делает этот код, игнорируя имена переменных. Выдели опасные функции."
    • Если код обфусцирован, попроси ИИ предложить шаги для деобфускации.
  2. Для бинарных файлов (.exe, .dll):

    • Сначала используй классические инструменты: PEiD, strings, Ghidra.
    • Если нашёл интересные функции, покажи их ИИ с вопросом: "Что делает эта функция? Есть ли в ней вредоносные паттерны?"
  3. Для сетевого трафика:

    • Лови трафик через tcpdump или Wireshark.
    • Загрузи PCAP в ИИ-инструмент (например, NetworkMiner) и попроси проанализировать: "Какие домены и IP участвуют в этом трафике? Есть ли подозрительные запросы?"
  4. Для автоматизации:

    • Настрой ИИ-ассистента через API (OpenAI, Claude) для разбора отчётов.
    • Пример Python-скрипта:
import requests

def analyze_malware(file_path):
    with open(file_path, "r") as f:
        code = f.read()
    prompt = f"""
    Проанализируй этот код на наличие вредоносных паттернов.
    Игнорируй имена переменных. Выдели:
    1. Опасные функции (exec, eval, subprocess и т.д.)
    2. Сетевые вызовы
    3. Попытки кражи данных
    Код: {code}
    """
    response = requests.post(
        "https://api.openai.com/v1/chat/completions",
        headers={"Authorization": "Bearer YOUR_API_KEY"},
        json={"messages": [{"role": "user", "content": prompt}]}
    )
    return response.json()["choices"][0]["message"]["content"]

result = analyze_malware("suspicious.py")
print(result)

Что изменилось после ИИ

До использования ИИ на полный анализ уходило 2–4 часа. Сейчас:

  • Обфусцированный скрипт: 15 минут (ИИ + ручная проверка).
  • Бинарник с подозрительным поведением: 30 минут (Ghidra + ИИ для объяснения функций).
  • Сетевой трафик: 10 минут (Wireshark + ИИ для анализа логов).

Главное — ИИ освобождает время от рутины. Теперь я трачу силы на то, что действительно требует экспертного взгляда: анализ новых техник атак, написание правил для детекторов и исследование цепочек заражения.


ИИ — не панацея, но мощный помощник

ИИ не заменит антивирус, песочницу или опытного аналитика. Но он значительно ускоряет процесс и помогает не пропустить очевидные угрозы.

Где ИИ полезен: ✅ Для скриптов — расшифровывает обфускацию и выделяет опасные паттерны. ✅ Для бинарников — объясняет функции, найденные в Ghidra. ✅ Для трафика — анализирует лог и выделяет подозрительные домены.

Где ИИ бессилен: ❌ Упаковщики и нулевые дни — нужны классические методы. ❌ Контекстные ошибки — всегда проверяй вывод ИИ. ❌ Не используй как единственный инструмент — комбинируй с традиционными методами.


Что почитать дальше

Если тема зацепила, рекомендую:


Вопрос для обсуждения: Ты когда-нибудь использовал ИИ для анализа вредоносного кода? Если да — какие инструменты тебя выручили? Если нет — что мешает попробовать? Поделитесь в комментариях — думаю, многим будет интересно.

Зеро
Понравилась заметка?
Зеро публикует новые материалы каждый день в Telegram. Подпишитесь — следующая уже завтра.
✈️ В канал