Skip to main content

Fast Emulator For Shellcodes In Rust

I have developed a fast emulator for modern shellcodes, that perform huge loops of millions of instructions emulated for resolving API or for other stuff.

The emulator is in Rust and all the few dependencies as well, so the rust safety is good for emulating malware.  

There are shellcodes that can be emulated from the beginning to the end, but when this is not possible the tool has many features that can be used like a console, a memory tracing, register tracing, and so on.

https://github.com/sha0coder/scemu



In less than two seconds we have emulated 7 millions of instructions arriving to the recv. 

At this point we have some  IOC like  the ip:port where it's connecting and other details.

Lets see what happens after the recv() spawning a console at position: 7,012,204


target/release/scemu -f shellcodes/shikata.bin -vv -c 7012204



In the console, pressing "enter" several times to emulate  step into several steps and we arrive to a return instruction.


Let's see the stack in this moment:


The "ret" instruction is going to jump to the buffer read with recv() so is a kind of stager.

The option "-e" or "--endpoint" is not ready for now, but it will allow to proxy the calls to get the next  stage automatically, but for now we have the details to get the stage.


SCEMU also identify all the Linux  syscalls for 32bits shellcodes:



The encoder used in shellgen is also supported https://github.com/MarioVilas/shellgen

Let's check with cobalt-strike:


We can see where is connecting and which headers is using, so right now we can replicate the communications.



In verbose mode we could do several greps to see the calls and correlate with ghidra/ida/radare or  for example grep the branches to study the emulation flow.


target/release/scemu -f shellcodes/rshell_sgn.bin -vv | grep j


target/release/scemu -f shellcodes/rshell_sgn.bin -vv -c 44000 -l


The -l --loops options makes the emulation a bit slower but track the number of iterations.

Is possible to print all the registers in every step with  -r or --registers  but also is possible to track  specific register for example with --reg esi


target/release/scemu -f shellcodes/shikata.bin --reg esi 


In this case ESI register points to the API name, if we track EAX or ECX will see that are the counters of the loop. These shellcodes  contains a hard loop to locate the API names.

The flag -i or --inspect allow to monitor memory using expressions like "dword ptr [eax + 0xa]"

target/release/scemu -f shellcodes/shikata.bin -i 'dword ptr [esi]'

And more things to come...  find a demo below:

https://www.youtube.com/watch?v=qTYmMjW3DFs





Related articles


Comments

Popular posts from this blog

The Dawn of a Global Bitcoin Gold Rush: Why Governments May Soon Join the Race

Picture a world where governments, not just early adopters and tech enthusiasts, scramble to hold Bitcoin before their geopolitical rivals do. This scenario, once considered science fiction, is becoming increasingly plausible. As major asset managers hint at portfolio exposure, U.S. political leaders signal a shift toward pro-crypto regulation, and states within the U.S. prepare strategic Bitcoin reserves, the stage is set for a massive influx of institutional and governmental participation. Far from the fleeting hype cycles of the past, this is a moment backed by data, historical patterns, and powerful players with trillions of dollars at their disposal. In 2020, Bitcoin's meteoric rise coincided with a similar point in its four-year halving cycle. Fast forward to 2024: conditions now are even more favorable, with unprecedented scarcity in the market and global interests aligning to accelerate adoption. The impatience seen in some corners of the crypto community, worried that Bitc...

When Berachain Meets AI: 9 Projects Riding the Next Big Wave

Artificial Intelligence (AI) and blockchain are arguably two of the hottest narratives in tech today. With Berachain's mainnet launch just around the corner, combining AI with this innovative blockchain opens up exciting possibilities. In this article, we'll dive into nine AI-driven projects on Berachain, each offering unique use cases and solutions. Baosdotfun 1. Baosdotfun: The Launchpad for AI DAOs Baosdotfun acts as an incubator for AI-driven DAOs, focusing on areas like yield farming and trading strategies. Their "DAO seasons" introduce new AI agents every few months, providing fresh opportunities for users. Key features: Supports multiple AI agents. Focus on decentralized autonomous organizations (DAOs). Official Links: Baosdotfun Website Baosdotfun on Twitter Beradigm 2. Beradigm: Maximizing BGT Farming Beradigm specializes in yield farming to accumulate BGT, a governance token central to Berachain's ecosystem. Using AI, Beradigm optimizes farming strategie...

New Movies & Latest Showtimes | ShowBiz Cinemas

https://www.showbizcinemas.com/promotions#DiscountTuesdays https://www.showbizcinemas.com/promotions#BowlingWednesdays http://recruiting.talentreef.com/showbiz-cinemas https://www.showbizcinemas.com/newsletter https://www.mpaa.org/film-ratings/ https://www.youtube.com https://www.facebook.com/showbizcinemas https://twitter.com/showbizcinemas