На прошлой неделе коллега скинул мне малварь в архиве. Не специально — просто файл с названием «срочно_договор.pdf.exe» попал не в ту папку, и антивирус его заблокировал. Меня попросили глянуть, что внутри, прежде чем отправлять на VT. И вот тут ИИ оказался полезен совершенно неожиданным способом.
Раньше, чтобы понять, что делает малварь, я открывал дизассемблер, тыкался в код часами и чертыхаясь искал нужные функции. Сейчас я всё ещё открываю дизассемблер, но уже не тыкаюсь вслепую — ИИ примерно показывает, куда смотреть.
Что ИИ умеет делать с малварью
Большинство моделей, которые сейчас называют «ИИ для анализа кода», — это, по сути, продвинутые языковые модели, натасканные на программирование. Они не выполняют код, не эмулируют процессы и уж точно не заменяют песочницу. Но они чертовски хороши в одном: читают код и объясняют, что он делает.
И вот что я для себя выяснил.
Статический анализ с подсказками — это первое, что приходит на ум. Берёшь бинарник, дизассемблируешь в IDA или Ghidra, берёшь ассемблерный листинг и кидаешь в контекст модели. Не весь, конечно, — кусок, который выглядит подозрительно. Модель обычно говорит что-то вроде: «Здесь идёт запись в реестр, автозагрузка через Run-ключ, дальше — подключение к C2 по жестко забитому IP». Это не магия. Просто модель видела достаточно кода, чтобы узнавать паттерны.
Второе — распознавание обфускации. С малварью никто не возится без причины. Если видишь дикий спагетти-код, где одни инструкции повторяются тысячу раз, — это обфускация. ИИ помогает понять, что под этим спагетти спрятано. Не идеально, но чаще всего он хотя бы находит центральную функцию, ради которой всё запутано.
Третье — генерация скриптов для автоматизации. Это, наверное, самая недооценённая фича. Спрашиваешь: «Напиши Python-скрипт, который из дизассемблерного листинга достанет все строки, похожие на URL, и сложит в таблицу». И получаешь рабочий скрипт за пять секунд. Раньше на это уходил час — и не факт, что скрипт не ломался на втором файле.
Где ИИ конкретно облажался
Буду честен: я нередко попадал в ситуации, когда модель уверенно выдавала полную чушь.
Помню файл, в котором был обфусцированный PowerShell-скрипт. Модель три раза подряд выдавала разные версии деобфускации, и все три были неверные. Она «видела» переменную, которой там не было. Почему — не знаю. Может, начиталась похожего кода в тренировочных данных и стала подставлять типичные паттерны.
Вывод: ИИ хорош, когда работает с кодом, который более-менее читаем. С обфускацией высокого уровня он часто просто придумывает объяснение, которое звучит правдоподобно, но не совпадает с реальностью.
Ещё ИИ периодически «забывает» про контекст. Показываешь ему функцию — он объясняет её корректно. Но не может связать её с тем, что происходит в соседних функциях, потому что у него нет всей картины целиком. Для этого всё ещё нужен человек, который держит всю структуру в голове.
Что я теперь делаю на практике
Изменился сам процесс. Раньше было примерно так: открыл файл — ищи подозрительные строки — гугли каждый IP — hopefully понимаешь что к чему.
Теперь иначе: открыл файл — попросил ИИ выделить подозрительные функции — проверил их вручную — написал скрипт для массовой обработки похожих файлов — отправил на VT только то, что не разобрал.
На конкретном примере: в том файле от коллеги ИИ за минуту выделил три функции, которые занимались сетевой активностью. Две оказались легитимными — библиотечные вызовы WinHTTP. А третья — явный коннект к внешнему серверу без TLS, с передачей hostname в открытом виде. Я бы потратил на эту находку полчаса, а не минуту.
Чего ИИ точно не умеет
Динамический анализ. Он не запустит малварь. Не посмотрит, что она делает в памяти, какие процессы создаёт, куда лезет по сети. Для этого есть песочницы — и они всё ещё необходимы.
Он также не заменит понимание архитектуры. Если ты не знаешь, как работает win32 API, как выглядит типичный shellcode или что такое process hollowing, ИИ будет бесполезен — он не сможет провести тебя по логике, он может только объяснить уже знакомые вещи.
И ещё: он опасен в плане ложной уверенности. Модель выдаёт ответ так, будто она права. Но она может врать — и делает это очень убедительно. Поэтому любое заключение ИИ я проверяю. Не потому что модель плохая, а потому что для анализа вредоноса нужна верификация, а не доверие.
Коротко
ИИ для анализа малвари — это не автопилот. Это продвинутый ассистент, который ускоряет рутину и помогает разобраться в незнакомых паттернах. Но ему всё ещё нужен человек, который понимает, что он делает, и проверяет результат.
Мой опыт говорит следующее: если файл относительно простой и не сильно обфусцирован — ИИ экономит 60–70% времени на первичном анализе. Если файл серьёзный и написан с расчётом на противодействие анализу — ИИ полезен на уровне подсказок, но основная работа остаётся человеку.
Коллеге я в итоге ответил за 15 минут вместо обычных полутора часов. За это время ИИ сэкономил мне примерно час возни с дизассемблером. Не революция, но вполне рабочая штука.
