"Горшочек меда" как способ обмана кульных хацкеров
Прочтя подшивку журнала ][, ты начал говорить непонятными словами: "Флудить, сканить, DoSить, нючить, дро..." Ну и пошлый же ты! Я имел ввиду "дропить" пакеты соседей по домашней локалке :). Но однажды, вкручивая очередной нимфе, какой ты крутой, и демонстрируя, как запросто ты серфишь по Сети, "случайно" заходя на порносайты и подводя свою подругу к очевидному для тебя выводу, твой комп падает в голубой экран. Значит, кто-то добрался и до тебя. Перегрузив комп, ты с удивлением обнаруживаешь, что твоя коллекция потрясающих картинок, которую ты полгода собирал с разных платников, безвозвратно потеряна. Ты вне себя от ярости и желаешь "жестоко отомстить". Но для этого тебе надо попытаться отследить своего визави. Как это сделать?
Можно поставить какой-нибудь firewall или систему обнаружения атак (например, обе этих системы объединены в BlackICE Defender или описываемом ниже RealSecure Server Sensor). Но... есть одна тонкость. Если твой противник умен, а недооценивать его я бы не стал, то он заспуфит свой адрес (как это делается, читай в этом же номере Х). Особенно, если он флудит или как-то по-иному DoS-ит тебя. Итак, тебе надо, с одной стороны, привлечь противника какой-нибудь целью, чтобы он потратил время на проникновение, а с другой - эта цель не должна быть реальной, т.е. не стоит использовать в качестве мишени свой компьютер или компьютер своего соседа по локалке. Какой отсюда следует вывод? Нужна приманка, о которой мы сейчас и поговорим.
Это ты о чем?
Смысл приманки, она же decoy, она же deception system (обманная система), она же honeypot (горшочек меда), один - завлечь противника, чтобы он стал тратить свое время и ресурсы на хак несуществующих или не имеющих реальной ценности ресурсов. Тем самым ты получаешь время на отслеживание визави, а при необходимости и на сбор следов его противоправной деятельности. Хотя вряд ли ты захочешь связываться с правоохранительными органами. Толку никакого, а мороки выше крыши. Кроме того, обманные системы могут сбить с толку нападающих, привыкших к широко известным средствам сетевой безопасности (firewall, IDS и т.д.).
Методы
Существует три часто применяемых варианта использования обмана в благих целях:
1. Сокрытие. Ты когда-нибудь использовал firewall в своей сетке? Если да, то тебе наверняка знакомо понятие "трансляция адресов" (network address translation). Если нет, то это когда одни адреса заменяются на другие. Например, адреса машин в твоей локалке меняются на один адрес firewall. Это и есть яркий пример обмана хакеров. Не зная твоего реального адреса, тебя очень трудно атаковать. Но и хакеры используют эту технологию не менее эффективно. Прокси-сервер - это тоже обман, но уже с другой стороны.
2. Камуфляж. Этот механизм используется не так часто, но он тоже скрывает в себе большую мощь. Например, подключаясь к FTP-серверу, твоему взору демонстрируется заголовок:
Connected to ftp.server.ru
220 ftp.server.ru Microsoft FTP Service (Version 4.0),
говорящий о том, что перед тобой мелкософтовский FTP-сервер под NT. А на самом деле на удаленном узле установлен Unix'овый сервак. Ты будешь тратить свои энергию и бабло на то, чтобы найти хоть одну дыру в FTP, удивляясь, "как это на мелкософте и нет дыр", а на самом деле хитрый админ просто сменил заголовок (banner), который появляется при подключении к серверу.
3. Дезинформация. С этим еще проще. Ты помещаешь на компьютер файлы с привлекательными названиями (например, passwd, admin.pwl или users.dat) и ждешь, когда ненасытные и злобные хакеры попытаются их украсть. Но ты не будешь им мешать. Ты-то знаешь, что в этих файлах нет реальных паролей и злоумышленник только потратит время зря, напуская на эти файлы утилиты типа Crack или L0phtCrack.
Что будем делать?
Так как первый класс средств широко известен и применяется в межсетевых экранах, то более подробно я коснусь второго и третьего. Большинство известных систем предназначено для выполнения следующих обманных действий:
1. Эмуляция несуществующих сервисов и портов. Такие системы устанавливаются на компьютер, который и является приманкой для хакеров. Примером такой системы является DTK.
2. Эмуляция несуществующих узлов сети. Такие системы устанавливаются на выделенные узлы, которые и имитируют целые виртуальные сегменты. Примером такой системы является CyberCop Sting.
3. Подмена баннеров. Такие системы зачастую являются расширением систем, эмулирующих несуществующие порты, и генерят баннеры, похожие на настоящие. Примером такой системы является RealSecure Server Sensor.
Попробуй с помощью любого сканера провести сканирование какой-либо машины в сети. В зависимости от решаемых задач, число открытых портов на таких машинах может быть разное, но обычно оно не превышает 30-50 (для серверов) и 5-10 (для рабочих станций). Для хостов Unix число открытых портов несколько больше, но не намного. Если с помощью обманной системы число открытых портов увеличивается в 10 раз, то и число действий, которые должен выполнить хакер, также возрастает как минимум на порядок. Даже использование сканеров не сильно облегчает задачу, т.к. они вводятся в заблуждение так же, как и человек. Создаваемые сканерами безопасности отчеты не смогут помочь злоумышленнику определить, какие из открытых портов являются реальными, а какие нет. Тем самым злоумышленнику придется тратить время и ресурсы на ручную проверку всех обнаруженных портов и присущих им уязвимостей, что позволит своевременно обнаружить такие попытки и противопоставить им эффективные средства защиты, и, возможно, обнаружить злоумышленника (хотя обольщаться этим не стоит).
The Deception Toolkit и другие перлы
DTK является одним из известных обманных средств. Этот комплект ( http://all.net) представляет собой набор программ на языке Perl, реализующих описанные выше механизмы обмана кульных хацкеров. По заявлению автора DTK - Фреда Коэна, этот комплект утилит может функционировать под управлением любой сетевой операционной системы, но широкое применение он получил на платформе Unix (хотя теоретически будет работать и под Windows с ActivePerl). Как и другие *nix'овые утилиты, DTK настраивается из командной строки путем изменения соответствующих файлов. Обычно вся настройка ограничивается созданием ответных реакций на действия нападающих. Например, вот так выглядит файл *.response, отвечающий за эмуляцию почтовой программы sendmail 8.1.2/8.1.3:
# State Input NexStat Exit lf/file output/filename
# comment lines start with the pound sign (#)
# we are faking sendmail version 8.1.2/8.1.3
0 START 0 1 1 220 all.net ESMTP Sendmail 8.1.2/8.1.3;
0 ERROR 0 1 1 500 Command unrecognized - please say "Helo"
0 help 0 1 1 214-No help available
# if they say helo, we acknowledge and go to state 2
0 helo 1 1 1 250 all.net, pleased to meet you
0 quit 0 0 1 221 all.net closing connection
# if you don't get anything - just ignore it and wait
0 nil 0 1 0
# we got a Helo request
# it contained something with /etc/passwd in it - let's simulate a big hole
1 ! 4 1 2 /etc/passwd @fake.passwd
# this regular expression matched something in the input line - let's simulate a big hole
1 /cat\spasswd/ 4 1 2 @fake.passwd
1 mail 2 1 1 250 proceed
1 rcpt 1 1 1 500 Must say "HELO" first
1 help 1 1 1 214-No help available
1 quit 1 0 1 221 all.net closing connection
1 nil 1 1 0
1 ERROR 1 0 1 500 Server Configuration Error - all.net closing connection
# even a rcpt - this guy's good!!!
2 rcpt 3 1 1 250 proceed end with a '.'
2 help 2 1 1 214-No help available.
2 quit 2 0 1 221 all.net closing connection
2 nil 2 1 0
2 ERROR 2 0 1 500 Server Configuration Error - all.net closing connection
# getting mail - what do I do?!?!?
3 nil 1 1 1 500 Mailbox full - please start again
3 ERROR 3 0 0 500 Server Configuration Error - all.net closing connection
# I sent them a password file - better notify the authorities
4 NOTICE notify.pl Email fc@all.net Just sent a password file to an attacker - sendmail exploit
4 NIL 0 1 1 214-Unknown configuration error
4 ERROR 0 0 0 500 Server Configuration Error - all.net closing connection
Как и любая другая нормальная система защита, DTK ведет свой собственный лог, в котором сохраняются все попытки проникновения. Например, вот как выглядит попытка утянуть файл паролей через Telnet-соединение:
127.0.0.1 23 23 1998/04/02 05:34:23 8041 8041:1 listen.pl S0
- - - +3 - - 8041:1 - S1 root
- - - +1 - - 8041:1 - S2 toor
- - - +2 - - 8041:1 - S3 ls
- - - +2 - - 8041:1 - S3 df
- - - +4 - - 8041:1 - S3 cat /etc/passwd
- - - +0 - - 8041:1 - S4 NOTICE //dtk/notify.pl 23 4 Email fc@all.net Just sent a password file to an attacker - telnet login
Необходимо заметить, что DTK - это абсолютно бесплатный продукт, который можно скачать по адресу: http://all.net/dtk/dtk.tar. Развивая пакет DTK, автор разработал улучшенную, но не бесплатную версию - DTK-Pro, которая, реализуя все возможности DTK, дополняет его новыми механизмами:
* Централизованное управление несколькими DTK, установленными на разных узлах сети.
* Графический интерфейс администратора DTK-Pro.
* Проверка согласованности задаваемых обманных правил.
На базе Perl построены и другие, более простые обманные системы. Например, WinDog Deception Toolkit, которая в стандартной поставке позволяет эмулировать тот же Sendmail и Telnet. Данный пакет, в отличие от DTK, изначально разрабатывался для Windows и тестировался на совместимость с ActivePerl. Пример подмены сервиса Telnet (исключая коммуникационную часть) Unix SVR4 показан ниже:
#!/usr/bin/perl
use Socket;
$port=23;
$login="\n\rlogin:";
$password="password:";
$banner="\n\r\n\rUnix(r) System V Release 4.0 (brooder)\n\r";
$fail="login incorrect.\n\r";
#
#Здесь идет коммуникационная часть (работа с сокетами и т.д.)
($af,$port,$inetaddr)=unpack($sockaddr,$addr);
@inetaddr=unpack('C4',$inetaddr);
($i1,$i2,$i3,$i4)=@inetaddr;
$ipaddr="$i1.$i2.$i3.$i4";
print "connected from $ipaddr\n";
print NS $banner;
print NS $login;
while() {
print "attempt to log in as $_\n";
print NS "$password";
$ll= || last;
sleep 5;
print "tried password $ll. Login incorrect is given\n";
print NS $fail;
print NS $login;
}
print "$ipaddr disconnected\n";
close(NS);
CyberCop Sting
Система CyberCop Sting, разработанная в компании Network Associates (http://www.nai.com), в отличие от DTK или WinDog-DTK, эмулирует не отдельные порты или сервисы, а целые Ethernet-сегменты, состоящие из маршрутизаторов Cisco (правда, устаревшей версии IOS 11.2), серверов Windows NT 4.0 и даже Solaris 2.6. Все атаки на виртуальные хосты регистрируются, что позволяет своевременно начать расследование инцидента и отслеживание злоумышленника.
Само "жало" функционирует как обычный NT-сервис, который настраивается путем изменения конфигурационных файлов (фрагмент такого файла см. ниже) в обычном текстовом редакторе.
node Virtual_Cisco_host_1 {
node-type CISCO
next-hop core.e0
iface e0 {
address 200.0.0.193/255.255.255.0
}
iface e1 {
address 200.0.0.194/255.255.255.0
}
}
node Virtual_Solaris_host_1 {
node-type SOLARIS
next-hop core.e0
iface e0 {
address 200.0.0.200/255.255.255.0
}
}
node Virtual_NT_host_2 {
node-type NT
next-hop Virtual_Cisco_host_1.e1
iface e0 {
address 200.0.0.201/255.255.255.0
}
}
Sting можно настроить и таким образом, чтобы виртуальный узел ретранслировал получаемые пакеты на вполне реальный, но невидимый для злоумышленника адрес, который и отвечает на все несанкционированные запросы. Таким образом, несуществующий узел выступает в роли прослойки между реальным и атакующим узлом. Хорошо, если бы CyberCop Sting умел бы эмулировать не только несуществующие узлы, но и отдельные порты и сервисы на этих узлах, еще больше затрудняя работу хакера. Но пока это не реализовано и неизвестно, дойдут ли до этого когда-нибудь у разработчиков руки.
RealSecure Server Sensor
Этот продукт трудно назвать обманной системой, т.к. Decoy-режим, реализованный в Server Sensor, является лишь небольшой частью тех возможностей, которые заложили в него разработчики. Кстати, разработана эта система компанией Internet Security Systems, которая известна своими сканерами Internet Scanner, System Scanner и Database Scanner и системой обнаружения атак на уровне сети RealSecure Network Sensor, которые уже упоминались на страницах. Еще мне понравилось то, что эта система, единственная из многих, поддерживается в России... =)
|