ATTPwn: Nuevas funciones de Bypass UAC y Windows Defender
Como ya sabéis nuestra querida herramienta ATTPwn, que podéis encontrar en el repositorio de Github, ha viajado por distintos eventos este verano como BlackHat, DEFCON, 8dot8 edición Las Vegas y recientemente a la Ekoparty. Hace poco más de una semana publicábamos en el blog como implementar vuestro propio script. Pero no solo eso, ya que hemos seguido avanzando en ella, así que os vamos a actualizar sobre ella.
Hace unos días, se ha liberado una nueva actualización que conlleva la integración de nuevas funciones, que explicaremos a continuación, la reparación de algunos bugs y la simplificación de la visualización de resultados en la función Get-Users.
Explicación de las funciones:
1) Defender Realtime: Permite al usuario evadir la protección del antivirus de Microsoft desactivando Windows Defender. Como pre-requisito debe ser ejecutada en un sistema operativo Windows 10 cuya versión sea anterior a la actualización 1903 de Windows Update que incluye Tamper Protection, o en la cual, dicha protección esté deshabilitada.
Figura 2: Función disable-realtime |
Para que esta función tenga éxito, deberemos tener privilegios de administrador. Por ello, se comprueba el ID del grupo al que pertenece el usuario que ejecuta la función. Si pertenece al grupo de administradores, cambiará el estado de protección en tiempo real valiéndose del comando de gestión de preferencias de Windows Defender, con la instrucción: Set-MpPreference -DisableRealtimeMonitoring $true Si ejecutamos la función con un nivel de privilegios medio-bajo, el resultado es el siguiente:
Figura 3: Se necesitan privilegios de administrador
Sin embargo, si ejecutamos la función desde una consola con privilegios de administrador, este será el resultado de su ejecución:
Figura 4: Deshabilitado de Windows Defender correcto con ATTPwn
2) Environment Injection: Esta función ejecuta un bypass del User Account Control mediante la creación de la ruta hkcu/environment. A continuación, se anida una propiedad al registro, cuyo valor es un comando. Dicho comando se ejecutará cuando se lance Scheduled Tasks y abrirá una shell con privilegios de administrador. Esta consola llamará a un nuevo warrior de ATTPwn, quien ejecutará otra función (la que el usuario requiera).
Figura 5: Función environment-variable-injection |
Esta función utiliza variables de entorno en un proceso para ejecutar acciones con integridad alta, en este caso Scheduled Tasks. Para ello crearemos el valor %windir% en el registro HCKU:/Environment. Este valor contendrá la siguiente instrucción:
cmd /K c:\windows\system32\windowspowershell\v1.0\powershell.exe -W maximized -C "+$command+" && REM
Dicha instrucción abrirá la shell o consola, mencionada anteriormente y ejecutará el comando $command que hayamos declarado. En este caso, como ya hemos comentado, la invocación de un warrior de ATTPwn. Para lanzarlo, ejecutaremos schtasks y obtendremos un proceso de integridad alta.
Figura 6: Ejecución de Environment Injection
3) Bypass_scanbuffer: Ejecuta un bypass de AMSI, basado en el “abuse” del Scanbuffer. Hemos adaptado la función que hicimos para ibombshell, y la diferencia más clara es la comunicación con nuestro Command&Control para devolver los resultados de la función y determinar si ha ido bien o no el plan.
Con esta nueva función en ATTPwn podremos lanzar planes más complejos, en el siguiente vídeo podéis observar cómo el antivirus “caza” un plan donde intentamos elevar una shell con el script de wsreset para posteriormente volcar las credenciales con powerdump.
Para evadir las medidas de Windows Defender, será necesario añadir como primeras tareas de nuestro plan un bypass para estas medidas, en este caso nos centramos en Scanbuffer.
4) wsreset: Es un bypass de UAC también adaptado de ibombshell. Este bypass de UAC se basa en la debilidad de wsreset.exe donde hay que comprobar la propiedad “autoelevated”
Una vez hacemos el bypass, obtendremos una nueva consola con privilegios, la cuál se genera con el mismo identificador de warrior. En la demostración veremos como hay dos tarjetas con el mismo warrior, pero con tareas diferentes, la primera tarjeta tendrá la tarea de scanbuffer y la segunda la elevación de la consola y el volcado de las credenciales.
5) copy_svchost: Consiste en un movimiento lateral que se aprovecha de la cuenta de administrador siempre que esté habilitada y coincida tanto el usuario como la contraseña en el equipo hacia dónde queremos hacer dicho movimiento lateral.
Esta parte del código es la función principal del script donde copiamos una cmd.exe con el nombre svchost.exe. En esta segunda parte, utilizamos el givemedata para recoger información que tiene el datastore para este warrior, en este caso necesitamos direcciones IP para poder hacer el movimiento lateral.
En el caso de ejemplo añadimos manualmente la dirección IP del movimiento lateral a nuestro datastore para que el warrior tarde menos en hacer el proceso, pero se puede utilizar la función de portscan la cual hará un escaneo de la interfaz de red para buscar y guardar otras máquinas que estén levantadas para intentar hacer ese movimiento lateral con otras máquinas de la red.
En próximas actualizaciones veremos la implementación de nuevas características con el objetivo de que faciliten la integración de funciones de explotación, bypass, elevación de privilegios y post-explotación en la herramienta por parte de cualquiera que quiera aportar al proyecto de ATTPwn.
Figura 8: PoC ATTPwn con wsreset y Powerdump cazado
Para evadir las medidas de Windows Defender, será necesario añadir como primeras tareas de nuestro plan un bypass para estas medidas, en este caso nos centramos en Scanbuffer.
4) wsreset: Es un bypass de UAC también adaptado de ibombshell. Este bypass de UAC se basa en la debilidad de wsreset.exe donde hay que comprobar la propiedad “autoelevated”
Figura 9: Función wsreset en ATTPwn |
Una vez hacemos el bypass, obtendremos una nueva consola con privilegios, la cuál se genera con el mismo identificador de warrior. En la demostración veremos como hay dos tarjetas con el mismo warrior, pero con tareas diferentes, la primera tarjeta tendrá la tarea de scanbuffer y la segunda la elevación de la consola y el volcado de las credenciales.
Figura 10: Bypass scanbuffer + wsreset + powerdump
5) copy_svchost: Consiste en un movimiento lateral que se aprovecha de la cuenta de administrador siempre que esté habilitada y coincida tanto el usuario como la contraseña en el equipo hacia dónde queremos hacer dicho movimiento lateral.
Figura 11: Función svchost parte 1 |
Esta parte del código es la función principal del script donde copiamos una cmd.exe con el nombre svchost.exe. En esta segunda parte, utilizamos el givemedata para recoger información que tiene el datastore para este warrior, en este caso necesitamos direcciones IP para poder hacer el movimiento lateral.
Figura 12: Función svchost parte 2 |
En el caso de ejemplo añadimos manualmente la dirección IP del movimiento lateral a nuestro datastore para que el warrior tarde menos en hacer el proceso, pero se puede utilizar la función de portscan la cual hará un escaneo de la interfaz de red para buscar y guardar otras máquinas que estén levantadas para intentar hacer ese movimiento lateral con otras máquinas de la red.
Figura 13: ATTPwn PoC Bypass scan buffer + enviroment + get users + copy_host
En próximas actualizaciones veremos la implementación de nuevas características con el objetivo de que faciliten la integración de funciones de explotación, bypass, elevación de privilegios y post-explotación en la herramienta por parte de cualquiera que quiera aportar al proyecto de ATTPwn.
Y si quieres profundizar en todo lo que estamos haciendo, con estos frameworks para los equipos Red Team, os recomiendo la lectura del libro de Empire: Hacking Avanzado en el Red Team de Pablo González donde se habla de Empire, UAC-A-Mola e iBombShell, frameworks de pentesting que complementan perfectamente a lo que estamos haciendo con ATTPwn.
Autores:
Autores:
Luis E. Álvarez, desarrollador y miembro del equipo Ideas Locas CDCO de Telefónica.Víctor Rodríguez Boyero, desarrollador y Security Researcher en el equipo de Ideas Locas de CDCO de Telefónica.
1 comentario:
Para qué querría alguien desactivar el Windows Defender? Si me lo explica se lo agradecería mucho, ya que hay confusión en la comunidad sobre este tema.
Publicar un comentario