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

Hack-Faq

Скляров Иван

Хакер, номер #099, стр. 058


(sklyaroff@mail.ru, www.sklyaroff.ru)

Q: Как можно подменить содержимое полей From, X-Mailer и других в заголовках отправляемых писем?

A: В *nix это можно сделать прямо в настройках почтовика, такого как Mutt, однако ни в одном известном мне мылере под Windows такой возможности нет. Поэтому рассмотрим альтернативные способы. Во-первых, можно вручную составить свои заголовки, подключившись с помощью обычного telnet или программы Putty к SMTP-серверу, и, задавая соответствующие smtp-команды, отправить письмо с необходимыми заголовками. Во-вторых, можно написать несложный скрипт на PHP или Perl, который будет отправлять письма с нужными заголовками с какого-нибудь web-хостинга. В-третьих, можно воспользоваться специализированной программой, такой как SMTP Client (http://yu.archangel.ru/smtpclient), X-Ray (www.xrayapp.com/ru/xray), Advanced Direct Remailer (www.mailutilities.com/adr) и т.п. Чтобы изменить поле адреса отправителя (IP-адрес отправителя), письмо необходимо послать через анонимный прокси-сервер. В некоторых программах предусмотрена такая возможность, но если она отсутствует, то ты можешь установить программу Socks Chain (www.ufasoft.com/socks) и выставить настройки так, чтобы все письма пересылались через нее, а она, в свою очередь, посылала бы их через анонимный прокси-сервер.

Q: Как накрутить счетчик голосования?

A: Несколько лет назад для защиты от накрутки счетчиков на сайтах применялись только два способа: установка сookies и ограничение по IP-адресу. В первом способе, после того как посетитель проголосует, на его машину устанавливается сookies с соответствующей информацией, и при повторной попытке проголосовать сервер просто проверяет информацию в куках и, соответственно, либо высылает отказ, либо увеличивает счетчик. Эту защиту легко обойти простым удалением куков. Для этого можно воспользоваться специализированной программой для работы с ними, например IECookiesView (www.nirsoft.net), или самостоятельно перейти в папку, где сохраняются все куки: \Documents and Settings\Имя пользователя\Cookies. Здесь «Имя пользователя» - это имя твоей учетной записи. В этой папке находятся файлы формата Имя пользователя@адрес.txt. После символа «@» идет адрес web-сайта, с которого получен этот сookies. Необходимо просто найти файл с нужным именем и удалить его.

Второй способ заключается в том, что, когда пользователь скачивает браузером или другой программой счетчик с сервера, сервер узнает IP-адрес пользователя и вносит его в статистику сайта. При попытке повторного голосования с этого IP-адреса сервер просто вышлет отказ. Обойти эту защиту легко простым заходом через анонимный прокси-сервер.

Нередко программисты для защиты от накруток использовали оба описанных способа одновременно. В наше время на всех серьезных сайтах, кроме этих способов, применяются дополнительные меры защиты. Например, могут проверяться и не учитываться голоса пользователей, зашедших с анонимных прокси-серверов. Кроме IP-адреса, сервер счетчика может сохранять информацию о версии браузера пользователя, операционной системе, часовом поясе, региональных настройках и т.д. Эти данные также могут обрабатываться сервером для предотвращения накруток. Часто панель голосования оформляется как Java-скрипт, который может передавать серверу информацию о просматривающем страницу компьютере: разрешение экрана; цветовая гамма; адрес страницы, с которой пользователь пришел на текущую страницу со счетчиком; адрес текущей страницы, на которой расположен счетчик. Также может генерироваться и передаваться уникальное случайное число. Если кто-то с аналогичными данными попытается проголосовать еще раз, сервер не учтет этот голос.

Сейчас все чаще программисты делают интеллектуальные счетчики, которые могут анализировать частоту подачи голосов. Согласись, странно, если, вместо обычных 10-20 голосов в день, подано сразу несколько сотен голосов. А интеллектуальный счетчик блокирует подачу голосов, если их количество превышает ранее вычисленный среднестатистический предел. Также интеллектуальный счетчик может отслеживать время нахождения пользователей на сайте, так как вряд ли возможно, чтобы масса пользователей, покинуло сайт спустя секунду после загрузки корневой страницы.

Таким образом, накручивать счетчики становится все сложнее. Могу посоветовать тебе программу TopGen 2 (http://topgen.net), которая позволяет обойти большинство защит от накрутки.

Q: Как построить цепочку proxy для анонимного выхода в интернет?

A: Практически все известные программы для работы с proxy (SocksChain, ProxyChain, HTTPort и др.) позволяют работать через цепочку прокси-серверов. Как в этих программах настраивать цепочку прокси, я в FAQ описывать не буду, а лучше отошлю тебя к статье «Сушим носки» Олега Толстых aka NSD («Хакер» #7(67), июль 2004 года). В ней он демонстрирует принцип построения цепочки прокси на примере программы SocksChain. Но создать цепочку можно и из обычных анонимайзеров (CGI proxy). Для этого достаточно в одном анонимайзере набрать адрес (URL) другого, нажать «Go» и т.д. В последнем в цепочке анонимайзере необходимо просто набрать URL требуемого сайта и все. Кроме того, proxy-серверы различных типов могут объединяться в одну цепочку. Но при этом они должны находиться в определенном порядке внутри цепочки, иначе работа будет невозможна. Руководствоваться надо следующими правилами (в каждом звене может быть несколько прокси-серверов одного типа):

SOCKS proxy > HTTPS proxy > CGI proxy

SOCKS proxy > HTTPS proxy

HTTPS proxy > SOCKS proxy

SOCKS proxy > CGI proxy

HTTPS proxy > CGI proxy

HTTPS proxy > SOCKS proxy > CGI proxy

CGI proxy > SOCKS proxy

CGI proxy > HTTP proxy

Q: Подскажи, каким образом можно удалить файл без переформатирования жесткого диска, чтобы его нельзя было восстановить программами типа Easy Recovery?

A: Для этого поверх дорожек с секретными данными нужно произвести множественную перезапись случайными значениями. Разработаны даже специальные алгоритмы для осуществления подобной перезаписи, вот названия некоторых из них: U.S. Standard DoD 5220.22-M, NAVSO P-5239-26 (RLL), NAVSO P-5239-26 (MFM), ГОСТ P50739-95, германский стандарт VSITR, алгоритм Питера Гутмана (Peter Gutman), алгоритм Брюса Шнайера (Bruce Schneier).

Разумеется, существуют программы, которые могут тем или иным алгоритмом затирать информацию на диске. Под Windows такими программами являются Eraser (www.heidi.ie/eraser), O&O Software SafeErase (www.oo-software.com/en/products/oosafeerase/index.html), BCWipe (www.jetico.com). Под Linux можно посоветовать программу THC-SecureDelete (http://thc.org).

Кроме того, в Windows 2000/XP/2003 существует стандартная консольная утилита cipher, которая позволяет затирать всю информацию в неиспользуемом дисковом пространстве на указанном томе с использованием алгоритма DoD 5220.22-M. Синтаксис команды имеет следующий вид:

cipher /w:<папка>

Q: Как написать брутфорсер для перебора паролей в web, когда используется аутентификация, основанная на HTML-формах?

A: К сожалению, в своей книге «Программирование боевого софта под Linux» я забыл рассмотреть программирование такого брутфорсера, поэтому расскажу, как его сделать, здесь. Действительно, создание переборщика паролей под аутентификацию с использованием HTML-форм может показаться нетривиальной задачей. Данная аутентификация основана на использовании формы (form), которая образуется средствами языка HTML с помощью тегов <FORM> и <INPUT>. Последний тег применяется для создания полей ввода, в которых пользователь может ввести пользовательское имя и пароль. После введения, данные по протоколу HTTP/HTTPS методом GET или POST передаются на сервер, где обрабатываются скриптом, написанным на Perl, PHP, Python или другом web-языке. В результате обработки, скрипт либо предоставляет доступ к защищенному ресурсу, либо, в случае неверных данных, запрещает доступ. Таким образом, брутфорсер должен формировать и отправлять правильный запрос к скрипту на сервере методами GET или POST, подставляя каждый раз новый пароль и логин. Так как в разных ситуациях используются разные названия полей форм, разные методы (GET/POST) и разные названия скриптов на сервере, то эти данные должен задавать в настройках брутфорсера пользователь, либо брутфорсер должен уметь самостоятельно анализировать страницу с формой и определять все нужные параметры (так сделано в самых мощных переборщиках паролей, например в Brutus). Ниже показан типичный пример запроса методом GET:

GET /cgi-bin/login.cgi?user=ivan&pass=sklyaroff HTTP/1.1

Host:192.168.10.1

В этом примере форма имеет два поля: user и pass. Проверку достоверности имени пользователя и пароля выполняет серверный скрипт /cgi-bin/login.cgi. Скрипту передаются логин «ivan» и пароль «sklyaroff».

Однако основная сложность заключается в том, как определить, когда подобраны правильные логин и пароль. В случае как успешной, так и неуспешной аутентификации, в ответ обычно выдается какая-нибудь html-страница, а значит, брутфорсеру нельзя рассчитывать на анализ полей HTTP-заголовков, так как в обоих случаях в них будет содержаться «200 OK». Поэтому единственный надежный способ узнать, когда состоялась успешная аутентификация, - это попросить пользователя заранее указать какое-нибудь слово или фразу, которая присутствовала бы на html-странице в случае успешной аутентификации или в обратном случае. Таким образом, переборщик паролей, проанализировав полученную html-страницу, сможет по наличию или отсутствию в ней указанного слова или фразы определить успешность или неуспешность аутентификации. Так сделано в большинстве переборщиках паролей, которые способны выполнять перебор под аутентификации с использованием HTML-форм.

Содержание