Loading repository data…
Loading repository data…
rafaelbarbeta / repository
Projeto HackoonSpace : Um pequeno removedor de vírus escrito em Python, com suporte à detecção de uma grande quantidade de malwares já conhecidos
Projeto de mini-antívirus, que consegue detectar assinaturas de malwares conhecidos assim como colocá-los em "quarentena". Foi feito inteiramente em python com ajuda da biblioteca de regras YARA. Adicionalmente,inclui uma breve pesquisa sobre o vírus de computador conhecido como Neshta, com sua análise dinâmica e estática.
Todos os softwares desenvolvidos contém padrões exclusivos, que permitem indentificá-los em meio a tantos outros. O mesmo acontece com malwares. Um dos mecanismos mais úteis dos antivírus modernos é justamente a detecção por assinatura, que consiste em catalogar diversos desses "padrões" de vírus em uma base de dados e compará-los com os arquivos presentes no computador do usuário. Um "match" provavelmente significa que aquele arquivo é um malware já conhecido e que portando deve ser isolado pela segurança do cliente.
Dois tipos de assinatura são utilizados para detecção de software maliciosos nesse projeto:
A interface do programa é inteiramente textual. Apoós a execução, será fornecido um terminal para inserção dos comandos, que seguem o padrão: nome_comando < parâmetro >
O MultiVXRemover foi feito inteiramente em python, sendo necesssário um interpretador da linguagem para poder executar o programa. Foram utilizadas as seguintes bibliotecas
O projeto inclui um set de regras YARA obtidos da Reversing LABS. O projeto original pode ser encontrado nesse link
Além disso, inclui um "scraper" escrito em bash "downloader.sh" para hashes MD5 do site vírus share. Há uma coleção gigantesca de assinaturas de vírus coletadas da internet. O download de todos os arquivos pode demorar algum tempo, mas se desejar, adicione sesu próprios hashes para teste.
Para a realizar o projeto, fizemos a seguinte sequência de etapas:
Alguns preparativos precisam ser feitos para que seja possível executar o programa. Os passos serão dados para o Linux, supõe-se que esse aplicativo será executado em um ambiente seguro, desconectado da internet e em uma máquina virtual.
sudo apt install yara
sudo apt install python3-pip
pip install yara-python
Obs: talvez seja necessário installar libssl-dev primeiro, caso dê erro 4. Baixe o conjunto de hashes do virusshare, basta executar downloader.sh
./donwloader.sh
Obs: essa etapa pode demorar uns 30 minutos. Interrompa a qualquer momento o download se não quiser baixar todos os hashes md5. Monte o banco de dados sqlite. Essa etapa é bem mais rápida que a primeira
python3 hashDBBuilder.py
python3 Main.py
A execução é bastante direta, apenas digite:
python3 Main.py
E o programa estará em execução. Adicione as regras incluidas no app:
addRules rawRules
O programa suporta adição constante de novas regras. Para fins de teste, vamos inserir uma regra para detectar o falso vírus EICAR
Em outro terminal, insira essa comando para gerar o "virus":
mkdir teste
echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > ./teste/eicar
E escanear com:
scan teste
O "vírus" será neutralizado e colocado em quarentena. No caso, ele simplesmente é codificado para base64, um formato puramente textual e não executável. Outras informações são adicionadas para permitir sua restauração no mesmo local onde foi deletado
Veja sua quarentena com:
viewQuarantine
Restaure o eicar
restore eicar
O scan de hash funciona da mesma forma. Atente-se com uma demora extra para verificar os arquivos, uma vez que será necessário comparar o hash com uma grande base de dados.
Por ter sua detecção baseado apenas em assinaturas, o MultiVXRemover não é capaz de detectar os chamados malwares metamórficos/polimórfimos ou ameaças recentes. De forma resumida, malwares que mudam sua forma (sua assinatura) "espontaneamente" ou que acabaram de serem criados não serão detectados por regras estáticas, que ficam muito limitadas aos softwares que as deram origem. Soluções de antivírus modernas incluem análise heurística e em tempo real da atividade de cada software no PC, se concentrando mais na ação do programa do que no seu código.
A compilação das regras YARA geralmente será rápida, porém, o download e criação do banco de dados SQL dos hashes pode levar algum tempo, cerca de 30 minutos. A detecção com hashes também sofre do mesmo problema, demorando relativamente bastante tempo para comparação do hash de um arquivo com o banco de dados. Tentativas de otimização foram feitas para acelerar o processo, sendo que a organização em banco de dados sqlite foi a mais promissora.
A organização em forma de classes possui um alto "acoplamento" entre as classes, o que torna o código mais difícil de ser expandido futuramente
A quarentena utilizando o scan com regra yara está um pouco confusa. A quarentena é utilizada diretamente pelo Scanner, mas é o Main que deveria fazer isso.
Encoraja-se fortemente o uso dessa ferramenta em um ambiente controlado e seguro como uma máquina virtual. Esse projeto NÃO substitue um antivírus profissional. Os criadores não serão responsáveis por quaisqueres incidentes que ocorram devido ao uso desse software.