Защита информации в Интернет


Популярные утилиты



Таблица 2.2. Популярные утилиты сканирования портов и их возможности



 
Утилита
Сканирование
  Ресурс
  UNIX
  TCP 
  UDP    Скрытое  
  Strobe
  X
      ftp://f tp.FreeBSD.org/
pub/FreeBSD
/ports/distfiles/strobe-1.06.tgz
  Tcp_scan
  X
      http://wwdsilx.
wwdsi.com/saint/
  Udp_scan
   
  X      http://wwdsilx.
wwdsi.com/saint/
  Nmap
  X
  X   X http://www. inscure . org/nmap
  Netcat
  X 
  X    http://www.10pht.com/
users/10pht/nc110.tgz
  Windows
Netcat
  X          
  X    http://www.10pht.com/users/
10pht/ncllnt.zip
  NetScanTools Pro 2000
  X 
  X      http://www.nwpsw.com
  SuperScan
  X
      http://members.home.com/
rkeir/software.html
  NTOScanner
  X
      http://www.ntobjectives.com
  WinScan
  X
      http://www.prosolve.com
  IpEye
  X
     http://ntsecurity.nu
  WUPS
   
  X    http://ntsecurity.nu
  Fscan
  X 
  X    http://www.foundstone.com

Метод UDP-сканирования утилиты netcat не работает в операционной системе Windows NT, поэтому пользователям этой ОС не стоит доверять полученным результатам.

# Алгоритм выявления факта сканирования
# Автор - Стюарт Мак-Клар (Stuart McClure)
# Данный алгоритм выявляет неудачные попытки сканирования портов,
# которые приводят к генерации сообщений ACK/RST.
В процессе настройки
# можно поэкспериментировать со значениями
# maxcount и maxtime.
port_schema = library_schema:new( 1, ["time", "ip", "ip",
"int"],
scope() };
time = 0;
count = 0;
maxcount =2; t Максимально допустимое количество ACK/RST.
maxtime =5; tt Максимально допустимое время, в течение
# которого может достигаться значение maxcount.
source = 0; port = 0; target = 0;
filter portscan ip ( )
{
if (tcp.is)
(
# Проверка АСК, RST и источника поступления.
if ( byte(ip.blob, 13) == 20 )
# Установлены флаги АСК, RST
{
count = count + 1;
source = ip.dest;
target = ip.source;
port = tcp.sport;
time = system.time;
} } on tick = timeout
( sec: maxtime, repeat )
call checkout;
}
func checkout {
if (count >= maxcount) {
echo("Попытка сканирования порта,
Время: ", time, "\n); record system.time, source, target,
port to the_recorder_portscan; count = 0; }
else
count = 0;
}
the_recorder_portscan=recorder("
bin/histogram packages/sandbox/portscan.cfg",
"port_schema"
);

Для выявления попыток сканирования портов можно также воспользоваться утилитой snort (www.snort.org) (см. также http://spyjurenet.com/linuxrc.org/projects/ snort/). Как вы могли догадаться, эта утилита является одной из предпочитаемых нами программ IDS (заметим, что ее версии 1.x не позволяют обнаруживать фрагментацию пакетов). Вот пример листинга, содержащего данные о попытке сканирования портов.

[**] spp_portscan: PORTSCAN DETECTED from 192.168.1.10 [**]
05/22-18:48:53.681227
[**] spp_portscan: portscan status from 192.168.1.10: 4 connections
across 1 hosts: TCP(O), UDP(4) [**]
05/22-18:49:14.180505
[**] spp_portscan: End of portscan from 192.168.1.10 [**]
05/22-18:49:34.180236

Для платформы UNIX существует немало утилит, таких, например, как Утилита: scanlogd (http://www.openwall.com/scanlogd/) компании Solar Designer, которые выявляют и регистрируют попытки сканирования. Кроме того, утилиту Psionic PortSentry, созданную в рамках проекта Abacus (http://www.psionic.com/abacus), можно настроить не только на регистрацию, но и на принятие контрмер при выявлении факта активного сканирования. Один из способов борьбы с попытками сканирования портов заключается в автоматической установке для ядра правил фильтрации, когда к уже существующим добавляется новое правило, запрещающее доступ со стороны узла-нарушителя. Такое правило можно задать в конфигурационном файле утилиты PortSentry. При этом одно и то же правило может отличаться в различных системах. Для системы Linux 2.2.x, в которой имеется поддержка ядра брандмауэра, в файл portsentry.conf нужно добавить запись, аналогичную следующей.

# New ipchain support for Linux kernel version 2.102+
 KILL_ROUTE="/sbin/ipchains -I input -s $TARGET$ -j DENY -1"

Утилита PortSentry совместима с большинством версий UNIX, включая Solaris. Независимо от того, применяете ли вы какие-либо утилиты или нет, необходимо помнить, что массированные попытки сканирования портов, инициируемые каким-либо узлом или какой-нибудь сетью, могут означать, что кто-то изучает вашу сеть. Всегда обращайте самое пристальное внимание на такие действия, поскольку за ними может последовать полномасштабное вторжение. И наконец, не забывайте о том, что имеется возможность активного противостояния или блокирования попыток сканирования портов. Все эти вопросы рассматриваются в статье, опубликованной компанией Solar Designer (http://www. openwall.com/scanlogd/P53-13.gz). В этой статье содержатся дополнительные советы по разработке и использованию систем выявления попыток сканирования.
Большинство брандмауэров не только могут, но и должны настраиваться на режим обнаружения попыток сканирования. Однако одни брандмауэры справляются с этой задачей лучше, другие хуже. Например, некоторые брандмауэры умеют выявлять скрытое сканирование. Однако многие из них, поддерживая режим выявления SYN-сканирования, абсолютно игнорируют FiN-сканирование. Самой большой проблемой при выявлении факта сканирования является задача анализа огромных системных журналов, накапливаемых при ежедневной работе серверов сети. Для упрощения решения этой задачи можно воспользоваться утилитой Psionic Logcheck (http: //www.-psionic.com/abacus/logcheck/). Кроме того, мы рекомендуем настроить утилиты таким образом, чтобы они реагировали на обнаруженные попытки сканирования в реальном времени, отсылая сообщения по электронной почте. Везде, где это только возможно, устанавливайте пороговые значения для количества регистрируемых событий (threshold logging), чтобы взломщик не завалил ваш почтовый ящик грудой сообщений, в которых будет так же трудно найти информацию, как и в системных журналах. Кроме того, в этом случае может также возникнуть условие DoS. При использовании пороговых значений все предупреждения будут группироваться, а не обрабатываться по одному. Как минимум необходимо настроить систему безопасности на выдачу отчетов о самом факте выявленной попытки сканирования. Для брандмауэра Firewall-1 с этой целью можно использовать утилиту Ланца Спитцнера (Lance Spitzner) alert, sh (http://www. enteract.com/~lspitz/intrusion.html). Эта утилита будет выявлять и отслеживать попытки сканирования портов, работая под управлением Firewall-1 в качестве средства защиты, заданного пользователем.
Для платформы Windows NT также имеется несколько утилит, предназначенных для выявления попыток сканирования. Прежде всего, необходимо отметить такую утилиту, как Genius 2.0, разработанную компанией Independent Software (http://www. indiesoft.com) для платформ Windows 95/98 и Windows NT. Этот программный продукт предоставляет гораздо больше возможностей, чем простое средство обнаружения TCP-сканирования портов. Однако необходимо отметить, что даже с учетом этого, имеет смысл его использовать. Утилита Genius отслеживает многочисленные запросы к открытым портам и при обнаружении попыток сканирования отображает на экране предупреждающее диалоговое окно, в котором содержится IP-адрес взломщика и доменное имя его узла.
Утилита Genius позволяет выявлять как попытки обычного сканирования, т.е. с установлением TCP-соединения, так и SYN-сканирования.

Содержание раздела