Craqueo de contraseñas ocultas con Smbexec





Escribimos con regularidad sobre cómo los piratas informáticos a menudo confían en técnicas de piratería no maliciosas para evitar ser detectados. Literalmente, “sobreviven sobre el césped” utilizando herramientas estándar de Windows, evitando así antivirus y otras utilidades para detectar actividades maliciosas. Como defensores, ahora tenemos que lidiar con las terribles consecuencias de técnicas de piratería tan inteligentes: un empleado bien ubicado puede usar el mismo enfoque para robar datos sigilosamente (propiedad intelectual de la empresa, números de tarjetas de crédito). Y si se toma su tiempo y trabaja despacio y sin que se dé cuenta, será extremadamente difícil, pero aún posible, con el enfoque correcto y las herramientas adecuadas , detectar dicha actividad.



Por otro lado, no me gustaría demonizar a los empleados, ya que nadie quiere trabajar en un entorno empresarial directamente desde 1984 de Orwell. Afortunadamente, hay una serie de pasos prácticos y trucos que pueden hacer la vida mucho más difícil para los iniciados. Examinaremos los métodos de ataque sigilosos utilizados por los piratas informáticos por empleados con cierta experiencia técnica. Y un poco más adelante discutiremos las opciones para reducir tales riesgos: estudiaremos las opciones técnicas y organizativas para la acción.



¿Qué pasa con PsExec?



Edward Snowden, con razón o no, se ha convertido en sinónimo de robo de información privilegiada. Por cierto, no olvides echarle un vistazo a esta publicación sobre otros expertos que también merecen cierto estatus de fama. Un punto importante a destacar sobre los métodos que utilizó Snowden es que, hasta donde sabemos, ¡ no instaló ningún software malicioso externo!



En cambio, Snowden utilizó un poco de ingeniería social y utilizó su trabajo como administrador de sistemas para recopilar contraseñas y crear credenciales. Nada complicado, sin mimikatz , ataques man-in-the-middle o metasploit .



Las organizaciones no siempre están en la posición única de Snowden, pero hay una serie de lecciones a tener en cuenta del concepto de "supervivencia de pastoreo": no realizar ninguna acción dañina que pueda detectarse y tener especial cuidado con el uso de credenciales. Recuerda este pensamiento.



Psexec y su primo crackmapexec han impresionado a innumerables pentesters, hackers y blogueros de seguridad de la información. Y cuando se combina con mimikatz, psexec permite a los atacantes navegar dentro de la red sin tener que conocer la contraseña de texto sin cifrar.



Mimikatz intercepta el hash NTLM del proceso LSASS y luego pasa el token o las credenciales, el llamado. Ataque "Pasa el hash"- en psexec, lo que permite a un atacante iniciar sesión en otro servidor en nombre de otro usuario. Y con cada traslado posterior a un nuevo servidor, el atacante recopila credenciales adicionales, lo que amplía el rango de sus capacidades para encontrar contenido disponible.



Cuando comencé a trabajar con psexec, me pareció mágico, gracias a Mark Russinovich , el genio desarrollador de psexec, pero también conozco sus ruidosos componentes. ¡Nunca es reservado!



El primer hecho interesante sobre psexec es que utiliza el extremadamente complejo protocolo de archivos de red SMB de Microsoft. Psexec usa SMB para enviar pequeños binariosarchivos al sistema de destino colocándolos en la carpeta C: \ Windows.



A continuación, psexec crea un servicio de Windows usando el binario copiado y lo ejecuta bajo el nombre extremadamente "inesperado" PSEXECSVC. Al mismo tiempo, puedes ver todo esto, como lo hice yo, mirando la máquina remota (ver más abajo).





Tarjeta de visita Psexec: servicio "PSEXECSVC". Lanza un archivo binario que se colocó sobre SMB en la carpeta C: \ Windows.



Como paso final, el binario copiado abre una conexión RPC al servidor de destino y luego acepta los comandos de control (de forma predeterminada a través del shell cmd de Windows), ejecutándolos y redirigiendo la entrada y salida a la máquina doméstica del atacante. En este caso, el atacante ve la línea de comandos básica, lo mismo que si estuviera conectado directamente.



¡Muchos componentes y un proceso muy ruidoso!



El sofisticado proceso interno de Psexec explica el mensaje que me desconcertó durante mis primeras pruebas hace unos años: "Iniciando PSEXECSVC ..." seguido de una pausa antes de que aparezca la línea de comando.





Psexec de Impacket realmente muestra lo que sucede debajo del capó.



No es de extrañar: psexec hizo mucho trabajo bajo el capó. Si está interesado en una explicación más detallada, consulte esta excelente descripción aquí.



Obviamente, cuando se utiliza como herramienta de administración del sistema, que era el propósito original de psexec, no hay nada de malo en el zumbido de todos estos mecanismos de Windows. Para un atacante, sin embargo, psexec crearía complicaciones, y para un interno cauteloso y astuto como Snowden, psexec o una utilidad similar sería demasiado arriesgado.



Y luego viene Smbexec



SMB es una forma inteligente y sigilosa de transferir archivos entre servidores, y los piratas informáticos se han infiltrado directamente en SMB durante siglos. Supongo que todo el mundo ya sabe que no debería abrir los puertos SMB 445 y 139 a Internet, ¿verdad?



En Defcon en 2013, Eric Milman ( brav0hax ) lanzó smbexec para que los probadores de penetración pudieran probar la piratería sigilosa de SMB. No conozco toda la historia, pero luego Impacket refinó aún más smbexec. De hecho, para mis pruebas, descargué los scripts de Impacket en python desde Github .



A diferencia de psexec, smbexec evitatransferir un archivo binario potencialmente detectable a la máquina de destino. En cambio, la utilidad vive completamente de la hierba al ejecutar la línea de comandos local de Windows.



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



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





¿No es esta la mejor manera de redirigir E / S? Por cierto, la creación del servicio tiene el ID de evento 7045.



Al igual que psexec, también crea un servicio que hace todo el trabajo, pero luego se elimina el servicio ; ¡solo se usa una vez para ejecutar el comando y luego desaparece! Un oficial de seguridad de la información que supervise la máquina de la víctima no podrá detectar indicadores obvios de un ataque: no hay ningún archivo ejecutable malicioso, no se ha instalado ningún servicio persistente y no hay evidencia de que se esté utilizando RPC, ya que SMB es el único medio para transferir datos. ¡Brillante!



Al mismo tiempo, un "pseudo-shell" está disponible desde el lado del atacante con demoras entre el envío de un comando y la recepción de una respuesta. Pero esto es suficiente para que un atacante, ya sea interno o externo que ya tiene un punto de apoyo, comience a buscar contenido interesante.







Para enviar datos desde la máquina de destino a la máquina del atacante, se utiliza smbclient . Sí, esta es la misma utilidad Samba , pero modificada para el script Python por Impacket. De hecho, smbclient le permite organizar de forma encubierta transferencias FTP sobre SMB.



Demos un paso atrás y pensemos en lo que puede hacer por el empleado. En mi escenario ficticio, digamos que un bloguero, analista financiero o consultor de seguridad bien pagado puede usar una computadora portátil personal para trabajar. Como resultado de algún proceso mágico, se ofende con la compañía y "hace todo lo posible". Dependiendo del sistema operativo de la computadora portátil, usa la versión Python de Impact o la versión de Windows de smbexec o smbclient como un archivo .exe.



Al igual que Snowden, aprende la contraseña de otro usuario, ya sea mirándola por encima del hombro, o tiene suerte y se topa con un archivo de texto con la contraseña. Y con estas credenciales, comienza a investigar el sistema en un nuevo nivel de privilegios.



Hackear DCC: no necesitamos ningún Mimikatz estúpido



En mis publicaciones anteriores de pentest, usé mucho mimikatz. Esta es una gran herramienta para interceptar credenciales: hash NTLM e incluso contraseñas de texto sin formato ocultas dentro de las computadoras portátiles y esperando ser utilizadas.

Los tiempos han cambiado. Las herramientas de monitoreo se han vuelto mejores para detectar y bloquear mimikatz. Los administradores de seguridad de la información también han obtenido más opciones para mitigar los riesgos asociados con los ataques pass the hash (en lo sucesivo, PtH).

Entonces, ¿qué tiene que hacer un empleado inteligente para recopilar credenciales adicionales sin usar mimikatz?



Impacket incluye una utilidad llamada secretsdumpque obtiene las credenciales de la caché de credenciales de dominio, o DCC para abreviar. Hasta donde tengo entendido, si un usuario de dominio inicia sesión en un servidor pero el controlador de dominio no está disponible, DCC permite que el servidor autentique al usuario. De todos modos, secretsdump te permite volcar todos estos hashes, si están disponibles.



Los hash DCC no son hash NTML y no se pueden usar para un ataque PtH .



Bueno, puedes intentar descifrarlos para obtener la contraseña original. Sin embargo, Microsoft se volvió más inteligente con DCC y se volvió extremadamente difícil descifrar los hash de DCC. Sí, existe hashcat , "el selector de contraseñas más rápido del mundo", pero requiere una GPU para funcionar de manera eficiente.



En cambio, intentemos pensar como Snowden. El empleado puede hacer ingeniería social cara a cara y posiblemente encontrar alguna información sobre la persona cuya contraseña quiere descifrar. Por ejemplo, averigüe si la cuenta en línea de esta persona alguna vez ha sido pirateada y examine su contraseña de texto sin cifrar en busca de pistas.



Y este es el escenario al que decidí ir. Supongamos que un conocedor se entera de que su jefe, Cruella, ha sido pirateado varias veces en diferentes recursos web. Después de analizar varias de estas contraseñas, se da cuenta de que Cruella prefiere usar el formato de nombre del equipo de béisbol "Yankees" seguido del año en curso, "Yankees2015".



Si actualmente está intentando reproducir esto en casa, puede descargar una pequeña "C"código que implementa el algoritmo de hash DCC y lo compila. John the Ripper agregó soporte DCC por cierto, por lo que tú también puedes usarlo. Supongamos que alguien con información privilegiada no quiere involucrarse en aprender sobre John the Ripper y le gusta ejecutar "gcc" en código C heredado.



Mientras representaba el papel de un informante, ejecuté varias combinaciones diferentes y al final pude encontrar que la contraseña de Cruella era "Yankees2019" (ver más abajo). ¡Misión cumplida!





Con un poco de ingeniería social, un poco de adivinación y una pizca de Maltego, estás en camino de descifrar el hash DCC.





Propongo acabar con esto. Volveremos a esta pregunta en otras publicaciones y veremos métodos de ataque aún más lentos y sigilosos, mientras seguimos confiando en el excelente conjunto de utilidades de Impacket.



All Articles