Criando Script em Python para quebrar senhas do Linux
Criando Script em Python para quebrar senhas do Linux
Sabemos
que existem vários scripts já prontos para quebrar senhas do Linux,
porém melhor do que saber usar alguma ferramenta pronta, é saber como
ela funciona e como criar seu script. Por este motivo iremos mostrar
como criar um script em python para quebrar senhas do Linux através de
uma wordlist.
Primeiramente precisamos entender como funcionar as senhas no Linux, as senhas no Linux são armazenadas no arquivo /etc/shadow e este arquivo armazena a senha real no formato criptografado (mais parecido com o hash da senha) para a conta do usuário com propriedades adicionais relacionadas à senha do usuário. Basicamente, ele armazena informações seguras da conta do usuário. Todos os campos são separados por dois pontos (:). Ele contém uma entrada por linha para cada usuário listado no arquivo /etc/passwd, conforme exemplo abaixo.
1º Campo: Usuário de acesso.
2º Campo: Senha do usuário criptografada.
A senha deve ter no mínimo 8 a 12 caracteres, incluindo caracteres especiais, dígitos, letras minúsculas e muito mais. Geralmente o formato da senha é definido como $id$salt$hash, O $id é o algoritmo usado no GNU/Linux da seguinte forma:
Agora vamos para o que interessa, primeiro iremos executar os comandos no modo interativo e no final irei deixar o exemplo de um script para automatizar o processo.
Podemos notar que a saída do comando crypt é exatamente igual a linha que temos no arquivo shadow para o usuário root:
Comparando as duas saídas, podemos identificar que a senha do usuário root neste caso é password.
Agora conforme prometido, segue o script automático ao qual você irá passar o arquivo shadow e uma wordlist como parâmetro e ele fará todo o resto!
Use o código: https://github.com/TiagoANeves/TDTLinuxPWD
Executando o script:
Obrigado e até o próximo tutorial!
Primeiramente precisamos entender como funcionar as senhas no Linux, as senhas no Linux são armazenadas no arquivo /etc/shadow e este arquivo armazena a senha real no formato criptografado (mais parecido com o hash da senha) para a conta do usuário com propriedades adicionais relacionadas à senha do usuário. Basicamente, ele armazena informações seguras da conta do usuário. Todos os campos são separados por dois pontos (:). Ele contém uma entrada por linha para cada usuário listado no arquivo /etc/passwd, conforme exemplo abaixo.
[root@centos ~]# head -n1 /etc/shadow
root:$6$UXCFfDA3$xvrZI5Sn/52dwMAbkjC1wwxepW5AsICxtwpnfCoEErCO7.
8ZjOndhZjr82RFqtQOASFBJ4jyHwcnwKFD8JqKH/:17700:0:99999:7::
1º Campo: Usuário de acesso.
2º Campo: Senha do usuário criptografada.
A senha deve ter no mínimo 8 a 12 caracteres, incluindo caracteres especiais, dígitos, letras minúsculas e muito mais. Geralmente o formato da senha é definido como $id$salt$hash, O $id é o algoritmo usado no GNU/Linux da seguinte forma:
- $1$ – MD5
- $2a$ – Blowfish
- $2y$ – Blowfish
- $5$ – SHA-256
- $6$ – SHA-512
Agora vamos para o que interessa, primeiro iremos executar os comandos no modo interativo e no final irei deixar o exemplo de um script para automatizar o processo.
- Execute o comando python no Linux:
[root@centos ~]# python
Python 2.7.5 (default, Aug 4 2017, 00:39:18)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> - Importe a biblioteca crypt:
>>> import crypt
- Crie uma variável com id e o salt da senha contida no arquivo shadow:
>>> salt = "$6$UXCFfDA3"
- Agora iremos executar a função crypt e analisar a saída do comando:
>>> crypt.crypt("password", salt) '$6$UXCFfDA3$xvrZI5Sn/52dwMAbkjC1wwxepW5AsICxtwpnfCoEErCO7.
8ZjOndhZjr82RFqtQOASFBJ4jyHwcnwKFD8JqKH/'
Podemos notar que a saída do comando crypt é exatamente igual a linha que temos no arquivo shadow para o usuário root:
[root@centos ~]# head -n1 /etc/shadow
root:$6$UXCFfDA3$xvrZI5Sn/52dwMAbkjC1wwxepW5AsICxtwpnfCoEErCO7.
8ZjOndhZjr82RFqtQOASFBJ4jyHwcnwKFD8JqKH/:17700:0:99999:7:::
>>> crypt.crypt("password", salt)
'$6$UXCFfDA3$xvrZI5Sn/52dwMAbkjC1wwxepW5AsICxtwpnfCoEErCO7.
8ZjOndhZjr82RFqtQOASFBJ4jyHwcnwKFD8JqKH/'
Comparando as duas saídas, podemos identificar que a senha do usuário root neste caso é password.
Agora conforme prometido, segue o script automático ao qual você irá passar o arquivo shadow e uma wordlist como parâmetro e ele fará todo o resto!
[root@centos ~]# cat HSLinuxPWD.py
Use o código: https://github.com/TiagoANeves/TDTLinuxPWD
Executando o script:
[root@centos ~]# python HSLinuxPWD.py -s /etc/shadow -w wordlist.txt
Iniciando o programa...
Bruteforcing a senha do usuario root
Testando a senha 123456
Testando a senha 12345
Testando a senha 123456789
Testando a senha password
Senha encontrada! Password
Obrigado e até o próximo tutorial!