Легковесный инструмент PowerShell для оценки состояния безопасности сред Microsoft Entra ID. Он помогает выявлять привилегированные объекты, рискованные назначения и потенциальные ошибки конфигурации.
EntraFalcon — это инструмент оценки на базе PowerShell для пентестеров, специалистов по безопасности и системных администраторов, предназначенный для оценки уровня безопасности среды Microsoft Entra ID.
Разработанный для простоты использования, EntraFalcon работает на PowerShell 5.1 и 7, поддерживает Windows и Linux и не требует дополнительных модулей PowerShell, дополнительных установок или согласия Microsoft Graph API.
Инструмент помогает выявлять привилегированные объекты, потенциально рискованные назначения и ошибки конфигурации Conditional Access, которые часто упускаются из виду, например:
Пользователи с контролем над группами или приложениями с высокими привилегиями
Внешние или внутренние корпоративные приложения с чрезмерными разрешениями (например, Microsoft Graph API, роли Azure)
Пользователи с прямыми назначениями ролей Azure IAM на ресурсах
Привилегированные учетные записи, синхронизированные из локальной среды
Неактивные пользователи или пользователи без поддержки MFA
Незащищенные группы, используемые в чувствительных назначениях (например, исключения Conditional Access, владелец подписки или участник привилегированной группы с правом на назначение)
Результаты представлены в интерактивных HTML-отчетах для эффективного изучения и анализа.
🚀 Возможности
Простой скрипт PowerShell, совместимый с PowerShell 5.1 и 7. Работает на Windows и Linux
Встроенная аутентификация с поддержкой нескольких методов
Использует собственные приложения Microsoft с предварительно согласованными областями для обхода запросов согласия Graph API
Генерирует навигационные HTML-отчеты с поддержкой фильтрации, сортировки, экспорта данных и т. д.
Выполняет более 90 автоматических проверок и обобщает результаты в отчете о выводах по безопасности
Включает проверки слабых конфигураций клиента и рискованных свойств или разрешений объектов
Предоставляет оценки серьезности, а также описания проблемы, потенциальных угроз и рекомендации по устранению
Перечисляет затронутые объекты и ссылки непосредственно на их подробные отчеты для дальнейшего расследования
Выполняет базовую оценку воздействия, вероятности и риска для выделения слабо защищенных объектов с высокими привилегиями и сортировки данных
Отображает предупреждения о рискованных конфигурациях и повышенных привилегиях
Перечисляет объекты Entra ID, включая:
Пользователей (включая агентских пользователей)
Группы
Корпоративные приложения
Регистрации приложений
Управляемые удостоверения
Удостоверения агентов
Участников схемы удостоверений агентов
Схемы удостоверений агентов
Назначения PIM:
PIM для ролей Entra
PIM для групп
PIM для ролей Azure
Назначения ролей Entra
Назначения ролей Azure
Назначения RBAC Intune
Пакеты доступа
Каталоги управления правами
RBAC каталога
Политики Conditional Access
Административные единицы
Настройки PIM:
PIM для ролей Entra
PIM для групп (только аутентификация BroCi)
✅ Требования
Тип
Разрешение
Обязательно
Влияние при отсутствии
Роль Entra ID
Global Reader
Да
Невозможно запустить скрипты
Роль Azure
Reader: на каждой группе управления или подписке
Нет
Невозможно оценить назначения Azure IAM
Кроме того, вы должны иметь возможность аутентифицироваться в Microsoft Graph API и, при необходимости, в Azure ARM API с устройства, на котором запускаете инструмент.
Убедитесь, что политики Conditional Access не блокируют вашу аутентификацию.
Примечание: Возможно, вам потребуется временно изменить политику выполнения PowerShell, чтобы запустить скрипт.
Делайте это только для доверенных скриптов!```
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process
Запуск EntraFalcon
EntraFalcon включает встроенную поддержку аутентификации Entra ID. Используйте -AuthFlow для выбора потока аутентификации.
Для стандартных оценок используйте один из потоков с полным покрытием:
Рекомендуемый поток
Для чего лучше всего
Платформа
Покрытие
BroCi(по умолчанию)
Интерактивные запуски в Windows
Windows
Полное
BroCiManualCode
Аутентификация в другом браузере
Windows, Linux, macOS
Полное
BroCiToken
Существующий токен обновления портала Azure
Windows, Linux, macOS
Полное
ServicePrincipal
Автоматизация / CI
Windows, Linux, macOS
Полное
BroCi использует один интерактивный вход. BroCiToken и ServicePrincipal не используют ни одного. Резервные пользовательские потоки могут требовать нескольких интерактивных входов, поскольку запрашиваются отдельные токены ресурсов.
Резервные потоки аутентификации
Из-за отсутствия предварительно согласованных сторонних приложений резервные потоки не могут выполнить полную перечисление (PIM for Groups, Access Packages, Catalogs). Поэтому в настоящее время они остаются только резервными вариантами.
Поток
Использовать только когда
Платформа
Ограничения
AuthCode
Требуется совместимость с устаревшими системами
Windows
Частичное покрытие. Нет отдельного отчёта PIM for Groups, Access Packages или Catalogs.
DeviceCode
Аутентификация через браузер невозможна
Windows, Linux, macOS
Частичное покрытие. Нет отдельного отчёта PIM for Groups, Access Packages или Catalogs. Некоторые проверки Security Findings выполняются с уменьшенной глубиной.
ManualCode
Аутентификация должна выполняться через отдельный сеанс браузера
Windows, Linux, macOS
Частичное покрытие. Нет отдельного отчёта PIM for Groups, Access Packages или Catalogs.
Рекомендуется: поток BroCi (по умолчанию / только Windows)
BroCi использует альтернативные сторонние приложения и требует только один интерактивный вход.
Он полезен, когда клиент Azure Active Directory PowerShell требует назначения и его необходимо избегать.```powershell
.\run_EntraFalcon.ps1
root@kitploit:~
Явный выбор BroCi:```powershell
.\run_EntraFalcon.ps1 -AuthFlow BroCi
1. Скрипт копирует URL аутентификации в буфер обмена.
2. Вставьте URL в браузер (при необходимости на другом устройстве для поддержки SSO).
3. Откройте инструменты разработчика в браузере и на вкладке Network включите `Preserve log`.
4. Завершите аутентификацию.
5. Найдите в журнале сети `code=1.` и скопируйте URL запроса, содержащий код, в буфер обмена.
6. Нажмите Enter для продолжения; скрипт считывает код из буфера обмена и завершает получение токена.
#### Рекомендуется: BroCi с токеном
Если действительный refresh-токен Azure Portal уже доступен (клиент c44b4083-3bb0-49c1-b47d-974e53cbdf3c), его можно использовать напрямую.
Пример: получение refresh-токена из браузера
1. Откройте инструменты разработчика в браузере и на вкладке Network включите Preserve log.
2. Выполните аутентификацию на https://entra.microsoft.com.
3. Найдите в журнале сети `brk_client_id=c44b4083-3bb0-49c1-b47d-974e53cbdf3c` и извлеките refresh-токен из ответа.```powershell
.\run_EntraFalcon.ps1 -AuthFlow BroCiToken -BroCiToken "1.XXXXXXXXXXX"
Рекомендуется: Субъект-служба (Service Principal)
Аутентифицируется как зарегистрированное приложение с использованием предоставления учетных данных клиента OAuth2 — не требуется взаимодействие с пользователем.
Полезно для повторяющихся автоматизированных выполнений.
Требуется регистрация пользовательского приложения Entra с разрешениями Graph API типа Application (см. ниже).
Для зашифрованного закрытого ключа добавьте `-SPPrivateKeyPemPassword (Read-Host -Prompt "Private key password" -AsSecureString)`.
##### Требуемые разрешения регистрации приложения
Предоставьте следующие разрешения **Application** (не Delegated) для регистрации приложения и подтвердите их с согласия администратора:
| Permission | Type |
|---|---|
| `AdministrativeUnit.Read.All` | Application |
| `AgentIdentity.Read.All` | Application |
| `AgentIdentityBlueprint.Read.All` | Application |
| `AgentIdentityBlueprintPrincipal.Read.All` | Application |
| `Application.Read.All` | Application |
| `AuditLog.Read.All` | Application |
| `Device.Read.All` | Application |
| `EntitlementManagement.Read.All` | Application |
| `Group.Read.All` | Application |
| `Organization.Read.All` | Application |
| `Policy.Read.All` | Application |
| `PrivilegedAccess.Read.AzureADGroup` | Application |
| `RoleManagement.Read.Directory` | Application |
| `RoleManagementPolicy.Read.AzureADGroup` | Application |
| `User.Read.All` | Application |
| `DeviceManagementRBAC.Read.All` | Application |
Кроме того, назначьте роль **Azure Reader** на корневой группе управления (или на каждой соответствующей подписке) и, при необходимости, роль **Global Reader** субъекту-службе в Entra ID (требуется для статуса MFA для каждого пользователя).
#### Запасной вариант: поток кода авторизации (только Windows)```powershell
.\run_EntraFalcon.ps1 -AuthFlow AuthCode
Fallback: Device Code Flow
В закалённых средах это часто ограничивается условным доступом (Conditional Access).
При использовании DeviceCode выполняются две проверки Security Findings с уменьшенной глубиной (CAP-004 и CAP-005).```powershell
.\run_EntraFalcon.ps1 -AuthFlow DeviceCode
Скрипт копирует URL аутентификации в буфер обмена.
Вставьте URL в браузер (при необходимости на другом устройстве для поддержки SSO).
Завершите аутентификацию.
Скопируйте финальный URL перенаправления из адресной строки браузера (содержащий код авторизации) в буфер обмена.
Нажмите Enter для продолжения; скрипт считывает код из буфера обмена и завершает получение токена.
Другие параметры
Включение корпоративных приложений Microsoft
По умолчанию официальные корпоративные приложения Microsoft исключаются из оценки для снижения уровня шума. Чтобы включить их в перечисление и анализ, используйте параметр -IncludeMsApps:```powershell
.\run_EntraFalcon.ps1 -IncludeMsApps
root@kitploit:~
#### Пропустить оценку PIM для групп
Используйте параметр `-SkipPimForGroups`, чтобы пропустить предварительный сбор и обогащение данных PIM для групп.
Это также пропускает отдельный отчет о настройках `PIM для групп`.```powershell
.\run_EntraFalcon.ps1 -SkipPimForGroups
Другие необязательные параметры
Параметр
Описание
Значение по умолчанию
UserAgent
Пользовательский агент, используемый для запросов к конечной точке токена и вызовов API.
EntraFalcon
DisableCAE
Отключает запрос токенов с непрерывной оценкой доступа (CAE).
false
Tenant
Указывает клиента (ID или домен) для аутентификации. Полезно при оценке клиента, отличного от домашнего клиента учетной записи.
Домашний клиент учетной записи
OutputFolder
Выходная папка, в которой сохраняются отчеты.
Results_%TenantName%_YYYYMMDD_HHMM
LimitResults
Ограничивает количество групп и пользователей в отчете (после сортировки по риску). Полезно для крупных клиентов.
-
LogLevel
Управляет подробностью журналирования CLI во время выполнения. Поддерживаемые значения: Off (по умолчанию), Verbose, Debug, Trace.
Off
ApiTop
Задает максимальное количество объектов, возвращаемых из API. Меньшие значения снижают риск тайм-аута (HTTP 504), но увеличивают количество запросов.
Refresh token портала Azure для AuthFlow BroCiToken.
-
SPClientId
Идентификатор приложения (клиента) субъекта-службы. Требуется для -AuthFlow ServicePrincipal.
-
SPClientSecret
Секрет клиента для субъекта-службы. Используется с -AuthFlow ServicePrincipal.
📊 Примеры некоторых отчетов
Отчет о выводах по безопасности
Пользователи
Пользователи (раздел «Сведения»)
Роли Entra ID
Роли Azure
Корпоративное приложение (раздел «Сведения»)
Политики условного доступа
Политики условного доступа (раздел «Сведения»)
Параметры ролей PIM (Entra)
Удостоверения агентов
Сводка перечисления
📑 HTML-отчет
Общее
Нажмите кнопку ⚙️ Columns, чтобы показать или скрыть определенные столбцы.
Нажмите 💾 Export, чтобы загрузить CSV/JSON или скопировать CSV/TSV/JSON текущих видимых данных.
Нажмите 👁 Share View, чтобы скопировать фильтры, сортировку и выбор столбцов в виде ссылки для совместного использования.
Нажмите 🧰 Preset Views, чтобы применить предварительно настроенные фильтры и выбор столбцов.
Нажмите 🔄 Reset View, чтобы сбросить представление к значению по умолчанию.
Нажмите на имена объектов, чтобы перейти к подробной информации, даже в других отчетах.
При использовании внутренней навигации нажмите кнопку «Назад» браузера, чтобы вернуться.
Некоторые заголовки полей таблицы отображают вспомогательный текст при наведении курсора мыши.
Сортируйте данные, нажимая на заголовок таблицы.
Alt+щелчок по заголовку основного столбца таблицы позволяет быстро скрыть этот столбец.
Alt+щелчок по строке содержимого основной таблицы позволяет временно скрыть ее. Используйте чип скрытых строк или Reset View, чтобы снова показать скрытые строки.
Фильтрация
Если оператор не указан, фильтрация по умолчанию использует содержит.
Используйте = для точного совпадения.
Используйте ^ для начинается с (например, ^Mallory).
Используйте $ для заканчивается на (например, $domain.ch).
Поддерживаются операторы сравнения, такие как >, <, >=, <= (только для числовых значений).
Фильтры можно инвертировать, начиная с ! (кроме числовых сравнений). Примеры: !Mallory, !=Mallory, !^Mallory или !$domain.ch.
Используйте =empty для сопоставления пустых ячеек или !=empty для сопоставления непустых ячеек.
Используйте || для сопоставления любого из нескольких значений в одном столбце (например, Admin || Guest).
Используйте && для требования нескольких совпадений в одном столбце (например, !adm && !svc && !sql).
Чтобы применить логику ИЛИ по столбцам, используйте or_, group1_, group2_... непосредственно в поле фильтра. Примеры: в столбце 1: or_>1, в столбце 2: or_!Mallory
Примечание: Столбец DisplayName также включает идентификатор объекта (невидимый), поэтому фильтрация по идентификатору также возможна.
Управление с помощью GET-параметров
Фильтрация: Применяйте фильтры, используя имена полей в качестве HTTP GET-параметров, например, ?EntraRoles=>1&Enabled=true.
Чтобы применить логику ИЛИ по столбцам, используйте префикс or_ или group1_ (например, ?or_EntraRoles=>0&or_GrpMem=>0).
Выбор столбцов: Выбирайте, какие столбцы отображать, с помощью параметра columns. Пример: ?columns=DisplayName,Owner.
Сортировка: Сортируйте данные с помощью параметров sort и sortDir. Пример: ?sort=Impact&sortDir=desc или ?sort=OwnerCount&sortDir=asc.
Сведения об объекте: Переходите непосредственно к конкретному объекту в отчете, используя якорь (#) и идентификатор объекта, например, #%ObjectID%.
Оценка
Impact: Представляет объем или серьезность разрешений, которыми обладает объект.
Likelihood: Показывает, насколько легко на объект можно повлиять или насколько хорошо он защищен.
Эта оценка предназначена как базовая оценка, помогающая сортировать и расставлять приоритеты записей в таблице.
Баллы риска не сопоставимы напрямую между различными типами объектов или отчетами.
Она не предназначена для замены полной оценки рисков.
🔧Под капотом
Категоризация ролей
Роли Entra ID и Azure приблизительно категоризируются по разным уровням. Эта категоризация влияет на баллы воздействия объектов, которым назначены эти роли.
Цель состоит в том, чтобы назначать более высокий балл воздействия пользователям с более мощными ролями (например, Global Administrator) по сравнению с пользователями с менее критичными ролями (например, Global Reader), даже если обе считаются привилегированными ролями Microsoft.
Примечание:
Для ролей Azure эта категоризация менее точна, поскольку фактическое воздействие сильно зависит от области назначения роли. Например, роль Owner на одной виртуальной машине имеет значительно меньшее воздействие, чем когда та же роль применяется ко всей подписке. Это также может быть тестовая подписка без каких-либо ресурсов.
Роли Entra ID
Имя роли
Уровень
GUID
Global Administrator
0
62e90394-69f5-4237-9190-012177145e10
Partner Tier2 Support
0
e00e864a-17c5-4a4b-9c06-f5b95a8d5bd8
Privileged Authentication Administrator
0
7be44c8a-adaf-4e2a-84d6-ab2649e08a13
Privileged Role Administrator
0
e8611ab8-c189-46e8-94e1-60213ab1f814
Domain Name Administrator
0
8329153b-31d0-4727-b945-745eb3bc5f31
External Identity Provider Administrator
0
be2f45a1-457d-42af-a067-6ec1fa63bc45
Hybrid Identity Administrator
0
8ac3fc64-6eca-42ea-9e69-59f4c7b60eb2
Application Administrator
0
9b895d92-2cd3-44c7-9d02-a6ac2d5ea5c3
Cloud Application Administrator
0
158c047a-c907-4556-b7ef-446551a6b5f7
Security Administrator
0
194ae4cb-b126-40b2-bd5b-6091b380977d
Agent ID Administrator
1
db506228-d27e-4b7d-95e5-295956d6615f
AI Administrator
1
d2562ede-74db-457e-a7b6-544e236ebb61
Conditional Access Administrator
1
b1be1c3e-b65d-4f19-8427-f6fa0d97feb9
Authentication Administrator
1
c4e39bd9-1100-46d3-8c65-fb160da0071f
Azure DevOps Administrator
1
e3973bdf-4987-49ae-837a-ba8e231c7286
Directory Writers
1
9360feb5-f418-4baa-8175-e2a00bac4301
Entra SOC Identity Responder
1
58f930cc-fcf4-4152-852c-1d7dbf502139
Exchange Administrator
1
29232cdf-9323-42fd-ade2-1d097af3e4de
Groups Administrator
1
fdd7a751-b60b-444a-984c-02652fe8fa1c
Helpdesk Administrator
1
729827e3-9c14-49f7-bb1b-9608f156bbb8
Identity Governance Administrator
1
45d8d3c5-c802-45c6-b32a-1d70b5e1e86e
Intune Administrator
1
3a2c62db-5318-420d-8d74-23affee5d9d5
Knowledge Administrator
1
b5a8dcf3-09d5-43a9-a639-8e29ef291470
Роли Azure
Имя роли
Уровень
GUID
Owner
0
8e3af657-a8ff-443c-a75c-2fe8c4bcb635
User Access Administrator
0
18d7d88d-d35e-4fb5-a5c3-7773c20a72d9
Contributor
0
b24988ac-6180-42a0-ab88-20f7382dd24c
Role Based Access Control Administrator
0
f58310d9-a9f6-439a-9e8d-f62e7b41a168
Reservations Administrator
0
a8889054-8d42-49c9-bc1c-52486c10e7cd
Security Admin
1
fb1c8493-542b-48eb-b624-b4c8fea62acd
Virtual Machine Contributor
1
9980e02c-c2be-4d73-94e8-173b1dc7cf3c
Virtual Machine Data Access Administrator
1
66f75aeb-eabe-4b70-9f1e-c350c4c9ad04
Virtual Machine Administrator Login
1
1c0163c0-47e6-4577-8991-ea5c82e286e4
Windows Admin Center Administrator Login
1
a6333a3e-0164-44c3-b281-7a577aff287f
Container Registry Contributor and Data Access Configuration Administrator
1
3bc748fc-213d-45c1-8d91-9da5725539b9
Key Vault Administrator
1
00482a5a-887f-4fb3-b363-3b7fe8e74483
Key Vault Data Access Administrator
1
8b54135c-b56d-4d72-a534-26097cfdc8d8
Key Vault Secrets Officer
1
b86a8fe4-44ce-4948-aee5-eccb2c155cd7
Key Vault Secrets User
1
4633458b-17de-408a-b874-0445c86b69e6
Azure Kubernetes Service RBAC Admin
1
3498e952-d568-435e-9b2c-8d77e338d7f7
Azure Kubernetes Service RBAC Cluster Admin
1
b1ff04bb-8a4e-4dc4-8eb5-8693973ce19b
Azure Arc Kubernetes Admin
1
dffb1e0c-446f-4dde-a09f-99eb5cc68b96
Azure Arc Kubernetes Cluster Admin
1
8393591c-06b9-48a2-a542-1bd6b377f6a2
Azure Arc VMware VM Contributor
1
b748a06d-6150-4f8a-aaa9-ce3940cd96cb
Storage Account Contributor
1
17d1049b-9a84-46fb-8f53-869881c3d3ab
Reader
2
acdd72a7-3385-48ef-bd42-f606fba81ae7
SecurityReader
Категоризация разрешений API
Некоторые разрешения API позволяют приложению напрямую повышать привилегии до Global Administrator. Поэтому несколько разрешений API категоризируются по разным уровням серьезности. Эта категоризация влияет на балл воздействия приложений, которым назначены эти разрешения — либо как разрешения приложения, либо как делегированные разрешения для пользователей.
Разрешение приложения| Permission | Severity | GUID |
|-------------------------------------------------------------|------------|----------------------------------------|
| RoleManagement.ReadWrite.Directory | Dangerous | 9e3f62cf-ca93-4989-b6ce-bf83c28f9fe8 |
| AppRoleAssignment.ReadWrite.All | Dangerous | 06b708a9-e830-4db3-a914-8e69da51d44f |
| Application.ReadWrite.All | Dangerous | 1bfefb4e-e0b5-418b-a88f-73c46d2cc8e9 |
| RoleAssignmentSchedule.ReadWrite.Directory | Dangerous | dd199f4a-f148-40a4-a2ec-f0069cc799ec |
| PrivilegedAssignmentSchedule.ReadWrite.AzureADGroup | Dangerous | 41202f2c-f7ab-45be-b001-85c9728b9d69 |
| PrivilegedAccess.ReadWrite.AzureADGroup | Dangerous | 2f6817f8-7b12-4f0f-bc18-eeaf60705a9e |
| RoleEligibilitySchedule.ReadWrite.Directory | Dangerous | fee28b28-e1f3-4841-818e-2704dc62245f |
| PrivilegedEligibilitySchedule.ReadWrite.AzureADGroup | Dangerous | 618b6020-bca8-4de6-99f6-ef445fa4d857 |
| Domain.ReadWrite.All | Dangerous | 7e05723c-0bb0-42da-be95-ae9f08a6e53c |
| Application.ReadUpdate.All | Dangerous | fc023787-fd04-4e44-9bc7-d454f00c0f0a |
| AgentIdentityBlueprint.ReadWrite.All | High | 7fddd33b-d884-4ec0-8696-72cff90ff825 |
| AgentIdentityBlueprint.AddRemoveCreds.All | High | 0510736e-bdfb-4b37-9a1f-89b4a074763a |
| ADSynchronization.ReadWrite.All | High | ab43b826-2c7a-4aff-9ecd-d0629d0ca6a9 |
| EntitlementManagement.ReadWrite.All | High | 9acd699f-1e81-4958-b001-93b1d2506e19 |
| Organization.ReadWrite.All | High | 292d869f-3427-49a8-9dab-8c70152b74e9 |
| Policy.ReadWrite.PermissionGrant | High | a402ca1c-2696-4531-972d-6e5ee4aa11ea |
| RoleManagementPolicy.ReadWrite.AzureADGroup | High | b38dcc4d-a239-4ed6-aa84-6c65b284f97c |
| RoleManagementPolicy.ReadWrite.Directory | High | 31e08e0a-d3f7-4ca2-ac39-7343fb83e8ad |
| Policy.ReadWrite.AuthenticationMethod | High | 29c18626-4985-4dcd-85c0-193eef327366 |
| User.DeleteRestore.All | High | eccc023d-eccf-4e7b-9683-8813ab36cecc |
| User.EnableDisableAccount.All | High | 3011c876-62b7-4ada-afa2-506cbbecc68c |
| DelegatedPermissionGrant.ReadWrite.All | High | 8e8e4742-1d95-4f68-9d56-6ee75648c72a |
| Policy.ReadWrite.ConditionalAccess | High | 01c0a623-fc9b-48e9-b794-0756f8e8f067 |
| DeviceManagementConfiguration.ReadWrite.All | High | 9241abd9-d0e6-425a-bd4f-47ba86e767a4 |
| DeviceManagementRBAC.ReadWrite.All | High | e330c4f0-4170-414e-a55a-2f022ec2b57b |
| Directory.ReadWrite.All | High | 19dbc75e-c2e2-444c-a770-ec69d8559fc7 |
| Group.ReadWrite.All | High | 62a82d76-70ea-41e2-9197-370581804d09 |
| GroupMember.ReadWrite.All | High | dbaae8cf-10b5-4b86-a4a1-f871c94c6695 |
| UserAuthenticationMethod.ReadWrite.All | High | 50483e42-d915-4231-9639-7fdb7fd190e5 |
| User-PasswordProfile.ReadWrite.All | High | cc117bb9-00cf-4eb8-b580-ea2a878fe8f7 |
| Sites.FullControl.All | High | a82116e5-55eb-4c41-a434-62fe8a61c773 |
| Sites.FullControl.All SharePointAPI | High | 678536fe-1083-478a-9c59-b99265e6b0d3 |
| Sites.Manage.All SharePointAPI | High | 9bff6588-13f2-4c48-bbf2-ddab62256b36 |
| Sites.Read.All SharePointAPI | High | d13f72ca-a275-4b96-b789-48ebcc4da984 |
| Sites.ReadWrite.All SharePointAPI | High | fbcd29d2-fcca-4405-aded-518d457caae4 |
| Sites.Manage.All | High | 0c0bf378-bf22-4481-8f81-9e89a9b4960a |
| Sites.Read.All | High | 332a536c-c7ef-4017-ab91-336970924f0d |
| Sites.ReadWrite.All | High | 9492366f-7969-46a4-8d15-ed1a20078fff |
| Files.Read.All | High | 01d4889c-1287-42c6-ac1f-5d1e02578ef6 |
| Files.ReadWrite.All | High | 75359482-378d-4052-8f01-80520e7db3cd |
| DeviceLocalCredential.Read.All | High | db51be59-e728-414b-b800-e0f010df1a79 |
| AdministrativeUnit.ReadWrite.All | High | 5eb59dd3-1da2-4329-8733-9dabdc435916 |
| UserAuthMethod-HardwareOATH.ReadWrite.All | High | 7e9ebcc1-90aa-4471-8051-e68d6b4e9c89 |
| UserAuthMethod-Phone.ReadWrite.All | High | 6e85d483-7092-4375-babe-0a94a8213a58 |
| UserAuthMethod-QR.ReadWrite.All | High | 4869299f-18c3-40c8-98f2-222657e67db1 |
| UserAuthMethod-TAP.ReadWrite.All | High | 627169a8-8c15-451c-861a-5b80e383de5c |
| User.ReadWrite.All | Medium | 741f803b-c850-494e-b5df-cde7c675a1ca |
| Application.ReadWrite.OwnedBy | Medium | 18a4783c-866b-4cc7-a460-3d5e5662c884 |
| Chat.Read.All | Medium | 6b7d71aa-70aa-4810-a8d9-5d9fb2830017 |
| Chat.ReadWrite.All | Medium | 294ce7c9-31ba-490a-ad7d-97a7d075e4ed |
| Calendars.Read | Medium | 798ee544-9d2d-430c-a058-570e29e34338 |
| Calendars.ReadWrite | Medium | ef54d2bf-783f-4e0f-bca1-3210c0444d99 |
| Mail.Read | Medium | 810c84a8-4a9e-49e6-bf7d-12d183f40d01 |
| Mail.ReadWrite | Medium | e2a3a72e-5f79-4c64-b1b1-878b674786c9 |
| BitlockerKey.Read.All | Medium | 57f1cf28-c0c4-4ec3-9a30-19a2eaaf2f6e |
| Mail.Send | Medium | b633e1c5-b582-4048-a93e-9f11b44c7e96 |
| OnlineMeetings.ReadWrite.All | Medium | b8bb2037-6e08-44ac-a4ea-4674e010e2a4 |
| CustomSecAttributeAssignment.ReadWrite.All | Medium | de89b5e4-5b8f-48eb-8925-29c2b33bd8bd |
| ServicePrincipalEndpoint.ReadWrite.All | Medium | 89c8469c-83ad-45f7-8ff2-6e3d4285709e |
| AgentIdUser.ReadWrite.IdentityParentedBy | Medium | 4aa6e624-eee0-40ab-bdd8-f9639038a614 |
| AgentIdentity.CreateAsManager | Low | 4c390976-b2b7-42e0-9187-c6be3bead001 |
По умолчанию приложения Microsoft отфильтровываются, чтобы упростить проверку корпоративных приложений. Используйте параметр -IncludeMsApps, чтобы включить их. Приложения из следующих тенантов считаются принадлежащими Microsoft:
f8cdef31-a31e-4b4a-93e4-5f571e91255a
72f988bf-86f1-41af-91ab-2d7cd011db47
33e01921-4d64-4f8c-a055-5bdaffd5e33d
cdc5aeea-15c5-4db6-b079-fcadd2505dc2
Выполняемые проверки
В следующей таблице кратко перечислены выполняемые проверки, их влияние на оценку и отображается ли предупреждение.
Выполняемые проверки|Область|Проверка|Влияет на оценку|Предупреждение отображается|
|-|-|-|-|
|Группы|Является публичной группой M365|Да|Да|
|Группы|Является динамической / является динамической и потенциально опасным запросом|Да|Да|
|Группы|Роли Entra (активные и имеющие право)|Да|Да|
|Группы|Роли Azure (активные и имеющие право)|Да|Да|
|Группы|Используется для AppRole|Да|Да|
|Группы|Внутренний/внешний SP как владелец|Да|Да|
|Группы|В ограниченном AU|Да|Да|
|Группы|Вложена в привилегированную группу|Да|Да|
|Группы|Используется в CAP|Да|Да|
|Группы|Тип группы|Да|Нет|
|Группы|Безопасность включена|Да|Нет|
|Группы|Вложенный активный участник|Да|Нет|
|Группы|Владельцы|Да|Нет|
|Группы|Вложенные владельцы|Да|Нет|
|Группы|Гость как владелец|Да|Да|
|Группы|Синхронизация с локальной средой|Да|Нет|
|Группы|Участники (транзитивные)|Да|Нет|
|Группы|Назначаемые роли|Да|Нет|
|Группы|PIM для групп: подключено|Нет|Нет|
|Группы|PIM для групп: участник с правом на привилегированную группу|Да|Да|
|Группы|PIM для групп: владелец с правом на привилегированную группу|Да|Да|
|Группы|PIM для групп: незащищённая группа, вложенная в защищённую группу|Нет|Да|
|Корпоративное приложение|Роль Entra|Да|Да|
|Корпоративное приложение|Роль Azure|Да|Да|
|Корпоративное приложение|Внешнее|Да|Нет|
|Корпоративное приложение|Отключено Microsoft|Нет|Да|
|Корпоративное приложение|Подозрительное имя (символы-имитаторы)|Да|Да|
|Корпоративное приложение|Разрешение API (приложение)|Да|Да|
|Корпоративное приложение|Разрешение API (делегированное)|Да|Да|
|Корпоративное приложение|Учётные данные|Да|Да|
|Корпоративное приложение|Владельцы|Да|Да|
|Корпоративное приложение|Владение регистрациями приложений|Да|Да|
|Корпоративное приложение|Владение другими субъектами-службами|Да|Да|
|Корпоративное приложение|AppLock|(Да)|Нет|
|Корпоративное приложение|Приложение владеет регистрацией приложения|Да|Да|
|Корпоративное приложение|Участник / владелец групп|Да|(Да)|
|Корпоративное приложение|Роли приложения|Да|Нет|
|Корпоративное приложение|Требования к ролям приложения|Да|Нет|
|Корпоративное приложение|Неактивно|Нет|Нет|
|Корпоративное приложение|Последний успешный вход (дней)|Нет|Нет|
|Регистрации приложений|Учётные данные|Да|Да|
|Регистрации приложений|Приложение Entra Connect с учётными данными|Да|Да|
|Регистрации приложений|Приложение Entra Connect с несколькими сертификатами|Да|Да|
|Регистрации приложений|Роли приложения|Да|Нет|
|Регистрации приложений|URL перенаправления приложения|Нет|Нет|
|Регистрации приложений|AppLock|Да|Нет|
|Регистрации приложений|Владельцы|Да|Да|
|Регистрации приложений|(Облачные) администраторы приложений с ограниченной областью|Нет|Нет|
|Регистрации приложений|Привилегии соответствующего SP|Да|Нет|
|Регистрации приложений|Аудитория входа|Нет|Нет|
|Управляемое удостоверение|Владельцы|Да|Да|
|Управляемое удостоверение|Роль Entra|Да|Да|
|Управляемое удостоверение|Роль Azure|Да|Да|
|Управляемое удостоверение|API (приложение)|Да|Да|
|Управляемое удостоверение|Владение регистрациями приложений|Да|Да|
|Управляемое удостоверение|Владение другими субъектами-службами|Да|Да|
|Управляемое удостоверение|Участник / владелец групп|Да|(Да)|
|Пользователь|Роли Entra (активные и имеющие право)|Да|Да|
|Пользователь|Роли Azure (активные и имеющие право)|Да|Да|
|Пользователь|Членство в привилегированных группах (активное и имеющее право)|Да|Да|
|Пользователь|Владение привилегированными группами (активное и имеющее право)|Да|Да|
|Пользователь|Пользователь синхронизации Entra Connect|Да|Да|
|Пользователь|Пользователь облачной синхронизации Entra Connect|Да|Да|
|Пользователь|Владение регистрацией приложения|Да|Да|
|Пользователь|Владение корпоративным приложением|Да|Да|
|Пользователь|Не зарегистрирован ни один фактор MFA|Да|Да|
|Пользователь|Защищён|Да|Нет|
|Пользователь|Неактивен|Нет|Нет|
|Пользователь|Участник / владелец групп|Да|(Да)|
|Пользователь|Синхронизирован из локальной среды|Да|Нет|
|Удостоверение агента|Связанные пользователи агента|Да|Нет|
|Удостоверение агента|Внешнее происхождение субъекта blueprint|Да|Да|
|Удостоверение агента|Эффективное разрешение API (приложение)|Да|Да|
|Удостоверение агента|Эффективное разрешение API (делегированное)|Да|Да|
|Удостоверение агента|Роль Entra|Да|Да|
|Удостоверение агента|Роль Azure|Да|Да|
|Удостоверение агента|Владение регистрациями приложений|Да|Да|
|Удостоверение агента|Владение другими субъектами-службами|Да|Да|
|Удостоверение агента|Участник / владелец групп|Да|(Да)|
|Субъект blueprint удостоверения агента|Связанные удостоверения агента|Да|Нет|
|Субъект blueprint удостоверения агента|Связанные пользователи агента|Да|Нет|
|Субъект blueprint удостоверения агента|Настроенное разрешение API (приложение)|Нет|Нет|
|Субъект blueprint удостоверения агента|Настроенное разрешение API (делегированное)|Нет|Нет|
|Субъект blueprint удостоверения агента|Внешнее происхождение родительского blueprint|Да|Нет|
|Субъект blueprint удостоверения агента|Роль Entra|Нет|Нет|
|Субъект blueprint удостоверения агента|Роль Azure|Нет|Нет|
|Субъект blueprint удостоверения агента|Подозрительное имя (символы-имитаторы)|Да|Да|
|Blueprint удостоверения агента|Субъекты blueprint|Да|Нет|
|Blueprint удостоверения агента|Связанные удостоверения агента|Да|Нет|
|Blueprint удостоверения агента|Связанные пользователи агента|Да|Нет|
|Blueprint удостоверения агента|Наследуемые разрешения API|Да|Нет|
|Blueprint удостоверения агента|Федеративные учётные данные|Да|Нет|
|Blueprint удостоверения агента|Секреты / сертификаты|Да|Да|
|Blueprint удостоверения агента|Владельцы / спонсоры|Да|(Да)|
|Пакеты доступа|Предоставленные роли Entra|Да|Нет|
|Пакеты доступа|Предоставленные роли Azure|Да|Нет|
|Пакеты доступа|Предоставленные группы|Да|Нет|
|Пакеты доступа|Предоставленные роли приложений|Да|Нет|
|Пакеты доступа|Предоставленные разрешения API (приложение)|Да|Нет|
|Пакеты доступа|Предоставленные разрешения API (делегированное)|Да|Нет|
|Пакеты доступа|Предоставленный доступ к SharePoint|Да|Нет|
|Пакеты доступа|Широкий самостоятельный запрос без утверждения|Да|Да|
|Пакеты доступа|Постоянный доступ без истечения срока или проверки доступа|Нет|Нет|
|Пакеты доступа|Опасные правила автоматического назначения|Да|Да|
|Пакеты доступа|Самостоятельный запрос через незащищённые целевые группы|Да|Да|
|Пакеты доступа|Широкое назначение от имени не-пользователя без утверждения|Да|Нет|
|Пакеты доступа|Назначения субъектов-служб|Да|Нет|
|Каталоги|Метаданные каталога, состояние и внешняя видимость|Нет|Нет|
|Каталоги|Ресурсы каталога|Нет|Нет|
|Каталоги|Ресурсы, настраиваемые в новых пакетах доступа|Да|Нет|
|Каталоги|Ресурсы и роли, настроенные в существующих пакетах доступа|Да|Нет|
|Каталоги|Ненастроенные ресурсы каталога|Да|Нет|
|Каталоги|Назначения RBAC каталога|Да|Да|
|CAP|Нет или неправильно настроенная политика для устаревшей аутентификации|-|Да|
|CAP|Нет или неправильно настроенная политика для блокировки потока кода устройства|-|Да|
|CAP|Нет или неправильно настроенная политика для ограничения регистрации сведений безопасности|-|Да|
|CAP|Нет или неправильно настроенная политика для нацеливания на рискованные входы|-|Да|
|CAP|Нет или неправильно настроенная политика для нацеливания на риск пользователя|-|Да|
|CAP|Нет политики, обеспечивающей MFA|-|Да|
|CAP|Нет политики, обеспечивающей уровень аутентификации|-|Да|
|CAP|Включение ролей с ограниченными назначениями|-|Да|
|Настройки PIM|AuthContext|-|Да|
|Настройки PIM|AuthContext, связанный с CAP: частота входа|-|Да|
|Настройки PIM|AuthContext, связанный с CAP: MFA или уровень аутентификации|-|Да|
|Настройки PIM|AuthContext, связанный с CAP: включено|-|Да|
|Настройки PIM|AuthContext, связанный с CAP: включённые/исключённые пользователи/группы/сети|-|Да|
|Настройки PIM|AuthContext, связанный с CAP: условия|-|Да|
|Настройки PIM|MFA при активации|-|Нет|
|Настройки PIM|Обоснование активации или заявка|-|Да|
|Настройки PIM|Продолжительность активации|-|Да|
|Настройки PIM|Утверждение активации|-|Да|
|Настройки PIM|Истечение срока назначения с правом|-|Нет|
|Настройки PIM|Истечение срока активного назначения|-|Да|
|Настройки PIM|MFA для активных назначений|-|Нет|
|Настройки PIM|Уведомление об активации роли|-|Нет|
|Настройки PIM|Уведомление о назначении роли (активное)|-|Нет|
|Настройки PIM|Уведомление о назначении роли (имеющее право)|-|Нет|
🛡️ Обнаружение
EntraFalcon не является скрытным инструментом и может быть обнаружен в средах, где ведётся журналирование и мониторинг Microsoft Graph API и активности входа в Azure.
Используемая аутентификация по умолчанию
При выполнении полной перечислительной проверки с потоками, отличными от BroCi, инструмент обычно инициирует четыре интерактивных входа и один неинтерактивный вход. В зависимости от потока и поддержки конечных точек может произойти один дополнительный интерактивный вход для конечных точек политик Security Findings.
Идентификатор приложения
Тип
Идентификатор ресурса
Назначение
1b730954-1685-4b74-9bfd-dac224a7b894
Интерактивный
00000003-0000-0000-c000-000000000000
Получение данных PIM для групп
04b07795-8ddb-461a-bbee-02f9e1bf7b46
Интерактивный
00000003-0000-0000-c000-000000000000
Получение общих данных объектов клиента
51f81489-12ee-4a9e-aaae-a2591f45987d
Интерактивный
00000003-0000-0000-c000-000000000000
Получение PIM для ролей Entra / Azure
80ccca67-54bd-44ab-8625-4b79c4dc7775
Интерактивный
00000003-0000-0000-c000-000000000000
Получение контекста политик Security Findings
04b07795-8ddb-461a-bbee-02f9e1bf7b46
Неинтерактивный
797f4846-ba00-4fd7-ba43-dac1f8f63013
Получение данных назначений ролей Azure IAM
Используемая аутентификация BroCi
При использовании аутентификации BroCi происходит только один интерактивный вход.
Идентификатор приложения
Тип
Идентификатор ресурса
Назначение
c44b4083-3bb0-49c1-b47d-974e53cbdf3c
Интерактивный
00000003-0000-0000-c000-000000000000
Начальная аутентификация для использования токена обновления для BroCi
50aaa389-5a33-4f1a-91d7-2c45ecd8dac8
Неинтерактивный
00000003-0000-0000-c000-000000000000
Получение данных PIM для групп
50aaa389-5a33-4f1a-91d7-2c45ecd8dac8
Неинтерактивный
01fc33a7-78ba-4d2f-a4b7-768e336e890e
Получение данных PIM для групп
74658136-14ec-4630-ad9b-26e160ff0fc6
Неинтерактивный
00000003-0000-0000-c000-000000000000
Получение общих данных объектов клиента
74658136-14ec-4630-ad9b-26e160ff0fc6
Неинтерактивный
797f4846-ba00-4fd7-ba43-dac1f8f63013
Получение данных назначений ролей Azure IAM
Когда BroCi включён, EntraFalcon также запрашивает api.azrbac.mspim.azure.com для PIM для групп.
Подробности
Для сбора данных инструмент отправляет несколько запросов к Microsoft Graph API и, при необходимости, к Azure ARM API — один или несколько на объект. Где возможно, он использует конечную точку Graph Batch для сокращения количества отдельных запросов и повышения эффективности.
Интерактивные входы используют User-Agent браузера. Все неинтерактивные входы и запросы API (Graph и ARM) используют EntraFalcon в качестве User-Agent, если это не изменено параметром -UserAgent.
Для обнаружения использования EntraFalcon синие команды могут отслеживать перечисленные идентификаторы приложений в журналах входа, искать необычные объёмы трафика Graph API или анализировать поведение обновления токенов и пакетных запросов.
🕳️ Известные ограничения
M365 RBAC: не оценивается
Defender for Endpoint RBAC: не оценивается
Покрытие пользователей Conditional Access: эффективное покрытие пользователей и -ExportCapUncoveredUsers являются расчётными значениями по принципу «наилучшего усилия» на основе перечисленных пользователей, участников групп, назначений ролей и разрешимых категорий внешних пользователей. Селекторы внешних пользователей разрешаются только для гостевых пользователей клиента, соответствующих b2bCollaborationGuest. Другие типы внешних пользователей или внешние пользователи с указанными внешними клиентами могут сделать значения покрытия приблизительными. Пути PIM с правом сообщаются как потенциальное покрытие и не учитываются как текущее покрытие. Экспорт в CSV ограничен включёнными политиками и включёнными пользователями.
Облачная среда: облачные платформы быстро развиваются. В результате некоторые оценки или обнаружения могут со временем устареть или стать неточными. Кроме того, клиенты становятся всё более сложными, и конкретные конфигурации или комбинации настроек могут приводить к неточным результатам. Хотя мы стремимся поддерживать EntraFalcon в актуальном состоянии, всегда рекомендуется независимо проверять результаты и не полагаться исключительно на инструмент для критически важных решений.
HTML-отчёты: создаваемые HTML-отчёты не реализуют механизмы защиты от межсайтового скриптинга (XSS).
📦 Интегрированные внешние инструменты
Следующие подмодули были форкнуты и интегрированы в EntraFalcon для поддержки аутентификации, взаимодействия с Microsoft Graph и диаграмм отчётов:
Путь к файлу сертификата PFX/P12 для аутентификации субъекта-службы.
-
SPCertificatePassword
Пароль (SecureString) для сертификата PFX, указанного в -SPCertificatePath.
-
SPCertificatePemPath
Путь к файлу сертификата PEM. Используется вместе с -SPPrivateKeyPemPath.
-
SPPrivateKeyPemPath
Путь к файлу закрытого ключа PEM, соответствующему -SPCertificatePemPath.
-
SPPrivateKeyPemPassword
Пароль (SecureString) для закрытого ключа PEM, указанного в -SPPrivateKeyPemPath.
-
Csv
Включает запись файлов отчетов CSV в дополнение к файлам отчетов TXT/HTML.
false
ExportCapUncoveredUsers
Для каждой включенной политики условного доступа с нацеливанием на пользователей экспортирует CSV со списком пользователей, не охваченных этой политикой. Файлы записываются в подпапку ConditionalAccessPolicies_UncoveredUsers в выходном каталоге.
false
ExportFindingsJson
Экспортирует все выводы по безопасности (Security Findings) в формате JSON в конце выполнения.
false
ExportDataJson
Экспортирует обогащенный отчет и вспомогательные наборы данных в виде необработанных файлов данных JSON в папке Data_Json; метаданные выполнения доступны в Summary.json.
false
DebugObjectDump
Экспортирует финальные объекты отчета в памяти в формате CLIXML в Debug_ObjectDump для устранения неполадок и тестирования.