— · —Los — hallazgos de Inspector, según la gravedad que asigna el proveedor del software.
Dónde está concentrado el trabajo de remediación.
Fecha en que Inspector detectó por primera vez el hallazgo más antiguo que sigue abierto.
Debilidades del software y de la configuración de red, agrupadas por componente.
| Hallazgo | Cant. | Descripción | Amenaza que representa | Instancia | Región | Severidad | Detectado desde |
|---|
Actividad de ataque o comportamiento anómalo que ya ocurrió.
| Detección | Veces | Descripción | Amenaza que representa | Instancia o recurso | Región | Sev. | Fecha y estado |
|---|
Ordenado por esfuerzo: primero lo que se resuelve en minutos sin tocar el servicio.
| Hallazgo | Instancia | Severidad | Acción de remediación | Esfuerzo | Verificación |
|---|
Cada carga queda registrada. La columna de variación compara con la extracción anterior: es la evidencia de si el proceso de remediación avanza o no.
Un aumento de hallazgos no siempre es malo: puede venir de haber incorporado una región o de instalar el agente en una instancia que antes no se escaneaba. Lo que importa es que el cambio tenga explicación.
Se conservan las últimas 36 extracciones.
Carga los archivos de AWS y el panel se regenera. El navegador lee los archivos y envía al servidor solo el resultado agrupado, no los archivos completos.
Guárdalo una vez en CloudShell. Después basta bash extraer.sh. Avisa si Inspector o GuardDuty no están habilitados en alguna región, para no confundir «sin datos» con «cero hallazgos».
cat > extraer.sh <<'FIN'
#!/bin/bash
# Recorre todas las regiones de la cuenta. Agregar mas al listado si aparecen.
REGIONES="sa-east-1 us-east-1"
: > inspector.jsonl
: > guardduty.jsonl
for REG in $REGIONES; do
echo "== Region $REG"
# --- Inspector: primero verificar que este escaneando esta region ---
EST=$(aws inspector2 batch-get-account-status --region $REG \
--query 'accounts[0].resourceState.ec2.status' --output text 2>/dev/null)
echo " Inspector EC2: ${EST:-sin respuesta}"
if [ "$EST" = "ENABLED" ]; then
NEXT=""
while :; do
if [ -z "$NEXT" ]; then
OUT=$(aws inspector2 list-findings --region $REG \
--filter-criteria '{"findingStatus":[{"comparison":"EQUALS","value":"ACTIVE"}]}' \
--max-results 100 --output json)
else
OUT=$(aws inspector2 list-findings --region $REG \
--filter-criteria '{"findingStatus":[{"comparison":"EQUALS","value":"ACTIVE"}]}' \
--max-results 100 --next-token "$NEXT" --output json)
fi
echo "$OUT" | jq -c '.findings[]' >> inspector.jsonl
NEXT=$(echo "$OUT" | jq -r '.nextToken // empty')
[ -z "$NEXT" ] && break
done
else
echo " OJO: Inspector no esta escaneando EC2 en $REG."
echo " Vacio aqui significa SIN DATOS, no cero vulnerabilidades."
fi
# --- GuardDuty: detector propio de cada region ---
DET=$(aws guardduty list-detectors --region $REG --query 'DetectorIds[0]' --output text)
if [ "$DET" != "None" ] && [ -n "$DET" ]; then
echo " GuardDuty: detector $DET"
aws guardduty list-findings --region $REG --detector-id $DET --output json \
| jq -r '.FindingIds[]' > gd_ids.txt
if [ -s gd_ids.txt ]; then
split -l 50 gd_ids.txt _gd_
for f in _gd_*; do
aws guardduty get-findings --region $REG --detector-id $DET \
--finding-ids $(tr '\n' ' ' < $f) \
| jq -c --arg r "$REG" '.Findings[] | .Region = $r' >> guardduty.jsonl
done
rm -f _gd_*
fi
rm -f gd_ids.txt
else
echo " OJO: GuardDuty no habilitado en $REG. Sin datos, no cero amenazas."
fi
done
echo
echo "Inspector: $(wc -l < inspector.jsonl) hallazgos"
echo "GuardDuty: $(wc -l < guardduty.jsonl) detecciones"
echo "Hallazgos por region:"
jq -r '.resources[0].region' inspector.jsonl | sort | uniq -c
FIN
bash extraer.shBájalos con Acciones → Descargar archivo: inspector.jsonl y guardduty.jsonl.
Acepta JSONL, JSON o arreglo. Detecta solo cuál archivo es cuál.
No tienen regla en el diccionario, así que su amenaza quedó en blanco en lugar de inventada.
Propuestas de la IA. Revísalas antes de guardar: no se guarda nada hasta que lo confirmes.
O pega las reglas a mano y presiona Aplicar:
Las reglas se guardan en el servidor y quedan disponibles para todo el equipo en la próxima extracción.
Los mismos hallazgos que muestra el panel, en CSV, para pegarlos como fuente en la matriz de riesgo.
CSV con separador punto y coma y UTF-8: Excel lo abre en columnas y con acentos.
Los archivos salen con la fecha de la extracción cargada. Si necesita una foto anterior, ábrala primero en Histórico y vuelva a exportar.
Traduce lo que AWS reporta a la amenaza que representa. Lo que no tenga regla aparece como «sin clasificar».
| Regla | Tipo | Descripción | Amenaza que asigna |
|---|
Consultas de solo lectura en AWS CloudShell: list-findings, get-findings, get-detector. No se ejecuta ninguna operación de escritura ni código dentro de las instancias, y todo queda registrado en CloudTrail.
Inspector y GuardDuty son regionales: cada región tiene su propio inventario y su propio detector, y se consultan por separado.
Los hallazgos de red indican que la configuración permite el tráfico, no que haya un servicio respondiendo en cada puerto.
Uso interno. Este panel es el inventario de las debilidades de la organización: se accede solo con sesión iniciada y cada entrada queda en la bitácora.
Quién entra al panel y con qué perfil. Cambiar el perfil de alguien cambia las pestañas que ve.
| Correo | Nombre | Perfil | Estado |
|---|
La contraseña se define acá una vez y se entrega por un medio distinto a este panel.
Últimos 500 registros: inicios de sesión, cargas, cambios en el diccionario y llamadas a la IA. Es la evidencia de trazabilidad para el SGSI.
| Fecha | Usuario | Acción | Detalle |
|---|