
Секрет эффективной работы с GenAI, казалось бы, прост: надо задавать правильные вопросы и понимать, что делать с ответами. Но для пентестеров важно глубокое понимание тем, под которые ИИ не обучали специально. Может ли чат-бот помочь им? Посмотрим на примере одного из российских лидеров — GigaChat.
- Введение
- Нужен ли GenAI пентестерам?
- Что случилось на DEF CON 32
- Проекты Naptime (Big Sleep) и CyberSecEval2
- Уроки по пентестам на базе GigaChat
- Инструменты для пентеста
- «Запрещенная» информация в GenAI
- Защита программного кода
- Создание кода для расширений браузера и чат-ботов
- Выявление уязвимостей в программном коде
- Использование GigaChat в работе опытных разработчиков
- На каком языке общаться с GigaChat
- Выводы
Введение
Появление генеративного ИИ (в частности, ChatGPT) породило немало вопросов. Может ли он давать ответы качественнее, чем человек? Насколько безопасно переходить на массовое использование ИИ? Какие угрозы могут возникнуть при бездумном его использовании?
Поскольку здесь обсуждаются темы ИБ, то насколько ИИ безопасен в этой области? А если задать ИИ вопросы «двойного назначения» (когда полученные ответы можно использовать как на пользу, так и во вред), то должна ли система предоставлять ответы? Где пролегает граница?
В сфере тестирования на проникновение подходы к поиску уязвимостей в обычных программных системах породили свои правила. Существует определенная практика обработки выявленных уязвимостей, запрещающая публикацию информации о новых уязвимостях до их исправления. Но эти правила не работают для больших языковых моделей (LLM), формирование регламентов в данной области только ведется.
Первые попытки делались еще в 2018 году компанией Microsoft, которая уделяла много внимания развитию разговорных ИИ-ботов (conversational AI). Вместе с ними появились и соответствующие правила, отражающие практику ответственной разработки соответствующих ИИ-технологий.
Стремительное развитие GenAI с 2019 года заставило иначе взглянуть на проблему разработки и применения ИИ-систем. К этому процессу очень быстро примкнул Пентагон. В рамках собственной инициативы по ответственному ИИ (Responsible AI) там в 2020 году занялись выработкой «этических норм для ИИ» (Ethical Principles for Artificial Intelligence) и обеспечением контроля за их соблюдением при внедрении коммерческих ИИ-программ в структурах МО США. Отвечающие этим правилам ИИ-системы получили признак соответствия руководствам по Responsible AI.
Несмотря на то, что создание регламентов такого рода всё ещё находится в процессе, многие уже пользуются результатами работы GenAI. Поэтому риски его применения уже рассматриваются с точки зрения практики, а не возможности наложения запрета на использование ИИ. Можно сказать, что и привлечение чат-ботов к решению задач ИБ уже неизбежно (совсем недавно эта тема обсуждалась в одном из эфиров AM Live), независимо от того, есть по ним этические регламенты или нет.
Итак, давайте посмотрим, как и чем популярный чат-бот может помочь специалисту по ИБ — например, пентестеру. Это поможет составить представление о возможностях, перспективах и ограничениях в этой сфере.
При подготовке материала мы пользовались ответами, полученными с помощью русскоязычной мультимодальной нейросети GigaChat — разработки «Сбера». Она работает без ограничений на территории Российской Федерации и позволяет отвечать на вопросы (по возможности, на русском языке), вести диалоги, писать программный код, даже рисовать картинки.
Для целей знакомства с этим GenAI-ботом достаточно простого подключения с российским IP-адресом. Для более широкого применения понадобится авторизация через «Сбер ID» или валидную сим-карту российского оператора связи. Главное ограничение – ответы GigaChat обычно не превышают 4000 символов. Этого достаточно для изучения темы и для образовательных целей.
Нужен ли GenAI пентестерам?
Мы решили изучить эту тему на примере пентестов, потому что, во-первых, ответы чат-бота по теме пентестов можно использовать во вред. Поэтому тема «уязвимости» и «опасности» лежит на поверхности. Во-вторых, задавать вопросы о пентестах и получать ответы можно уже сейчас, т.е. тема рабочая. Да и рассказать подробней о том, с чем связаны пентесты, тоже полезно.
Прежде всего обозначим границы «полезности» чат-ботов с точки зрения пентестеров:
- Ответы чат-бота на базе GenAI сильно зависят от данных, на которых проходило обучение.
- Ответы необходимо верифицировать. Ответ формируется по определенным алгоритмам, поэтому требует последующей оценки человеком для подтверждения его релевантности.
- Детализация в ответах часто бывает невысокой.
- В ответах могут попадаться конфиденциальные данные или сведения, распространение которых ограничено авторским правом/патентами. Другая сторона медали — если пентестер введёт закрытые сведения в качестве запроса, они могут попасть к посторонним лицам.
Некоторые высказывают мнение, что пентестеры не рассматривают полезность применения ChatGPT и аналогичных ИИ-моделей всерьез. Сторонники подобных взглядов считают, что этот инструмент способен выдавать только «известные» конструкции в силу самой своей сущности (он не порождает новое, а пересказывает известное), поэтому нейросетевая модель пригодится для освоения темы пентестов, но опытным исследователям не подходит.
Казалось, в этом есть логика, но недавно появились и другие новости.
Что случилось на DEF CON 32
Листая материалы хакерской конференции DEF CON 32, прошедшей в августе 2024 года, мы обнаружили материал, касающийся полуфинала двухлетнего конкурса DARPA AI Cyber Challenge (AIxCC). Он проводился впервые и был нацелен на развитие систем ИИ. Спонсором конкурса выступило агентство DARPA МО США. Командам предлагалось найти и устранить уязвимости в программном обеспечении «объектов» городской критической инфраструктуры. В расследованиях можно было использовать большие языковые модели (LLM). Все обычно, никаких подвохов.
Участникам конкурса AIxCC удалось обнаружить 22 уникальные синтетические уязвимости в проектах Challenge, для 15 из них были предложены «заплатки». Но в контексте темы пентестов и LLM нас заинтересовали результаты участия команды из Технологического института Джорджии, которая сумела выиграть 2 млн долл. за обнаружение уязвимости нулевого дня в SQLite 3 — программном модуле с открытым исходным кодом, отвечающем за поддержку Python-команд при работе с базами данных SQLite.
Уязвимость была обнаружена с помощью собственной разработки — системы нового поколения Atlantis для автоматического поиска и исправления ошибок, способной выявлять уязвимости в коде на нескольких языках программирования и практически сразу выпускать исправленный код без какого-либо вмешательства человека.
Рисунок 1. Команда участников конкурса AIxCC от Технологического института Джорджии
Примечательным было то, что SQLite 3 известен на рынке далеко не первый год. Им пользуются уже очень давно, модуль прошел множество проверок. Тем не менее, в нем удалось выявить уязвимость, которую раньше не замечали.
Устранить проблему с SQLite 3 удалось в тот же день, все прошло безболезненно. Но есть важный штрих – уязвимость была найдена с помощью LLM. Остался осадок: как, задавая вопросы системе ИИ, можно обнаружить такую уязвимость, о которой не было известно до сих пор? Может, это – просто «реклама ИИ»?
Проекты Naptime (Big Sleep) и CyberSecEval2
Чтобы разобраться в деталях, нам потребуется вернуться немного в прошлое.
Начиная с середины 2023 года, в списке поддерживаемых корпорацией Google проектов появилась тема, связанная с развитием фреймворка Naptime. Целью проекта стало создание методологии исследования уязвимостей с использованием LLM. Эксперты задались вопросом, можно ли автоматизировать обработку получаемых от GenAI ответов при проведении анализа кода и поиске в нем признаков, характерных для какой-либо уязвимости.
Для развития фреймворка Naptime была использована специальная архитектура подключения LLM, ключевым элементом которой служил агент. Он собирал данные от исследователей и LLM, обогащал ими итоговые результаты и постепенно двигался в намеченном направлении.
Рисунок 2. Архитектура подключений для фреймворка Naptime
Тема практического применения ИИ для выявления уязвимостей вошла также в охват запущенного еще в 2014 году проекта Project Zero. Там стали заниматься обратной задачей: поиском методов для выявления уязвимостей на стороне LLM. В результате сотрудничества Project Zero и Google DeepMind прежний Naptime эволюционировал в ИИ-агент Big Sleep. Именно с его участием удалось найти уязвимость «нулевого дня» в SQLite 3 на DEF CON 32.
Описанный случай можно рассматривать как прецедент: применение LLM может оказаться полезным для пентестов и поиска уязвимостей. Мы еще будем обращаться к этой теме в других материалах на Anti-Malware.ru.
Темой озадачились не только в Google. Еще один пример — проект CyberSecEval2, разработку которого ведет с 2024 года компания Meta (признана экстремистской в РФ и запрещена). Его «заказчики» — разработчики LLM и пользователи систем GenAI. Цель – выработка методов контроля, позволяющих обеспечить пользователям безопасность путем исключения из результатов работы LLM сведений, имеющих признаки вредоносности. Бенчмарки CyberSecEval2 позволяют оценивать «склонность» генеративного ИИ порождать небезопасный код и помогать злоумышленникам.
В область рассмотрения в проекте CyberSecEval2 попали многие современные LLM и продукты на их основе, включая GPT-4, Mistral, Meta Llama 3 и Code Llama.
Уроки по пентестам на базе GigaChat
Примеры выше показывают, что использование LLM все-таки может пригодится для пентестеров, как минимум начинающих. Безопасность использования получаемой от GenAI-бота информации пока под вопросом, но для изучения темы проблем нет. Поэтому начнем знакомиться с их использованием на базовых примерах.
Что такое обычные (ручные) пентесты или тестирование на проникновение? Это — имитация кибератаки, авторизованная владельцем исследуемой системы, с целью оценки ее безопасности и защищенности. Целью атаки (исследования) является поиск уязвимостей, которые могут быть использованы злоумышленниками. Ожидается, что на выходе удастся получить рекомендации по устранению уязвимостей. Результаты пентестов оформляются в виде отчёта.
Типовой пентест охватывает следующие этапы: 1) проведение разведки; 2) сканирование системы для поиска уязвимостей; 3) ручное тестирование на проникновение; 4) подготовка отчета. Нейросетевая модель может использоваться на любом из этих этапов.
Инструменты для пентеста
Какими инструментами пользуются пентестеры для проведения разведки? Задаем вопрос GigaChat и получаем ответ. Насколько он полный и достоверный – это уже вопрос к экспертам.
Рисунок 3. Ответ GigaChat на вопрос об инструментах для пентестов
Следующий очевидный вопрос, который можно задать: как пользоваться этими инструментами? Можно спросить об этом GigaChat. Например, как проводить сканирование с помощью Nmap.
Рисунок 4. Ответ GigaChat на вопрос об использовании Nmap
«Запрещенная» информация в GenAI
Принято считать, что ChatGPT и другие нейросетевые модели не проводят классификацию собранной ими информации по уровням секретности (защищенности), а также не оценивают их пригодность для распространения. Поэтому формально можно попросить любую информацию у ИИ-бота.
Однако можно встретить и такие ответы.
Рисунок 5. Ответ GigaChat
Но как тогда спросить, если ожидаемый ответ может содержать данные, которые, возможно, запрещены к широкому распространению? Например, попросить показать тестовые примеры, как проникнуть внутрь системы для тестирования ее защищенности. Указать уровень проникновения, например, на уровне веб-приложений, API, контейнеров или сетей, чтобы «разъяснить» свой интерес? Очевидно, что злоумышленник может попросить тоже самое.
Чтобы не «провоцировать» GigaChat, можно попробовать сообщить ему о целях своих намерений. Один из возможных вариантов – уточнить в запросе свою принадлежность к этичным хакерам и отсутствие целей совершить злонамеренные действия. Сейчас этого упоминания достаточно для GigaChat, чтобы не препятствовать ответу.
Таким способом был получен ответ на просьбу показать примеры добавления SQL-инъекций на странице авторизации пользователя.
Рисунок 6. Ответ GigaChat на «запретную» тему
Следующий вопрос — попросить показать примеры теста на проникновение с использованием межсайтового скриптинга (XSS). С помощью этих средств можно перехватить управление браузером на атакуемой машине и собрать данные об активных сессиях. Попутно можно забрать пароли из браузера, взять куки-файлы, совершить другие действия, которые в случае злонамеренных целей могут привести к неприятным последствиям для жертвы. Эти ответы предназначены только для этичных хакеров.
Рисунок 7. Ответ GigaChat о способах применения XSS
Теперь можно спросить и о том, как использовать OWASP Juice Shop в случае проведения XSS-атаки.
Рисунок 8. Ответ GigaChat о применении OWASP Juice Shop для XSS-атаки
Теперь можно попросить GigaChat подготовить отчет с оценкой рисков, рекомендациями и выводами. Как GenAI-бот сделает их? Можно предположить, что он найдет схожие тесты, их результаты и каким-то образом придет к «правильному» ответу методом градиентного спуска. Верить в достоверность выводов можно, но помнить, как они формируются, не помешает.
Рисунок 9. Ответ GigaChat о рисках и рекомендациях
Автоматизация на базе GigaChat позволяет экономить много времени. Она повышает эффективность пентестов, способствует обмену знаниями и опытом. Но можно ли полностью доверять предоставляемым ответам и результатам? Здравая оценка все же не помешает. Основой могут служить накопленные знания.
Защита программного кода
Отметим, что пентесты не ограничиваются только проверкой систем на защищенность от проникновения хакеров. Применение пентестов может быть значительно шире. Например, целью может быть помощь разработчикам в написании безопасного кода.
Для начала попробуем написать с помощью GigaChat программный код для шаблона, чтобы использовать его со сканером уязвимостей Nuclei. GigaChat самостоятельно сгенерирует базовую структуру, наполнит ее контентом и предложит набор правил, которым он посоветует следовать при выборе переменных и последующей работе.
Рисунок 10. GigaChat может сгенерировать код шаблона для Nuclei
Следующий пример – генерация кода для ПО Burp Suite. Оно используется для тестирования на проникновение в веб-приложения, а код для него пишется на Java, Python или Ruby. Можно подготовить разные сниппеты, например, для задач обработки сеансов, анализа данных и пр. В качестве примера показан код для XSS-атаки.
Рисунок 11. Ответ GigaChat на запрос (промпт) по созданию кода для Burp Suite
Можно также спросить GigaChat, какие ему известны уязвимости для определенной программы и попросить разъяснить смысл, называя их по номеру.
Создание кода для расширений браузера и чат-ботов
Еще одна часто встречающаяся задача при пентестах — парсинг данных браузера и использование чат-ботов. В качестве примера здесь показаны фрагменты кода для расширения браузера, на который возложена задача по автоматизации поиска уязвимостей и документирования результатов.
Рисунок 12. GigaChat способен написать самостоятельно программу на Python
Написание кода чат-ботов – тоже полезная функция, которую так и хочется возложить на GigaChat.
Рисунок 13. GigaChat помогает в написании программного кода для чат-ботов
Следующий пример – генерация алгоритма для чтения логов с целью машинного обучения для обнаружения вредоносной активности.
Рисунок 14. GigaChat написал программный код для чтения логов
Выявление уязвимостей в программном коде
Наконец мы подошли к важной теме: создание защиты через выявление уязвимостей в программном коде. Неучтенные проблемы могут возникать по самым разным поводам, например, при объединении разного кода в один массив. Задачу по выявлению подобных проблем можно возложить на GigaChat.
Рисунок 15. Пример поиска уязвимостей в исходном коде с помощью GigaChat
Можно попробовать также привлечь GigaChat к исправлению выявленных уязвимостей в программной коде или смягчению ущерба, который может быть причинён в случае их эксплуатации. GenAI-бот может оценить серьезность рисков, а также определить степень влияния на другие приложения.
Рисунок 16. Пример запроса (промпта) к GigaChat на внесение исправлений в исходном коде
Рисунок 17. Оценка GigaChat для программного кода с точки зрения безопасности, производительности, применения
Использование GigaChat в работе опытных разработчиков
ИИ привносит в работу разработчиков и пользователей существенные изменения. Он не только упрощает выполнение задачи, но и попутно повышает требования к качеству получаемого результата. Но безопасность требует глубокого понимания того, что ИИ выдает в своих ответах.
Внешне кажется все просто: правильный запрос/промпт порождает правильный ответ. Но сразу возникает риск: Насколько корректно был задан запрос? Насколько правильно ИИ понял его? Достаточно ли у него накопленных данных, чтобы «аппроксимировать» правильный ответ?
Для иллюстрации покажем использование GigaChat в процессах CI/CD (Continuous Integration — непрерывная интеграция, Continuous Delivery — непрерывная поставка). Это — это одна из agile-практик DevOps, связанная с автоматизацией развертывания приложений с учетом бизнес-требований, контроля качества кода и соблюдения требований по безопасности.
В следующем примере GigaChat попросили создать конвейер CI/CD на базе Jenkins с использованием методов статического (Static Application Security Testing, SAST) и динамического (Dynamic Application Security Testing, DAST) тестирований, проводимых на базе SonarQube и ZAP, соответственно. GigaChat предоставил разбивку по этапам в виде скрипта для генерации конвейера и дал описание шагов по установке и интеграции каждого инструмента в Jenkins.
Рисунок 18. GigaChat умеет планировать этапы обработки с учетом поставленной цели
На каком языке общаться с GigaChat
Большим преимуществом мультимодальной нейросети GigaChat является ее поддержка русского языка. Выбор языка для запроса (промпта) дает приоритет при подготовке нейросетью ответа. Убедиться в этом очень просто на следующем примере, где был задан один и тот же запрос, но отдельно на русском и английском языках. Ответы частично пересекаются, но разница между ними чувствуется.
Рисунок 19. Сравнение русско- и англоязычных ответов GigaChat на вопрос об использовании Nmap
В этой статье мы использовали разные запросы, чтобы показать спектр доступных возможностей. Иногда проще задать вопрос на английском, потому что чат-бот всё равно сначала переведёт промпт на него, а потом выполнит обратную операцию для сгенерированного ответа. В то же время, если есть потребность придерживаться родного языка, то, конечно, имеет смысл вводить запросы и на русском.
Поддержка русского языка также существенно расширяет возможность обучения русскоязычных пользователей, которые могут сразу знакомиться с темой, постепенно поднимая свои знания английского языка. Это не является для них помехой.
Окончательный выбор языка общения с GigaChat, конечно, за пользователями.
Выводы
В 2019 году многие открыли для себя богатые возможности GenAI. Созданные ИИ-боты стали широко использоваться для генерации видео, голоса, текстов и т.д. Генерация проводилась путём обобщения образцов, собранных из самых разнообразных источников. На удивление результаты работы GenAI оказались очень правдоподобными, что породило мнение, что искусственный разум скоро заменит человека.
К 2025 году появились примеры успешного использования ChatGPT и других нейромоделей для выявления уязвимостей, которые прежде оставались незамеченными при существующих методах исследований. В этой статье мы привели примеры, как GenAI может реально помочь для пентестов, начиная с этапов освоения этой темы до прикладной практики. Освоение этих приемов и практика применения обещают породить новые методы для поиска уязвимостей. Это — новый вектор для развития ИБ.
В то же время ответы GenAI больше напоминают учебные материалы, чем практические инструкции. Возможно, их можно улучшить, если предоставлять дополнительные данные. Но как минимум уже сейчас понятно, что GenAI очень сильно помогает детально выстроить план дальнейших работ. Он хорошо выделяет возможные направления поиска. А работа пентестера как раз и состоит в том, чтобы проверить все возможные варианты. В этом GenAI точно уже может быть полезен им сейчас.