Context tracking implemented
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
# 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:
|
||||
```bash
|
||||
# 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
|
||||
|
||||
Reference in New Issue
Block a user