Вступление

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

Ты думал, что устроившись работать в 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 при анализе инцидента.

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

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

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

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

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

Всем добра!