Xencrypt: Evasión en Windows 10 con Powershell usando cifrado AES
Los investigadores Xentrooy y SecForce han publicado un crypter en Powershell. Es un proyecto bastante nuevo, ya que si se ve el Github consta de pocos días. Llamó mi atención, ya que todo lo que es Powershell me llama la atención, debido a que los amigos de HackPlayers publicaron un interesante artículo.
Sin duda Xencrypt propone una solución interesante al juego de siempre, el juego de la evasión. El gato y el ratón. El que detecta con el que intenta no ser detectado. Como digo siempre en las clases, las protecciones mejoran y otros intentan evadirlas, con el objetivo de mejorar la protección. Este es el juego de la ciberseguridad, en cualquier protección que se precie.
PowerShell para Atacantes
Además, quería probar esta funcionalidad y herramienta, ya que creo que es un factor interesante, todo lo que es la evasión de protecciones. Viendo que me queda poco tiempo para el taller de Rooted Lab el día 3 de marzo sobre Offensive Powershell. Un taller donde le daremos ‘cera’ a Windows 10 y la Powershell. Había que probarlo e incluirlo.
En otras palabras, Xencrypt proporciona un crypter que permite llevar a cabo la ofuscación de scripts y código para evitar su detección. La idea de Xencrypt es poder generar infinitas formas diferentes, es decir, tener diferentes scripts para ejecutar lo mismo que permiten la no detección por parte de un antivirus. Xencrypt es un crypter de Powershell, el cual utilizar cifrado AES y compresión GZip. Cada vez que se invoca se genera un script nuevo, con una salida o ejecución igual a lo que se quiere. En definitiva, como bien dicen los autores de la herramienta, es esencia es para Powershell un PE Crypter.
En otras palabras, con cada ejecución de Xencrypt, lo importante, es el gran número de variantes de script que se genera. Es decir, si tenemos un Mimikatz en Powershell, el cual es ‘cazado’ por el antivirus, se puede pasar por Xencrypt y la salida de la ejecución será un nuevo código de Mimikatz ofuscado y cifrado. Cuando lo llevemos al equipo dónde antes se detectaba, la probabilidad de que lo detecte el antivirus habrá disminuido.
Probando Xencrypt
Lo primero era hacer una prueba con el propio script de Powershell. Si lo cargamos directamente en una Powershell con Windows 10 puede que nos salte el antivirus, ya que este código ya es detectado, por lo que se puede probar, pero hay que tenerlo en cuenta. Si vamos a una Powershell en un Windows 7, AMSI no estará para poder detectarlo.
La ejecución de la función Invoke-Xencrypt es muy sencilla. Tiene tres parámetros. El parámetro infile indica que el fichero de entrada. El parámetro outfile refleja el fichero de salida, el cual estará ya cifrado y ofuscado. El parámetro iterations indicará el número de iteraciones que se realizará. Este es uno de los factores que hacen que las variantes de la salida sean casi infinitas.
A continuación, se puede ver la salida del script prueba.ps1. El código hace lo mismo que el de entrada, solo que tiene un aspecto bastante diferente. En tiempo de ejecución se llevará a cabo un descifrado de la acción y realizará una ejecución del código. Se intenta evitar que palabras clave, rutas claves y etiquetas claves sean detectadas por AMSI.
Las características que indican los autores y que son muy interesantes sobre esta herramienta son las siguientes:
Por supuesto, hay que probarlo en Windows 10 con el AMSI y las posibilidades que este ofrece. Ya hemos hablado en este blog sobre AMSI y diferentes técnicas de bypass y que nuestra iBombshell ya implementa. Al final, esto es probar, probar y probar en busca de la evasión. El Ethical Hacking es así.
Saludos,
Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advanced Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root", “Pentesting con Powershell” y de "Empire: Hacking Avanzado en el Red Team", Microsoft MVP en Seguridad y Security Researcher en el equipo de "Ideas Locas" de la unidad CDCO de Telefónica. Para consultas puedes usar el Buzón Público para contactar con Pablo González
Figura 1: Xencrypt: Evasión en Windows 10 con Powershell usando cifrado AES |
Sin duda Xencrypt propone una solución interesante al juego de siempre, el juego de la evasión. El gato y el ratón. El que detecta con el que intenta no ser detectado. Como digo siempre en las clases, las protecciones mejoran y otros intentan evadirlas, con el objetivo de mejorar la protección. Este es el juego de la ciberseguridad, en cualquier protección que se precie.
PowerShell para Atacantes
Además, quería probar esta funcionalidad y herramienta, ya que creo que es un factor interesante, todo lo que es la evasión de protecciones. Viendo que me queda poco tiempo para el taller de Rooted Lab el día 3 de marzo sobre Offensive Powershell. Un taller donde le daremos ‘cera’ a Windows 10 y la Powershell. Había que probarlo e incluirlo.
Figura 4: Libro de Pentesting con PowerShell 2ª Edición de Pablo González |
En otras palabras, Xencrypt proporciona un crypter que permite llevar a cabo la ofuscación de scripts y código para evitar su detección. La idea de Xencrypt es poder generar infinitas formas diferentes, es decir, tener diferentes scripts para ejecutar lo mismo que permiten la no detección por parte de un antivirus. Xencrypt es un crypter de Powershell, el cual utilizar cifrado AES y compresión GZip. Cada vez que se invoca se genera un script nuevo, con una salida o ejecución igual a lo que se quiere. En definitiva, como bien dicen los autores de la herramienta, es esencia es para Powershell un PE Crypter.
Figura 3: Xencrypt en GitHub |
En otras palabras, con cada ejecución de Xencrypt, lo importante, es el gran número de variantes de script que se genera. Es decir, si tenemos un Mimikatz en Powershell, el cual es ‘cazado’ por el antivirus, se puede pasar por Xencrypt y la salida de la ejecución será un nuevo código de Mimikatz ofuscado y cifrado. Cuando lo llevemos al equipo dónde antes se detectaba, la probabilidad de que lo detecte el antivirus habrá disminuido.
Probando Xencrypt
Lo primero era hacer una prueba con el propio script de Powershell. Si lo cargamos directamente en una Powershell con Windows 10 puede que nos salte el antivirus, ya que este código ya es detectado, por lo que se puede probar, pero hay que tenerlo en cuenta. Si vamos a una Powershell en un Windows 7, AMSI no estará para poder detectarlo.
La ejecución de la función Invoke-Xencrypt es muy sencilla. Tiene tres parámetros. El parámetro infile indica que el fichero de entrada. El parámetro outfile refleja el fichero de salida, el cual estará ya cifrado y ofuscado. El parámetro iterations indicará el número de iteraciones que se realizará. Este es uno de los factores que hacen que las variantes de la salida sean casi infinitas.
Figura 4: Función Invoke-Xencrypt |
A continuación, se puede ver la salida del script prueba.ps1. El código hace lo mismo que el de entrada, solo que tiene un aspecto bastante diferente. En tiempo de ejecución se llevará a cabo un descifrado de la acción y realizará una ejecución del código. Se intenta evitar que palabras clave, rutas claves y etiquetas claves sean detectadas por AMSI.
Figura 5: Salida del script prueba.ps1 |
Las características que indican los autores y que son muy interesantes sobre esta herramienta son las siguientes:
• Evasión de AMSI y AV modernos.
• Comprime y cifra scripts.
• El overhead es mínimo, incluso negativo.
• Variables aleatorias.
• Cifrado aleatorio con máxima entropía.
• Capas recursivas (o iteraciones) hasta 500.Es fácil de modificar, quizá sea el punto más interesante, para poder crear una variante propia y que mejore la evasión en un momento determinado. Probando el prueba.ps1 con diferentes motores de antivirus, la salida es más que interesante.
Figura 6: Script ofuscado bypasseando frimas de AV |
Por supuesto, hay que probarlo en Windows 10 con el AMSI y las posibilidades que este ofrece. Ya hemos hablado en este blog sobre AMSI y diferentes técnicas de bypass y que nuestra iBombshell ya implementa. Al final, esto es probar, probar y probar en busca de la evasión. El Ethical Hacking es así.
Saludos,
Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advanced Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root", “Pentesting con Powershell” y de "Empire: Hacking Avanzado en el Red Team", Microsoft MVP en Seguridad y Security Researcher en el equipo de "Ideas Locas" de la unidad CDCO de Telefónica. Para consultas puedes usar el Buzón Público para contactar con Pablo González
Figura 11: Contactar con Pablo González |
1 comentario:
Gracias Pablo, muy interesante. Podrías aclararme, ¿cómo se gestiona el intercambio de clave de AES siendo simétrica? Saludos desde Colombia
Publicar un comentario