Trabalhando com Senhas

Começar. É Gratuito
ou inscrever-se com seu endereço de e-mail
Rocket clouds
Trabalhando com Senhas por Mind Map: Trabalhando com Senhas

1. Senhas e Hash no Linux

1.1. Passwd e Shadow

1.1.1. No linux, as informações sobre o usuário são gravadas em dois arquivos diferentes.

1.1.1.1. passwd

1.1.1.1.1. Localização

1.1.1.1.2. O que é

1.1.1.1.3. Conteúdo

1.1.1.1.4. Entendendo o passwd

1.1.1.2. shadow

1.1.1.2.1. Localização

1.1.1.2.2. O que é

1.1.1.2.3. Conteúdo

1.1.1.2.4. Entendendo o shadow

1.2. Conceitos

1.2.1. Hash

1.2.1.1. Método criptográfico que gera o 'checksum'.

1.2.1.2. Um processo de verificação de integridade realizado pelo sistema operacional.

1.2.1.3. Conhecido como processo de 'mão única'

1.2.1.3.1. Uma vez que o hashing foi realizado, não é possível traduzi-lo de volta.

1.2.1.4. Ele não muda quando usado com o mesmo arquivo ou string.

1.2.1.4.1. Uma pequena alteração no arquivo ou string muda o hash completamente.

1.2.1.5. Exemplos

1.2.1.5.1. md5sum

1.2.1.5.2. sha1sum

1.2.1.5.3. sha256sum

1.2.1.5.4. sha512sum

1.2.2. Outros métodos

1.2.2.1. Base64

1.2.2.1.1. Encriptando...

1.2.2.1.2. É possível traduzi-lo.

2. Trabalhando com senhas

2.1. Suponha que você tem acesso a uma determinada máquina dentro da rede-alvo mas ela não tem privilégios administrativos.

2.1.1. Por que pegar a senha?

2.1.1.1. Ao capturar as senhas, é possível realizar ataques que facilitem o acesso a um sistema interno da empresa.

2.2. Campos do /etc/shadow

2.2.1. Delimitação por dois pontos (:)

2.2.2. 1) Usuário: É o nome do usuário para login.

2.2.3. 2) Senha: É a senha encriptada por um hash. É dividida em alguns campos.

2.2.3.1. Dentro do campo de senha

2.2.3.1.1. $[ID]$[SALT]$[SENHA_ENCRIPTADA]

2.2.3.1.2. Delimitador comum

2.2.3.1.3. 1º Delimitador: ID do Hash

2.2.3.1.4. 2º Delimitador: Salt (sal)

2.2.3.1.5. 3º Delimitador: Senha encriptada

2.2.3.1.6. Com essas informações, é possível baixar uma lista de hashes e compará-las para encontrar a senha.

2.2.4. 3) Data de alteração: Dias desde 1 de Janeiro de 1970 até quando você alterou/adicionou a senha pela última vez.

2.2.5. 4) Mínimo: O mínimo de dias que você é obrigado a manter a sua senha após ser trocada.

2.2.6. 5) Máximo: O máximo de dias que você é permitido a manter uma mesma senha (após isso o usuário é forçado a mudá-la).

2.2.7. 6) Aviso: Quantos dias antes da senha expirar que será exibido um aviso sobre a necessidade de alterar a senha.

2.2.8. 7) Inativo: O número de dias após a expiração da senha que a conta será desativada.

2.2.9. 8) Expiração: Dias desde 1 de janeiro de 1970 que a conta está desabilitada.

3. Wordlist

3.1. O que é

3.1.1. Normalmente possuem hashes e palavras muito utilizadas por várias pessoas.

3.1.2. O ataque de bruteforce utiliza uma wordlist, realizando a comparação dos hashes com as da wordlist.

3.1.3. Muitas wordlists vêm de listas vazadas de usuários e suas respectivas senhas.

3.2. Como obter

3.2.1. O Kali Linux traz wordlists dentro de si.

3.2.1.1. A mais conhecida é a RockYou, com mais de 100MB de possíveis senhas.

3.2.2. Pastebin

3.2.2.1. Ele possui várias listas adicionadas por usuários.

3.2.2.2. São senhas reais vazadas.

3.2.3. Google

3.2.3.1. Google Hacking pode ser útil.

3.3. Crackers de Hash online

3.3.1. Crackstation

3.3.2. MD5Decrypt

3.3.3. HashKiller

3.4. Rainbow Tables

3.4.1. É baseado em tabelas que guarda inúmeras senhas e algoritmos de hash.

3.4.1.1. LM, NTLM, MD5 e SHA1

3.4.2. Tabelas de poucos até centenas de GB.

3.4.3. Project Rainbow-Crack

3.4.3.1. Também disponibiliza tabelas pagas.

3.4.3.1.1. Muito caras, por sinal.

3.4.3.1.2. Possibilidade de acerto é acima de 98%.

4. Criando e Obtendo Wordlists

4.1. Em um processo de pentest, é útil criar as próprias wordlists ao invés de utilizar apenas wordlists externas.

4.2. É preciso encontrar uma forma adequada de gerar wordlists para determinada situação.

4.3. Existem comandos importantes que partem de como você vai analisar a informação.

4.3.1. cewl

4.3.1.1. É um gerador de listas partindo de palavras-chave em um domínio.

4.3.1.2. Flags

4.3.1.2.1. --min_word_length [NÚMERO], -m [NÚMERO]

4.3.1.2.2. --depth [NÚMERO], -d [NÚMERO]

4.3.1.2.3. --email, -e

4.3.2. crunch

4.3.2.1. Cria wordlists a partir de parâmetros passados.

4.3.2.2. Sintaxe

4.3.2.2.1. crunch [mínimo] [máximo] [charset]

4.3.2.3. Flags

4.3.2.3.1. -o [arquivo]

4.3.2.3.2. -f [charset.lst]

4.3.2.3.3. -i

4.3.2.3.4. -t

4.3.2.3.5. -d [número][símbolo]

4.3.2.3.6. -e [string]

5. Descobrindo senhas com John

5.1. Dentro da segurança da informação, o elo mais fraco da informação é o usuário final.

5.2. Unshadow

5.2.1. Concatenar o /etc/passwd com o /etc/shadow

5.2.2. Sintaxe

5.2.2.1. unshadow /etc/passwd /etc/shadow > /root/Desktop/pass.txt

5.2.2.1.1. unshadow [PASSWD] [SHADOW] > [ARQUIVO DE SAÍDA]

5.3. John The Ripper

5.3.1. Consegue identificar automaticamente qual algoritmo da criptografia que foi usada para cifrar as senhas.

5.3.2. Utiliza o /etc/passwd e /etc/shadow para fazer uma comparação e quebrar as senhas.

5.3.3. Sintaxe

5.3.3.1. john arquivo.txt

5.3.4. Flags

5.3.4.1. -external:MODE

5.3.4.1.1. Permite o uso externo, partindo das configurações definidas na secção [List.External:MODE] em ~/john.ini.

5.3.4.2. --format:FORMATO

5.3.4.2.1. Permite sobrescrever a detecção do formato da criptografia.

5.3.4.2.2. Essa opção pode aumentar um pouco a velocidade do John em determinados casos.

5.3.4.3. -groups:GID

5.3.4.3.1. Crackeará a senha dos usuários do GID especificado.

5.3.4.4. -restore:ARQUIVO

5.3.4.4.1. Restaura uma sessão do John ainda não terminada.

5.3.4.5. -shells:SHELL

5.3.4.5.1. Útil para crackear apenas contas com um shell válido, ou não crackear contas com um shell bloqueado.

5.3.4.6. -status:ARQUIVO

5.3.4.6.1. Verifica o status do processo do John no arquivo determinado.

5.3.4.7. -wordlist:ARQUIVO

5.3.4.7.1. Usado para habilitar o modo de wordlist, usando as palavras contidas nele.

5.3.4.8. -user:USUÁRIO

5.3.4.8.1. Crackeia apenas esse usuário.

5.3.5. Pasta oculta

5.3.5.1. É possível encontrar pastas ocultas com o comando ls -lha

5.3.5.2. A pasta oculta do John se chama .john e se localiza no home do diretório.

5.3.5.2.1. As senhas crackeadas podem ser vistas em ~/.john/john.pot

5.3.6. Exemplo

5.3.6.1. john --format=sha512crypt --user=root --wordlist=/usr/share/john/password.lst /root/Desktop/pass.txt

5.3.6.1.1. john --format=TIPO --user=USUARIO --wordlist=LISTADESENHAS ARQUIVO_DE_PESQUISA

5.3.7. Ver senhas já crackeadas

5.3.7.1. john --show [ARQUIVO DE PESQUISA]

6. Descobrindo Senhas com o Hydra

6.1. Hydra

6.1.1. Conceito

6.1.1.1. Hydra é uma ferramenta que descobre/crackeia pares de login e senha válidos.

6.1.1.2. É compatível com dezenas de serviços diferentes.

6.1.2. Flags

6.1.2.1. -l LOGIN ou -L ARQUIVO_DE_LOGINS

6.1.2.1.1. Insere um determinado login ou um arquivo com múltiplos logins.

6.1.2.2. -p SENHA ou -P ARQUIVO_DE_SENHAS

6.1.2.2.1. Insere uma determinada senha ou um arquivo com múltiplas senhas.

6.1.2.3. -C ARQUIVO_SENHA_E_LOGIN

6.1.2.3.1. Insere um arquivo com logins e senhas no formato login:senha

6.1.2.4. -M ARQUIVO_SERVIDORES

6.1.2.4.1. Insere um arquivo com os servidores-alvo, um por linha, com ":" para especificar a porta.

6.1.2.5. -t NÚM_DE_REQUISIÇÕES

6.1.2.5.1. Insere um número "NÚM_DE_REQUISIÇÕES" de conexões para serem realizadas em paralelo por host (default é 16).

6.1.2.5.2. Atenção! Às vezes é necessário diminuir esse número de requisições paralelas em determinados servidores que bloqueiam um número muito alto.

6.1.3. Exemplo

6.1.3.1. hydra -L wlist -P wlist -t 4 192.168.0.21 ssh

6.1.4. Como se proteger?

6.1.4.1. Limitar tentativas

6.1.4.2. Usar autenticação de 2 fatores

7. ETC

7.1. Realizar contagens de linhas em um arquivo

7.1.1. wc -l

7.2. Realizar paginação de um arquivo

7.2.1. less