Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #82, ОКТЯБРЬ 2005 г.

Грабим формы!

Ms-Rem (Ms-Rem@yandex.ru)

Хакер, номер #082, стр. 082-110-4


[фильтрация полученных данных]

При большом количестве машин, на которых установлен формграббер возникают сложности в отсеивании необходимых нам данных. Обычно хакера ведь интересуют данные введенные только в определенных формах и на конкретных сайтах, поэтому требуется сохранять не все полученные данные, а только те, которые реально пригодятся. Для этого можно проанализировать URL и Referer запроса и отсеять только нужные формы. Неплохо будет анализировать не только запрос, но и ответ сервера. Например, при вводе какого-либо пароля нам нужно получить только правильные пароли, а случайные ошибки ввода следует фильтровать. Для этого можно анализировать код ответа сервера, либо содержимое возвращаемой HTML-страницы по определенным ключевым словам. Таким образом работает большинство формграбберов.

Недостаток вышеприведенного способа один - он работает только с Internet Explorer’ом и другими браузерами построенными на его движке (например, Avant Browser). Для преодоления этого недостатка можно перехватывать не WinInet API, а send из ws2_32.dll, после чего нам нужно будет собирать посылаемый запрос в буфере и сохранять его в момент окончания отправки данных. Этот момент можно определить по вызову closesocket для интересующего нас сокета, либо можно извлечь ContentLength из передаваемых заголовков и определить по нему момент окончания передачи тела запроса. Естественно первый метод значительно проще в реализации, да и особых недостатков у него не имеется. Нам просто нужно вести список сокетов, и для каждого сокета строить список принятых пакетов. При закрытии сокета собранные данные обрабатываются. Для всего этого нам нужно перехватывать всего три API-функции: это connect, send и cosesocket. Этот метод будет работать со всеми браузерами без исключения, но он сложен в реализации и имеет один неприятный недостаток - невозможность перехвата шифрованных форм. Большинство банковских служб, интернет-магазинов и других требующих безопасности ресурсов работают не по открытому HTTP-протоколу, а через SSL/TSL соединение, и все данные передаются по сети в шифрованом виде. Естественно, в таком же виде они и посылаются на сокеты. Поэтому нам нужно сохранять только данные, отправляемые по нешифрованому HTTP-протоколу. Отличить простой HTTP от SSL легко: первый имеет стандартный порт сервера 80, а второй 443. Конечно, эти сервисы могут быть и на нестандартных портах, но это случается весьма редко, поэтому нам нужно перехватывать трафик, идущий только на 80 порт, это легко определить по параметрам вызова connect.

Назад на стр. 082-110-3  Содержание  Вперед на стр. 082-110-5