Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
OneDrive-UDC2 — OneDrive como transporte C2 encubierto para Cobalt Strike | Kitploit
Herramientas/GitHubGitHub/nmht3t/onedrive-udc2
Herramientas DefensivasFrameworks de Pruebas de PenetraciónPost-ExplotaciónSeguridad en la NubeComando y ControlRed TeamingDesarrollo de Payloads
GitHubnmht3t/onedrive-udc2

OneDrive-UDC2

OneDrive como transporte C2 encubierto para Cobalt Strike

Ver Repositorio
721085hace 27 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

OneDrive UDC2

Un canal C2 definido por el usuario de Cobalt Strike que utiliza OneDrive como capa de transporte.

Architecture

Lo que necesitas

  • Un inquilino de Microsoft Entra ID con un usuario que tenga OneDrive for Business.
  • Un registro de aplicación con el permiso de aplicación Files.ReadWrite.All.

Configuración

1. Registrar una aplicación

En Azure Portal, ve a App registrations y crea una nueva aplicación:

  • Tipo de cuenta: Single tenant.
  • URI de redirección: Déjalo vacío.

Anota el tenant ID y el client ID de la página de resumen.

2. Añadir el permiso de Graph

En API permissions:

  1. Añade Microsoft Graph, luego Application permissions, luego Files.ReadWrite.All.
  2. Haz clic en Grant admin consent.

3. Crear un secreto de cliente

En Certificates & secrets, crea un nuevo secreto y copia su valor.

4. Crear las carpetas de OneDrive

En el OneDrive del usuario, crea dos carpetas, una para la bandeja de entrada y otra para la bandeja de salida (por ejemplo, c2inbox y c2outbox).

5. Obtener los IDs de la unidad y las carpetas

Abre Graph Explorer, inicia sesión como ese usuario y ejecuta:

GET https://graph.microsoft.com/v1.0/me/drive/root/children

Toma el id de cada carpeta y el driveId de cualquier entrada en la respuesta JSON.

Compilación

cp server/config.json.example server/config.json

Rellena server/config.json:

CampoValor
tenant_idID del inquilino de Microsoft Entra ID
client_idID de cliente de la aplicación
client_secretValor del secreto de cliente
drive_idID de la unidad de OneDrive
inbox_folder_idID de la carpeta de entrada
outbox_folder_idID de la carpeta de salida

Luego compila el cliente:

make

Ejecución

Inicia el relay (usa screen o tmux para que siga activo si tu terminal se desconecta):

python3 server/relay.py --config server/config.json --ts-addr <teamserver-ip> --ts-port <udc2-port>

En Cobalt Strike, crea un listener UDC2 en el mismo puerto y carga client/bof.o.

Opciones del relay

FlagDescripción
--configRuta a config.json (obligatorio)
--ts-addrIP del teamserver
--ts-portPuerto del listener UDC2
--pollIntervalo de sondeo en segundos (por defecto 2.0)
--stateRuta al archivo de estado (por defecto: <config>.state.json)
--debugActivar el registro de depuración
--cleanEliminar el archivo de estado y el directorio de spool, luego salir

Archivo de estado, spool y bloqueo

El relay crea algunos archivos junto a tu configuración para llevar un seguimiento de las cosas entre reinicios:

  • Archivo de estado (config.json.state.json) - rastrea qué archivos de la bandeja de entrada se han procesado, las subidas pendientes y la información de la sesión del beacon. Establece una ruta personalizada con --state.
  • Directorio de spool (config.json.state.json.spool/) - contiene los datos de respuesta que aún no se han subido a OneDrive. Si el relay se bloquea a mitad de una subida, el spool conserva los datos para poder reintentarlo en el siguiente inicio.
  • Archivo de bloqueo (config.json.state.json.lock) - evita que dos instancias del relay se ejecuten contra el mismo estado. Si ves Another relay holds the lock y no hay otro relay en ejecución, el bloqueo es obsoleto debido a un fallo.

Restablecer el estado del relay

Si el estado local del relay se corrompe o un bloqueo obsoleto impide el inicio, usa --clean para borrar el archivo de estado y el directorio de spool para que el relay empiece de cero:

python3 server/relay.py --config server/config.json --clean

El archivo de bloqueo se conserva. El relay no limpiará mientras haya otra instancia en ejecución. En el siguiente inicio normal se reinicializa y omite cualquier archivo de la bandeja de entrada con más de 30 minutos de antigüedad.

También puedes restablecerlo manualmente eliminando tú mismo el archivo de estado y el directorio de spool. Si el archivo de bloqueo es obsoleto (no hay ningún relay en ejecución), elimínalo también.

Demo

POC

Referencias

  • Cobalt Strike UDC2 docs
  • Cobalt Strike ICMP UDC2
  • WKL Slack UDC2
Descargar herramienta