10 may 2018

Zerodoor: Un script con el que crear backdoors para diferentes plataformas

Hace unas semanas estuvimos viendo una herramienta llamada OWASPZSC con la que podíamos hacer la competencia al gran msfvenom de Metasploit. La herramienta de la que hablaremos hoy se llama Zerodoor, con la que se puede generar backdoors de forma sencilla para diferentes plataformas. Es cierto que Zerodoor no tiene el nivel que otras aplicaciones, pero es una nueva forma de automatizar el proceso de creación de backdoors. Además, Zerodoor proporciona la posibilidad de utilizar el listener de forma automática, dentro de la propia aplicación.

Como se indica en el Github del proyecto, Zerodoor es un script que permite generar backdoors para las necesidades diarias del pentester. Estas backdoors son generadas de forma sencilla, como se verá en el post. Una vez se genera el payload se puede generar un binario para *nixo windows, incluso se puede preparar para código Powershell. En este artículo se mostrarán las diferentes opciones que trae la herramienta, la cual, como se ha mencionado, ha implementado posibilidades para Powershell en las últimas versiones. Esto siempre le da un toque de podería a la herramienta.


Para arrancar la aplicación se puede ejecutar el único script de Pythonque encontramos, tras hacer el git clonedel proyecto. Lo primero que nos aparece es un mensaje de descarga legal y las diferentes opciones que tenemos de base:
·     Generar backdoors.
·     Configurar listener.

Para este primer ejemplo, vamos a optar por la opción backdoors, ya que crearemos una para Windows, tal y como se puede ver en la imagen.


Si pulsamos sobre la opción de backdoors, podemos ver cómo se ofrecen 3 opciones nuevas: la posibilidad de generar una backdooren Linux, la posibilidad de generar una backdooren Windows y la nueva posibilidad de generar instrucciones en Powershell que permitan ejecutar código remoto. De esta última opción hablaremos más tarde.

En la imagen, se puede ver cómo tras insertar la opción 2 se nos solicita varios datos, como son LHOST y LPORT, es decir, la dirección IP dónde la backdoordevolverá el control de la máquina remota y el puerto al que se tendrá que conectar la conexión inversa.


Una vez confirmados los datos que nos piden, se genera un nuevo fichero, el cual se puede ver en el sistema de archivo llamado winshell.c. En la imgen, se puede ver el código de la backdoor, la cual es muy simple, y puede ser modificada para mejorar sus prestaciones, al menos de cara a la evasión de los antivirus.

Se puede ver, que la backdoorejecutará un cmd.exey se conectará a una dirección IP y un puerto. Estos datos fueron configurados previamente en la ejecución del script y en la selección de las diferentes opciones.


PoC: Powerdoor en Zerodoor

La opción 3 del script de Zerodoor proporciona la posibilidad de utilizar Powershellpara ejecutar instrucciones, lo cual es realmente interesante, pensando también en la evasión. La instrucción que por defecto nos proporciona Zerodoor para Powershell es detectado, a día de hoy, por Windows Defender en Windows 10, lo cual es algo a tener en cuenta.

Cuando elegimos la opción de Powershellnos solicitan información sobre LHOST y el nombre del fichero que se buscará en el servidor. En este caso hemos elegido exec.txtcomo nombre de fichero que será buscado en el servidor y ejecutado. 


El fichero exec.txtcontiene el código Powershell que ejecutará las diferentes instrucciones. En este caso, y para probar, hemos optado por la instrucción calc.exe. Lógicamente si utilizaremos funciones, instrucciones o scripts más potentes orientados al Pentesting con Powershell, ganaríamos en posibilidades.

Cuando descargamos la instrucción a través del navegador y la pegamos en la Powershell, obtenemos una calculadora. Hemos logrado ejecutar código, a través de la Powershell y el límite lo marcaremos nosotros con todas las posibilidades que tenemos al alcance de la mano con Powershell.


Para finalizar, decir que es una herramienta que debemos tener en la mochila como script útil para generar una backdooren un momento determinado de un pentesting. Además, recomendamos el uso de OWASP ZSC o msfvenom, las cuales aportan un mayor número de funcionalidades y posibilidades. Tambien hay que decir que Zerodoor es una herramienta nueva que tiene posibilidades de mejorar.

3 may 2018

RID Hijacking en Windows 10: ¿Qué es y cómo aprovecharlo? #Metasploit #Pentesting

La técnica RID Hijacking permite a un pentester lograr persistencia en un Sistema con el máximo privilegio. Sin lugar a la duda, es una técnica necesaria de conocer, cuando se quiere lograr persistencia en un equipo y pasar de forma desapercibida.  En el pentestingpuede ser complejo mantener el acceso o lograr persistencia en algunos entornos. Sobre todo, si la creación de un usuario o la adición de un usuario a un grupo puede desencadenar en una nueva alerta en el sistema que alerte a un administrador. 

El RID Hijacking es una técnica sigilosay que permite a un usuario secuestrar el RIDRelative Identifier, de otro usuario, por ejemplo, el RIDdel usuario administrador. Esto es bastante potente, ya que se puede lograr que un usuario tenga como RID, el famoso número 500, pero este usuario no pertenezca al grupo administradores. Como se puede ver es una acción sigilosa. ¿Qué ocurre cuando el usuario inicia sesión? Para Windows es el usuario Administrador, el que inicia, ya que el RIDes el suyo. 

El ataque permite:

·     Asignar privilegios de la cuenta secuestrada a la cuenta del atacante, incluso si la cuenta secuestrada está deshabilitada.
·     Permite la autenticación con las credenciales de la cuenta del atacante, incluso de forma remota, y obtener acceso autorizado con la identidad del usuario que ha sido secuestrado.
·     Registrar cualquier operación que se ejecute en el registro de eventos como si fuera del usuario secuestrado, esta es una de las características más potentes. 

La técnica es muy eficiente y potente. En Metasploit ya se dispone de un módulo que permite automatizar esta técnica, para que sea mucho más sencillo y rápido utilizarla en un pentest


El módulo tiene una muy sencilla configuración por parte del pentester. Lógicamente, se necesitará una sesión remota en la máquina. El módulo dispone de varios atributos:

·   GETSYSTEM.Este atributo fuerza al módulo a intentar impersonarSYSTEM.La técnica requiere que seamos SYSTEMpara poder manipular elhive HKLMdel registro de Windows, dónde se almacena la información relativa a los RID de los usuarios. 
·     GUEST_ACCOUNT.Si se establece a true, se utilizará la cuenta de invitado como la cuenta del atacante.
·     RID.Se indica el RID que será asignado cuando se lleve a cabo el Hijacking. Por defecto, se muestra el RID con valor 500, perteneciente al Administrador “real” de la máquina.
·     USERNAME.Si es definido, este atributo indica el nombre de usuario al que se asignará el RID secuestrado.
·     PASSWORD. Si es definido, se establecerá esta contraseña a la cuenta de usuario indicada en USERNAME.

El ataque es funcional en diversos sistemas operativos Windows. Ha sido probado, según indica el creador del módulo, desde Windows XP, Windows Server 2003, Windows 8.1Windows 10. En este artículo veremos cómo funciona en Windows 10.

PoC: Jugando con RID Hijackingy la persistencia sigilosa

Partimos de la base de que tenemos una sesión remota en la máquina Windows 10. Para el ejemplo, digamos que tenemos una sesión remota, pero sin privilegio. Cuando utilicemos el módulo post/windows/manage/rid_hijackse observará que, al no tener privilegios de SYSTEM, el módulo fallará. 


La configuración del módulo es sencilla. El atributo USERNAMEes fundamental, y si se quiere cambiar la contraseña al usuario en cuestión también debe ser utilizado el atributo PASSWORD.

Para este ejemplo, no se tiene privilegio de SYSTEM, pero como el usuario que creó el proceso comprometido pertenece al grupo administradores se puede intentar un bypass de UAC. En este caso, se utiliza el módulo bypassuac_fodhelper. Esto nos recuerda al módulo que hicimosen ElevenPaths para UAC-A-Mola Framework. El bypassnos funciona, como se puede ver en la siguiente imagen, y obtener una nueva sesión, esta sí, ya con privilegios de SYSTEM


Volvemos al módulo de rid_hijack. Configuramos el módulo. Hay que fijarse en el atributo RID, PASSWORD,USERNAMESESSION. Configuramos el atributo USERNAMEcon el valor de la cuenta destino, en este caso es una cuenta denominada hacked. Como se puede ver la configuración del módulo es muy sencilla y no necesita más. El módulo trabajará en el hive HKLM\SAM, para realizar el secuestro. Por esta razón, es totalmente necesario que sea haya logrado privilegio de SYSTEM


Ejecutamos el comando runy obtener el secuestro del RID del usuario Administrador. En este momento, cuando iniciemos sesión con el usuario hacked, ya sea en local o en remoto, para Windows será como si hubiera iniciado sesión el usuario Administrador


Para ejemplificar lo comentado anteriormente, iniciamos sesión en la máquina Windows 10, abrimos una CMD.exe e intentamos crear un fichero en \Windows\System32. Como se puede ver en la imagen, podemos hacerlo, por lo que tenemos privilegios suficientes. Si mirásemos los grupos de los usuarios, veríamos cómo el usuario hackedsolo pertenece al grupo usersy no al de administradores. Además, no nos ha hecho falta saltar UAC, directamente la CMD.exe ha podido crear el fichero en una ruta protegida. 


Sin duda, una técnica muy interesante que está dando que hablar por la facilidad de su aprovechamiento y por las implicaciones que tiene. Una técnica nueva que aprender y llevar en la mochila del pentester