Cross-platform RAT, written in Modern C
Go to file
CPunch cf01657cc2 fixes for winblows 2022-09-01 20:07:29 -05:00
.github/workflows CI: Make windows build less fat 2022-05-19 12:33:47 -05:00
bot Refactoring: reorganized files 2022-09-01 20:00:37 -05:00
cnc Refactoring: reorganized files 2022-09-01 20:00:37 -05:00
lib fixes for winblows 2022-09-01 20:07:29 -05:00
libsodium@a606dc79ed VMBoxGen refactor, obfuscate static CNC ip & port strings 2022-05-19 01:42:40 -05:00
shell Refactoring: reorganized files 2022-09-01 20:00:37 -05:00
tools Refactoring: reorganized files 2022-09-01 20:00:37 -05:00
.clang-format Added .clang-format, formatted codebase 2022-06-27 18:57:00 -05:00
.gitignore Lib: Added content stream boilerplate 2022-05-16 18:48:32 -05:00
.gitmodules VMBoxGen refactor, obfuscate static CNC ip & port strings 2022-05-19 01:42:40 -05:00
CMakeLists.txt Moved API obfuscation to LaikaLib target 2022-07-16 16:09:33 -05:00
CONTRIBUTING.md Refactoring: reorganized files 2022-09-01 20:00:37 -05:00
LICENSE.md Switched licenses (GPL -> MIT) 2022-06-30 20:19:35 -05:00
README.md typos 2022-07-30 23:16:00 -05:00
server.ini Added config inis, key refactoring 2022-04-05 23:57:37 -05:00
shell.ini Added config inis, key refactoring 2022-04-05 23:57:37 -05:00

README.md

Laika

Workflow License

Laika is a simple cross-platform Remote Access Toolkit stack for educational purposes. It allows encrypted communication across a custom binary protocol. The bot client supports both Windows & Linux environments, while the shell & CNC server specifically target Linux environments. Laika is meant to be small and discreet, Laika believes in hiding in plain sight.

Some notable features thus far:

  • Lightweight, the bot alone is 183kb (MinSizeRel) and uses very little resources minimizing Laika's footprint.
  • Authentication & packet encryption using LibSodium and a predetermined public CNC key. (generated with bin/genKey)
  • Server and Shell configuration through .ini files.
  • Ability to open shells remotely on the victim's machine.
  • Persistence across reboot: (toggled with -DLAIKA_PERSISTENCE=On)
    • Persistence via Cron on Linux-based systems.
    • Persistence via Windows Registry.
  • Uses obfuscation techniques also seen in the wild (string obfuscation, tiny VMs executing sensitive operations, etc.)
  • Simple configuration using CMake:
    • Setting keypairs (-DLAIKA_PUBKEY=? -DLAIKA_PRIVKEY=?, etc.)
    • Obfuscation modes

Why?

I started this project to practice my systems programming skills, specifically networking related things. The networking code in this project (under /lib) is probably what I'm most proud of in this project. After that I started trying to learn some common obfuscation methods I've seen used in the wild. I've used this project mostly to improve my skills of managing a 'larger' project. Things relating to having a consistent code style, documenting features and development tasks are really important skills to have when managing a codebase like this.

How do I use this?

Please refer to the Wiki for any questions relating to deployment, compilation & setup.

Looking to contribute?

Read CONTRIBUTING.md