Вступление
Фолза, фолза, фолза...... как же все устали от фолзы... вот и я устал...
Ты думал, что устроившись работать в 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\RunHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnceHKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunHKEY_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 FoldersHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell FoldersHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell FoldersHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
С помощью следующих ключей реестра можно управлять автоматическим запуском служб во время загрузки:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnceHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnceHKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices
При использовании параметров политики для указания автоматически запускаемых программ создаются соответствующие значения в одном из двух указанных ниже ключей реестра:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\RunHKEY_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 (чтобы было меньше подозрений для... меня хи-хи)

Логика данного скрипта следующая:
Запуск cmd.exe с командой на скрине выше
Запуск powershell со скрытием самого окна powershell (параметры -WindowStyle Hidden)
Выполнение обфусцированной команды (параметр -e (encode) выполняет декодирование из Base64)
Обфусцированная команда устанавливает соединение 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)))Работа powershell и тут тоже есть тревожные события!




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

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

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




На этом Оладушек остановился и дал рекомендации Бедолаге как жить в мире интернета с безопасностью.
Что мы увидели? Куда мы смотрели чтобы увидеть?
Увидели мы полную цепочку событий выполнения скрипта UserConfig.bat из папки автозагрузки.
Куда смотреть:
События создания процессов из папки автозагрузки
CommandLine событий создания процессов Powershell
HostApplication в событиях 600 (полностью виден скрипт)
Сетевые соединения от процесса Powershell
Создание дочерних процессов Powershell со странным ParentCommandLine
Такие ключи при запуске powershell
-WindowStyle Hidden -eЗакодированный текст скрипта в CommandLine
Что делать?
Изолировать ПК, для анализа. Можно привлечь форензику.
Изучить скрипты в песочнице (в нашем случае
payload.ps1 и UserConfig.bat)В зависимости от логики скриптов и успешных действий злоумышленника после их исполнения принимать дополнительные меры по нейтрализации последствий (удаление файлов из папки автозагрузки, проверка новых служб, УЗ, запланированных задач и многое другое...)
Выводы
Итак, мы разобрали одну из техник MITRE ATT&CK закрепления\повышения привилегий.
Мы увидели как думает злоумышленник (упрощенно) и что видит аналитик SOC при анализе инцидента.
Исходя из этих данных можно добавить пару годных правил корреляций и потренировать свой глаз на тревожные события (что немаловажно) .
Вот так выглядит не фолза)
Для меня это был интересный опыт, я не сталкивался в своей работе с таким кейсом.
Спасибо всем, кто дочитал до конца!
Готов отвечать на вопросы и принимать критику в комментариях\личных сообщениях.
Всем добра!
