
Azure AD에서 UNC2452 및 기타 위협 행위자 아티팩트를 탐지하고, 페더레이션 도메인, 서비스 주체, 애플리케이션, 사서함 권한을 감사하여 침해 지표를 찾기 위한 읽기 전용 PowerShell 모듈입니다.
이 저장소는 UNC2452 및 기타 위협 행위자 활동의 지표가 될 수 있는 아티팩트를 탐지하기 위한 PowerShell 모듈을 포함합니다. 일부 지표는 "고신뢰도" 침해 지표이고, 다른 아티팩트는 소위 "이중 용도" 아티팩트입니다. 이중 용도 아티팩트는 위협 행위자 활동과 관련될 수 있지만, 합법적인 기능과도 관련될 수 있습니다. 이에 대한 분석과 확인이 필요합니다. UNC2452가 사용한 기술에 대한 자세한 설명은 저희 블로그를 참조하십시오.
이 도구는 읽기 전용입니다. Microsoft 365 환경에 어떠한 변경도 가하지 않습니다.
요약하면 이 모듈은 다음을 수행합니다:
다음은 수행하지 않습니다:
커뮤니티 피드백을 통해 이 도구는 IOC 탐지에서 더욱 철저해질 수 있습니다. 문제, 아이디어 또는 피드백이 있으시면 이슈를 열거나 PR을 제출하거나 저자에게 연락해 주십시오.
이 모듈은 MS Online PowerShell을 사용하여 Azure AD에서 페더레이션 도메인을 찾고 감사합니다. 모든 페더레이션 도메인은 federated domains.csv 파일로 출력됩니다.
any.sts가 구성된 페더레이션 도메인에 대해 경고합니다. 이는 Azure AD 백도어 도구의 사용을 나타냅니다. 변경이 어떻게 이루어졌는지 확인하고 다른 침해 증거를 식별하기 위해 포렌식 조사를 수행하는 것을 고려하십시오.!! Evidence of AAD backdoor found. Consider performing a detailed forensic investigation Domain name: foobar.com Domain federation name: Federation issuer URI: http://any.sts/16B45E3B
:bangbang: 이 스크립트는 [Azure AD Backdoor](https://github.com/Gerenios/AADInternals/blob/master/FederatedIdentityTools.ps1)의 지표인 발급자 URI와 페더레이션된 도메인을 식별했습니다. 이 백도어는 기본적으로 발급자 URI를 hxxp://any.sts로 설정합니다. 변경 사항이 어떻게 이루어졌는지 확인하고 추가 침해 증거를 식별하기 위해 포렌식 조사를 수행하는 것을 고려하십시오.```
!! A token signing certificate has a validity period of more than 365 days.
This may be evidence of a signing certificate not generated by AD FS.
Domain name: foobar.com
Federation issuer uri: http://sts.foobar.com
Signing cert not valid before: 1/1/2020 00:00:00
Signing cert not valid after: 12/31/2025 23:59:59
⚠️ 스크립트에서 표준 365일보다 더 긴 유효 기간을 가진 토큰 서명 인증서가 있는 페더레이션 도메인이 식별되었습니다. 관리자에게 문의하여 토큰 서명 인증서가 수동으로 관리되고 있는지, 해당 유효 기간이 예상된 것인지 확인하세요. 예상되지 않은 경우 법의학적 조사를 수행하는 것을 고려하세요.
이 모듈은 Azure AD PowerShell을 사용하여 Azure AD에서 서비스 주체를 찾고 감사합니다.
!! Identified first-party (Microsoft published) Service Principals with added credentials. Only in rare cases should a first-party Service Principal have an added credential. Verify that the added credential has a legitimate use case and consider further investigation if not
Object ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx App ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Display Name : Office 365 Exchange Online Key Credentials :
CustomKeyIdentifier : EndDate : 12/9/2017 2:10:29 AM KeyId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx StartDate : 12/9/2015 1:40:30 AM Type : AsymmetricX509Cert Usage : Verify Value :
:warning: 스크립트가 추가 자격 증명이 있는 자사(Microsoft) 서비스 주체를 식별했습니다. 자사 서비스 주체는 드문 경우를 제외하고 자격 증명을 추가해서는 *안 됩니다*. 하이브리드 모드이거나 이전에 하이브리드 모드였던 환경에서는 Exchange Online, Skype for Business 및 AAD 암호 보호 프록시 서비스 주체에 자격 증명이 추가되었을 수 있습니다. 이는 또한 사용자 환경에서의 UNC2452 활동의 결과물일 수 있습니다. 관리자와 상의하고 감사 로그를 검색하여 자격 증명이 합법적인지 확인하십시오. 또한 Azure AD 로그인 블레이드의 "서비스 주체 로그인" 탭을 사용하여 이 서비스 주체를 사용하는 테넌트에 대한 인증을 검색할 수 있습니다.```
!! Identified Service Principals with high-risk API permissions and added credentials.
Verify that the added credential has a legitimate use case and consider further investigation if not
Object ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
App ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Display Name : TestingApp
Key Credentials :
CustomKeyIdentifier :
EndDate : 1/7/2025 12:00:00 AM
KeyId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
StartDate : 1/7/2021 12:00:00 AM
Type : Symmetric
Usage : Verify
Value :
Password Credentials :
Risky Permissions : Domain.ReadWrite.All
⚠️ 이 스크립트는 고위험 API 권한을 가진 서비스 주체를 식별하고 자격 증명을 추가했습니다. 이는 일부 타사 또는 사용자 지정 응용 프로그램이 작동을 위해 추가 자격 증명을 필요로 하기 때문에 예상된 동작일 수 있습니다. 또한 사용자 환경에서 UNC2452 활동의 흔적일 수도 있습니다. 담당 관리자와 상의하고 감사 로그를 검색하여 자격 증명이 합법적인지 확인하십시오. Azure AD 로그인 블레이드의 "서비스 주체 로그인" 탭을 사용하여 이 서비스 주체를 사용하는 테넌트에 대한 인증을 검색할 수도 있습니다.
이 모듈은 Azure AD PowerShell을 사용하여 Azure AD의 응용 프로그램을 찾고 감사합니다.
!! High-privileged Application with credentials found. Validate that the application needs these permissions. Validate that the credentials added to the application are associated with a legitimate use case.
ObjectID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx AppID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx DisplayName: Acme Test App KeyCredentials: PasswordCredentials:
CustomKeyIdentifier : EndDate : 12/22/2021 4:01:52 PM KeyId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx StartDate : 12/22/2020 4:01:52 PM Value :
CustomKeyIdentifier : EndDate : 12/21/2021 6:32:54 PM KeyId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx StartDate : 12/21/2020 6:33:16 PM Value :
Risky Permissions: Mail.Read (Read mail in all mailboxes) Directory.Read.All (Read all data in the organization directory)
⚠️: 이 스크립트는 위험한 API 권한을 가진 애플리케이션을 식별하고 자격 증명을 추가했습니다. 일부 타사 또는 사용자 지정 애플리케이션이 작동하기 위해 추가 자격 증명이 필요한 경우 예상되는 현상일 수 있습니다. 이는 또한 사용자 환경에서 UNC2452 활동의 흔적일 수 있습니다. 관리자와 상담하고 감사 로그를 검색하여 자격 증명이 합법적인지 확인하세요.
### CSP(클라우드 솔루션 공급자) 프로그램 (Invoke-MandiantGetCSPInformation)
이 모듈은 테넌트가 CSP 또는 파트너에 의해 관리되는지, 위임된 관리가 활성화되어 있는지 확인합니다. 위임된 관리를 통해 CSP는 전역 관리자와 동일한 권한으로 고객 테넌트에 액세스할 수 있습니다. CSP 프로그램은 파트너의 테넌트에 강력한 보안 제어를 적용하지만, CSP를 손상시킨 위협 행위자는 고객 환경에 액세스할 수 있습니다. 조직은 파트너에게 위임된 관리자 권한이 필요한지 확인하고, 필요하지 않은 경우 제거해야 합니다. 파트너가 위임된 관리자 액세스를 유지해야 하는 경우 조건부 액세스 정책을 구현하여 액세스를 제한하는 것을 고려하세요.
조직은 [관리 센터](https://admin.microsoft.com)로 이동한 후 왼쪽 메뉴 표시줄에서 `설정` -> `파트너 관계`로 이동하여 파트너 관계를 확인하고 관리할 수 있습니다.
### 사서함 폴더 권한 (Get-MandiantMailboxFolderPermissions)
이 모듈은 테넌트의 모든 사서함을 감사하여 의심스러운 폴더 권한이 있는지 확인합니다. 특히, 이 모듈은 각 사서함의 "정보 저장소 최상위" 및 "받은 편지함" 폴더를 검사하고 "기본" 및 "익명" 사용자에게 할당된 권한을 확인합니다. "없음" 이외의 값이 있으면 사서함이 분석 대상으로 플래그 지정됩니다. 일반적으로 기본 및 익명 사용자는 사용자 받은 편지함에 대한 권한이 없어야 합니다. 그렇지 않으면 모든 사용자가 콘텐츠를 읽을 수 있기 때문입니다. 일부 조직에서는 이 권한이 있는 공유 사서함을 발견할 수 있지만 권장되는 방법은 아닙니다.
### 애플리케이션 가장 (Get-MandiantApplicationImpersonationHolders)