En esta quinta parte de la serie se explicarán otros scripts interesantes en Impacket que se aprovechan de SMB/MSRPC. Los post correspondientes a las partes anteriores se encuentran en los siguientes enlaces.

Network Hacking con Impacket – Parte 1
Network Hacking con Impacket – Parte 2
Network Hacking con Impacket – Parte 3
Network Hacking con Impacket – Parte 4

 

Manipulación del registro de Windows con reg.py

El registro de Windows es una pieza fundamental en la arquitectura del sistema operativo y por ese motivo es también uno de los puntos sobre los que se debe prestar más atención cuando se trata de enumerar un sistema Windows para post-explotación. En este sentido, conviene leer el post sobre 10 Subclaves interesantes en el registro de Windows para Hacking. El objetivo de este script es utilizar SMB y paquetes DCERPC cuidadosamente diseñados para proveer de una funcionalidad similar a la que se encuentra disponible en la herramienta REG.EXE en sistemas Windows.

En la imagen anterior se puede comprobar que aparecen cada una de los valores y su correspondiente tipo para la subclave “HKLM\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\WINLOGON”. Hay que tener en cuenta que el script requiere que se especifique la forma abreviada de la clave raíz, en este caso HKLM ya que si se envía el nombre completo HKEY_LOCAL_MACHINE el script lanzará un error indicado que no la encuentra. Por otro lado, tal como ocurría con otros scripts como el wmiexec.py, se encarga de habilitar el servicio de RemoteRegistry en el sistema si no está habilitado y cuando termina su ejecución restablece el estado del servicio a como estaba anteriormente.

Implementación de un servidor SMB en la máquina del atacante con smbserver.py

Se trata de una herramienta muy útil que sirve para levantar un servidor SMB para transferir ficheros entre la máquina objetivo y el servidor. Utilizar el servicio SMB para la transferencia de ficheros tiene varios beneficios, probablemente el más llamativo de cara al atacante es que podría llevarse a cabo la ejecución de payloads sin escribir en disco, es decir, realizar la ejecución del payload “fileless”. Esto de hecho ya se ha explicado anteriormente en el post Enumeración en Windows para Post-Explotación – Parte 5.

En la imagen anterior se puede apreciar cómo utilizar el script “smbserver.py” implementando un mecanismo de autenticación basado en usuario y contraseña. También se puede ver que se crea una unidad compartida con el nombre “METAFISICAMENTEIMPOSIBLE” y la cual se encuentra físicamente ubicada en el directorio “/tmp/Clasicos”. En la terminal inferior se puede ver cómo se produce la autenticación con dicho servidor gracias al comando “net use” y luego, cómo se listan las unidades compartidas con “net view”.

Enumeración de SIDs con lookupsid.py

Se trata de un script que se conecta a la máquina objetivo y utilizando la named pipe “\pipe\lsarpc” consigue enumerar usuarios locales y de dominio. Es una utilidad muy simple pero cuya implementación resulta interesante.  Al ver el código fuente se puede apreciar que se utiliza el componente lsad.hLsarQueryInformationPolicy2 el cual se encuentra incluido en el módulo dcerpc.v5 de Impacket y que precisamente se encarga de obtener información sobre el dominio, en este caso concreto su SID. A continuación crea un bucle y comienza a realizar peticiones contra el Domain Controller con el objetivo de obtener usuarios que coincidan con el SID solicitado en cada iteración del bucle y finalmente enseña un listado con aquellos que coinciden. Dicho bucle se puede controlar por medio del parámetro “maxRid“del script, su valor por defecto es 4000, lo que a efectos prácticos significa que se ejecutarán 4 iteraciones en el bucle.

Los resultados se enseñan en la terminal en un formato fácil de entender. Dicha información se obtiene precisamente del objeto de respuesta devuelto por lsad.hLsarQueryInformationPolicy2 que es una estructura bastante completa y permite acceder al tipo de SID, nombre e identificador.

Es una buena práctica leer el código fuente de estas utilidades ya que es la mejor forma de entender qué es lo que hacen, además de que ayudan a aprender mejor sobre cómo utilizar los componentes disponibles en Impacket que por supuesto, pueden ser utilizados por un pentester para crear sus propias herramientas o extender las que ya se encuentran en este proyecto. En los siguientes posts se seguirán explorando otras funcionalidades interesantes de Impacket.

Un saludo y Happy Hack!
Adastra.