Katz.js, un Mimikatz indetectable en Javascript con versi贸n Rubber Ducky

Muchos de nosotros al movernos por Windows y usar herramientas para pentesting o para realizar ataques de cualquier tipo tenemos que desactivar el antivirus para que no se nos borren las que tenemos instaladas o tenemos que crear excepciones para que no sean detectadas, esto es debido a que muchos AV las detectan como una "HackTool" o incluso como un troyano.

Con DotNet2JScript se acabar谩n en su mayor铆a estos problemas dado que esta herramienta nos permitir谩 convertir una aplicaci贸n .NET v2 y algunas clases a JavaScript, en un formato que actualmente es totalmente indetectable por los antivirus.

Simplemente funciona implementando una clase que haga lo que quiera en "public". Como por ejemplo:

public class TestClass
{
    public TestClass()
    {
        /* Start notepad */
        Process.Start("notepad.exe");
    }
}
 
Debemos asegurarnos que es en "public". Tambi茅n tenemos la posibilidad de a帽adir el atributo "ComVisible(true)" por si queremos interactuar con el script posteriormente. Como por ejemplo:

[ComVisible(true)]
public class TestClass
{
    public void DoSomething(string arg) { }
}
 
Vamos a probar este 煤ltimo con el ejemplo que nos deja el creador en el repositorio de Github. Para ello deberemos compilar el programa que se encargar谩 de generar el Javascript que nos interesa, esto es muy sencillo, simplemente deberemos descargar el repositorio y abrir el proyecto "DotNetToJScript.sln" con Microsoft Visual Studio, posteriormente en una pesta帽a de arriba clickeamos en compilar y luego en compilar soluci贸n, despu茅s encontraremos nuestro programa en la ruta \...\DotNetToJScript-master\DotNetToJScript-master\DotNetToJScript\bin\Debug\DonNetToJScript.exe.

Ahora pasaremos a compilar el ejemplo:

 
A continuaci贸n pasaremos el resultado que se encuentra en la carpeta "Debug" por DotNetToJScript tambi茅n compilado, esto se realiza con el siguiente comando: DotNetToJScript.exe ExampleAssembly.dll -o test.js y en la misma carpeta aparecer谩 un archivo test.js que ejecutaremos usando: cscript .\test.js, y obtendremos la aplicaci贸n interactiva que mencion茅 anteriormente.


Cabe destacar que la aplicaci贸n tiene m谩s par谩metros que podremos ver si ejecutamos el comando DotNetToJScript.exe -h.

En mi opini贸n, esta herramienta no ha sido creada con el objetivo de "vacilar" a los antivirus y hacer FUD a las aplicaciones. Pero Casey Smith, mayormente conocido como subTee, decidi贸 usar DotNetToJScript para convertir la conocid铆sima herramienta, Mimikatz, a Javascript, lo que gener贸 un script de 59840 l铆neas (casi na') de las cuales, el 99% son totalmente ilegibles. A su vez, la herramienta gener贸 un script totalmente FUD, a diferencia del original Mimikatz. El link del script es el siguiente: https://gist.github.com/subTee/b30e0bcc7645c790fcd993cfd0ad622f.

Vamos a comprobar esta afirmaci贸n y vamos a ver la comparaci贸n en detecciones con el Mimikatz original:


Vaya, 42/62 detecciones de antivirus, es cas铆 seguro que si realizaremos un ataque fallido si usamos mimikatz.exe como tal. Vamos a probar con el script:


¡Sorpresa!, 0/49 detecciones, un script totalmente indetectable por los antivirus.

Pero no todo pod铆an ser cosas buenas, el script tiene un par de defectos: el primero, este script es una versi贸n desactualizada publicada el 13 de Noviembre de 2015 de Mimikatz, lo que quiere decir que algunos de sus m贸dulos no funcionan como por ejemplo sekurlsa en Windows 10, pero en Windows 7 sigue funcionando a la perfecci贸n y desconozco si en Windows 8 y 8.1 tambi茅n; su segundo defecto reside en la lentitud de su ejecuci贸n, el script tarda bastante de iniciarse (1 min aprox.)

Su uso es muy sencillo, simplemente copiamos todo el c贸digo del script en una bloc de notas, lo guardamos como katz.js, abrimos una terminal como administrador y ejecutamos el comando cscript .\katz.js, esperamos un poco y voal谩, Mimikatz listo para usar.
C:\Users\Alejandro\Desktop>cscript .\katz.js
Microsoft (R) Windows Script Host versi贸n 5.812
Copyright (C) Microsoft Corporation. Reservados todos los derechos.

Downloaded Latest
Preferred Load Address = 140000000
Allocated Space For 65000 at 2448E680000
Section .text   , Copied To 2448E681000
Section .rdata  , Copied To 2448E6AF000
Section .data   , Copied To 2448E6D9000
Section .pdata  , Copied To 2448E6DD000
Section .rsrc   , Copied To 2448E6DF000
Section .reloc  , Copied To 2448E6E3000
Delta = 2434E680000
Executing Mimikatz

  .#####.   mimikatz 2.0 alpha (x64) release "Kiwi en C" (Nov 13 2015 00:44:32)
 .## ^ ##.
 ## / \ ##  /* * *
 ## \ / ##   Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
 '## v ##'   http://blog.gentilkiwi.com/mimikatz             (oe.eo)
  '#####'                                     with 17 modules * * */


mimikatz(commandline) # .\katz.js
ERROR mimikatz_doLocal ; ".\katz.js" command of "standard" module not found !

Module :        standard
Full name :     Standard module
Description :   Basic commands (does not require module name)

            exit  -  Quit mimikatz
             cls  -  Clear screen (doesn't work with redirections, like PsExec)
          answer  -  Answer to the Ultimate Question of Life, the Universe, and Everything
          coffee  -  Please, make me a coffee!
           sleep  -  Sleep an amount of milliseconds
             log  -  Log mimikatz input/output to file
          base64  -  Switch file output/base64 output
         version  -  Display some version informations
              cd  -  Change or display current directory
        markruss  -  Mark about PtH

mimikatz # 

Gracias a esto, me he animado a escribir un par de payloads muy 煤tiles para el USB Rubber Ducky que se encuentran en un repositorio del GitHub de Hackplayers, en los mismos vienen explicados paso a paso como funciona cada payload, obviando la sencillez de la sintaxis del Rubber Ducky.

Link:  https://github.com/Hackplayers/DuckyKatzJS

Comentarios

  1. Que nos gusta Mimikatz jejeje. Buen trabajo Alex.

    ResponderEliminar
  2. "simplemente deberemos descargar el repositorio y abrir el proyecto "DotNetToJScript.sln" con Microsoft Visual Studio, posteriormente en una pesta帽a de arriba clickeamos en compilar y luego en compilar soluci贸n"
    ¡No tan r谩pido! Algunos tuvimos que a帽adir la referencia a NDesk.Options antes de compilar.

    ResponderEliminar
    Respuestas
    1. Mmmmm yo no recuerdo eso que dices que hay que a帽adir, simplemente abr铆 la soluci贸n y lo puse a compilar, no tuve que hacer nada m谩s.

      Eliminar
    2. Bueno, yo obtuve errores as铆 porque la referencia que ven铆a en la soluci贸n no me cargaba correctamente.
      Una vez a帽adida la ruta a la dll todo funciona como la seda.

      Eliminar
  3. hola, el problema es que se tarda mucho, y no me inicia solo se queda en y de ahi no pasa.

    -----------------------------
    C:\>cscript .\katz.js
    cscript .\katz.js
    Microsoft (R) Windows Script Host versi�n 5.8
    Copyright (C) Microsoft Corporation 1996-2006. Reservados todos los derechos.

    ----------------

    ResponderEliminar
    Respuestas
    1. Puede ser que tarde m谩s o menos dependiendo de las caracter铆sticas de tu ordenador, lo que tarde en procesar el script a mi por ejemplo me tarda en cargar 1 minuto, he probado en otro ordenador m谩s viejo y con un procesador antiguo y me ha llegado a tarda m谩s de 2 minutos...

      Eliminar
  4. actualmente es detectado por 15 antivirus :(

    ResponderEliminar

Publicar un comentario