Инструментальные средства обеспечения безопасности


Реализация


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

Таблица 2.1. Аргументы командной строки net

Командная строка9xNTMe2000XPОписание
net accountsNoYesNoYesYesОпределяет параметры политики доступа в систему, такие как срок действия пароля, историю паролей и политику блокировки и выхода из системы.
net computerNoYesNoYesYesДобавляет или удаляет компьютеры в домен.
net configYesYesYesYesYesОтображает текущую информацию о сервере и рабочей группе, включая имя компьютера, имя пользователя, версию программного обеспечения и имя домена.
net continueNoYesNoYesYesПерезапускает приостановленную службу.
net diagYesNoYesNoNoОтображает диагностическую информацию о соединениях оборудования в сети.
net fileNoYesNoYesYesОтображает имена всех открытых в настоящее время файлов и предоставляет возможность их закрытия.
net groupNoYesNoYesYesУстановка свойств Общей группы Windows (только на контроллере домена).
net helpYesYesYesYesYesВыводит информацию о доступных командах
net helpmsgNoYesNoYesYesВыводит подробную информацию по номерам сообщений об ошибках.
net initYesNoYesNoNoЗагружает драйверы протоколов и сетевых карт без присоединения их к Менеджеру протоколов Windows.
net localgroupNoYesNoYesYesКонфигурирование свойств рабочей группы.
net nameNoYesNoYesYesУстанавливает имя, по которому компьютер будет получать сообщения.
net logoffYesNoYesNoNoЗакрывает соединение между вашим компьютером и сетевыми ресурсами, к которым вы были подсоединены.
net logonYesNoYesNoNoВход в домен или рабочую группу.
net passwordYesNoYesNoNoИзменяет пароль для заданного пользователя.
net pauseNoYesNoYesYesПриостанавливает работу выполняющейся службы.
net printYesYesYesYesYesПолучение информации и управление очередью печати компьютера.
net sendNoYesNoYesYesПосылает сообщение другому пользователю или компьютеру в сети.
net sessionNoYesNoYesYesОтображает список прерванных соединений между компьютером и другими устройствами в сети.
net shareNoYesNoYesYesСоздает, уничтожает или отображает список общих ресурсов.
net startYesYesYesYesYesЗапускает службу
net statisticsNoYesNoYesYesОтображает статистику для сервера или рабочей станции, такую как использование сети, открытые файлы или задания на печати.
net stopYesYesYesYesYesОстанавливает работу службы.
net timeYesYesYesYesYesОтображает время, синхронизированное со специальным сервером времени в сети.
net useYesYesYesYesYesСоединяется или отсоединяется от общих сетевых ресурсов; выводит информацию об общих сетевых ресурсах.
net userNoYesNoYesYesДобавляет или удаляет пользователя.
net verYesNoYesNoNoОтображает информацию о версии редиректора вашей рабочей группы.
net viewYesYesYesYesYesОтображает список общих ресурсов для заданного компьютера или всех компьютеров подсети.


Набрав в командной строке Windows nbtstat, мы увидим информацию об использовании этой утилиты.

C:\WINDOWS\Desktop>nbstat

Displays protocol statistics and current TCP/IP connections using NBT (NetBIOS over TCP/IP). NBTSTAT [-a RemoteName] [-A IP address] [-c] [-n] [-r] [-R] [-s] [S] [interval] ] -a (adapter status) выдает список таблицы имен удаленной машине по ее имени. -A (Adapter status) выдает список таблицы имен удаленной машине по ее IP-адресу. -c (cache) список содержимого кэша удаленной машины, включая ее IP-адрес. -n (names) список локальных NetBIOS-имен. -r (resolved) список имен, найденных через широковещательный запрос и WINS. -R (Reload) сбрасывает и перезагружает удаленную таблицу имен. -S (Sessions) выводит таблицу сессий, установленных с заданным IP-адресом. -s (sessions) выводит таблицу сессий, преобразуя заданные IP-адреса в имена хостов на основе содержимого файла hosts. -RR (ReleaseRefresh) отсылает на WINs пакеты Release names, а затем выполняет обновление.

RemoteName имя удаленной машины. IP-address десятичное представление IP адреса. Interval обновление выведенной статистики. Промежуток в секундах между обновлением информации. Нажмите Ctrl-C для завершения обновления.

C:\WINDOWS\Desktop>

Если мы работаем на локальной машине, то можем использовать NBTSTAT для мониторинга информации о нашей локальной сессии, проверять и сбрасывать кэш WINS-имен, делая все это в режиме реального времени, задав интервал (в секундах) в конце командной строки. Например, команда nbtstat -S 2 позволит осуществлять мониторинг текущих открытых NetBIOS-сессий, установленных между локальной системой и другими машинами в сети, и будет обновлять эту информацию каждые две секунды.

C:\WINDOWS\Desktop>nbtstat -S 2

NetBIOS Connections Table

LocalName State In/Out Remote Host Input Output -------------------------------------------------------------- WINBOX <03> Listening WINBOX Connected in 192.168.1.102 10Kb 208Kb WINBOX Listening WINBOX <03> Listening






Можно использовать regdmp, чтобы получить сведения о том, какие службы и приложения запускаются на нашем компьютере в момент загрузки.

C:\Windows\Desktop\> regdmp HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

Мы должны убедится, что в момент загрузки не запускается никаких зловредных программ, вроде Netcat или Netbus.

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

C:\Windows\Desktop\>regdmp -m 192.168.1.102 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

Подробнее мы обсудим использование regdmp в лекции "Компоновка и использование набора инструментов для расследования хакерских атак, то есть для "живого ответа" в системе Windows".




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




Сама по себе команда весьма проста. Наиболее старые версии команды whois требуют ввода имени хоста, на котором поддерживается whois-сервер с использованием флага -h. Оставшаяся часть командной строки содержит в себе запрос, который мы хотим послать. Команда fwhois требует сначала определить запрос, и при необходимости в конце задать адрес whois с сервера (@whois_server).

Следующие две команды идентичны друг другу.

bash% whois -h whois.networksolutions.com yahoo.com

и то же самое

bash% fwhois yahoo.com@whois.networksolutions.com

По умолчанию используется сервер whois.internic.net. Мы можем запустить команду whois без указания имени сервера, чтобы получить самую общую информацию о домене.

bash% whois yahoo.com Domain Name: YAHOO.COM Registrar: NETWORK SOLUTIONS, INC. Whois Server: whois.networksolutions.com Referral URL: http://www.networksolutions.com Name Server: NS3.EUROPE.YAHOO.COM Name Server: NS5.DCX.YAHOO.COM Name Server: NS4.DAL.YAHOO.COM Name Server: NS2.SAN.YAHOO.COM Name Server: NS1.SNV.YAHOO.COM Updated Date: 05-nov-2001

На выходе мы получили информацию о серверах доменных имен и сведения о том, когда в последний раз обновлялась соответствующая запись. Но здесь нет никакой информации о местоположении сервера или контактной информации. К счастью, здесь есть ссылка на другой whois-сервер, где должна быть интересующая нас информация. Теперь, если мы попытаемся выполнить команду whois -h whois.networksolutions.com yahoo.com, мы должны будем получить ту же самую информацию что и ранее, но вдобавок еще и сведения о географическом положении и контактную информацию.

Таким образом, если нам надоело назойливое сканирование портов с адреса somesystem.some_loser.org, теперь мы можем просто связаться с организацией SomeLoser и выразить протест. Whois - также весьма полезен для взломщиков, которые пытаются преследовать особые цели.

Но что делать, если мы не знаем имени хоста. Что если в нашем распоряжении имеется только IP-адрес. К счастью, есть whois-серверы, которые поддерживают выполнение запросов по IP-адресу.




Во-первых, упомянем несколько весьма важных параметров командной строки. Есть много различных реализаций команды Ping, но большинство Ping-утилит для Unix-систем имеют общие параметры командной строки. Основные отличия Unix- и Windows-реализаций этой утилиты представлены в таблице 2.3.

Таблица 2.3. Общие параметры командной строки Ping

ПараметрОписание
-c count (Unix) -n count (Windows)Количество посылаемых вызовов.
-f (Unix)Потоковый вызов, при котором посылается столько запросов, сколько возможно. Выводит символ (.) для каждого посланного запроса и символ (^H) для каждого полученного ответа. Обеспечивает визуальное отображение количества потерянных пакетов. Этот параметр может использовать только пользователь с правами супервайзера.
-i wait (Unix)Определяет время ожидания в секундах между посылкой пакетов (по умолчанию 1 сек.).
-m TTL (Unix) -i TTL (Windows)Определяет параметр времени жизни (TTL)..
-n (Unix) -a (Windows)В Unix-системах параметр -n указывает на то, что не нужно определять имя для IP-адреса (выводятся только числовые значения). Параметр -a в Windows сообщает о необходимости определения имени по IP-адресам. В Unix и Windows реализациях утилиты по умолчанию определяется разное значение параметра разрешения имен.
-p pattern (Unix)Позволяет вам дополнить заголовок посылаемого ICMP-пакета специальным шаблоном, чтобы определить идентичность получаемой в ответ информации.
-q (Unix)Запрещает вывод промежуточной информации, разрешая вывод обобщенных сведений после завершения работы программы.
-R (Unix) -r (Windows)Определяет параметр "record route" для ICMP-пакета. Если маршрутизатор поддерживает такую возможность, он будет записывать маршрут пакета, получаемый с параметрами IP, и будет отображать его в результатах работы программы после получения ответа. Однако большинство маршрутизаторов игнорирует параметры маршрутизации по источнику, и поэтому игнорируют этот параметр.
-s size (Unix) -l size (Windows)Дает возможность определить размер ICMP-пакета. Заголовок ICMP-пакета имеет 8 байт в длину, таким образом, реальный размер пакета будет составлять <size> + 8. По умолчанию для Unix значение параметра равно 56 и 24 для Windows. Это соответствует 64 и 32 байтам, если принять во внимание длину заголовка.
-w wait (Unix) -w timeout (Windows)Прерывает работу программы после заданного ожидания. Определяет задержку в <timeout> миллисекунд перед завершением запроса.
<


Так же как и Ping, команда traceroute имеет несколько различных реализаций. Так же как и Ping, реализация traceroute для Windows сильно отличается от версии, используемой для Unix. Настолько что Windows-утилита носит название tracert, напоминая о том, что в системе Windows эта программа используется без поддержки длинных имен файлов. В таблице 2.4 описаны некоторые наиболее важные параметры командной строки (все параметры, если иное не оговаривается, приводятся для Unix-версии).

Таблица 2.4. Общие параметры командной строки Traceroute

ПараметрОписание
-g hostlist (Unix) -j hostlist (Windows)Определяет маршрут для прохождения пакетов (см. лекцию "NETCAT и CRYPTCAT").
-i interfaceЗадает используемый для отсылки пакетов сетевой интерфейс (для хоста с несколькими сетевыми интерфейсами).
-IОпределяет использование ICMP-сообщений вместо UDP. По умолчанию traceroute посылает UDP-пакеты порту, который обычно бывает свободным, так что конечный хост может послать в ответ сообщение PORT_UNREACHABLE в ответ на пришедшие пакеты.
-m hops (Unix) -h hops (Windows)Задает максимальное число промежуточных хостов, которое может быть пройдено до конечного пункта. Если конечный хост не достигается за заданное число шагов, все возвращается обратно. По умолчанию равно 30.
-n (Unix) -d (Windows)Запрещает определение имен для IP-адресов. Обычно это существенно ускоряет работу программы, но в этом случае вы не сможете получить представление о географическом положении хостов.
-p portЕсли мы используем traceroute на основе протокола UDP и конечный хост прослушивает номера портов вокруг значения по умолчанию(33434), мы можем определить здесь другой номер порта.
-w (Unix and Windows)Задает время ожидания ответа от промежуточных хостов.




Исходные тексты программы hping можно загрузить по адресу http://www.hping.org/. Процесс инсталляции детально описан в файле README, так же как и несколько примеров использования этой программы.

Примечание. Исполняемый модуль hping2 необходимо запускать, имея полномочия пользователя root, чтобы иметь возможность использовать некоторые программы сетевых интерфейсов, которые требуются для работы.

[root@originix hping2]# ./hping2 -c 4 -n -i 2 192.168.1.101 HPING 192.168.1.101 (eth0 192.168.1.101): NO FLAGS are set, 40 headers + 0 data bytes len=46 ip=192.168.1.101 flags=RA seq=0 ttl=128 id=54167 win=0 rtt=0.8 ms len=46 ip=192.168.1.101 flags=RA seq=1 ttl=128 id=54935 win=0 rtt=0.7 ms len=46 ip=192.168.1.101 flags=RA seq=2 ttl=128 id=55447 win=0 rtt=0.7 ms len=46 ip=192.168.1.101 flags=RA seq=3 ttl=128 id=55959 win=0 rtt=0.7 ms

--- 192.168.1.101 hping statistic --- 4 packets tramitted, 4 packets received, 0% packet loss round-trip min/avg/max = 0.7/0.8/0.8 ms

По умолчанию hping использует TCP-протокол. Программа создает пустые TCP-пакеты с размером окна равным 64 и неустановленными флагами заголовка, и посылает эти пакеты на порт с номером 0 требуемого хоста. В данном примере флаг -c 4 указывает программе на необходимость послать 4 пакета, флаг -n запрещает разрешение имен, и флаг -i 2 задает интервал между попытками равным двум секундам.

Примечание. Есть только один способ обнаружить использование программы hping в вашей сети: установить систему обнаружения вторжений, анализирующей трафик по порту с номером 0.

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

Какой ответ мы получим от системы? Параметр len полученных обратно IP-пакетов. ip, соответственно - IP-адрес. flags показывает, какие TCP-флаги установлены в получаемых обратно пакетах. В данном случае установлены влаги RESET и ACK. Другие возможные значения: SYN (S), FIN (F), PUSH (P), и URGENT (U).


rpcinfo -p hostname. Это основной способ использования rpcinfo для вывода полного списка RPC-служб, которые зарегистрированы с использованием portmapper.

rpcinfo -u hostname programid [version]. Получив ID-номер RPC-программы, версию и номер порта мы можем использовать эту команду для создания RPC-вызова и получения информации об отклике. Добавление параметра -n portnumber позволяет использовать отличный от зарегистрированного portmapper номер порта. Параметр -u означает использование UDP; чтобы использовать TCP, можно применить параметр -t. Номер версии программы - не обязательный параметр.

rpcinfo -b programid version. Эта команда позволяет сделать широковещательный RPC-запрос с целью получить соединение со всеми машинами в локальной сети и определить те из них, которые ответят. Таким способом можно выявить машины, которые используют уязвимые RPC-службы.

rpcinfo -d programid version. Это команда может получить идентификатор/номер версии "незарегистрированных" программ. Может выполняться только на локальной машине с полномочиями пользователя root.

rpcinfo -m hostname. Параметр -m то же самое, что и -p за исключением того, что он выводить на экран таблицу статистики: число RPC-запросов, которые обслужила RPC-служба. Этот параметр доступен не на всех платформах. Linux-версии не включают этот параметр, но более новые версии Solaris (SunOS 5.6 и выше) его поддерживают. За более подробной информацией обращайтесь к man-страницам.




Эта команда отображает все смонтированные директории на NFS-сервере и имена хостов клиентов, которые к ним смонтированы.

showmount -a hostname

Флаг -d идентичен флагу -a, но он не выводит имена клиентских хостов.

showmount -d hostname

Это наиболее популярный формат команды. Эта команда показывает точки монтирования, которые экспортированы и доступны для монтирования с использованием NFS.

showmount -e hostname



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