239 Commits

Author SHA1 Message Date
Jakob Friedl
0ccafaccdd Cleaned up utils.nim by removing unnecessary functions. 2025-08-21 17:08:46 +02:00
Jakob Friedl
fbb08afe31 Implemented wrapper functions for logging and console output (info, error, success, ...) 2025-08-21 17:02:50 +02:00
Jakob Friedl
c9df7aba64 Improved logging format. 2025-08-21 15:08:52 +02:00
Jakob Friedl
f69adc53a2 Implemented initial version of logging system. Log formatting and content needs to be reworked. 2025-08-20 12:55:09 +02:00
Jakob Friedl
24208f3b4b Increased delay between listener restarts to deal with segvaults. Still no 100% fix 2025-08-19 21:37:29 +02:00
Jakob Friedl
4a38f76331 Moved some compiler flags to nim.cfg 2025-08-19 21:00:52 +02:00
Jakob Friedl
8fcb60f57c Implemented replacing agent configuration instead of overwriting the full file. 2025-08-19 20:58:47 +02:00
Jakob Friedl
b023fca124 Implemented encryption for embedded profile. 2025-08-19 20:03:34 +02:00
Jakob Friedl
72fcb0d610 Refactor profile de/serialization, removing unnecessary overhead caused by TLV format. 2025-08-19 14:34:58 +02:00
Jakob Friedl
00a2eb40bf Added data/[logs/loot] directories to GitHub 2025-08-18 22:09:43 +02:00
Jakob Friedl
84e8730b1e Implemented profile embedding via patching a placeholder in the agent executable. Agent correctly deserializes and parses the profile and listener configuration. 2025-08-18 22:05:23 +02:00
Jakob Friedl
023a562be5 Implemented server output encoding for task retrieval. 2025-08-17 17:01:50 +02:00
Jakob Friedl
739faf781e Added more randomization. The profile now supports setting keys to an array of strings, from which a random one is chosen each time (useful for e.g. Host header, etc.) 2025-08-17 16:27:48 +02:00
Jakob Friedl
22c15dd82c Added randomization to profile strings by replacing '#' with random alphanumerical chars. 2025-08-15 16:18:15 +02:00
Jakob Friedl
c7980d219d Added profile system to agent communication. Randomized URL endpoints/request methods and dynamic data transformation based on C2 profile. Profile is defined as compile-time string for now. 2025-08-15 15:42:57 +02:00
Jakob Friedl
5a73c0f2f4 Improved working with profiles by adding helper retrieval functions. 2025-08-14 19:33:32 +02:00
Jakob Friedl
714360ef24 Updated profile system, including dynamic parsing of hidden heartbeats and setting of response headers. 2025-08-14 15:53:58 +02:00
Jakob Friedl
e403ac1c07 Refactored utility functions to make them more readable and removed separate register endpoint. 2025-08-14 12:25:06 +02:00
Jakob Friedl
ee93445739 Refine profile structure. 2025-08-13 21:42:58 +02:00
Jakob Friedl
415cd7ebf8 Started implementing profile system. 2025-08-13 19:32:51 +02:00
Jakob Friedl
b7622dd72f Updated C2 communication to hide heartbeat data in JWT token. 2025-08-13 13:38:39 +02:00
Jakob Friedl
0e205d34d3 Updated sequence number to uint32 2025-08-06 14:28:54 +02:00
Jakob Friedl
ea00e67e80 Updated ps command output. 2025-08-06 12:46:53 +02:00
Jakob Friedl
dfcafa9c24 Implemented basic "ps" and "env" commands. 2025-08-01 13:16:12 +02:00
Jakob Friedl
0d54b3e64b Cleaned up parts of the serialization by removing redundant code. 2025-07-28 21:29:47 +02:00
Jakob Friedl
882579b3cb Implemented sequence tracking. 2025-07-26 18:20:54 +02:00
Jakob Friedl
a6039172b2 Updated README.md 2025-07-25 16:51:18 +02:00
Jakob Friedl
6979c3aa8b Removed utility function. 2025-07-25 16:47:45 +02:00
Jakob Friedl
7bf135750c Rework module system. Now modules/commands are defined in a single file each, with both the function executed by teh agent and the definition for server-side argument parsing. 2025-07-25 16:41:29 +02:00
Jakob Friedl
ad31b90687 Added .gitkeep to data/keys directory. 2025-07-24 22:37:30 +02:00
Jakob Friedl
dcf6285a2a Updated key management to create a new private key file if no existing one is found. 2025-07-24 22:34:12 +02:00
Jakob Friedl
3e9178ec34 Reworked key exchange, now using direct C imports from monocypher instead of nimble modules/libraries. 2025-07-24 17:26:48 +02:00
Jakob Friedl
b6c720ccca Implemented ECDH key exchange using ed25519 to share a symmetric AES key without transmitting it over the network. 2025-07-24 15:31:46 +02:00
Jakob Friedl
cf4e4a7017 Updated database to store session key (still unencrypted) 2025-07-23 15:25:19 +02:00
Jakob Friedl
cb16a9c571 Updated message flags. 2025-07-23 13:56:43 +02:00
Jakob Friedl
0f065f41a2 Implemented AES256-GCM encryption of all network packets. Requires some more refactoring to remove redundant code and make it cleaner. 2025-07-23 13:47:37 +02:00
Jakob Friedl
36719dd7f0 Changed variable names for clearer structure. 2025-07-22 21:31:18 +02:00
Jakob Friedl
725696ffa5 Implemented Heartbeat/Checkin request with agentId/listenerId in request body to simplify listener URLs 2025-07-22 21:00:39 +02:00
Jakob Friedl
1a3724a2fd Updated .gitignore with .gitkeep files to keep directory structure 2025-07-21 22:16:09 +02:00
Jakob Friedl
581af47395 Merge commit '9f15026fd1f35346300f65bb6ef04ca023b62ee2' 2025-07-21 22:13:37 +02:00
Jakob Friedl
9f15026fd1 Implemented agent registration to match new binary structure instead of json. 2025-07-21 22:07:25 +02:00
Jakob Friedl
99f55cc04f Implemented communication with custom binary structure instead of JSON requests 2025-07-19 16:49:27 +02:00
Jakob Friedl
d22ad0bd0c Agent fetches serialized task data from prologue web server and successfully parses it. 2025-07-18 18:47:57 +02:00
Jakob Friedl
5825ec91a1 Started rewriting JSON task to custom binary structure. Parsed and serialized task object into seq[byte] 2025-07-18 14:24:07 +02:00
Jakob Friedl
310ad82cc5 Updated README 2025-07-16 14:48:21 +02:00
Jakob Friedl
99b017f57f Cleanup types.nim to only contain type definitions. 2025-07-16 14:45:45 +02:00
Jakob Friedl
292b947a4e Split task functionality into multiple files. 2025-07-16 12:32:01 +02:00
Jakob Friedl
aae35ef59d Updated directory structure 2025-07-16 10:33:13 +02:00
Jakob Friedl
668a4984d1 Updated directory structure. 2025-07-15 23:26:54 +02:00
Jakob Friedl
453971c0db Cleaned up agent command parsing 2025-07-15 22:38:01 +02:00