Вступление

Фолза, фолза, фолза...... как же все устали от фолзы... вот и я устал...

Ты думал, что устроившись работать в SOC аналитиком будешь раскрывать крутые инциденты и выводить хакера на чистую воду?

А вот и нет!

Возьму на себя смелость утверждать, что в большинстве небольших (до 30 человек) SOC командах аналитики 1 линии (а зачастую и 2 линии) 70% времени возятся с фолзой.

Это бесконечные исключения, доработки правил корреляции, битва с клиентом за легитимность....

И для некоторых за 1-2 года (примерно столько по моим наблюдениям занимает рост\уход из направления) так и не наступает "реальный" инцидент.

Для некоторых наступает, но, из-за слабого набора правил и отсутствия модели угроз этот инцидент, фиксируется клиентом наличием зашифрованных ПК 0_0

.... и вот ты сидишь перед 2 мониторами, на часах 09:12, и прилетает очередная пачка из ~11 инцидентов об установке подозрительных служб...

открываешь первый, а там касперский обновился - user:KLAdmin, service name:kav_inst_agent... опять исключение править, эх

Так и я долгое время не понимал, почему 2 года активно пишу исключения, участвую в разных ИБ активностях, интеграциях, процессах... НО

вот сидишь на собеседовании в крупный SOC. Тебе кидают в чат commandline который ты вроде и видел в каком-то отчете Positive Technologies, и даже читал... Но чёрт побери, что делает эта команда?

В итоге я понял для себя, что просто читать новости ИБ, статьи разборов техник без практики (закрепления) бесполезно для меня. И вот я здесь)

Это моя первая статья, проба пера и всё такое. Посмотрим, что из этого выйдет.

Этой статьей я начинаю цикл "Пробуем на вкус техники MITRE ATT&CK".

Суть данного цикла - изучать логи, сформированные одной из реализаций той или иной техники MITRE ATT&CK (далее MA).

Необходимое уточнение - не все реализации той или иной техники будут рассмотрены, т.к. я буду выбирать интересные лично для меня и, возможно, предложенные в комментариях.

Условлюсь отмечать подозрительные и требующие внимания события тегом тревожно

Немного подробностей о моей задумке...

Внутри тестовой инфраструктуры будут использоваться техники MA для создания необходимых событий (логов) в журналах Sysmon, Security, Powershell.

После чего будет произведен анализ и некая мораль из полученных сведений.

Все логи поступают на хранение и обработку в ELK стек.

ELK (вдруг вы не знали):

  • Elasticsearch (хранение и поиск данных);

  • Logstash (конвеер для обработки, фильтрации и нормализации логов);

  • Kibana (интерфейс для удобного поиска и администрирования).

Для реализации Техник будет использоваться Kali Linux и крохи полученного опыта на курсе Web Pentest.

Инфраструктура жертвы будет на базе ОС от Microsoft - WIndows 10-11, Windows server 2012-2025, а также Exchange и DC (когда дойдем, уточню версию).

Немного обо мне

Я работаю в SOC более 4 лет. Большую часть времени - на 1 линии (сменный график меня не отпускал).

С самого начала мне понравилась роль эдакого "детектива". И до сих пор этот огонь теплится где-то в глубине.

Я открыт к предложениям о работе. Резюме вышлю по запросу.

Мне интересно развиваться в следующих направлениях:

  • DFIR;

  • Threat Hunting;

  • Incident Response;

  • Разработка правил корреляции.

Написанием статей я хочу принести пользу не только себе, но и своим коллегам SOC и других ИБ\ИТ подразделений.

Информация о технике T1547.001

Информацию взял тут

Злоумышленники могут закрепиться в системе, добавив программу в папку автозагрузки или указав путь к этой программе в ключе запуска реестра. Это приведет к тому, что программа, на которую добавлена ссылка, будет запускаться при входе пользователя в систему. При этом она будет выполняться в контексте пользователя и иметь уровень разрешений, соответствующий его учетной записи.

В Windows по умолчанию созданы следующие ключи запуска:

  • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

  • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce

  • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run

  • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce

Ключи запуска могут существовать в разных кустах реестра. Также доступен ключ HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnceEx, но он не создается по умолчанию в Windows Vista и более новых версиях ОС. Записи в ключах запуска в реестре могут указывать программы напрямую или как зависимости. Например, при входе в систему можно загрузить DLL-файл, используя ключ Depend в RunOnceEx: reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\0001\Depend /v 1 /d "C:\temp\evil[.]dll".

Программы, размещенные в папке автозагрузки, также будут запускаться при входе пользователя в систему. Существует своя папка автозагрузки для каждой пользовательской учетной записи, а также общесистемная папка автозагрузки, которая будет проверяться независимо от того, под какой учетной записью пользователь вошел в систему. Папка автозагрузки для текущего пользователя находится по пути C:\Users\[Username]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup. Папка автозагрузки для всех пользователей находится по пути C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp.

В качестве механизма закрепления в системе могут быть использованы следующие ключи реестра для настройки элементов папки автозагрузки:

  • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders

  • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders

С помощью следующих ключей реестра можно управлять автоматическим запуском служб во время загрузки:

  • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce

  • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce

  • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices

  • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices

При использовании параметров политики для указания автоматически запускаемых программ создаются соответствующие значения в одном из двух указанных ниже ключей реестра:

  • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run

  • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run

Программы, указанные в параметре Load ключа HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows в реестре, автоматически запускаются для пользователя, входящего в данный момент в систему.

По умолчанию, многострочный параметр BootExecute ключа HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager в реестре имеет значение autocheck autochk *. Это значение указывает, что при запуске Windows должна быть проверена целостность файловой системы жестких дисков, если завершение работы системы произошло не должным образом. Злоумышленники могут добавить в это значение реестра другие программы или процессы, которые будут автоматически запускаться при загрузке системы.

Злоумышленники могут использовать эти параметры конфигурации для запуска вредоносных программ, таких как средства удаленного доступа, чтобы обеспечить закрепление в системе после ее перезагрузки. Злоумышленники также могут использовать маскировку записей в реестре под данные, связанные с легитимными программами.

Меня заинтересовала реализация техники , через закладывание скрипта\исполняемого файла в папку автозагрузки:

Для пользователя

C:\Users\[Username]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

Для всех пользователей

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp.*

Реализация

Я подготовил .bat файл с именем UserConfig.bat (чтобы было меньше подозрений для... меня хи-хи)

Логика данного скрипта следующая:

  1. Запуск cmd.exe с командой на скрине выше

  2. Запуск powershell со скрытием самого окна powershell (параметры -WindowStyle Hidden)

  3. Выполнение обфусцированной команды (параметр -e (encode) выполняет декодирование из Base64)

  4. Обфусцированная команда устанавливает соединение cmd к машине атакующего - Reverse shell (на Kali запущен nc -nlvp 4444)

Если интересна сама команда

Также, подготовил некий payload - в моем случае это Powershell скрипт, потому что это было просто.

Его задача - скопировать наш батник в папку автозапуска.

Легенда о прославленном белом хакере

Предположим хакер (белый) "Оладушек" подготовил фишинговое письмо для жертвы (в рамках этичного тестирования).

В теле письма всё в лучших традициях - "Вы, Бедолага, выиграли 1 ооо 000 долларов, просто так. Чтобы забрать заполните анкету во вложении и отправьте ответным письмом!"

Во вложении, естественно, два наших файла - Анкета(он же payload).ps1 И UserConfig.bat

Такой вот пример доставки. Мог быть любой другой, но у меня такой.

Наш неопытный пользователь "Бедолага" видит письмо, радуется и пляшет - он теперь богатый бедолага.

Открывает анкету , чтобы заполнить, а ничего не происходит... Хмм, странно, думает бедолага. Пытается еще пару раз ее открыть, но никакая анкета не открывается.

Бедолага, расстроился, удалил письмо, выключил компьютер и пошел плакать и есть баранки с чаем.

Тем временем Оладушек, ждет , когда же Бедолага перелогинится в учетку....

Спустя n часов, Бедолага решает поиграть в любимую MMO-RPG, включает компьютер, запускает игру, ни о чем не думает.

В свою очередь, Оладушек замечает установившуюся сессию к ПК Бедолаги и начинает действовать....

whoami, systeminfo, tracert....

Но доблестный SOC аналитик замечает странности

p.s. я не использовал e-mail, запускал файл руками. Но звучит же не так красиво, верно?

Итак, файл UserConfig.bat там , где ему самое место, хи-хи.

Анализ

Какие события мы получили в результате такой последовательности действий?

Первое событие создания процесса powershell , родительский процесс - explorer (проводник).

тревожно
тревожно

хммм в Commandline какой-то скрипт payload.ps1 (Анкета)

Тут нужно обратить внимание на CurrentDirectory - текущая папка.

В нашем случае это сетевая папка, что не менее подозрительно, чем Temp, Downloads, \*\Outlook\*\, любая другая папка почтового клиента.

Имя файла, также может дать ценную информацию.

Запуск от имени пользователя , parentImage: explorer.exe - значит пользователь сам пытался открыть файл payload.ps1...

Смотрим дальше

Несколько событий подготовки powershell к исполнению скрипта и непосредственно исполнение

Видим выполнение скрипта powershell

тревожно
тревожно

И сразу создается процесс powershell и получает скрипт

тревожно
тревожно

Получаем окно консоли powershell

Conhost.exe (Console Window Host) — это системный процесс Windows, который отвечает за отображение и взаимодействие с окнами консоли, такими как командная строка (cmd.exe) и PowerShell. Когда PowerShell запускается и выполняет скрипт, он взаимодействует с консолью через conhost.exe, чтобы обеспечить корректный ввод/вывод данных, отображение текста, поддержку интерфейса и работу с командами.

Еще немного событий работы powershell
С
С

Еще одно событие, свидетельствующее о выполнении подозрительного скрипта

тревожно
тревожно

Следующее для хронологии

Снова событие выполнение скрипта

тревожно
тревожно

И наконец результат выполнение скрипта - копирование файла UserConfig.bat в папку автозагрузки

тревожно
тревожно
Остановка работы powershell

На данный момент, мы набрали по меньшей мере 7 событий (тег тревожно), в которых можно увидеть подозрительную активность.

Обращать внимание на CommandLine, TargetFileName, CurrentDirectory, User...

При нахождении чего-то подобного, стоит бить в колокол и вытаскивать powershell скрипт на изучение в песочнице (например AnyRUN).
Можно добавить изоляцию хоста и проверку средствами АВЗ.

Но мы допустим, что наш SOC не написал подходящее правило и аналитики не увидели инцидента.

Что же произойдет после выхода из УЗ "oleg" и нового входа?

Смотрим...

После некоторого времени на запуск всех необходимых служб, процессов и т.д., Windows доходит до папки автозагрузки и происходит следующее

тревожно аж пипец
тревожно аж пипец

Вот и наш скрипт запускается, а вместе с ним и reverse shell до хакера (обязательно белого).

тревожно, очень тревожно, если бы мы знали что это такое, и мы знаем, что это такое. Ведь у нас есть декодер из base64)))
тревожно, очень тревожно, если бы мы знали что это такое, и мы знаем, что это такое. Ведь у нас есть декодер из base64)))
Работа powershell и тут тоже есть тревожные события!
тревожно
тревожно
тревожно
тревожно
тревожно
тревожно
тревожно
тревожно
тревожно
тревожно
тревожно
тревожно
тревожно
тревожно

А вот и подключение ПК Бедолаги к Оладушку (е\я даже и не знаю как правильно склонить)

тревожно
тревожно

Тем временем хакер (белый) дождался...

И вот Оладушек уже пошел в бой...

тревожно
тревожно
тревожно
тревожно
тревожно
тревожно
тревожно
тревожно

На этом Оладушек остановился и дал рекомендации Бедолаге как жить в мире интернета с безопасностью.

Что мы увидели? Куда мы смотрели чтобы увидеть?

Увидели мы полную цепочку событий выполнения скрипта UserConfig.bat из папки автозагрузки.

Куда смотреть:

  • События создания процессов из папки автозагрузки

  • CommandLine событий создания процессов Powershell

  • HostApplication в событиях 600 (полностью виден скрипт)

  • Сетевые соединения от процесса Powershell

  • Создание дочерних процессов Powershell со странным ParentCommandLine

  • Такие ключи при запуске powershell -WindowStyle Hidden -e

  • Закодированный текст скрипта в CommandLine

Что делать?

  • Изолировать ПК, для анализа. Можно привлечь форензику.

  • Изучить скрипты в песочнице (в нашем случае payload.ps1 и UserConfig.bat)

  • В зависимости от логики скриптов и успешных действий злоумышленника после их исполнения принимать дополнительные меры по нейтрализации последствий (удаление файлов из папки автозагрузки, проверка новых служб, УЗ, запланированных задач и многое другое...)

Выводы

Итак, мы разобрали одну из техник MITRE ATT&CK закрепления\повышения привилегий.

Мы увидели как думает злоумышленник (упрощенно) и что видит аналитик SOC при анализе инцидента.

Исходя из этих данных можно добавить пару годных правил корреляций и потренировать свой глаз на тревожные события (что немаловажно) .

Вот так выглядит не фолза)

Для меня это был интересный опыт, я не сталкивался в своей работе с таким кейсом.

Спасибо всем, кто дочитал до конца!

Готов отвечать на вопросы и принимать критику в комментариях\личных сообщениях.

Всем добра!