My knowledge base

вторник, 20 марта 2012 г.

Сканирование Windows без прав администратора

Microsoft проектировало Windows давно и похоже не думало о принципе наименьших привилегий. Из-за полностью собрать информацию собрать информацию о системе, без административных привилегий не получится.
Нельзя делегировать пользователю такие привилегии:

                    I.            Информация о жестком диске ПК (чтение информации о жестком диске).
                  II.            Права пользователей (чтение списка пользователей с указанными привилегиями):
1.       доступ к диспетчеру учетных данных от имени доверенного вызывающего;
2.       изменение метки объекта;
3.       создание символических ссылок;
4.       увеличение рабочего набора процесса;
5.       доступ к компьютеру из сети (SeNetworkLogonRight);
6.       работа в режиме операционной системы (SeTcbPrivilege);
7.       настройка квот памяти для процесса (SeIncreaseQuotaPrivilege);
8.       разрешить локальный вход в систему (SeInteractiveLogonRight);
9.       архивирование файлов и каталогов (SeBackupPrivilege);
10.   обход перекрестной проверки (SeChangeNotifyPrivilege);
11.   изменение системного времени (SeSystemTimePrivilege);
12.   создание файла подкачки (SeCreatePagefilePrivilege);
13.   создание маркерного объекта (SeCreateTokenPrivilege);
14.   создание глобальных объектов (SeCreateGlobalPrivilege);
15.   создание постоянных объектов совместного использования (SeCreatePermanentPrivilege);
16.   отладка программ (SeDebugPrivilege);
17.   отказ в доступе к компьютеру из сети (SeDenyNetworkLogonRight);
18.   отклонить локальный вход (SeDenyInteractiveLogonRight);
19.   разрешение доверия к учетным записям и компьютеру при делегировании (SeEnableDelegationPrivilege);
20.   принудительное удаленное завершение (SeRemoteShutdownPrivilege);
21.   создание журналов безопасности (SeAuditPrivilege);
22.   имитация клиента после проверки подлинности (SeImpersonatePrivilege);
23.   увеличение приоритета выполнения (SeIncreaseBasePriorityPrivilege);
24.   загрузка и выгрузка драйверов устройств (SeLoadDriverPrivilege);
25.   закрепление страниц в памяти (SeLockMemoryPrivilege);
26.   вход в качестве пакетного задания (SeBatchLogonRight);
27.   вход в качестве службы (SeServiceLogonRight);
28.   управление аудитом и журналом безопасности (SeSecurityPrivilege);
29.   изменение параметров среды оборудования (SeSystemEnvironmentPrivilege);
30.   запуск операций по обслуживанию логических дисков (SeManageVolumePrivilege);
31.   профилирование одного процесса (SeProfileSingleProcessPrivilege);
32.   профилирование загруженности системы (SeSystemProfilePrivilege);
33.   извлечение компьютера из стыковочного узла (SeUndockPrivilege);
34.   замена маркера уровня процесса (SeAssignPrimaryTokenPrivilege);
35.   восстановление файлов и каталогов (SeRestorePrivilege);
36.   завершение работы системы (SeShutdownPrivilege);
37.   овладение файлами или иными объектами (SeTakeOwnershipPrivilege).
                III.            Политики аудита (чтение информации о статусе включения указанного аудита):
1.       аудит событий входа в систему;
2.       аудит управления учетными записями;
3.       аудит доступа к службе каталогов;
4.       аудит входа в систему;
5.       аудит доступа к объектам;
6.       аудит изменения политики;
7.       аудит использования привилегий;
8.       аудит отслеживания процессов;
9.       аудит системных событий.

В MS проблема описана, но реакции пока не видно:
For purposes of compliance and audit Windows we should use least privilege (read only). But Windows has the following problems:
1. Lsa*InformationPolicy APIs were never designed (almost 20 years ago)
for remoting, and were designed to require administrative rights. These APIs manage the policy that the security subsystem enforces and it’s easy to effectively make someone an admin via policy, without regards to group membership.
2.IF they can't impersonate an administrator, you won't be able to retrieve the logical disk information. The only way to retrieve the class is to be a member of the administrators group on the local machine, ordinary users cannot retrieve this information from WMI because of the low level API execution restrictions. Need to inform that it's confirmed that this a normal behavior due to a change in security change.
To summarize it shortly, the issue occurs because the above classes under the cover uses APIs which require elevated privileges. This is by design and very difficult to change the work around is to use administrator credentials when accessed remotely. As WMI is ment to be used by Administrators we run here in a limitation of WMI for Standard Users that can´t be changed.
In regards to accessing i.e. Win32_CDROMDrive, Win32_QuickFixEngineering or Win32_PageFileSettings, the WMI provider, servicing these two classes requires the use of the SetupDi APIs which do require Administrator or Administrator or INTERACTIVE_USER access. … and all changes via the APIs are restricted to Admins. This is basically dictated by the PNP manager for device and driver access in case of Win32_CDROMDrive.
Using an agent does not solve the problem.
This problem does not exist in *nix systems (have full RBAC). 


Обходным маневром является написание скрипта, который запускается с правами администратора (ИТ администратор запускает по расписанию или как сервис), и таким образом разделить ИТ и ИБ. Но это полумера.

Но большую часть информации собрать можно, например, через WMI. Вот описание настройки привилегий:
МоёМесто.ru WMI ACCESS for non admin user.pdf (17 Kb)
Есть классная утилита для настройки привилегий: SetACL, хотя ещё понадобиться скачать dcomperm с сайта Microsoft (входит в SDK).

Получится, что-то типа этого:
@ECHO OFF
REM Проверяем правильность введенных параметров
IF /i "%1" NEQ "set" IF /i "%1" NEQ "unset" GOTO ERR
IF "%2" EQU "" GOTO ERR2
IF "%3" NEQ "" GOTO ERR3
IF "%4" NEQ "" GOTO ERR3
REM Проверяем, что пользователь существует (в искомой строке важны пробелы)
net user | find /I " %2 " > nul
IF ERRORLEVEL 1 GOTO ERR4
IF /i "%1" EQU "unset" GOTO UNSET
REM Права на чтение всей ветки HKCU (официальная утилита от MS) Право на чтение HKLM есть у группы "Пользователи"
subinacl /subkeyreg HKEY_CURRENT_USER /grant=%2=r > nul 2>nul
ECHO reg OK
REM Полные права на папку %systemroot%\temp
subinacl /subdirectories %systemroot%\temp\* /grant=%computername%\%2%=F
ECHO TEMP folder OK
REM Права на DCOM (официальная утилита от MS): разрешить локальный и удаленный доступ
dcomperm -ma set %2 permit > nul
REM Права на DCOM (официальная утилита от MS): разрешить удаленный запуск и активацию
dcomperm -ml set %2 permit level:rl,ra > nul
ECHO DCOM OK
REM Права на удаленный доступ (чтение) к WMI Namespace (утилита от www.codeproject.com/KB/system/WmiSecurity.aspx)
wmiSecurity /C="%computername%" /A /N=Root/CIMV2 /M="%computername%\%2:REMOTEACCESS" /R > nul
ECHO WMI OK
GOTO EXIT
:UNSET
REM удаляем права на чтение ветки реестра HKCU
subinacl /subkeyreg HKEY_CURRENT_USER /revoke=%2 > nul
ECHO reg OK
REM удаляем права на папку
subinacl /subdirectories %systemroot%\temp\* /revoke=%computername%\%2%
ECHO TEMP folder OK
REM удаляем права на локальный и удаленный доступ DCOM
dcomperm -ma remove %2 > nul
REM удаляем права на удаленный запуск и активацию DCOM
dcomperm -ml remove %2 > nul
ECHO DCOM OK
REM должны удалить права на WMI Namespace - пока утилита этого сделать не может, надо удалять вручную
GOTO EXIT
:ERR
ECHO First parameter is incorrect. Enter SET or UNSET
GOTO EXIT
:ERR2
ECHO Enter user name
GOTO EXIT
:ERR3
ECHO Too many parameters
GOTO EXIT
:ERR4
ECHO User not found
GOTO EXIT
:EXIT


В этом скрипте wmisecurity и subinacl лучше заменить на SetACL.

Discovery and Dependency Mapping (DDM)


CI (configuration item, он же элемент конфигурации) – объект, рассматриваемый как фундаментальный элемент системы управления конфигурациями (CMDB). Примеры CI - сервис, элемент конфигурации оборудования, программное обеспечение, люди.  Термин используется в таких программах HP UCMDB и прочих CMDB.
Device – объект, который обнаруживают сканеры инвентаризации. Сканеры пытаются однозначно идентифицировать device и получить максимум информации о нём, в т.ч. установленый софт. Термин используется в таких программах HP DDM или LANDesk Inventory Manager

У BMC Atrium описание здесь: 
Идентификация устройств в HP DDM
Средства для сканирования: Network Discovery (ICMP, ARP и …),  SNMP, SSH, Агент (постоянно установленный, временно установленный на время сканирования, установленный с внешнего носителя).
Идентификатор устройства
Для обозначения устройства используется термин device title. Это может быть IP address, DNS name, MAC address, asset tag, VM name, hostname и т.д. Для устройства выбирается только один device title. При сканировании HP DDM пытается получить идентификатор устройства, в порядке указанном пользователем. При первом полученном идентификаторе поиск прекращается, а полученный идентификатор назначается device title. Позже пользователь может сменить device title. По умолчанию используется «Device-specific title». При его использовании запускается скрипт определяющий тип устройства и назначает характерный для него title. Например, для сетевого устройства – ip address, для сервера – имя ПК.  
Обеспечение однозначной идентификации устройств:
Способ 1 – на основе Network Discovery для каждого устройства составляется  Address Table (provides information about the IP addresses and/or MAC addresses of a devices ports). Позволяет однозначно идентифицировать маршрутизаторы (много ip и mac) и веб-серверы (много domain name aliases).
Способ 2 – при доступе к информации по устройству (через ОС, SNMP, DASH) получение идентификатора производителя оборудования (S\N шасси сетевого устройства, S\N BIOS). Этот идентификатор используется как Asset Tag.
Информация об устройствах
Параметры устройства
Каждому устройству назначается device type (он же device tag), который классифицирует устройство (Router, Win2008 Server, HP Server и т.д.). В зависимости от типа устройства назначаются иконка устройства и его свойства.
Package Types определяет тип группировки устройств (страна, филиал, этаж, servers, printers и т.д.)  
Справочник активов
Для каждого устройства может быть прикреплен справочник актива. В нём указывается информация свойственная активу (ответственный сотрудник, расположение, дата покупки и т.п.)
Инвентаризация программного обеспечения
Библиотека софта

The Software Library used in the Application Recognition process consists of a set of Software Application (SAI) files that contain all of the information necessary to deduce the existence of
applications from files, registry keys, etc. on a machine. The library also contains license relationship information that allows DDM Inventory to automatically discover actual license requirements even for complex suite-based applications like Microsoft Office, Oracle database servers, etc. The software library contains information about applications from more than 1000 publishers and covers Windows applications in English as well as some applications in French and German. For UNIX, libraries for HP-UX, AIX and Solaris are included with DDM Inventory. In addition to the standard libraries, DDM Inventory includes several tools that allow you to create your own library extensions in the form of one or more User SAI files that can easily be applied to the automatic Application Recognition process.