
Implementación de código abierto de Malleable C2 de Cobalt Strike
Implementación de código abierto de Malleable C2 de Cobalt Strike
OpenMalleableC2 es una biblioteca independiente del marco que implementa el formato de perfil Malleable C2 de Cobalt Strike para transformaciones HTTP. Permite a investigadores de seguridad y equipos rojos implementar fácilmente comunicaciones malleable C2 en herramientas personalizadas y marcos C2.
Permite el uso completo de perfiles Malleable C2 para enviar datos arbitrarios a través de HTTP, de una manera transparente y, con suerte, estable.
Hay muchos marcos C2 de código abierto que tienen diversos grados de características de personalización del tráfico HTTP. Sin embargo, incluso los marcos más desarrollados como Mythic, Havoc, Adaptix, etc., aún carecen de la profundidad de personalización del tráfico HTTP que permite Malleable C2 de Cobalt Strike, en términos de incrustar datos de devolución de llamada dentro de solicitudes HTTP con apariencia convincentemente inocente. El objetivo de este proyecto es permitir que las herramientas de código abierto se beneficien tanto de la profundidad de personalización del sistema Malleable C2 como de los recursos existentes que dependen de él (por ejemplo, perfiles, herramientas generadoras de perfiles, etc.)
Funciona en su mayoría, pero no ofrezco garantías sobre su estabilidad en este momento. ¡Reporten errores si los encuentran :)
El ejemplo proporcionado es un simple agente y servidor "ping pong" que demuestra la típica devolución de llamada de Beacon. El agente enviará una devolución de llamada GET para registrarse en busca de tareas, luego enviará una devolución de llamada POST para publicar la salida de la tarea de vuelta al servidor.
En este ejemplo, las tareas son solo una cadena aleatoria de marcador de posición, que el agente recuperará, invertirá y publicará como resultado. El servidor verifica que la cadena invertida sea correcta y envía una respuesta en consecuencia.
Ejecutar ejemplo ping-pong:
# Start Python server
python Server\Python\examples\pingpong_server.py profiles\gmail.profile
# Or start Go server
cd Server\Go
go run .\cmd\pingpong-server ..\..\profiles\gmail.profile
# Run agent (in another terminal)
.\Client\C\examples\pingpong_agent.exe profiles\gmail.profile
Compilar ejemplo de cliente C:
cd Client\C\examples
build.bat
Estructura del repositorio:
Client\C\lib C client library
Client\C\examples C ping-pong agent example
Server\Python\lib Python server library
Server\Python\examples Python ping-pong server example
Server\Go\openmalleable Go server library
Server\Go\cmd\pingpong-server Go ping-pong server example
Salida de ejemplo:
pingpong_server.py:
