From 6e82a8253cf915a70d2513fc451667a5eec7fd7a Mon Sep 17 00:00:00 2001 From: Kitos Date: Wed, 25 Mar 2026 15:32:50 +0100 Subject: [PATCH] Rename project from Cazalla to Angerona Complete rebrand: renamed all files, folders, code references, documentation, Docker paths, env vars, Makefile targets, Python classes, C structs/functions, and git remote URL. Replaced agent icons with new Angerona branding (light + dark mode SVGs). Fixed builder.py to reference SVG instead of PNG for Mythic icon path. --- .../{cazalla => angerona}/.docker/Dockerfile | 4 +- .../{cazalla => angerona}/.dockerignore | 2 +- Payload_Type/{cazalla => angerona}/.keep | 0 Payload_Type/{cazalla => angerona}/Dockerfile | 2 +- .../{cazalla => angerona}/__init__.py | 0 .../agent_capabilities.json | 0 .../cazalla => angerona/angerona}/__init__.py | 0 .../__pycache__/__init__.cpython-311.pyc | Bin .../angerona/agent_code/angerona}/Aes.c | 0 .../angerona/agent_code/angerona}/Aes.h | 0 .../agent_code/angerona}/Analizador.c | 0 .../angerona/agent_code/angerona}/Config.h | 0 .../angerona/agent_code/angerona}/Makefile | 16 +- .../agent_code/angerona}/SistemadeFicheros.c | 2 +- .../agent_code/angerona}/SistemadeFicheros.h | 0 .../agent_code/angerona}/analizador.h | 0 .../angerona/agent_code/angerona/angerona.c} | 66 ++--- .../angerona/agent_code/angerona/angerona.h} | 10 +- .../agent_code/angerona}/browser_dump.c | 0 .../agent_code/angerona}/browser_dump.h | 0 .../agent_code/angerona}/browser_info.c | 0 .../agent_code/angerona}/browser_info.h | 0 .../agent_code/angerona}/cerrarCallback.c | 0 .../agent_code/angerona}/cerrarCallback.h | 0 .../angerona/agent_code/angerona}/checkin.c | 4 +- .../angerona/agent_code/angerona}/checkin.h | 0 .../angerona/agent_code/angerona}/comandos.c | 4 +- .../angerona/agent_code/angerona}/comandos.h | 0 .../angerona/agent_code/angerona}/consola.c | 0 .../angerona/agent_code/angerona}/consola.h | 0 .../angerona/agent_code/angerona}/crypto.c | 0 .../angerona/agent_code/angerona}/crypto.h | 0 .../angerona/agent_code/angerona}/debug.h | 0 .../agent_code/angerona}/hmac_sha256.c | 0 .../agent_code/angerona}/hmac_sha256.h | 0 .../angerona/agent_code/angerona}/identity.c | 0 .../angerona/agent_code/angerona}/identity.h | 0 .../agent_code/angerona}/inline_execute.c | 4 +- .../agent_code/angerona}/inline_execute.h | 0 .../angerona/agent_code/angerona}/keylog.c | 2 +- .../angerona/agent_code/angerona}/keylog.h | 0 .../angerona/agent_code/angerona}/main.c | 8 +- .../angerona/agent_code/angerona}/paquete.c | 10 +- .../angerona/agent_code/angerona}/paquete.h | 0 .../angerona/agent_code/angerona}/procesos.c | 0 .../angerona/agent_code/angerona}/procesos.h | 0 .../agent_code/angerona}/rpfwd_manager.c | 0 .../agent_code/angerona}/rpfwd_manager.h | 0 .../angerona/agent_code/angerona}/samdump.c | 0 .../angerona/agent_code/angerona}/samdump.h | 0 .../agent_code/angerona}/screenshot.c | 2 +- .../agent_code/angerona}/screenshot.h | 0 .../angerona/agent_code/angerona}/sha256.c | 0 .../angerona/agent_code/angerona}/sha256.h | 0 .../angerona/agent_code/angerona}/sleep.c | 10 +- .../angerona/agent_code/angerona}/sleep.h | 0 .../agent_code/angerona}/socks_manager.c | 0 .../agent_code/angerona}/socks_manager.h | 0 .../angerona/agent_code/angerona}/spawn.c | 0 .../angerona/agent_code/angerona}/spawn.h | 0 .../angerona/agent_code/angerona}/sqlite3.c | 0 .../angerona/agent_code/angerona}/sqlite3.h | 0 .../angerona/agent_code/angerona}/tokens.c | 2 +- .../angerona/agent_code/angerona}/tokens.h | 0 .../agent_code/angerona}/transporte.c | 30 +- .../agent_code/angerona}/transporte.h | 2 +- .../angerona/agent_code/angerona}/utils.c | 0 .../angerona/agent_code/angerona}/utils.h | 0 .../angerona}/agent_code/bofs/inline-ea.x64.o | Bin .../angerona}/agent_functions/__init__.py | 0 .../__pycache__/__init__.cpython-311.pyc | Bin .../inline_execute.cpython-311.pyc | Bin .../__pycache__/rpfwd.cpython-311.pyc | Bin .../angerona/agent_functions/angerona.svg | 16 ++ .../agent_functions/angerona_dark.svg | 16 ++ .../angerona}/agent_functions/browser_dump.py | 0 .../angerona}/agent_functions/browser_info.py | 0 .../angerona}/agent_functions/builder.py | 34 +-- .../angerona}/agent_functions/cat.py | 0 .../angerona}/agent_functions/cd.py | 0 .../angerona}/agent_functions/cp.py | 0 .../angerona}/agent_functions/download.py | 0 .../angerona}/agent_functions/exit.py | 0 .../agent_functions/inline_execute.py | 2 +- .../inline_execute_assembly.py | 2 +- .../angerona}/agent_functions/keylog_start.py | 0 .../angerona}/agent_functions/keylog_stop.py | 0 .../angerona}/agent_functions/kill.py | 0 .../angerona}/agent_functions/list_tokens.py | 0 .../angerona}/agent_functions/ls.py | 0 .../angerona}/agent_functions/make_token.py | 0 .../angerona}/agent_functions/mkdir.py | 0 .../angerona}/agent_functions/ps.py | 0 .../angerona}/agent_functions/pwd.py | 0 .../angerona}/agent_functions/rev2self.py | 0 .../angerona}/agent_functions/rm.py | 0 .../angerona}/agent_functions/rpfwd.py | 0 .../angerona}/agent_functions/samdump.py | 0 .../angerona}/agent_functions/screenshot.py | 0 .../angerona}/agent_functions/shell.py | 4 +- .../angerona}/agent_functions/sleep.py | 0 .../angerona}/agent_functions/socks.py | 0 .../angerona}/agent_functions/steal_token.py | 0 .../angerona}/agent_functions/upload.py | 0 .../angerona}/agent_functions/whoami.py | 0 .../angerona}/browser_scripts/ls.js | 0 .../angerona}/browser_scripts/ps.js | 0 .../{cazalla => angerona}/logger/README.md | 86 +++--- Payload_Type/angerona/logger/__init__.py | 6 + .../{cazalla => angerona}/logger/logger.py | 20 +- .../{cazalla => angerona}/logger/syslog.conf | 4 +- Payload_Type/{cazalla => angerona}/main.py | 4 +- .../rabbitmq_config.json | 0 .../{cazalla => angerona}/requirements.txt | 0 .../translator/__init__.py | 0 .../translator/commands_from_c2.py | 0 .../translator/commands_from_implant.py | 0 .../translator/translator.py | 6 +- .../{cazalla => angerona}/translator/utils.py | 0 .../cazalla/agent_functions/cazalla.png | Bin 208556 -> 0 bytes .../cazalla/agent_functions/cazalla.svg | 266 ------------------ Payload_Type/cazalla/logger/__init__.py | 6 - README.md | 132 ++++----- agent_icons/angerona.svg | 16 ++ agent_icons/angerona_dark.svg | 16 ++ agent_icons/cazalla.svg | 266 ------------------ .../{Cazalla => Angerona}/README.md | 14 +- .../{Cazalla => Angerona}/_index.md | 8 +- .../{Cazalla => Angerona}/commands.md | 8 +- .../{Cazalla => Angerona}/commands/README.md | 6 +- .../commands/browser_dump.md | 0 .../commands/browser_info.md | 0 .../{Cazalla => Angerona}/commands/cat.md | 0 .../{Cazalla => Angerona}/commands/cd.md | 0 .../{Cazalla => Angerona}/commands/cp.md | 0 .../commands/download.md | 0 .../{Cazalla => Angerona}/commands/exit.md | 0 .../commands/inline_execute.md | 0 .../commands/inline_execute_assembly.md | 0 .../commands/keylog_start.md | 0 .../commands/keylog_stop.md | 0 .../{Cazalla => Angerona}/commands/kill.md | 0 .../commands/list_tokens.md | 0 .../{Cazalla => Angerona}/commands/ls.md | 0 .../commands/make_token.md | 0 .../{Cazalla => Angerona}/commands/mkdir.md | 0 .../{Cazalla => Angerona}/commands/ps.md | 0 .../{Cazalla => Angerona}/commands/pwd.md | 0 .../commands/rev2self.md | 0 .../{Cazalla => Angerona}/commands/rm.md | 0 .../{Cazalla => Angerona}/commands/rpfwd.md | 0 .../{Cazalla => Angerona}/commands/samdump.md | 0 .../commands/screenshot.md | 0 .../{Cazalla => Angerona}/commands/shell.md | 4 +- .../{Cazalla => Angerona}/commands/sleep.md | 0 .../{Cazalla => Angerona}/commands/socks.md | 0 .../commands/steal_token.md | 0 .../{Cazalla => Angerona}/commands/upload.md | 0 .../{Cazalla => Angerona}/commands/whoami.md | 0 .../developing-commands.md | 28 +- .../{Cazalla => Angerona}/examples.md | 4 +- .../{Cazalla => Angerona}/features.md | 30 +- .../{Cazalla => Angerona}/getting-started.md | 36 +-- .../{Cazalla => Angerona}/logging.md | 60 ++-- .../{Cazalla => Angerona}/opsec.md | 22 +- .../{Cazalla => Angerona}/troubleshooting.md | 34 +-- 166 files changed, 434 insertions(+), 902 deletions(-) rename Payload_Type/{cazalla => angerona}/.docker/Dockerfile (96%) rename Payload_Type/{cazalla => angerona}/.dockerignore (95%) rename Payload_Type/{cazalla => angerona}/.keep (100%) rename Payload_Type/{cazalla => angerona}/Dockerfile (95%) rename Payload_Type/{cazalla => angerona}/__init__.py (100%) rename Payload_Type/{cazalla => angerona}/agent_capabilities.json (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/__init__.py (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/__pycache__/__init__.cpython-311.pyc (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/Aes.c (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/Aes.h (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/Analizador.c (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/Config.h (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/Makefile (84%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/SistemadeFicheros.c (99%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/SistemadeFicheros.h (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/analizador.h (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla/cazalla.c => angerona/angerona/agent_code/angerona/angerona.c} (61%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla/cazalla.h => angerona/angerona/agent_code/angerona/angerona.h} (80%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/browser_dump.c (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/browser_dump.h (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/browser_info.c (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/browser_info.h (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/cerrarCallback.c (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/cerrarCallback.h (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/checkin.c (96%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/checkin.h (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/comandos.c (97%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/comandos.h (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/consola.c (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/consola.h (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/crypto.c (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/crypto.h (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/debug.h (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/hmac_sha256.c (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/hmac_sha256.h (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/identity.c (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/identity.h (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/inline_execute.c (99%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/inline_execute.h (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/keylog.c (99%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/keylog.h (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/main.c (56%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/paquete.c (96%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/paquete.h (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/procesos.c (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/procesos.h (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/rpfwd_manager.c (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/rpfwd_manager.h (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/samdump.c (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/samdump.h (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/screenshot.c (99%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/screenshot.h (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/sha256.c (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/sha256.h (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/sleep.c (81%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/sleep.h (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/socks_manager.c (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/socks_manager.h (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/spawn.c (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/spawn.h (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/sqlite3.c (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/sqlite3.h (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/tokens.c (99%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/tokens.h (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/transporte.c (86%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/transporte.h (88%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/utils.c (100%) rename Payload_Type/{cazalla/cazalla/agent_code/cazalla => angerona/angerona/agent_code/angerona}/utils.h (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_code/bofs/inline-ea.x64.o (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/__init__.py (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/__pycache__/__init__.cpython-311.pyc (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/__pycache__/inline_execute.cpython-311.pyc (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/__pycache__/rpfwd.cpython-311.pyc (100%) create mode 100644 Payload_Type/angerona/angerona/agent_functions/angerona.svg create mode 100644 Payload_Type/angerona/angerona/agent_functions/angerona_dark.svg rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/browser_dump.py (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/browser_info.py (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/builder.py (95%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/cat.py (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/cd.py (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/cp.py (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/download.py (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/exit.py (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/inline_execute.py (99%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/inline_execute_assembly.py (99%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/keylog_start.py (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/keylog_stop.py (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/kill.py (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/list_tokens.py (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/ls.py (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/make_token.py (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/mkdir.py (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/ps.py (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/pwd.py (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/rev2self.py (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/rm.py (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/rpfwd.py (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/samdump.py (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/screenshot.py (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/shell.py (93%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/sleep.py (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/socks.py (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/steal_token.py (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/upload.py (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/agent_functions/whoami.py (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/browser_scripts/ls.js (100%) rename Payload_Type/{cazalla/cazalla => angerona/angerona}/browser_scripts/ps.js (100%) rename Payload_Type/{cazalla => angerona}/logger/README.md (76%) create mode 100644 Payload_Type/angerona/logger/__init__.py rename Payload_Type/{cazalla => angerona}/logger/logger.py (96%) rename Payload_Type/{cazalla => angerona}/logger/syslog.conf (86%) rename Payload_Type/{cazalla => angerona}/main.py (89%) rename Payload_Type/{cazalla => angerona}/rabbitmq_config.json (100%) rename Payload_Type/{cazalla => angerona}/requirements.txt (100%) rename Payload_Type/{cazalla => angerona}/translator/__init__.py (100%) rename Payload_Type/{cazalla => angerona}/translator/commands_from_c2.py (100%) rename Payload_Type/{cazalla => angerona}/translator/commands_from_implant.py (100%) rename Payload_Type/{cazalla => angerona}/translator/translator.py (97%) rename Payload_Type/{cazalla => angerona}/translator/utils.py (100%) delete mode 100644 Payload_Type/cazalla/cazalla/agent_functions/cazalla.png delete mode 100644 Payload_Type/cazalla/cazalla/agent_functions/cazalla.svg delete mode 100644 Payload_Type/cazalla/logger/__init__.py create mode 100644 agent_icons/angerona.svg create mode 100644 agent_icons/angerona_dark.svg delete mode 100644 agent_icons/cazalla.svg rename documentation-payload/{Cazalla => Angerona}/README.md (50%) rename documentation-payload/{Cazalla => Angerona}/_index.md (88%) rename documentation-payload/{Cazalla => Angerona}/commands.md (99%) rename documentation-payload/{Cazalla => Angerona}/commands/README.md (91%) rename documentation-payload/{Cazalla => Angerona}/commands/browser_dump.md (100%) rename documentation-payload/{Cazalla => Angerona}/commands/browser_info.md (100%) rename documentation-payload/{Cazalla => Angerona}/commands/cat.md (100%) rename documentation-payload/{Cazalla => Angerona}/commands/cd.md (100%) rename documentation-payload/{Cazalla => Angerona}/commands/cp.md (100%) rename documentation-payload/{Cazalla => Angerona}/commands/download.md (100%) rename documentation-payload/{Cazalla => Angerona}/commands/exit.md (100%) rename documentation-payload/{Cazalla => Angerona}/commands/inline_execute.md (100%) rename documentation-payload/{Cazalla => Angerona}/commands/inline_execute_assembly.md (100%) rename documentation-payload/{Cazalla => Angerona}/commands/keylog_start.md (100%) rename documentation-payload/{Cazalla => Angerona}/commands/keylog_stop.md (100%) rename documentation-payload/{Cazalla => Angerona}/commands/kill.md (100%) rename documentation-payload/{Cazalla => Angerona}/commands/list_tokens.md (100%) rename documentation-payload/{Cazalla => Angerona}/commands/ls.md (100%) rename documentation-payload/{Cazalla => Angerona}/commands/make_token.md (100%) rename documentation-payload/{Cazalla => Angerona}/commands/mkdir.md (100%) rename documentation-payload/{Cazalla => Angerona}/commands/ps.md (100%) rename documentation-payload/{Cazalla => Angerona}/commands/pwd.md (100%) rename documentation-payload/{Cazalla => Angerona}/commands/rev2self.md (100%) rename documentation-payload/{Cazalla => Angerona}/commands/rm.md (100%) rename documentation-payload/{Cazalla => Angerona}/commands/rpfwd.md (100%) rename documentation-payload/{Cazalla => Angerona}/commands/samdump.md (100%) rename documentation-payload/{Cazalla => Angerona}/commands/screenshot.md (100%) rename documentation-payload/{Cazalla => Angerona}/commands/shell.md (89%) rename documentation-payload/{Cazalla => Angerona}/commands/sleep.md (100%) rename documentation-payload/{Cazalla => Angerona}/commands/socks.md (100%) rename documentation-payload/{Cazalla => Angerona}/commands/steal_token.md (100%) rename documentation-payload/{Cazalla => Angerona}/commands/upload.md (100%) rename documentation-payload/{Cazalla => Angerona}/commands/whoami.md (100%) rename documentation-payload/{Cazalla => Angerona}/developing-commands.md (95%) rename documentation-payload/{Cazalla => Angerona}/examples.md (99%) rename documentation-payload/{Cazalla => Angerona}/features.md (92%) rename documentation-payload/{Cazalla => Angerona}/getting-started.md (90%) rename documentation-payload/{Cazalla => Angerona}/logging.md (73%) rename documentation-payload/{Cazalla => Angerona}/opsec.md (95%) rename documentation-payload/{Cazalla => Angerona}/troubleshooting.md (94%) diff --git a/Payload_Type/cazalla/.docker/Dockerfile b/Payload_Type/angerona/.docker/Dockerfile similarity index 96% rename from Payload_Type/cazalla/.docker/Dockerfile rename to Payload_Type/angerona/.docker/Dockerfile index d57c6f5..09e2a90 100644 --- a/Payload_Type/cazalla/.docker/Dockerfile +++ b/Payload_Type/angerona/.docker/Dockerfile @@ -43,10 +43,10 @@ ENV MYTHIC_SERVER_PASSWORD="mythic_password" WORKDIR /Mythic/ # Copiar estructura completa del proyecto -COPY ./ /Mythic/cazalla/ +COPY ./ /Mythic/angerona/ # Asegurar que los permisos sean correctos para Python -RUN chmod -R a+rX /Mythic/cazalla/ +RUN chmod -R a+rX /Mythic/angerona/ # --- Comando por defecto --- CMD ["python3", "main.py"] diff --git a/Payload_Type/cazalla/.dockerignore b/Payload_Type/angerona/.dockerignore similarity index 95% rename from Payload_Type/cazalla/.dockerignore rename to Payload_Type/angerona/.dockerignore index d6a077d..dccbbaf 100644 --- a/Payload_Type/cazalla/.dockerignore +++ b/Payload_Type/angerona/.dockerignore @@ -65,5 +65,5 @@ docker-compose.yml mythic-cli # Agent code build directories (will be built inside container) -cazalla/agent_code/cazalla/build/ +angerona/agent_code/angerona/build/ diff --git a/Payload_Type/cazalla/.keep b/Payload_Type/angerona/.keep similarity index 100% rename from Payload_Type/cazalla/.keep rename to Payload_Type/angerona/.keep diff --git a/Payload_Type/cazalla/Dockerfile b/Payload_Type/angerona/Dockerfile similarity index 95% rename from Payload_Type/cazalla/Dockerfile rename to Payload_Type/angerona/Dockerfile index 9713d69..941b50e 100644 --- a/Payload_Type/cazalla/Dockerfile +++ b/Payload_Type/angerona/Dockerfile @@ -47,7 +47,7 @@ ENV SYSLOG_FACILITY="16" # --- Copia tu código de translator --- # This COPY ensures local changes are included when USE_BUILD_CONTEXT=true WORKDIR /Mythic/ -COPY ./ /Mythic/cazalla/ +COPY ./ /Mythic/angerona/ # --- Comando por defecto --- CMD ["python3", "main.py"] diff --git a/Payload_Type/cazalla/__init__.py b/Payload_Type/angerona/__init__.py similarity index 100% rename from Payload_Type/cazalla/__init__.py rename to Payload_Type/angerona/__init__.py diff --git a/Payload_Type/cazalla/agent_capabilities.json b/Payload_Type/angerona/agent_capabilities.json similarity index 100% rename from Payload_Type/cazalla/agent_capabilities.json rename to Payload_Type/angerona/agent_capabilities.json diff --git a/Payload_Type/cazalla/cazalla/__init__.py b/Payload_Type/angerona/angerona/__init__.py similarity index 100% rename from Payload_Type/cazalla/cazalla/__init__.py rename to Payload_Type/angerona/angerona/__init__.py diff --git a/Payload_Type/cazalla/cazalla/__pycache__/__init__.cpython-311.pyc b/Payload_Type/angerona/angerona/__pycache__/__init__.cpython-311.pyc similarity index 100% rename from Payload_Type/cazalla/cazalla/__pycache__/__init__.cpython-311.pyc rename to Payload_Type/angerona/angerona/__pycache__/__init__.cpython-311.pyc diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/Aes.c b/Payload_Type/angerona/angerona/agent_code/angerona/Aes.c similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/Aes.c rename to Payload_Type/angerona/angerona/agent_code/angerona/Aes.c diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/Aes.h b/Payload_Type/angerona/angerona/agent_code/angerona/Aes.h similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/Aes.h rename to Payload_Type/angerona/angerona/agent_code/angerona/Aes.h diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/Analizador.c b/Payload_Type/angerona/angerona/agent_code/angerona/Analizador.c similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/Analizador.c rename to Payload_Type/angerona/angerona/agent_code/angerona/Analizador.c diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/Config.h b/Payload_Type/angerona/angerona/agent_code/angerona/Config.h similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/Config.h rename to Payload_Type/angerona/angerona/agent_code/angerona/Config.h diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/Makefile b/Payload_Type/angerona/angerona/agent_code/angerona/Makefile similarity index 84% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/Makefile rename to Payload_Type/angerona/angerona/agent_code/angerona/Makefile index 3f95d3a..2372525 100644 --- a/Payload_Type/cazalla/cazalla/agent_code/cazalla/Makefile +++ b/Payload_Type/angerona/angerona/agent_code/angerona/Makefile @@ -65,23 +65,23 @@ $(shell mkdir -p $(BUILD_DIR)) all: exe dll debug: debug_exe debug_dll -exe: $(BUILD_DIR)/cazalla.exe -dll: $(BUILD_DIR)/cazalla.dll -debug_exe: $(BUILD_DIR)/cazalla-debug.exe -debug_dll: $(BUILD_DIR)/cazalla-debug.dll +exe: $(BUILD_DIR)/angerona.exe +dll: $(BUILD_DIR)/angerona.dll +debug_exe: $(BUILD_DIR)/angerona-debug.exe +debug_dll: $(BUILD_DIR)/angerona-debug.dll # Executable Target -$(BUILD_DIR)/cazalla.exe: $(SRC_FILES) +$(BUILD_DIR)/angerona.exe: $(SRC_FILES) $(CC) $^ -o $@ $(CFLAGS) -s -D_EXE $(COMMAND_FLAGS) $(LFLAGS) -$(BUILD_DIR)/cazalla-debug.exe: $(SRC_FILES) +$(BUILD_DIR)/angerona-debug.exe: $(SRC_FILES) $(CC) $^ -o $@ $(CFLAGS) -D_EXE $(COMMAND_FLAGS) $(LFLAGS_CONSOLE) $(DEBUG_FLAGS) # DLL Target -$(BUILD_DIR)/cazalla.dll: $(SRC_FILES) +$(BUILD_DIR)/angerona.dll: $(SRC_FILES) $(CC) $^ -o $@ -shared -D_DLL $(CFLAGS) -s $(COMMAND_FLAGS) $(LFLAGS) -$(BUILD_DIR)/cazalla-debug.dll: $(SRC_FILES) +$(BUILD_DIR)/angerona-debug.dll: $(SRC_FILES) $(CC) $^ -o $@ -shared -D_DLL $(CFLAGS) $(COMMAND_FLAGS) $(LFLAGS) $(DEBUG_FLAGS) # Clean up diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/SistemadeFicheros.c b/Payload_Type/angerona/angerona/agent_code/angerona/SistemadeFicheros.c similarity index 99% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/SistemadeFicheros.c rename to Payload_Type/angerona/angerona/agent_code/angerona/SistemadeFicheros.c index 3c8e076..2c8ef65 100644 --- a/Payload_Type/cazalla/cazalla/agent_code/cazalla/SistemadeFicheros.c +++ b/Payload_Type/angerona/angerona/agent_code/angerona/SistemadeFicheros.c @@ -1,7 +1,7 @@ #include "SistemadeFicheros.h" #include "paquete.h" #include "transporte.h" -#include "cazalla.h" // For context tracking functions +#include "angerona.h" // For context tracking functions /* Forward decl to avoid implicit declaration on some toolchains */ BOOL PackageAddFormatPrintf(PPaquete package, BOOL copySize, char* fmt, ...); diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/SistemadeFicheros.h b/Payload_Type/angerona/angerona/agent_code/angerona/SistemadeFicheros.h similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/SistemadeFicheros.h rename to Payload_Type/angerona/angerona/agent_code/angerona/SistemadeFicheros.h diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/analizador.h b/Payload_Type/angerona/angerona/agent_code/angerona/analizador.h similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/analizador.h rename to Payload_Type/angerona/angerona/agent_code/angerona/analizador.h diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/cazalla.c b/Payload_Type/angerona/angerona/agent_code/angerona/angerona.c similarity index 61% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/cazalla.c rename to Payload_Type/angerona/angerona/agent_code/angerona/angerona.c index f884e39..f83bd6c 100644 --- a/Payload_Type/cazalla/cazalla/agent_code/cazalla/cazalla.c +++ b/Payload_Type/angerona/angerona/agent_code/angerona/angerona.c @@ -1,9 +1,9 @@ -#include "crypto.h" // Include crypto.h BEFORE cazalla.h to avoid redeclaration -#include "cazalla.h" +#include "crypto.h" // Include crypto.h BEFORE angerona.h to avoid redeclaration +#include "angerona.h" #include "Config.h" #include "socks_manager.h" -CONFIG_CAZALLA* cazallaConfig = NULL; +CONFIG_ANGERONA* angeronaConfig = NULL; /* Context tracking: Current working directory and impersonation context */ static char gCurrentDirectory[MAX_PATH] = ""; @@ -48,26 +48,26 @@ VOID clearImpersonationContext(void) { gImpersonationContext[0] = '\0'; } -VOID cazallaMain() { - _inf("Inicializando configuración de Cazalla"); +VOID angeronaMain() { + _inf("Inicializando configuración de Angerona"); - cazallaConfig = (CONFIG_CAZALLA*)LocalAlloc(LPTR, sizeof(CONFIG_CAZALLA)); - if (!cazallaConfig) { - _err("Error: fallo en LocalAlloc para cazallaConfig"); + angeronaConfig = (CONFIG_ANGERONA*)LocalAlloc(LPTR, sizeof(CONFIG_ANGERONA)); + if (!angeronaConfig) { + _err("Error: fallo en LocalAlloc para angeronaConfig"); return; } - cazallaConfig->idAgente = (PCHAR)initUUID; - cazallaConfig->hostName = (PWCHAR)hostname; - cazallaConfig->puertoHttp = port; - cazallaConfig->endPoint = (PWCHAR)endpoint; - cazallaConfig->userAgent = (PWCHAR)useragent; - cazallaConfig->metodoHttp = (PWCHAR)httpmethod; - cazallaConfig->SSL = ssl; - cazallaConfig->proxyHabilitado= proxyenabled; - cazallaConfig->urlProxy = (PWCHAR)proxyurl; - cazallaConfig->tiempoSleep = (UINT32)(sleep_time) * 1000; - cazallaConfig->encryptionEnabled = ENCRYPTION_ENABLED; + angeronaConfig->idAgente = (PCHAR)initUUID; + angeronaConfig->hostName = (PWCHAR)hostname; + angeronaConfig->puertoHttp = port; + angeronaConfig->endPoint = (PWCHAR)endpoint; + angeronaConfig->userAgent = (PWCHAR)useragent; + angeronaConfig->metodoHttp = (PWCHAR)httpmethod; + angeronaConfig->SSL = ssl; + angeronaConfig->proxyHabilitado= proxyenabled; + angeronaConfig->urlProxy = (PWCHAR)proxyurl; + angeronaConfig->tiempoSleep = (UINT32)(sleep_time) * 1000; + angeronaConfig->encryptionEnabled = ENCRYPTION_ENABLED; // Debug: print the raw values _dbg("ENCRYPTION_ENABLED = %d", ENCRYPTION_ENABLED); @@ -75,26 +75,26 @@ VOID cazallaMain() { _dbg("AESPSK_KEY length = %zu", strlen(AESPSK_KEY)); // Initialize AESPSK encryption if enabled - if (cazallaConfig->encryptionEnabled) { + if (angeronaConfig->encryptionEnabled) { _inf("Inicializando cifrado AES256-HMAC..."); if (crypto_init_aespsk(AESPSK_KEY)) { _inf("Cifrado habilitado"); } else { _err("Falló la inicialización del cifrado"); - cazallaConfig->encryptionEnabled = FALSE; + angeronaConfig->encryptionEnabled = FALSE; } } else { _inf("Cifrado deshabilitado"); } _dbg("Config: id=%s host=%ls port=%u ssl=%d proxy=%d endpoint=%ls UA=%ls sleep=%u", - cazallaConfig->idAgente, - cazallaConfig->hostName, - cazallaConfig->puertoHttp, - (int)cazallaConfig->SSL, - (int)cazallaConfig->proxyHabilitado, - cazallaConfig->endPoint, - cazallaConfig->userAgent, - cazallaConfig->tiempoSleep); + angeronaConfig->idAgente, + angeronaConfig->hostName, + angeronaConfig->puertoHttp, + (int)angeronaConfig->SSL, + (int)angeronaConfig->proxyHabilitado, + angeronaConfig->endPoint, + angeronaConfig->userAgent, + angeronaConfig->tiempoSleep); _inf("Iniciando primer checkin..."); PAnalizador respuestaAnalizador = checkin(); @@ -106,7 +106,7 @@ VOID cazallaMain() { parseChecking(respuestaAnalizador); - _inf("Entrando en bucle principal (rutina). Sleep inicial: %u ms", cazallaConfig->tiempoSleep); + _inf("Entrando en bucle principal (rutina). Sleep inicial: %u ms", angeronaConfig->tiempoSleep); while (TRUE) { rutina(); @@ -116,13 +116,13 @@ VOID cazallaMain() { _dbg("SOCKS activo -> checkin rápido (100 ms)"); Sleep(100); } else { - _dbg("SOCKS inactivo -> durmiendo %u ms", cazallaConfig->tiempoSleep); - Sleep(cazallaConfig->tiempoSleep); + _dbg("SOCKS inactivo -> durmiendo %u ms", angeronaConfig->tiempoSleep); + Sleep(angeronaConfig->tiempoSleep); } } } VOID setUUID(PCHAR newUUID) { - cazallaConfig->idAgente = newUUID; + angeronaConfig->idAgente = newUUID; _dbg("UUID actualizado: %s", newUUID); } diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/cazalla.h b/Payload_Type/angerona/angerona/agent_code/angerona/angerona.h similarity index 80% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/cazalla.h rename to Payload_Type/angerona/angerona/agent_code/angerona/angerona.h index d21466c..413e8f0 100644 --- a/Payload_Type/cazalla/cazalla/agent_code/cazalla/cazalla.h +++ b/Payload_Type/angerona/angerona/agent_code/angerona/angerona.h @@ -1,6 +1,6 @@ #pragma once -#ifndef CAZALLA_H -#define CAZALLA_H +#ifndef ANGERONA_H +#define ANGERONA_H #include #include "paquete.h" @@ -25,9 +25,9 @@ typedef struct { UINT32 tiempoSleep; BOOL encryptionEnabled; -} CONFIG_CAZALLA, *PCONFIG_CAZALLA; +} CONFIG_ANGERONA, *PCONFIG_ANGERONA; -extern PCONFIG_CAZALLA cazallaConfig; +extern PCONFIG_ANGERONA angeronaConfig; /* Context tracking functions */ PCHAR getCurrentDirectoryContext(void); @@ -37,6 +37,6 @@ VOID setImpersonationContext(PCHAR context); VOID clearImpersonationContext(void); VOID setUUID(PCHAR newUUID); -VOID cazallaMain(void); +VOID angeronaMain(void); #endif diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/browser_dump.c b/Payload_Type/angerona/angerona/agent_code/angerona/browser_dump.c similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/browser_dump.c rename to Payload_Type/angerona/angerona/agent_code/angerona/browser_dump.c diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/browser_dump.h b/Payload_Type/angerona/angerona/agent_code/angerona/browser_dump.h similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/browser_dump.h rename to Payload_Type/angerona/angerona/agent_code/angerona/browser_dump.h diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/browser_info.c b/Payload_Type/angerona/angerona/agent_code/angerona/browser_info.c similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/browser_info.c rename to Payload_Type/angerona/angerona/agent_code/angerona/browser_info.c diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/browser_info.h b/Payload_Type/angerona/angerona/agent_code/angerona/browser_info.h similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/browser_info.h rename to Payload_Type/angerona/angerona/agent_code/angerona/browser_info.h diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/cerrarCallback.c b/Payload_Type/angerona/angerona/agent_code/angerona/cerrarCallback.c similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/cerrarCallback.c rename to Payload_Type/angerona/angerona/agent_code/angerona/cerrarCallback.c diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/cerrarCallback.h b/Payload_Type/angerona/angerona/agent_code/angerona/cerrarCallback.h similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/cerrarCallback.h rename to Payload_Type/angerona/angerona/agent_code/angerona/cerrarCallback.h diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/checkin.c b/Payload_Type/angerona/angerona/agent_code/angerona/checkin.c similarity index 96% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/checkin.c rename to Payload_Type/angerona/angerona/agent_code/angerona/checkin.c index 264c46c..8599b37 100644 --- a/Payload_Type/cazalla/cazalla/agent_code/cazalla/checkin.c +++ b/Payload_Type/angerona/angerona/agent_code/angerona/checkin.c @@ -1,5 +1,5 @@ #include "checkin.h" -#include "cazalla.h" +#include "angerona.h" #include "socks_manager.h" #include "paquete.h" // For addCallbackContext #include "identity.h" // For IdentityGetUserInfo @@ -132,7 +132,7 @@ PAnalizador checkin() { return NULL; } - addString(checkin, (PCHAR)cazallaConfig->idAgente, FALSE); + addString(checkin, (PCHAR)angeronaConfig->idAgente, FALSE); UINT32* tableOfIPs = obtenerDireccionIP(&numeroDeIPs); addInt32(checkin, numeroDeIPs); for (UINT32 i = 0; i < numeroDeIPs; i++) { diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/checkin.h b/Payload_Type/angerona/angerona/agent_code/angerona/checkin.h similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/checkin.h rename to Payload_Type/angerona/angerona/agent_code/angerona/checkin.h diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/comandos.c b/Payload_Type/angerona/angerona/agent_code/angerona/comandos.c similarity index 97% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/comandos.c rename to Payload_Type/angerona/angerona/agent_code/angerona/comandos.c index 59f5bed..356b567 100644 --- a/Payload_Type/cazalla/cazalla/agent_code/cazalla/comandos.c +++ b/Payload_Type/angerona/angerona/agent_code/angerona/comandos.c @@ -1,4 +1,4 @@ -#include "cazalla.h" +#include "angerona.h" #include "comandos.h" #include "socks_manager.h" #include "rpfwd_manager.h" @@ -364,7 +364,7 @@ BOOL parseChecking(PAnalizador respuestaAnalizador) { _dbg("Tenemos nuevo UUID ! --> %s", nuevoUuid); - // === Nota: Cifrado AESPSK ya inicializado en cazallaMain() === + // === Nota: Cifrado AESPSK ya inicializado en angeronaMain() === // La clave AES se inyecta en tiempo de compilación, no se deriva en runtime diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/comandos.h b/Payload_Type/angerona/angerona/agent_code/angerona/comandos.h similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/comandos.h rename to Payload_Type/angerona/angerona/agent_code/angerona/comandos.h diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/consola.c b/Payload_Type/angerona/angerona/agent_code/angerona/consola.c similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/consola.c rename to Payload_Type/angerona/angerona/agent_code/angerona/consola.c diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/consola.h b/Payload_Type/angerona/angerona/agent_code/angerona/consola.h similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/consola.h rename to Payload_Type/angerona/angerona/agent_code/angerona/consola.h diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/crypto.c b/Payload_Type/angerona/angerona/agent_code/angerona/crypto.c similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/crypto.c rename to Payload_Type/angerona/angerona/agent_code/angerona/crypto.c diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/crypto.h b/Payload_Type/angerona/angerona/agent_code/angerona/crypto.h similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/crypto.h rename to Payload_Type/angerona/angerona/agent_code/angerona/crypto.h diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/debug.h b/Payload_Type/angerona/angerona/agent_code/angerona/debug.h similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/debug.h rename to Payload_Type/angerona/angerona/agent_code/angerona/debug.h diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/hmac_sha256.c b/Payload_Type/angerona/angerona/agent_code/angerona/hmac_sha256.c similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/hmac_sha256.c rename to Payload_Type/angerona/angerona/agent_code/angerona/hmac_sha256.c diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/hmac_sha256.h b/Payload_Type/angerona/angerona/agent_code/angerona/hmac_sha256.h similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/hmac_sha256.h rename to Payload_Type/angerona/angerona/agent_code/angerona/hmac_sha256.h diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/identity.c b/Payload_Type/angerona/angerona/agent_code/angerona/identity.c similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/identity.c rename to Payload_Type/angerona/angerona/agent_code/angerona/identity.c diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/identity.h b/Payload_Type/angerona/angerona/agent_code/angerona/identity.h similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/identity.h rename to Payload_Type/angerona/angerona/agent_code/angerona/identity.h diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/inline_execute.c b/Payload_Type/angerona/angerona/agent_code/angerona/inline_execute.c similarity index 99% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/inline_execute.c rename to Payload_Type/angerona/angerona/agent_code/angerona/inline_execute.c index 1d1976b..696481f 100644 --- a/Payload_Type/cazalla/cazalla/agent_code/cazalla/inline_execute.c +++ b/Payload_Type/angerona/angerona/agent_code/angerona/inline_execute.c @@ -1,4 +1,4 @@ -#include "cazalla.h" +#include "angerona.h" #include "inline_execute.h" #include "comandos.h" #include "paquete.h" @@ -174,7 +174,7 @@ BOOL BeaconIsAdmin(void) { /* * GetFileBytesFromMythic - Fetch a file from Mythic server using file_id - * Adapted from Cazalla's upload mechanism + * Adapted from Angerona's upload mechanism */ DWORD GetFileBytesFromMythic(PCHAR taskUuid, PCHAR fileId, PBOF_UPLOAD bof) { #define CHUNK_SIZE 512000 // 512 KB diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/inline_execute.h b/Payload_Type/angerona/angerona/agent_code/angerona/inline_execute.h similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/inline_execute.h rename to Payload_Type/angerona/angerona/agent_code/angerona/inline_execute.h diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/keylog.c b/Payload_Type/angerona/angerona/agent_code/angerona/keylog.c similarity index 99% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/keylog.c rename to Payload_Type/angerona/angerona/agent_code/angerona/keylog.c index bd31415..006a671 100644 --- a/Payload_Type/cazalla/cazalla/agent_code/cazalla/keylog.c +++ b/Payload_Type/angerona/angerona/agent_code/angerona/keylog.c @@ -1,6 +1,6 @@ #include "keylog.h" #include "paquete.h" -#include "cazalla.h" +#include "angerona.h" static volatile BOOL g_keylog_running = FALSE; static HANDLE g_keylog_thread = NULL; diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/keylog.h b/Payload_Type/angerona/angerona/agent_code/angerona/keylog.h similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/keylog.h rename to Payload_Type/angerona/angerona/agent_code/angerona/keylog.h diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/main.c b/Payload_Type/angerona/angerona/agent_code/angerona/main.c similarity index 56% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/main.c rename to Payload_Type/angerona/angerona/agent_code/angerona/main.c index cdfa819..fa02812 100644 --- a/Payload_Type/cazalla/cazalla/agent_code/cazalla/main.c +++ b/Payload_Type/angerona/angerona/agent_code/angerona/main.c @@ -1,13 +1,13 @@ -#include "cazalla.h" +#include "angerona.h" int main() { - _inf("=== CAZALLA AGENT STARTING ==="); + _inf("=== ANGERONA AGENT STARTING ==="); #ifdef AESPSK _inf("AESPSK: %s", AESPSK); #endif Sleep(2000); // Pausa 2 segundos para ver si inicia - cazallaMain(); - _inf("=== CAZALLA AGENT EXITING ==="); + angeronaMain(); + _inf("=== ANGERONA AGENT EXITING ==="); _inf("Press any key to exit..."); getchar(); return 0; diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/paquete.c b/Payload_Type/angerona/angerona/agent_code/angerona/paquete.c similarity index 96% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/paquete.c rename to Payload_Type/angerona/angerona/agent_code/angerona/paquete.c index 707cc0a..753b5cd 100644 --- a/Payload_Type/cazalla/cazalla/agent_code/cazalla/paquete.c +++ b/Payload_Type/angerona/angerona/agent_code/angerona/paquete.c @@ -1,5 +1,5 @@ -#include "crypto.h" // Include crypto.h BEFORE cazalla.h to avoid redeclaration -#include "cazalla.h" +#include "crypto.h" // Include crypto.h BEFORE angerona.h to avoid redeclaration +#include "angerona.h" #include "paquete.h" #include "socks_manager.h" #include "rpfwd_manager.h" @@ -19,7 +19,7 @@ PPaquete nuevoPaquete(BYTE idComando, BOOL init) { paquete->length = 0; if (init) { - addString(paquete, cazallaConfig->idAgente, FALSE); + addString(paquete, angeronaConfig->idAgente, FALSE); addByte(paquete, idComando); } @@ -304,10 +304,10 @@ PAnalizador mandarPaquete(PPaquete paquete) { char uuidCheck[37] = {0}; memcpy(uuidCheck, datosDecodificados, 36); _dbg("First 36 bytes (UUID check): %s", uuidCheck); - _dbg("Expected UUID: %s", cazallaConfig->idAgente); + _dbg("Expected UUID: %s", angeronaConfig->idAgente); // If response starts with UUID, we need to extract it - if (strncmp(uuidCheck, cazallaConfig->idAgente, 36) == 0) { + if (strncmp(uuidCheck, angeronaConfig->idAgente, 36) == 0) { _dbg("Response format: UUID + encrypted_data detected"); _dbg("Extracting encrypted data (after UUID)..."); diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/paquete.h b/Payload_Type/angerona/angerona/agent_code/angerona/paquete.h similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/paquete.h rename to Payload_Type/angerona/angerona/agent_code/angerona/paquete.h diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/procesos.c b/Payload_Type/angerona/angerona/agent_code/angerona/procesos.c similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/procesos.c rename to Payload_Type/angerona/angerona/agent_code/angerona/procesos.c diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/procesos.h b/Payload_Type/angerona/angerona/agent_code/angerona/procesos.h similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/procesos.h rename to Payload_Type/angerona/angerona/agent_code/angerona/procesos.h diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/rpfwd_manager.c b/Payload_Type/angerona/angerona/agent_code/angerona/rpfwd_manager.c similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/rpfwd_manager.c rename to Payload_Type/angerona/angerona/agent_code/angerona/rpfwd_manager.c diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/rpfwd_manager.h b/Payload_Type/angerona/angerona/agent_code/angerona/rpfwd_manager.h similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/rpfwd_manager.h rename to Payload_Type/angerona/angerona/agent_code/angerona/rpfwd_manager.h diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/samdump.c b/Payload_Type/angerona/angerona/agent_code/angerona/samdump.c similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/samdump.c rename to Payload_Type/angerona/angerona/agent_code/angerona/samdump.c diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/samdump.h b/Payload_Type/angerona/angerona/agent_code/angerona/samdump.h similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/samdump.h rename to Payload_Type/angerona/angerona/agent_code/angerona/samdump.h diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/screenshot.c b/Payload_Type/angerona/angerona/agent_code/angerona/screenshot.c similarity index 99% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/screenshot.c rename to Payload_Type/angerona/angerona/agent_code/angerona/screenshot.c index c9202f8..b113122 100644 --- a/Payload_Type/cazalla/cazalla/agent_code/cazalla/screenshot.c +++ b/Payload_Type/angerona/angerona/agent_code/angerona/screenshot.c @@ -1,5 +1,5 @@ #include "screenshot.h" -#include "cazalla.h" +#include "angerona.h" #include "paquete.h" #include "SistemadeFicheros.h" #include diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/screenshot.h b/Payload_Type/angerona/angerona/agent_code/angerona/screenshot.h similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/screenshot.h rename to Payload_Type/angerona/angerona/agent_code/angerona/screenshot.h diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/sha256.c b/Payload_Type/angerona/angerona/agent_code/angerona/sha256.c similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/sha256.c rename to Payload_Type/angerona/angerona/agent_code/angerona/sha256.c diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/sha256.h b/Payload_Type/angerona/angerona/agent_code/angerona/sha256.h similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/sha256.h rename to Payload_Type/angerona/angerona/agent_code/angerona/sha256.h diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/sleep.c b/Payload_Type/angerona/angerona/agent_code/angerona/sleep.c similarity index 81% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/sleep.c rename to Payload_Type/angerona/angerona/agent_code/angerona/sleep.c index 3b46ea7..aff2ae2 100644 --- a/Payload_Type/cazalla/cazalla/agent_code/cazalla/sleep.c +++ b/Payload_Type/angerona/angerona/agent_code/angerona/sleep.c @@ -1,5 +1,5 @@ #include "sleep.h" -#include "cazalla.h" +#include "angerona.h" #include "socks_manager.h" @@ -25,12 +25,12 @@ BOOL sleep(PAnalizador argumentos) { tiempoSleep = minVarianza; } - if (cazallaConfig == NULL) { - _err("Error: cazallaConfig no ha sido inicializado.\n"); + if (angeronaConfig == NULL) { + _err("Error: angeronaConfig no ha sido inicializado.\n"); return FALSE; } - _dbg("Tiempo Sleep antes: %d\n", cazallaConfig->tiempoSleep); + _dbg("Tiempo Sleep antes: %d\n", angeronaConfig->tiempoSleep); /* convertir a milisegundos */ tiempoSleep = tiempoSleep * 1000; @@ -41,7 +41,7 @@ BOOL sleep(PAnalizador argumentos) { if (tiempoSleep > 5000) tiempoSleep = 5000; // máximo 5 segundos } - cazallaConfig->tiempoSleep = tiempoSleep; + angeronaConfig->tiempoSleep = tiempoSleep; _dbg("Nuevo tiempoSleep configurado: %u ms", tiempoSleep); diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/sleep.h b/Payload_Type/angerona/angerona/agent_code/angerona/sleep.h similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/sleep.h rename to Payload_Type/angerona/angerona/agent_code/angerona/sleep.h diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/socks_manager.c b/Payload_Type/angerona/angerona/agent_code/angerona/socks_manager.c similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/socks_manager.c rename to Payload_Type/angerona/angerona/agent_code/angerona/socks_manager.c diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/socks_manager.h b/Payload_Type/angerona/angerona/agent_code/angerona/socks_manager.h similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/socks_manager.h rename to Payload_Type/angerona/angerona/agent_code/angerona/socks_manager.h diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/spawn.c b/Payload_Type/angerona/angerona/agent_code/angerona/spawn.c similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/spawn.c rename to Payload_Type/angerona/angerona/agent_code/angerona/spawn.c diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/spawn.h b/Payload_Type/angerona/angerona/agent_code/angerona/spawn.h similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/spawn.h rename to Payload_Type/angerona/angerona/agent_code/angerona/spawn.h diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/sqlite3.c b/Payload_Type/angerona/angerona/agent_code/angerona/sqlite3.c similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/sqlite3.c rename to Payload_Type/angerona/angerona/agent_code/angerona/sqlite3.c diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/sqlite3.h b/Payload_Type/angerona/angerona/agent_code/angerona/sqlite3.h similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/sqlite3.h rename to Payload_Type/angerona/angerona/agent_code/angerona/sqlite3.h diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/tokens.c b/Payload_Type/angerona/angerona/agent_code/angerona/tokens.c similarity index 99% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/tokens.c rename to Payload_Type/angerona/angerona/agent_code/angerona/tokens.c index 6f50fe2..282045a 100644 --- a/Payload_Type/cazalla/cazalla/agent_code/cazalla/tokens.c +++ b/Payload_Type/angerona/angerona/agent_code/angerona/tokens.c @@ -5,7 +5,7 @@ #include "analizador.h" #include "identity.h" #include "debug.h" -#include "cazalla.h" // For context tracking functions +#include "angerona.h" // For context tracking functions #include #include diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/tokens.h b/Payload_Type/angerona/angerona/agent_code/angerona/tokens.h similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/tokens.h rename to Payload_Type/angerona/angerona/agent_code/angerona/tokens.h diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/transporte.c b/Payload_Type/angerona/angerona/agent_code/angerona/transporte.c similarity index 86% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/transporte.c rename to Payload_Type/angerona/angerona/agent_code/angerona/transporte.c index f5e6ada..e6f0e82 100644 --- a/Payload_Type/cazalla/cazalla/agent_code/cazalla/transporte.c +++ b/Payload_Type/angerona/angerona/agent_code/angerona/transporte.c @@ -50,25 +50,25 @@ Analizador* realizarPeticionHTTP(PBYTE bufferIn, UINT32 bufferLen) { LPCWSTR httpProxy = WINHTTP_NO_PROXY_NAME; LPCWSTR noProxyBypass = WINHTTP_NO_PROXY_BYPASS; - if (cazallaConfig->proxyHabilitado && cazallaConfig->urlProxy) { + if (angeronaConfig->proxyHabilitado && angeronaConfig->urlProxy) { tipoDeAcceso = WINHTTP_ACCESS_TYPE_NAMED_PROXY; - httpProxy = cazallaConfig->urlProxy; + httpProxy = angeronaConfig->urlProxy; } - if (cazallaConfig->SSL) { + if (angeronaConfig->SSL) { httpFlags |= WINHTTP_FLAG_SECURE; } _dbg("WinHttpOpen()"); - hSesion = WinHttpOpen(cazallaConfig->userAgent, tipoDeAcceso, httpProxy, noProxyBypass, 0); + hSesion = WinHttpOpen(angeronaConfig->userAgent, tipoDeAcceso, httpProxy, noProxyBypass, 0); if (!hSesion) { _err("WinHttpOpen falló (%lu)", GetLastError()); return NULL; } _dbg("WinHttpOpen OK"); - _dbg("WinHttpConnect() host=%ls port=%d", cazallaConfig->hostName, cazallaConfig->puertoHttp); - hConexion = WinHttpConnect(hSesion, cazallaConfig->hostName, cazallaConfig->puertoHttp, 0); + _dbg("WinHttpConnect() host=%ls port=%d", angeronaConfig->hostName, angeronaConfig->puertoHttp); + hConexion = WinHttpConnect(hSesion, angeronaConfig->hostName, angeronaConfig->puertoHttp, 0); if (!hConexion) { _err("WinHttpConnect falló (%lu)", GetLastError()); WinHttpCloseHandle(hSesion); @@ -78,22 +78,22 @@ Analizador* realizarPeticionHTTP(PBYTE bufferIn, UINT32 bufferLen) { // Log complete URL - ensure endpoint starts with / wchar_t endpointBuf[256]; - if (cazallaConfig->endPoint && cazallaConfig->endPoint[0] != L'/') { - swprintf(endpointBuf, 256, L"/%ls", cazallaConfig->endPoint); + if (angeronaConfig->endPoint && angeronaConfig->endPoint[0] != L'/') { + swprintf(endpointBuf, 256, L"/%ls", angeronaConfig->endPoint); } else { - wcsncpy(endpointBuf, cazallaConfig->endPoint ? cazallaConfig->endPoint : L"", 256); + wcsncpy(endpointBuf, angeronaConfig->endPoint ? angeronaConfig->endPoint : L"", 256); } swprintf(urlBuffer, 512, L"%ls://%ls:%d%ls", - cazallaConfig->SSL ? L"https" : L"http", - cazallaConfig->hostName, - cazallaConfig->puertoHttp, + angeronaConfig->SSL ? L"https" : L"http", + angeronaConfig->hostName, + angeronaConfig->puertoHttp, endpointBuf); _dbg("Complete URL: %ls", urlBuffer); _dbg("WinHttpOpenRequest() endpoint=%ls method=%ls flags=0x%x", - endpointBuf, cazallaConfig->metodoHttp, httpFlags); - hPeticion = WinHttpOpenRequest(hConexion, cazallaConfig->metodoHttp, endpointBuf, NULL, NULL, NULL, httpFlags); + endpointBuf, angeronaConfig->metodoHttp, httpFlags); + hPeticion = WinHttpOpenRequest(hConexion, angeronaConfig->metodoHttp, endpointBuf, NULL, NULL, NULL, httpFlags); if (!hPeticion) { _err("WinHttpOpenRequest falló (%lu)", GetLastError()); WinHttpCloseHandle(hConexion); @@ -102,7 +102,7 @@ Analizador* realizarPeticionHTTP(PBYTE bufferIn, UINT32 bufferLen) { } _dbg("WinHttpOpenRequest OK"); - if (cazallaConfig->SSL) { + if (angeronaConfig->SSL) { _dbg("Configurando opciones SSL"); DWORD opcionesSeguridad = SECURITY_FLAG_IGNORE_UNKNOWN_CA | SECURITY_FLAG_IGNORE_CERT_DATE_INVALID | diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/transporte.h b/Payload_Type/angerona/angerona/agent_code/angerona/transporte.h similarity index 88% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/transporte.h rename to Payload_Type/angerona/angerona/agent_code/angerona/transporte.h index 2fa2be5..670a160 100644 --- a/Payload_Type/cazalla/cazalla/agent_code/cazalla/transporte.h +++ b/Payload_Type/angerona/angerona/agent_code/angerona/transporte.h @@ -4,7 +4,7 @@ #include #include -#include "cazalla.h" +#include "angerona.h" #include "analizador.h" #include "socks_manager.h" // <— añadido diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/utils.c b/Payload_Type/angerona/angerona/agent_code/angerona/utils.c similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/utils.c rename to Payload_Type/angerona/angerona/agent_code/angerona/utils.c diff --git a/Payload_Type/cazalla/cazalla/agent_code/cazalla/utils.h b/Payload_Type/angerona/angerona/agent_code/angerona/utils.h similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/cazalla/utils.h rename to Payload_Type/angerona/angerona/agent_code/angerona/utils.h diff --git a/Payload_Type/cazalla/cazalla/agent_code/bofs/inline-ea.x64.o b/Payload_Type/angerona/angerona/agent_code/bofs/inline-ea.x64.o similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_code/bofs/inline-ea.x64.o rename to Payload_Type/angerona/angerona/agent_code/bofs/inline-ea.x64.o diff --git a/Payload_Type/cazalla/cazalla/agent_functions/__init__.py b/Payload_Type/angerona/angerona/agent_functions/__init__.py similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_functions/__init__.py rename to Payload_Type/angerona/angerona/agent_functions/__init__.py diff --git a/Payload_Type/cazalla/cazalla/agent_functions/__pycache__/__init__.cpython-311.pyc b/Payload_Type/angerona/angerona/agent_functions/__pycache__/__init__.cpython-311.pyc similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_functions/__pycache__/__init__.cpython-311.pyc rename to Payload_Type/angerona/angerona/agent_functions/__pycache__/__init__.cpython-311.pyc diff --git a/Payload_Type/cazalla/cazalla/agent_functions/__pycache__/inline_execute.cpython-311.pyc b/Payload_Type/angerona/angerona/agent_functions/__pycache__/inline_execute.cpython-311.pyc similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_functions/__pycache__/inline_execute.cpython-311.pyc rename to Payload_Type/angerona/angerona/agent_functions/__pycache__/inline_execute.cpython-311.pyc diff --git a/Payload_Type/cazalla/cazalla/agent_functions/__pycache__/rpfwd.cpython-311.pyc b/Payload_Type/angerona/angerona/agent_functions/__pycache__/rpfwd.cpython-311.pyc similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_functions/__pycache__/rpfwd.cpython-311.pyc rename to Payload_Type/angerona/angerona/agent_functions/__pycache__/rpfwd.cpython-311.pyc diff --git a/Payload_Type/angerona/angerona/agent_functions/angerona.svg b/Payload_Type/angerona/angerona/agent_functions/angerona.svg new file mode 100644 index 0000000..3fc360e --- /dev/null +++ b/Payload_Type/angerona/angerona/agent_functions/angerona.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/Payload_Type/angerona/angerona/agent_functions/angerona_dark.svg b/Payload_Type/angerona/angerona/agent_functions/angerona_dark.svg new file mode 100644 index 0000000..0f0ce77 --- /dev/null +++ b/Payload_Type/angerona/angerona/agent_functions/angerona_dark.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/Payload_Type/cazalla/cazalla/agent_functions/browser_dump.py b/Payload_Type/angerona/angerona/agent_functions/browser_dump.py similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_functions/browser_dump.py rename to Payload_Type/angerona/angerona/agent_functions/browser_dump.py diff --git a/Payload_Type/cazalla/cazalla/agent_functions/browser_info.py b/Payload_Type/angerona/angerona/agent_functions/browser_info.py similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_functions/browser_info.py rename to Payload_Type/angerona/angerona/agent_functions/browser_info.py diff --git a/Payload_Type/cazalla/cazalla/agent_functions/builder.py b/Payload_Type/angerona/angerona/agent_functions/builder.py similarity index 95% rename from Payload_Type/cazalla/cazalla/agent_functions/builder.py rename to Payload_Type/angerona/angerona/agent_functions/builder.py index c5e86c5..6c98d3c 100644 --- a/Payload_Type/cazalla/cazalla/agent_functions/builder.py +++ b/Payload_Type/angerona/angerona/agent_functions/builder.py @@ -15,8 +15,8 @@ def generate_random_string(length=100): chars = string.ascii_letters + string.digits # a-zA-Z0-9 return ''.join(random.choices(chars, k=length)) -class CazallaAgent(PayloadType): - name = "Cazalla" +class AngeronaAgent(PayloadType): + name = "Angerona" file_extension = "exe" author = "OFSTeam" supported_os = [SupportedOS.Windows] @@ -26,7 +26,7 @@ class CazallaAgent(PayloadType): supports_dynamic_loading = True c2_profiles = ["http"] mythic_encrypts = True - translation_container = "cazalla_translator" + translation_container = "angerona_translator" build_parameters = [ BuildParameter( name="output", @@ -57,8 +57,8 @@ class CazallaAgent(PayloadType): default_value="0" ) ] - agent_path = pathlib.Path(".") / "cazalla" - agent_icon_path = agent_path / "agent_functions" / "cazalla.png" + agent_path = pathlib.Path(".") / "angerona" + agent_icon_path = agent_path / "agent_functions" / "angerona.svg" agent_code_path = agent_path / "agent_code" build_steps = [ @@ -261,7 +261,7 @@ class CazallaAgent(PayloadType): debug_output = self.get_parameter("debug_output") ollvm_compilation = int(self.get_parameter("ollvm_compilation")) - config_path = f"{agent_build_path.name}/agent_code/cazalla/Config.h" + config_path = f"{agent_build_path.name}/agent_code/angerona/Config.h" # Replace placeholders in Config.h debug_messages.append(f"\n=== CONFIG.H REPLACEMENT ===") @@ -321,11 +321,11 @@ class CazallaAgent(PayloadType): # Determine build target and filename based on output format and debug settings if debug_level == "none": make_target = output_format - output_filename = f"cazalla.{output_format}" + output_filename = f"angerona.{output_format}" make_flags = "" else: make_target = f"debug_{output_format}" - output_filename = f"cazalla-debug.{output_format}" + output_filename = f"angerona-debug.{output_format}" # Pass debug level and output type to Makefile # The Makefile will convert string values to numbers make_flags = f"DEBUG_LEVEL={debug_level} DEBUG_OUTPUT={debug_output}" @@ -334,8 +334,8 @@ class CazallaAgent(PayloadType): if command_flags_str: make_flags = f"{make_flags} COMMAND_FLAGS='{command_flags_str}'" if make_flags else f"COMMAND_FLAGS='{command_flags_str}'" - command = f"make -C {agent_build_path.name}/agent_code/cazalla {make_target} {make_flags}" - filename = f"{agent_build_path.name}/agent_code/cazalla/build/{output_filename}" + command = f"make -C {agent_build_path.name}/agent_code/angerona {make_target} {make_flags}" + filename = f"{agent_build_path.name}/agent_code/angerona/build/{output_filename}" proc = await asyncio.create_subprocess_shell( command, @@ -367,7 +367,7 @@ class CazallaAgent(PayloadType): await SendMythicRPCPayloadUpdatebuildStep(MythicRPCPayloadUpdateBuildStepMessage( PayloadUUID=self.uuid, StepName="Compiling", - StepStdout=f"Successfully compiled cazalla{debug_info}\nCommand: {command}\nTarget: {make_target}\nFlags: {make_flags}\nOutput: {output_filename}\nMD5: {md5_hash}\nSHA256: {sha256_hash}", + StepStdout=f"Successfully compiled angerona{debug_info}\nCommand: {command}\nTarget: {make_target}\nFlags: {make_flags}\nOutput: {output_filename}\nMD5: {md5_hash}\nSHA256: {sha256_hash}", StepSuccess=True )) @@ -411,8 +411,8 @@ class CazallaAgent(PayloadType): {obfuscation_parameters} \ -L/usr/lib/gcc/x86_64-w64-mingw32/13-posix \ --sysroot=/usr/x86_64-w64-mingw32 \ - /tmp/cazalla/*.c \ - -o /tmp/cazalla/cazalla.exe \ + /tmp/angerona/*.c \ + -o /tmp/angerona/angerona.exe \ -lntdll -lgdi32 -lws2_32 -lcrypt32 -liphlpapi -lshlwapi -lole32 -luser32 -ladvapi32 \ -lncrypt -lbcrypt -lversion -lnetapi32 -lwinhttp " @@ -420,7 +420,7 @@ class CazallaAgent(PayloadType): create_container_command = [ "docker", "run", "--name", f"{container_name}", - "--volume", f"{docker_volume_folder}:/tmp/cazalla/", + "--volume", f"{docker_volume_folder}:/tmp/angerona/", "ollvm16-builder:latest", "sh", "-c" ,compilation_command ] @@ -434,7 +434,7 @@ class CazallaAgent(PayloadType): try: # Move agent_build_path.name to docker_volume_folder - copy_tree(f"{agent_build_path.name}/agent_code/cazalla", docker_volume_folder) + copy_tree(f"{agent_build_path.name}/agent_code/angerona", docker_volume_folder) # Create Docker Container result = subprocess.run(create_container_command, capture_output=True, text=True, check=True) @@ -451,13 +451,13 @@ class CazallaAgent(PayloadType): return resp # Get the output from the Docker Container - resp.payload = open(f"{docker_volume_folder}/cazalla.exe", "rb").read() + resp.payload = open(f"{docker_volume_folder}/angerona.exe", "rb").read() resp.build_message = "Successfully built!" await SendMythicRPCPayloadUpdatebuildStep(MythicRPCPayloadUpdateBuildStepMessage( PayloadUUID=self.uuid, StepName="Compiling", - StepStdout=f"Successfully built cazalla.exe", + StepStdout=f"Successfully built angerona.exe", StepSuccess=True )) diff --git a/Payload_Type/cazalla/cazalla/agent_functions/cat.py b/Payload_Type/angerona/angerona/agent_functions/cat.py similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_functions/cat.py rename to Payload_Type/angerona/angerona/agent_functions/cat.py diff --git a/Payload_Type/cazalla/cazalla/agent_functions/cd.py b/Payload_Type/angerona/angerona/agent_functions/cd.py similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_functions/cd.py rename to Payload_Type/angerona/angerona/agent_functions/cd.py diff --git a/Payload_Type/cazalla/cazalla/agent_functions/cp.py b/Payload_Type/angerona/angerona/agent_functions/cp.py similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_functions/cp.py rename to Payload_Type/angerona/angerona/agent_functions/cp.py diff --git a/Payload_Type/cazalla/cazalla/agent_functions/download.py b/Payload_Type/angerona/angerona/agent_functions/download.py similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_functions/download.py rename to Payload_Type/angerona/angerona/agent_functions/download.py diff --git a/Payload_Type/cazalla/cazalla/agent_functions/exit.py b/Payload_Type/angerona/angerona/agent_functions/exit.py similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_functions/exit.py rename to Payload_Type/angerona/angerona/agent_functions/exit.py diff --git a/Payload_Type/cazalla/cazalla/agent_functions/inline_execute.py b/Payload_Type/angerona/angerona/agent_functions/inline_execute.py similarity index 99% rename from Payload_Type/cazalla/cazalla/agent_functions/inline_execute.py rename to Payload_Type/angerona/angerona/agent_functions/inline_execute.py index d896e7b..6278171 100644 --- a/Payload_Type/cazalla/cazalla/agent_functions/inline_execute.py +++ b/Payload_Type/angerona/angerona/agent_functions/inline_execute.py @@ -246,7 +246,7 @@ class InlineExecuteCommand(CommandBase): help_cmd = "inline_execute -BOF [COFF.o] [-Arguments [optional arguments]]" description = "Execute a Beacon Object File in the current process thread. (e.g., inline_execute -BOF listmods.x64.o -Arguments int32:1234) \n [!!WARNING!! Incorrect argument types can crash the Agent process.]" version = 1 - author = "@c0rnbread (adapted for Cazalla)" + author = "@c0rnbread (adapted for Angerona)" attackmapping = [] argument_class = InlineExecuteArguments completion_functions = {"coff_completion_callback": coff_completion_callback} diff --git a/Payload_Type/cazalla/cazalla/agent_functions/inline_execute_assembly.py b/Payload_Type/angerona/angerona/agent_functions/inline_execute_assembly.py similarity index 99% rename from Payload_Type/cazalla/cazalla/agent_functions/inline_execute_assembly.py rename to Payload_Type/angerona/angerona/agent_functions/inline_execute_assembly.py index 19a7a39..cc0c386 100644 --- a/Payload_Type/cazalla/cazalla/agent_functions/inline_execute_assembly.py +++ b/Payload_Type/angerona/angerona/agent_functions/inline_execute_assembly.py @@ -259,7 +259,7 @@ class InlineExecuteAssemblyCommand(CommandBase): help_cmd = "inline_execute_assembly -Assembly [file] [-Arguments [assembly args] [--patchexit] [--amsi] [--etw]]" description = "Execute a .NET Assembly in the current process using @EricEsquivel's BOF \"Inline-EA\" (e.g., inline_execute_assembly -Assembly SharpUp.exe -Arguments \"audit\" --patchexit --amsi --etw)" version = 1 - author = "@c0rnbread (adapted for Cazalla)" + author = "@c0rnbread (adapted for Angerona)" script_only = True attackmapping = [] argument_class = InlineExecuteAssemblyArguments diff --git a/Payload_Type/cazalla/cazalla/agent_functions/keylog_start.py b/Payload_Type/angerona/angerona/agent_functions/keylog_start.py similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_functions/keylog_start.py rename to Payload_Type/angerona/angerona/agent_functions/keylog_start.py diff --git a/Payload_Type/cazalla/cazalla/agent_functions/keylog_stop.py b/Payload_Type/angerona/angerona/agent_functions/keylog_stop.py similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_functions/keylog_stop.py rename to Payload_Type/angerona/angerona/agent_functions/keylog_stop.py diff --git a/Payload_Type/cazalla/cazalla/agent_functions/kill.py b/Payload_Type/angerona/angerona/agent_functions/kill.py similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_functions/kill.py rename to Payload_Type/angerona/angerona/agent_functions/kill.py diff --git a/Payload_Type/cazalla/cazalla/agent_functions/list_tokens.py b/Payload_Type/angerona/angerona/agent_functions/list_tokens.py similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_functions/list_tokens.py rename to Payload_Type/angerona/angerona/agent_functions/list_tokens.py diff --git a/Payload_Type/cazalla/cazalla/agent_functions/ls.py b/Payload_Type/angerona/angerona/agent_functions/ls.py similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_functions/ls.py rename to Payload_Type/angerona/angerona/agent_functions/ls.py diff --git a/Payload_Type/cazalla/cazalla/agent_functions/make_token.py b/Payload_Type/angerona/angerona/agent_functions/make_token.py similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_functions/make_token.py rename to Payload_Type/angerona/angerona/agent_functions/make_token.py diff --git a/Payload_Type/cazalla/cazalla/agent_functions/mkdir.py b/Payload_Type/angerona/angerona/agent_functions/mkdir.py similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_functions/mkdir.py rename to Payload_Type/angerona/angerona/agent_functions/mkdir.py diff --git a/Payload_Type/cazalla/cazalla/agent_functions/ps.py b/Payload_Type/angerona/angerona/agent_functions/ps.py similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_functions/ps.py rename to Payload_Type/angerona/angerona/agent_functions/ps.py diff --git a/Payload_Type/cazalla/cazalla/agent_functions/pwd.py b/Payload_Type/angerona/angerona/agent_functions/pwd.py similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_functions/pwd.py rename to Payload_Type/angerona/angerona/agent_functions/pwd.py diff --git a/Payload_Type/cazalla/cazalla/agent_functions/rev2self.py b/Payload_Type/angerona/angerona/agent_functions/rev2self.py similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_functions/rev2self.py rename to Payload_Type/angerona/angerona/agent_functions/rev2self.py diff --git a/Payload_Type/cazalla/cazalla/agent_functions/rm.py b/Payload_Type/angerona/angerona/agent_functions/rm.py similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_functions/rm.py rename to Payload_Type/angerona/angerona/agent_functions/rm.py diff --git a/Payload_Type/cazalla/cazalla/agent_functions/rpfwd.py b/Payload_Type/angerona/angerona/agent_functions/rpfwd.py similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_functions/rpfwd.py rename to Payload_Type/angerona/angerona/agent_functions/rpfwd.py diff --git a/Payload_Type/cazalla/cazalla/agent_functions/samdump.py b/Payload_Type/angerona/angerona/agent_functions/samdump.py similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_functions/samdump.py rename to Payload_Type/angerona/angerona/agent_functions/samdump.py diff --git a/Payload_Type/cazalla/cazalla/agent_functions/screenshot.py b/Payload_Type/angerona/angerona/agent_functions/screenshot.py similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_functions/screenshot.py rename to Payload_Type/angerona/angerona/agent_functions/screenshot.py diff --git a/Payload_Type/cazalla/cazalla/agent_functions/shell.py b/Payload_Type/angerona/angerona/agent_functions/shell.py similarity index 93% rename from Payload_Type/cazalla/cazalla/agent_functions/shell.py rename to Payload_Type/angerona/angerona/agent_functions/shell.py index 792a5b5..6b83b4d 100644 --- a/Payload_Type/cazalla/cazalla/agent_functions/shell.py +++ b/Payload_Type/angerona/angerona/agent_functions/shell.py @@ -30,7 +30,7 @@ class ShellCommand(CommandBase): cmd = "shell" needs_admin = False help_cmd = "shell " - description = "Execute arbitrary shell commands on the target system by spawning cmd.exe. The command is executed in a non-interactive shell and the output is captured and returned. HIGH OPSEC RISK: This command spawns cmd.exe which is heavily monitored by EDR/XDR solutions. Command execution and command-line arguments are logged by security tools. Consider using built-in Cazalla commands (ps, ls, cat, etc.) instead when possible, as they provide better OPSEC. Always requires approval from another operator before execution." + description = "Execute arbitrary shell commands on the target system by spawning cmd.exe. The command is executed in a non-interactive shell and the output is captured and returned. HIGH OPSEC RISK: This command spawns cmd.exe which is heavily monitored by EDR/XDR solutions. Command execution and command-line arguments are logged by security tools. Consider using built-in Angerona commands (ps, ls, cat, etc.) instead when possible, as they provide better OPSEC. Always requires approval from another operator before execution." version = 1 author = "Kaseya OFSTeam" attackmapping = ["T1059"] @@ -80,7 +80,7 @@ class ShellCommand(CommandBase): message += f" • {warning}\n" message += "\n" - message += "Consider using built-in Cazalla commands instead:\n" + message += "Consider using built-in Angerona commands instead:\n" message += " • Use 'ps' instead of 'tasklist'\n" message += " • Use 'ls' instead of 'dir'\n" message += " • Use 'cat' instead of 'type'\n" diff --git a/Payload_Type/cazalla/cazalla/agent_functions/sleep.py b/Payload_Type/angerona/angerona/agent_functions/sleep.py similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_functions/sleep.py rename to Payload_Type/angerona/angerona/agent_functions/sleep.py diff --git a/Payload_Type/cazalla/cazalla/agent_functions/socks.py b/Payload_Type/angerona/angerona/agent_functions/socks.py similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_functions/socks.py rename to Payload_Type/angerona/angerona/agent_functions/socks.py diff --git a/Payload_Type/cazalla/cazalla/agent_functions/steal_token.py b/Payload_Type/angerona/angerona/agent_functions/steal_token.py similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_functions/steal_token.py rename to Payload_Type/angerona/angerona/agent_functions/steal_token.py diff --git a/Payload_Type/cazalla/cazalla/agent_functions/upload.py b/Payload_Type/angerona/angerona/agent_functions/upload.py similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_functions/upload.py rename to Payload_Type/angerona/angerona/agent_functions/upload.py diff --git a/Payload_Type/cazalla/cazalla/agent_functions/whoami.py b/Payload_Type/angerona/angerona/agent_functions/whoami.py similarity index 100% rename from Payload_Type/cazalla/cazalla/agent_functions/whoami.py rename to Payload_Type/angerona/angerona/agent_functions/whoami.py diff --git a/Payload_Type/cazalla/cazalla/browser_scripts/ls.js b/Payload_Type/angerona/angerona/browser_scripts/ls.js similarity index 100% rename from Payload_Type/cazalla/cazalla/browser_scripts/ls.js rename to Payload_Type/angerona/angerona/browser_scripts/ls.js diff --git a/Payload_Type/cazalla/cazalla/browser_scripts/ps.js b/Payload_Type/angerona/angerona/browser_scripts/ps.js similarity index 100% rename from Payload_Type/cazalla/cazalla/browser_scripts/ps.js rename to Payload_Type/angerona/angerona/browser_scripts/ps.js diff --git a/Payload_Type/cazalla/logger/README.md b/Payload_Type/angerona/logger/README.md similarity index 76% rename from Payload_Type/cazalla/logger/README.md rename to Payload_Type/angerona/logger/README.md index cbf1da0..8960779 100644 --- a/Payload_Type/cazalla/logger/README.md +++ b/Payload_Type/angerona/logger/README.md @@ -1,12 +1,12 @@ -# 📊 Cazalla Logging Container +# 📊 Angerona Logging Container -Complete logging system for the Cazalla agent that records all Mythic events and sends them to a central syslog server. +Complete logging system for the Angerona agent that records all Mythic events and sends them to a central syslog server. ## 📋 Description This logging container follows the official Mythic pattern for logging containers. It automatically subscribes to all Mythic events and logs them to: -1. **Local files**: One file per day at `/tmp/cazalla_mythic_YYYY-MM-DD.log` (inside the container) +1. **Local files**: One file per day at `/tmp/angerona_mythic_YYYY-MM-DD.log` (inside the container) 2. **Central syslog**: Sends all events to a configured rsyslog server (RFC 3164) **Advantages:** @@ -27,14 +27,14 @@ This logging container follows the official Mythic pattern for logging container │ ▼ ┌─────────────────┐ -│ CazallaLogger │ +│ AngeronaLogger │ │ (Logging │ │ Container) │ └──────┬──────────┘ │ - ├──► Local file (/tmp/cazalla_mythic_YYYY-MM-DD.log) + ├──► Local file (/tmp/angerona_mythic_YYYY-MM-DD.log) │ - └──► Syslog Server (rsyslog) ──► /var/log/cazalla.log + └──► Syslog Server (rsyslog) ──► /var/log/angerona.log ``` ## ⚙️ Configuration @@ -45,7 +45,7 @@ The logger reads configuration from a file inside the container. **You don't nee 1. **Edit the configuration file:** ```bash - nano Payload_Type/cazalla/logger/syslog.conf + nano Payload_Type/angerona/logger/syslog.conf ``` 2. **Configure your values:** @@ -64,8 +64,8 @@ The logger reads configuration from a file inside the container. **You don't nee 3. **Rebuild and restart the container:** ```bash cd /opt/mythic - sudo ./mythic-cli build cazalla - sudo ./mythic-cli restart cazalla + sudo ./mythic-cli build angerona + sudo ./mythic-cli restart angerona ``` ### Method 2: Environment Variables (Alternative) @@ -87,12 +87,12 @@ If you want to receive logs on the Debian host where Mythic runs: sudo sed -i 's/#input(type="imudp" port="514")/input(type="imudp" port="514")/' /etc/rsyslog.conf ``` -3. **Create rule for Cazalla** in `/etc/rsyslog.d/50-cazalla.conf`: +3. **Create rule for Angerona** in `/etc/rsyslog.d/50-angerona.conf`: ```bash - sudo bash -c 'cat > /etc/rsyslog.d/50-cazalla.conf << EOF - # Logs from Cazalla Mythic agent + sudo bash -c 'cat > /etc/rsyslog.d/50-angerona.conf << EOF + # Logs from Angerona Mythic agent # Filter by facility LOCAL0 (16) - if \$syslogfacility-text == "local0" then /var/log/cazalla.log + if \$syslogfacility-text == "local0" then /var/log/angerona.log & stop EOF ' @@ -154,12 +154,12 @@ Logs are saved in structured JSON format: Messages are sent to syslog in RFC 3164 format with complete JSON: ``` -<134>Nov 17 15:18:23 cazalla cazalla: {"event_type": "TASK", "timestamp": "...", ...} +<134>Nov 17 15:18:23 angerona angerona: {"event_type": "TASK", "timestamp": "...", ...} ``` - **Priority**: Calculated based on facility (16 = LOCAL0) + severity - **Severity**: INFO (6) for most, WARNING (4) for artifacts -- **Tag**: `cazalla` +- **Tag**: `angerona` - **Message**: Complete JSON of the event ## 🔍 Verification @@ -168,44 +168,44 @@ Messages are sent to syslog in RFC 3164 format with complete JSON: ```bash # View container logs -sudo docker logs cazalla | grep -i "syslog\|Logger initialized" +sudo docker logs angerona | grep -i "syslog\|Logger initialized" # You should see: -# INFO:cazalla_logger:Syslog client initialized: 10.8.20.50:514 (facility=16) -# INFO:cazalla_logger:Logger initialized: cazalla_logger +# INFO:angerona_logger:Syslog client initialized: 10.8.20.50:514 (facility=16) +# INFO:angerona_logger:Logger initialized: angerona_logger ``` ### Verify Local Logs (inside container) ```bash # View today's log file -sudo docker exec cazalla cat /tmp/cazalla_mythic_$(date +%Y-%m-%d).log | tail -20 +sudo docker exec angerona cat /tmp/angerona_mythic_$(date +%Y-%m-%d).log | tail -20 # Or view all log files -sudo docker exec cazalla ls -lh /tmp/cazalla_mythic_*.log +sudo docker exec angerona ls -lh /tmp/angerona_mythic_*.log ``` ### Verify Logs in Syslog (host) ```bash # View logs in real-time -sudo tail -f /var/log/cazalla.log +sudo tail -f /var/log/angerona.log # View recent events -sudo tail -50 /var/log/cazalla.log +sudo tail -50 /var/log/angerona.log # Count events by type -sudo tail -1000 /var/log/cazalla.log | grep -o '"event_type": "[^"]*"' | sort | uniq -c +sudo tail -1000 /var/log/angerona.log | grep -o '"event_type": "[^"]*"' | sort | uniq -c ``` ### Verify Events are Being Sent ```bash # View events in container logs -sudo docker logs cazalla | grep -E "(TASK|RESPONSE|CALLBACK)" | tail -10 +sudo docker logs angerona | grep -E "(TASK|RESPONSE|CALLBACK)" | tail -10 # View events in syslog -sudo tail -20 /var/log/cazalla.log | grep -E "(TASK|RESPONSE|CALLBACK)" +sudo tail -20 /var/log/angerona.log | grep -E "(TASK|RESPONSE|CALLBACK)" ``` ## 🛠️ Troubleshooting @@ -217,12 +217,12 @@ sudo tail -20 /var/log/cazalla.log | grep -E "(TASK|RESPONSE|CALLBACK)" **Solution:** 1. Verify the logger is imported in `main.py`: ```bash - grep -A 5 "from logger" Payload_Type/cazalla/main.py + grep -A 5 "from logger" Payload_Type/angerona/main.py ``` 2. Check container logs: ```bash - sudo docker logs cazalla | grep -i "error\|warning\|logger" + sudo docker logs angerona | grep -i "error\|warning\|logger" ``` ### Syslog Not Initializing @@ -232,24 +232,24 @@ sudo tail -20 /var/log/cazalla.log | grep -E "(TASK|RESPONSE|CALLBACK)" **Solution:** 1. Verify the configuration file exists: ```bash - sudo docker exec cazalla cat /Mythic/logger/syslog.conf + sudo docker exec angerona cat /Mythic/logger/syslog.conf ``` 2. Verify `SYSLOG_SERVER` has a value (not empty): ```bash - sudo docker exec cazalla cat /Mythic/logger/syslog.conf | grep SYSLOG_SERVER + sudo docker exec angerona cat /Mythic/logger/syslog.conf | grep SYSLOG_SERVER ``` 3. Rebuild the container if you just edited the file: ```bash cd /opt/mythic - sudo ./mythic-cli build cazalla - sudo ./mythic-cli restart cazalla + sudo ./mythic-cli build angerona + sudo ./mythic-cli restart angerona ``` ### Messages Not Reaching Syslog -**Symptom:** Logger initializes but you don't see messages in `/var/log/cazalla.log`. +**Symptom:** Logger initializes but you don't see messages in `/var/log/angerona.log`. **Solution:** 1. Verify rsyslog is listening: @@ -264,7 +264,7 @@ sudo tail -20 /var/log/cazalla.log | grep -E "(TASK|RESPONSE|CALLBACK)" echo "Host IP: $IP_HOST" # Test from container - sudo docker exec cazalla python3 -c " + sudo docker exec angerona python3 -c " import socket s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.sendto(b'test', ('$IP_HOST', 514)) @@ -272,12 +272,12 @@ sudo tail -20 /var/log/cazalla.log | grep -E "(TASK|RESPONSE|CALLBACK)" " # Verify it arrived - sleep 1 && sudo tail -1 /var/log/cazalla.log + sleep 1 && sudo tail -1 /var/log/angerona.log ``` 3. Verify rsyslog configuration: ```bash - sudo cat /etc/rsyslog.d/50-cazalla.conf + sudo cat /etc/rsyslog.d/50-angerona.conf sudo systemctl status rsyslog ``` @@ -300,18 +300,18 @@ This is normal for some events. The logger extracts all available information fr **Solution:** 1. Verify the file exists locally: ```bash - ls -la Payload_Type/cazalla/logger/syslog.conf + ls -la Payload_Type/angerona/logger/syslog.conf ``` -2. Verify `CAZALLA_USE_BUILD_CONTEXT="true"` in `/opt/mythic/.env`: +2. Verify `ANGERONA_USE_BUILD_CONTEXT="true"` in `/opt/mythic/.env`: ```bash - grep CAZALLA_USE_BUILD_CONTEXT /opt/mythic/.env + grep ANGERONA_USE_BUILD_CONTEXT /opt/mythic/.env ``` 3. Rebuild the container: ```bash cd /opt/mythic - sudo ./mythic-cli build cazalla + sudo ./mythic-cli build angerona ``` ## 📚 Syslog Facility Codes @@ -337,16 +337,16 @@ This is normal for some events. The logger extracts all available information fr ## 🔧 Code Structure ``` -Payload_Type/cazalla/logger/ -├── __init__.py # Exports cazalla_logger -├── logger.py # CazallaLogger class + SyslogClient +Payload_Type/angerona/logger/ +├── __init__.py # Exports angerona_logger +├── logger.py # AngeronaLogger class + SyslogClient ├── syslog.conf # Syslog configuration └── README.md # This documentation ``` ### Main Classes -- **`CazallaLogger`**: Inherits from `mythic_container.LoggingBase.Log` +- **`AngeronaLogger`**: Inherits from `mythic_container.LoggingBase.Log` - Automatically registers with Mythic - Implements `new_*` methods for each event type - Formats messages as JSON diff --git a/Payload_Type/angerona/logger/__init__.py b/Payload_Type/angerona/logger/__init__.py new file mode 100644 index 0000000..10e0bf1 --- /dev/null +++ b/Payload_Type/angerona/logger/__init__.py @@ -0,0 +1,6 @@ +# Logger package for Angerona Mythic agent +from .logger import angerona_logger + +# Export logger instance so it can be imported +__all__ = ['angerona_logger'] + diff --git a/Payload_Type/cazalla/logger/logger.py b/Payload_Type/angerona/logger/logger.py similarity index 96% rename from Payload_Type/cazalla/logger/logger.py rename to Payload_Type/angerona/logger/logger.py index e95197e..fc0dc23 100644 --- a/Payload_Type/cazalla/logger/logger.py +++ b/Payload_Type/angerona/logger/logger.py @@ -1,5 +1,5 @@ """ -Logging Container for Cazalla Mythic Agent +Logging Container for Angerona Mythic Agent This container subscribes to Mythic events following the official Python logging container pattern. Based on: https://docs.mythic-c2.net/customizing/3.-consuming-containers/logging @@ -18,22 +18,22 @@ import socket from datetime import datetime -class CazallaLogger(Log): +class AngeronaLogger(Log): """ - Logging container for Cazalla agent + Logging container for Angerona agent Follows the official Python logging container pattern """ LogToFilePath = "/tmp" # Path for file logging (empty = stdout only) LogLevel = logging.INFO LogMaxSizeInMB = 0 # 0 = no rotation, keep everything LogMaxBackups = 0 # No backups needed (one file per day) - name = "cazalla_logger" - description = "Cazalla logging container - logs ALL Mythic events to daily files and syslog" + name = "angerona_logger" + description = "Angerona logging container - logs ALL Mythic events to daily files and syslog" def __init__(self): """Initialize the logger""" # Set up Python logging - self.mylogger = logging.getLogger('cazalla_logger') + self.mylogger = logging.getLogger('angerona_logger') self.mylogger.setLevel(self.LogLevel) # Clear any existing handlers to avoid duplicates @@ -51,9 +51,9 @@ class CazallaLogger(Log): log_dir = Path(self.LogToFilePath) log_dir.mkdir(parents=True, exist_ok=True) - # Create filename with current date: cazalla_mythic_YYYY-MM-DD.log + # Create filename with current date: angerona_mythic_YYYY-MM-DD.log today = datetime.now().strftime("%Y-%m-%d") - log_file = log_dir / f'cazalla_mythic_{today}.log' + log_file = log_dir / f'angerona_mythic_{today}.log' # Use FileHandler (no rotation) - one file per day file_handler = logging.FileHandler(log_file, mode='a', encoding='utf-8') @@ -296,7 +296,7 @@ class SyslogClient: self.facility = facility self.socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.hostname = socket.gethostname() - self.tag = "cazalla" + self.tag = "angerona" def _get_timestamp(self) -> str: """Get current timestamp in RFC 3164 format (Mmm dd HH:MM:SS)""" @@ -347,4 +347,4 @@ class SyslogClient: # Register the logger - Mythic will automatically detect and register it # The class name and inheritance from Log is what makes it work -cazalla_logger = CazallaLogger() +angerona_logger = AngeronaLogger() diff --git a/Payload_Type/cazalla/logger/syslog.conf b/Payload_Type/angerona/logger/syslog.conf similarity index 86% rename from Payload_Type/cazalla/logger/syslog.conf rename to Payload_Type/angerona/logger/syslog.conf index 91195ba..790b608 100644 --- a/Payload_Type/cazalla/logger/syslog.conf +++ b/Payload_Type/angerona/logger/syslog.conf @@ -1,6 +1,6 @@ -# Syslog Configuration for Cazalla Logging Container +# Syslog Configuration for Angerona Logging Container # Edit this file with your syslog server details -# After editing, restart the container: sudo ./mythic-cli restart cazalla +# After editing, restart the container: sudo ./mythic-cli restart angerona # Syslog server IP or hostname (leave empty to disable syslog) # Use the host IP (10.8.20.50) or 172.17.0.1 (docker0 bridge) to reach rsyslog on the host diff --git a/Payload_Type/cazalla/main.py b/Payload_Type/angerona/main.py similarity index 89% rename from Payload_Type/cazalla/main.py rename to Payload_Type/angerona/main.py index d3e09d1..62b243b 100644 --- a/Payload_Type/cazalla/main.py +++ b/Payload_Type/angerona/main.py @@ -1,14 +1,14 @@ #from mywebhook.webhook import * import mythic_container import asyncio -import cazalla +import angerona #import websocket.mythic.c2_functions.websocket from translator.translator import * # Import logging container - following official Python pattern # The logger is automatically registered when the class is instantiated try: - from logger import cazalla_logger # Import logging container + from logger import angerona_logger # Import logging container print("[MAIN] ✓ Logging container imported and registered") except Exception as e: print(f"[MAIN] WARNING: Could not import logging container: {e}") diff --git a/Payload_Type/cazalla/rabbitmq_config.json b/Payload_Type/angerona/rabbitmq_config.json similarity index 100% rename from Payload_Type/cazalla/rabbitmq_config.json rename to Payload_Type/angerona/rabbitmq_config.json diff --git a/Payload_Type/cazalla/requirements.txt b/Payload_Type/angerona/requirements.txt similarity index 100% rename from Payload_Type/cazalla/requirements.txt rename to Payload_Type/angerona/requirements.txt diff --git a/Payload_Type/cazalla/translator/__init__.py b/Payload_Type/angerona/translator/__init__.py similarity index 100% rename from Payload_Type/cazalla/translator/__init__.py rename to Payload_Type/angerona/translator/__init__.py diff --git a/Payload_Type/cazalla/translator/commands_from_c2.py b/Payload_Type/angerona/translator/commands_from_c2.py similarity index 100% rename from Payload_Type/cazalla/translator/commands_from_c2.py rename to Payload_Type/angerona/translator/commands_from_c2.py diff --git a/Payload_Type/cazalla/translator/commands_from_implant.py b/Payload_Type/angerona/translator/commands_from_implant.py similarity index 100% rename from Payload_Type/cazalla/translator/commands_from_implant.py rename to Payload_Type/angerona/translator/commands_from_implant.py diff --git a/Payload_Type/cazalla/translator/translator.py b/Payload_Type/angerona/translator/translator.py similarity index 97% rename from Payload_Type/cazalla/translator/translator.py rename to Payload_Type/angerona/translator/translator.py index 0e4ad7d..45098a3 100644 --- a/Payload_Type/cazalla/translator/translator.py +++ b/Payload_Type/angerona/translator/translator.py @@ -30,9 +30,9 @@ class TranslationContainerEncryptionType(Enum): -class cazalla_translator(TranslationContainer): - name = "cazalla_translator" - description = "Python translation service for the C agent Cazalla" +class angerona_translator(TranslationContainer): + name = "angerona_translator" + description = "Python translation service for the C agent Angerona" author = "OFSTeam" # Variables de clase para configuración de cifrado diff --git a/Payload_Type/cazalla/translator/utils.py b/Payload_Type/angerona/translator/utils.py similarity index 100% rename from Payload_Type/cazalla/translator/utils.py rename to Payload_Type/angerona/translator/utils.py diff --git a/Payload_Type/cazalla/cazalla/agent_functions/cazalla.png b/Payload_Type/cazalla/cazalla/agent_functions/cazalla.png deleted file mode 100644 index fadc967a8f12111d3e12c95570bf3ff4dd3e5538..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 208556 zcmeFZ30Tcr`#)TWbIKH{G%G`;Vb4ROhTWt=kp>O+R8qTn*v&*}H*ASS6KPOXiUy5_ z+8a?6g;Z)INyBc?T<_Z9@SMka&hh+zzxR5t_pgi6_q*1;?)6#sd@nm{m#O|LUJ+g{ zF0NIE2D%npTuY@me}7vJp0s-|KLCFG?rC7-!^Oq7p7WQR>wJnZ7uT+Imp#_L)+WX( zL=TD*p5#FwD^V$)U^Ew(nkLl~Pjn^wN)gD;F7E2mLzT7CQZ6KQX)B}&#KcpFe89yZ z$eX-7$aD`e$d!mCNo#8Gs!>${0Seg{FGZ!ex%;S4)uk8ds(^oU9xF>rEe`Q@RhQP{ zEGT7dvP(+G!<#IHR6;2dAtT7V*j>~p}UVS-knGW`~&Wk zT)-j_G!%=1KuC%hB$l8^AR~y11SA2eNFX}FkOYF06P5t^O8UF$|3+Gu?Cs)DCh2*5 zP!`q36YuRq=7_Mm^j8`FL(jfoyQl;zF8|IG5eb74$w-7E3<7adbiyJ~iUjaL5g>rT zpixk)69%EC{BP60@dOr7`}`Up`Srv&J0^i0!*!r29W(-kh9GpIP@J~5o*q(L3j)#7 zMrfgMD7~+gznl6a${zoXOnheQ2UEYT@D=Ru0R4A?G;s0p_3#e-?geMd9CNjs?Delt zzrJvD`G@E7$LRpeqJk%K455Y(9-J))nD3r_WBKz8&O)CD{2v@ChyHid|9Xvp17vp% z7z7w|2wD+>*aJnWAkZpE%ytM&1p*}YGbf9q{+fu7hm&sr-kYrD43t{qvn$&5)iO!x z=q$P(DOoEQcaledkK9+P|2plj$rBIY-JQuK4dt&Bzdrc$6g6ee(Yd+&FPt3F!`+|k z?fVm_2Q(KCyfoR{N5hGu%`OzYGgb=s->stKO~wO5 zyvM`C?Vp&BKTr7v_cv-}UA!;(Uo0D31&UCCK)+hHKZtxD`6n7C9wZm1z<;ChC+o4yud zfu~L$-W0sA#%D9OXt=&T{Ep#o(UvjU8BYu}+_gtX*TtFakgM&i#FjyUoHd+UZ z#=!L82owyCfS{2WG#UqDz5g)zhfC;qxOsSk10ZX_zn}c=@egNx4ehi*2*>gNK0km~ z8}IzDPdPU5i+6!z^x#lEoHkSosjH<6fnty_1QHEHLUBk40;7fdG2Gu1z~OXsVK^Nu z5{l4AyA z9iavqfdMRFbf8F#4i2TIi@>4b2wfxw1<{2fkq{6C{|x~Q0_+xtL+YWRAm)Q(;c$c= z5`oauLhAxl5P#1B76sMShG;_(FbEco($mvH;?Ou992|u}!4Wt(2p|8316^$$I24Q4 z(}4hfAy}NQwl)$2M`{BKT4)#)M7DoJKo5pNBOyqXE>T=%k23;2~Hd7UP70 z{K?A`txHzPCX)z65{8U*f+H~hd7kqD6aE^>`W z1FlIV5}W|X6QKyyf6Fz73^HgG5M-cu9Bm{6F$5(yMG}Mnq>@Mg<%GZRyx+NkA7hP2 zIAO_75FjBCr$xE`pTioDMqr^>B!?%{kxpP2FM#|{ z$u&TOjD`U~fPLm1BT#fuC36B^3`&F{VQ3POQ#SgqB*Y1Ufn%J2?}9;59Burs92f|? z7Yk5OI2;Bgg31<*=!69Z4*`mAco;+xPawlEBv9)klR&NIZ}|L53`Qa$ok*Yz0wn_z zhadp8!=gZu5RFF>&?pFoOu+uVYyC9hyJgK|8vZ+1Sk@V1hN3ZgBT1rJu-0Kz~RD4 zcqjsn#z3K1@;~Mb3yzXVf`c+K2`DfE3k)0qfoDrZ1EEx_1eIq2Epol<{fskN;LSP{n48aLShL8yV`~V1OGzLwEKom)2DA*

1{?u~L_#kz~NBNHj!Y%7%T!rf&}1}5hx-^JpQqq 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 U?FGurzg9zAQy)~N{wV7I0nA!ISpWb4 diff --git a/Payload_Type/cazalla/cazalla/agent_functions/cazalla.svg b/Payload_Type/cazalla/cazalla/agent_functions/cazalla.svg deleted file mode 100644 index 7647fb8..0000000 --- a/Payload_Type/cazalla/cazalla/agent_functions/cazalla.svg +++ /dev/null @@ -1,266 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Payload_Type/cazalla/logger/__init__.py b/Payload_Type/cazalla/logger/__init__.py deleted file mode 100644 index ca1c876..0000000 --- a/Payload_Type/cazalla/logger/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -# Logger package for Cazalla Mythic agent -from .logger import cazalla_logger - -# Export logger instance so it can be imported -__all__ = ['cazalla_logger'] - diff --git a/README.md b/README.md index 9475e81..084c7bf 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Cazalla - Mythic C2 Agent +# Angerona - Mythic C2 Agent

@@ -41,7 +41,7 @@ ## 🎯 Overview -**Cazalla** is a lightweight Windows implant written in C, designed to work seamlessly with the [Mythic C2 Framework](https://github.com/its-a-feature/Mythic). It provides essential post-exploitation capabilities including file system manipulation, process enumeration, command execution, and SOCKS proxy functionality. +**Angerona** is a lightweight Windows implant written in C, designed to work seamlessly with the [Mythic C2 Framework](https://github.com/its-a-feature/Mythic). It provides essential post-exploitation capabilities including file system manipulation, process enumeration, command execution, and SOCKS proxy functionality. This project was inspired by the article [How to build your own Mythic agent in C](https://red-team-sncf.github.io/how-to-create-your-own-mythic-agent-in-c.html) and has been extended with additional features and improvements. @@ -70,20 +70,20 @@ This project was inspired by the article [How to build your own Mythic agent in 2. Build the [Docker Image ollvm](https://git.redteam/jesus.rodenas/ollvm-clang) in the Mythic server. -### Install Cazalla on Mythic +### Install Angerona on Mythic ```bash cd ~/Mythic -./mythic-cli install github https://github.com//Cazalla +./mythic-cli install github https://github.com//Angerona ``` Or install from local directory: ```bash -./mythic-cli install folder /path/to/Cazalla +./mythic-cli install folder /path/to/Angerona ``` -Then, modify the Mythic `docker-compose.yaml`, adding the following volumnes in the "cazalla" service: +Then, modify the Mythic `docker-compose.yaml`, adding the following volumnes in the "angerona" service: ``` - /var/run/docker.sock:/var/run/docker.sock @@ -92,10 +92,10 @@ Then, modify the Mythic `docker-compose.yaml`, adding the following volumnes in ### Build the Agent -Cazalla can be built directly from the Mythic UI: +Angerona can be built directly from the Mythic UI: 1. Navigate to **Payloads** → **Create Payload** -2. Select **Cazalla** as the payload type +2. Select **Angerona** as the payload type 3. Configure build parameters (C2 profile, sleep interval, etc.) 4. Click **Build** @@ -103,9 +103,9 @@ The agent will be cross-compiled for Windows using MinGW in a Docker container. --- -## 🔨 Customizing Cazalla +## 🔨 Customizing Angerona -If you've forked Cazalla or made local changes and want to use your customized version, you need to configure Mythic to use local builds instead of remote images. +If you've forked Angerona or made local changes and want to use your customized version, you need to configure Mythic to use local builds instead of remote images. ### Making Changes Work @@ -113,34 +113,34 @@ By default, Mythic may use pre-built remote images for faster deployment. Howeve #### Configure Build Variables -After installing Cazalla, Mythic will add these variables to your `~/Mythic/.env` file: +After installing Angerona, Mythic will add these variables to your `~/Mythic/.env` file: ```bash # Use local build context instead of remote image -CAZALLA_USE_BUILD_CONTEXT="true" +ANGERONA_USE_BUILD_CONTEXT="true" # Use direct mount instead of Docker volume (recommended for development) -CAZALLA_USE_VOLUME="false" +ANGERONA_USE_VOLUME="false" # Optional: Remote image URL (only used if USE_BUILD_CONTEXT is false) -CAZALLA_REMOTE_IMAGE="ghcr.io/your-org/cazalla:v1.0.0" +ANGERONA_REMOTE_IMAGE="ghcr.io/your-org/angerona:v1.0.0" ``` #### Variables Explanation -- **`CAZALLA_USE_BUILD_CONTEXT`**: +- **`ANGERONA_USE_BUILD_CONTEXT`**: - Set to `"true"` to build from your local `Dockerfile` and include your local changes - Set to `"false"` (default) to use the pre-built remote image - **Important**: You must set this to `"true"` if you've modified any files! -- **`CAZALLA_USE_VOLUME`**: +- **`ANGERONA_USE_VOLUME`**: - Set to `"false"` (default) to mount the local folder directly into the container - Set to `"true"` to use a Docker volume instead - Direct mount is better for development as changes are immediately visible -- **`CAZALLA_REMOTE_IMAGE`** (optional): +- **`ANGERONA_REMOTE_IMAGE`** (optional): - Specifies a pre-built remote image URL - - Only used when `CAZALLA_USE_BUILD_CONTEXT="false"` + - Only used when `ANGERONA_USE_BUILD_CONTEXT="false"` #### Apply Changes @@ -148,33 +148,33 @@ After modifying these variables, rebuild the container: ```bash cd ~/Mythic -sudo ./mythic-cli build cazalla +sudo ./mythic-cli build angerona ``` #### Verifying Your Changes 1. Make your code changes -2. Set `CAZALLA_USE_BUILD_CONTEXT="true"` in `~/Mythic/.env` -3. Run `sudo ./mythic-cli build cazalla` -4. Check logs: `sudo docker logs cazalla_translator` +2. Set `ANGERONA_USE_BUILD_CONTEXT="true"` in `~/Mythic/.env` +3. Run `sudo ./mythic-cli build angerona` +4. Check logs: `sudo docker logs angerona_translator` If changes still don't appear: -- Verify the `Dockerfile` copies your modified files (see line 39: `COPY ./ /Mythic/cazalla/`) +- Verify the `Dockerfile` copies your modified files (see line 39: `COPY ./ /Mythic/angerona/`) - Check that file paths in the Dockerfile match your directory structure -- Ensure you're editing files in the correct location (inside `Payload_Type/cazalla/`) +- Ensure you're editing files in the correct location (inside `Payload_Type/angerona/`) #### Example: Customizing Agent Code ```bash # 1. Edit agent C code -vim Payload_Type/cazalla/cazalla/agent_code/cazalla/comandos.c +vim Payload_Type/angerona/angerona/agent_code/angerona/comandos.c # 2. Ensure build context is enabled -echo 'CAZALLA_USE_BUILD_CONTEXT="true"' >> ~/Mythic/.env +echo 'ANGERONA_USE_BUILD_CONTEXT="true"' >> ~/Mythic/.env # 3. Rebuild the container cd ~/Mythic -sudo ./mythic-cli build cazalla +sudo ./mythic-cli build angerona # 4. Rebuild a payload from the UI # Your changes will now be included in the compiled agent @@ -251,7 +251,7 @@ For more information, see the [Mythic documentation on customizing public agents ## 🌐 SOCKS Proxy Support -Cazalla includes full SOCKS5 proxy support, allowing you to route traffic through the implant to reach internal network resources. +Angerona includes full SOCKS5 proxy support, allowing you to route traffic through the implant to reach internal network resources. ### How It Works @@ -363,7 +363,7 @@ Agent and translator communicate SOCKS data using a custom binary block: ## 🔄 Reverse Port Forwarding (RPFWD) Support -Cazalla includes reverse port forwarding (RPFWD) support, allowing you to tunnel incoming connections from the agent to a remote destination through Mythic. +Angerona includes reverse port forwarding (RPFWD) support, allowing you to tunnel incoming connections from the agent to a remote destination through Mythic. ### How It Works @@ -464,7 +464,7 @@ Agent and translator communicate RPFWD data using a custom binary block: ## 📡 Communication Protocol -Cazalla uses a custom binary protocol for efficient communication with Mythic. +Angerona uses a custom binary protocol for efficient communication with Mythic. ### Message Structure @@ -557,7 +557,7 @@ Edit `Config.h` before building: ### Channel Encryption -Cazalla supports optional AES-256-CBC encryption with HMAC-SHA256 for secure agent-to-Mythic communication. This provides an additional layer of security beyond HTTPS. +Angerona supports optional AES-256-CBC encryption with HMAC-SHA256 for secure agent-to-Mythic communication. This provides an additional layer of security beyond HTTPS. #### How It Works @@ -572,7 +572,7 @@ Cazalla supports optional AES-256-CBC encryption with HMAC-SHA256 for secure age Encryption is enabled automatically when building with the `AESPSK` parameter in Mythic's UI: 1. Navigate to **Payloads** → **Create Payload** -2. Select **Cazalla** as the payload type +2. Select **Angerona** as the payload type 3. In the build parameters, configure **AESPSK**: - Set `crypto_type` to `aes256_hmac` - Mythic will automatically generate an `enc_key` @@ -611,7 +611,7 @@ This enables: ## 📊 Process Browser Integration -Cazalla fully integrates with Mythic's Process Browser feature, providing unified process management across multiple callbacks on the same host. Both `ps` and `kill` commands support Process Browser integration. +Angerona fully integrates with Mythic's Process Browser feature, providing unified process management across multiple callbacks on the same host. Both `ps` and `kill` commands support Process Browser integration. ### Features @@ -672,7 +672,7 @@ For more information, see the [Mythic Process Browser documentation](https://doc ## 🎨 Artifacts Support -Cazalla automatically reports artifacts created during command execution, allowing Mythic to track artifacts like process creation, file writes, and other system modifications. +Angerona automatically reports artifacts created during command execution, allowing Mythic to track artifacts like process creation, file writes, and other system modifications. ### Features @@ -855,7 +855,7 @@ For more information, see the [Mythic Artifacts documentation](https://docs.myth ## 🔑 Credentials Support -Cazalla supports reporting discovered credentials to Mythic's credential store, allowing you to track and manage credentials discovered during operations. +Angerona supports reporting discovered credentials to Mythic's credential store, allowing you to track and manage credentials discovered during operations. ### Features @@ -977,7 +977,7 @@ For more information, see the [Mythic Credentials documentation](https://docs.my ## 📥 File Downloads Support -Cazalla supports downloading files from the target to the Mythic server using chunked transfers, following [Mythic's File Downloads specification](https://docs.mythic-c2.net/customizing/hooking-features/download). +Angerona supports downloading files from the target to the Mythic server using chunked transfers, following [Mythic's File Downloads specification](https://docs.mythic-c2.net/customizing/hooking-features/download). ### Features @@ -1068,7 +1068,7 @@ For more information, see the [Mythic File Downloads documentation](https://docs ## 📤 File Uploads Support -Cazalla supports uploading files from the Mythic server to the target using chunked transfers, following [Mythic's File Upload specification](https://docs.mythic-c2.net/customizing/hooking-features/action-upload). +Angerona supports uploading files from the Mythic server to the target using chunked transfers, following [Mythic's File Upload specification](https://docs.mythic-c2.net/customizing/hooking-features/action-upload). ### Features @@ -1225,7 +1225,7 @@ For more information, see the [Mythic File Upload documentation](https://docs.my ## ⌨️ Keylogging Support -Cazalla supports capturing keystrokes from the target system and reporting them to Mythic's Keylogs feature, following [Mythic's Keylog specification](https://docs.mythic-c2.net/customizing/hooking-features/keylog). +Angerona supports capturing keystrokes from the target system and reporting them to Mythic's Keylogs feature, following [Mythic's Keylog specification](https://docs.mythic-c2.net/customizing/hooking-features/keylog). ### Features @@ -1354,7 +1354,7 @@ For more information, see the [Mythic Keylog documentation](https://docs.mythic- ## 🔐 Token Support -Cazalla supports Windows token manipulation and impersonation, following [Mythic's Token specification](https://docs.mythic-c2.net/customizing/hooking-features/tokens). +Angerona supports Windows token manipulation and impersonation, following [Mythic's Token specification](https://docs.mythic-c2.net/customizing/hooking-features/tokens). ### Features @@ -1369,7 +1369,7 @@ Cazalla supports Windows token manipulation and impersonation, following [Mythic ### How It Works -Cazalla implements token functionality following Mythic's token specification: +Angerona implements token functionality following Mythic's token specification: 1. **Token Listing** (`list_tokens`): - Enumerates all running processes @@ -1548,7 +1548,7 @@ For more information, see the [Mythic Tokens documentation](https://docs.mythic- ## 📊 Context Tracking -Cazalla supports **Context Tracking** to display dynamic callback context information (like current working directory and impersonation context) as tabs in the Mythic UI. This feature enhances the operator experience by providing immediate visibility into the agent's current state. +Angerona supports **Context Tracking** to display dynamic callback context information (like current working directory and impersonation context) as tabs in the Mythic UI. This feature enhances the operator experience by providing immediate visibility into the agent's current state. ### Overview @@ -1720,7 +1720,7 @@ For more information, see the [Mythic Context Tracking documentation](https://do ## 🛡️ OPSEC Checking -Cazalla includes comprehensive **OPSEC Checking** functionality that provides operational security warnings and blocking for commands based on their detection risks. This feature helps operators make informed decisions and prevents accidental OPSEC violations. +Angerona includes comprehensive **OPSEC Checking** functionality that provides operational security warnings and blocking for commands based on their detection risks. This feature helps operators make informed decisions and prevents accidental OPSEC violations. ### Overview @@ -1772,7 +1772,7 @@ The `opsec_post` function runs after task creation but before agent execution: | Command | Blocking Conditions | Bypass Role | |---------|---------------------|-------------| -| `shell` | Commands with safer Cazalla alternatives (`whoami`, `tasklist`, `powershell`, etc.) | `other_operator` | +| `shell` | Commands with safer Angerona alternatives (`whoami`, `tasklist`, `powershell`, etc.) | `other_operator` | | `steal_token` | Critical system processes (PID 4) | `other_operator` | | `kill` | Critical system processes (PID 0, 4, 8) | `other_operator` | | `keylog_start` | Always blocked (extremely detectable) | `lead` | @@ -1801,14 +1801,14 @@ The `opsec_post` function runs after task creation but before agent execution: ``` 🚨 OPSEC BLOCKED - Command Has Safer Alternative -This command contains operations that have safer built-in alternatives in Cazalla: +This command contains operations that have safer built-in alternatives in Angerona: - 🚨 whoami: Use Cazalla's 'whoami' command instead (no cmd.exe spawn) + 🚨 whoami: Use Angerona's 'whoami' command instead (no cmd.exe spawn) ⚠️ cmd.exe spawn: This command would spawn cmd.exe (highly detectable) 💡 SAFER ALTERNATIVES: - → Use: 'whoami' (Cazalla built-in, no cmd.exe) + → Use: 'whoami' (Angerona built-in, no cmd.exe) ⚠️ TO PROCEED: You need approval from another operator. This command is blocked to prevent accidental OPSEC violations. @@ -1854,8 +1854,8 @@ OPSEC checking is **intelligent and conditional**: ```python # Blocks if command contains: -- "whoami" → Use Cazalla's 'whoami' instead -- "tasklist" → Use Cazalla's 'ps' instead +- "whoami" → Use Angerona's 'whoami' instead +- "tasklist" → Use Angerona's 'ps' instead - "powershell" → Highly monitored, use alternatives # Warns if command contains: @@ -1931,7 +1931,7 @@ For more information, see the [Mythic OPSEC Checking documentation](https://docs ## 📊 Logging & Syslog -Cazalla includes a complete logging system that records all Mythic events and sends them to a central syslog server. +Angerona includes a complete logging system that records all Mythic events and sends them to a central syslog server. ### Features @@ -1946,7 +1946,7 @@ Cazalla includes a complete logging system that records all Mythic events and se 1. **Edit the configuration file:** ```bash - nano Payload_Type/cazalla/logger/syslog.conf + nano Payload_Type/angerona/logger/syslog.conf ``` 2. **Configure the syslog server IP:** @@ -1959,30 +1959,30 @@ Cazalla includes a complete logging system that records all Mythic events and se 3. **Rebuild and restart:** ```bash cd /opt/mythic - sudo ./mythic-cli build cazalla - sudo ./mythic-cli restart cazalla + sudo ./mythic-cli build angerona + sudo ./mythic-cli restart angerona ``` ### Verification ```bash # Verify logger is active -sudo docker logs cazalla | grep -i "syslog\|Logger initialized" +sudo docker logs angerona | grep -i "syslog\|Logger initialized" # View logs in real-time -sudo tail -f /var/log/cazalla.log +sudo tail -f /var/log/angerona.log ``` ### Log Locations -- **Syslog (host)**: `/var/log/cazalla.log` -- **Local logs (container)**: `/tmp/cazalla_mythic_YYYY-MM-DD.log` +- **Syslog (host)**: `/var/log/angerona.log` +- **Local logs (container)**: `/tmp/angerona_mythic_YYYY-MM-DD.log` ### Complete Documentation For more details on configuration, troubleshooting, and advanced usage, see: -- [Logger Documentation](Payload_Type/cazalla/logger/README.md) - Complete technical documentation -- [Agent Wiki - Logging](documentation-payload/Cazalla/logging.md) - User guide +- [Logger Documentation](Payload_Type/angerona/logger/README.md) - Complete technical documentation +- [Agent Wiki - Logging](documentation-payload/Angerona/logging.md) - User guide --- @@ -1991,10 +1991,10 @@ For more details on configuration, troubleshooting, and advanced usage, see: ### Project Structure ``` -Cazalla/ -├── agent_code/cazalla/ # C source code +Angerona/ +├── agent_code/angerona/ # C source code │ ├── main.c # Entry point -│ ├── cazalla.c/h # Main loop +│ ├── angerona.c/h # Main loop │ ├── comandos.c/h # Command handlers │ ├── paquete.c/h # Packet creation │ ├── transporte.c/h # HTTP transport (WinHTTP) @@ -2144,7 +2144,7 @@ grep DYNAMIC_PORTS_BIND_LOCALHOST_ONLY ~/Mythic/.env **Proxy times out:** - Verify agent is active and not sleeping -- Check translator logs: `sudo docker logs cazalla_translator` +- Check translator logs: `sudo docker logs angerona_translator` - Ensure `server_id` validation in `socks_manager.c` allows Mythic's IDs **Data not flowing:** @@ -2175,10 +2175,10 @@ apt-get update && apt-get install -y mingw-w64 **Processes not appearing in Process Browser:** - Verify `ps` command executed successfully (check callback output) -- Check translator logs: `sudo docker logs cazalla_translator | grep PROCESS_BROWSER` +- Check translator logs: `sudo docker logs angerona_translator | grep PROCESS_BROWSER` - Ensure `supported_ui_features = ["process_browser:list"]` is set in `ps.py` - Verify processes are being parsed correctly (translator should show "Parseados X procesos") -- Rebuild translator if changes were made: `sudo ./mythic-cli build cazalla` +- Rebuild translator if changes were made: `sudo ./mythic-cli build angerona` **Processes showing as "UNKNOWN - MISSING DATA":** - This usually indicates processes that couldn't be accessed (protected/system processes) @@ -2190,7 +2190,7 @@ apt-get update && apt-get install -y mingw-w64 **Encryption not working:** - Verify `AESPSK` parameter is configured in build parameters - Check build output for: `✓ Encryption ENABLED` -- Review translator logs for encryption/decryption errors: `sudo docker logs cazalla_translator | grep CRYPTO` +- Review translator logs for encryption/decryption errors: `sudo docker logs angerona_translator | grep CRYPTO` - Ensure encryption key is present in both agent and translator (auto-configured by Mythic) **"HMAC verification failed" errors:** @@ -2213,7 +2213,7 @@ apt-get update && apt-get install -y mingw-w64 ## 📄 License -Cazalla is licensed under the **BSD 3-Clause License**. See [LICENSE.md](LICENSE.md) for details. +Angerona is licensed under the **BSD 3-Clause License**. See [LICENSE.md](LICENSE.md) for details. --- diff --git a/agent_icons/angerona.svg b/agent_icons/angerona.svg new file mode 100644 index 0000000..3fc360e --- /dev/null +++ b/agent_icons/angerona.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/agent_icons/angerona_dark.svg b/agent_icons/angerona_dark.svg new file mode 100644 index 0000000..0f0ce77 --- /dev/null +++ b/agent_icons/angerona_dark.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/agent_icons/cazalla.svg b/agent_icons/cazalla.svg deleted file mode 100644 index 7647fb8..0000000 --- a/agent_icons/cazalla.svg +++ /dev/null @@ -1,266 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/documentation-payload/Cazalla/README.md b/documentation-payload/Angerona/README.md similarity index 50% rename from documentation-payload/Cazalla/README.md rename to documentation-payload/Angerona/README.md index 319dfa9..a836a81 100644 --- a/documentation-payload/Cazalla/README.md +++ b/documentation-payload/Angerona/README.md @@ -1,6 +1,6 @@ -# Documentación de Cazalla +# Documentación de Angerona -Esta carpeta contiene la documentación del agente Cazalla que se sirve automáticamente desde el contenedor de documentación de Mythic. +Esta carpeta contiene la documentación del agente Angerona que se sirve automáticamente desde el contenedor de documentación de Mythic. ## Estructura @@ -10,20 +10,20 @@ Esta carpeta contiene la documentación del agente Cazalla que se sirve automát ## Instalación -Esta documentación se instala automáticamente cuando instalas el agente Cazalla en Mythic: +Esta documentación se instala automáticamente cuando instalas el agente Angerona en Mythic: ```bash cd ~/Mythic -./mythic-cli install github https://github.com/tu-org/Cazalla +./mythic-cli install github https://github.com/tu-org/Angerona # o -./mythic-cli install folder /path/to/Cazalla +./mythic-cli install folder /path/to/Angerona ``` ## Acceso Una vez instalado, la documentación estará disponible en: -- `http://tu-servidor:7443/docs/agents/Cazalla` -- `http://tu-servidor:7443/docs/agents/Cazalla/commands/` +- `http://tu-servidor:7443/docs/agents/Angerona` +- `http://tu-servidor:7443/docs/agents/Angerona/commands/` --- diff --git a/documentation-payload/Cazalla/_index.md b/documentation-payload/Angerona/_index.md similarity index 88% rename from documentation-payload/Cazalla/_index.md rename to documentation-payload/Angerona/_index.md index 2d31dd7..10fc0e4 100644 --- a/documentation-payload/Cazalla/_index.md +++ b/documentation-payload/Angerona/_index.md @@ -1,16 +1,16 @@ +++ -title = "Cazalla" +title = "Angerona" chapter = true weight = 100 +++ -**Cazalla** is a lightweight Windows implant written in C, designed for the [Mythic C2 Framework](https://github.com/its-a-feature/Mythic). +**Angerona** is a lightweight Windows implant written in C, designed for the [Mythic C2 Framework](https://github.com/its-a-feature/Mythic). ## Overview -Cazalla provides essential post-exploitation capabilities including: +Angerona provides essential post-exploitation capabilities including: - **File System Operations** - Navigate, read, write, and manage files - **Process Management** - Enumerate, terminate, and interact with processes @@ -64,7 +64,7 @@ Cazalla provides essential post-exploitation capabilities including: ## Key Features ### Process Browser Integration -Cazalla automatically updates Mythic's Process Browser, allowing you to interact with processes directly from the UI. +Angerona automatically updates Mythic's Process Browser, allowing you to interact with processes directly from the UI. ### File Browser Integration Seamlessly browse the target's file system through Mythic's File Browser. diff --git a/documentation-payload/Cazalla/commands.md b/documentation-payload/Angerona/commands.md similarity index 99% rename from documentation-payload/Cazalla/commands.md rename to documentation-payload/Angerona/commands.md index 5c43c9b..e59260c 100644 --- a/documentation-payload/Cazalla/commands.md +++ b/documentation-payload/Angerona/commands.md @@ -5,9 +5,9 @@ weight = 10 pre = "4. " +++ -# Cazalla Command Reference +# Angerona Command Reference -Complete documentation for all Cazalla agent commands. +Complete documentation for all Angerona agent commands. ## 📋 Table of Contents @@ -768,7 +768,7 @@ shell ipconfig /all - The command is executed in a non-interactive shell and the output is captured and returned - HIGH OPSEC RISK: This command spawns cmd.exe which is heavily monitored by EDR/XDR solutions - Command execution and command-line arguments are logged by security tools -- Consider using built-in Cazalla commands (`ps`, `ls`, `cat`, etc.) instead when possible, as they provide better OPSEC +- Consider using built-in Angerona commands (`ps`, `ls`, `cat`, etc.) instead when possible, as they provide better OPSEC - Always requires approval from another operator before execution **Output:** @@ -784,7 +784,7 @@ desktop-abc\administrator - **HIGH OPSEC RISK**: Spawns cmd.exe which is heavily monitored - Command execution and arguments are logged by EDR/XDR solutions - Always requires operator approval (OPSEC pre-check blocks execution) -- Consider using built-in Cazalla commands instead when possible +- Consider using built-in Angerona commands instead when possible **Related:** [OPSEC Checking](opsec.md) diff --git a/documentation-payload/Cazalla/commands/README.md b/documentation-payload/Angerona/commands/README.md similarity index 91% rename from documentation-payload/Cazalla/commands/README.md rename to documentation-payload/Angerona/commands/README.md index f421e74..80f65ed 100644 --- a/documentation-payload/Cazalla/commands/README.md +++ b/documentation-payload/Angerona/commands/README.md @@ -1,6 +1,6 @@ -# Cazalla Commands +# Angerona Commands -Complete documentation for all Cazalla agent commands, organized by category. +Complete documentation for all Angerona agent commands, organized by category. ## File System Commands @@ -57,5 +57,5 @@ Complete documentation for all Cazalla agent commands, organized by category. --- -[Back to Cazalla Documentation](../../../README.md) +[Back to Angerona Documentation](../../../README.md) diff --git a/documentation-payload/Cazalla/commands/browser_dump.md b/documentation-payload/Angerona/commands/browser_dump.md similarity index 100% rename from documentation-payload/Cazalla/commands/browser_dump.md rename to documentation-payload/Angerona/commands/browser_dump.md diff --git a/documentation-payload/Cazalla/commands/browser_info.md b/documentation-payload/Angerona/commands/browser_info.md similarity index 100% rename from documentation-payload/Cazalla/commands/browser_info.md rename to documentation-payload/Angerona/commands/browser_info.md diff --git a/documentation-payload/Cazalla/commands/cat.md b/documentation-payload/Angerona/commands/cat.md similarity index 100% rename from documentation-payload/Cazalla/commands/cat.md rename to documentation-payload/Angerona/commands/cat.md diff --git a/documentation-payload/Cazalla/commands/cd.md b/documentation-payload/Angerona/commands/cd.md similarity index 100% rename from documentation-payload/Cazalla/commands/cd.md rename to documentation-payload/Angerona/commands/cd.md diff --git a/documentation-payload/Cazalla/commands/cp.md b/documentation-payload/Angerona/commands/cp.md similarity index 100% rename from documentation-payload/Cazalla/commands/cp.md rename to documentation-payload/Angerona/commands/cp.md diff --git a/documentation-payload/Cazalla/commands/download.md b/documentation-payload/Angerona/commands/download.md similarity index 100% rename from documentation-payload/Cazalla/commands/download.md rename to documentation-payload/Angerona/commands/download.md diff --git a/documentation-payload/Cazalla/commands/exit.md b/documentation-payload/Angerona/commands/exit.md similarity index 100% rename from documentation-payload/Cazalla/commands/exit.md rename to documentation-payload/Angerona/commands/exit.md diff --git a/documentation-payload/Cazalla/commands/inline_execute.md b/documentation-payload/Angerona/commands/inline_execute.md similarity index 100% rename from documentation-payload/Cazalla/commands/inline_execute.md rename to documentation-payload/Angerona/commands/inline_execute.md diff --git a/documentation-payload/Cazalla/commands/inline_execute_assembly.md b/documentation-payload/Angerona/commands/inline_execute_assembly.md similarity index 100% rename from documentation-payload/Cazalla/commands/inline_execute_assembly.md rename to documentation-payload/Angerona/commands/inline_execute_assembly.md diff --git a/documentation-payload/Cazalla/commands/keylog_start.md b/documentation-payload/Angerona/commands/keylog_start.md similarity index 100% rename from documentation-payload/Cazalla/commands/keylog_start.md rename to documentation-payload/Angerona/commands/keylog_start.md diff --git a/documentation-payload/Cazalla/commands/keylog_stop.md b/documentation-payload/Angerona/commands/keylog_stop.md similarity index 100% rename from documentation-payload/Cazalla/commands/keylog_stop.md rename to documentation-payload/Angerona/commands/keylog_stop.md diff --git a/documentation-payload/Cazalla/commands/kill.md b/documentation-payload/Angerona/commands/kill.md similarity index 100% rename from documentation-payload/Cazalla/commands/kill.md rename to documentation-payload/Angerona/commands/kill.md diff --git a/documentation-payload/Cazalla/commands/list_tokens.md b/documentation-payload/Angerona/commands/list_tokens.md similarity index 100% rename from documentation-payload/Cazalla/commands/list_tokens.md rename to documentation-payload/Angerona/commands/list_tokens.md diff --git a/documentation-payload/Cazalla/commands/ls.md b/documentation-payload/Angerona/commands/ls.md similarity index 100% rename from documentation-payload/Cazalla/commands/ls.md rename to documentation-payload/Angerona/commands/ls.md diff --git a/documentation-payload/Cazalla/commands/make_token.md b/documentation-payload/Angerona/commands/make_token.md similarity index 100% rename from documentation-payload/Cazalla/commands/make_token.md rename to documentation-payload/Angerona/commands/make_token.md diff --git a/documentation-payload/Cazalla/commands/mkdir.md b/documentation-payload/Angerona/commands/mkdir.md similarity index 100% rename from documentation-payload/Cazalla/commands/mkdir.md rename to documentation-payload/Angerona/commands/mkdir.md diff --git a/documentation-payload/Cazalla/commands/ps.md b/documentation-payload/Angerona/commands/ps.md similarity index 100% rename from documentation-payload/Cazalla/commands/ps.md rename to documentation-payload/Angerona/commands/ps.md diff --git a/documentation-payload/Cazalla/commands/pwd.md b/documentation-payload/Angerona/commands/pwd.md similarity index 100% rename from documentation-payload/Cazalla/commands/pwd.md rename to documentation-payload/Angerona/commands/pwd.md diff --git a/documentation-payload/Cazalla/commands/rev2self.md b/documentation-payload/Angerona/commands/rev2self.md similarity index 100% rename from documentation-payload/Cazalla/commands/rev2self.md rename to documentation-payload/Angerona/commands/rev2self.md diff --git a/documentation-payload/Cazalla/commands/rm.md b/documentation-payload/Angerona/commands/rm.md similarity index 100% rename from documentation-payload/Cazalla/commands/rm.md rename to documentation-payload/Angerona/commands/rm.md diff --git a/documentation-payload/Cazalla/commands/rpfwd.md b/documentation-payload/Angerona/commands/rpfwd.md similarity index 100% rename from documentation-payload/Cazalla/commands/rpfwd.md rename to documentation-payload/Angerona/commands/rpfwd.md diff --git a/documentation-payload/Cazalla/commands/samdump.md b/documentation-payload/Angerona/commands/samdump.md similarity index 100% rename from documentation-payload/Cazalla/commands/samdump.md rename to documentation-payload/Angerona/commands/samdump.md diff --git a/documentation-payload/Cazalla/commands/screenshot.md b/documentation-payload/Angerona/commands/screenshot.md similarity index 100% rename from documentation-payload/Cazalla/commands/screenshot.md rename to documentation-payload/Angerona/commands/screenshot.md diff --git a/documentation-payload/Cazalla/commands/shell.md b/documentation-payload/Angerona/commands/shell.md similarity index 89% rename from documentation-payload/Cazalla/commands/shell.md rename to documentation-payload/Angerona/commands/shell.md index 14c9609..15732cc 100644 --- a/documentation-payload/Cazalla/commands/shell.md +++ b/documentation-payload/Angerona/commands/shell.md @@ -29,7 +29,7 @@ shell ipconfig /all - The command is executed in a non-interactive shell and the output is captured and returned - HIGH OPSEC RISK: This command spawns cmd.exe which is heavily monitored by EDR/XDR solutions - Command execution and command-line arguments are logged by security tools -- Consider using built-in Cazalla commands (`ps`, `ls`, `cat`, etc.) instead when possible, as they provide better OPSEC +- Consider using built-in Angerona commands (`ps`, `ls`, `cat`, etc.) instead when possible, as they provide better OPSEC - Always requires approval from another operator before execution ## Output @@ -47,7 +47,7 @@ desktop-abc\administrator - **HIGH OPSEC RISK**: Spawns cmd.exe which is heavily monitored - Command execution and arguments are logged by EDR/XDR solutions - Always requires operator approval (OPSEC pre-check blocks execution) -- Consider using built-in Cazalla commands instead when possible +- Consider using built-in Angerona commands instead when possible ## Related diff --git a/documentation-payload/Cazalla/commands/sleep.md b/documentation-payload/Angerona/commands/sleep.md similarity index 100% rename from documentation-payload/Cazalla/commands/sleep.md rename to documentation-payload/Angerona/commands/sleep.md diff --git a/documentation-payload/Cazalla/commands/socks.md b/documentation-payload/Angerona/commands/socks.md similarity index 100% rename from documentation-payload/Cazalla/commands/socks.md rename to documentation-payload/Angerona/commands/socks.md diff --git a/documentation-payload/Cazalla/commands/steal_token.md b/documentation-payload/Angerona/commands/steal_token.md similarity index 100% rename from documentation-payload/Cazalla/commands/steal_token.md rename to documentation-payload/Angerona/commands/steal_token.md diff --git a/documentation-payload/Cazalla/commands/upload.md b/documentation-payload/Angerona/commands/upload.md similarity index 100% rename from documentation-payload/Cazalla/commands/upload.md rename to documentation-payload/Angerona/commands/upload.md diff --git a/documentation-payload/Cazalla/commands/whoami.md b/documentation-payload/Angerona/commands/whoami.md similarity index 100% rename from documentation-payload/Cazalla/commands/whoami.md rename to documentation-payload/Angerona/commands/whoami.md diff --git a/documentation-payload/Cazalla/developing-commands.md b/documentation-payload/Angerona/developing-commands.md similarity index 95% rename from documentation-payload/Cazalla/developing-commands.md rename to documentation-payload/Angerona/developing-commands.md index 58040d2..5211ef0 100644 --- a/documentation-payload/Cazalla/developing-commands.md +++ b/documentation-payload/Angerona/developing-commands.md @@ -5,13 +5,13 @@ weight = 20 pre = "3. " +++ -# Developing New Commands for Cazalla +# Developing New Commands for Angerona -This guide provides a step-by-step walkthrough for adding new commands to the Cazalla agent. Understanding this process is essential for extending Cazalla's capabilities. +This guide provides a step-by-step walkthrough for adding new commands to the Angerona agent. Understanding this process is essential for extending Angerona's capabilities. ## 📋 Overview -Adding a new command to Cazalla requires coordination across multiple components: +Adding a new command to Angerona requires coordination across multiple components: 1. **Python Command Definition** - Defines the command interface in Mythic 2. **Translator Mapping** - Maps command names to hex codes for agent communication @@ -45,7 +45,7 @@ graph LR ### Step 1: Create Python Command File -Create a new Python file in `Payload_Type/cazalla/cazalla/agent_functions/` named after your command (e.g., `mycommand.py`). +Create a new Python file in `Payload_Type/angerona/angerona/agent_functions/` named after your command (e.g., `mycommand.py`). #### 1.1 Command Arguments Class @@ -156,7 +156,7 @@ class MyCommandCommand(CommandBase): ### Step 2: Add Command to Translator -Edit `Payload_Type/cazalla/translator/commands_from_c2.py` and add your command to the `commands` dictionary: +Edit `Payload_Type/angerona/translator/commands_from_c2.py` and add your command to the `commands` dictionary: ```python commands = { @@ -184,7 +184,7 @@ commands = { #### 3.1 Define Command Constant -Edit `Payload_Type/cazalla/cazalla/agent_code/cazalla/comandos.h` and add: +Edit `Payload_Type/angerona/angerona/agent_code/angerona/comandos.h` and add: ```c #define MYCOMMAND_CMD 0x99 // Must match hex_code from translator @@ -195,7 +195,7 @@ Edit `Payload_Type/cazalla/cazalla/agent_code/cazalla/comandos.h` and add: Create or edit the appropriate C file (e.g., `SistemadeFicheros.c` for file operations, or create a new file): ```c -#include "cazalla.h" +#include "angerona.h" #include "comandos.h" #include "paquete.h" @@ -263,7 +263,7 @@ void MyCommandHandler(PAnalizador analizadorTarea) { ### Step 4: Register Handler in Command Dispatcher -Edit `Payload_Type/cazalla/cazalla/agent_code/cazalla/comandos.c` and add your command to the dispatch chain in `handleGetTasking()`: +Edit `Payload_Type/angerona/angerona/agent_code/angerona/comandos.c` and add your command to the dispatch chain in `handleGetTasking()`: ```c #ifdef ENABLE_MYCOMMAND_CMD @@ -284,7 +284,7 @@ Edit `Payload_Type/cazalla/cazalla/agent_code/cazalla/comandos.c` and add your c ### Step 5: Add to Builder Mapping -Edit `Payload_Type/cazalla/cazalla/agent_functions/builder.py` and add your command to the `command_to_define` dictionary (around line 209): +Edit `Payload_Type/angerona/angerona/agent_functions/builder.py` and add your command to the `command_to_define` dictionary (around line 209): ```python command_to_define = { @@ -405,7 +405,7 @@ In `comandos.h`: Create `ping.c`: ```c -#include "cazalla.h" +#include "angerona.h" #include "comandos.h" #include "paquete.h" @@ -542,18 +542,18 @@ The translator will automatically convert file listings to File Browser format. ### 1. Restart Mythic Agent Container -After adding your command, restart the Cazalla container: +After adding your command, restart the Angerona container: ```bash cd ~/Mythic -./mythic-cli restart cazalla +./mythic-cli restart angerona ``` ### 2. Verify Command Appears 1. Open Mythic UI 2. Navigate to Payloads → Create Payload -3. Select Cazalla +3. Select Angerona 4. Check that your command appears in the command selection list ### 3. Build Test Payload @@ -606,7 +606,7 @@ cd ~/Mythic ## 📚 Reference: Command Hex Codes -Current hex code allocations in Cazalla: +Current hex code allocations in Angerona: - `0x00`: GET_TASKING - `0x01`: POST_RESPONSE diff --git a/documentation-payload/Cazalla/examples.md b/documentation-payload/Angerona/examples.md similarity index 99% rename from documentation-payload/Cazalla/examples.md rename to documentation-payload/Angerona/examples.md index 6a28a2d..569bc5e 100644 --- a/documentation-payload/Cazalla/examples.md +++ b/documentation-payload/Angerona/examples.md @@ -5,9 +5,9 @@ weight = 10 pre = "5. " +++ -# Cazalla Usage Examples +# Angerona Usage Examples -This document provides practical examples and use cases for using Cazalla agent in real-world scenarios. +This document provides practical examples and use cases for using Angerona agent in real-world scenarios. ## 📋 Table of Contents diff --git a/documentation-payload/Cazalla/features.md b/documentation-payload/Angerona/features.md similarity index 92% rename from documentation-payload/Cazalla/features.md rename to documentation-payload/Angerona/features.md index da03aa6..42326ec 100644 --- a/documentation-payload/Cazalla/features.md +++ b/documentation-payload/Angerona/features.md @@ -5,9 +5,9 @@ weight = 10 pre = "2. " +++ -# Cazalla Features Overview +# Angerona Features Overview -This document provides detailed explanations of Cazalla's key features and capabilities. +This document provides detailed explanations of Angerona's key features and capabilities. ## 📋 Table of Contents @@ -29,7 +29,7 @@ This document provides detailed explanations of Cazalla's key features and capab ## Process Browser Integration -Cazalla fully integrates with Mythic's Process Browser feature, providing unified process management across multiple callbacks on the same host. +Angerona fully integrates with Mythic's Process Browser feature, providing unified process management across multiple callbacks on the same host. ### Features @@ -68,7 +68,7 @@ Cazalla fully integrates with Mythic's Process Browser feature, providing unifie ## File Browser Integration -Cazalla seamlessly integrates with Mythic's File Browser, allowing visual file system navigation and operations. +Angerona seamlessly integrates with Mythic's File Browser, allowing visual file system navigation and operations. ### Features @@ -105,7 +105,7 @@ Cazalla seamlessly integrates with Mythic's File Browser, allowing visual file s ## Context Tracking -Cazalla automatically tracks and displays dynamic callback context information in the Mythic UI. +Angerona automatically tracks and displays dynamic callback context information in the Mythic UI. ### Features @@ -139,7 +139,7 @@ Cazalla automatically tracks and displays dynamic callback context information i ## Artifacts Support -Cazalla automatically reports artifacts created during command execution, allowing Mythic to track forensic evidence. +Angerona automatically reports artifacts created during command execution, allowing Mythic to track forensic evidence. ### Features @@ -176,7 +176,7 @@ Cazalla automatically reports artifacts created during command execution, allowi ## Credentials Support -Cazalla supports reporting discovered credentials to Mythic's credential store. +Angerona supports reporting discovered credentials to Mythic's credential store. ### Features @@ -207,7 +207,7 @@ The `cat` command automatically detects and reports credentials from file conten ## SOCKS Proxy Support -Cazalla includes full SOCKS5 proxy support, allowing you to route traffic through the agent to access internal network resources. +Angerona includes full SOCKS5 proxy support, allowing you to route traffic through the agent to access internal network resources. ### Features @@ -250,7 +250,7 @@ proxychains nmap -sT 192.168.1.0/24 ## Reverse Port Forwarding (RPFWD) Support -Cazalla includes reverse port forwarding (RPFWD) support, allowing you to tunnel incoming connections from the agent to a remote destination through Mythic. +Angerona includes reverse port forwarding (RPFWD) support, allowing you to tunnel incoming connections from the agent to a remote destination through Mythic. ### Features @@ -287,7 +287,7 @@ curl http://:8080 ## Token Support -Cazalla supports Windows token manipulation and impersonation, following Mythic's Token specification. +Angerona supports Windows token manipulation and impersonation, following Mythic's Token specification. ### Features @@ -319,7 +319,7 @@ Cazalla supports Windows token manipulation and impersonation, following Mythic' ## Keylogging Support -Cazalla supports capturing keystrokes from the target system and reporting them to Mythic's Keylogs feature. +Angerona supports capturing keystrokes from the target system and reporting them to Mythic's Keylogs feature. ### Features @@ -355,7 +355,7 @@ The keylogger works with **any Windows application** because it: ## File Downloads Support -Cazalla supports downloading files from the target to the Mythic server using chunked transfers. +Angerona supports downloading files from the target to the Mythic server using chunked transfers. ### Features @@ -383,7 +383,7 @@ Cazalla supports downloading files from the target to the Mythic server using ch ## File Uploads Support -Cazalla supports uploading files from the Mythic server to the target using chunked transfers. +Angerona supports uploading files from the Mythic server to the target using chunked transfers. ### Features @@ -413,7 +413,7 @@ Cazalla supports uploading files from the Mythic server to the target using chun ## System Information Gathering -Cazalla includes commands for gathering system information with low detection risk. +Angerona includes commands for gathering system information with low detection risk. ### Features @@ -553,7 +553,7 @@ For detailed information, see [samdump command documentation](commands/samdump.m ## OPSEC Checking -Cazalla includes comprehensive OPSEC Checking functionality that provides operational security warnings and blocking for commands based on their detection risks. +Angerona includes comprehensive OPSEC Checking functionality that provides operational security warnings and blocking for commands based on their detection risks. ### Features diff --git a/documentation-payload/Cazalla/getting-started.md b/documentation-payload/Angerona/getting-started.md similarity index 90% rename from documentation-payload/Cazalla/getting-started.md rename to documentation-payload/Angerona/getting-started.md index 35cf089..df8b7d8 100644 --- a/documentation-payload/Cazalla/getting-started.md +++ b/documentation-payload/Angerona/getting-started.md @@ -5,9 +5,9 @@ weight = 10 pre = "1. " +++ -# Getting Started with Cazalla +# Getting Started with Angerona -This guide will help you install, configure, and deploy your first Cazalla agent. +This guide will help you install, configure, and deploy your first Angerona agent. ## 📋 Prerequisites @@ -18,34 +18,34 @@ This guide will help you install, configure, and deploy your first Cazalla agent ## 🚀 Installation -### Step 1: Install Cazalla on Mythic +### Step 1: Install Angerona on Mythic #### Option A: Install from GitHub (if available) ```bash cd ~/Mythic -./mythic-cli install github https://github.com//Cazalla +./mythic-cli install github https://github.com//Angerona ``` #### Option B: Install from Local Directory ```bash cd ~/Mythic -./mythic-cli install folder /path/to/Cazalla +./mythic-cli install folder /path/to/Angerona ``` -After installation, Mythic will build the Cazalla container automatically. +After installation, Mythic will build the Angerona container automatically. ### Step 2: Verify Installation -Check that Cazalla is installed: +Check that Angerona is installed: ```bash cd ~/Mythic ./mythic-cli list ``` -You should see `cazalla` in the list of installed payload types. +You should see `angerona` in the list of installed payload types. ### Step 3: Build Your First Payload @@ -55,7 +55,7 @@ You should see `cazalla` in the list of installed payload types. 2. **Create a New Payload** - Click on **Payloads** in the left sidebar - Click **Create Payload** button - - Select **Cazalla** as the payload type + - Select **Angerona** as the payload type 3. **Configure Build Parameters** - **C2 Profile**: Select your configured C2 profile (HTTP, HTTPS, etc.) @@ -92,7 +92,7 @@ Transfer the compiled `.exe` file to your Windows target using any method: On the Windows target, execute the agent: ```cmd -C:\path\to\cazalla.exe +C:\path\to\angerona.exe ``` The agent will start beaconing to your Mythic server immediately. @@ -248,7 +248,7 @@ The Mythic UI automatically displays: ### OPSEC Checking -Cazalla includes built-in OPSEC checking for high-risk operations: +Angerona includes built-in OPSEC checking for high-risk operations: - **Pre-execution blocking**: Commands like `steal_token`, `shell`, `keylog_start` require approval - **Post-execution warnings**: Artifacts are automatically tracked @@ -277,7 +277,7 @@ See [OPSEC Guide](opsec.md) for detailed information. - Review what the agent is creating/accessing 4. **Use Built-in Commands** - - Prefer Cazalla commands (`ps`, `ls`, `cat`) over `shell` when possible + - Prefer Angerona commands (`ps`, `ls`, `cat`) over `shell` when possible - Built-in commands have better OPSEC 5. **Review OPSEC Warnings** @@ -299,14 +299,14 @@ See [OPSEC Guide](opsec.md) for detailed information. - Review C2 profile logs 3. **Check Agent Execution** - - Verify agent is running: `tasklist | findstr cazalla` + - Verify agent is running: `tasklist | findstr angerona` - Check for error messages in console - Review Windows Event Logs 4. **Check Mythic Logs** ```bash sudo docker logs mythic_server - sudo docker logs cazalla_translator + sudo docker logs angerona_translator ``` ### Commands Not Working @@ -332,13 +332,13 @@ See [OPSEC Guide](opsec.md) for detailed information. 1. **Check Docker** ```bash sudo docker ps - sudo docker logs cazalla_translator + sudo docker logs angerona_translator ``` 2. **Rebuild Container** ```bash cd ~/Mythic - sudo ./mythic-cli build cazalla + sudo ./mythic-cli build angerona ``` 3. **Check Build Parameters** @@ -360,9 +360,9 @@ Now that you have a working agent: - [Mythic Documentation](https://docs.mythic-c2.net/) - [Mythic Process Browser](https://docs.mythic-c2.net/customizing/hooking-features/process_list) -- [Cazalla Main README](../README.md) +- [Angerona Main README](../README.md) --- -**Ready to use Cazalla?** Start with the [Commands Reference](commands.md) to learn all available commands! +**Ready to use Angerona?** Start with the [Commands Reference](commands.md) to learn all available commands! diff --git a/documentation-payload/Cazalla/logging.md b/documentation-payload/Angerona/logging.md similarity index 73% rename from documentation-payload/Cazalla/logging.md rename to documentation-payload/Angerona/logging.md index a1a8e7d..e4a4912 100644 --- a/documentation-payload/Cazalla/logging.md +++ b/documentation-payload/Angerona/logging.md @@ -7,11 +7,11 @@ pre = "7. " # 📊 Logging & Syslog -Cazalla includes a complete logging system that records all Mythic events and sends them to a central syslog server for analysis and auditing. +Angerona includes a complete logging system that records all Mythic events and sends them to a central syslog server for analysis and auditing. ## 🎯 Description -Cazalla's logging system: +Angerona's logging system: - ✅ **Logs ALL events** from Mythic automatically - ✅ **Does not modify the agent** (avoids detections) @@ -43,7 +43,7 @@ The logger is configured via a configuration file. **You don't need to modify do 1. **Edit the configuration file:** ```bash - nano Payload_Type/cazalla/logger/syslog.conf + nano Payload_Type/angerona/logger/syslog.conf ``` 2. **Configure the syslog server IP:** @@ -64,8 +64,8 @@ The logger is configured via a configuration file. **You don't need to modify do 3. **Rebuild and restart the container:** ```bash cd /opt/mythic - sudo ./mythic-cli build cazalla - sudo ./mythic-cli restart cazalla + sudo ./mythic-cli build angerona + sudo ./mythic-cli restart angerona ``` ### Step 2: Configure rsyslog on the Host (Optional) @@ -83,12 +83,12 @@ If you want to receive logs on the same server where Mythic runs: sudo sed -i 's/#input(type="imudp" port="514")/input(type="imudp" port="514")/' /etc/rsyslog.conf ``` -3. **Create rule for Cazalla** in `/etc/rsyslog.d/50-cazalla.conf`: +3. **Create rule for Angerona** in `/etc/rsyslog.d/50-angerona.conf`: ```bash - sudo bash -c 'cat > /etc/rsyslog.d/50-cazalla.conf << EOF - # Logs from Cazalla Mythic agent + sudo bash -c 'cat > /etc/rsyslog.d/50-angerona.conf << EOF + # Logs from Angerona Mythic agent # Filter by facility LOCAL0 (16) - if \$syslogfacility-text == "local0" then /var/log/cazalla.log + if \$syslogfacility-text == "local0" then /var/log/angerona.log & stop EOF ' @@ -112,34 +112,34 @@ If you want to receive logs on the same server where Mythic runs: ```bash # View container logs -sudo docker logs cazalla | grep -i "syslog\|Logger initialized" +sudo docker logs angerona | grep -i "syslog\|Logger initialized" # You should see: -# INFO:cazalla_logger:Syslog client initialized: 10.8.20.50:514 (facility=16) -# INFO:cazalla_logger:Logger initialized: cazalla_logger +# INFO:angerona_logger:Syslog client initialized: 10.8.20.50:514 (facility=16) +# INFO:angerona_logger:Logger initialized: angerona_logger ``` ### View Logs in Real-Time ```bash # View logs in syslog (host) -sudo tail -f /var/log/cazalla.log +sudo tail -f /var/log/angerona.log # View local logs (inside container) -sudo docker exec cazalla tail -f /tmp/cazalla_mythic_$(date +%Y-%m-%d).log +sudo docker exec angerona tail -f /tmp/angerona_mythic_$(date +%Y-%m-%d).log ``` ### View Specific Events ```bash # View only tasks -sudo tail -100 /var/log/cazalla.log | grep '"event_type": "TASK"' +sudo tail -100 /var/log/angerona.log | grep '"event_type": "TASK"' # View only responses -sudo tail -100 /var/log/cazalla.log | grep '"event_type": "RESPONSE"' +sudo tail -100 /var/log/angerona.log | grep '"event_type": "RESPONSE"' # Count events by type -sudo tail -1000 /var/log/cazalla.log | grep -o '"event_type": "[^"]*"' | sort | uniq -c +sudo tail -1000 /var/log/angerona.log | grep -o '"event_type": "[^"]*"' | sort | uniq -c ``` ## 📝 Log Format @@ -169,11 +169,11 @@ Logs are saved in structured JSON format for easy parsing: ### Log Locations -- **Syslog (host)**: `/var/log/cazalla.log` -- **Local logs (container)**: `/tmp/cazalla_mythic_YYYY-MM-DD.log` +- **Syslog (host)**: `/var/log/angerona.log` +- **Local logs (container)**: `/tmp/angerona_mythic_YYYY-MM-DD.log` - One file per day - No rotation (all files are kept) - - Format: `cazalla_mythic_2025-11-17.log` + - Format: `angerona_mythic_2025-11-17.log` ## 🔍 Usage Examples @@ -181,28 +181,28 @@ Logs are saved in structured JSON format for easy parsing: ```bash # Search for all 'whoami' executions -sudo grep -i "whoami" /var/log/cazalla.log | grep '"event_type": "TASK"' +sudo grep -i "whoami" /var/log/angerona.log | grep '"event_type": "TASK"' ``` ### View Operator Activity ```bash # View all events from a user -sudo grep '"username": "mythic_admin"' /var/log/cazalla.log +sudo grep '"username": "mythic_admin"' /var/log/angerona.log ``` ### View Captured Credentials ```bash # View credential events -sudo grep '"event_type": "CREDENTIAL"' /var/log/cazalla.log +sudo grep '"event_type": "CREDENTIAL"' /var/log/angerona.log ``` ### Analyze Generated Artifacts ```bash # View all artifacts (detected IOCs) -sudo grep '"event_type": "ARTIFACT"' /var/log/cazalla.log +sudo grep '"event_type": "ARTIFACT"' /var/log/angerona.log ``` ## 🛠️ Troubleshooting @@ -211,15 +211,15 @@ sudo grep '"event_type": "ARTIFACT"' /var/log/cazalla.log **Solution:** 1. Verify the logger is imported in `main.py` -2. Rebuild the container: `sudo ./mythic-cli build cazalla` -3. Restart: `sudo ./mythic-cli restart cazalla` +2. Rebuild the container: `sudo ./mythic-cli build angerona` +3. Restart: `sudo ./mythic-cli restart angerona` ### Don't See "Syslog client initialized" **Solution:** 1. Verify `SYSLOG_SERVER` has a value in `syslog.conf`: ```bash - sudo docker exec cazalla cat /Mythic/logger/syslog.conf | grep SYSLOG_SERVER + sudo docker exec angerona cat /Mythic/logger/syslog.conf | grep SYSLOG_SERVER ``` 2. Rebuild the container if you just edited the file @@ -228,7 +228,7 @@ sudo grep '"event_type": "ARTIFACT"' /var/log/cazalla.log **Solution:** 1. Verify rsyslog is listening: `sudo netstat -ulnp | grep 514` 2. Verify connectivity from container to host -3. Verify rsyslog configuration: `sudo cat /etc/rsyslog.d/50-cazalla.conf` +3. Verify rsyslog configuration: `sudo cat /etc/rsyslog.d/50-angerona.conf` 4. Verify firewall: `sudo iptables -L -n | grep 514` ### Logs Are Empty @@ -268,11 +268,11 @@ The JSON formatted logs can be easily integrated with SIEMs such as: - Graylog - QRadar -Simply configure the SIEM to read from `/var/log/cazalla.log` or from the central syslog server. +Simply configure the SIEM to read from `/var/log/angerona.log` or from the central syslog server. ## 🔗 References -- [Logger Technical Documentation](../Payload_Type/cazalla/logger/README.md) +- [Logger Technical Documentation](../Payload_Type/angerona/logger/README.md) - [Mythic Logging Documentation](https://docs.mythic-c2.net/customizing/3.-consuming-containers/logging) - [RFC 3164 - The BSD syslog Protocol](https://tools.ietf.org/html/rfc3164) diff --git a/documentation-payload/Cazalla/opsec.md b/documentation-payload/Angerona/opsec.md similarity index 95% rename from documentation-payload/Cazalla/opsec.md rename to documentation-payload/Angerona/opsec.md index 7b71b8a..59333fb 100644 --- a/documentation-payload/Cazalla/opsec.md +++ b/documentation-payload/Angerona/opsec.md @@ -5,9 +5,9 @@ weight = 10 pre = "3. " +++ -# OPSEC Guide for Cazalla +# OPSEC Guide for Angerona -This guide covers operational security considerations when using Cazalla agent, including detection risks, best practices, and the built-in OPSEC checking system. +This guide covers operational security considerations when using Angerona agent, including detection risks, best practices, and the built-in OPSEC checking system. ## 📋 Table of Contents @@ -22,12 +22,12 @@ This guide covers operational security considerations when using Cazalla agent, ## Overview -Operational Security (OPSEC) is critical when conducting red team operations. Cazalla includes built-in OPSEC checking to help operators make informed decisions and avoid accidental security violations. +Operational Security (OPSEC) is critical when conducting red team operations. Angerona includes built-in OPSEC checking to help operators make informed decisions and avoid accidental security violations. ### Key Principles 1. **Minimize Detection**: Avoid commands and behaviors that trigger security alerts -2. **Use Built-in Commands**: Prefer Cazalla's native commands over `shell` when possible +2. **Use Built-in Commands**: Prefer Angerona's native commands over `shell` when possible 3. **Monitor Artifacts**: Review artifacts created by commands 4. **Review OPSEC Warnings**: Always read and understand OPSEC popup messages 5. **Operational Timing**: Adjust sleep intervals and jitter based on operational needs @@ -36,7 +36,7 @@ Operational Security (OPSEC) is critical when conducting red team operations. Ca ## OPSEC Checking System -Cazalla implements a two-stage OPSEC checking system: +Angerona implements a two-stage OPSEC checking system: ### OPSEC Pre-Check (`opsec_pre`) @@ -77,7 +77,7 @@ These commands are **highly detectable** and require careful consideration: | Command | Risk Level | Detection Likelihood | Alternatives | |---------|-----------|---------------------|--------------| -| `shell` | HIGH | High (cmd.exe spawn) | Use built-in Cazalla commands when possible | +| `shell` | HIGH | High (cmd.exe spawn) | Use built-in Angerona commands when possible | | `steal_token` | HIGH | High (EDR/XDR monitoring) | `make_token` when credentials available | | `rm` (system files) | HIGH | Blocked for safety | Never delete system files | | `screenshot` | HIGH | Screen capture detection | Use sparingly, consider timing | @@ -129,7 +129,7 @@ These commands have **low detection risk**: - **File Operations**: File writes to sensitive locations trigger alerts **Mitigation Strategies:** -- Use built-in Cazalla commands instead of `shell` when possible +- Use built-in Angerona commands instead of `shell` when possible - Use `inline_execute_assembly` for .NET assembly execution (in-process, no process injection) - Use `inline_execute` for BOFs when possible (no process creation) - Prefer `make_token` over `steal_token` when credentials are available @@ -201,7 +201,7 @@ ps ls ``` -Built-in Cazalla commands: +Built-in Angerona commands: - Don't spawn `cmd.exe` (highly monitored) - Have better OPSEC characteristics - Provide structured output @@ -433,14 +433,14 @@ The `samdump` command supports three methods with different OPSEC profiles: ``` 🚨 OPSEC BLOCKED - Command Has Safer Alternative -This command contains operations that have safer built-in alternatives in Cazalla: +This command contains operations that have safer built-in alternatives in Angerona: - 🚨 whoami: Use Cazalla's 'whoami' command instead (no cmd.exe spawn) + 🚨 whoami: Use Angerona's 'whoami' command instead (no cmd.exe spawn) ⚠️ cmd.exe spawn: This command would spawn cmd.exe (highly detectable) 💡 SAFER ALTERNATIVES: - → Use: 'whoami' (Cazalla built-in, no cmd.exe) + → Use: 'whoami' (Angerona built-in, no cmd.exe) ⚠️ TO PROCEED: You need approval from another operator. ``` diff --git a/documentation-payload/Cazalla/troubleshooting.md b/documentation-payload/Angerona/troubleshooting.md similarity index 94% rename from documentation-payload/Cazalla/troubleshooting.md rename to documentation-payload/Angerona/troubleshooting.md index 47fa206..b8179a3 100644 --- a/documentation-payload/Cazalla/troubleshooting.md +++ b/documentation-payload/Angerona/troubleshooting.md @@ -5,9 +5,9 @@ weight = 10 pre = "6. " +++ -# Cazalla Troubleshooting Guide +# Angerona Troubleshooting Guide -This guide helps you diagnose and resolve common issues when using Cazalla agent. +This guide helps you diagnose and resolve common issues when using Angerona agent. ## 📋 Table of Contents @@ -49,15 +49,15 @@ This guide helps you diagnose and resolve common issues when using Cazalla agent 3. **Check Agent Execution** ```cmd # On Windows target - tasklist | findstr cazalla - # Should show cazalla.exe process + tasklist | findstr angerona + # Should show angerona.exe process ``` 4. **Check Mythic Logs** ```bash # On Mythic server sudo docker logs mythic_server - sudo docker logs cazalla_translator + sudo docker logs angerona_translator ``` **Solutions:** @@ -186,8 +186,8 @@ cat file.txt 3. **Check Logs** ```bash - sudo docker logs cazalla_translator | grep -i download - sudo docker logs cazalla_translator | grep -i upload + sudo docker logs angerona_translator | grep -i download + sudo docker logs angerona_translator | grep -i upload ``` **Solutions:** @@ -204,7 +204,7 @@ cat file.txt **Solution:** -Cazalla automatically normalizes paths, but if issues persist: +Angerona automatically normalizes paths, but if issues persist: - Use single backslashes: `C:\Users\file.txt` - Use forward slashes: `C:/Users/file.txt` - Avoid double backslashes: `C:\\Users\\file.txt` (will be normalized automatically) @@ -228,7 +228,7 @@ Cazalla automatically normalizes paths, but if issues persist: 2. **Check Translator Logs** ```bash - sudo docker logs cazalla_translator | grep -i process + sudo docker logs angerona_translator | grep -i process ``` 3. **Verify Process Browser Integration** @@ -237,7 +237,7 @@ Cazalla automatically normalizes paths, but if issues persist: **Solutions:** -- **Rebuild Translator**: `sudo ./mythic-cli build cazalla` +- **Rebuild Translator**: `sudo ./mythic-cli build angerona` - **Check Process Parsing**: Verify translator is parsing process list correctly - **Check Permissions**: Some processes may require elevated privileges @@ -360,7 +360,7 @@ Cazalla automatically normalizes paths, but if issues persist: 4. **Check Translator Logs** ```bash - sudo docker logs cazalla_translator | grep -i socks + sudo docker logs angerona_translator | grep -i socks ``` **Solutions:** @@ -414,7 +414,7 @@ Cazalla automatically normalizes paths, but if issues persist: 1. **Check Docker** ```bash sudo docker ps - sudo docker logs cazalla_translator + sudo docker logs angerona_translator ``` 2. **Check Build Parameters** @@ -450,7 +450,7 @@ Cazalla automatically normalizes paths, but if issues persist: 3. **Check Translator Logs** ```bash - sudo docker logs cazalla_translator | grep -i crypto + sudo docker logs angerona_translator | grep -i crypto ``` **Solutions:** @@ -484,7 +484,7 @@ Cazalla automatically normalizes paths, but if issues persist: 3. **Rebuild Translator** ```bash - sudo ./mythic-cli build cazalla + sudo ./mythic-cli build angerona ``` ### File Browser Not Working @@ -530,7 +530,7 @@ Cazalla automatically normalizes paths, but if issues persist: 2. **Check Translator Logs** ```bash - sudo docker logs cazalla_translator | grep -i context + sudo docker logs angerona_translator | grep -i context ``` 3. **Verify Context Format** @@ -548,7 +548,7 @@ Cazalla automatically normalizes paths, but if issues persist: - Rebuild agent with debug flags **Translator Side:** -- Check translator logs: `sudo docker logs cazalla_translator` +- Check translator logs: `sudo docker logs angerona_translator` - Look for error messages and warnings ### Check Agent Status @@ -575,7 +575,7 @@ sudo docker logs mythic_server **Translator Logs:** ```bash -sudo docker logs cazalla_translator +sudo docker logs angerona_translator ``` **Agent Logs:**