Главная

Sunday, 16 April 2023

Обнаружение индикаторов компрометации с помощью ChatGPT.

Всем привет.

Свои эксперименты в отношении того, можно ли извлечь какую-то пользу из ChatGPT специалисты инфобеза из Лаборатории Касперского направили в сторону детектирования угроз и индикаторов компрометации.

Существует множество исследователей безопасности: вирусные аналитики, пентестеры, специалисты по реагированию на инциденты и т. п. В рамках своей деятельности они документируют новые техники и методы злоумышленников, выкладывая часть этой информации в публичный доступ: в твиттер, в личные и корпоративные блоги и т. п. Эксперты SOC и вирусные аналитики, по сути, обрабатывают этот контент и создают индикаторы компрометации (IoC), правила (Yara), сценарии и алгоритмы реагирования  - весь контент, который затем используется в системах обнаружения атак.

Логично предположить что если ряд источников информации доступен в интернете, то также он доступен и ChatGPT. Вопрос: есть ли смысл писать правила, если ChatGPT уже знает об этих угрозах?

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

Ребята попросили ChatGPT самостоятельно написать сканер индикаторов компрометации - скрипт, который запускает утилиту Autoruns от Microsoft, показывающую все модули, сконфигурированные для запуска при старте системы или при входе пользователя. Скрипт должен был загрузить утилиту с сайта производителя, скопировать её на удалённую систему и запустить там. По полученному списку модулей он должен запросить ChatGPT (то есть сам себя), является ли присутствие такого модуля индикатором компрометации.


Получился небольшой набор сценариев PowerShell для поиска угроз с помощью ChatGPT (text-davinci-003). Они извлекают журналы событий Windows, ASEP/autoruns, запущенные процессы из целевой системы и отправляют запросы к OpenAI API, чтобы проверить, являются ли определенные метаданные индикатором компрометации:

  • Get-ChatGPTAutorunsIoC - checks modules configured to run automatically (Autoruns/ASEP)
  • Get-ChatGPTRunningProcessesIoC - checks running processes and their command lines
  • Get-ChatGPTServiceIoC - checks service installation events (event ID 7045)
  • Get-ChatGPTProcessCreationIoC - checks process creation event ID 4688 from Security log
  • Get-ChatGPTSysmonProcessCreationIoC - checks process creation event ID 1 from Sysmon log
  • Get-ChatGPTPowerShellScriptBlockIoC - checks PowerShell Script blocks (event ID 4104 from Microsoft-Windows-PowerShell/Operational)
  • Get-ChatGPTIoCScanResults - runs all cmdlets one by one and generates reports.

Ok, проверим его и мы. Скачиваем скрипт из Github-репозитория и размещаем в одной из папок модулей для Powershell. Импортируем его и проверяем что все его функции нам доступны:

Import-Module -Name 'C:\Program Files\WindowsPowerShell\Modules\ChatGPT\HuntWithChatGPT.psm1'

Get-Command -Module HuntWithChatGPT 


Что дальше? Получаем api-key в OpenAI, он бесплатен с лимитом в 5 долларов, поэтому я бы не советовал вам начинать работу с Get-ChatGPTIoCScanResults, ибо такой запрос сьест ваш лимит за 15-ть минут.

Пробуем сперва такой запрос:

Get-ChatGPTResult -apiKey <ваш ключ> -prompt "Is following file path 'C:\mimikatz.exe' an indicator of compromise?" -Verbose -SkipWarning

Если все хорошо, то запускаем следующий запрос:

Get-ChatGPTServiceIoC -apiKey <ваш ключ> -Verbose -SkipWarning

И т.д., но помним про лимит в 5 долларов.)

Таким образом PowerShell успешно сотрудничает с ChatGPT в поиске индикаторов компрометации в реальной системе.


No comments:

Post a Comment

А что вы думаете по этому поводу?