O que preciso para minha carreira como Pentester - Parte 1

O que preciso para minha carreira como Pentester - Parte 1

No artigo anterior foi feita uma abordagem detalhada sobre a carreira de Pentester na prática, onde foram explicados os tipos tecnologias, as informações necessárias e a execução da análise de segurança. Agora será abordado quais os conhecimentos mínimos para iniciar nessa carreira tão bem remunerada e abundante de vagas no mercado de trabalho.

Requisitos Mínimos

Linux

Aproximadamente 80% dos servidores na Internet rodam em Linux, ou seja, para entender sobre os aspectos de segurança de um servidor, é essencial algum domínio no sistema operacional. Logo, é altamente recomendado o estudo e o uso de uma distribuição Linux. A mais querida na área é a Kali Linux, que foi criada pela Offensive Security, baseada em Debian, tem foco em Infosec e que conta com diversas ferramentas úteis já instaladas.

O Guia Foca foi meu primeiro livro de Linux e é o meu preferido. Não é necessária a leitura do livro todo, somente dos principais capítulos relacionados a Infosec:

  • Intermediário: 1, 2, 4 (opcional), 7 ao 15, 18, 20, 21, 25, 27;
  • Avançado: 1, 2, 4, 10, 11 14, 15, 19, 20, 21;
  • Segurança (WIP): 1 ao 4.

Programação

Todas as aplicações são feitas de código, então como entender da segurança delas, sem conhecer programação? Não dá! A Pentester não precisa ser uma grande programadora, mas é necessário saber o mínimo de code-review e ser capaz de criar scripts/exploits direcionados para as análises.

Existem muitas linguagens de programação, mas para a área de Segurança Ofensiva, há as mais importantes:

C/C++

Das linguagens clássicas, C e C++ são consideradas as mais importantes bases e aprendê-las é crucial no ramo da tecnologia da informação, pois outras linguagens, como JavaScript, Python, C# e Java, foram originadas a partir delas.

Além disso, C e C++ estão presentes em sistemas operacionais, nos estudos de engenharia reversa e na exploração de binários (Arquivos ELF), como exploração de Kernel. Um pequeno exemplo de um código em C vulnerável a Buffer Overflow:


Python

Uma das linguagens mais práticas, Python é excelente para desenvolvimento dos mais variados exploits. A maioria dos scripts de Infosec estão nessa linguagem. Python possui diversas bibliotecas, como Selenium ou requests, focadas em ataques de automação. Inclusive o BurpSuite, ferramenta de Proxying mais usado em Pentest, consegue transformar requisições em script de Python.


Importação da requisição acima para um script em Python usando o BurpSuite:

Shell Script (Bash Scripting)

Como parte do estudo em Linux, Shell Scripting é uma forma de combinar e automatizar o interpretador de comandos do sistema operacional. Assim como o Python, scripts em Bash são frequentes tanto para PoCs de CVEs, quanto para cenários relacionados a servidores Linux. Logo, entendê-los é essencial.

Há milhares de maneiras de aprender a programar: faculdade, YouTube, livros, cursos onlines, documentações… enfim! Nesse sentido, sinta-se à vontade para escolher sua metodologia de aprendizado. Como sugestão, separei alguns materiais legais de estudo:

(YouTube) Curso de Python: Curso Python #01 - Seja um Programador
(YouTube) Curso de Bash: Intensivo de Programação em Bash #1: Introdução
(YouTube) Curso de C: Programação em C - Aula 4 - Hello World - eXcript
(CodeCamp) Curso de Python (Eng): Python Crash Course
(Exercício) Plataforma de estudo de programação: beecrowd


Senhas e Criptografia

O armazenamento inseguro de senhas ainda é muito frequente em muitas empresas, e, quando ocorre um vazamento de um banco de dados, o nível de criticidade depende totalmente de como elas foram armazenadas.

Não é necessário um conhecimento profundo em criptografias para trabalhar como Pentester, apenas é necessário ter um conhecimento geral de cada tópico.

Funções Hash criptográficas

É de suma importância entender quais funções Hash são seguras e quais devem ser evitadas, entender como utilizar bons algoritmos para armazenar senhas, a exemplo do bcrypt, e alertar para o uso de SHA1, MD4, MD5, e outras funções Hash inseguras.

Encodes

Encodes são algoritmos que estão presentes em quase todos os sistemas, principalmente o base64. Muitas vezes informações sensíveis estão encodadas nesse algoritmo, e é essencial saber identificar.

Vale ressaltar que muitas pessoas erroneamente pensam que encodes são criptografias, e não são, pois não há nenhuma senha no processo de codificação.


Senhas Linux

Em sistemas Linux defasados, as senhas eram armazenadas no diretório /etc/passwd. Atualmente neste arquivo somente são listadas informações de usuários do sistema, sendo as informações de senhas gravadas em /etc/shadow - onde somente usuários administrativos têm acesso.

Neste arquivo, as senhas seguem o formato de um usuário, o tipo de Hash, o Hash da senha, e outras informações da senha, como data de expiração:

Vale ressaltar que há quatro tipos de Hashs utilizados, sendo 1 para MD5, 2a para Blowfish, 5 para SHA-256 e 6 para SHA-512.

Senhas Windows

As senhas Windows encontram-se no banco de dados chamado Security Account Manager (SAM), localizado em C:\Windows\System32\Config\SAM. Este arquivo armazena as senhas em formato Hash LM/NTLM.

Existe também um serviço chamado Local Security Authority Server Service (LSASS), responsável pela política de segurança do sistema, onde também é possível obter as senhas.

Ferramentas de quebra de senha

Durante uma análise de segurança onde é possível obter um Hash, é bastante interessante tentar quebrá-lo para obter a senha. Para isso, o John e o Hashcat são excelentes ferramentas nesse processo. Vale ressaltar que elas nativamente já vem instaladas no Kali Linux e são simples de serem usadas.

Também é possível quebrar um Hash (principalmente os mais fracos, como MD5) usando ferramentas online, tais como: HashKiller, CrackStation ou Hashes. Esses sites possuem databases que chegam de bilhões até trilhões de senhas, muitas vezes de vazamentos, por isso são muito úteis.


Criptografia Simétrica e Assimétrica

A Criptografia Assimétrica, baseada em chaves públicas e privadas, está presente nos principais protocolos de comunicação segura da Internet, como o Transport Layer Security (TLS), responsável por criptografar todas as requisições HTTPS.

Já a Criptografia Simétrica, onde usa uma mesma chave para criptografar e descriptografar, pode ser encontrada em protocolos como o WPA/WPA2 usado em redes Wi-Fis, criptografia de arquivos em sistemas operacionais, em VPNs e outras situações. As mais comuns delas são a Advanced Encryption Standard (AES) e Triple Data Encryption Standard (3DES).

Protocolos de Rede

Entender como as redes de computadores e seus protocolos funcionam é essencial para uma pessoa analista de segurança. Antes de ser iniciada a listagem de protocolos, é necessário entender que todos eles se encaixam em determinados modelos que ditam as regras de funcionamento, sendo:

O TCP/IP, que se trata do acrônimo dos protocolos TCP (Transmission Control Protocol) e IP (Internet Protocol), é o responsável pela base de envio e recebimento de dados por toda a internet. Essa pilha de protocolos é dividida em 5 camadas (em referência ao RFC1392):

  • 5° Camada - Aplicação: Serviço específico de comunicação de dados em um nível de processo-a-processo. Exemplo: HTTP, HTTPS, FTP, DNS.
  • 4° Camada - Transporte: Gerenciamento do transporte dos pacotes para garantir o sucesso no envio e no recebimento de dados. Exemplo: TCP e UDP.
  • 3° Camada - Rede (Internet): Endereçamento IP de origem e de destino. Exemplo: IP, ICMP, NAT.
  • 2° Camada - Enlace (Ligação): Verificação e correção dos dados recebidos do meio físico. Exemplo: Ethernet, Wi-Fi.
  • 1° Camada - Física: Especificação dos dispositivos, como hubs e os meios de transmissão, como os cabos de rede.

Já o modelo OSI é bastante similar, com a diferença de que a Camada de Aplicação é dividida em 3 partes: Aplicação, Apresentação e Sessão.

Com o WireShark é possível interceptar o tráfego de rede e ver na prática como todas essas camadas trafegam:

Agora vamos dar uma olhada nos principais protocolos:

IP

O protocolo IP (Internet Protocol) faz parte da camada de internet e é um dos protocolos mais importantes da web. Os destinatários das mensagens são determinados por meio dos campos de endereço IP.

TCP/UDP

O protocolo TCP (Transmission Control Protocol) é o mais utilizado na camada de transporte para aplicações Web. Em resumo, para estabelecer uma conexão, é utilizado o three-way handshake (acordo de três vias).

Por conta da demora envolvida no handshake do TCP, o UDP (User Datagram Protocol) acaba sendo mais rápido, porém menos seguro. Esse protocolo é o mais usado em softwares de Streaming e VoIP (Voice over Internet Protocol) como o Discord, Skype, Twitch e Netflix.

TLS/SSL

Transport Layer Security (TLS) e seu antecessor Secure Sockets Layer (SSL), são protocolos de segurança projetados para fornecerem segurança nas comunicações sobre uma rede. Ambos ficam entre a Camada de Aplicação e servem para criptografar as camadas superiores.

HTTP/HTTPS

Hypertext Transfer Protocol [Secure] (HTTP[S]) são protocolos base da comunicação Web e a diferença entre eles é que o HTTPS utiliza TLS/SSL para criptografar a comunicação. É essencial ter total conhecimento sobre todos os seus oito métodos: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS e CONNECT. Também é necessário conhecer os principais Headers de requisição e resposta, e também os Status-Code (códigos de retorno):

  • 1xx: Informational (Informação).
  • 2xx: Success (Sucesso).
  • 3xx: Redirect (Redirecionamento).
  • 4xx: Client Error (Erro no cliente).
  • 5xx: Server Error (Erro no servidor).

SSH


Secure Shell (SSH) é um protocolo de rede criptografado para operação de serviços de rede de forma segura, sua maior utilização é para obtenção de uma shell em algum servidor para a execução de comandos remotamente.


FTP


File Transfer Protocol (FTP) nada mais é do que um protocolo de transferência de arquivos, onde um Servidor FTP pode ser acessado tanto pelo terminal, quanto em navegadores.

Essas são apenas algumas das milhares de siglas presentes no dia a dia de uma pessoa pentester. Quanto mais conhecimento em redes de computadores, melhor, e, para isso, separei uma pequena playlist desse conteúdo como material de estudo: https://www.youtube.com/playlist?list=PLucm8g_ezqNpGh95n-OdEk06ity7YYfvU


Continuação

No próximo artigo abordaremos sobre mais conhecimentos necessários para iniciar a carreira como Pentester, sobre as principais certificações da área e sobre algumas das melhores plataformas de estudo de segurança ofensiva.

Até logo!

💡
As opiniões e comentários expressos neste artigo são de propriedade exclusiva de seu autor e não representam necessariamente o ponto de vista da Revelo.

A Revelo Content Network acolhe todas as raças, etnias, nacionalidades, credos, gêneros, orientações, pontos de vista e ideologias, desde que promovam diversidade, equidade, inclusão e crescimento na carreira dos profissionais de tecnologia.