
Легковесный инструмент PowerShell для оценки состояния безопасности сред Microsoft Entra ID. Он помогает выявлять привилегированные объекты, рискованные назначения и потенциальные ошибки конфигурации.

EntraFalcon — это инструмент оценки на базе PowerShell для пентестеров, аналитиков безопасности и системных администраторов, предназначенный для оценки уровня безопасности среды Microsoft Entra ID.
Разработанный для простоты использования, EntraFalcon работает на PowerShell 5.1 и 7, поддерживает Windows и Linux и не требует дополнительных модулей PowerShell, дополнительных установок или согласия Microsoft Graph API.
Инструмент помогает выявлять привилегированные объекты, потенциально рискованные назначения и ошибки конфигурации Conditional Access, которые часто остаются незамеченными, например:
Результаты представляются в интерактивных HTML-отчётах для эффективного изучения и анализа.
| Тип | Разрешение | Обязательно | Влияние при отсутствии |
|---|---|---|---|
| Роль Entra ID | Global Reader | Да | Невозможно запустить скрипты |
| Роль Azure | Reader: на каждой Management Group или Subscription | Нет | Невозможно оценить назначения Azure IAM |
Кроме того, вы должны иметь возможность аутентифицироваться в Microsoft Graph API и, опционально, в Azure ARM API с устройства, на котором запускаете инструмент. Убедитесь, что политики Conditional Access не блокируют вашу аутентификацию.
Для начала клонируйте репозиторий и перейдите в каталог проекта:```powershell git clone https://github.com/CompassSecurity/EntraFalcon cd EntraFalcon
Примечание: возможно, потребуется временно изменить политику выполнения PowerShell, чтобы запустить скрипт.
Делайте это только для доверенных скриптов!```
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process
EntraFalcon включает встроенную поддержку аутентификации Entra ID. Используйте -AuthFlow для выбора потока аутентификации.
Для обычных проверок используйте один из потоков с полным покрытием:
| Рекомендуемый поток | Лучше всего подходит для | Платформа | Покрытие |
|---|---|---|---|
BroCi (по умолчанию) | Интерактивные запуски в Windows | Windows | Полное |
BroCiManualCode | Аутентификация в другом браузере | Windows, Linux, macOS | Полное |
BroCiToken | Существующий refresh-токен Azure Portal | 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 использует альтернативные приложения первой стороны и требует только одного интерактивного входа.
Это полезно, когда клиент Azure Active Directory PowerShell требует назначения и его необходимо избегать.```powershell
.\run_EntraFalcon.ps1
Явный выбор BroCi:```powershell
.\run_EntraFalcon.ps1 -AuthFlow BroCi
.\run_EntraFalcon.ps1 -AuthFlow BroCiManualCode
1. Скрипт копирует URL аутентификации в буфер обмена.
2. Вставьте URL в браузер (при необходимости на другом устройстве для поддержки SSO).
3. Откройте инструменты разработчика браузера и на вкладке Network включите `Preserve log`.
4. Завершите аутентификацию.
5. Найдите в сетевом журнале `code=1.` и скопируйте URL запроса, содержащий код, в буфер обмена.
6. Нажмите Enter, чтобы продолжить; скрипт считает код из буфера обмена и завершит получение токена.
#### Рекомендуется: BroCi с токеном
Если уже доступен действительный refresh-токен Azure Portal (client 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"
Выполняет аутентификацию как зарегистрированное приложение с использованием предоставления учётных данных клиента OAuth2 — взаимодействие с пользователем не требуется.
Полезно для повторяющихся автоматизированных запусков.
Требуется пользовательская регистрация приложения Entra с разрешениями Graph API типа Application (см. ниже).