Средства ревизии Windows
PSTOOLS
Комплект PsTools располагается в переходной области между регистрирующим и полнофункциональным доступом к системе. Эти средства разработаны Марком Русиновичем из SysInternals и доступны по адресу http://www.sysinternals.com/ntw2k/freeware/pstools.shtml. Утилиты enum и Winfingerprint довольствуются установлением NULL IPC$ соединения, а PsTools требуют пользовательских полномочий для реализации некоторых возможностей. Тем не менее, этот набор утилит возвращает открытый порт NetBIOS к лучшим временам удаленного выполнения команд. Вместо описания утилит в алфавитном порядке, мы начнем с наиболее безобидных и работающих универсально. Набор администратора Windows должен содержать эти средства, поскольку они существенно упрощают удаленное администрирование.
Но для начала сделаем несколько замечаний об использовании этих программ.
- Вы должны иметь полномочия пользователя. Наиболее функциональные из описываемых средств требуют полномочий администратора системы.
- На исследуемой системе должна быть запущена служба "Server". Служба "NetLogon" помогает передавать пользовательские полномочия в домене.
- Служба "RemoteRegistry" используется аналогично PsInfo.
- Должен быть доступен ресурс IPC$.
В системе, где администрирование осуществляется с использованием графического интерфейса пользователя, левой кнопки мыши и терминальных служб, этот набор программ сохранит от излишнего напряжения в процессе работы.
Реализация
PsTools содержит 10 различных утилит, существенно упрощающих администрирование больших сетей. Удаленный доступ с использованием Terminal Services также способствует этому, но эти утилиты могут быть составной частью автоматических скриптов, включающих в себя журналы, списки активных пользователей, или могут выполняться по команде в дюжине систем.
PsFile
PsFile дает возможность получить список файлов на хосте, которые используются другим хостом. Эта утилита зеркально воспроизводит встроенную команду net file. Программа используется для отладки общего доступа к файлам и контроля неавторизованного доступа к файлам. Ниже приводится сокращенный вывод.
C:\>psfile.exe Files opened remotely on GOBLYNSWOOD: [23] D:\downloads\VMware-license-linux.txt User: ORC Locks: 0 Access: Read C:\>net file ID Path User name # Locks --------------------------------------------------------------- 23 D:\downloads\VMware-license-linux.txt ORC 0 The command completed successfully.
Можно сказать, что пользователь ORC просматривает лицензионную информацию нашего приложения VMware. Эта программа не может дать сведений, откуда пользователь осуществляет доступ. Это работа для netstat. Что общего между двумя этими командами? Параметр -c работает точно так же, как и параметр /close программы net file. Он закрывает соединение, основанное на идентификаторе пользователя ID (отмечено жирным шрифтом в предыдущем примере).
C:\>psfile.exe 23 -c Closed file D:\downloads\VMware-license-linux.txt on GOBLYN.
Кажется, нет никакого преимущества по сравнению с утилитой net. Однако каждая утилита из набора PSTools работает поверх удаленного соединения. Использование аналогично с добавлением полномочий пользователя в командной строке.
C:\>psfile.exe \\192.168.0.176 -u Administrator -p IM!secure Files opened remotely on 192.168.0.176: [32] \PIPE\srvsvc User: ADMINISTRATOR Locks: 0 Access: Read Write
Если вы запустите программу psfile для хоста localhost и зададите его IP-адрес, то увидите, что он открывает соединение со службой server.
PsLoggedOn
PsTools не заподозришь в запутанном соглашении об именовании. PsLoggedOn отображает пользователей, которые работают в системе, неважно, соединившись с помощью консоли, используя файлы или другим удаленным методом.
C:\>psloggedon.exe Users logged on locally: Unknown NT AUTHORITY\LOCAL SERVICE Unknown NT AUTHORITY\NETWORK SERVICE 3/10/2002 11:23:49 AM GOBLYNSWOOD\pyretta Unknown NT AUTHORITY\SYSTEM Users logged on via resource shares: 3/12/2002 12:04:12 AM (null)\ORC
Список пользователей, соединившихся с системой общими ресурсами, может быть особенно интересен для администраторов. Можно управлять задачами, которые проверяют чувствительные системы, такие как контроллеры доменов, Web-серверы или базы данных финансового департамента. Вы можете понадеяться на журнал системных событий, но злонамеренные пользователи могут его уничтожить.
Предполагая перспективу атак, будет предусмотрительно перехватывать атаки по переполнению буфера.
PsGetSid
Переименование пользователя Administrator в "TeflonBilly" неплохо, но недостаточно для реальной безопасности. С использованием PsGetSid, любой, кто может установить NULL -соединение может получить строку, называемую "секретный идентификатор SID " (Security Identifier) для конкретного пользователя. Заключительная часть этой строки содержит относительный идентификатор RID (Relative Identifier). Для пользователя с правами администратора, независимо от его имени, RID всегда равен 500 - практически, как у пользователя root в Unix, этот параметр всегда равен 0. Для гостевого профиля этот параметр всегда равен 501. Эти два RID -идентификатора никогда не изменяются.
C:\>psgetsid.exe \\192.168.0.176 -u Administrator -p IM!secure Orc SID for 192.168.0.176\\Orc: S-1-5-21-1454471165-484763869-1708537768-501
Запрос идентификатора SID не может быть адресован для конкретного пользователя. PsGetSid может перечислить другие объекты, такие как компьютеры или группы пользователей.
C:\>psgetsid.exe \\192.168.0.176 -u Administrator -p IM!secure goblynswood SID for 192.168.0.176\\goblynswood: S-1-5-21-1454471165-484763869-1708537768 C:\>psgetsid.exe \\192.168.0.176 -u Administrator -p IM!secure "Power Users" SID for 192.168.0.176\\goblynswood: S-1-5-32-547
Сам по себе этот тип информации обычно не используется, но вместе со значениями RID -пользователей, полученных из ASM -файлов, эти данные покрывают существенную часть структуры аутентификации домена.
PsInfo
Операционная система, продолжительность непрерывной работы (основанная на анализе системного журнала), корневая директория системы, дата инсталляции и т.д. и т.п. - данные, всегда вызывающие интерес. Не думайте о PsInfo, как о бесполезном инструменте. Эта программа возвращает полезную информацию о системе. И помните, она делает это удаленно!
C:\>Psinfo.exe System information for \\GOBLYNSWOOD: Uptime: 8 days, 2 hours, 59 minutes, 9 seconds Kernel version: Microsoft Windows 2000, Uniprocessor Free Product type: Professional Product version: 5.0 Service pack: 2 Kernel build number: 2195 Registered organization: twilight conclave Registered owner: mps Install date: 1/2/2001, 3:03:03 PM System root: E:\WINNT Processors: 1 Processor speed: 1.0 GHz Processor type: x86 Family 6 Model 8 Stepping 10, GenuineIntel Physical memory: 320 MB HotFixes: Q147222: No Description Q252795: Windows 2000 Hotfix (Pre-SP3) [See Q252795 for more information] Q276471: Windows 2000 Hotfix (Pre-SP3) [See Q276471 for more information] Q285156: Windows 2000 Hotfix (Pre-SP3) [See Q285156 for more information] Q285851: Windows 2000 Hotfix (Pre-SP3) [See Q285851 for more information] Q295688: No Description Q296185: Windows 2000 Hotfix (Pre-SP3) [See Q296185 for more information] Q298012: Windows 2000 Hotfix (Pre-SP3) [See Q298012 for more information] Q299553: Windows 2000 Hotfix (Pre-SP3) [See Q299553 for more information] Q299796: Windows 2000 Hotfix (Pre-SP3) [See Q299796 for more information] Q302755: Windows 2000 Hotfix (Pre-SP3) [See Q302755 for more information] Q314147: Windows 2000 Hotfix (Pre-SP3) [See Q314147 for more information] SP2SRP1: Windows 2000 Security Rollup Package [See Q311401 for more information]7.2.
PsInfo предоставляет быстрый способ для проверки ваших серверов на предмет последних обновлений. Если у вас работает IIS, вы должны трепетно относиться к последним обновлениям и заплаткам. PsInfo получает информацию о последних обновлениях из настроек HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix системного реестра, поэтому некоторые заплатки приложений могут быть не внесены в этот список.
Использование командного файла упрощает ревизию системы.
C:\>for /L %i in (1,1,254) do psinfo \\192.168.0.%i > systeminfo_192.168.0.%i.txt
Обратите внимание, что мы обошли полномочия аутентификации. Если вы собираетесь создать пакетный файл, который требует доступа к удаленной системе, не помещайте имя пользователя и пароль в командный файл. Вместо этого запустите пакетный файл в контексте пользователя домена с полномочиями для ревизии этой информации. Проблема, с которой вы можете столкнуться, состоит в сложности доступа к системам, которые не являются частью домена.