O que é ransomware?
A palavra turca para resgate é fidye. Ransomware é o nome geral dado ao software malicioso que infecta computadores, inutiliza arquivos no computador, impede o acesso a arquivos e os criptografa. Ransomware pode ser traduzido para turco como ransomware. O ransomware criptografa a grande maioria dos softwares em arquivos no computador. Outros simplesmente tornam o computador inutilizável. Quase todos os softwares Ransomware recém-criados criptografam todos os documentos no sistema infectado.
Quando o software ransomware infecta o computador, ele criptografa arquivos de todos os tipos, especialmente documentos, imagens, filmes, bancos de dados e muito mais. Para que você tenha acesso a esses arquivos, o Ransomware exige dinheiro, resgate de você.
Ransomware é frequentemente usado por cibercriminosos. O resgate geralmente é solicitado com uma moeda digital chamada Bitcoin . O valor do resgate é determinado pelo desenvolvedor do Ransomware.
Vamos escrever um Ransomware:
decidimos escrever um exemplo de ransomware sob o título de Ransomware para entender a lógica. Vamos escrever nosso ransomware em Python. Python não é uma linguagem de programação adequada para essas coisas... Mas queríamos usar uma linguagem com sintaxe e estrutura simples, já que estávamos tentando entender a lógica.
Logo no início do evento, precisamos determinar o algoritmo de senha que usaremos.
Usamos AES neste exemplo , vamos falar brevemente sobre a criptografia AES .
AES ,É um algoritmo de cifra de bloco inventado por Vincent Rijmen e Joan Daemen em 2001 depois que o DES foi quebrado por alguns cientistas . Eles visavam fechar as fraquezas do DES . Tem três comprimentos de chave diferentes, 128, 192 e 256 bits. É o algoritmo de criptografia simétrica mais amplamente utilizado. Já existem muitos módulos para criptografia AES com Python . Se você é especialista em criptografia e conhece Python, pode escrever seu próprio módulo... Não o escreveremos nós mesmos, usaremos o módulo "pyaes" de Richard Moore (GITHUB: ricmoo). Este módulo é fácil de instalar e é escrito em python puro.
Mas é um pouco "300x" mais lento que a biblioteca " Pycrypto " . Por ser tão fácil de instalar, se fosse um software 300 vezes mais lento de instalar, difícil de instalar e exigisse muitos requisitos, é claro que seria moderadamente rápido. De qualquer forma, o que estamos tentando explicar a lógica aqui é uma coisa aceitável.
Instalando
o Módulo: Para instalar o módulo, primeiro é necessário instalar o Python. Existem duas maneiras de instalar. Um é "pip" e o outro é baixar e instalar do GitHub.
Instalar usando o Pip: A instalação
usando o pip é simples, tanto no Windows quanto no Linux.
"pip install ( nomedopacote )" remova os parênteses ao instalar o pacote. Em sistemas Linux, o pip deve ser executado com direitos de administrador.
Se você recebeu uma mensagem como você pode ver nas fotos, isso significa que o módulo foi instalado. Antes de usá-lo, vamos mostrar como baixá-lo e instalá-lo no GitHub.
Instalação via GitHub: Se formos instalar
nosso módulo no GitHub, devemos baixar os arquivos, em seguida utilizar o arquivo "setup" e instalar o módulo no sistema. Se tivermos o git instalado em nosso computador, podemos baixar um projeto para nosso computador digitando " git clone <url>.git ". Em seguida, instalaremos o módulo com o arquivo "setup".
Endereço GitHub do módulo: https://github.com/ricmoo/pyaes
GitHub - ricmoo/pyaes: Implementação Pure-Python da cifra de bloco AES e modos comuns de operação. Como já fiz as operações antes, como podem ver no download que fiz com o git, destaca-se que o "pyaes" já está disponível.
git clone GitHub - ricmoo/pyaes: implementação Pure-Python da cifra de bloco AES e modos comuns de operação.
cd pyaes
python2 setup.py install
Essas operações já são simples, as operações futuras podem parecer difíceis, mas definitivamente será fácil para você depois de tentar 1-2 vezes.
Usando o Módulo / Testes
Vejamos um uso simples após o processo de instalação. Você pode encontrar a documentação detalhada na página do GitHub que acabei de fornecer.
Gerando Chaves:
Vamos nos referir à biblioteca "os" do Python para gerar chaves. Como mencionamos anteriormente, a chave AES pode ter três comprimentos diferentes;
128, 192 e 256 bits. Como oito bits são um byte e um byte é um caractere;
Tecla de 16 caracteres --> tecla de 128 bits torna-se tecla
de 23 caracteres --> tecla de 192 bits tecla de
32 caracteres --> tecla de 256 bits
. Vamos criptografar os dados com uma chave de 256 bits. Esta chave terá 32 caracteres. Como acabei de mencionar, usaremos a biblioteca "os" do Python. Vamos gerar nossas chaves.
A geração da chave de 32 bytes/caracteres e 256 bits é mostrada na imagem abaixo:
Mas primeiro, começamos digitando "Python2" em nosso console. Como você pode ver, geramos uma chave de 32 caracteres (256 bits). A função "urandom" que usamos é puramente uma função escrita para gerar strings para fins criptográficos. Usaremos a mesma chave para criptografia e descriptografia, então AES
Criptografia de dados
Agora que temos uma chave, podemos criptografar os dados. Haverá algumas palavras estrangeiras que você verá nos códigos-fonte em breve, vamos dar seus significados para quem não sabe.
Key --> Key
Encrypt --> Encryption
Decrypt --> Decrypt
Plain text --> Plain text,
ciphertext Ciphertext --> Ciphertext
CTR mode --> Counter Mode of Operation / Um dos modos de operação da cifra de bloco.
Depois de algumas informações preliminares, vamos começar nossos experimentos. Trabalharemos com o modo CTR enquanto criptografamos com AES . Se você está curioso sobre esses modos,
Wikipedia ( modos de operação de cifra de bloco)) pode ser lida.
Vamos primeiro escrever uma função "criptografar" e criar as variáveis necessárias, eventos de importação do módulo para fazer a criptografia.
Função de criptografia:
Agora Gedit, Mousepad, Nano etc. não importa, abra um editor de texto, mas termine com ".py". NOTA: A chave que escrevi na seção Chave é a chave que acabamos de obter na codificação em python, portanto, a chave pode mudar conforme a codifiquei antes. Com esta função que escrevemos, os dados "Hello" que demos como "texto simples" para a função "criptografar" foram criptografados usando a chave que demos como segundo valor. Agora vamos executá-lo e ver qual saída ele dará.
Como você pode ver, ele criptografou a string "hello" e imprimiu o resultado na tela. É muito difícil restaurar esse resultado sem uma chave, porque temos criptografia de 256 bits. Vamos também escrever uma função "descriptografar" para que possamos restaurar a mensagem criptografada com a chave que temos.
Agora vamos falar sobre as funções de criptografia e descriptografia. A partir daqui, encerraremos nosso tópico. Como você pode ver nos códigos acima, "Decryption" desta forma, a cadeia de caracteres "hello" que enviamos "encrypt" é criptografada e direcionada para a função "decrypt", descriptografada com a chave e retornada ao seu estado original. Agora vamos executar nosso comando, Python2cryption.py . Como você pode ver, foi decifrado em nosso processo acima :
Recebemos nossa resposta.E a criptografia é muito simples de fazer