Projeto de Botnet com Websockets para demonstração durante apresentação do meu trabalho de Ambientes Computacionais e Segurança

Overview

A3 - Botnets

Este é um repositório onde documentarei todo o processo de pesquisa e desenvolvimento do meu trabalho de conclusão de semestre da UC de Ambientes Computacionais e Segurança.
O tema escolhido pelo meu grupo foi o de Botnets, que é uma coleção de tecnologias que utilizam redes de computadores para comunicar-se entre si.
O projeto que escolhi fazer contará com uma botnet 100% funcional feita com websockets e Python, funcionando em cima do protocolo HTTP e rodando completamente no browser das "vítimas".

Indice

Resumo do Projeto

Este projeto vai ser muito complexo e contará com diversas partes, entre elas um servidor de controle que comandará os zumbis, um frontend malicioso que infecta as vítimas e um site que servirá de vítima da botnet, sofrendo um ataque de DDoS durante a apresentação ao vivo.

C2

O servidor de controle

Este será um servidor feito em python utilizando as bibliotecas asyncio e websocket que irá fazer a gestão, controle e monitoramento dos zumbis.

Este será responsável por manter uma espécie de Heartbeat, um pulso que irá checar a conexão de todos os zumbis e enviar uma mensagem para todos os zumbis que não estão conectados ou perderam a conexão com o servidor de controle.

O servidor de c2 será responsável também por enviar o comando de ataque e parada para os zumbis, que irão agir de maneira coordenada e sobrecarregar a vítima, causando um ataque distribuido de negação de serviço, um ataque de DDoS.

Zumbi

O frontend malicioso

Esta será uma aplicação web onde as vítimas irão se conectar e se comunicar com o servidor de controle, aguardando ordens de ataque por trás dos panos utilizando a tecnologia de websockets.

Os clientes conectados terão que responder um pulso enviado pelo servidor para provar que ainda estão conectados e ativos, esperando o comando e o alvo do ataque.

Vitima

A vítima do ataque distribuido

Este será um servidor de demonstração que irá sofrer o ataque coordenado da botnet e será sobrecarregado, tendo sua funcionalidade prejudicada pelos zumbis.

Este irá contar com uma interface de monitoramento, onde iremos observar ao vivo o estado da vitima, quantas requisições estão chegando, a quantidade de banda, tráfego recebido e outras métricas.

Protocolos de Rede

Handshake

O processo começa com a abertura da conexão websocket, que é feita pelo cliente.
O servidor então responde com um pacote handshake_ping e uma chave aleatória de 4 bytes que será utilizada para criptografar as mensagens entre o cliente e o servidor.
O cliente então responde com um handshake_pong e outra chave aleatória de 4 bytes, além de um nome de tamanho entre 4 e 16 caracteres, usado para identificar o zumbi.
Usando o nome e as duas chaves trocadas, o servidor faz o hash da chave e envia um pacote do tipo handshake_success, contendo o hash.
O cliente então compara o hash local com o hash recebido pelo servidor e se os hashes forem iguais, envia outro pacote handshake_success, indicando ao servidor de controle que a comunicação foi iniciada e as rotinas de heartbeats e ataque deve começar.

Linha do tempo: (C=cliente, S=servidor))

1 C ---> S | C Abre conexão websocket
2 C <--- S | S Envia handshake_ping e chave aleatória server_key
3 C ---> S | C Envia handshake_pong, nome do zumbi e chave aleatória client_key
4 C <--- S | S Envia handshake_success, hash sha256 do nome do zumbi e das duas chaves trocadas
5 C ---> S | C Envia handshake_success após comparar os hashes sha256 do identificador do zumbi e o hash recebido pelo servidor, confirmando que a troca de chaves foi válida e que já está esperando as rotinas de heartbeat e ataque

Este processo é puramente por Proof of Concept e não é de fato um handshake real, já que este processo é feito por trás dos panos já que estamos usando a tecnologia de websockets.

vou adicionar um gif depois

Heartbeat

O servidor de controle envia um pacote do tipo heartbeat_ping para todos os zumbis que estão conectados.

Setup

Work in progress, não está funcional ainda Para rodar o projeto em sua própria máquina, são necessárias algumas dependências:

  • python3 (3.9.7 foi usado para o desenvolvimento)
  • python3-pip
  • python3-venv

O repositório conta com um arquivo de setup que instala todas as dependências necessárias em sistemas Unix usando apt e outras utilidades do shell.

Para instalar com o ./build você precisa ter o sudo habilitado.

chmod +x ./build
./build

Para rodar o servidor de controle e o frontend malicioso, utilize os comandos abaixo:

./start_c2
./start_front
You might also like...

Repositório com as demonstrações e dados compartilhadas durante os webinars do Databricks Journey Brasil

Databricks Data Journey Brasil Repositório com as demonstrações e dados compartilhadas durante os webinars do Databricks Journey Brasil de Jun/Jul 202

Jul 11, 2022

Alguns exercícios interessantes realizados durante o estudo.

Programas desenvolvidos durante estudo da linguagem Python Índice Descrição Utilitários Jogos Descrição Durante meus estudos de Python, foram realizad

Sep 16, 2022

Códigos de exercícios de meu estudo de estrutura de dados em python.

Estrutura de dados Códigos de exercícios de meu estudo sobre estrutura de dados aplicado em Python 3. Exercício 01 Criaremos um TAD a partir de uma ne

Oct 12, 2022

Parte em python do meu TCC. Integração do hardware

Home automation applied in the integration of security cameras with Alexa virtual assistant using computer vision General objective This project has t

Oct 11, 2022

Projeto extrai dados de um site de filmes onde nele você tem a opção de selecionar quais filmes ou series você quer extrair e ele extrai os dados convertendo para excell.

Extração de dados Site faz a extração de dados do site torrentool fazendo uso framework Scrapy. 🎲 Rodando o Back End (servidor) # Clone este repositó

Mar 28, 2022

Projeto estruturado com a ideia de se fazer um blog com posts voltados para tecnologia.

django-blog Autor: Leonardo Rodrigues da Costa Requisitos Este projeto tem os seguintes requisitos: Python 3.9.12 Django 4.0.4 Django-summernote 0.8.2

May 4, 2022

Projeto Pessoal, Programinha para baixar vídeos do Youtube com Python, Utilizando PySimpleGUI e Pytube

Python 3.10 Youtube-Download-Videos Programa Desenvolvido Por Mim Com O Objetivo de Baixar Vídeos do Youtube Facilmente. Nele Você Tera Duas Opções, B

May 24, 2022

Executa todos os passos para criação de um projeto Python

Executa todos os passos para criação de um projeto Python

Automatizando a criação de projetos em Python Linha de comandos Windows Idéia e deploy por Robinson Enedino Visite meu WebSite https://www.enedino.com

May 28, 2022

Projeto utilizando a lib Flask para gerar um site de conversão de videos do YouTube

Conversor MP3 Youtube Projeto utilizando a lib Flask para gerar um site de conversão de videos do YouTube https://flask.palletsprojects.com/en/2.1.x/

Jul 6, 2022
Owner
Luiz Melo
Red Team Offensive Security Researcher; Python developer; Crypto & Blockchain Enthusiast;
Luiz Melo
Projeto em Python realizado durante a disciplina de Raciocínio Computacional e Lógica na graduação de Análise e Desenvolvimento de Sistemas no ano de 2020.

Este é um projeto entregue na Atividade Prática (ATP) da disciplina de Raciocínio Computacional e Lógica no início da minha graduação em Análise e Des

Caroline de Camargo 1 Apr 19, 2022
Scraping de sites de imobiliárias para achar casas que caibam no meu orçamento

Mudança Raspagem de dados de imobiliárias para achar uma casa que caiba no meu orçamento TODO Raspagem: Paginação Simplificação das URLs no yaml Limpe

Eduardo Mendes 16 Dec 16, 2022
Repositório para os projetos e exercícios do meu aprendizado de Python.

Documentação Python 3: https://docs.python.org/3/tutorial/ ?? CERTIFICADOS: [CURSO] PYTHON: COMENÇANDO COM A LINGUAGEM: https://cursos.alura.com.br/ce

Vinicius Chagas 1 Sep 11, 2022
Criei uma calculadora de media ponderada, para me auxiliar no 1º periodo da faculdade de engenharia em saber meu CR - coeficiente de rendimento

# Projeto_python-Media_1periodo #Criei uma calculadora de media ponderada, para me auxiliar no 1º periodo da faculdade de engenharia em saber meu CR -

Felipe Pontes 1 Sep 17, 2022
Repositório criado para armazenar o projeto final apresentado na disciplina de Computação Gráfica que consistia em utilizar OpenGL para apresentar um modelo 3D.

Projeto Final Computação Gráfica É um projeto básico para composição de nota e nada muito avançado em relação as aplicações da área de computação gráf

Álvaro Farias 1 Aug 6, 2022
Projeto criado para implementação de melhorias, criando um sistema que gerasse relatórios com algumas informações e criando também um controle do estoque para um restaurante ficticio

Projeto Restaurant Orders Dada a informação (fictícia): A lanchonete 'Pão na Chapa' possui um sistema de faturamento de pedidos de clientes que salva

Ana Luisa 1 Sep 9, 2022
Trabalho Final da Disciplina de Introdução à Ciência da Computação - INE5201

Análise de séries temporais com indicativo de tendência baseado em média móvel Fornece uma análise de tendência (Alta, Queda, Constante) apartir de um

Trabalhos da Faculdade 1 Jul 10, 2022
🏆 Challenge Milenio - Uma aplicação REST API para logística que utilizei os algoritmo Dijkstra e BFS (Breadth-first search) para realizar cálculos para definir trajetos.

! ??️ PROJETO IMPORTADO DO GITLAB - https://gitlab.com/rodneysostras/desafio-dev-jr-pl Challenge Milenio Capital Sobre • Requisitos • Recursos • Como

Rodney Sostras 1 May 4, 2022
codigo para expandir endereços IPV6 para sua forma de 32 bytes e de forma reversa para DNS.

codigo para expandir IPV6 codigo facilitador para ultilizar Ipv6, e reduzindo o tempo necessario para realizar sua expansão. alem da expensão, esse co

Julio Cesar Fenuchi 2 Dec 12, 2022