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
.
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.
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.
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.
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:
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