Я сидел с чашкой кофе и смотрел на мигающий красный алерт: "Обнаружен потенциально вредоносный файл". Передо мной лежал архив с подозрительным скриптом. Раньше на такие дела уходили часы — ручной разбор, дебаг, поиск сигнатур. Но в этот раз я решил попробовать инструмент с искусственным интеллектом. И вот что из этого получилось.
Почему ручной анализ — это как разгадывать головоломку без картинки
Вредоносный код — это как пазл, где злоумышленники намеренно прячут каждую деталь. Они используют целый арсенал трюков:
- Запутывание кода — переменные называются случайными символами (
a = 1; b = a + 2вместоx = 1; y = x + 2). - Упаковщики — сжимают код так, что без распаковки его почти невозможно прочитать.
- Самоизменяющийся код — троянец меняет себя при каждом запуске, чтобы избежать сигнатурных проверок.
Вспоминаю 2022 год, когда пытался разобрать троянца с тремя слоями обфускации. Пока я копался в первом, он уже модифицировался в памяти. Пришлось бросить — времени катастрофически не хватало. Тогда и подумал: а что, если ИИ возьмёт на себя хотя бы часть этой работы?
Первый эксперимент: ИИ против запутанного скрипта
Взял подозрительный Python-скрипт — около 200 строк. Переменные назывались x1, x2, tmp_345, а функции использовали exec() для динамического выполнения. Классическая обфускация.
Что сделал:
- Загрузил код в инструмент с поддержкой ИИ (например, GitHub Copilot для безопасности или Snyk Code).
- Попросил объяснить, что делает код, игнорируя имена переменных.
Результат: ИИ не только распаковал логику, но и выделил:
- Опасные функции:
exec(),eval(),subprocess.Popen(). - Сетевые вызовы — скрипт пытался подключиться к
malicious.example[.]comна 443 порту. - Попытку кражи данных — собирал информацию о системе (
os.uname(),platform.system()) и отправлял на внешний сервер.
Что понравилось:
- Объяснения на человеческом языке — не нужно было разбирать каждую строку самому.
- Нашёл уязвимости, которые я мог пропустить, например использование
pickleдля десериализации недоверенных данных.
Что разочаровало:
- Иногда ошибался в контексте. Одна функция выглядела опасной, но оказалась частью легитимного скрипта для логгирования.
- Для сложных упаковщиков вроде UPX ИИ бессилен — нужны классические инструменты вроде
uncompyle6илиGhidra.
ИИ как помощник в статическом анализе
Статический анализ — это когда код исследуется "на лету" без выполнения. Здесь ИИ здорово помогает:
Поиск аномалий:
- Выделяет нетипичные импорты (
import os; from urllib.request import urlopen) или редкие функции (ctypesдля работы с системными библиотеками). - Например, в легитимном скрипте для Excel внезапно нашёлся импорт
pyautogui— инструмент для автоматизации GUI. Это уже тревожный звоночек.
- Выделяет нетипичные импорты (
Генерация сигнатур:
- Может предложить шаблоны для YARA-правил, например, искать строки вида
"C:\\Windows\\System32\\cmd.exe"в подозрительных файлах. Это ускоряет создание правил для детекторов вроде ClamAV.
- Может предложить шаблоны для YARA-правил, например, искать строки вида
Объяснение кода:
- Если нет времени на глубокий анализ, ИИ кратко опишет, что делает функция. Например:
"Эта функция расшифровывает строку с помощью AES в режиме CBC, используя ключ из переменной
k. Потенциально используется для скрытия конфигурации вредоноса."
- Если нет времени на глубокий анализ, ИИ кратко опишет, что делает функция. Например:
Динамический анализ: ИИ + песочница
Динамический анализ — когда код выполняется в изолированной среде. Здесь ИИ выступает как наблюдатель, который:
- Логирует системные вызовы: какие файлы открывались, какие сетевые запросы уходили.
- Анализирует поведение: изменение реестра Windows, запуск скриптов от имени администратора.
Пример из практики:
Запустил подозрительный .exe в Any.Run и подключил ИИ для анализа логов. ИИ отметил:
- Попытку создать задачу в планировщике задач (
schtasks). - Изменение файла
hostsдля блокировки обновлений безопасности. - Отправку POST-запроса на странный домен с данными о системе.
Благодаря этому понял, что это не просто троянец, а целевая атака на сеть — злоумышленник пытался закрепиться в системе.
Где ИИ пока проигрывает
Не всё так идеально. Вот где классические методы пока вне конкуренции:
| Кейс | Почему не поможет ИИ | Что делать |
|---|---|---|
| Упакованный код (UPX) | Не может распаковать бинарник | Использовать upx -d или Ghidra |
| Шифрованный трафик | Не расшифрует трафик без ключа | Ловить через Wireshark |
| Нулевые дни (0-day) | Не знает о новых уязвимостях | Обновлять базы сигнатур (Snort) |
| Файлы >100 МБ | Плохо анализирует большие бинарники | Дробить на части или использовать radare2 |
Практический чек-лист: как использовать ИИ в анализе
Если ты начинающий или хочешь ускорить процесс — мой чек-лист поможет:
Для скриптовых языков (Python, JS, PowerShell):
- Загрузи код в ИИ-инструмент (например, VirusTotal с интеграцией ИИ).
- Спроси: "Объясни, что делает этот код, игнорируя имена переменных. Выдели опасные функции."
- Если код обфусцирован, попроси ИИ предложить шаги для деобфускации.
Для бинарных файлов (.exe, .dll):
- Сначала используй классические инструменты:
PEiD,strings,Ghidra. - Если нашёл интересные функции, покажи их ИИ с вопросом: "Что делает эта функция? Есть ли в ней вредоносные паттерны?"
- Сначала используй классические инструменты:
Для сетевого трафика:
- Лови трафик через
tcpdumpили Wireshark. - Загрузи PCAP в ИИ-инструмент (например, NetworkMiner) и попроси проанализировать: "Какие домены и IP участвуют в этом трафике? Есть ли подозрительные запросы?"
- Лови трафик через
Для автоматизации:
- Настрой ИИ-ассистента через 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. ✅ Для трафика — анализирует лог и выделяет подозрительные домены.
Где ИИ бессилен: ❌ Упаковщики и нулевые дни — нужны классические методы. ❌ Контекстные ошибки — всегда проверяй вывод ИИ. ❌ Не используй как единственный инструмент — комбинируй с традиционными методами.
Что почитать дальше
Если тема зацепила, рекомендую:
- Practical Malware Analysis — библия для начинающих.
- The IDA Pro Book — если хочешь разобраться с бинарниками.
- MalwareTech Blog — разборы реальных атак с практическими советами.
Вопрос для обсуждения: Ты когда-нибудь использовал ИИ для анализа вредоносного кода? Если да — какие инструменты тебя выручили? Если нет — что мешает попробовать? Поделитесь в комментариях — думаю, многим будет интересно.
