С чего всё началось
Я больше не мог смотреть на то, как сканеры уязвимостей просто генерируют атаки из словарей и кидают в стену тысячи запросов. Это напоминало мне детский рисунок, где ребёнок мечется кистью по холсту, надеясь случайно изобразить Ван Гога.
Я хотел сканер, который понимает. Сканер, который учится. Сканер, который адаптируется.
Так начался проект AI-Scanner — не как плагин к существующему решению, а как попытка вырастить нечто живое: обучаемую систему, способную эволюционировать, предсказывать, ошибаться и исправляться.
Первая попытка: генетика без смысла
Я начал с того, что знал: генетический алгоритм. Эволюция векторов атак, мутации, кроссовер, отбор. Всё как по учебнику. Система порождала тысячи новых payload’ов — но из них лишь единицы были валидны. Я смотрел на отчёты, полные мусора. В логах красовались HTML-блоки с %%%%%%%}
и ><><><>><
, которые не вызывали ни ошибки, ни отклика, ни жизни.
Алгоритм слеп. Он не знает, что делает. Он просто копирует, мутирует, надеется.
Вот пример мутации, которую я тогда использовал:
func SmartMutate(payload string) string {
return `<svg onload="` + payload + `"></svg>`
}
Она казалась разумной. Но в вакууме даже разум — бесполезен.
Стена: отсутствие данных для обучения
Я подключил простую нейросеть (MLP), чтобы начать предсказывать успешность payload’ов. Но тут я столкнулся с новой проблемой: модель не могла обучаться. Почему? Потому что не было данных. Атаки не срабатывали. Модель получала только нули. Неудача → нет обратной связи → обучение невозможно.
Я оказался в замкнутом круге:
Модель не учится, потому что нет меток.
Меток нет, потому что атаки неэффективны.
Атаки неэффективны, потому что нет модели.
Пришлось сделать шаг назад и вручную аннотировать небольшое количество успешных атак. Только тогда началось обучение.
Первые шаги: модель оживает
Когда я запустил цикл обучение → атака → обучение
, система начала оживать. Нейросеть стала отбрасывать бесполезные варианты и выделять перспективные. Количество срабатываний пошло вверх. Я впервые увидел, как машина учится на собственных ошибках.
model.Train(X, Y, epochs, learningRate)
Каждая итерация делала модель чуть лучше. И эта разница ощущалась — в логах, в отчётах, в числах.
Новый тупик: стагнация мутаций
Но потом пришло разочарование. Система стабилизировалась. Генетика больше не порождала ничего нового. Лучшие payload’ы повторялись, комбинации сходились к одному и тому же. Эволюция остановилась. Я увидел, что мутация уже не разнообразие, а шум. Элитные особи не эволюционировали — они клонировались.
Вдохновение из другой области: квантовая логика
Я вспомнил о принципах квантовых вычислений. Конечно, я не мог использовать квантовый компьютер. Но я мог реализовать суперпозицию и туннелирование — как идеи.
Я изменил логику генерации:
Вместо одного сильного вектора я порождал десятки параллельных гипотез.
Добавил вероятностный отбор: не всегда побеждает сильнейший, иногда — рискованный.
Начал использовать локальные скачки в пространстве мутаций, чтобы выходить из тупиков.
Эти принципы дали результат. Популяция оживилась. Система снова начала расти.
Слияние: AI + генетика + квантовые принципы
Вот тогда всё сошлось:
Генетический движок создавал возможности.
Нейросеть выбирала перспективные направления.
Квантовая логика обеспечивала разнообразие и прыжки в новое.
Каждое поколение становилось умнее не потому, что алгоритм так написан, а потому что вся система училась. Это была настоящая эволюция — не математическая, а живая.
Вот часть этого цикла в main.go
:
successes, results := fuzzer.FuzzWithModel(...)
model.Train(X, Y, ...)
engine.EvaluateFitness(successes, results)
engine.Evolve()
Финал: сканер, который думает
Я не говорю, что создал интеллект. Но я создал механизм обучения, который живёт внутри фаззера. Он не просто перебирает. Он помнит, учится, предсказывает и адаптируется.
Когда я увидел, как он сам начинает порождать эффективные цепочки, как он отбрасывает шаблонные атаки и предлагает нестандартные — я понял: это работает.
Заключение
AI-Scanner для меня — это эксперимент. Я хотел проверить, можно ли встроить обучение не как отдельный модуль, а как часть архитектуры с самого начала. И это оказалось возможным.
Нейросеть в центре системы даёт важное преимущество: она делает процесс адаптивным. Без неё — это просто перебор. С ней — уже поиск с памятью и приоритетами.
Проект я делал один, потому что мне хотелось понять: можно ли выжать больше смысла из хаоса фаззинга.
hydroxygenium
Можно ссылку на код ? хочется посмотреть
digtatordigtatorov
Боюсь, что автор задействовал скрытые параллельные миры, скорее всего код написан его невероятным интеллектом из другой Вселенной нашего мультиверса