Cibersegurança com Go - Parte I

Cibersegurança com Go - Parte I

A Segurança Informática ou Cibersegurança tornou-se uma preocupação crítica para indivíduos e organizações. A necessidade de desenvolver aplicações e ferramentas seguras, eficientes e confiáveis ​​tem levado à busca constante por tecnologias que possam atender a esses requisitos.

Neste contexto, a linguagem de programação Go surgiu como uma opção promissora devido à sua combinação de simplicidade, desempenho e recursos de segurança integrados.

Go: uma breve descrição

Figura 1. Intro Go. Fonte: OpenWebinars.


Go teve uma rápida adoção em uma ampla variedade de campos, especialmente em segurança de TI. Graças à sua sintaxe clara e concisa, Go é um aliado acessível e amigável que acelera significativamente o processo de desenvolvimento.

Um elemento distintivo é o seu compilador, capaz de gerar binários altamente otimizados e eficientes, uma característica crítica na criação de aplicações de segurança que exigem respostas ágeis e uma ótima gestão de recursos.

Vantagens do Go em Cibersegurança

Desempenho e eficiência: No campo da segurança informática, a velocidade é essencial. Go oferece desempenho excepcional devido ao seu compilador altamente otimizado e à ausência de uma máquina virtual. Isto permite a criação de ferramentas capazes de analisar grandes volumes de dados em tempo real, identificando potenciais ameaças de forma eficiente.

Concorrência: Go adiciona goroutines e canais, facilitando a criação de programas simultâneos e paralelos. Isto é essencial em aplicações de segurança que devem lidar com múltiplas tarefas simultaneamente, como análise de tráfego de rede ou monitoramento de eventos.

Segurança Integrada: Go se esforça para evitar vulnerabilidades comuns, considerando aspectos de segurança em seu design. Por exemplo, seu forte sistema de digitação e manipulação de ponteiros ajudam a evitar erros de programação que podem levar a vulnerabilidades.

Bibliotecas Padrão: Go possui uma biblioteca padrão rica e bem documentada que inclui pacotes para criptografia, autenticação, comunicação segura e muito mais. Isso permite que os desenvolvedores de segurança criem aplicativos sólidos em bases confiáveis.

Casos de uso em segurança de computadores

Ferramentas de análise de vulnerabilidade: Go é usado para desenvolver ferramentas que verificam aplicativos em busca de vulnerabilidades potenciais, facilitando a detecção precoce e a correção.

Gosec

Figura 2. Gosec. Fonte: GitHub/Securego.


Gosec é uma ferramenta de análise estática de código (SAST) escrita em Go. Ela é usada para identificar possíveis problemas de segurança no código-fonte de aplicativos escritos em Go, como vulnerabilidades de injeção de SQL, problemas de autorização inadequada e muito mais.

Instalação do Gosec

Antes de começar, certifique-se de ter o Go instalado em seu sistema. Neste caso, deve-se destacar que é utilizado o sistema operacional Kali Linux. Então, você pode instalar o Gosec executando o seguinte comando em seu terminal:

Figura 3. Instalação do Go. Fonte: Bladimir Peláez.

Figura 4. Instalação de Gosec. Fonte: Bladimir Peláez.


Para verificar se o Gosec foi instalado com sucesso, digite o seguinte comando:

Figura 5. Verificar o Gosec. Fonte: Bladimir Peláez.


Com o exposto, verificamos que o Gosec já está instalado corretamente em nosso sistema.

Exemplo 1: Verificando um arquivo simples com Gosec

Criamos um arquivo de código Go chamado exemplo.go e, para uso de demonstração, adicionamos o seguinte conteúdo a ele:

Figura 6. Exemplo1. Fonte: Bladimir Peláez.

Criamos um segundo arquivo chamado exemplo2.go e executamos o seguinte comando:


Figura 8. Gosec ejecución I. Fuente : Bladimir Peláez.

Figura 9. Gosec execução II. Fonte : Bladimir Peláez.


No primeiro exemplo, Gosec analisará o arquivo e mostrará quaisquer possíveis problemas de segurança que encontrar (como o armazenamento de senhas em texto simples), enquanto no segundo exemplo destacará a conexão de banco de dados não criptografada. Ressalta-se que o Gosec não recebe como argumento um arquivo, mas sim uma pasta, ou seja, neste caso foi utilizado o parâmetro ./; O que significa que estamos dizendo para ele fazer a varredura no caminho atual.

Ferramentas de enumeração em aplicações web e servidores com Go

Gobuster

Figura 10. Gobuster. Fonte: www.kali.org.


No vasto cenário digital de aplicativos e servidores Web, muitas vezes surgem desafios na identificação de recursos ocultos ou diretórios confidenciais que podem ser explorados por invasores mal-intencionados. É aqui que entra o Gobuster, uma ferramenta que facilita a pesquisa abrangente de recursos, examinando o alvo selecionado com diferentes padrões e palavras-chave.

Características do Gobuster

Enumeração de diretório e arquivo: Gobuster é especializado em enumerar diretórios e arquivos para um alvo específico. Isto é essencial para identificar potenciais pontos de entrada que podem ser alvo de ataques.

Diversidade de Ataque: A ferramenta permite configurar vários modos de ataque, como força bruta baseada em dicionário, que testa combinações de palavras-chave predefinidas para encontrar recursos ocultos. Também é possível especificar o tamanho das palavras-chave, o que amplia ainda mais as possibilidades de descoberta.

Suporte a protocolo: Gobuster não se limita apenas a aplicativos da web. Ele pode funcionar com uma variedade de protocolos, incluindo HTTP, HTTPS, FTP e muito mais, expandindo seu escopo de enumeração em diversos contextos.

Personalização de Requisitos: A ferramenta permite personalizar critérios como extensão de arquivo, códigos de status HTTP específicos e tempo limite entre solicitações. Isso permite ajustar os resultados e reduzir o ruído na saída.

Uso prático do Gobuster em segurança de computadores

Exemplo 1. Descobrindo diretórios ocultos em um aplicativo Web com Gobuster

Digamos que você teste a segurança em um aplicativo Web no domínio http://testphp.vulnweb.com. Você deseja ter certeza de que não há diretórios ocultos ou recursos confidenciais que não sejam visíveis para usuários normais. Você pode usar o Gobuster para procurar diretórios que possam ter sido perdidos.

1- Instale Gobuster no Kali Linux com o seguinte comando:

Figura 11. Instalar Gobuster. Fuente: www.kali.org.


2- Abra seu terminal e execute o seguinte comando para iniciar uma varredura com Gobuster:

Figura 12. Scanning com o Gobuster. Fonte: Bladimir Peláez.


no comando anterior:

  • dir indica que você deseja executar uma varredura de diretório.
  • -u http://testphp.vulnweb.com Especifique o URL de destino que você deseja verificar.
  • -w /usr/share/wordlists/fasttrack.txt fornece o caminho para o arquivo de dicionário que Gobuster usará para teste. Um dicionário é uma lista de palavras-chave que o Gobuster tentará encontrar nos diretórios.

Gobuster começará a verificar o URL fornecido usando as palavras-chave do dicionário. Você verá que o Gobuster mostrará no terminal os diretórios que encontrar no servidor. Por exemplo, se o dicionário contiver palavras como admin, secret, backup, etc., Gobuster tentará acessar a diretórios como http://testphp.vulnweb.com/admin, etc.

Figura 13. Resultados do scan Gobuster. Fonte: Bladimir Peláez.


Na imagem acima você pode ver os resultados da verificação. Gobuster mostrará os códigos de resposta HTTP para cada solicitação feita. Preste atenção aos códigos de resposta 200 (OK) e 301 (redirecionamento), pois podem indicar a presença de um diretório ou recurso oculto.


Neste contexto, a linguagem de programação Go surge como uma aliada confiável. Sua combinação de eficiência, simultaneidade e foco na segurança fazem dele uma ferramenta poderosa para o desenvolvimento de aplicações e ferramentas resilientes e ágeis. Go não apenas simplifica o processo de desenvolvimento, mas também aborda vulnerabilidades potenciais desde o design.

Até aqui abordamos alguns tópicos sobre o que é Go e quão eficiente é seu uso na segurança informática, além de alguns exercícios práticos focados do ponto de vista ético. Concluímos a primeira parte da Cibersegurança com Go.

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.