WindowsNT: удалённое вторжение
Автор: группа Rhino9 (http://rhino9.ml.org/
Русский перевод - AnSer (http://anser.webjump.com/ fycth@iname.com).
Введение
Этот документ - попытка группы Rhino9 документировать технику и методы, используемые в нападении на основанные на WindowsNT сети. Цель данного документа состоит в том, чтобы научить администраторов и профессионалов защиты способам проникновения в NT-сети. Этот документ пытается следовать шагам классического текста "Как улучшить защиту вашего сайта вторжением в него" , который написали Dan Farmer и Wietse Venema.
Конечно, этот текст не будет содержать все известные методы вторжения в NT. Мы попытались собрать текст, который Администраторы могли бы использовать для изучения основных методов проникновения, чтобы проверить уязвимость их собственных сетей. Администратор должен иметь хорошие знания относительно того, как проникновения происходят и должен быть способен использовать эти знания чтобы далее защитить свою сеть.
Этот файл не предназначен для людей, которые плохо знакомы с защитой или технологиями организации сетей. Авторы предполагают, что люди, читающие этот документ, имеют некоторое понимание протоколов, технологий и архитектуры сервера и сети.
Использование
Текст написан в процедурной манере. Мы очень подробно всё описали, чтобы подойти как можно ближе к реальному вторжению. Большинство методов, обсуждаемых в этом тексте, довольно просто выполнить, как только наступит понимание того, как, что и почему делается.
Документ разделен на 3 части: NetBIOS, WebServer, и Разное, каждая из которых описывает различные методы сбора информации и методов проникновения.
Часть 1 - "NETBIOS"
Начальный шаг, который делает хакер, это сканирование портов целевой машины или сети. Удивительно, как техника атаки может стать основанной на открытых портах целевой машины. Вы должны понять, что это норма для NT-машины, - иметь различные открытые порты с Unix-машиной. Как правило хакер может по результатам сканирования портов сказать, является ли компьютер NT- или Unix-машиной с довольно точными результатами. Очевидно имеются некоторые исключения из данного правила, но вообще это может быть сделано.
При нападении на NT-сеть, NetBIOS имеет тенденцию брать главный удар на себя. По этой причине, NetBIOS будет первой серьезной темой для обсуждения.
Сбор информации с NetBIOS может быть довольно простой вещью, хотя и занимает некоторое время. NetBIOS вообще имеет тенденцию быть очень медленным, поэтому и требует много времени.
Если при сканировании портов выясняется, что на целевой машине порт 139 открыт, следует естественный процесс. Первый шаг - выполнение команды NBTSTAT.
Команда NBTSTAT может использоваться, чтобы сделать запрос сетевых машин относительно NetBIOS информации. Это может также быть полезно для чистки NetBIOS кэша и предзагрузки файла LMHOSTS. Эта команда может быть чрезвычайно полезна при выполнении ревизий защиты. Результаты её выполнения могут иной раз показать больше, чем вы могли бы подумать.
Использование: nbtstat [-a компьютер] [-A IP-адрес] [-c] [-n] [-R] [-r] [-S] [-s] [интервал]
Ключи:
-a вывести таблицу имён удаленного компьютера по имени.
-A вывести таблицу имён удаленного компьютера по IP-адресу.
-c вывести кэш имён, включая адреса IP.
-n вывести локальные имена NetBIOS.
-r вывести имена, найденные передачей и через WINS.
-R произвести чистку и кэш таблицы имён.
-S вывести таблицу сеансов с целевым адресом IP.
-s вывести преобразования таблицы сеансов.
Заголовки столбца, произведенные NBTSTAT имеют следующие значения:
Input
Число полученных байт.
Output
Число отосланных байт.
In/Out
Подключение от локального компьютера или от другой системы к
локальному компьютеру.
Life
Остающееся время до того, как ваш компьютер очистит кэш таблицы имён.
Local Name
Локальное NetBIOS имя, данное подключению.
Remote Host
Имя или адрес IP удаленного главного компьютера.
Type
Имя может иметь один из двух типов: уникальный или группа.
Последний байт из 16-символьного имени NetBIOS часто означает кое-что потому что то же самое имя может присутствовать в нескольких экземплярах на том же самом компьютере. Это показывает последний байт имени, преобразованный в hex-формат.
State
Ваши NetBIOS подключения будут находиться в одном из следующих "состояний":
Состояние
Значение
Accepting
входящее подключение находится в процессе
Associated
подключение находится в конечной точке и ваш компьютер связал его с адресом IP.
Connected
это хорошее состояние! Оно означает, что вы связаны с удаленным ресурсом
Connecting
ваш сеанс пробует решить преобразование имени в IP-адрес ресурса адресата
Disconnected
сеанс связи закончен
Disconnecting
ваш компьютер запросил разъединение, и ожидает ответа от удаленного компьютера
Idle
компьютер был открыт в текущем сеансе, но в настоящее время он не принимает подключения
Inbound
входящий сеанс пробует соединиться
Listening
компьютер доступен
Outbound
ваш сеанс создает подключение TCP
Reconnecting
если ваше подключение потерпело неудачу на первой попытке, это состояние показывает попытку повторного соединения
Имеется образец фактического ответа команды NBTSTAT:
C:>nbtstat -A x.x.x.x
NetBIOS Remote Machine Name Table
Name Type Status
---------------------------------------------
DATARAT <00> UNIQUE Registered
R9LABS <00> GROUP Registered
DATARAT <20> UNIQUE Registered
DATARAT <03> UNIQUE Registered
GHOST <03> UNIQUE Registered
DATARAT <01> UNIQUE Registered
MAC Address = 00-00-00-00-00-00
Используя таблицу ниже, что вы можете сказать о компьютере ?
Name Number Type Usage
=========================================================================
<computername> 00 U Workstation Service
<computername> 01 U Messenger Service
<\_MSBROWSE_> 01 G Master Browser
<computername> 03 U Messenger Service
<computername> 06 U RAS Server Service
<computername> 1F U NetDDE Service
<computername> 20 U File Server Service
<computername> 21 U RAS Client Service
<computername> 22 U Exchange Interchange
<computername> 23 U Exchange Store
<computername> 24 U Exchange Directory
<computername> 30 U Modem Sharing Server Service
<computername> 31 U Modem Sharing Client Service
<computername> 43 U SMS Client Remote Control
<computername> 44 U SMS Admin Remote Control Tool
<computername> 45 U SMS Client Remote Chat
<computername> 46 U SMS Client Remote Transfer
<computername> 4C U DEC Pathworks TCPIP Service
<computername> 52 U DEC Pathworks TCPIP Service
<computername> 87 U Exchange MTA
<computername> 6A U Exchange IMC
<computername> BE U Network Monitor Agent
<computername> BF U Network Monitor Apps
<username> 03 U Messenger Service
<domain> 00 G Domain Name
<domain> 1B U Domain Master Browser
<domain> 1C G Domain Controllers
<domain> 1D U Master Browser
<domain> 1E G Browser Service Elections
<INet~Services> 1C G Internet Information Server
<IS~Computer_name> 00 U Internet Information Server
<computername> [2B] U Lotus Notes Server
IRISMULTICAST [2F] G Lotus Notes
IRISNAMESERVER [33] G Lotus Notes
Forte_$ND800ZA [20] U DCA Irmalan Gateway Service
Unique (U): имя может иметь только один адрес IP, назначенный для него. Может показаться, что на сетевом устройстве присутствуют многократные случаи одного и того же имени, но суффикс будет уникален, делая имя также полностью уникальным.
Group (G): нормальная группа; одиночное имя может существовать со многими адресами IP.
Multihomed (M): имя уникально, но из-за множественных сетевых интерфейсов на одном и том же компьютере, эта конфигурация необходима чтобы разрешить регистрацию. Максимальное число адресов - 25.
Internet Groupt (I): это специальная конфигурация имени группы, используемая для управления WinNT именами домена.
Domain Name (D): Новый в NT 4.0.
Хакер может использовать таблицу выше и результат от nbtstat против ваших машин, чтобы начать собирать информацию относительно их. По этой информации хакер может сказать, какие услуги выполняются на целевой машине и иногда, какие пакеты программ были установлены. Традиционно, каждый сервисный или главный пакет программ идет со своими ошибками, так что этот тип информации полезен для хакера.
Следующим логическим шагом был бы подбор возможных имён пользователей удаленной машины. Сетевой вход в систему состоит из двух частей - имени пользователя и пароля. Как только хакер имеет правильный список имен пользователей, он имеет половину из нескольких правильных входов в систему. Теперь, используя команду nbtstat, хакер может получить входное имя любого, кто подключён локально к данной машине. В результатах команды nbtstat, строки с идентификатором <03> - имена пользователей или имена компьютеров. Подбор имён пользователей может также быть выполнен через нулевой сеанс IPC и инструментальные средства SID (для получения дополнительной информации относительно инструментальных средств SID читать приложение
.
IPC$ (меж-процессовая связь) - стандартный скрытый ресурс на NT машине, которая главным образом используется для связи сервер-сервер. NT машины были разработаны для соединений друг с другом и получения различных типов необходимой информации через этот ресурс. Как и со многими особенностями проекта в любой операционной системе, хакеры научились использовать эту особенность в их собственных целях. Соединяясь с этим ресурсом хакер получает, для всех технических целей, допустимое подключение к вашему серверу. Соединяясь с этим ресурсом как нулевое соединение, хакер способен установить подключение без необходимой аутентификации.
Чтобы соединиться с ресурсом IPC$ как нулевое соединение, хакер выполняет следующую команду:
c:>net use \[ip address of target machine]ipc$ "" /user:""
Если подключение успешно, хакер может делать множество других вещей, кроме как подбор имён пользователей, но давайте сначала поговорим именно об этом. Как упомянуто ранее, эта методика требует нулевого сеанса IPC и инструментальных средств SID, которые написал Evgenii Rudnyi. Инструментальные средства SID состоят из двух различных частей, User2sid и Sid2user. User2sid будет брать имя аккаунта или группы и давать Вам соответствующий SID. Sid2user будет брать SID и давать Вам имя соответствующего пользователя или группы. Как автономный инструмент, это - процесс ручной и очень требует время. Userlist.pl - perl скрипт, написанный Mnemonix, который автоматизирует этот процесс размола SID, он решительно сокращает время, трубующееся хакеру на подбор информации.
На данном этапе хакер знает какие услуги выполняются на удаленной машине, какие главные пакеты программ были установлены (в некоторых пределах), и имеет список правильных имён пользователей и групп для данной машины. Хотя это может походить на тонну информации для постороннего, чтобы иметь её относительно вашей сети, нулевой сеанс IPC открыл другие способы сбора информации. Группа Rhino9 разработала полную политику защиты для удаленной машины. Такие вещи, как блокировка аккаунта, минимальная длина пароля, возраст пароля, уникальность пароля для каждого пользователя и группы, которой он принадлежит, и индивидуальные ограничения домена для данного пользователя - все через нулевой сеанс IPC. Некоторые из доступных инструментальных средств для сбора большего количества информации через нулевой сеанс IPC, будут обсуждены ниже.
При помощи нулевого сеанса IPC хакер может также получить список сетевых ресурсов, которые не могут иначе быть доступны. По очевидным причинам, хакер хотел бы знать то, какие сетевые ресурсы Вы имеете доступными на ваших машинах. Для сбора такой информации используется стандартная сетевая команда следующим образом:
c:>net view \[IP-адрес целевой машины]
В зависимости от политики защиты целевой машины, этот список может или не может быть отклонен. Пример ниже (ip-адрес не был указан по очевидным причинам):
C:>net view \0.0.0.0
System error 5 has occurred.
В доступе отказано.
C:>net use \0.0.0.0ipc$ "" /user:""
The command completed successfully.
C:>net view \0.0.0.0
Shared resources at \0.0.0.0
Share name Type Used as Comment
-------------------------------------------------------------------------------
Accelerator Disk Agent Accelerator share for Seagate backup
Inetpub Disk
mirc Disk
NETLOGON Disk Logon server share
www_pages Disk
Команда выполнилась успешно.
Как Вы можете видеть, список ресурсов на этом сервере не был доступен, пока не был установлен нулевой сеанс IPC. Теперь вы начинаете понимать, насколько может быть опасно это подключение IPC, но методы IPC, известные нам, фактически самые основные. Возможности, предоставленные ресурсом IPC, только начинают исследоваться.
Выпуск WindowsNT 4.0 Resource Kit предоставил новый набор инструментальных средств, доступных и администратору, и хакеру. Ниже - описание некоторых из Resource Kit Utilities, которые группа Rhino9 использовала вместе с нулевым сеансом IPC$ для сбора информации. Читая эти описания инструментов и информацию, которую они выдают, имейте в виду, что нулевой сеанс, который используется, НЕ обеспечивает удалённую сеть любой реальной аутентификацией.
UsrStat: эта утилита командной строки показывает имя пользователя, полное имя, и дату и время последнего входа в систему для каждого пользователя в данном домене. Ниже - фактический результат работы данного инструмента, используемого через нулевой сеанс IPC против удалённой сети:
C:NTRESKIT>usrstat domain4
Users at \STUDENT4
Administrator - - logon: Tue Nov 17 08:15:25 1998
Guest - - logon: Mon Nov 16 12:54:04 1998
IUSR_STUDENT4 - Internet Guest Account - logon: Mon Nov 16 15:19:26 1998
IWAM_STUDENT4 - Web Application Manager account - logon: Never
laurel - - logon: Never
megan - - logon: Never
Чтобы полностью понять, что происходит при сборе данных, давайте обсудим это. Прежде, чем фактическое нападение имело место, отображение было помещено в файл lmhosts, который отобразил Student4 машину, и это - состояние деятельности домена, используя #PRE/#DOM теги (объяснены более подробно ниже.). Вход был тогда предзагружен в NetBIOS кэш, и нулевой сеанс IPC был установлен. Как Вы можете видеть, команда запущена против имени домена. Инструмент тогда сделает запрос Первичного Контроллера Домена для данного домена.
Global: эта утилита командной строки отображает членов глобальных групп на удаленных серверах или доменах. Как сказано выше, эта утилита используется вместе с отображением Lmhosts/IPC. Ниже - фактический сбор данных данного инструмента. Например, "пользователи домена" - стандартная, заданная по умолчанию группа, присутствующая в WindowsNT домене. Для этого примера, мы использовали инструмент, чтобы сделать запрос Domain1 для листинга всех пользователей в группе "пользователи домена".
C:>global "Domain Users" domain1
Bob
SPUPPY$
BILLY BOB$
Bill
IUSR_BILLY BOB
IWAM_BILLY BOB
IUSR_SPUPPY
IWAM_SPUPPY
Local: этот инструмент делает то же, что и Global, но он делает запрос машины на членов локальной группы вместо глобальной. Ниже - пример работы данного инструмента:
C:>local "administrators" domain1
Bob
Domain Admins
Bill
NetDom: инструмент, который сделает запрос сервера о его роли в домене, а также на PDC машины. Этот инструмент также работает с отображением Lmhosts/IPC. Ниже - стандартный вывод данного инструмента:
Querying domain information on computer \SPUPPY ...
The computer \SPUPPY is a domain controller of DOMAIN4.
Searching PDC for domain DOMAIN4 ...
Found PDC \SPUPPY
The computer \SPUPPY is the PDC of DOMAIN4.
NetWatch: инструмент, выдающий список ресурсов на удаленной машине. Опять же, этот инструмент работает с отображением Lmhosts/IPC. Плохая вещь относительно этого инструмента состоит в том, что группа Rhino9 имеет обыкновение использовать его для поиска списка скрытых ресурсов на удаленной машине.
Пустое подключение IPC может позволить хакеру получить доступ к вашему системному реестру. Как только нулевой сеанс IPC был установлен, хакер запустит его локальную утилиту regedit и сделает попытку опции Connect Network Registry. Если это произойдёт успешно, хакер получит доступ для чтения на некоторые ключи и потенциально - на чтением/запись. Но даже доступ для чтения к системному реестру нежелателен с точки зрения защиты.
Другая методика относительно неизвестна и часто не приносит никаких результатов. Мы охватываем её потому что она всё же может давать результаты, и может быть эффективной методикой вторжения. Эта методика включает нулевой сеанс IPC и входы в LMHOSTS файл. LMHOSTS файл - (обычно) локальный файл, живущий на Windows-машинах, для отображения имён NetBIOS в адреса IP. Используемый главным образом в не-WINS средах, или на клиентах, неспособных использовать WINS, файл LMHOSTS может использоваться хакерами многими различными способами. Различные использования для файла LMHOSTS будут обсуждены позже в этом тексте, пока мы обсудим, как LMHOSTS файл используется в этой методике.
Это превосходная методика для обсуждения, потому что она показывает использование одного из предыдущих методов вместе с ней для выполнения цели. Начиная со сканирования портов, и обнаруживая, что порт 139 является открытым, хакер запускает команду nbtstat. Потом хакер подбирает имя NetBIOS удаленной машины по результатам nbtstat. Давайте посмотрим на такой же пример результатов работы nbtstat, как и выше:
C:>nbtstat -A x.x.x.x
NetBIOS Remote Machine Name Table
Name Type Status
-----------------------------------------------------------------
DATARAT <00> UNIQUE Registered
R9LABS <00> GROUP Registered
DATARAT <20> UNIQUE Registered
DATARAT <03> UNIQUE Registered
GHOST <03> UNIQUE Registered
DATARAT <01> UNIQUE Registered
MAC Address = 00-00-00-00-00-00
Исследуя результаты команды nbtstat, мы ищем идентификатор <03>. Если кто-то локально находится в машине, Вы будете видеть два <03> идентификатора. Обычно первый <03> - имя netbios машины, а второй <03> - имя локального пользователя. На данном этапе хакер поместил бы имя netbios и отображение адреса ip машины в его локальный LMHOSTS файл, закончив его тегами #DOM и #PRE. Тег #PRE обозначает, что вход должен быть предзагружен в netbios кэш. Тег #DOM обозначает деятельность домена. Теперь хакер запускает команду nbtstat -R чтобы произвести предзагрузку входа в его кэш.
Затем хакер устанавливает нулевой сеанс IPC. Как только нулевой сеанс IPC будет установлен, хакер запустит его локальную копию Менеджера Пользователя для доменов и использует функцию Select Domain в Менеджере Пользователя. Домен удаленной машины появится (или может быть напечатан вручную) потому что он был предзагружен в кэш. Если защита удаленной машины слаба, Менеджер Пользователя отобразит список всех пользователей на удаленной машине. Если это делается по медленной связи (то есть 28.8-модем) это не будет обычно работать. На более быстрых сетевых подключениях, однако, это имеет тенденцию давать результаты.
Теперь, когда хакер собрал некоторую информацию относительно вашей машины, следующим шагом будет попытка проникновения. Первый метод проникновения, который будет обсуждён, будет нападение на ресурс открытого файла. Хакер соединит предварительно обсужденную команду net view с командой net use для выполнения данной атаки.
Взяв net view выше, давайте обсудим атаку.
C:>net view \0.0.0.0
Shared resources at \0.0.0.0
Share name Type Used as Comment
-------------------------------------------------------------------------------
Accelerator Disk Agent Accelerator share for Seagate backup
Inetpub Disk
mirc Disk
NETLOGON Disk Logon server share
www_pages Disk
The command completed successfully.
Как только хакер имеет список удаленных ресурсов, он попытается подсоединиться к удаленному ресурсу. Пример команды для атаки был бы:
c:>net use x: \0.0.0.0inetpub
Это нападение будет работать только если ресурс не защищён паролем, или разделён между каждой группой (ПРИМЕЧАНИЕ: "каждой" означает именно "каждой". То есть, если кто-то соединяется нулевым сеансом, он теперь - часть каждой группы.). Если эти параметры имеют место, хакер способен подключить сетевой диск к вашей машине и начать проникновение. Имейте в виду, что хакер не ограничен только лишь соединением с дисковыми ресурсами. Хакер, знающий NT, знает, что NT имеет скрытые административные ресурсы. По умолчанию, NT создает ресурс IPC$ и один скрытый ресурс для каждого диска на машине (то есть машина, которая имеет диски C, D, и E имеет соответствующие скрытые ресурсы C$, D$, и E$). Имеется также скрытый ADMIN$ ресурс, который указывает непосредственно на инсталляционный путь NT (то есть, если Вы установили NT на C:winnt, то ADMIN$ указывает точно на эту часть диска). Одна вещь, которую группа Rhino9 заметила относительно большинства NT сообщества защиты, состоит в том, что они, кажется, забыли о концепции проникновения через одну внутреннюю NT машину в другую внутреннюю NT машину. Группа Rhino9, в течение наших профессиональных ревизий, выполнила эту задачу много раз. Если хакер умён и имеет доступ к одной из ваших машин, он может написать саморазмножающийся вирус и пустить его в остальную часть вашей сети. По этой причине, эти нападения могут представлять серьезную угрозу.
(Обратите внимание, с группой Rhino9 однажды входили в контакт, чтобы выполнить удаленную ревизию проникновения для одного самого большого ISP во Флориде. Мы получили доступ к ресурсу на одной из персональных машин техника, и оттуда получили доступ к полной сети. Это может быть сделано.)
Сначала, может быть, не видно опасности от кого-то, кто имеет доступ к вашему жесткому диску. Но доступ к жесткому диску открывает новые направления для сбора информации и установки трояна/вируса. Хакер обычно ищет кое-что, что могло бы содержать пароль или важные данные, что он мог бы использовать, чтобы продолжть рыть путь в вашу сеть. Некоторые из файлов, которые хакер будет искать и использовать, перечислены ниже, каждый с кратким описанием, чем это является, и как это можно использовать.
Eudora.ini: этот файл используется для хранения информации о конфигурации программного обеспечения для e-mail Eudora. Легко доступный инструмент, называемый eudpass.com, извлечет имя пользователя и информацию пароля, также как всю информацию, необходимую хакеру для подслушивания почты пользователей. Теперь хакер может сконфигурировать его собственное программное обеспечение для электронной почты, чтобы читать почту адресатов. Помните, что люди - существа привычки. Шансы, что пароль пользователя электронной почты является тем же самым паролем, который он использует для входа в сеть на работе, относительно высоки.
Tree.dat: это файл, который используется популярным программным обеспечением CuteFTP для хранения комбинации пользователей ftp site/username/password. Используя программу по имени FireFTP, хакер может легко взломать tree.dat файл. Как уже говорилось выше, хакер может продолжить сбор информации относительно Вас и начать атаку.
PWL: эти файлы проживают на Win95-машинах. Они используются, чтобы хранить определенные пароли для Windows95 конечного пользователя. Инструмент, называемый glide.exe взломает (с меньшей, чем хотелось бы эффективностью) PWL файлы. Имеется также документация о том, как вручную взломать кодирование этих PWL файлов, используя калькулятор. Продолжая сценарий, хакер продолжит собирать информацию относительно пользователя и формулировать нападение.
PWD: PWD файлы существуют на машинах, выполняющих FrontPage или Персональный Webserver. Эти файлы включают имя пользователя открытым текстом и зашифрованный пароль, соответствующий аутентификации, необходимой, чтобы управлять website. Схема кодирования, используемая для этих паролей - стандартная DES-схема. Для взламывания DES существует много утилит, например John the ripper.
WS_FTP.ini: этот ini файл существует на машинах, использующих ws_ftp. Хотя автоматизированное эксустройство подачи пароля для этого файла только недавно было представлено в сообщество защиты, используемый механизм кодирования не очень силен. Пароль преобразован в шестнадцатиричный формат. Если цифра - в позиции N, то N добавлен к цифре. Полностью измените процесс, и Вы взломали эту схему кодирования. (Это, как известно, иногда работает для взламывания PMail.ini - Pegasus Mail и Prefs.js - Netscape.)
IDC files: IDC файлы обычно используются для связности конца к базам данных от webserver. Потому как этот тип подключения вообще требует идентификации, некоторые IDC файлы содержат комбинации имени пользователя/пароля, часто открытым текстом.
Waruser.dat: это один из файлов конфигурации для WarFTP, популярного Win32 FTP сервера. Этот специфический dat файл может содержать административный пароль непосредственно для FTP сервера.
$winnt$.inf: В течение автоматической инсталляции WindowsNT, процесс установки тр
Автор: группа Rhino9 (http://rhino9.ml.org/
Русский перевод - AnSer (http://anser.webjump.com/ fycth@iname.com).
Введение
Этот документ - попытка группы Rhino9 документировать технику и методы, используемые в нападении на основанные на WindowsNT сети. Цель данного документа состоит в том, чтобы научить администраторов и профессионалов защиты способам проникновения в NT-сети. Этот документ пытается следовать шагам классического текста "Как улучшить защиту вашего сайта вторжением в него" , который написали Dan Farmer и Wietse Venema.
Конечно, этот текст не будет содержать все известные методы вторжения в NT. Мы попытались собрать текст, который Администраторы могли бы использовать для изучения основных методов проникновения, чтобы проверить уязвимость их собственных сетей. Администратор должен иметь хорошие знания относительно того, как проникновения происходят и должен быть способен использовать эти знания чтобы далее защитить свою сеть.
Этот файл не предназначен для людей, которые плохо знакомы с защитой или технологиями организации сетей. Авторы предполагают, что люди, читающие этот документ, имеют некоторое понимание протоколов, технологий и архитектуры сервера и сети.
Использование
Текст написан в процедурной манере. Мы очень подробно всё описали, чтобы подойти как можно ближе к реальному вторжению. Большинство методов, обсуждаемых в этом тексте, довольно просто выполнить, как только наступит понимание того, как, что и почему делается.
Документ разделен на 3 части: NetBIOS, WebServer, и Разное, каждая из которых описывает различные методы сбора информации и методов проникновения.
Часть 1 - "NETBIOS"
Начальный шаг, который делает хакер, это сканирование портов целевой машины или сети. Удивительно, как техника атаки может стать основанной на открытых портах целевой машины. Вы должны понять, что это норма для NT-машины, - иметь различные открытые порты с Unix-машиной. Как правило хакер может по результатам сканирования портов сказать, является ли компьютер NT- или Unix-машиной с довольно точными результатами. Очевидно имеются некоторые исключения из данного правила, но вообще это может быть сделано.
При нападении на NT-сеть, NetBIOS имеет тенденцию брать главный удар на себя. По этой причине, NetBIOS будет первой серьезной темой для обсуждения.
Сбор информации с NetBIOS может быть довольно простой вещью, хотя и занимает некоторое время. NetBIOS вообще имеет тенденцию быть очень медленным, поэтому и требует много времени.
Если при сканировании портов выясняется, что на целевой машине порт 139 открыт, следует естественный процесс. Первый шаг - выполнение команды NBTSTAT.
Команда NBTSTAT может использоваться, чтобы сделать запрос сетевых машин относительно NetBIOS информации. Это может также быть полезно для чистки NetBIOS кэша и предзагрузки файла LMHOSTS. Эта команда может быть чрезвычайно полезна при выполнении ревизий защиты. Результаты её выполнения могут иной раз показать больше, чем вы могли бы подумать.
Использование: nbtstat [-a компьютер] [-A IP-адрес] [-c] [-n] [-R] [-r] [-S] [-s] [интервал]
Ключи:
-a вывести таблицу имён удаленного компьютера по имени.
-A вывести таблицу имён удаленного компьютера по IP-адресу.
-c вывести кэш имён, включая адреса IP.
-n вывести локальные имена NetBIOS.
-r вывести имена, найденные передачей и через WINS.
-R произвести чистку и кэш таблицы имён.
-S вывести таблицу сеансов с целевым адресом IP.
-s вывести преобразования таблицы сеансов.
Заголовки столбца, произведенные NBTSTAT имеют следующие значения:
Input
Число полученных байт.
Output
Число отосланных байт.
In/Out
Подключение от локального компьютера или от другой системы к
локальному компьютеру.
Life
Остающееся время до того, как ваш компьютер очистит кэш таблицы имён.
Local Name
Локальное NetBIOS имя, данное подключению.
Remote Host
Имя или адрес IP удаленного главного компьютера.
Type
Имя может иметь один из двух типов: уникальный или группа.
Последний байт из 16-символьного имени NetBIOS часто означает кое-что потому что то же самое имя может присутствовать в нескольких экземплярах на том же самом компьютере. Это показывает последний байт имени, преобразованный в hex-формат.
State
Ваши NetBIOS подключения будут находиться в одном из следующих "состояний":
Состояние
Значение
Accepting
входящее подключение находится в процессе
Associated
подключение находится в конечной точке и ваш компьютер связал его с адресом IP.
Connected
это хорошее состояние! Оно означает, что вы связаны с удаленным ресурсом
Connecting
ваш сеанс пробует решить преобразование имени в IP-адрес ресурса адресата
Disconnected
сеанс связи закончен
Disconnecting
ваш компьютер запросил разъединение, и ожидает ответа от удаленного компьютера
Idle
компьютер был открыт в текущем сеансе, но в настоящее время он не принимает подключения
Inbound
входящий сеанс пробует соединиться
Listening
компьютер доступен
Outbound
ваш сеанс создает подключение TCP
Reconnecting
если ваше подключение потерпело неудачу на первой попытке, это состояние показывает попытку повторного соединения
Имеется образец фактического ответа команды NBTSTAT:
C:>nbtstat -A x.x.x.x
NetBIOS Remote Machine Name Table
Name Type Status
---------------------------------------------
DATARAT <00> UNIQUE Registered
R9LABS <00> GROUP Registered
DATARAT <20> UNIQUE Registered
DATARAT <03> UNIQUE Registered
GHOST <03> UNIQUE Registered
DATARAT <01> UNIQUE Registered
MAC Address = 00-00-00-00-00-00
Используя таблицу ниже, что вы можете сказать о компьютере ?
Name Number Type Usage
=========================================================================
<computername> 00 U Workstation Service
<computername> 01 U Messenger Service
<\_MSBROWSE_> 01 G Master Browser
<computername> 03 U Messenger Service
<computername> 06 U RAS Server Service
<computername> 1F U NetDDE Service
<computername> 20 U File Server Service
<computername> 21 U RAS Client Service
<computername> 22 U Exchange Interchange
<computername> 23 U Exchange Store
<computername> 24 U Exchange Directory
<computername> 30 U Modem Sharing Server Service
<computername> 31 U Modem Sharing Client Service
<computername> 43 U SMS Client Remote Control
<computername> 44 U SMS Admin Remote Control Tool
<computername> 45 U SMS Client Remote Chat
<computername> 46 U SMS Client Remote Transfer
<computername> 4C U DEC Pathworks TCPIP Service
<computername> 52 U DEC Pathworks TCPIP Service
<computername> 87 U Exchange MTA
<computername> 6A U Exchange IMC
<computername> BE U Network Monitor Agent
<computername> BF U Network Monitor Apps
<username> 03 U Messenger Service
<domain> 00 G Domain Name
<domain> 1B U Domain Master Browser
<domain> 1C G Domain Controllers
<domain> 1D U Master Browser
<domain> 1E G Browser Service Elections
<INet~Services> 1C G Internet Information Server
<IS~Computer_name> 00 U Internet Information Server
<computername> [2B] U Lotus Notes Server
IRISMULTICAST [2F] G Lotus Notes
IRISNAMESERVER [33] G Lotus Notes
Forte_$ND800ZA [20] U DCA Irmalan Gateway Service
Unique (U): имя может иметь только один адрес IP, назначенный для него. Может показаться, что на сетевом устройстве присутствуют многократные случаи одного и того же имени, но суффикс будет уникален, делая имя также полностью уникальным.
Group (G): нормальная группа; одиночное имя может существовать со многими адресами IP.
Multihomed (M): имя уникально, но из-за множественных сетевых интерфейсов на одном и том же компьютере, эта конфигурация необходима чтобы разрешить регистрацию. Максимальное число адресов - 25.
Internet Groupt (I): это специальная конфигурация имени группы, используемая для управления WinNT именами домена.
Domain Name (D): Новый в NT 4.0.
Хакер может использовать таблицу выше и результат от nbtstat против ваших машин, чтобы начать собирать информацию относительно их. По этой информации хакер может сказать, какие услуги выполняются на целевой машине и иногда, какие пакеты программ были установлены. Традиционно, каждый сервисный или главный пакет программ идет со своими ошибками, так что этот тип информации полезен для хакера.
Следующим логическим шагом был бы подбор возможных имён пользователей удаленной машины. Сетевой вход в систему состоит из двух частей - имени пользователя и пароля. Как только хакер имеет правильный список имен пользователей, он имеет половину из нескольких правильных входов в систему. Теперь, используя команду nbtstat, хакер может получить входное имя любого, кто подключён локально к данной машине. В результатах команды nbtstat, строки с идентификатором <03> - имена пользователей или имена компьютеров. Подбор имён пользователей может также быть выполнен через нулевой сеанс IPC и инструментальные средства SID (для получения дополнительной информации относительно инструментальных средств SID читать приложение
IPC$ (меж-процессовая связь) - стандартный скрытый ресурс на NT машине, которая главным образом используется для связи сервер-сервер. NT машины были разработаны для соединений друг с другом и получения различных типов необходимой информации через этот ресурс. Как и со многими особенностями проекта в любой операционной системе, хакеры научились использовать эту особенность в их собственных целях. Соединяясь с этим ресурсом хакер получает, для всех технических целей, допустимое подключение к вашему серверу. Соединяясь с этим ресурсом как нулевое соединение, хакер способен установить подключение без необходимой аутентификации.
Чтобы соединиться с ресурсом IPC$ как нулевое соединение, хакер выполняет следующую команду:
c:>net use \[ip address of target machine]ipc$ "" /user:""
Если подключение успешно, хакер может делать множество других вещей, кроме как подбор имён пользователей, но давайте сначала поговорим именно об этом. Как упомянуто ранее, эта методика требует нулевого сеанса IPC и инструментальных средств SID, которые написал Evgenii Rudnyi. Инструментальные средства SID состоят из двух различных частей, User2sid и Sid2user. User2sid будет брать имя аккаунта или группы и давать Вам соответствующий SID. Sid2user будет брать SID и давать Вам имя соответствующего пользователя или группы. Как автономный инструмент, это - процесс ручной и очень требует время. Userlist.pl - perl скрипт, написанный Mnemonix, который автоматизирует этот процесс размола SID, он решительно сокращает время, трубующееся хакеру на подбор информации.
На данном этапе хакер знает какие услуги выполняются на удаленной машине, какие главные пакеты программ были установлены (в некоторых пределах), и имеет список правильных имён пользователей и групп для данной машины. Хотя это может походить на тонну информации для постороннего, чтобы иметь её относительно вашей сети, нулевой сеанс IPC открыл другие способы сбора информации. Группа Rhino9 разработала полную политику защиты для удаленной машины. Такие вещи, как блокировка аккаунта, минимальная длина пароля, возраст пароля, уникальность пароля для каждого пользователя и группы, которой он принадлежит, и индивидуальные ограничения домена для данного пользователя - все через нулевой сеанс IPC. Некоторые из доступных инструментальных средств для сбора большего количества информации через нулевой сеанс IPC, будут обсуждены ниже.
При помощи нулевого сеанса IPC хакер может также получить список сетевых ресурсов, которые не могут иначе быть доступны. По очевидным причинам, хакер хотел бы знать то, какие сетевые ресурсы Вы имеете доступными на ваших машинах. Для сбора такой информации используется стандартная сетевая команда следующим образом:
c:>net view \[IP-адрес целевой машины]
В зависимости от политики защиты целевой машины, этот список может или не может быть отклонен. Пример ниже (ip-адрес не был указан по очевидным причинам):
C:>net view \0.0.0.0
System error 5 has occurred.
В доступе отказано.
C:>net use \0.0.0.0ipc$ "" /user:""
The command completed successfully.
C:>net view \0.0.0.0
Shared resources at \0.0.0.0
Share name Type Used as Comment
-------------------------------------------------------------------------------
Accelerator Disk Agent Accelerator share for Seagate backup
Inetpub Disk
mirc Disk
NETLOGON Disk Logon server share
www_pages Disk
Команда выполнилась успешно.
Как Вы можете видеть, список ресурсов на этом сервере не был доступен, пока не был установлен нулевой сеанс IPC. Теперь вы начинаете понимать, насколько может быть опасно это подключение IPC, но методы IPC, известные нам, фактически самые основные. Возможности, предоставленные ресурсом IPC, только начинают исследоваться.
Выпуск WindowsNT 4.0 Resource Kit предоставил новый набор инструментальных средств, доступных и администратору, и хакеру. Ниже - описание некоторых из Resource Kit Utilities, которые группа Rhino9 использовала вместе с нулевым сеансом IPC$ для сбора информации. Читая эти описания инструментов и информацию, которую они выдают, имейте в виду, что нулевой сеанс, который используется, НЕ обеспечивает удалённую сеть любой реальной аутентификацией.
UsrStat: эта утилита командной строки показывает имя пользователя, полное имя, и дату и время последнего входа в систему для каждого пользователя в данном домене. Ниже - фактический результат работы данного инструмента, используемого через нулевой сеанс IPC против удалённой сети:
C:NTRESKIT>usrstat domain4
Users at \STUDENT4
Administrator - - logon: Tue Nov 17 08:15:25 1998
Guest - - logon: Mon Nov 16 12:54:04 1998
IUSR_STUDENT4 - Internet Guest Account - logon: Mon Nov 16 15:19:26 1998
IWAM_STUDENT4 - Web Application Manager account - logon: Never
laurel - - logon: Never
megan - - logon: Never
Чтобы полностью понять, что происходит при сборе данных, давайте обсудим это. Прежде, чем фактическое нападение имело место, отображение было помещено в файл lmhosts, который отобразил Student4 машину, и это - состояние деятельности домена, используя #PRE/#DOM теги (объяснены более подробно ниже.). Вход был тогда предзагружен в NetBIOS кэш, и нулевой сеанс IPC был установлен. Как Вы можете видеть, команда запущена против имени домена. Инструмент тогда сделает запрос Первичного Контроллера Домена для данного домена.
Global: эта утилита командной строки отображает членов глобальных групп на удаленных серверах или доменах. Как сказано выше, эта утилита используется вместе с отображением Lmhosts/IPC. Ниже - фактический сбор данных данного инструмента. Например, "пользователи домена" - стандартная, заданная по умолчанию группа, присутствующая в WindowsNT домене. Для этого примера, мы использовали инструмент, чтобы сделать запрос Domain1 для листинга всех пользователей в группе "пользователи домена".
C:>global "Domain Users" domain1
Bob
SPUPPY$
BILLY BOB$
Bill
IUSR_BILLY BOB
IWAM_BILLY BOB
IUSR_SPUPPY
IWAM_SPUPPY
Local: этот инструмент делает то же, что и Global, но он делает запрос машины на членов локальной группы вместо глобальной. Ниже - пример работы данного инструмента:
C:>local "administrators" domain1
Bob
Domain Admins
Bill
NetDom: инструмент, который сделает запрос сервера о его роли в домене, а также на PDC машины. Этот инструмент также работает с отображением Lmhosts/IPC. Ниже - стандартный вывод данного инструмента:
Querying domain information on computer \SPUPPY ...
The computer \SPUPPY is a domain controller of DOMAIN4.
Searching PDC for domain DOMAIN4 ...
Found PDC \SPUPPY
The computer \SPUPPY is the PDC of DOMAIN4.
NetWatch: инструмент, выдающий список ресурсов на удаленной машине. Опять же, этот инструмент работает с отображением Lmhosts/IPC. Плохая вещь относительно этого инструмента состоит в том, что группа Rhino9 имеет обыкновение использовать его для поиска списка скрытых ресурсов на удаленной машине.
Пустое подключение IPC может позволить хакеру получить доступ к вашему системному реестру. Как только нулевой сеанс IPC был установлен, хакер запустит его локальную утилиту regedit и сделает попытку опции Connect Network Registry. Если это произойдёт успешно, хакер получит доступ для чтения на некоторые ключи и потенциально - на чтением/запись. Но даже доступ для чтения к системному реестру нежелателен с точки зрения защиты.
Другая методика относительно неизвестна и часто не приносит никаких результатов. Мы охватываем её потому что она всё же может давать результаты, и может быть эффективной методикой вторжения. Эта методика включает нулевой сеанс IPC и входы в LMHOSTS файл. LMHOSTS файл - (обычно) локальный файл, живущий на Windows-машинах, для отображения имён NetBIOS в адреса IP. Используемый главным образом в не-WINS средах, или на клиентах, неспособных использовать WINS, файл LMHOSTS может использоваться хакерами многими различными способами. Различные использования для файла LMHOSTS будут обсуждены позже в этом тексте, пока мы обсудим, как LMHOSTS файл используется в этой методике.
Это превосходная методика для обсуждения, потому что она показывает использование одного из предыдущих методов вместе с ней для выполнения цели. Начиная со сканирования портов, и обнаруживая, что порт 139 является открытым, хакер запускает команду nbtstat. Потом хакер подбирает имя NetBIOS удаленной машины по результатам nbtstat. Давайте посмотрим на такой же пример результатов работы nbtstat, как и выше:
C:>nbtstat -A x.x.x.x
NetBIOS Remote Machine Name Table
Name Type Status
-----------------------------------------------------------------
DATARAT <00> UNIQUE Registered
R9LABS <00> GROUP Registered
DATARAT <20> UNIQUE Registered
DATARAT <03> UNIQUE Registered
GHOST <03> UNIQUE Registered
DATARAT <01> UNIQUE Registered
MAC Address = 00-00-00-00-00-00
Исследуя результаты команды nbtstat, мы ищем идентификатор <03>. Если кто-то локально находится в машине, Вы будете видеть два <03> идентификатора. Обычно первый <03> - имя netbios машины, а второй <03> - имя локального пользователя. На данном этапе хакер поместил бы имя netbios и отображение адреса ip машины в его локальный LMHOSTS файл, закончив его тегами #DOM и #PRE. Тег #PRE обозначает, что вход должен быть предзагружен в netbios кэш. Тег #DOM обозначает деятельность домена. Теперь хакер запускает команду nbtstat -R чтобы произвести предзагрузку входа в его кэш.
Затем хакер устанавливает нулевой сеанс IPC. Как только нулевой сеанс IPC будет установлен, хакер запустит его локальную копию Менеджера Пользователя для доменов и использует функцию Select Domain в Менеджере Пользователя. Домен удаленной машины появится (или может быть напечатан вручную) потому что он был предзагружен в кэш. Если защита удаленной машины слаба, Менеджер Пользователя отобразит список всех пользователей на удаленной машине. Если это делается по медленной связи (то есть 28.8-модем) это не будет обычно работать. На более быстрых сетевых подключениях, однако, это имеет тенденцию давать результаты.
Теперь, когда хакер собрал некоторую информацию относительно вашей машины, следующим шагом будет попытка проникновения. Первый метод проникновения, который будет обсуждён, будет нападение на ресурс открытого файла. Хакер соединит предварительно обсужденную команду net view с командой net use для выполнения данной атаки.
Взяв net view выше, давайте обсудим атаку.
C:>net view \0.0.0.0
Shared resources at \0.0.0.0
Share name Type Used as Comment
-------------------------------------------------------------------------------
Accelerator Disk Agent Accelerator share for Seagate backup
Inetpub Disk
mirc Disk
NETLOGON Disk Logon server share
www_pages Disk
The command completed successfully.
Как только хакер имеет список удаленных ресурсов, он попытается подсоединиться к удаленному ресурсу. Пример команды для атаки был бы:
c:>net use x: \0.0.0.0inetpub
Это нападение будет работать только если ресурс не защищён паролем, или разделён между каждой группой (ПРИМЕЧАНИЕ: "каждой" означает именно "каждой". То есть, если кто-то соединяется нулевым сеансом, он теперь - часть каждой группы.). Если эти параметры имеют место, хакер способен подключить сетевой диск к вашей машине и начать проникновение. Имейте в виду, что хакер не ограничен только лишь соединением с дисковыми ресурсами. Хакер, знающий NT, знает, что NT имеет скрытые административные ресурсы. По умолчанию, NT создает ресурс IPC$ и один скрытый ресурс для каждого диска на машине (то есть машина, которая имеет диски C, D, и E имеет соответствующие скрытые ресурсы C$, D$, и E$). Имеется также скрытый ADMIN$ ресурс, который указывает непосредственно на инсталляционный путь NT (то есть, если Вы установили NT на C:winnt, то ADMIN$ указывает точно на эту часть диска). Одна вещь, которую группа Rhino9 заметила относительно большинства NT сообщества защиты, состоит в том, что они, кажется, забыли о концепции проникновения через одну внутреннюю NT машину в другую внутреннюю NT машину. Группа Rhino9, в течение наших профессиональных ревизий, выполнила эту задачу много раз. Если хакер умён и имеет доступ к одной из ваших машин, он может написать саморазмножающийся вирус и пустить его в остальную часть вашей сети. По этой причине, эти нападения могут представлять серьезную угрозу.
(Обратите внимание, с группой Rhino9 однажды входили в контакт, чтобы выполнить удаленную ревизию проникновения для одного самого большого ISP во Флориде. Мы получили доступ к ресурсу на одной из персональных машин техника, и оттуда получили доступ к полной сети. Это может быть сделано.)
Сначала, может быть, не видно опасности от кого-то, кто имеет доступ к вашему жесткому диску. Но доступ к жесткому диску открывает новые направления для сбора информации и установки трояна/вируса. Хакер обычно ищет кое-что, что могло бы содержать пароль или важные данные, что он мог бы использовать, чтобы продолжть рыть путь в вашу сеть. Некоторые из файлов, которые хакер будет искать и использовать, перечислены ниже, каждый с кратким описанием, чем это является, и как это можно использовать.
Eudora.ini: этот файл используется для хранения информации о конфигурации программного обеспечения для e-mail Eudora. Легко доступный инструмент, называемый eudpass.com, извлечет имя пользователя и информацию пароля, также как всю информацию, необходимую хакеру для подслушивания почты пользователей. Теперь хакер может сконфигурировать его собственное программное обеспечение для электронной почты, чтобы читать почту адресатов. Помните, что люди - существа привычки. Шансы, что пароль пользователя электронной почты является тем же самым паролем, который он использует для входа в сеть на работе, относительно высоки.
Tree.dat: это файл, который используется популярным программным обеспечением CuteFTP для хранения комбинации пользователей ftp site/username/password. Используя программу по имени FireFTP, хакер может легко взломать tree.dat файл. Как уже говорилось выше, хакер может продолжить сбор информации относительно Вас и начать атаку.
PWL: эти файлы проживают на Win95-машинах. Они используются, чтобы хранить определенные пароли для Windows95 конечного пользователя. Инструмент, называемый glide.exe взломает (с меньшей, чем хотелось бы эффективностью) PWL файлы. Имеется также документация о том, как вручную взломать кодирование этих PWL файлов, используя калькулятор. Продолжая сценарий, хакер продолжит собирать информацию относительно пользователя и формулировать нападение.
PWD: PWD файлы существуют на машинах, выполняющих FrontPage или Персональный Webserver. Эти файлы включают имя пользователя открытым текстом и зашифрованный пароль, соответствующий аутентификации, необходимой, чтобы управлять website. Схема кодирования, используемая для этих паролей - стандартная DES-схема. Для взламывания DES существует много утилит, например John the ripper.
WS_FTP.ini: этот ini файл существует на машинах, использующих ws_ftp. Хотя автоматизированное эксустройство подачи пароля для этого файла только недавно было представлено в сообщество защиты, используемый механизм кодирования не очень силен. Пароль преобразован в шестнадцатиричный формат. Если цифра - в позиции N, то N добавлен к цифре. Полностью измените процесс, и Вы взломали эту схему кодирования. (Это, как известно, иногда работает для взламывания PMail.ini - Pegasus Mail и Prefs.js - Netscape.)
IDC files: IDC файлы обычно используются для связности конца к базам данных от webserver. Потому как этот тип подключения вообще требует идентификации, некоторые IDC файлы содержат комбинации имени пользователя/пароля, часто открытым текстом.
Waruser.dat: это один из файлов конфигурации для WarFTP, популярного Win32 FTP сервера. Этот специфический dat файл может содержать административный пароль непосредственно для FTP сервера.
$winnt$.inf: В течение автоматической инсталляции WindowsNT, процесс установки тр