Files
Angerona/CONTEXT_TRACKING_TEST_PLAN.md
T
2025-11-04 10:56:20 +01:00

4.5 KiB

Plan de Pruebas para Context Tracking

Resumen

Context Tracking permite ver información del callback (como cwd e impersonation_context) en tabs visibles sobre el área de tasking en Mythic.

Cambios Implementados

1. Variables Globales

  • gCurrentDirectory: Mantiene el directorio actual
  • gImpersonationContext: Mantiene el usuario impersonado

2. Comandos que Actualizan Contexto

  • cd: Actualiza cwd cuando cambias de directorio
  • steal_token: Actualiza impersonation_context cuando robas un token
  • make_token: Actualiza impersonation_context cuando creas un token
  • rev2self: Limpia impersonation_context cuando reviertes la impersonación

3. Checkin

  • Incluye cwd inicial al hacer checkin

Plan de Pruebas

Prueba 1: Verificar cwd inicial en Checkin

  1. Compila y despliega el agente
  2. Verifica que al hacer checkin, aparezca un tab con cwd mostrando el directorio actual
  3. Resultado esperado: Tab "cwd" visible con el directorio actual (ej: C:\Users\localuser)

Prueba 2: Actualizar cwd con cd

  1. Ejecuta cd C:\Windows
  2. Verifica que el tab cwd se actualice a C:\Windows
  3. Resultado esperado: Tab "cwd" cambia a C:\Windows

Prueba 3: Impersonation Context con steal_token

  1. Ejecuta list_tokens para ver tokens disponibles
  2. Ejecuta steal_token <pid> donde <pid> es un proceso con privilegios elevados (ej: SYSTEM)
  3. Verifica que aparezca un tab impersonation_context con el usuario impersonado (ej: NT AUTHORITY\SYSTEM)
  4. Resultado esperado: Tab "impersonation_context" aparece con el usuario impersonado

Prueba 4: Verificar whoami después de steal_token

  1. Después de steal_token, ejecuta whoami
  2. Verifica que whoami muestre el usuario impersonado
  3. Resultado esperado: whoami muestra el usuario del token robado

Prueba 5: Limpiar impersonation_context con rev2self

  1. Después de steal_token, ejecuta rev2self
  2. Verifica que el tab impersonation_context se limpie (desaparezca o muestre vacío)
  3. Ejecuta whoami para verificar que volvió al usuario original
  4. Resultado esperado: Tab "impersonation_context" se limpia, whoami muestra usuario original

Prueba 6: make_token actualiza impersonation_context

  1. Ejecuta make_token domain username password
  2. Verifica que el tab impersonation_context se actualice con el nuevo usuario
  3. Resultado esperado: Tab "impersonation_context" muestra el usuario del token creado

Prueba 7: Verificar logs del translator

  1. Revisa los logs del translator para ver mensajes como:
    • [CALLBACK_CONTEXT] cwd = 'C:\Windows'
    • [CALLBACK_CONTEXT] impersonation_context = 'NT AUTHORITY\SYSTEM'
  2. Resultado esperado: Logs muestran los campos de callback context parseados correctamente

Verificación de Implementación

Verificar que los archivos se compilaron correctamente:

# En el contenedor de Mythic, verifica logs de compilación
docker logs cazalla_translator | grep -i "error\|warning" | tail -20

Verificar en logs del agente:

Busca logs que incluyan:

  • [steal_token] Contexto de impersonación actualizado
  • [make_token] Contexto de impersonación actualizado
  • [rev2self] Contexto de impersonación limpiado
  • Checkin: Añadido cwd inicial

Verificar en logs del translator:

Busca logs que incluyan:

  • [CALLBACK_CONTEXT] cwd = '...'
  • [CALLBACK_CONTEXT] impersonation_context = '...'
  • [CHECKIN] Callback context: cwd = '...'
  • [CALLBACK_CONTEXT] Añadido callback context con X campos

Configuración en Mythic UI

  1. Ve a Settings (configuración de usuario)
  2. Busca la sección de Tasking Context Tabs
  3. Asegúrate de que cwd e impersonation_context estén seleccionados
  4. Configura colores si lo deseas

Solución de Problemas

Si los tabs no aparecen:

  1. Verifica que los logs del translator muestren [CALLBACK_CONTEXT]
  2. Verifica que el JSON de respuesta incluya la clave callback con los campos
  3. Verifica la configuración de usuario en Mythic (Settings → Tasking Context Tabs)

Si el cwd no se actualiza:

  1. Verifica logs del agente: setCurrentDirectoryContext debería llamarse
  2. Verifica que cd esté funcionando correctamente
  3. Revisa los logs del translator para ver si se parsea el callback context

Si impersonation_context no se actualiza:

  1. Verifica que steal_token/make_token funcionen correctamente
  2. Verifica logs: setImpersonationContext debería llamarse
  3. Verifica logs del translator para ver si se parsea