Xencrypt: un crypter en PowerShell

Xencrypt de Xentropy (@SamuelAnttila) y SecForce (@SECFORCE_LTD) es un crypter en PowerShell que utiliza cifrado AES y compresión Gzip/DEFLATE para generar con cada ejecución una cantidad casi infinita de variantes para bypassear antivirus. Lo hace comprimiendo y cifrando el script de entrada y almacenando los datos como un payload en un nuevo script que descifrará y descomprimirá antes de ejecutarlo. En esencia, es para PowerShell lo que es un crypter PE.
 

Características

- Evade AMSI y todos los AV modernos de VirusTotal (en el momento de escribir este post)
- Comprime y cifra los scripts de PowerShell
- Tiene un overhead mínimo y a menudo incluso negativo (gracias a la compresión)
- Aleatoriza nombres de variables para ofuscar aún más el código auxiliar de descifrado
- Aleatoriza el cifrado, la compresión e incluso el orden en que aparecen las declaraciones en el código para obtener la máxima entropía
- Súper fácil de modificar para crear una variante propia de cifrado
- Admite capas recursivas (crypter que cifra la salida cifrada...), probado hasta 500 capas.
- Admite Import-Module así como la ejecución normal siempre que el script de entrada también lo admita

Uso

Import-Module ./xencrypt.ps1
Invoke-Xencrypt -InFile invoke-mimikatz.ps1 -OutFile xenmimi.ps1


Ahora tendremos un archivo cifrado xenmimi.ps1 en el directorio de trabajo actual y podremos usarlo de la misma manera que lo haríamos con el script original, por lo que en este caso:

Import-Module ./xenmimi.ps1
Invoke-Mimikatz


También admite capas recursivas a través del parámetro -Iterations.

Invoke-Xencrypt -InFile invoke-mimikatz.ps1 -OutFile xenmimi.ps1 -Iterations 100
 
Esto lo comprimirá y cifrará 100 veces y es útil para bypassear AV dinámicos porque tienen un tiempo de espera para analizar el código. Ahí no hace falta usar sleeps que algunos escaneos dinámicos puede omitir para llegar al final: tienen que atravesar toda la cadena para llegar al payload malicioso, lo que generalmente nunca ocurre, ya que normalmente caducan después de un segundo o dos o escaneo.

Sin embargo, los archivos pueden crecer en tamaño y generar el archivo de salida puede llevar mucho tiempo dependiendo de los scripts y el número de iteraciones solicitadas.

Proyecto: https://github.com/the-xentropy/xencrypt

Comentarios