Борьба со спамом с помощью системы Honeypot: Часть 1.

Борьба со спамом с помощью системы Honeypot: Часть 1.

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

Лаурент Оудот, перевод Logos

Резюме

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

Хотя спам не относят к виртуальным атакам, все же бывает довольно затруднительно отличить письма, зараженные вирусами, содержащих какие-то махинации или скучную рекламу (содержащую java-скрипт или специально обработанный html-документ, следящие за письмом). Более того, спаммеры замедляют работу серверов, получающих нужную почту, и могут создать проблемы с доступом к этим серверам. Тогда как спаммеры зарабатывают деньги на совести простых людей, работники фирм и продвинутые пользователи теряют свое время, проверяя ненужную почту, в некоторых случаях доходящую до сотен писем в день. Крупные компании несут убытки, выражающиеся в понизившейся производительности, повышении трафика, закупке “черных списков” и т.д. Обычными способами борьбы с этой виртуальной чумой стали фильтрование полученных сообщений, использование анализаторов содержимого, “черные списки” и отладка плохо настроенных почтовых серверов.

Эта статья оценит всю выгодность использования систем honeypot (“горшочек с медом”) в борьбе против спама. В первой части уточняется общая информация о спаме. Потом мы попытаемся понять, как honeypots могут засечь, замедлить и остановить такую деятельность, не сказываясь при этом на производительности сети. В заключительной части мы рассмотрим перспективы этого метода.

1.0 Представление о спаммерах

1.1 Что такое спам?

В то время как “спам” – название блюда, содержащего неизвестное мясо, это слово также используется людьми, называющими им всю невостребованную корреспонденцию, полученную из Интернета. Происхождение этого понятия происходит из наброска Monty Python, где слово “спам” употребляется так часто, что заглушает все остальные значения этого слова. Смысл в том, что если бы Интернет был наводнен спамом, никто бы не смог различить, где спам, а где обычные письма пользователей.

В этой статье мы будем использовать слово спам, чтобы описать невостребованную массовую корреспонденцию (UBE) и невостребованную коммерческую корреспонденцию (UCE). Примеры и логи программ в этой статье взяты из реальных событий, но были модифицированы, дабы сохранить анонимность.

1.2 Как действуют спаммеры.

Спам получил большую распространенность потому, что он стал оплачиваемой виртуальной массовой рекламой. Работу спаммера можно разделить на несколько этапов:

· Сбор: создание базы данных жертв в результате поисков действующих электронных почтовых ящиков.

· Анонимные и открытые прокси: анонимная рассылка почтовых сообщений жертвам.

· Спам и открытые релейные сервисы: поиск и использование серверов, поддерживающих перенаправление почтовых сообщений куда угодно.

Потребовалось бы целое издание, чтобы описать все методы, используемые спаммерами, а Интернет полон отличных ресурсов на эту тему, так что, давайте, обратим внимание только на главные детали.

1.2.1 Сбор адресов электронной почты.

Первое, в чем нуждаются спаммеры - это список действующих e-mail адресов. Существует множество способов сбора тысяч и десятков тысяч адресов электронной почты из Интернета. Например, когда вы посылаете электронную почту в систему UseNet, ваш обратный адрес будет доступен простым автоматизированным программам, проверяющим заголовок всех сообщений. Сохраняя особые поля (From:, Reply-To:), спаммеры могут довольно легко составить большие списки потенциальных жертв. Еще одним примером сбора электронных адресов может послужить плохо настроенные службы рассылки, выдающие список подписавшихся пользователей. Третья методика опять же основана на простых автоматизированных программах, просматривающих web-сайты в Интернете. У каждой найденной html-странички такая программа проверит наличие ссылки mailto:, запишет адрес и последует дальше.

Figure 1: Harvesting email addresses

1.2.2 Открытые прокси-серверы.

Спаммеры могут подключиться к почтовому серверу напрямую или же “перескакивать” от одного открытого прокси-севера к другому. К примеру, цель прокси-сервера – исполнять обязанность web-клиента для другого человека. Когда обычный web-клиент соединяется с прокси-сервером, он запрашивает web-страничку где-либо в Интернете. Прокси-сервер возьмет эту страничку и пошлет данные этой странички клиенту. В логах удаленного web-сервера мы обычно увидим только ip-адрес прокси, который сделал запрос.

Открытый прокси-сервер – это сервис, открытый всему миру для самых разнообразных запросов, позволяющий любому пользователю оставаться анонимным в путешествиях по Интернету. Такие прокси интенсивно используются в андеграунде: блэкхетами (blackhats), варезниками и т.д. Открытые прокси также полезны спаммерам, потому что они хотят оставаться в тени, рассылая свою невостребованную почту.

Ниже приведен пример TCP-сессии, записанной программой snort, показывающей проверку удаленного прокси-сервера, скорее всего запущенной сервером Earthlink. Клиент соединяется с прокси, слушающим на 8080 порту ( TCP ), и не запрашивает web-страницу, а вместо того запрашивает TCP-сессию с SMTP-севером (207.69.200.120). Далее следует сессия SMTP протокола, напрямую открытую с SMTP-сервером (HELO, MAIL FROM, RCPT TO, DATA, QUIT).

$ cat /var/log/snort/192.168.1.66/SESSION\:8080-4072
CONNECT 207.69.200.120:25 HTTP/1.0

HELO [217.128.a.b]
MAIL FROM:<openrelay@abuse.earthlink.net>
RCPT TO:<spaminator@abuse.earthlink.net>
DATA
Message-ID: <36af800461754252ab1107386a9cd8eb@openrelay@abuse.earthlink.net>
To: <spaminator@abuse.earthlink.net>
Subject: Open HTTP CONNECT Proxy
X-Mailer: Proxycheck v0.45

This is a test of third-party relay by open proxy.

These tests are conducted by the EarthLink Abuse Department.
EarthLink, by policy, blocks such systems as they are discovered.

Proxycheck-Type: http
Proxycheck-Address: 217.128.a.b

36af800461754252ab1107386a9cd8eb

Proxycheck-Port: 8080
Proxycheck-Protocol: HTTP CONNECT

This test was performed with the proxycheck program. For further
information see <http://www.corpit.ru/mjt/proxycheck.html/>

.
QUIT

Использование прокси-севера - весьма эффективный способ для спаммера остаться в тени. Но так как владельцы прокси могут вести логи, спаммеры бояться, что их ip-адрес может быть записан. Обычно спаммеры надеются, что неправильно настроенные прокси не ведут логи. Но их страх по поводу логов является причиной пользования цепочек из прокси-серверов, повышающих шансы избежать записей в логи. Они соединяются с прокси-сервером и просят его соединится с другим прокси (CONNECT a.b.c.d:3128). Например:

Figure 2: Open relays and spammers

Чем длиннее такая цепочка, тем больше анонимность спаммера, но следует заметить, что это сказывается на скорости соединения.

1.2.3 Открытые релейные сервисы.

Открытый релейный сервис ( “open relay”, иногда называемые небезопасными релейными сервисами или релейными сервисами третьего лица) – это Агент Передачи Почты (МТА), который принимает почту от “третьего лица”, даже если она не предназначена для домена этого сервиса. Так как открытые релейные сервисы пересылают почту, не принадлежащую и не предназначенную локальному пользователю, дальше по назначению, они используются спаммерами для продвижения большого объема невостребованной корреспонденции.

Плохо настроенный МТА фактически отдает свои системные и сетевые ресурсы удаленному злоумышленнику, который получает деньги за спам. Часто организация, неумышленно пересылающая спам, может попасть в интернациональный “черный список” (RBL и др.) Это очень раздражает сотрудников организации, а крупный провайдер Интернет-услуг, занесенный в такие списки, скорее всего, потеряет часть клиентов и понесет финансовые потери.

2.0 Системы honeypot против спаммеров.

Цитата главного разработчика проекта Honeypot Ланца Спитцнера (Lance Spitzner): “Honeypot – это ресурс информационной системы, суть которого лежит в неправомочном и незаконном использовании этого ресурса.”

В этой главе мы рассмотрим, стоит ли того использование систем honeypot в следующих случаях:

  1. когда спаммеры приходят на ваш сайт, чтобы получить список элетронных почтовых адресов и составить список жертв.
  2. когда спаммеры соединяются с вашими прокси-серверами и используют их услуги в своих корыстных целях.
  3. когда спаммеры используют ваши SMTP-сервисы чтобы пересылать через них кучу невостребованной корреспонденции.

2.1 Системы honeypot и сборы электронных адресов.

Один из первых этапов деятельности спаммера – сбор электронных почтовых адресов. Мы рассмотрим способ сбора через web-страницы, который легче всего разгадать для тех, кто борется со спамом. Не говоря уже о том, что honeypot может одурачить спаммеров в процессе этого этапа, существует несколько эффективных методик, не отвечающих традиционным действиям систем honeypot. Суть в следующем: если спаммеры, просматривая web-сайты, наткнутся на странички, содержащие фальшивые адреса почтовых ящиков, они пополнят свои базы данных пустыми жертвами. Оптимисты скажут, что это не является honeypot-ом, так что назовем это добавлением ложки меда на вашу web-страницу.

В процессе автоматического сбора электронных адресов в Интернете, спаммеры иногда выдают себя программами, которыми для этого пользуются, если проверить поле User-Agent, отосланного их браузером. Некоторые пользователи решили блокировать соединения с особыми User-Agent полями, которые часто используют спаммеры, или же перенаправлять эти соединения на фальшивые web-страницы, наполненные миллионами фальшивых почтовых адресов. Беда в том, что очень легко изменить поле User-Agent. Тогда те же самые люди, борющиеся со спамом, решили создать ссылки на web-страницах, невидимые для человека (например белый текст на белом фоне), но видимых программам, используемых спаммерами, которые следуют по каждой ссылке html-файла. Страницы на таких ссылках будут регулярно создавать фальшивые почтовые адреса.

Хорошей мыслью станет создание баз фальшивых адресов. Существует хороший экземпляр свободно распространяемой программы, называющейся Wpoison. Этот cgi-скрипт добавленный к вашей web-странице, будет генерировать фальшивые электронные адреса, очень похожие на настоящие. Вы можете посмотреть демонстрацию на этом сайте.

Еще одним методом может стать создание фальшивых адресов, содержащих специфическую информацию. Например, зная день, в который спаммер послал сообщение, владелец может узнать ip-адрес, использованный спаммером.

<?
// PHP example taken from the frenchhoneynet Web site
// replace by your domain, add recipients filtering on your MTA (mimedefang...)
echo '<a href="mailto:'.$REMOTE_ADDR.'_'.date('y-m-j').'-spamming@frenchhoneynet.org" 
title="There is no spoon">For stupid spambots';
?>

Этот скрипт автоматически генерирует ссылку mailto:, содержащую фальшивый почтовый адрес с ip-адресом использованного web-клиента и датой. Например:

<a href=mailto:80.13.aa.bb_03-11-17-spamming@frenchhoneynet.org>...

Если web-клиент является известной спаммерской программой (спам-бот), она добавит 80.13.aa.bb_03-11-17-spamming@frenchhoneynet.org в базу потенциальных жертв. Теперь представим, что будет, если спаммер воспользуется этой базой. Скорее всего, он пошлет сообщение на этот почтовый адрес.

Затем администратор почтового сервера отфильтрует входящие сообщения, просмотрев, кому они предназначены. Если он увидит сообщение, направленное пользователю 80.13.aa.bb_03-11-17-spamming@frenchhoneynet.org, то ему станет сразу ясно, что 80.13.aa.bb – это ip-адрес, использованный 17 ноября 2003 года. Более того, известно, что этот адрес использовался для рассылки спама.

# Example of a simple recipient filtering with Mimedefang http://www.mimedefang.org/]
# Will filter incoming email containing a recipient address in the form
# of those created by the latter PHP example.
sub filter_recipient {
	my ($recipient, $sender, $ip, $hostname, $first, $helo) = @_;
	if($recipient =~ /^<.*-spamming@frenchhoneynet\.org>?$/i)
	{ return ("REJECT", "Spamming activity"); }
	return ("CONTINUE", "ok");
}

Несмотря на то, что эти методики кажутся интересными и действенными, они сработают только против “глупых” спам-ботов, обычно не использующихся опытными спаммерами. Более продвинутые спаммеры, скорее всего, будут пользоваться открытыми прокси-серверами, и фальшивые почтовые адреса, созданные скриптами для отображения ip-адреса спаммера, помогут лишь в поиске и блокировании этих прокси-серверов.

2.2 Системы honeypot и открытые прокси.

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

Ну, разве так сложно установить фальшивый прокси-сервер в системе honeypot? Конечно, нет, и именно это мы сейчас рассмотрим.

Просматривая логи вашего брандмауэра, вы наверняка заметили попытки подключения к следующим портам TCP:

  • 1080 socks proxy server
  • 3128 squid proxy server
  • 8080 web caching service

Множество бравых подростков, используя программы, которые не они создавали, и принцип работы которых они не понимают, сканируют сеть на наличие “интересных” сервисов. Многие из них делятся найденной информацией с общедоступными базами данных об открытых прокси-серверах (для примера введите в любом поисковике “список бесплатных прокси”). Соединяясь со слушающими TCP-портами и отправляя несколько пакетов, можно понять - открыт ли прокси или нет.

Что будет, если мы установим несколько honeypot-ов, которые будут положительно отвечать на входящие запросы? Мы сможем одурачить множество спаммеров.

Мой любимый honeypot, созданный Нильсом Провосом (Niels Provos), называется Honeyd. Для того чтобы создать фальшивый релейный сервер, симулирующий открытые прокси и открытый релейный сервис, вы можете воспользоваться следующим конфигурационным файлом:

	create relay 
set relay personality "OpenBSD 2.9-stable"
add relay tcp port 25 "sh /usr/local/share/honeyd/scripts/sendmail.sh $ipsrc $sport
$ipdst $dport"

add relay tcp port 3128 "sh /usr/local/share/honeyd/scripts/squid.sh $ipsrc $sport
 $ipdst $dport"

add relay tcp port 8080 "sh /usr/local/share/honeyd/scripts/proxy.sh $ipsrc $sport
 $ipdst $dport"

set relay default tcp action block
set relay default udp action block
bind 192.168.1.66 relay
	

Он попросит Honeyd симулировать компьютер с системой OpenBSD 2.9, с ip-адресом 192.168.1.66 и с тремя открытыми ТСР-портами: 25, 3128 и 8080. Для каждого входящего запроса на эти порты, Honeyd запустит соответствующее фальшивое приложение (sendmail.sh, squid.sh, proxy.sh). Если эти сервисы захотят посмотреть, что было послано спаммерами, им просто следует прочитать информацию из STDIN. Для того, чтобы ответить спаммерам, им следует написать нужную информацию в STDOUT (как в обычном Inetd процессе).

Чтобы одурачить удаленного злоумышленника, нам придется симулировать часть или весь процесс передачи данных.

В качестве интересного доказательства, мы рассмотрим Bubblegum Proxypot, очень действенную маленькую программу. Единственной целью этой программы является обман чересчур назойливых спаммеров, симулируя открытый прокси. В отличие от Honeyd, она не может симулировать ничего другого ( Honeyd может симулировать все что угодно); она не может менять поведение ip-стека и т.д. Несмотря на то, что это простейшая программа, с ее помощью мы быстро узнаем много интересного о спаммерах.

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

С помощью Proxypot, вы сможете выбрать один из трех способов одурачить спаммеров:

smtp1: соединение полностью фальшивое.

Плюс: не требуется исходящего SMTP-трафика, что сохранит производительность сети.

Минус: это может обмануть только новичков, и вам придется выбирать тип SMTP сервера для симуляции. Если спаммер соединяется с прокси и просит отправить его на Sendmail сервер, в то время как вы изображаете Qmail, он может заподозрить honeypot.

smtp2: соединение с настоящим почтовым сервером, чтение его 220 баннера и, может быть, выполнение HELP команды, чтобы узнать версию сервера, затем отключиться и использовать эту информацию в более правдоподобном обмане.

Плюс: если спаммер знает версию используемого сервера, он может поверить, что это истинный сервер.

Минус: это требует исходящего трафика. Вы должны быть уверены в версии сервера, чтобы не стать плацдармом настоящей спам-рассылки или хакерской атаки. Если SMTP-сервер принадлежит спаммеру, то он заметит, что сессия через прокси не соответствует той, что идет к SMTP-серверу.

smtp3: соединение с настоящим SMTP-сервером и пропустить все команды, кроме DATA и EXPN. Также ограничение RCPT и VRFY.

Плюс: это самая экстремальная симуляция и вряд ли можно достичь лучших результатов, потому что правильное использование команды DATA может реально доставить почту (чего вы хотите избежать).

Минус: как и все симуляторы, он может быть определен спаммером, а возможность поиска отпечатков (fingerprinting) остается.

... продолжение следует

Alert! Зафиксирована утечка экспертных знаний!

Собираем и анализируем опыт профессионалов ИБ

Подключитесь к потоку конфиденциальной информации!