...
...
...

борьба со спамом с помощью honeypot

Автор этой статьи ставит своей целью показать полезность применения honeypot в борьбе со спамом. Ниже будут рассмотрены некоторые общие вопросы, касающиеся спама в целом. Затем мы постараемся понять, каким образом honeypot может определить спам, замедлить или вовсе прекратить его распространение и очистить Интернет. Закончим мы обзором перспективы на будущее.

что такое спам?

Вообще-то, спам (spam) — это торговая марка фирмы, занимающейся производством консервов, вроде тех, что показаны на рисунке.



Но в то же время спамом называют нежелательные письма, полученные по Интернету. Впервые в подобном значении слово было использовано в скетче Монти Пайтона (Monty Python), который так и называется «SPAM sketch».
В данной статье мы будем использовать слово «спам» во втором его значении — для обозначения нежелательных массовых рассылок, чаще всего рекламного характера. Примеры, представленные в статье, взяты из реальной жизни, но они были изменены из соображений анонимности.

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

Люди занимаются рассылкой спама не ради удовольствия, а потому, что за это платят деньги. Работу спамеров можно разделит на три стадии:
— сбор информации: построение базы данных электронных адресов реальных людей;
— невидимая работа через прокси: анонимная работа по рассылке электронных писем;
— рассылка спама: поиск и использование почтовых серверов, которые позволяют посылать письма с любым содержанием.
Нам бы понадобилась целая книга, чтобы подробно описать, что делать со спамом, да в Интернете и без того полно замечательных материалов по этой теме, так что, думаю, лучше остановиться на самом главном.
Первое, что необходимо сделать спамеру — найти достаточно свежий список жертв, точнее, их электронных адресов. Существует множество различных путей для сбора многих тысяч адресов электронной почты в Интернете. Когда вы посылаете письма, например, в UseNet, ваш адрес будет доступен автоматическим программам, которые просматривают заголовки всех публикуемых писем. Сохраняя поля (“From:”; “Re:”), спамеры могут легко составить огромные списки потенциальных жертв. Другим способом сбора адресов могут стать плохо настроенные рассылки, при которых в адресе получателя содержится список всех адресов, на который производилась рассылка. Третий способ основан на простых автоматических программах, которые ведут поиск по страницам в Интернете по слову “mailto:”. В таком случае, в базу попадает адрес, содержащийся после этого слова.

Рисунок 1: Сбор адресов электронной почты

прокси-серверы

Спамеры могут подключаться к удаленному серверу либо напрямую, либо через анонимные прокси-серверы.
Открытые прокси — это сервис, открытый практически для любых протоколов (HTTP, FTP…), позволяющий любому желающему сохранять анонимность при работе в Сети. Такие прокси-серверы широко используются в андеграунде: среди людей, занимающихся взломом программ, распространением краденного ПО и т.д. Открытые прокси-серверы также полезны для спамеров, потому что позволяют им оставаться анонимными при рассылке писем своим жертвам.
Клиент подключается к прокси-порту (например, 8080) и не запрашивает веб-страницу, а вместо этого запрашивает установление соединение с SMTP сервером (207.69.200.120), используя HTTP-метод CONNECT.

$ 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:
RCPT TO:
DATA
Message-ID: <36af800461754252ab1107386a9cd8eb@openrelay@abuse.earthlink.net>
To:
Subject: Open HTTP CONNECT Proxy
X-Mailer: Proxycheck v0.45

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

.
QUIT

Использование прокси-сервера крайне важно для спамера, чтобы оставаться анонимным. Поскольку и владельцы прокси-серверов обычно ведут записи событий (logs), настоящий IP-адрес спамера может быть записан, часто используются цепочки из прокси-серверов, чтобы уменьшить риск обнаружения. В таком случае, подключение сначала производится к открытому прокси-серверу (по протоколу TCP), потом ему дается команда соединиться с другим прокси-сервером (CONNECT a.b.c.d:3128) и так далее.
Пример:

Рисунок 2: Цепь прокси-серверов.

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

открытые ретрансляторы (open relays)

Открытый ретранслятор — это Mail Transfer Agent (далее — MTA), разрешающий пересылку сообщений, даже если они не предназначены для домена, к которому он принадлежит. Поскольку, таким образом можно передавать электронные письма, которые не адресованы локальным пользователям и не отправлены ими, спамеры активно используют такие MTA в своих целях.
Недостаточно вдумчиво настроенные почтовые агенты предоставляют свои системные и сетевые ресурсы спамерам, сами того не подозревая. Часто бывает, что организации, через серверы которых проходит спам в больших количествах, попадают в международные черные списки (RBL, например). Это, естественно, пагубно сказывается на работе сотрудников таких организаций, которые толком не могут пользоваться электронной почтой. Крупные провайдеры, попадая в черные списки, теряют деньги и клиентов.

Honeypot против спамеров

Цитируя лидера проекта Honeynet, Lance Spitzner, honeypot (дословно переводится как «бочка меда») — это минимально защищенная система, задачей которой является вызвать желание ей воспользоваться.
В этой главе мы узнаем, что honeypot можно использовать в следующих случаях:
1. когда спамер берет e-mail с вашего веб-сайта для дальнейшего внесения в базу данных;
2. когда спамер использует прокси-сервер для доступа к какому-либо ресурсу;
3. когда спамер пытается переслать SMTP-трафик через ваш почтовый сервер для рассылки спама.

Honeypot и сбор адресов электронной почты

Одной из первых фаз в работе спамера является сбор адресов электронной почты. Ниже мы остановимся на сборе информации с веб-страниц, который, пожалуй, является наиболее распространенным, равно как и наиболее легко излечимым случаем. Вообще, кроме обмана спамеров с помощью honeypot, существует еще несколько эффективных способов, которые, тем не менее, не подходят под классическое определение honeypot. Концепция в следующем: когда спамеры сканируют веб-страницы напредмет адресов, они считывают оттуда фальшивые, несуществующие адреса, которыми заполняется спамерская база данных, что приводит к сильному увеличению этой самой базы и уменьшению процента реальных адресов, в ней содержащихся. Вообще-то это не совсем honeypot, но по смыслу похоже. Можно сказать, что это не бочонок меда, а только одна ложка дегтя ;).
Ниже приведен хороший пример CGI- скрипта, полученного с помощью бесплатной программы Wpoison. Этот скрипт генерирует html-страницы, заполненные несуществующими адресами и гиперссылками идиотского вида, ссылающимися на все тот же скрипт, в общем «замкнутый круг получается» (с) анекдот ;) Работает со словарем. При грамотном устройстве словаря смотрится все это очень потешно, так что можно убивать сразу двух зайцев: и загаживать спаммерские базы, так что им придется «выкинуть» их вон, и веселить посетителей сайта.
Еще один способ — создание ложных адресов, содержащих специальную информацию. Как только такой адрес будет использован в спамером для рассылки, его владелец сможет определить IP-адрес, который использовал спамер.
Например, пишем PHP-скрипт, генерирующий mailto-ссылки вида 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 года каким-то спамером.
Этот способ интересен, но он сработает только с примитивными spambot’ами, написанными не самыми талантливыми программистами. Более изощренные спамеры могут использовать прокси-серверы и динамически сгенерированный адрес электронной почты поможет только в поиске прокси, а спамер останется анонимным.

Honeypot и прокси-серверы

Как уже было сказано, в большинстве случаев спамеры используют открытые прокси-серверы для рассылки писем. В этом случае, прокси выполняют роль стены, за которой прячутся спамеры.
Как вы думаете, можно ли подделать открытый прокси-сервер с помощью honeypot. Правильный ответ: да.
Если вы посмотрите на записи событий вашего сетевого экрана, вы можете заметить попытки получения доступа к TCP портам 1080 (socks), 3128 и 8080 (веб-прокси).
Есть люди, которые, «храбро» прячась за своим монитором и используя программы, назначение которых они не до конца понимают, сканируют сеть в поисках интересных сервисов. Некоторые из них обмениваются прокси-листами (списками прокси-серверов) через Интернет (достаточно написать в Google “open proxies list” или “прокси-лист”). Подключение к отвечающим 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 и тремя открытыми TCP-портами: 25, 128 и 8080. На каждый поступающий запрос, Honeyd активирует поддельный сервис (sendmail.sh, squid.sh, proxy.sh). С помощью этих сервисов можно легко узнать, что шлют спамеры, если это интересно. Для этого нужно прочитать информацию из STDIN. Чтобы ответить спамерам, используется STDOUT (как и во всех классических Inetd-процессах).
Чтобы обмануть удаленного спамера, нам достаточно симулировать часть разговора или разговор целиком. В качестве доказательства правильности концепции, посмотрим на программу под названием Bubblegum Proxypot. Единственное, что умеет делать эта небольшая программка — это симулировать открытые прокси-серверы. В отличии с Honeyd, она не может симулировать что-либо еще (Honeyd может подделывать все, что угодно, любые службы), однако с ее помощью мы можем быстро узнать множество полезных вещей о спамерах.
В зависимости от профессионализма и опыта, спамер будет либо просто проверять, открыт ли прокси-сервер или пытаться определить, правильно ли он функционирует. Помните, какова основная цель спамера? Заработать деньги. А, как известно, время — тоже деньги, поэтому спамер не будет его терять, посылая тысячи электронных писем, не получая при этом результата.
В Proxypot можно выбрать три различные конфигурации для обмана спамеров:
— smtp1:подделка всего SMTP соединения, от начала и до конца.
Плюсы: не требуется исходящий трафик SMTP, стало быть не создается дополнительная нагрузка на канал.
Минусы: в этом режиме можно обмануть только начинающих спамеров, и вам придется выбрать тип симулируемого прокси-сервера. Если вы подделываете Qmail-сервер, а спамер соединяется с прокси и посылает запрос на подключение к другому серверу, он может заметить, что это honeypot.
— smtp2:подключение производится к реальному SMTP-серверу, идет считывание 220-баннера и, возможно, выполнение команды HELP, чтобы узнать тип этого сервера, потом отключение и использование этой информации для установления более убедительной симуляции соединения.
Плюсы: если спамер знает версию почтового сервера, к которому он подключается, он поверит, что это тот самый сервер и вам будет нетрудно локализовать проблему.
Минусы: этот способ создаст исходящий трафик. Вы должны быть уверены в вашем программном обеспечении, чтобы не допустить его использование в хакерских целях. Если спамер владеет SMTP-сервером, например, если на нем зарегистрирован его основной почтовый ящик, он заметит, что SMTP-соединение, которое он видит через прокси, отличается от того, которое идет к его почтовому серверу.
— smtp3:подключение к реальному SMTP-серверу и выполнение всех команд, кроме DATA и EXPN. RCPT и VRFY ограничены скоростью.
Плюсы: это экстремальная симуляция и вряд ли возможно сделать лучше.
Минусы: спамер все же может понять, что это симулятор.
Я сам использовал режим smtp2 и поймал кучу спама через него.
Обычно спамер соединяется с прокси-сервером и пытается послать через него одно электронное письмо, чтобы проверить его работу. Это наиболее важный момент, если вы собираетесь обмануть спамера.

Рисунок 3: Первая фаза — спамер подключается к открытому прокси-серверу.

Вот пример TCP-соединения спамера, который подключился к моему поддельному прокси-серверу (порт 8080). Вы увидите, что он пытался подключиться к SMTP-серверу (CONNECT х.х.х.х:25) и пробовал послать письмо.

$ cat /var/log/snort/192.168.1.66/SESSION\:8080-4087
CONNECT 204.2.aa.bb:25 HTTP/1.0

Helo Google.com
MAIL FROM:
RCPT TO:
DATA
From: "Daniels"
To:
Subject: John want you to call Daniels.
Content-Type: text/plain;
charset="Windows-1252"
Content-Transfer-Encoding: 7bit

Just wanted to remind you about our meeting at 1D9808AFD:8080:6 o&acuteclock.Thanks, Rodney

.
QUIT

Спамер, возможно, использовал автоматические программы для сбора информации в Интернете: D9808AFD (в шестнадцатеричном представлении) — IP адрес поддельного временного прокси-сервера, а 8080 — его порт. Proxypot предлагает средство для посылки письма, вроде deliverone — для того, чтобы спамер думал, что прокси-сервер открыт.
Когда злоумышленник убедится, что он подключился к нескольким прокси-серверам, он попытается через них добраться до MTA. Если в этой цепи вы подделываете один из серверов, то сможете даже установить адреса, посмотрев на TCP-соединения. Например:

Рис. 4.

Вот поэтому использование поддельных прокси-серверов может помочь в нахождении спамеров, замедляя их работу (путем замедления сетевых диалогов) и даже блокируя их (симуляцией и препятствованием отсылки спама).
Наиболее веселое заблокированное письмо было адресовано проекту honeynet:

Return-Path:
Delivered-To:
Received: from xxxxxxx.abo.wanadoo.fr ([213.248.aaa.bbb]) by gate
with SMTP via SOCKS4 id "12816,1068543435,1"
(attempted proxy to 66.93.112.231);
Tue, 11 Nov 2003 10:37:17 +0100
From: =?koi8-r?B?9G9wx2/XwdEgzcHSy8EgIk7PdsEi?=
To: ycgfdspwlcbtj
Subject:=?koi8r?B?83nXZc51cM7B0SDQcG/E1cvDddEg0M8gY81l287ZzSDDZc7BzS4gICAg
ICAgICAgICAgICAgICAg?==?koi8r?B?ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC
AgICAgICAgICAgICAgICAgICAgICAgIMXB?==?koi8-r?B?x8XX1c/UIM/Pz9jczyDJ08rP?=
Date: Tue, 11 Nov 2003 12:40:02 +0400
Reply-To: wewqurjm9c@nm.ru
Mime-Version: 1.0
Content-Type: text/html; charset="koi8-r"
X-Mailer: Microsoft Outlook Express 6.00.2600.0000
X-Priority: 3
X-MSMail-Priority: Normal
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000

.: 177-82-09, 177-44-11, 778-15-25


"Nova"

(...)

Honeypot и открытый relay

Мы знаем, что спамеры стараются найти открытые relay, чтобы отправлять груды писем безо всякой аутентификации. А сложно ли подделать такой почтовый сервер? Нет, не сложно. Давайте разберемся, как это лучше сделать.
Интересное решение этой проблемы предложил Brad Spencer: изменить неиспользуемый демон sendmail для обмана спамеров. Это можно легко осуществить, заставив sendmail пропускать relay и помещать в очередь все письма, при этом не отправляя ни одного. Таким образом настроенный sendmail может блокировать все входящие письма.
Я пробовал делать так с sendmail 8.12.3-6.6, внеся следующую поправку в файл sendmail.mc:

FEATURE(`promiscuous_relay´)dnl
define(`confDELIVERY_MODE´, `queue´)

Как говорит автор этой идеи, вам достаточно иметь запущенный sendmail –bd. Но будьте осторожны, потому что некоторые настройки sendmail можно забыть (письма могут исключаться из очереди из-за MSP и так далее).
Отличным способом подтверждения конфигурации такого sendmail-сервера является использование бесплатного сервиса, который удаленно проверяет, играете ли вы роль почтового relay сервера. Вы должны увидеть их письма в папке сообщений.

This is a test message to check for open mail relay servers.

You are probably receiving this message as the Postmaster of a mail server.
We tried to relay a message through your mail server; because you are
reading this message, your mail server probably did not relay the message,
which is good.
If this message does not reach the recipient stated in the header, your
mail server is not an open relay.


RUN=2003111234316.2443
HOST=80.13.a.b
FROM=<>
TO=
REQ=
KEY=b30628d6ff9c89c3910591add7476afe
)

$ /bin/cat /var/spool/mqueue/qfhAC1djjB008617
V7
T1068601187
K0
G0
Y0
N0
P30092
Fbs
$_Mail.TM.Odessa.UA [195.66.200.105]
$rESMTP
$slocalhost.localdomain
${daemon_flags}
${if_addr}192.168.1.66
S<>
rRFC822; spam@tm.odessa.ua
RPFD:
H?P?Return-Path:
H??Received: from localhost.localdomain (Mail.TM.Odessa.UA [195.66.200.105])
by gate.intranet (8.12.3/8.12.3/Debian-6.6) with ESMTP id hAC1djjB008617
for ; Wed, 12 Nov 2003 02:39:47 +0100
H?D?Date: Wed, 12 Nov 2003 02:39:47 +0100
H?M?Message-Id: <200311120139.hAC1djjB008617@gate.intranet>
H??To:
H??Subject: open relay test message
H??User-Agent: ortest (1.0)
.)


Если вы захотите послать какие-нибудь тестовые письма через relay, достаточно написать: sendmail - qRuser@destination.
Еще одно решение — «демон», который называется Spamd, созданный командой OpenBSD. Spamd симулирует sendmail сервер, запрещающий поддельную почту и используется вместе с pf. Его задачей является занять как можно больше времени и ресурсов спамера. Если вы никогда не посещали страницу Daniel Hartmeier, очень советую это сделать.
Конечно, Honeyd — еще одно простое решение для создания поддельных почтовых серверов, симулирующее relay. Теперь давайте поговорим об архитектурах, с примером использования Honeyd.

архитектуры

Если вы взгляните на веб-страницу под названием Honeyd Research: Spam, вы найдете отличный способ использования Honeyd в борьбе против спамеров.
Показанная ниже диаграмма сети, взятая с сайта www.honeyd.org, показывает архитектуру, предложенную Neils Provos. Отличный пример реальной сети с фермами honeypot.

Рис. 5.

Удаленные администраторы, работающие с Neils, перенаправляют приходящий к ним спам на одного из демонов Honeyd через GRE туннели (примеры: перенаправление неиспользованных IP адресов или входящего TCP трафика на порты 25, 3128 и так далее, на которых эти сервисы обычно не работают). Этот демон потом сможет подделывать прокси или открытые relay, а также отвечать по туннелю. Honeyd способен вести себя по-разному, в зависимости от компьютера, который он в данный момент симулирует (IP Stack, открытые сервисы и так далее). В этом случае спамер, атакующий разные сайты, не поймет, что все это — один и тот же демон Honeyd, отвечающий ему, и он не сможет понять, где находится этот демон (спасибо GRE).
Собранные записи событий получает Honeyd, и потом их можно использовать для пополнения официальных черных списков. Этот пример удачной архитектуры показывает, что существуют способы борьбы со спамом в Интернете, одним из которых является Honeypot.

результаты


Используя Proxypot на одном DSL-ящике, французский проект Honeynet получал тысячи писем со самом каждый день, приходящих всегда из одних и тех же стран. На сайте Proxypot можно найти программу под названием spamstat. Она может быть использована для генерирования статистик об активности спамеров.
Маленький пример. За выходные 8 и 9 ноября мы поймали 14789 писем со спамом, адресованных 84243 разным пользователям. Вот пример, взятый из записей событий:

/24 statistics:
213.248.57/24 sent 7571 messages
total 44599919 bytes to 28680 recipients
212.46.2/24 sent 6616 messages
total 72901704 bytes to 55862 recipients
213.148.180/24 sent 265 messages
total 732527 bytes to 265 recipients
210.17.198/24 sent 166 messages
total 255617 bytes to 830 recipients
207.69.200/24 sent 39 messages
14789 messages from 21 distinct /24s
Grand totals:
14789 messages sent
total 118773379 bytes to 85808 recipients
Report completed at Mon Nov 17 23:32:19 2003)

Это, возможно, ничто по сравнению с тем огромным количеством спама, который буквально заваливает весь Интернет, но что случится, если все администраторы серверов решат бороться со спамом вместе, с помощью honeypot? Тогда Интернет перестанет быть таким безопасным и спокойным для спамеров местом, каким он является сегодня.
Другие интересные результаты, полученные Neils Provos, — адреса хостов, распространяющих спам. Используя пассивные снимки ОС (включенные в Honeyd версии 0.7), он смог предположить, что 43% спамеров используют Linux (см. диаграмму на рис.6).

Рис. 6.

Еще одна диаграмма (рис. 7)показывает, что активность спамеров возросла за последние несколько месяцев, особенно, в октябре 2003:

Рис. 7.

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

заключение

В этом году спамеры стали использовать новые способы, найдя новые дыры в системе обмена электронной почтой.
В начале ноября 2003 г. были запущены разные версии червя MiMail, и некоторые из них производили DoS атаки на веб-серверы, которые были предназначены для борьбы со спамом. Эти черви атаковали сайты spews.org, spamgaus.org и spamcop.net.
К концу октября 2003 новая программа для открытия «черного хода» Hogle (Proxy-Regate) была найдена. Она заражала компьютеры с операционной системой Windows и устанавливала SMTP-прокси сервис (который работал на TCP порту 3355), который был использован спамерами. Этот пример далеко не единственный, и таких примеров становится все больше (Kalshi, например, и т.п.).
Стоит ли считать это концом использования открытых прокси-серверов? Спамеры распространили червяков по всему миру для контроля за миллионами хостов, и эти хосты могут быть использованы для спама в любой момент. Похоже, что будущее пользователей Интернета весьма мрачное.

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

Это звучит, как неофициальная кибер-война. Спамерами создаются даже коммерческие приложения для борьбы с honeypot.
Окей, давайте подытожим все, что было сказано. Мы говорили о том, как обычно работают спамеры, а также о том, как можно использовать технологию honeypot для их определения, приостановления их деятельности и полной блокировки. Многие люди спросят, целесообразно ли применение honeypot и похожих средств в борьбе со спамом. Давайте рассмотрим альтернативный вариант. Посмотрите, с какой скоростью плодятся новые черви для атаки тех, кто участвует в борьбе со спамом. Они — лучшее доказательство того, что спамеров раздражает любая попытка со стороны пользователей защититься от назойливых рассылок. Спамеры зарабатывают деньги, загаживая Интернет. Давайте очистим его с помощью honeypot.

Лорен Удо, перевод Secure.Com.Ru., под редакцией Alice D. Saemon.


© Сетевые решения