timwhitez starred OdinLdr
2024-5-17 10:53:23 Author: github.com(查看原文) 阅读量:13 收藏

Cobaltstrike UDRL


  • Redirect all WININET calls over callstack crafting
  • Encrypt beacon during sleep
  • Encrypt beacon heap during sleep
  • Self delete of loader

Callstack exemples:


alt text


alt text


alt text

1 - Create heap for beacon usage

2 - Allocation of RWX area with beacon size + UDRL size

3 - Copy the UDRL at the end of beacon in allocated area

| 0x00 | beacon | 0xBEACON_SIZE | UDRL | 0xEND_Alloc

4 - Copy the ODIN structure (heap handle, beacon addr, alloc size) to the start of allocated area (no pe header is present)

5 - Copy beacon section

6 - Resolve beacon import and patch IAT (also set hook)

7 - Patch relocation table

8 - Init the beacon

9 - Create thread on TpReleaseCleanupGroupMembers+0x450 to spoof the thread start addr & beacon run

10 - Self delete the loader

  • All WININET function is hooked and use callstack crafting for all wininet call

  • Sleep is hooked:

    1 - XOR the heap (random key for each sleep)

    2 - Encrypt the beacon + udrl (remember this was copied at the end of beacon) with KrakenMask (ropchain, rwx->rw, encrypt, sleep, rw->rwx)

    3 - XOR the heap

  • ExitThread is hooked:

    1 - Destroy the beacon heap

    2 - Free the memory region with the beacon

    3 - Exit thread

Compile the loader and load the cna script (odin.cna)

About the cna, you need to edit path of variable $loader_path at line 11 & 38

http-beacon {
    set library "wininet";

stage {
	set smartinject "false";
	set sleep_mask "false";

It's a POC, be careful when using this UDRL

If you happen to have a crash, you can dm on twitter or open github issues, please send:

- Cobaltstrike profil

- Debugger screen with callstack

You need to have python on your windows machine, you have post-ex build to run python script.

Python script uses two libraries: sys and pefile


alt text


alt text


alt text

For code:

For idea:

Thanks to:

  • chatGPT, Bakki, Caracal & CobaltAD : For debug and somes help

文章来源: https://github.com/RtlDallas/OdinLdr