Смекни!
smekni.com

Сетевые сканеры и анализаторы (стр. 7 из 8)

NTOScanner

Утилита NTOScanner компании NTObjectives, Inc. (http://www.ntobjectives.com) представляет собой быструю программу TCP-сканирования с графическим интерфейсом, которая при ручной установке соответствующего режима позволяет также собирать маркеры портов, находящихся в состоянии ожидания запросов. Однако эта утилита имеет некоторые неудобства при задании исследуемых узлов и портов, а также требует, чтобы перед сканированием сетей класса С к узлам было применено ping-прослушивание. Утилита NTOScanner чрезвычайно полезна для определения служб, запущенных на конкретном узле или в сети, достижимой с помощью ICMP-пакетов.

WinScan

Утилита WinScan компании Scan Mathias of Prosolve (http://www.prosolve.com) является свободно распространяемой программой TCP-сканирования портов, реализованной в двух версиях: с графическим интерфейсом (winscan.exe) и для использования в командной строке (scan.exe). Мы регулярно обращаемся к версии для командной строки в файлах сценариев, поскольку при сканировании сетей класса С она позволяет получить удобные для анализа результаты. При использовании утилит Win32 strings, tee и tr компании Mortice Kern Systems, Inc. (http://www.mks.com) следующая консольная команда NT будет выполнять сканирование сети для портов из диапазона 0-1023 и формировать результат в виде строк с полями, разделенными двоеточиями, в формате IP-адрес:имя_службы: порт/протокол (для облегчения восприятия строка была разделена на две части).

scan.exe -n 192.168.7.0 -s 0 -е 1023 -f|strings|findstr/с:"/top"|

tr \011\040 : | tr -s ::|tee -ia results.txt

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

192.168.22.5:nbsession:139/tcp

192.168.22.16:nbsession:139/tcp

192.168.22.32:nbsession:139/tcp

Большое спасибо Патрику Хейму (Patrick Heim) и Ясону Глассбергу (Jason Glassberg) за предоставление этой интересной команды.

ipEye

Не думаете ли вы, что для выполнения нетрадиционного сканирования потребуется система Linux и утилита nmap? He торопитесь с выводами, поскольку утилита ipEye Арни Видстрома (Arne Vidstrom)'(http: //ntsecurity.nu) позволяет выполнить сканирование требуемых портов, а также TCP-сканирование с помощью сообщений SYN, FIN и с использованием метода "рождественской елки", из командной строки Windows. На использование этой прекрасной утилиты накладывается лишь несколько ограничений. Они заключаются в том, что ее можно использовать только в среде Windows 2000 и одновременно сканировать один узел. Вот пример запуска утилиты ipEye для выполнения TCP-сканирования с помощью сообщений SYN порта с номером 20. При этом предпринята попытка избежать правил фильтрации, используемых маршрутизатором. Приведенный пример аналогичен запуску утилиты nmap с параметром -д (для краткости полученные результаты отредактированы).

С:\Toolbox>ipeye.exe

192.168.234.110 -syn -p 1 1023 -sp 20

ipEye 1.1 - (с) 2000, Arne Vidstrom (arne.vidstrom@ntsecurity.nu)

- http://ntsecurity.nu/toolbox/ipeye/

1-52 [closed or reject]

53 [open]

54-87 [closed or reject]

88 [open]

89-134 [closed or reject]

135 [open]

136-138 [closed or reject]

139 [open]

636 [open]

637-1023 [closed or reject]

1024-65535 [not scanned]

WUPS

Утилита Windows UDP Port Scanner (WUPS) разработанатемижеавторами (http://ntsecurity.nu). Эта утилита представляет собой надежное, с графическим интерфейсом и относительно быстрое средство сканирования UDP-портов, несмотря на то, что позволяет одновременно сканировать заданную последовательность портов лишь одного узла. Как видно из рис. 2.6, утилита WUPS является надежным средством для быстрого UDP-сканирования каждого требуемого узла и, следовательно, значительно облегчает выполнение этой утомительной задачи.

Защита от сканирования портов

В табл. 1.4 приведен перечень различных популярных утилит сканирования, а также типы сканирования, которые эти утилиты позволяют выполнять.

Контрмеры: защита от сканирования портов

Выявление факта сканирования

Как правило, взломщики прибегают к сканированию TCP- и UDP-портов удаленного компьютера, чтобы установить, какие из них находятся в состоянии ожидания запросов. Поэтому выявить факт сканирования — значит, установить, в каком месте и кем будет предпринята попытка взлома. Основные методы выявления факта сканирования состоят либо в использовании специальной программы, предназначенной для выявления вторжений на уровне сети (IDS), такой как NFR, либо в использовании механизма защиты на уровне отдельного узла.

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

Утилита Сканирование Ресурс
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 в качестве средства защиты, заданного пользователем.