Introdução ao Ethical Hacking
Requisitos para aproveitar o conteúdo
Se você pretende ingressar na área de Cyber Security, alguns conhecimentos são necessários para acompanhar e aproveitar o conteúdo. Você não precisa ser especialista nos tópicos que listarei a seguir, mas é importante ter pelo menos um entendimento básico deles. Isso evitará que você se sinta perdido ou desmotivado durante o aprendizado. Lembre-se, conforme você estuda, esses conhecimentos podem ser aprimorados. Minha recomendação é apenas para que tenha uma base sólida, já que não vou abordar esses temas, apenas quando forem relevantes. São áreas de estudo muito amplas e exigem dedicação específica.
Conhecendo o Linux
Os profissionais de segurança precisam saber como operar um sistema Linux, a maioria dos servidores e ferramentas de segurança rodam nesse sistema. Conhecer (e até dominar) usar o terminal é essencial para administrar redes, explorar vulnerabilidades e automatizar tarefas. Eu vou ainda mais longe, dominar o shell do Windows (PowerShell) é igualmente importante, pois muitas empresas usam ambientes Windows, ter esse conhecimento pode ajudar em muitos casos. O PowerShell permite executar comandos avançados, gerenciar sistemas e realizar scripts de automação, o que é crucial tanto para defesa quanto para ataque, como durante um Pentest ou simulação de ataque.
Não vou descrever conceitos e introduzir você caro leitor, a ter esse tipo de conhecimento, infelizmente caberia muitos livros e até cursos nessa etapa, mas vou deixar alguns materiais em texto e até em video para que possa começar a aprender sobre Linux.
-- Curso disponível em Português Brasileiro:
- Iniciante:
https://www.udemy.com/course/primeiros-passos-no-linux/
- Curso completo (terá um bom entendimento ao final do curso)
https://www.udemy.com/course/formacao-linux-completa-do-basico-ao-avancado/
- Um dos cursos mais completos:
https://www.udemy.com/course/curso-completo-linux/
- Iniciante. Vou recomendar minha documentação de LPIC-1, especialmente o tópico 103:
https://www.sysnetbr.eng.br/docs/Certificacao/LPIC-1/1031
Curso disponível em Inglês:
https://www.udemy.com/course/complete-linux-training-course-to-get-your-dream-it-job/
Shell Script
O Shell script é um programa ou conjunto de comandos escritos em um arquivo de texto que é interpretado e executado por um shell, que é a interface de linha de comando entre o usuário e o sistema operacional. Os shell scripts são usados principalmente em sistemas operacionais Unix e Linux, mas também podem ser executados em outros sistemas com shells compatíveis, como o macOS e até no Windows (via subsistema Linux ou PowerShell).
Resumindo, Shell é o interpretador de comandos que executa os scripts. Exemplos de shells populares incluem: Bash, Zsh, Sh, Fish entre outros. Já o script é um arquivo de texto simples que contém uma série de comandos e instruções para serem executados no Shell.
Aprender shell script é essencial para quem deseja entrar na área de segurança e dominar o Linux porque ele oferece uma forma poderosa de automatizar tarefas, interagir diretamente com o sistema e manipular arquivos e processos de maneira eficiente. Em segurança, o shell script permite automatizar varreduras, exploração de vulnerabilidades, coleta de dados e pós-exploração. Além disso, quem trabalha com Linux precisa saber shell script, pois grande parte da administração do sistema, como gerenciamento de arquivos, permissões e configuração de serviços, é feita via linha de comando. Dominar scripts em shell simplifica o gerenciamento de sistemas e permite resolver problemas de forma rápida e eficaz, além de possibilitar o uso de ferramentas de segurança de maneira mais avançada.
Não vou abordar Shell Script aqui, mas deixarei ótimos cursos lincados abaixo:
Curso disponível em Português Brasileiro:
https://www.udemy.com/course/shell-scripting-para-administradores-de-sistemas/
https://www.udemy.com/course/programacao-shell-script/
Curso disponível em Inglês:
https://www.udemy.com/course/bash-mastery/
Redes de computadores
Cyber security está fortemente ligada a Redes de computadores. Todos os ataques e ameaças digitais envolve algum nível de interação com redes, seja interceptando dados, explorando vulnerabilidades em protocolos, ou realizando ataques a servidores e dispositivos conectados. Entender como redes de computadores funcionam é essencial para proteger sistemas, identificar pontos de vulnerabilidade, e implementar defesas eficazes. Muitos conceitos, como firewalls, IDS/IPS, VPNs, criptografia de tráfego, e segurança de redes Wi-Fi, são fundamentais no trabalho de um profissional de segurança cibernética.
Esse é outro assunto que não vou abordar, mas deixarei dois cursos que trazem uma ótima abordagem e ensinamentos sobre Redes de computadores.
https://www.udemy.com/course/redes-modulo-1/?couponCode=24T4MT90924B
https://www.udemy.com/course/redes-tcpip/?couponCode=24T4MT90924B
Revisar a fundo os modelos OSI e TCP/IP é essencial para uma compreensão sólida das redes.
Protocolos
É fundamental conhecer alguns dos principais protocolos de comunicação e entender como eles operam, especialmente para quem trabalha com redes e segurança da informação. Esses protocolos definem as regras de troca de dados entre dispositivos e sistemas na internet e em redes locais. Saber como funcionam, como o HTTP, TCP/IP, DNS e outros, permite identificar possíveis vulnerabilidades, garantir uma comunicação segura e otimizar a eficiência de redes e aplicações. Além disso, eles formam a base sobre a qual grande parte das tecnologias modernas se sustenta.
Aqui está uma breve explicação sobre alguns protocolos essenciais, não vou aprofundar, apenas fazer uma introdução sobre eles.
DHCP (Dynamic Host Configuration Protocol)
O DHCP é responsável por atribuir automaticamente endereços IP a dispositivos em uma rede. Ele facilita a conexão de novos dispositivos sem a necessidade de configuração manual de endereços IP, o que é crucial para redes grandes ou dinâmicas. O DHCP garante que cada dispositivo tenha um IP exclusivo e gerencia a concessão desses endereços.DNS (Domain Name System)
O DNS funciona como uma "agenda telefônica" da internet. Ele traduz nomes de domínio legíveis por humanos (como www.exemplo.com) em endereços IP que os computadores usam para se comunicar. Quando você acessa um site, o DNS converte o nome do site no respectivo endereço IP para que seu dispositivo possa localizar e se conectar ao servidor correto.HTTP (Hypertext Transfer Protocol)
O HTTP é o protocolo usado para a comunicação entre clientes (navegadores) e servidores web. Ele define como as solicitações e respostas devem ser formatadas e transmitidas. Cada vez que você acessa uma página da web, o HTTP é utilizado para transmitir os dados, como textos, imagens e vídeos, entre o servidor e seu navegador.FTP (File Transfer Protocol)
O FTP é um protocolo usado para transferir arquivos entre sistemas em uma rede. Ele permite que arquivos sejam enviados e recebidos de um servidor, sendo muito utilizado para upload de arquivos em servidores web. Embora o FTP seja eficiente, ele não é seguro, pois transmite dados em texto plano, por isso, versões seguras como o SFTP (Secure FTP) são mais recomendadas atualmente.IPv4 (Internet Protocol version 4)
O IPv4 é a quarta versão do Protocolo de Internet, amplamente utilizado para identificar dispositivos em uma rede por meio de endereços IP. Ele usa um sistema de endereçamento de 32 bits, o que possibilita até 4,3 bilhões de endereços IP únicos. A estrutura de um endereço IPv4 é composta por quatro blocos de números, separados por pontos, como192.168.0.1
. Apesar de ser o mais comum, o crescimento da internet fez com que o espaço de endereçamento do IPv4 se tornasse insuficiente, levando ao desenvolvimento do IPv6.IPv6 (Internet Protocol version 6)
O IPv6 foi criado para resolver a limitação do espaço de endereçamento do IPv4, oferecendo uma solução de longo prazo. Ele utiliza endereços de 128 bits, permitindo um número imensamente maior de endereços únicos, garantindo espaço suficiente para o futuro da internet (aproximadamente340 undecilhões
de endereços). Um exemplo de endereço IPv6 é2001:0db8:85a3:0000:0000:8a2e:0370:7334
. Além disso, o IPv6 traz melhorias de eficiência e segurança, como suporte nativo a criptografia e melhor gerenciamento de rotas.TCP (Transmission Control Protocol)
O TCP é um protocolo de transporte orientado à conexão, que garante a entrega confiável de pacotes de dados entre dois dispositivos em uma rede. Ele estabelece uma conexão antes de iniciar a troca de dados e usa um sistema de confirmação (ACK) para garantir que os pacotes cheguem na ordem correta, sem perdas ou duplicações. Essa confiabilidade torna o TCP ideal para aplicações onde a integridade dos dados é essencial, como transferência de arquivos, navegação web (HTTP) e envio de e-mails.
Principais características:- Orientado à conexão: A comunicação é precedida por um "handshake" (sincronização) de três vias.
- Controle de fluxo: Garante que o remetente não sobrecarregue o destinatário.
- Correção de erros: Retransmite pacotes perdidos ou corrompidos.
- Orientado à conexão: A comunicação é precedida por um "handshake" (sincronização) de três vias.
UDP (User Datagram Protocol)
O UDP é outro protocolo de transporte, mas, ao contrário do TCP, é não orientado à conexão. Isso significa que ele não garante a entrega ou a ordem dos pacotes. Ele simplesmente envia os pacotes e não espera confirmação. Essa simplicidade o torna muito mais rápido e eficiente para aplicações que podem tolerar pequenas perdas de dados, mas que priorizam a velocidade, como streaming de vídeo, VoIP (voz sobre IP) e jogos online.
Principais características:- Sem controle de fluxo: Não verifica se o destinatário está recebendo os pacotes.
- Menos sobrecarga: Sem confirmação de pacotes ou retransmissões, resultando em maior velocidade.
- Aplicações em tempo real: Ideal para cenários onde velocidade é mais importante que a confiabilidade absoluta.
ARP (Address Resolution Protocol)
O ARP é utilizado para mapear endereços IP (camada de rede) para endereços MAC (camada de enlace). Ele é essencial em redes locais (LANs), onde os dispositivos precisam saber o endereço físico (MAC) do dispositivo com o qual estão tentando se comunicar. Funciona basicamente assim: quando um computador precisa se comunicar com outro dispositivo na rede, ele usa o ARP para descobrir o endereço MAC associado ao endereço IP de destino. O ARP funciona de forma transparente ao usuário, mas é crítico para a comunicação eficiente na rede local.HTTP (Hypertext Transfer Protocol)
O HTTP continua sendo o protocolo mais usado para a troca de informações na web. Ele opera na camada de aplicação e define como as solicitações de dados e as respostas devem ser formatadas entre o cliente (navegador) e o servidor web. Embora o HTTP seja o padrão para comunicação web, a versão segura do protocolo, HTTPS (HTTP over SSL/TLS), criptografa a troca de dados, garantindo maior privacidade e integridade das informações transmitidas.
O HTTP funciona baseado no modelo de requisição/resposta:- Requisição: O cliente solicita uma página ou recurso ao servidor.
- Resposta: O servidor envia a resposta contendo o conteúdo solicitado, como uma página HTML, imagem ou arquivo.
Esses protocolos são a base das comunicações em redes, com o IPv4 e o IPv6 tratando de endereçamento IP. O TCP e o UDP gerenciando o transporte de dados, o ARP facilitando a descoberta de endereços MAC em redes locais, e o HTTP gerenciando a troca de dados na web. Ter um bom entendimento deles é essencial para a administração de redes, segurança e configuração de servidores.
Fundamentos de Ethical Hacking
Aqui vamos abordar os Fundamentos do Ethical Hacking com tópicos relacionados à segurança cibernética e à identificação de vulnerabilidades em sistemas de computadores e redes.
Para começar, o que seria Ethical Hacking? O Ethical Hacking (hacker ético em português) é alguém que utiliza suas habilidades em computação e conhecimento técnico para identificar vulnerabilidades em sistemas de computadores, redes, aplicativos ou outros dispositivos digitais, mas sempre com permissão e com o objetivo de melhorar a segurança desses sistemas.
Um profissional dessa área não usa essas habilidades para causar danos ou obter informações de forma ilegal, os hackers éticos trabalham dentro de um conjunto de diretrizes éticas e legais para ajudar organizações a identificar e corrigir falhas de segurança antes que sejam exploradas por hackers maliciosos.
Certificação
Existem diversas certificações voltadas para o mundo do ethical hacking, cada uma com seus próprios objetivos e abrangência. Algumas das mais renomadas e procuradas no mercado incluem:
Certified Ethical Hacker - CEH Uma das certificações mais populares e abrangentes em ethical hacking, oferecida pelo EC-Council. Abrange desde os fundamentos de redes e segurança da informação até técnicas avançadas de teste de penetração e exploração de vulnerabilidades.
Offensive Security Certified Professional - OSCP Uma certificação prática e focada em testes de penetração, oferecida pela Offensive Security. Requer a realização de um exame prático que simula um ataque real a um sistema de informação.
Licensed Penetration Tester - LPT Uma certificação brasileira que comprova a capacidade do profissional de realizar testes de penetração de forma ética e profissional. É emitida pelo IBSEC (Instituto Brasileiro de Segurança da Informação).
GIAC Certified Incident Handler - GCIH Uma certificação focada em resposta a incidentes de segurança da informação, oferecida pelo SANS Institute. Abrange desde a identificação e análise de incidentes até a recuperação e remediação de sistemas.
Security+ Uma certificação abrangente em segurança da informação, oferecida pela CompTIA. Abrange desde conceitos básicos de segurança até tópicos mais avançados como criptografia e gerenciamento de identidade e acesso.
Tipos de Penetration Test
Os testes de penetração, também conhecidos como pentests, são simulações controladas de ataques a um sistema ou rede, realizados por profissionais de segurança autorizados com o objetivo de identificar e explorar vulnerabilidades. Existem diversos tipos de pentests, cada um com seus próprios objetivos, metodologias e ferramentas. Os mais comuns incluem:
Teste de Caixa Branca (White Box):
O testador tem acesso total às informações do sistema, incluindo código-fonte, documentação e configurações. É útil para encontrar vulnerabilidades complexas e falhas de design. Menos realista, pois nem sempre um invasor real teria esse nível de acesso.
Teste de Caixa Preta (Black Box): O testador tem informações limitadas ou nenhuma informação sobre o sistema, simulando um ataque real. É útil para identificar vulnerabilidades que podem ser exploradas por invasores externos. Apesar de ser mais realista, é mais difícil encontrar todas as vulnerabilidades.
Teste de Caixa Cinza (Gray Box):
O testador tem algumas informações sobre o sistema, como documentação ou configurações básicas. É um equilíbrio entre os testes de caixa branca e preta. Oferece uma visão mais realista do que um invasor com acesso limitado poderia encontrar.
Segurança da Informação
A Segurança da Informação é o conjunto de políticas, práticas, processos e tecnologias implementados para proteger os dados e informações contra ameaças, acessos não autorizados, modificações indevidas, e destruição. O objetivo central da segurança da informação é garantir a confidencialidade, integridade e disponibilidade dos dados, conhecida como a tríade CIA.
Esses três princípios são fundamentais para a proteção das informações:
Confidencialidade
Assegura que as informações só sejam acessadas por pessoas autorizadas. Ferramentas como criptografia e controle de acesso são usadas para proteger os dados.Integridade
Garante que os dados não sejam alterados ou corrompidos de forma não autorizada, mantendo sua precisão e confiabilidade ao longo do tempo.Disponibilidade
Assegura que as informações estejam acessíveis para as pessoas ou sistemas autorizados sempre que necessário, evitando interrupções nos serviços críticos.
A Segurança da Informação abrange a proteção de informações físicas (como documentos em papel), digitais (dados armazenados em sistemas eletrônicos), e a forma como essas informações são transmitidas. Isso inclui desde a proteção de arquivos em servidores até o controle de acesso a um prédio, ou a implementação de mecanismos para evitar espionagem corporativa. Além disso, Segurança da Informação está diretamente relacionada ao cumprimento de leis e normas, como a LGPD (Lei Geral de Proteção de Dados no Brasil) ou o GDPR (Regulamento Geral de Proteção de Dados da União Europeia), que impõem regras rigorosas sobre como as organizações devem proteger as informações de clientes e usuários. Portanto, a Segurança da Informação não se limita a tecnologia apenas, ela envolve pessoas, processos e tecnologia trabalhando juntos para proteger os ativos de informação de uma organização.
Cibersegurança
A cibersegurança é o conjunto de práticas, técnicas e ferramentas usadas para proteger sistemas, redes e dados contra ataques cibernéticos, acessos não autorizados, danos ou roubo. Seu objetivo principal é garantir a confidencialidade, integridade e disponibilidade das informações e sistemas, conhecidos como a tríade CIA. Abaixo podemos ver um pouco dos principais conceitos da cibersegurança:
Confidencialidade
Garante que apenas pessoas ou sistemas autorizados possam acessar dados sensíveis. Isso é obtido por meio de mecanismos como criptografia e controle de acesso.Integridade
Refere-se à proteção contra alterações não autorizadas nos dados. É essencial que a informação seja mantida precisa e consistente.Disponibilidade
Assegura que os sistemas e dados estejam acessíveis sempre que necessário, evitando interrupções causadas por ataques, como negação de serviço (DDoS).Autenticidade
Verifica a identidade de usuários e sistemas antes de conceder acesso, comumente usando autenticação de dois fatores (2FA) ou certificados digitais.Riscos e Ameaças
Os riscos em cibersegurança podem incluir malware, ransomware, phishing, ataques de negação de serviço (DoS/DDoS) e exploração de vulnerabilidades de software.Vulnerabilidades
São fraquezas ou falhas nos sistemas que podem ser exploradas por atacantes para comprometer a segurança. Pode incluir falhas de software, configurações incorretas ou usuários mal treinados.Mitigação e Resposta a Incidentes
Envolve detectar e responder a incidentes de segurança de forma rápida e eficaz, minimizando danos e restaurando a operação normal.
A cibersegurança abrange várias áreas, como proteção de redes, segurança de aplicativos, segurança de endpoints, e a gestão de identidades e acessos. Em um ambiente corporativo, as empresas implementam políticas de segurança, firewalls, sistemas de detecção de intrusões (IDS/IPS) e treinamento contínuo dos funcionários para minimizar riscos.
Vetores de ataque
Os Vetores de ataque são os métodos ou caminhos que os atacantes utilizam para comprometer um sistema, rede ou aplicativo. Esses vetores exploram vulnerabilidades tecnológicas, humanas ou de processos para ganhar acesso não autorizado ou causar danos. Aqui estão os principais vetores de ataque:
Malware
Softwares maliciosos que podem ser instalados em sistemas de forma disfarçada ou não autorizada. Exemplos incluem vírus, worms, trojans e ransomware.Phishing
Técnica usada para enganar usuários e obter informações sensíveis, como senhas e dados bancários. Normalmente envolve e-mails ou mensagens falsificadas que imitam empresas ou serviços legítimos.Ataques de Engenharia Social
Técnicas que exploram o fator humano, manipulando pessoas para que revelem informações confidenciais ou realizem ações que comprometem a segurança.Ataques de Força Bruta
Método de tentativa e erro para adivinhar senhas ou chaves de criptografia. O atacante tenta inúmeras combinações até conseguir o acesso.Exploits de Vulnerabilidades de Software
Exploração de falhas ou bugs em software ou sistemas operacionais que ainda não foram corrigidos. Atacantes podem usar essas vulnerabilidades para comprometer um sistema.Ataques DDoS (Distributed Denial of Service)
Envolve o envio de um grande volume de tráfego para um servidor, sobrecarregando-o e tornando-o inacessível.Ataques de Rede (Man-in-the-Middle - MitM)
O atacante intercepta e possivelmente altera as comunicações entre dois sistemas, sem que as partes saibam.Ataques de Injeção (SQL Injection)
Ocorre quando o invasor insere comandos maliciosos em uma aplicação que interage com um banco de dados, permitindo o acesso, modificação ou exclusão de dados.Ransomware
Um tipo de malware que criptografa os dados de um sistema e exige um pagamento em troca da chave de descriptografia.Cross-Site Scripting (XSS)
Ataque que permite que um invasor injete scripts maliciosos em páginas web visualizadas por outros usuários. Esses scripts podem roubar cookies, credenciais ou realizar ações em nome do usuário.
Cada vetor de ataque pode variar em sofisticação e impacto, mas todos eles têm o potencial de comprometer a segurança dos sistemas, redes e dados se não forem devidamente mitigados. É fundamental aplicar práticas como atualização de software, uso de autenticação multifator e treinamento dos usuários para reduzir o sucesso desses vetores.
Segurança da Informação versus Cibersegurança
A Cibersegurança e Segurança da Informação são conceitos interligados, mas com diferenças sutis e fundamentais. A Segurança da Informação atua na proteção de todos os tipos de informações dentro de uma organização, seja em formato digital ou físico. Seu foco é garantir a confidencialidade, integridade e disponibilidade das informações, independentemente de onde ou como estejam armazenadas. Isso inclui não apenas dados digitais, mas também documentos físicos, como papéis, arquivos e relatórios, além de qualquer forma de comunicação.
Já a Cibersegurança está especificamente voltada para a proteção do ambiente digital, ou seja, das informações que circulam em sistemas, redes e dispositivos conectados à internet ou a outras redes digitais. A cibersegurança, portanto, é uma subárea da segurança da informação, focando nas ameaças digitais e na proteção contra ataques cibernéticos.
Quanto mais seguro o ambiente, menos flexível e mais "engessado" ele tende a ser. Isso é porque a Segurança da Informação envolve princípios como o de privilégios mínimos, que restringem o que os usuários podem fazer. Por exemplo, um usuário comum não deve ter permissão para instalar software, pois essa é uma tarefa que pode expor o sistema a riscos de segurança, sendo responsabilidade do administrador. Há uma preocupação válida entre administradores e gestores de TI sobre o equilíbrio entre segurança e produtividade. Restringir privilégios dos usuários pode reduzir a flexibilidade e a agilidade no dia a dia de trabalho, o que, à primeira vista, pode parecer prejudicial à operação de um negócio. No entanto, permitir que os usuários tenham privilégios excessivos para realizar tarefas triviais, como a instalação de software, pode abrir brechas de segurança significativas.
A solução não é aumentar os privilégios dos usuários para facilitar a produtividade, como alguns podem sugerir erroneamente. Isso colocaria em risco todo o sistema, aumentando a superfície de ataque. Uma boa abordagem seria:
Educação e conscientização dos usuários: Eles precisam entender a importância das medidas de segurança e como o controle de privilégios protege a organização como um todo.
Automatização e eficiência administrativa: Ferramentas de gestão de permissões e automação podem ser utilizadas para minimizar o impacto da restrição de privilégios na produtividade. Isso permite que tarefas administrativas sejam realizadas sem que os usuários tenham acesso direto a permissões elevadas.
Delegação apropriada de tarefas: Pode-se delegar determinadas ações de baixa criticidade, mantendo o controle sobre ações sensíveis. Isso garante que a produtividade não seja comprometida sem sacrificar a segurança.
Virtualização
Vamos falar sobre virtualização, pois essa tecnologia é fundamental para a maioria dos testes que um Ethical hacker realiza. A virtualização permite que o hacker crie ambientes isolados, replicando redes e sistemas sem afetar a infraestrutura real, facilitando a realização de testes de penetração, simulações de ataques e outras avaliações de segurança de forma controlada.
A virtualização é uma tecnologia que cria uma camada de abstração sobre o hardware do computador, permitindo que os componentes físicos de um único computador, como processador, memória, armazenamento e outros recursos, sejam divididos entre várias instâncias de computadores virtuais, chamados de máquinas virtuais (VMs). Cada máquina virtual pode executar seu próprio sistema operacional (como Windows, Linux, etc.) e funciona de forma independente, mesmo estando fisicamente conectada ao mesmo hardware. Essa separação permite que diversos sistemas operacionais e aplicações sejam executados simultaneamente em um único hardware físico, o que é altamente eficiente para testes de segurança.
Na virtualização, um software chamado hypervisor gerencia a divisão dos recursos físicos entre as máquinas virtuais. Existem dois tipos principais de hypervisors:
- Hypervisor Tipo 1 (bare-metal): Esse tipo de hypervisor é instalado diretamente sobre o hardware físico, permitindo uma interação mais direta com o hardware. Exemplos incluem VMware ESXi, Microsoft Hyper-V e Xen.
- Hypervisor Tipo 2 (hospedado): Esse hypervisor é instalado sobre um sistema operacional já existente. A máquina virtual é, então, executada como uma aplicação dentro desse sistema operacional. Exemplos incluem VirtualBox e VMware Workstation.
Com a virtualização, um ethical hacker pode configurar redes inteiras, com múltiplas máquinas virtuais representando diferentes servidores, firewalls, desktops e dispositivos de rede. Isso permite testar desde explorações de vulnerabilidades até ataques de rede e engenharia reversa de malwares, tudo em um ambiente virtualizado seguro e controlado.
Principais Conceitos sobre Virtualização
A virtualização é uma tecnologia que possibilita a criação de ambientes virtuais independentes do hardware físico do computador. Isso permite que sistemas operacionais, aplicativos e recursos de computação sejam executados em múltiplas instâncias virtuais dentro de um único hardware. O objetivo principal da virtualização é compartilhar os recursos do hardware com as máquinas virtuais, como CPU, memória, armazenamento e rede; conhecidos como os Core Four. Essas máquinas virtuais devem funcionar exatamente como se fossem máquinas físicas, e o administrador do sistema tem controle total sobre o hypervisor, podendo virtualizar qualquer sistema operacional, independentemente do sistema usado pelo hypervisor.
Um hypervisor, ou Virtual Machine Monitor (VMM), é o software que permite a execução simultânea de múltiplos sistemas operacionais em um único hardware. O hypervisor atua como um hospedeiro que compartilha os recursos físicos entre as máquinas virtuais, gerenciando como o hardware subjacente é distribuído e utilizado pelas VMs. Abaixo podemos ver algumas vantagens da virtualização.
Eficiência de Recursos
A virtualização maximiza o uso dos recursos de hardware, permitindo que os sistemas operacionais e aplicativos utilizem exatamente o que precisam. Isso evita desperdício de memória, CPU e outros recursos.Flexibilidade
Os recursos das máquinas virtuais podem ser facilmente reconfigurados conforme a necessidade. Além disso, a virtualização permite a criação de snapshots para rápida restauração.Redução de Custos
Com a virtualização, menos servidores físicos são necessários, reduzindo o custo com hardware, espaço físico, energia e manutenção.Rápido Deploy
Implementar VMs é muito mais rápido do que configurar um servidor físico, economizando tempo e aumentando a eficiência da operação.
Como nem tudo são flores, não posso deixar de falar sobre as desvantagens da virtualização.
Complexidade
A virtualização pode ser complexa de implementar e gerenciar, exigindo conhecimento especializado.Altos Custos Iniciais
Os custos iniciais com hardware capaz de suportar virtualização em grande escala e as licenças de software podem ser altos.Desempenho
Em alguns casos, máquinas virtuais podem apresentar desempenho inferior a máquinas físicas, especialmente em tarefas que exigem alta performance de CPU, memória ou armazenamento.Segurança
Máquinas virtuais podem estar vulneráveis a ataques direcionados ao hypervisor, o que pode comprometer várias VMs ao mesmo tempo.
Existem alguns tipos de Virtualização:
Virtualização de Rede
Compartilha recursos de rede entre diferentes sistemas operacionais e aplicativos.Virtualização de Armazenamento
Permite o compartilhamento de armazenamento físico entre diversos sistemas operacionais e aplicativos.Virtualização de Servidor
Executa vários sistemas operacionais em um único servidor físico, sendo a forma mais comum.Virtualização de Desktop
Possibilita a execução de vários desktops virtuais em um único servidor físico.
Função do Hypervisor na Virtualização
Cada máquina virtual (VM) é gerenciada por um software chamado Virtual Machine Monitor (VMM) ou hypervisor, que é responsável por distribuir e compartilhar os recursos do sistema físico; como processador (CPU), memória, dispositivos de entrada/saída (I/O) e armazenamento (entre as VMs). O papel do Hypervisor é abstrair o hardware físico, fazendo com que cada VM acredite que está sendo executada em um sistema de computação físico dedicado, mesmo que, na realidade, esteja compartilhando os recursos do hardware com outras máquinas virtuais. Isso é feito da seguinte maneira:
Compartilhamento de CPU: O hypervisor atribui uma fração do poder de processamento do sistema físico a cada VM, garantindo que elas tenham acesso à CPU conforme necessário.
Gerenciamento de Memória: A memória RAM do sistema físico é dividida e alocada entre as máquinas virtuais. Cada VM acredita que tem acesso à sua própria memória independente.
Dispositivos de I/O e Armazenamento: O VMM gerencia o acesso das VMs aos dispositivos de I/O e ao armazenamento, como discos rígidos e interfaces de rede. Assim, mesmo que todas as VMs compartilhem os mesmos recursos físicos, o hypervisor apresenta a cada VM seus próprios "dispositivos virtuais" para uso exclusivo.
Quando uma máquina virtual faz uma solicitação de recursos; como acessar o processador ou ler dados de um disco, o hypervisor intercepta essas requisições e transmite-as ao kernel do sistema de computação subjacente. O kernel, por sua vez, executa essas operações no hardware físico e retorna os resultados ao hypervisor, que então apresenta os resultados à VM como se ela tivesse interagido diretamente com o hardware. Esse processo de abstração garante que as VMs funcionem de maneira isolada e sem interferir umas nas outras, além de fornecer um ambiente virtualizado que se comporta como um sistema físico tradicional, permitindo que o sistema operacional e os aplicativos dentro da VM funcionem sem alterações.
Hypercalls
Um ponto crucial na virtualização moderna é que somente o hardware é virtualizado, enquanto o acesso aos recursos virtualizados pelas máquinas virtuais (VMs) é feito por meio de hypercalls para o hypervisor. Hypercalls são chamadas especiais que uma máquina virtual (VM) faz ao hypervisor para solicitar serviços ou acessar recursos de hardware virtualizados, como CPU, memória, rede e dispositivos de armazenamento. Hypercalls funcionam de maneira semelhante às syscalls (chamadas de sistema) que um aplicativo faz para interagir com o kernel do sistema operacional, mas, no caso da virtualização, a comunicação é entre a VM e o hypervisor.
No ambiente de uma máquina virtual, o sistema operacional da VM normalmente não interage diretamente com o hardware físico. Em vez disso, quando o sistema operacional precisa de um recurso (como alocar mais memória ou acessar a rede), ele realiza uma hypercalls para o hypervisor, que atua como intermediário entre a VM e o hardware físico subjacente. Através dessas hypercalls, o hypervisor:
Gerencia o uso de recursos: O hypervisor decide como e quando alocar CPU, memória e dispositivos de I/O para cada VM, conforme as solicitações feitas por meio de hypercalls.
Abstrai o hardware: O hypervisor traduz essas requisições para o hardware físico, enquanto a VM opera como se estivesse interagindo diretamente com um sistema físico completo.
Garante o isolamento: As hypercalls permitem que múltiplas VMs compartilhem o mesmo hardware sem interferirem umas nas outras. O hypervisor controla e limita o que cada VM pode acessar, garantindo que uma VM não possa "ver" ou manipular os recursos de outra.
Diferença entre Paravirtualização e Virtualização Completa
Esse conceito de hypercalls é especialmente importante em paravirtualização (como em alguns ambientes do Xen), onde a máquina virtual está ciente de que está rodando em um ambiente virtualizado e faz hypercalls explicitamente para acessar recursos. Nesse modelo o sistema operacional da VM é modificado para ser "paravirtualizado", o que significa que ele sabe que está em um ambiente virtual e utiliza hypercalls em vez de tentar acessar diretamente o hardware físico.
Isso melhora o desempenho, pois evita a necessidade de simular completamente o hardware para as VMs, permitindo interações mais diretas e eficientes. Em contrapartida, na virtualização completa (como em VMware ou KVM), a máquina virtual não precisa necessariamente estar ciente de que está sendo virtualizada, e o hypervisor emula completamente o hardware subjacente. Porém, mesmo que o sistema operacional da VM não saiba que está sendo virtualizado, o uso de hypercalls pode ser introduzido para otimizar o desempenho, especialmente em operações relacionadas a dispositivos de I/O, como rede e armazenamento, onde a emulação completa pode ser ineficiente.
Embora a virtualização completa tente emular o hardware físico para "enganar" a máquina virtual (VM), permitindo que ela funcione como se estivesse em um ambiente físico, a VM ainda pode detectar que está sendo virtualizada. Em sistemas Linux, isso é possível através de sinais como instruções especiais de CPU, drivers paravirtualizados (como VirtIO em KVM ou VMware Tools), e verificações em arquivos do sistema, como /proc/cpuinfo
ou /sys/class/dmi/id/product_name
. Essas interfaces e comandos revelam ao sistema que ele está operando em um ambiente virtualizado, mesmo em virtualização completa.
Virtual Machines
Meu ambiente de Máquina Virtual é com KVM/QEMU, para gerenciar e provisionar as máquinas virtuais, usarei o Vagrant. Independente de usar KVM ou VirtualBox, é possível baixar algumas imagens de VM pelo site osboxes.org, para rodar no KVM é preciso converter a imagem do disco da VM, o próprio QEMU faz isso.
Após a instalação do Kali Linux, instale o pacote dnsutils
, altere a senha padrão do usuário root e desative o login do root via SSH para aumentar a segurança do sistema.
Arquitetura Cliente e Servidor
A arquitetura cliente-servidor é uma das mais comuns e amplamente utilizadas em sistemas de computação e redes. Ela organiza a interação entre dois componentes principais: o cliente, que faz solicitações, e o servidor, que responde a essas solicitações. Essa arquitetura é usada para estruturar aplicações distribuídas, onde o servidor oferece recursos ou serviços e o cliente os consome.
O protocolo HTTP (Hypertext Transfer Protocol) opera na arquitetura cliente-servidor e é essencial para a comunicação entre clientes e servidores web. Ele define como as solicitações e respostas são trocadas na web, permitindo que os navegadores (clientes) solicitem recursos como páginas HTML, imagens, vídeos, entre outros, e os servidores respondam a essas solicitações. Compreender como ele funciona, especialmente os métodos HTTP, é crucial em cyber security, já que muitos ataques envolvem a exploração de falhas na comunicação web.
Métodos HTTP
Os métodos HTTP, ou verbos HTTP, são comandos que indicam qual ação deve ser realizada em um recurso específico no servidor. Eles são usados em requisições HTTP para dizer ao servidor o que fazer com o recurso indicado pela URL. Os principais métodos HTTP incluem:
GET: Solicita a representação de um recurso específico. É usado para recuperar dados do servidor. Por exemplo, ao digitar uma URL no navegador, uma solicitação GET é enviada para recuperar a página web correspondente.
POST: Envia dados para o servidor para criar um novo recurso. É comumente usado para enviar dados de formulário para o servidor ou para enviar dados para serem processados e armazenados.
PUT: Atualiza um recurso existente no servidor com os dados fornecidos. Geralmente, é usado para atualizar completamente um recurso.
PATCH: Atualiza parcialmente um recurso existente no servidor. Ele envia apenas os dados que precisam ser alterados, em vez de enviar todos os dados do recurso.
DELETE: Remove um recurso específico do servidor. É usado para excluir recursos existentes.
HEAD: Solicita apenas os cabeçalhos de resposta de um recurso, sem a carga útil de dados. É útil para verificar a existência de um recurso e obter informações sobre ele sem baixar todo o conteúdo.
OPTIONS: Solicita informações sobre as opções de comunicação disponíveis para um recurso, como os métodos HTTP suportados ou os cabeçalhos aceitos.
Esses são os principais verbos HTTP, cada um com uma função específica na comunicação entre clientes e servidores web. Eles permitem uma variedade de operações para recuperar, criar, atualizar e excluir recursos em servidores web, formando a base da arquitetura RESTful comumente usada na web moderna. Entender esses métodos é essencial porque vulnerabilidades, como Injeção de SQL, Cross-Site Scripting (XSS), e Cross-Site Request Forgery (CSRF), muitas vezes exploram a forma como esses métodos são implementados ou mal configurados nos sistemas.
Fontes
https://www.kitploit.com/2019/03/karma-search-of-emails-and-passwords-on.html