Quebra de senha em sistemas Linux

Toda conta no sistema Linux tem uma entrada no arquivo '/etc/passwd'. Este arquivo contém entradas, uma linha por usuário, que especificam diversos atributos para cada conta. Cada entrada neste arquivo tem o mesmo formato, com campos separados por dois pontos ":"

usuário:senha:UID:GID:NomeReal:/diretório/pessoal:shell

Exemplo de arquivo '/etc/passwd':

root:x:0:0:root:/root:/bin/bash
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash
fulano:x:500:500:Fulano da Silva:/home/fulano:/bin/bash
siclano:x:501:501:Siclano Souza:/home/siclano:/bin/bash

"x": hash da senha omitida, conteúdo no arquivo /etc/shadow

O arquivo '/etc/shadow' armazena as senhas em um formato criptografado, com algumas informações adicionais relacionadas as senhas dos usuários. Contém uma entrada por linha, separada em campos, para cada usuário definido no '/etc/passwd'.

usuário:senha:última alteração:mínimo:máximo:aviso de expiração:inativo:expiração:

Exemplo de arquivo '/etc/shadow':

root:$6$utLIMf6gY40$Eoe.2M7uqTK1UBtnz3yz4T:14768:0:99999:7:::
daemon:*:14715:0:99999:7:::
lp:*:14715:0:99999:7:::
shutdown:*:14715:0:99999:7:::
ftp:*:14715:0:99999:7:::
nobody:*:14715:0:99999:7:::
postgres:!!:14855::::::
fulano:$6$nsd3oKxkg0$kIEvBac347MZXYfOnrc56ybz:14768:0:99999:7:::
siclano:$6$AaNgoXJSPsv/$cupVfet0y4cIYLpPSWyNQM:14771:0:99999:7:::
beltrano:$6$Qc3AYPleBx0$ikGowHMwzkqRz9QGZzQfwfu:14770:0:99999:7:::

A string completa com o hash, que representa a senha, é armazenada no arquivo '/etc/shadow' no formato $ID$SALT$SENHA. O caractere "$" (cifrão) delimita cada item da string. Por exemplo a linha a seguir (Nota: há uma quebra de linha no meio do hash para facilitar a apresentação, no arquivo é somente uma única linha):

nome_do_usuário:

$6$eKn9QGMQ$Ofi1OoClVpw/cCbTsD4YUKgfurcQoBxsZ9Tlk5VBjTpAjSYFt.M9shPtQVnouNr4/3PRDP/eMqkoWQpuBxsRk1:15362:0:99999:7:::

Unshadow

unshadow <arq passwd> <arq shadow> > <arquivo>

unshadow /etc/passwd /etc/shadow > unshadow

Em seguida utiliza o john para descobrir a senha com:

john <unshadow>

Enumeração SMB

O serviço de compartilhamento de arquivo, por padrão esta sendo executado na porta 445. Se mal configurado, permitindo NULL SESSION, pode ser útil para enumerar usuários e compartilhamentos

Ferramentas:

ENUM4LINUX

enum4linux [options] ip

enum4linux -U 192.168.0.33 → Enumera usuários
enum4lilnux -S 192.168.0.33 → Enumera compartilhamentos

Compartilhamento de Arquivos SMB

RPCClIENT

rpcclient -U <qualquer usuário> <ip>
rpcclient -U Teste 192.168.0.33
enumdousers → Usuários

NMAP

nmap --script smb-enum-users.nse -p445 <ip> → Usuários
nmap --script smb-enum-shares.nse -p445 <ip> → Compartilhamentos

SMBCLIENT

smbclient -L //<ip>/ -U <qualquer usuário> → Compartilhamentos
smbclient -L //192.168.0.33/ -U Teste

Hydra

Realiza ataque de dicionário a serviços.

Comando:

hydra -l <login> -p <senha> <IP> <serviço>
hydra -l root -p 12345 10.0.2.2 ssh

Podemos passar um dicionário de logins e senhas com o parâmetro -L e -P

hydra -L <arquivo_login> -P <arquivo_senha> <IP> <serviço>
hydra -L login.txt -P senha.txt 10.0.2.2 ssh

Podemos utilizar hydra para formulários web:

hydra -l admin -P /usr/share/dirb/wordlists/small.txt 192.168.52.133 http-post-form "/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login:Login failed" -V

John the Ripper(JtR)

John the Ripper é um utilitário que faz quebra de senhas através de três modos:

  • WordList → Ele tenta por uma Wordlist, testando as combinações de senha/usuário.
  • Single Crack → Ele tenta quebrar a senha usando as informações de login.
  • Incremental → Sendo o modo mais robusto no John the Ripper, ele tentará cada caractere possível até achar a senha correta. E por este motivo, é indicado o uso de parâmetros com o intuito de reduzir o tempo de quebra.

É necessário ter o arquivo contendo os hash das senhas do usuário(SAM ou shadow)

Comando:

john <arquivo> --wordlist=dicionario.txt
john <arquivo> --wordlist=dicionario.txt --format=NT
john <arquivo> --single
john <arquivo> --incremental
Senhas quebradas são armazenadas no arquivo:
<home_do_usuário)>/.john/john.pot

results matching ""

    No results matching ""