Hackeo oculto de contraseñas con Smbexec

Hackeo oculto de contraseñas con Smbexec

Escribimos regularmente sobre cómo los hackers a menudo se basan en el uso de métodos de hacking sin código malicioso, para evitar ser detectados. Literalmente, ellos "sobreviven con sobras", utilizando herramientas estándar de Windows, eludiendo así antivirus y otras utilidades de detección de actividades maliciosas. Nosotros, como defensores, ahora nos vemos obligados a lidiar con las tristes consecuencias de estas astutas técnicas de hacking: un empleado bien situado puede usar el mismo enfoque para el robo encubierto de datos (propiedad intelectual de la empresa, números de tarjetas de crédito). Y si no se apresura, sino que trabaja lenta y sigilosamente, será extremadamente difícil, pero aún posible, si se aplica el enfoque adecuado y los correspondientes herramientas, para detectar tal actividad.

Por otro lado, no quisiera demonizar a los empleados, ya que nadie desea trabajar en un ambiente empresarial que se asemeje a "1984" de Orwell. Afortunadamente, existen una serie de pasos prácticos y trucos que pueden dificultar significativamente la vida de los insiders. Vamos a revisar métodos de ataque encubiertos, utilizados por hackers entre los empleados con cierto trasfondo técnico. Más adelante discutiremos opciones para reducir tales riesgos – exploraremos tanto acciones técnicas como organizacionales.

¿Qué hay de malo en PsExec?

Edward Snowden, justo o no, se ha convertido en sinónimo de robo de datos por insiders. Por cierto, no olvides echar un vistazo a este artículo sobre otros insiders que también merecen un cierto nivel de notoriedad. Es importante subrayar un punto clave sobre los métodos que utilizó Snowden: hasta donde sabemos, él no instaló ningún software malicioso externo.

Por el contrario, Snowden aplicó un poco de ingeniería social y utilizó su posición como administrador de sistemas para recopilar contraseñas y crear credenciales. Nada complicado – ningún mimikatzataques man-in-the-middle o metasploit..

Los empleados de las organizaciones no siempre están en una posición única como la de Snowden, pero se pueden extraer varias lecciones del concepto de "sobrevivir con sobras" que vale la pena conocer: no realizar ninguna acción maliciosa que pueda ser detectada y, especialmente, manejar con cuidado las credenciales. Recuerda esto.

PsExec y su primo crackmapexec han impresionado a innumerables pentesters, hackers y bloggers de ciberseguridad. Y en combinación con mimikatz, psexec permite a los atacantes moverse dentro de la red sin necesidad de conocer la contraseña en texto claro.

Mimikatz intercepta el hash NTLM del proceso LSASS y luego pasa el token o las credenciales, es decir, la ataque de «pass the hash» – en psexec, permitiendo que el atacante inicie sesión en otro servidor como otro usuario. Y con cada desplazamiento adicional a un nuevo servidor, el atacante recopila credenciales adicionales, ampliando su capacidad de búsqueda de contenido accesible.

Cuando comencé a trabajar con psexec, me pareció simplemente mágico – gracias a Mark Russinovich, el genial desarrollador de psexec, – pero también sé sobre sus componentes ruidosos. ¡No es nada sigiloso!

Un primer dato interesante sobre psexec es que utiliza un protocolo de archivos de red extremadamente complejo llamado SMB de Microsoft. A través de SMB, psexec transfiere pequeños archivos binarios al sistema objetivo, colocándolos en la carpeta C:Windows.

Luego, psexec crea un servicio de Windows utilizando el binario copiado y lo lanza bajo un nombre "sorpresivo": PSEXECSVC. En este punto, puedes ver todo esto realmente, como yo, observando la máquina remota (ver abajo).

Hackeo oculto de contraseñas con Smbexec

Tarjeta de visita de Psexec: servicio ‘PSEXECSVC’. Ejecuta el binario que fue colocado a través de SMB en la carpeta C:Windows.

Como etapa final, el binario copiado abre una conexión RPC al servidor objetivo y luego acepta comandos de control (por defecto – a través de la shell cmd de Windows), ejecutándolos y redirigiendo la entrada y salida a la máquina del atacante. El atacante ve así la línea de comandos básica – igual que si estuviera conectado directamente.

¡Muchos componentes y un proceso muy ruidoso!

El complejo mecanismo de los procesos internos de psexec explica el mensaje que me confundió durante mis primeras pruebas hace unos años: «Iniciando PSEXECSVC …» y la pausa subsiguiente antes de que apareciera la línea de comandos.

Hackeo oculto de contraseñas con Smbexec

Psexec de Impacket realmente muestra lo que sucede «bajo el capó».

No es sorprendente: psexec ha realizado una gran cantidad de trabajo «detrás de escena». Si estás interesado en una explicación más detallada, consulta esta maravillosa descripción.

Es obvio que cuando se utiliza como herramienta de administración del sistema, que era su intención original psexec, no hay nada de malo en el «zumbido» de todos esos mecanismos de Windows. Sin embargo, para un atacante, psexec creará complicaciones, y para un insider cauteloso e astuto como Snowden, psexec o una herramienta similar representará un riesgo demasiado grande.

Y aquí es donde entra Smbexec

SMB es una forma hábil y discreta de transferir archivos entre servidores, y los hackers han estado infiltrándose directamente en SMB desde tiempos inmemoriales. Supongo que todos ya saben que no se deben abrir los puertos SMB 445 y 139 en Internet, ¿verdad?

En 2013, en Defcon, Eric Millman (brav0hax) presentó smbexec, para que los pentesters pudieran probar el hackeo encubierto en SMB. No conozco toda la historia, pero luego Impacket refinó aún más smbexec. De hecho, para mis pruebas descargué exactamente los scripts de Impacket en Python desde Github.

A diferencia de psexec, smbexec evita la transferencia de un archivo binario potencialmente detectable a la máquina objetivo. En su lugar, la utilidad vive completamente de «la comida de la carretera» mediante la ejecución de un comando local en la línea de comandos de Windows.

Esto es lo que hace: transmite un comando desde la máquina atacante a través de SMB a un archivo de entrada especial, luego crea y ejecuta una complicada línea de comandos (como un servicio de Windows) que parecerá familiar a los usuarios de Linux. En resumen: ejecuta el shell nativo de Windows cmd, redirige la salida a otro archivo y luego lo envía a través de SMB de vuelta a la máquina del atacante.

La mejor manera de entender esto es estudiar la línea de comandos que logré obtener del registro de eventos (ver más abajo).

Hackeo oculto de contraseñas con Smbexec

¿No es esta la mejor manera de redirigir la entrada/salida? Por cierto, la creación de un servicio tiene un ID de evento 7045.

Al igual que psexec, también crea un servicio que realiza todo el trabajo, pero el servicio después se elimina ¡solo se utiliza una vez para ejecutar el comando y luego desaparece! Un empleado de seguridad de la información que observa la máquina de la víctima no podrá detectar evidencias obvias. indicadores de ataque: no hay ningún archivo malicioso ejecutable, no se instala ningún servicio persistente, y no hay evidencia de uso de RPC, ya que SMB es el único medio de transmisión de datos. ¡Brillante!

Desde el lado del atacante, hay un 'pseudo-shell' con retrasos entre el envío del comando y la recepción de la respuesta. Pero esto es suficiente para que un atacante – ya sea un insider o un hacker externo que ya tiene un punto de apoyo – comience a buscar contenido interesante.

Hackeo oculto de contraseñas con Smbexec

Para devolver datos de la máquina objetivo a la máquina del atacante, se utiliza smbclient. Sí, es la misma Samba herramienta, pero adaptada a un script de Python por Impacket. De hecho, smbclient te permite organizar de manera encubierta la transmisión de FTP sobre SMB.

Retrocedamos un paso y pensemos en lo que esto podría significar para un empleado. En mi escenario ficticio, digamos que a un bloguero, a un analista financiero o a un consultor de seguridad bien remunerado se le permite usar su computadora portátil personal para trabajar. Como resultado de un proceso mágico, se ofende con la empresa y 'se lanza a la aventura'. Dependiendo del sistema operativo de la computadora portátil, puede usar la versión de Python de Impact o la versión de Windows de smbexec o smbclient en forma de archivo .exe.

Como Snowden, descubre la contraseña de otro usuario ya sea mirándola por encima del hombro o se topa afortunadamente con un archivo de texto que contiene la contraseña. Y con estas credenciales comienza a explorar el sistema con un nuevo nivel de privilegios.

Hackeo de DCC: no necesitamos ningún 'ridículo' Mimikatz

En mis publicaciones anteriores sobre pentesting, he utilizado con mucha frecuencia mimikatz. Es una herramienta increíble para capturar credenciales: hashes NTLM e incluso contraseñas en texto claro, que permanecen ocultas dentro de computadoras portátiles y esperan a ser utilizadas.
Los tiempos han cambiado. Las herramientas de monitoreo se han vuelto mejores en detectar y bloquear mimikatz. Los administradores de seguridad también han obtenido más opciones para reducir los riesgos asociados con ataques del tipo 'pass the hash' (PtH).
Entonces, ¿qué debería hacer un empleado inteligente para recoger credenciales adicionales sin usar mimikatz?

En el conjunto de herramientas de Impacket hay una utilidad llamada secretsdump, que extrae las credenciales de la caché de credenciales de dominio, o DCC para abreviar. Según entiendo, si un usuario de dominio inicia sesión en el servidor pero el controlador de dominio no está disponible, DCC permite que el servidor autentique al usuario. De cualquier manera, secretsdump te permite volcar todos esos hashes si están disponibles.

Los hashes DCC son no hashes NTLM y sus no se pueden usar para un ataque PtH.

Bueno, puedes intentar romperlos para obtener la contraseña original. Sin embargo, Microsoft se ha vuelto más inteligente cuando se trata de DCC, y romper los hashes DCC se ha vuelto extremadamente difícil. Sí, hay hashcat, el "más rápido generador de contraseñas del mundo", pero requiere una GPU para funcionar de manera efectiva.

En su lugar, intentemos pensar como Snowden. Un empleado podría realizar ingeniería social en persona y posiblemente averiguar información sobre la persona cuya contraseña desea hackear. Por ejemplo, averiguar si la cuenta en línea de esa persona ha sido hackeada alguna vez y estudiar su contraseña en claro en busca de pistas.

Y ese es el escenario al que decidí ir. Supongamos que un insider se entera de que su gerente, Cruella, ha sido hackeada en varias ocasiones en diferentes sitios web. Tras analizar varias de esas contraseñas, se da cuenta de que Cruella prefiere usar el formato del nombre del equipo de béisbol "Yankees" seguido del año actual: "Yankees2015".

Si ahora estás tratando de recrear esto en casa, puedes descargar un pequeño "C" código, que implementa el algoritmo de hashing DCC y compilarlo. John the Ripper, por cierto, añadió soporte para DCC, así que también se puede usar. Supongamos que el insider no quiere lidiar con el estudio de John the Ripper y le gusta ejecutar "gcc" en código C obsoleto.

Asumiendo el papel de insider, ejecuté varias combinaciones y finalmente pude descubrir que la contraseña de Cruella es "Yankees2019" (ver abajo). ¡Misión cumplida!

Hackeo oculto de contraseñas con Smbexec

Un poco de ingeniería social, algo de conjetura y una pizca de Maltego, y ya estás en camino de romper un hash DCC.

Propongo dejarlo aquí. Volveremos a este asunto en futuras publicaciones y exploraremos más métodos de ataque lentos y sutiles, continuando con el magnífico conjunto de utilidades de Impacket.

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster