Following up on my earlier tweet () regarding Kerberos relay with SMB server, I've uploaded my quick & dirty version. It's far from perfect, so feel free to improve it!
You dumped TGTs on a Windows 11 laptop and are wondering why PTT is breaks in strange ways? Check if Credential Guard is enabled. If so, dump STs instead, as they are not protected by CG.
After reading
@C5pider
's blog I got an idea how to implement global shellcode context without NtProtectVirtualMemory: Add magic header to context struct, place context on stack, append its address to peb.ProcessHeaps and retrieve it from there when needed. No syscalls required.
Modern implant design: position independent malware development.
A small blog post on how to design "modern" malware with features like global variables, raw strings, and compile-time hashing.
Repo:
This weeks path to domain admin was quite a ride. Starting from credentials in SCCM task sequences and ending in a golden certificate. BloodHound is such an invaluable tool.
Can anyone explain what the hell is going on with Protected Users here? Why is the user allowed to do NTLM? And how does it even work when the NT hash isn't cached in LSASS? I'm so confused.
How to WebDAV Relay LPE on Windows 11:
1-3. Trigger start of EFS service trough Explorer
4-11. Continue like on Windows 10
Thanks again
@ret2src
for the idea.
Any tip for triggering EFS remotely on Windows 11 would be greatly appreciated by the way :D
Virtualization is the future for AV/EDR evasion. Minimal RX memory, no crappy sleep masking and many new possibilities.
@C5pider
if you haven't already, you'll want to read that.
Weighted graphs seem to be the logical next step for BloodHound. The shortest path to Domain Admin isn't necessarily the easiest to exploit. Will definitely use this in my upcoming Active Directory Pentests.
New release of AD Miner () introducing better path calculation with
#Bloodhound
(Smartest vs. Shortest Paths). Also published an article to explain this feature :
Had a shower thought: Instead of searching for RWX sections in other DLLs (Mockingjay) just bring your own RWX section. Not sure if this is actually useful, but it enables syscall-less shellcode loaders.
*Reminder*
MagicDot is now live on GitHub -
If you want to manipulate the DOS-to-NT path conversion process in Windows and leverage that for rootkit capabilities, Remote Code Execution, and Elevation of Privilege then check it out!
I did some more testing and must add two constraints:
1. Doesn't work if RemoteRegistry service is explicitly disabled, which seems to be default on desktops since Win 10.
2. Target user must be currently logged in on target computer. Otherwise you get ERROR_FILE_NOT_FOUND.
@N805DN
@EricaZelic
So in the MSP space theres a tool that uses the Entra branding custom CSS to dynamically eval the request header referer and if it’s not login.microsoftonline change the backround image to warnings.
Interesting detail: "Using direct syscalls is not always malicious. This action can be performed frequently by legitimate software, such as security products, gaming anti-cheat modules, Chromium-based applications and more."
@ShitSecure
@m3g9tr0n
Lateral movement in certain edge cases. For example if you found credentials of a regular domain user on a SMB share you can create a malicious Run key on his/her workstation.
New blog post 📢
𝗧𝗶𝗲𝗿𝗶𝗻𝗴 Entra roles and application permissions based on 𝗸𝗻𝗼𝘄𝗻 𝗮𝘁𝘁𝗮𝗰𝗸 𝗽𝗮𝘁𝗵𝘀 🌩
This is a humble approach to understand the security implications of administrative cloud assets in terms of privilege escalation🪜
Thank you very much for joining my session at
#BHASIA
! I think the slide will be published tomorrow. So, in the meantime, I'm releasing the PoC tool, BAADTokenBroker. You can pivot to the cloud, interacting with the secret keys in TPM. Enjoy!
As ntlm leaking is still a thing, made a showcase for elevating via ldap relaying with some little tricks.
Relaying is done with a Win Client without admin privs and an active Windows firewall (default config), by using HTTP.SYS and SSH.
Details here:
I noticed at the beginning of this year that "certipy find" as regular domain user doesn't always identify ESC11. Since then I'm rerunning certipy after I got Domain Admin another way and found two additional cases of ESC11 this way.
I don't think orgs realize how lucky they are that ransomware groups didn't automate ADCS vulns into their malware. These vulnerabilities were everywhere last year. EVERYWHERE
@EricaZelic
@NathanMcNulty
Read a comment recently that was basically: If your IT isn't doing SSO your users are (by reusing passwords).
Pretty on point I think :D
Third video of "Understanding a Payload's Life" is now available
This one focuses on how MSF and other frameworks generate payload executables (EXEs, DLLs...). We will see their different approaches, and how to create custom templates for Metasploit!
Links in my site🙏
We can relay back to the same machine using Kerberos relay instead of NTLM relay. I discovered this attack vector more than a year ago. I will describe it in detail in upcoming Black Hat Asia 2024 and introduce more interesting attacks.
The most fun part of Manager from
@hackthebox_eu
is exploiting the ESC7 vulnerability in the ADCS. To get there, I'll do a password spray, get access to MSSQL, and use xp_dirtree access to find creds.
After seeing a YouTube video where a malware analyst used a sandbox to triage samples, I got interested in stealthy sandbox evasion. This is the result:
With
@buck_steffen
we found the solution: All this is a narrow edge case:
1. Logon local interactive
2. Logon remote interactive via RDP, prev session is taken over
-> NT hash is cached, NTLM auth works
Without step 1 hash is not cached and uncrackable NTLM response is produced.
In this week's blog post, we discuss a technique often employed by red teamers and threat actors during the lateral movement stage of the cyber kill chain, known as RID hijacking.
#RedTeam
#RIDHijacking
#Cybersecurity
@C5pider
In my head the smallest possible agent downloads raw shellcode instead of an object file and calls it with the context struct as first parameter. Everything else could then be built on that primitive.
"Jumpboxes/bastion hosts are a relic from the network segmentation days and are an inadequate solution for mitigating identity-driven offensive tradecraft."
Check out my latest blog post, "The Security Principle Every Attacker Needs to Follow", in which I lay the foundation for a framework for discovering attack paths, including those that BloodHound can't find yet.
@jmpsecurity
@n00py1
I dumped and decrypted the NAA, task sequences and collection variables as local admin on a SCCM-managed notebook with PowerShell.
I have a hard time understanding the difference between "User consent to apps" in and "User consent for applications" in
Does somebody know more? Maybe
@EricaZelic
or
@NathanMcNulty
?
According to this Microsoft presentation the Active Directory functional level 2025 will enforce LDAP Signing, but not LDAPS Channel Binding. The docs at mention neither.
@EricaZelic
Like SSLv3 and most other findings related to outdated crypto it's medium at best, because in the real world it'll never get exploited. NTLMv1 and SMB Signing are much more important.
Team work makes dream work! In our new
#blog
, Security Consultant
@ZBStrike
provides guidance for
#SOC
teams to navigate hurdles that might be slowing growth for the team or even their organization. Read it now!
How to combine Responder w/ Evilgnx2 for privilege escalation and lateral movement in Passwordless, MFA and/or Zero Trust Environments:
(Technique discovered by
@nevadaromsdahl
in 2023))
@shubakki
@C5pider
What has sleep masking to do with unbacked memory?
DLL sideloading or module stomping are the answer anyway.
And another big advantage for virtualization. If the interpreter runs on backed memory all payloads do too.
@mpgn_x64
Nope. That's why it's so strange. I initially noticed the same behavior during an engagement in a customer environment. It doesn't seem to be weird misconfiguration either.
@ewbysec
@Cyb3rC3lt
As stated in the original tweet, I'm not sure if this has any real world use case. It's definitely useless for remote process injection. The only interesting aspect is probably that you can load code at runtime and execute it from backed memory without invoking any syscall.
@pfiatde
I should've taken another look at your post. I'm so used to coercing the computer account via RPC that I overlooked that you were coercing the user with an LNK. The former works fine on Win10, but doesn't seem to work on Win11, while the latter works exactly as you described.
@sapientflow
@C5pider
Yes, that's a weak point. But it could be addressed with virtualization. For example a RISC-V VM without address translation like
The only disadvantage of the railgun idea is the open connection to the C2 for the runtime of the payload.
With
@buck_steffen
we found the solution: All this is a narrow edge case:
1. Logon local interactive
2. Logon remote interactive via RDP, prev session is taken over
-> NT hash is cached, NTLM auth works
Without step 1 hash is not cached and uncrackable NTLM response is produced.
@bugch3ck
@buck_steffen
No, at least not in the general case. Only if you login locally, don't close the session and then login remotely, then suddenly NTLM auth is allowed.
@Gridironsec
@EricaZelic
@NathanMcNulty
If you're thinking dev vs prod, then I probably agree, but otherwise I don't see what network separation has to do with SSO.
And you can't really prevent password reuse. PasswordDev2024! vs. PasswordProd2024!
@_RastaMouse
I assume most (all?) of it can be implemented in a library and doesn't require direct compiler support. Features that do should be solvable with a LLVM plugin. But that's all theoretical I've no practical experience with LLVM :D
I did some more testing and must add two constraints:
1. Doesn't work if RemoteRegistry service is explicitly disabled, which seems to be default on desktops since Win 10.
2. Target user must be currently logged in on target computer. Otherwise you get ERROR_FILE_NOT_FOUND.
@shubakki
@C5pider
a) Yes, of course the interpreter is plain. That's why the blog mentions polymorphism and recommends to keep the interpreter small.
b) There's no need for sleep masking in a VM. The payload is never decrypted in the first place. Except the instruction that is currently executed.
To exploit Zipping from
@hackthebox_eu
, I'll use symlinks in Zips to read files, bypass a gnarly regex filter with newline injection to get SQL injection and write a webshell. I'll make a malicious shared object. In Beyond Root, two unintended footholds.