En el hipotético caso que se estuviese en un test de penetración de caja negra (donde no se tiene información del objetivo), los primeros pasos de una auditoría serían los mismos para ambos entornos. Estos consisten en la recopilación de información en motores de internet o recursos online, y el análisis de puertos abiertos y servicios online operativos en la fase de análisis de vulnerabilidades. Y eso se debe a que las fases aquí citadas pueden ofrecer “indicios”, pero al final pueden dar lugar a falsos positivos (medidas de protección, una aplicación ha dado un tipo de información que se corresponde a varios sistemas operativos, etc.). Hasta que no se explota una vulnerabilidad, no se puede determinar con seguridad el posible sistema operativo que se está auditando (sea Windows o Linux).
Fases comunes en entornos windows y linux:
• Recopilación de información: la fase de recopilación de información sobre las infraestructuras que compone el objetivo de una auditoría son semejantes, ya que el procedimiento no varía de un entorno a otro. Sea Linux o Windows, cualquier tipo de información que esté publicada en servicios online de internet (como pueda ser, por ejemplo, Shodan) permitirá recabar en el proceso de pentesting los objetivos que puede acabar usando en las fases posteriores del proceso de una auditoría de pentesting.
- Análisis de puertos y servicios: técnicamente, el procedimiento de análisis de puertos y servicios no depende de un entorno u otro, sino del tipo de estándar de red que esté usando esa máquina. En la actualidad, el procedimiento de análisis de puertos abiertos mediante TCP Connect Scan o SYN Scan funciona en ambos entornos y es el estándar actual en la gran mayoría de los entornos con los que se trabaja.
- Análisis de vulnerabilidades: muchos servicios online están planteados para funcionar en varias plataformas, como puede ser el caso de servicios FTP, servicios HTTP, SMTP, POP… Esto implica que a pesar de que se estén ejecutando en Windows o en Linux, los procesos a seguir para poder descubrir algún fallo de seguridad o vulnerabilidad son semejantes en ambos entornos.
- Ataques de diccionario online: al igual que ha ocurrido con los análisis de vulnerabilidades, los ataques de diccionarios en servicios online se basan en la comparación de la respuesta a las peticiones que se realizan contra dicho servicio. La conexión a un servicio FTP no depende del entorno, su variación puede ser responsabilidad del software que se utiliza para dicho servicio, lo que hace el proceso semejante tanto para Windows como para Linux.
- Ataques de diccionario offline: los ataques de diccionarios offline se centran en romper algún tipo de algoritmo de cifrado, que se usan de forma común en ambos tipos de entornos. Muchas aplicaciones basadas en Windows y en Linux usarán algoritmos semejantes, como por ejemplo MD5, SHA-1, SHA-256, SHA-512, etc.
Las fases de explotación de vulnerabilidades y en adelante son las que suponen la diferenciación de los pasos para cada metodología a seguir en el entorno que se está trabajando.
Fases en entornos windows:
- Explotación de vulnerabilidades: la explotación de una vulnerabilidad permite en la fase de pentesting determinar el entorno que se está auditando; esta es la fase que permitirá asegurar que estamos frente a un entorno de Windows. Ciertos servicios, por ejemplo SMB/Samba, son comunes en los entornos de Linux y Windows, pero cada arquitectura habrá desarrollado este servicio online de una forma específica que permite reproducir vulnerabilidades como puede ser, por ejemplo, eternalblue.
- Fase de postexplotación: la fase de post explotación es la que se diferencia enormemente de un entorno a otro debido al intérprete de comandos que se esté utilizando, las fases de postexplotación de Windows se centran en los siguientes procedimientos:
- Deshabilitar windows defeder
- Deshabilitar Firewall de Windows.
- Persistencia mediante registro de Windows (HKCU y HKLM).
- Persistencia mediante servicios de arranque.
- Persistencia con tareas programadas.
- Persistencia con trabajos BITS.
- Persistencia mediante IIS.
- Persistencia mediante Windows Service.
- Persistencia mediante Winlogon Helper DLL.
- Persistencia con GlobalFIre.
- Persistencia troyanizando binarios.
- Puerta trasera RDP.
- Persistencia mediante Skeleton Key.
- Enumeración de AppLocker.
- Técnicas de postexplotación con Powershell.
- Recabar credenciales mediante ficheros SAM y SYSTEM.
- Búsqueda de cadenas sensibles en la máquina.
- Enumerar procesos y tareas.
- Aprovecharse de permisos vulnerables en servicios.
- Rutas de servicios sin acotar.
- Named Pipes.
- Explotación de vulnerabilidades en el kernel.
- Explotación de AlwaysInstallElevated.
- Aplicaciones GUI inseguras.
- Evaluación de drivers vulnerables.
- Explotación de Runas.
- Abuso de Shadow Copies.
- Escalada de privilegios de administrador a NT SYSTEM.
- Uso de scripts y funciones inseguras en binarios (LOLBAS).
- Falsificación de privilegios.
Fases en entornos Linux:
- Explotación de vulnerabilidades: la explotación de una vulnerabilidad permite en la fase de pentesting poder determinar el entorno que se está auditando, esta fase permitirá descubrir mediante su reproducción asegurar que estamos frente a un entorno de Linux. Ciertos servicios, por ejemplo SMB/Samba, son comunes en los entornos de Linux y Windows, pero cada arquitectura habrá desarrollado este servicio online de una forma específica que permite reproducir vulnerabilidades como puede ser, por ejemplo, username map script.
- Fase de postexplotación: la fase de postexplotación es la que se diferencia enormemente de un entorno a otro debido al intérprete de comandos que se esté utilizando, las fases de postexplotación de Linux se centran en los siguientes procedimientos:
- Creación de un usario para persistencia
- Uso de binarios con SUID activo.
- Utilizar crontab para persistencia.
- Crear un backdoor mediante bash_rc.
- Troyanizar un servicio de arranque.
- Troyanizar un fichero de arranque.
- Troyanizar un driver.
- Troyanizar el repositorio APT.
- Troyanizar mediante el servicio SSH.
- Comprobar información del sistema.
- Comprobar información del usuario que se está utilizando en la sesión remota.
- Comprobar privilegios de acceso.
- Descubrir Jobs de cron.
- Listar puertos con conexiones activas y a la escucha.
- Descubrir información de aplicaciones instaladas.
- Comprobación de credenciales débiles.
- Búsqueda de cadenas sensibles en la máquina.
- Búsqueda de binarios con SUID/SGID activos.
- Búsqueda de ficheros con POSIX activo.
- Explotación de vulnerabilidades en el kernel.
- Recabar información del servicio NFS.
- Recabar información del servicio de correo electrónico.
- Comprobaciones de entornos virtualizados Docker.