Saltearse al contenido

Fundamentos de Linux

Linux es el sistema del atacante (tu máquina de ataque es Kali/Parrot) y, a la vez, uno de los objetivos más comunes (servidores web, contenedores, infraestructura). Moverte con soltura por su sistema de ficheros, permisos, procesos y usuarios es prerrequisito para todo lo demás: sin esto, ni manejas tus herramientas ni entiendes una escalada de privilegios.

Todo cuelga de / (raíz). Las rutas que importan:

/etc configuración (passwd, shadow, crontab, servicios)
/home directorios de usuario
/root home del superusuario
/var logs (/var/log), webroots (/var/www), colas
/tmp temporal, escribible por todos (útil para payloads)
/usr/bin /bin binarios
/proc /sys pseudo-FS del kernel (info de procesos y sistema)
/etc/passwd usuarios; /etc/shadow hashes de contraseñas (solo root)

Cada fichero tiene dueño, grupo y permisos para dueño/grupo/otros (rwx):

-rwxr-xr-- 1 root root ...
│└┬┘└┬┘└┬┘
│ │ │ └ otros: r--
│ │ └ grupo: r-x
│ └ dueño: rwx
└ tipo (- fichero, d directorio, l enlace)
chmod 755 file # rwx r-x r-x (numérico: r=4 w=2 x=1)
chown user:grp file

Bits especiales clave en seguridad:

  • SUID (chmod u+s, aparece como rws): el binario se ejecuta con los permisos de su dueño, no de quien lo lanza. Un SUID de root mal elegido = escalada a root (ver GTFOBins).
  • SGID y sticky bit (/tmp).
find / -perm -4000 -type f 2>/dev/null # buscar binarios SUID (privesc)
id ; whoami ; groups # quién soy y a qué pertenezco
sudo -l # qué puedo ejecutar como root (¡clave en privesc!)
cat /etc/passwd # usuarios del sistema
su - usuario # cambiar de usuario

sudo -l es la primera parada en una escalada: un sudo mal configurado hacia un binario de GTFOBins suele ser root directo.

ps aux | grep X # procesos (qué corre y como quién)
top / htop # recursos en vivo
systemctl status svc # servicios (systemd)
ss -tulpn # puertos en escucha y sus procesos
crontab -l ; cat /etc/crontab ; ls /etc/cron.* # tareas programadas (privesc)
comando > out.txt # redirige stdout (sobrescribe)
comando >> out.txt # añade
comando 2>/dev/null # descarta stderr
cmd1 | cmd2 # pipe: salida de cmd1 a entrada de cmd2
cmd1 && cmd2 # cmd2 solo si cmd1 tuvo éxito
$(comando) # sustitución de comando

Dominar pipes + grep/awk/sed/cut/sort/uniq convierte miles de líneas de output en el dato que buscas (ver Bash scripting, Expresiones regulares).

La escalada de privilegios en Linux es, casi toda, abuso de lo de arriba: SUID binaries, sudo -l, cron jobs escribibles, capabilities, permisos flojos en /etc. Y como objetivo, un servidor Linux comprometido se analiza con estos mismos comandos. Es la base de los cursos de Python Ofensivo y de todo pentest de infraestructura.

  • Navego el FHS y sé qué contiene /etc, /var, /tmp, /proc
  • Leo e interpreto permisos rwx y los cambio con chmod/chown
  • Explico SUID/SGID y por qué son vector de privesc
  • sudo -l, id, /etc/passwd,/etc/shadow y para qué sirven
  • Inspecciono procesos, servicios, puertos y cron
  • Encadeno comandos con pipes y redirecciones
  • Sé buscar binarios SUID y cruzarlos con GTFOBins