Что можно сделать с ип-адресом Как известно, Internet основана на
семействе протоколов tcp/ip, определяющих, каким образом осуществляется
взаимодействие между подключенными к сети компьютерами. Идентификация
этих компьютеров осуществляется с помощью так называемых IP-адресов,
каждый из которых представляет собой уникальный 32-битный
идентификатор, обычно записываемый в виде четырех десятичных чисел,
например, 192.168.0.1. И с точки зрения адресации сервер,
обрабатывающий ежесекундно тысячи запросов практически ничем не
отличается от вашего компьютера, подключаемого к сети по dial-up.
Единственная разница домашний пользователь, как правило, получает так
называемый динамический ip-адрес, меняющийся от подключения к
подключению. В то время как адрес сервера должен быть доступен всем
клиентам, желающим воспользоваться его услугами, клиент вовсе не обязан
афишировать свой адрес на каждом углу. Более того, обнародование
ip-адреса может привести к весьма серьезным последствиям. Что можно
сделать с человеком, зная его ip-адрес? Ну, например, если на его
машине с Windows'95 живет NetBIOS over IP, и разделены для доступа по
сети, да еще и без паролей, некоторые диски, то довольно много :) (для
заинтересовавшихся - помочь здесь могут nbtstat, lmhosts и net use).
Правда это не слишком часто встречается у dial-up пользователей. Другой
пример - в прошлом году были найдены дыры в IE и NN, позволяющие
получить доступ к файлам клиента. Дырки те, правда, уже прикрыли, но
кто знает, сколько их еще осталось. До сих пор пользуются популярностью
в определенных кругах программы, объединяемые общим названием
(восходящего к первой программе этого класса - Winnuke), которые
осуществляют атаки типа Denial of Service, приводящие к зависанию или
отключению от сети атакуемого компьютера. Нежно любимая миллионами
пользователей ICQ (
http://www.icq.com) тоже оказалась не без греха. На странице Fyodor's Exploit world (
http://www.dhp.com/~fyodor/sploits.html) помимо прочего приведена информация о слабостях ICQ-шного протокола (
http://www.dhp.com/~fyodor/sploits/icq.spoof.overf...,
которые уже позволили создать многочисленные программы, делающие жизнь
пользователя ICQ не слишком пресной. Так, например, на странице ICQ
Snoofer Team (
http://const.ricor.ru/~icq/)
предлагается опробовать программу, позволяющую слать сообщения по ICQ с
чужого UIN. Snoofer существует в двух вариантах - в виде скрипта,
доступного со страницы, и в виде программы, которую обещают рассылать
по почте. Для его использования достаточно знать ip-адрес адресата,
номер порта, на котором висит ICQ, и UIN отправителя. Инструкция
прилагается. Впрочем, все эти веселые программы пригодны в основном для
деструктивной деятельности, особого смысла, в которой я не вижу
(кстати, запущенное на нашем сервере голосование по поводу "нюков"
показало, что большинство посетителей со мной солидарно). Посмотрим,
какие действия можно предпринять для определения и скрытия ip-адреса.
Абсолютных рецептов, конечно, не существует, можно говорить лишь о
наиболее распространенных случаях. Вообще говоря, ваш IP-адрес может
засветиться в огромном количестве мест. Другое дело - как его потом
оттуда вытащить. Скажем, ваш любимый броузер при заходе на любую
страницу сообщает о себе достаточно много информации. В качестве
простой демонстрации приведу скрипт на Perl'е, выводящий основную
информацию о посетителе страницы: Листинг 1. showuser.pl
#!/usr/bin/perl print ("Content-type: text/html\n\n"); @ee=( "CHARSET",
"HTTP_USER_AGENT", "HTTP_REFERER", "REMOTE_ADDR", "REMOTE_HOST" );
foreach $e(@ee) { print "$e: $ENV{$e} \n"; } Вообще-то это самый
безобидный случай обнародования ip-адреса (разве что если допустить
злой умысел веб-мастера, установившего скрипт, атакующий посетителя, но
вероятность целенаправленной атаки ничтожно мала). IP-адрес отправителя
можно вытащить из заголовка полученной электронной почты (Скорее всего,
он будет лежать в последнем поле Received:, в отличие от поля From: его
подделать чуть сложнее). Если у вас динамически выделяемый адрес, то
подобная ситуация не слишком опасна. Хуже, если адрес постоянный, что,
правда, встречается, но реже. Самыми опасными с точки зрения
обнародования ip-адреса оказываются всевозможные системы для
интерактивного общения - IRC (командой /whois), InternetPhone, ICQ и
т.д. Справедливости ради надо заметить, что некоторые из них пытаются
прикрыть адрес пользователя (скажем, в MS Comic Chat показывается
только часть адреса, в ICQ'98 появилась возможность скрытия своего
адреса, не слишком правда хорошо работающая при общении со старыми
версиями), но в большинстве систем адрес лежит совершенно открыто. Что
же касается html-чатов, здесь все зависит от желания разработчика,
принципиальная возможность показа ip-адреса существует, как это было
продемонстрировано чуть выше. Идея следующая: если в чате разрешен ввод
тегов html, никто не помешает вставить в свое сообщение что-то типа В
итоге все присутствующие в чате (даже не зарегистрировавшиеся) будут,
сами того не ведая, вызывать скрипт sniffer.cgi. Ну а остальное уже
дело техники, реализация подобного скрипта на Perl'е, ведущего лог всех
обращений, займет несколько строчек. Демонстрационный вариант этого
скрипта доступен на www.hackzone.ru/cgi-bin/sniffer.cgi Способ
применения очень прост - вы вставляете в свое сообщение текст, где id -
идентификатор канала (помогает не запутаться при использовании скрипта
на разных чатах разными людьми). Если этот чат поддерживает вставку
html-тегов, то скорее всего вы увидите анимированный логотип HackZone.
Все, что теперь осталось - просмотреть лог (
http://www.hackzone.ru/files/snifflog.txt),
в который пишется дата обращения к скрипту, ip-адрес и идентификатор
id. Поскольку речь идет о демонстрации, в логе хранятся только 30
последних записей. Листинг 2. sniffer.pl #!/usr/bin/perl $log =
"/local/path/on/your/server/snifflog.txt"; $now_string = localtime;
@thetime = split(/ +/,$now_string); @theclock = split(/:/,$thetime[3]);
$ampm = 'am'; if ($theclock[0] > 11) { $ampm = 'pm'; } if
($theclock[0] == 0) { $theclock[0] = 12; } if ($theclock[0] > 12) {
$theclock[0] -= 12; } else { $theclock[0] += 0; }
$lnum=$ENV{'QUERY_STRING'}; open (DB, "$log") || die "Can't Open $log:
$!\n"; flock(DB, 2); @line=; flock(DB, 8); close(DB);
$line0="[$thetime[0] $theclock[0]\:$theclock[1]$ampm] (".$lnum.") ".
$ENV{REMOTE_ADDR}." ".$ENV{REMOTE_HOST}; $maxline=@line; $maxline=30 if
($maxline>30); open (DB, ">$log") || die "Can't Open $log: $!\n";
flock(DB, 2); print DB ("$line0\n"); for ($i=0; $i) Теперь немного о
том, как же защититься от всего этого безобразия. Самый простой способ
прикрыться при прогулках по Web - воспользоваться proxy либо службой
наподобие Anonymizer, Inc.(
http://sol.infonex.com/).
Принцип их работы аналогичен - вы напрямую общаетесь только с
proxy-сервером, а черную работу по заходу на сайты он делает за вас.
Хуже всего дело обстоит с чатами. Проблема в том, что если найти
какой-нибудь левый прокси для www достаточно легко, подобный сервис для
irc, icq и иже с ними встречается, мягко говоря, очень редко и для
простого dialup-пользователя практически недоступен. Именно поэтому
большая часть средств для атаки по ip заточена под всевозможные
irc-клиенты. Так что бороться тут можно лишь двумя способами. Самый
надежный - не использовать их вообще. Более реалистичный - бороться не
с причиной, а со следствиями - разыскать свежайшие заплаты и надеяться,
что против вашей брони еще не изобрели подходящей пушки.
Заинтересовавшимся вопросом приватности в Интернет могу порекомендовать
очень хороший сайт "Privacy Issues: Частная жизнь в Интернете" (
http://www.tamos.com/privacy/ru/),
целиком посвященный этой теме. Помимо вопросов анонимности в WWW и IRC
(расписанных весьма подробно), здесь рассматриваются способы
установления личности по адресу электронной почты, даются краткие
рекомендации по использованию криптографических средств, здесь же
программа для подсматривания ввода с клавиатуры, несколько приятных
ссылок и т.д.