Last updated: 2021-06-09
Version 0.1
Finished
- Basic rat functionality- Load compiled WASM, execute specified functions
- Ability to execute Win32 API functions
 
- Basic server- Accept incoming connections from rats, issue commands to rats- The sqlite database has to be manually edited to do this at the moment
 
 
- Accept incoming connections from rats, issue commands to rats
- Communication- ~A communication protocol
- Communication over HTTP
 
- Secure communications- Key exchange
- Encryption
 
- Communication from rats- Check in
- Retrieving tasks
 
- Basic logging capabilities
- Ability to get output back from rats
- Console UI to issue commands to rats- List of RATS
- Ability to execute WASM blobs and display output
 
Started
- Code to parse loaded PEs, load new PEs- And then making something that can be executed both natively and inside WASM
 
- Functionality to help with FFI calls and error handling from the WebAssembly side- Link FFI calls to WASM runtime directly?
- Make working with pointers prettier
- This could make it easier to allow for 32-bit rats by defining “native” pointer types
 
Further work
- Figure out why the server UI sometimes fails to start
- Moving client .exe and .dll to separate crates
- Allow for cross compilation (compiling rats for Windows on Linux)
- Define traits(?) for servers, allow them to be configured/started/stopped
- Define traits(?) for various functionality in rats, in preparation of allowing functionality to be swapped out at runtime
- Make it possible to collect/display (arbitrary?) metadata about rats
- Add functionality to persist and reuse wasm
- Web UI for the server
- TLS support for listeners
- Make it possible to reconfigure rats at runtime
- Optimize WebAssembly code (for size)
- General optimizations for rat binaries (mainly size)
- GUI for the server side (probably HTTP)
- Communication over DNS / DoH
- Support more operating systems
- Functionality to avoid hooked API functions?
- More capabilities
- More communication possibilities
Other things to consider
- Update wasm3-rs if it stays unmaintained
- sRDI-like shellcode generator
- Encryption of strings and other included resources
- Support for passing Stringbetween wasm and rust