JSON Forense
Técnicas de análisis forense aplicadas a archivos JSON (JavaScript Object Notation), formato estándar para intercambio de datos en aplicaciones web, APIs, configuraciones y logs de sistemas modernos.
¿Qué es JSON?
JSON (JavaScript Object Notation) es un formato ligero de intercambio de datos, fácil de leer para humanos y de procesar para máquinas. Es el estándar de facto para APIs web, configuraciones de aplicaciones, y almacenamiento de datos estructurados.
Formato Universal
JSON ha reemplazado a XML como formato dominante en la web. Casi toda aplicación moderna, desde redes sociales hasta servicios bancarios, utiliza JSON para almacenar y transmitir datos.
Estructura de JSON
{
"usuario": "juan.perez",
"email": "[email protected]",
"activo": true,
"edad": 34,
"roles": ["admin", "editor"],
"perfil": {
"nombre": "Juan Pérez",
"ubicacion": {
"ciudad": "Madrid",
"pais": "España"
}
},
"ultimo_acceso": "2026-01-18T10:30:00Z"
}Tipos de Datos
| Tipo | Ejemplo | Uso Forense |
|---|---|---|
| String | ”texto” | Mensajes, nombres, IDs |
| Number | 42, 3.14 | Timestamps, cantidades |
| Boolean | true/false | Estados, flags |
| Array | ["a", "b"] | Listas, historiales |
| Object | {"k": "v"} | Datos anidados |
| null | null | Valores ausentes |
Fuentes de JSON en Investigaciones
Exports de Datos Personales (GDPR)
| Servicio | Contenido del Export |
|---|---|
| Google Takeout | Historial, emails, ubicaciones, YouTube |
| Facebook/Meta | Posts, mensajes, fotos, anuncios vistos |
| DMs, stories, likes, comentarios | |
| Twitter/X | Tweets, DMs, interacciones |
| Mensajes (alternativa a SQLite) | |
| Conexiones, mensajes, búsquedas |
Derecho de Acceso
El RGPD garantiza el derecho a obtener una copia de los datos personales. Estos exports en JSON son fuente valiosa de evidencia cuando el dispositivo no está disponible.
Configuraciones de Aplicaciones
- Navegadores: Bookmarks, extensiones, configuración
- IDEs: Proyectos, configuración del usuario
- Apps de escritorio: Preferencias, estado de sesión
- Servicios cloud: Configuración de cuentas
Logs de Sistemas
{
"timestamp": "2026-01-18T14:32:15.234Z",
"level": "ERROR",
"service": "auth-api",
"message": "Login fallido",
"details": {
"ip": "192.168.1.100",
"usuario": "admin",
"intentos": 5,
"bloqueado": true
}
}Proceso de Análisis Forense
Identificación: Localizar archivos JSON relevantes (extensión .json, respuestas de API, logs).
Validación: Verificar que el JSON es válido sintácticamente (parse sin errores).
Exploración: Entender la estructura y campos disponibles.
Extracción: Filtrar y extraer datos relevantes para la investigación.
Correlación: Cruzar datos JSON con otras fuentes de evidencia.
Documentación: Incluir datos relevantes en el informe pericial.
Herramientas de Análisis
Línea de Comandos
# jq: Swiss Army Knife para JSON
# Extraer todos los emails
cat users.json | jq '.[].email'
# Filtrar por condición
cat logs.json | jq 'select(.level == "ERROR")'
# Contar elementos
cat messages.json | jq 'length'
# Formatear JSON comprimido
cat data.json | jq '.'Python
import json
# Cargar archivo JSON
with open('export.json', 'r') as f:
data = json.load(f)
# Buscar mensajes con palabra clave
for msg in data['messages']:
if 'confidencial' in msg['text'].lower():
print(f"{msg['date']}: {msg['text']}")Herramientas Visuales
| Herramienta | Uso |
|---|---|
| JSON Viewer | Visualización en navegador |
| Postman | Inspección de APIs |
| VSCode | Edición y formateo |
| jless | Navegación interactiva en terminal |
Casos Forenses con JSON
Análisis de Export de Instagram
Escenario: Investigación de acoso por mensajes directos.
Proceso:
- Obtener export de datos de Instagram (JSON)
- Localizar archivo
messages.json - Filtrar conversaciones con el acosador
- Extraer timestamps y contenido
- Verificar coherencia con otras pruebas
{
"participants": ["victima", "acosador123"],
"messages": [
{
"sender_name": "acosador123",
"timestamp_ms": 1705580400000,
"content": "Mensaje amenazante...",
"type": "Generic"
}
]
}Logs de Acceso no Autorizado
Escenario: Empleado sospechoso de acceder a datos fuera de horario.
Análisis de logs JSON:
# Buscar accesos fuera de horario (22:00-06:00)
cat access_logs.json | jq '
.[] |
select(.user == "empleado_x") |
select(.hour >= 22 or .hour < 6)
'Configuración de Malware
Muchos malwares modernos usan JSON para configuración:
{
"c2_server": "https://malicioso.ejemplo.com",
"exfil_interval": 3600,
"targets": ["*.docx", "*.xlsx", "*.pdf"],
"persistence": true,
"kill_switch": false
}Análisis de Malware
Los archivos de configuración de malware revelan capacidades, servidores de comando y control, y objetivos del ataque. Son evidencia crítica para entender el alcance de una intrusión.
Timestamps en JSON
Formatos Comunes
| Formato | Ejemplo | Conversión |
|---|---|---|
| ISO 8601 | ”2026-01-18T14:30:00Z” | Directo |
| Unix (segundos) | 1705587000 | Dividir si es ms |
| Unix (milisegundos) | 1705587000000 | Dividir por 1000 |
| Texto | ”18 Jan 2026” | Parsear |
Conversión en Python
from datetime import datetime
# Unix ms a fecha
ts_ms = 1705587000000
fecha = datetime.fromtimestamp(ts_ms / 1000)
print(fecha) # 2026-01-18 14:30:00Validación de Integridad
Verificar JSON Válido
import json
def validar_json(archivo):
try:
with open(archivo, 'r') as f:
json.load(f)
return True
except json.JSONDecodeError as e:
print(f"Error en línea {e.lineno}: {e.msg}")
return FalseDetectar Manipulación
Indicadores de posible manipulación:
- Timestamps inconsistentes o fuera de secuencia
- Campos obligatorios ausentes
- Formato diferente al esperado del servicio
- Valores imposibles (fechas futuras, IDs duplicados)
JSON vs Otros Formatos
| Característica | JSON | XML | CSV |
|---|---|---|---|
| Legibilidad | Alta | Media | Alta |
| Estructura | Jerárquica | Jerárquica | Plana |
| Tipos de datos | Sí | No (todo texto) | No |
| Metadatos | Limitados | Extensos | No |
| Tamaño | Compacto | Verboso | Muy compacto |
Conclusión
El análisis forense de JSON es esencial en investigaciones modernas. Desde exports de redes sociales hasta logs de servidores, el formato JSON contiene evidencia digital crítica. Un perito debe dominar herramientas como jq y Python para procesar eficientemente estos archivos y extraer información relevante para el caso.
Última actualización: 18 de enero de 2026 Categoría: Técnico Código: JSN-001
Preguntas Frecuentes
¿Qué tipo de información se encuentra en archivos JSON?
Configuraciones de aplicaciones, historiales de exportación (WhatsApp, Instagram, Google), logs de servicios web, respuestas de APIs, tokens de autenticación, y datos de usuario almacenados localmente.
¿Por qué JSON es importante en análisis forense?
Es el formato dominante para intercambio de datos en aplicaciones modernas. Los exports de datos personales (GDPR), logs de servicios cloud, y configuraciones de apps usan JSON, siendo fuente clave de evidencia.
¿Cómo se analiza un archivo JSON grande?
Con herramientas como jq para filtrado, Python para análisis programático, o visualizadores especializados. Los archivos pueden tener millones de registros que requieren procesamiento automatizado.
Términos Relacionados
SQLite Forense
Técnicas de análisis forense aplicadas a bases de datos SQLite, el formato de almacenamiento más común en aplicaciones móviles como WhatsApp, SMS, contactos, navegadores y la mayoría de apps de iOS y Android.
Evidencia Digital
Cualquier información almacenada o transmitida en formato digital que puede ser utilizada como prueba en un procedimiento judicial o investigación.
Metadatos
Datos sobre los datos: información adicional embebida en archivos digitales que describe cuándo, dónde, cómo y por quién fueron creados o modificados.
¿Necesitas un peritaje forense?
Si necesitas ayuda profesional con análisis forense digital, estoy aquí para ayudarte.
Solicitar Consulta Gratuita
