Средства ревизии Windows
В рассказе Конан Дойля "Долина страха" Шерлок Холмс бранит полицейского инспектора: "Широта кругозора - одно из главных требований в нашей профессии. Взаимосвязь идей и косвенное использование знаний зачастую бывает невероятно интересным". В этой лекции мы надеемся продемонстрировать, как коллекционирование знаний об удаленном компьютере может быть использовано в личных целях. Меньше всего вам понравится создавать список пользователей, которые имеют интерактивный доступ к исследуемой системе; но можно получить и большое количество другой информации. Какие использованы (или не использованы) исправления в системе? Подбор пароля один из старейших, наиболее часто используемых методов атаки системы, но блокирует ли система вход после нескольких последовательных вводов неправильного пароля?
Знания об удаленной системе помогут вам сделать предположения о возможной уязвимости системы. В других случаях области коллективного доступа со значимой информацией могут быть сконфигурированы для анонимного доступа. Вам необходимо искать исчерпывающую информацию, превосходящую данные сканирования портов.
Большинство информации о Windows может быть получено из области общего пользования IPC$ (InterProcess Communications), по умолчанию - область общего доступа в системах Windows NT, 2000 и XP. Она поддерживает взаимодействие между приложениями в рамках одной системы или между удаленными системами. Для поддержки распределенного доступа и доменной среды IPC$ содержит много системной и пользовательской информации, необходимой для обслуживания их запросов.
Наиболее распространенный вид соединения - NULL -соединение или анонимное, которое может быть установлено вручную с использованием команды net:
C:\>net use \\target\ipc$ " " /u:" "
Команда smbclient (из набора команд поддержки Samba) также может установить анонимное соединение, но только команда net use устанавливает соединение, поверх которого может работать другое приложение.
$ smbclient \\\\target\\ipc\$ " " -U " "
Важность этого простого, анонимного соединения состоит в том, чтобы продемонстрировать, как вы можете использовать инструменты для получения большого количества информации об исследуемой системе.
Winfingerprint
Утилита Winfingerprint активно разрабатывается, доступна в исходных кодах и позволяет получить большое количество информации из IPC$-области. Реализация протокола SNMP (Simple Network Management Protocol) дает доступ к журналу событий и возможность исследовать структуру Active Directory.
Реализация
Winfingerprint основана на графическом интерфейсе пользователя (GUI). Программа может сканировать единичный хост или непрерывный интервал сети. Состав запрашиваемой информации определяется установкой соответствующих отметок в формах. В этом есть только один неясный момент: нажимая кнопку OK, вы подразумеваете команду "сканировать хост". Рисунок 7.1 демонстрирует сканирование с отмеченным флагом NetBIOS.
Это не главный фокус в использовании Winfingerprint. Но, тем не менее, отметим некоторую полезную информацию.
- Role. Winfingerprint может определить с некоторой степенью подробности тип сервера и его операционную систему. Идентификаторы первичных контроллеров доменов (PDCs), контроллеров доменов резервирования (BDCs), и любые домены, к которым относится компьютер.
- Date/Time. Помогает сделать предположения о месте физического размещения сервера. Локальное время сервера также может быть использовано, если вы попытаетесь управлять удаленными заданиями с использованием команды AT.
- Usernames. Winfingerprint выводит список системных идентификаторов ID (SID) для каждого пользователя. Так можно определить администратора (SID 500).
- Sessions. Здесь приводится список NetBIOS-имен других систем, которые поддерживают соединение с исследуемой. Часто это помогает уточнить список исследуемых систем BDC, баз данных или администраторов.
- Services. Полный список служб дает возможность узнать, какие программы установлены и активны.
Несмотря на извлекаемое количество информации, Winfingerprint, как все программы с графическим интерфейсом, имеет тот же недостаток - он не может быть запущен под управлением файла параметров. Интерфейс также позволяет задать большой интервал для сканирования, что приведет к получению результата в не слишком удобном формате. Можно использовать Perl-скрипт для анализа результата по ключевым полям, но это будет весьма неудобно для большой сети.
Запуск Development Build
Для администраторов, которые хотят получить доступ к самым свежим возможностям Winfingerprint, доступны исходные коды программы. Используйте cvs-систему (Concurrent Versions System) для получения последней версии кодов (пароль остается пустым).
$ cvs -d:pserver:anonymous@cvs.winfingerprint.sourceforge.net :/cvsroot/winfingerprint login (Logging in to anonymous@cvs.winfingerprint.sourceforge.net) CVS password: $ cvs -z3 -d:pserver:anonymous@cvs.winfingerprint.sourceforge.net :/cvsroot/winfingerprint co winfingerprint
Результирующая директория содержит рабочий проект для Visual Studio. Откройте проект Visual Studio Project (DSP) и откомпилируйте. Если вы столкнулись с проблемами, убедитесь, что в опциях компиляции General установлен параметр uses MFC Shared DLL.
GETUSERINFO
GetUserInfo - одна из утилит набора "joeware", созданных Джо Ричардсом (http://www.joeware.net/). Эта коллекция включает в себя несколько утилит, составляющих набор инструментов для администраторов, которым действительно требуется залезть внутрь Windows.
Реализация
Формат вывода очень похож на вывод команды net user, с несколькими мелкими отличиями, на которые важно обратить внимание. Строки, представленные жирным шрифтом, содержат информацию, которой нет в сообщениях команды net user.
C:\>GetUserInfo.exe administrator GetUserInfo V02.05.00cpp Joe Richards (joe@joeware.net) January 2002 User information for [Local]\administrator User Name Administrator Full Name Description Built-in account for administering the computer/domain User's Comment User Type Admin Enhanced Authority Account Type Global Workstations Home Directory User Profile Logon Script Flags NO_PWD_EXPIRE Account Expires Never Password age in days 249 Password last set 7/6/2001 3:22 PM Bad PWD count 0 Num logons (this machine) 2432 Last logon 3/12/2002 8:24 PM Logon hours All Global group memberships *None Local group memberships *Administrators Completed.7.1.
Используя информацию о паролях (возраст, счетчик ошибочно введенных паролей, число входов в систему), вы можете сделать несколько выводов об этом пользователе. Неправильно введенные пароли могут свидетельствовать о предпринимаемых атаках или, если вы сами совершаете такую атаку, о том, как близко вы к пределу возможного количества попыток ввода неверного пароля. Возраст пароля может свидетельствовать о старом, не изменявшемся пароле, что является признаком пользовательского профиля, который никогда не использовался. Количество входов в систему может свидетельствовать об интенсивности использования соответствующего пользовательского профиля. Профиль с большим количеством входов может означать, что пользователь часто использует систему; соответственно малое количество входов может говорить о не слишком частой проверке системы. Конечно, количество входов в систему больше нуля для заблокированного пользователя (например, guest) означает, что в сети произошло нечто.
Используя символ точки (.), можно перечислить всех пользователей системы. Посмотрите на правильный синтаксис.
C:\>GetUserInfo.exe \. GetUserInfo V02.05.00cpp Joe Richards (joe@joeware.net) January 2002 User Accounts for [Local] --------------------------------------------------------------------- Administrator Orc skycladgirl test __vmware_user__
С этого момента вы можете повторять просмотр для каждого пользователя для сбора специфической информации о пользовательском профиле. Утилиты командной строки хороши, а средства командной строки, которые могут работать на удаленной системе, просто великолепны. GetUserInfo может извлекать информацию о заданном домене или сервере.
C:\>GetUserInfo.exe \\192.168.0.43\. C:\>GetUserInfo.exe domain\\192.168.0.43\.
Замените точку именем пользователя для получения сведений о заданном пользователе.