saltar al contenido
volver al mapa
técnica
etapa: detect
2 min de lectura

Análisis de logs y construcción de una línea de tiempo

Toda investigación termina como una línea de tiempo: primer acceso, qué tocaron, cómo se movieron, qué se llevaron. La calidad de esa línea de tiempo depende de marcas de tiempo limpias y buenos pivotes.

SIEM (Splunk, Elastic, Sentinel)jqTimesketchSigmaCloudTrail / audit logsPlaso (log2timeline)

Empieza con un tiempo limpio

  • Convierte cada marca de tiempo a UTC antes de comparar nada. Las zonas horarias y el horario de verano causan la mayoría de los errores en una línea de tiempo.
  • Anota el desfase del reloj (clock skew): un host con el reloj mal desplaza toda su historia. Compara un evento compartido entre fuentes para medir el desfase.
  • Registra la fuente, el campo y la resolución de tiempo de cada evento; un log con resolución de solo minutos no puede ordenar eventos dentro del mismo minuto.
  • Conserva copias sin procesar y trabaja sobre las copias.

Pivoteo

Una investigación avanza por pivoteo: toma un hecho conocido y pregunta qué más lo comparte. Cada pivote estrecha o amplía el alcance.

  • De una IP a todas las cuentas que iniciaron sesión desde ella y todas las solicitudes que hizo.
  • De una cuenta a sus sesiones, sus dispositivos, los recursos que tocó y los cambios que hizo.
  • De un host a sus procesos padre e hijo, conexiones de red y archivos creados.
  • De un hash de archivo a todos los hosts donde apareció.
  • Del primer evento malicioso hacia atrás: ¿cómo comenzó el acceso?

Ejemplo: una identidad de nube comprometida

Extrae de CloudTrail, en orden, todo lo que hizo una identidad y busca primeras veces: una nueva dirección de origen, una nueva región, una llamada a una API sensible.

cloudtrail-pivot.shbash
# todas las acciones de la identidad sospechosa, en orden cronológico
jq -r '.Records[]
  | select(.userIdentity.arn // "" | test("build-bot"))
  | [.eventTime, .eventName, .awsRegion, .sourceIPAddress, (.errorCode // "ok")] | @tsv' \
  cloudtrail/*.json | sort

# ¿qué direcciones de origen usó esta identidad?
jq -r '.Records[] | select(.userIdentity.arn // "" | test("build-bot")) | .sourceIPAddress' \
  cloudtrail/*.json | sort | uniq -c | sort -rn
merge_timeline.pypython
import csv, heapq
from datetime import datetime, timezone

def load(path, source, ts_field, fmt):
    with open(path, newline="") as f:
        for row in csv.DictReader(f):
            ts = datetime.strptime(row[ts_field], fmt).replace(tzinfo=timezone.utc)
            yield ts, source, row.get("message", "")

streams = [
    load("idp.csv", "idp", "time", "%Y-%m-%dT%H:%M:%SZ"),
    load("proxy.csv", "proxy", "ts", "%Y-%m-%d %H:%M:%S"),
]
for ts, source, msg in heapq.merge(*(sorted(s) for s in streams)):
    print(ts.isoformat(), source, msg)  # salida en orden cronológico

Convierte los hallazgos en detecciones

Cuando encuentres una técnica que usó el atacante, escribe una regla para detectarla la próxima vez. Sigma es un formato neutral respecto a proveedores que se convierte a muchos lenguajes de consulta de SIEM.

suspicious-encoded-powershell.yml (Sigma)yaml
title: PowerShell iniciado con un comando codificado
status: experimental
logsource:
  category: process_creation
  product: windows
detection:
  selection:
    Image|endswith: '\powershell.exe'
    CommandLine|contains:
      - ' -enc '
      - ' -EncodedCommand '
  condition: selection
falsepositives:
  - Algunas herramientas de administración usan comandos codificados; establece su línea base primero
level: medium

Hábitos

  • Escribe la línea de tiempo sobre la marcha, con la evidencia de cada línea.
  • Separa los hechos de las hipótesis y marca cuál es cuál.
  • Busca también la ausencia de logs: un hueco puede ser la limpieza del atacante.
  • Mantén una lista de preguntas que aún no puedes responder y de logs que desearías tener; esa lista mejora tu logging.

conexiones en el mapa

actualizado el 14/10/2026 · fuentes para profundizar · reportar un error

en otros dominios

Desbloquea

pon a prueba lo que entendiste

Cargando preguntas…