En esta entrada veremos como es posible saltar la protección de un antivirus cuando este detecta algun nombre de función como maliciosa en scripts de Powershell, nuestro objetivo de esta entrada específicamente es Windows Defender.
Al utilizar Powerview este fin de semana me tope con que el amigo incondicional Windows Defender detectaba como malicioso por el nombre de las funciones que este lleva evitando que copie el script al escritorio.
Como se ve en las capturas de pantalla, no tenemos privilegios para darle como una excepción a la ubicación del script. Por todo ello primero veremos que es Powerview una breve introducción.
Que es Powerview
Es un script utilizado para realizar enumeración en un Dominio de Windows, esto con el fin de realizar tareas automatizadas y obtener información del mismo, esta realizado en powershell y desarrollado por Will Schroeder.
Tras estar revisando y probando note que la versión dev no es detectada como maliciosa, pero a pesar de ello necesitaba ejecutar Powerview para ir practicando las funciones, en esto recorde uno de los métodos conocidos de cambio de nombre de las variables y/o funciones para que el mismo no sea detectado como malicioso, es decir cambiar un CAT por MAT.
Cuando un script tiene pocas funciones o es reducido uno lo llega a realizar de manera manual, pero en este caso de Powerview puede ser complicado pero no difícil.
Que es Pyfuscation
En este proceso encontré el script realizado en Python el cual es Pyfuscation el cual permite realizar la modificación de los nombres de funciones, variables y parámetros.
Instalación
Requerimos contar con Python3 en el equipo, además de tener git para realizar la clonación del repositorio, o por ultimo descargarlo desde la interfaz web de Github que es donde se encuentra el proyecto.
|
|
Al ejecutar la herramienta, tenemos el siguiente menú con las opciones.
|
|
Parámetros del script
Los parámetros que son ejecutados en el script son los siguientes, cabe resaltar que son pocos.
- -h –help, muestra el mensaje de ayuda.
- -f Realiza la ofuscación de funciones.
- -v Realiza la ofuscación de variables.
- -p Realiza la ofuscación de parámetros.
Bypass a Windows Defender
Volvemos al motivo del post de hoy, que es la detección de Defender, procedí realizar el cambio de los nombres de las funciones como se ve a continuación
|
|
La salida del script nos muestra los nombres que son modificados, siendo esta tarea bastante rápida.
Tenemos disponible una nueva carpeta con dos ficheros el nuevo Powerview con la modificación de los nombres de las funciones y un fichero de texto con los nuevos nombres.
Ahora al mandarlo al equipo donde me encuentro trabajando el antivirus no pita, y como ven en la captura anterior Get-NetUser ahora puede ser llamado como benefice, en este caso obtengo el nombre del usuario y la ultima modificación de la contraseña que tuvo.
Hice la misma prueba con otros scripts, además de mimikatz teniendo como resultado el bypass respectivo, por esta oportunidad específicamente mi objetivo fue Windows defender, si realzas la prueba con otro entorno por favor comentarlo para ir sumando al post.
Bypass cambiando una letra
NOTA: El siguiente proceso fue identificado el 13 de Febrero por ir probando y no recordarme el nombre de las nuevas funciones a ejecutar, aun me parece tonto y bobo, ya que solo al retirar, cambiar una letra del script en este caso el Windows Defender deja de pillarlo y eliminar Powerview, o cualquier otra lo que entiendo que sucede es que al modificarlo cambiamos la firma de detección y saltamos de forma directa el antivirus.
Lo que probe fue quitar los comentarios de todo el script por ello en el tweet inicial que escribi mencionaba que con sed se realiza el bypass del antivirus.
One letter bypass?
Regards,
Snifer