* Este post corresponde a la serie de apuntes del Learning Path «Become an Ethical Hacker» de LinkedIn Learning.
* Todos los comandos mencionados son para ser ejecutados desde Linux a no ser que se diga lo contrario.
Para esta fase se habrá obtenido información del sistema:
- Se ha completado la fase de reconocimiento
- Se ha completado la fase de escaneo y mapeo
- Enumeration ha identificado posibles puntos de fallo
Durante el system hacking se espera:
- Obtener passwords (conseguir acceso al sistema)
- Escalar privilegios
- Ejecutar aplicaciones
- Ocultar ficheros y herramientas
- Cubrir tus pasos
Conseguir accesos
El system hacking empieza intentando conseguir acceso al sistema con un usuario no privilegiado. Para ello es importante saber dónde se almacenan los passwords en el sistema.
En Microsoft los hash de los passwords de los usuarios están en la SAM (Security Access Management). Syskey cifra los hashes de los passwords, con una clave de cifrado guardada en la SAM registry hive.
Password cracking
- Intentar adivinar el password suele funcionar bien con contraseñas fáciles. most popular passwords / passwords por defecto
- Ataques con diccionario
- Ataques de fuerza bruta que prueban todas las combinaciones de carácteres
- Ataques híbridos que combina un diccionario con el ataque de fuerza bruta
Hay herramientas como L0phtCrack, ophtcrack, john the ripper o para sistemas Microsoft cain and abel. Algunas herramientas de fuerza bruta usan modelos estadísticos como «Markov chaining» para predecir el siguiente carácter.
Rainbow tables
El cifrado usa una o un par de keys, que permiten cifrar y descifrar un mensaje. Sin embargo, el hashig es una función criptográfica de sentido único, pues no puedes recuperar el mensaje original a partir de un hash. Dos de los algoritmos de hash más populares son:
- SHA (Secure Hash Algorithm) que genera hashes de 160 bits
- MD5 (Message Digest Algorithm) que genera hashes de 128 bits
Las Rainbow Tables son una enorme base de datos (30-50GB) con entradas de passwords y sus hashes. Funcionan porqué un mismo texto generará siempre el mismo hash. Puedes generar tus propias rainbow tables, y/o usar existentes.
Salting the password with a random string (añadimos un string al password para que de un hash diferente no predecible) will protect against a rainbow table attack.
Escalada de privilegios
La escalada suele darse aprovechando una funcionalidad del SO o de una aplicación. El objetivo es que una aplicación corra en un entorno de seguridad más elevado del que debería.
La idea es, una vez se ha entrado en el sistema con un usuario no privilegiado, buscaremos passwords débiles en el sistema:
- En Windows intentaremos conseguir los hashes del fichero SAM
- En Linux, de /etc/shadow
Ejecutando aplicaciones
Una vez escalemos privilegios, no deberíamos hacer saltar niguna alarma en este punto, pero sí se tendrá como objetivo instalar software:
- rootkits para poder acceder al sistema luego
- keylogger para obtener información
- ransomware para pedir un rescate
- unir el sistema a una botnet (base de datos de sistemas infectados)
Defensa ante escalada de privilegios
- Restringir los privilegios de login interactivo
- Habilitar MFA
- Limitar las máquinas a las que se puede acceder
- Correr servicios con cuentas no privilegiadas
- Seguir siempre el principio de Least Privilege para usuarios y aplicaciones
- Proteger datos sensibles y ficheros de passwords mediante cifrado
- Mantener los sistemas y aplicaciones actualizadas
- Monitorizar los logs en busca de alertas
Spyware
El malware se divide en 5 categorías: spyware, virus, gusanos, troyanos y rootkits.
El Spyware es un software que una vez instalado puede recolectar datos a través de monitorizar la pantalla, capturar los inputs del teclaro, recoger la información de un formulario web o trackear el uso de internet entre otros. Son sypware caballos de troya o browser hijackers.
Las cookies pueden usarse para que los anunciantes te espien y trackeen los sitios que visitas, con lo que es buena idea bloquear las third-party cookies sin una política de privacidad compacta.
Spybot Search & Destroy puede ayudarnos a detectar sypware en el sistema (así como a hacer limpieza de cookies)
Keyloggers
Es un tipo de spyware que registra todo lo que se teclea y lo suele ir enviando via email o FTP. Pueden ser hardware o software. Si son software, pueden o no aparecer en el task manager. Algunos ejemplos de keyloggers son actualkeylogger o Aobo keylogger.
Malwarebytes puede ayudarnos a detectar si tenempos un keylogger instalado en nuestros sistemas.
NTFS Ads y Esteganografía
En Windows, NTFS Alternate Data Streaming (ADS) se pensó para dar compatibilidad con sistemas de ficheros no Windows. Guarda datos en ficheros ocultos enlazados a ficheros visibles.
C:\tmp> notepad temp.txt:secret.txt
C:\tmp> dir /r # Con /r podemos ver el fichero oculto enlazado
La esteganografía es la técnica de ocultar mensajes u objetos dentro de otros. A partir de un carrier (imágenes, documentos, vídeos o audio) se añade un payload con el documento o el texto secreto, dando como resultado un mensaje oculto.
En imágenes, cada píxel tiene un valor RGB de 1 byte. Podemos usar los últimos bits para estenografía pues apenas cambia el color de ese pixel. O con textos podemos usar espacios en blanco.
Hay cientos de herramientas al respecto como el recomendado S-Tools, MP·Stego u OpenPuff.
Ocultando tus huellas
Es importante saber ocultar ficheros y herramientas en el sistema para poder volver a entrar a él luego. Los ficheros se pueden ocultar con NTFS Ads o estenografía pero instalar un rootkit nos permitiría además ocultar herramientas, tener una puerta trasera de acceso y limpiar logs.
Una vez se accede al sistema se debería deshabilitar el logging y habilitarlo de nuevo al salir.
En sistemas Linux podemos usar Metasploit meterpreter > clearev para limpiar evidencias antes de salir del sistema. También podemos:
# vaciar el log de mensajes del sistema
echo > /var/log/messages
# eliminar el history
export HISTSIZE=0
# hacer un borrado seguro del history
shred -zu root/.bash_history
En Windows, podemos manualmente limpiar los logs del Event Viewer.