
Azure 및 O365 데이터에 대해 위협 헌팅 플레이북을 실행하는 클라우드 포렌식 PowerShell 모듈

클라우드 포렌식을 위해 Azure 및 O365 데이터에서 위협 헌팅 플레이북을 실행하는 Powershell 모듈입니다.
Exchange Online에서 UnifiedAuditLog에 읽기 전용 액세스 권한을 가지려면 다음 역할이 필요합니다: View-Only Audit Logs 또는 Audit Logs.
이러한 역할은 Exchange 관리 센터의 Compliance Management 역할 그룹에 기본적으로 할당됩니다.
참고: 귀하가 보안 분석가, 사고 대응자, 위협 헌터이고 조직에서 이러한 감사 로그에 대한 읽기 전용 액세스 권한을 제공하지 않는 경우, 탐지 및 대응 전략에 대해 심각하게 의문을 제기해야 합니다!
추가 정보:
참고: 관리자는 Azure 테넌시 클라우드 셸 또는 Azure에 연결된 로컬 PowerShell 인스턴스에서
Get-ManagementRoleEntry "*\Search-UnifiedAuditLog"를 실행하여 이러한 요구 사항을 확인할 수 있습니다.
ExchangeOnlineManagement(EXOv2)가 설치되어 있는지 확인하십시오. 웹에서 지침을 찾거나 the soc analyst scrolls에서 제 작은 KB로 직접 이동할 수 있습니다.
Import-Module .\source\AzureHunter.psd1다음만 수행하면 됩니다:
Install-Module AzureHunter -Scope CurrentUser
Import-Module AzureHunter
통합 감사 로그에는 Microsoft 365 관리 센터 또는 Azure 관리 포털에서 수행된 사용자, 그룹, 애플리케이션, 도메인 및 디렉터리 활동이 포함됩니다. Azure AD 이벤트의 전체 목록은 RecordTypes 목록을 참조하십시오.
UnifiedAuditLog는 ExchangeItems, SharePoint, Azure AD, OneDrive, 데이터 거버넌스, 데이터 손실 방지, Windows Defender 경고 및 격리 이벤트, Microsoft Defender for Office 365의 위협 인텔리전스 이벤트 등 다양한 클라우드 작업 유형에 대한 풍부한 데이터를 포함하고 있기 때문에 클라우드 포렌식 정보의 훌륭한 소스입니다!
AzureHunter는 Azure 및 O365 감사 로그에서 가장 높은 로그 밀도가 채굴 및 내보내기되도록 보장하는 유용한 논리를 구현합니다. 이를 위해 각 주기(배치)에 대해 두 가지 작업을 실행합니다:

AzureHunter 명령을 실행하기 전에 Connect-ExchangeOnline을 실행하는 것이 좋습니다. 프로그램은 활성 원격 세션을 확인하고 연결을 시도하지만 일부 PowerShell 버전에서는 이를 허용하지 않으며 직접 수행해야 합니다.
AzureHunter에는 두 가지 주요 명령이 있습니다: Search-AzureCloudUnifiedLog 및 Invoke-AzHunterPlaybook.
Search-AzureCloudUnifiedLog의 목적은 Azure에서 UnifiedAuditLog 레코드의 가장 높은 비율이 채굴되도록 보장하는 복잡한 논리를 구현하는 것입니다. 기본적으로 중복 제거 및 정렬된 레코드를 CSV 파일로 내보냅니다.
Invoke-AzHunterPlaybook의 목적은 playbooks 폴더에 저장된 헌팅 플레이북에 대한 유연한 인터페이스를 제공하는 것입니다. 이러한 플레이북은 누구나 자신의 분석 및 아이디어를 기여할 수 있도록 설계되었습니다. 현재까지는 두 가지 매우 간단한 플레이북인 AzHunter.Playbook.Exporter와 AzHunter.Playbook.LogonAnalyser만 개발되었습니다. Exporter는 데이터에 중복 제거 및 정렬 작업을 적용한 후 레코드를 내보냅니다. LogonAnalyser는 베타 모드로, Operations 속성이 UserLoggedIn인 이벤트를 추출합니다. 이는 플레이북으로 할 수 있는 작업의 예시이자 플레이북 구성이 얼마나 쉬운지 보여줍니다.
Search-AzureCloudUnifiedLog를 실행할 때 로그 배치당 실행할 플레이북 목록을 전달할 수 있습니다. Search-AzureCloudUnifiedLog는 Invoke-AzHunterPlaybook을 통해 배치를 플레이북에 전달합니다.
마지막으로 Invoke-AzHunterPlaybook은 독립적으로 사용할 수 있습니다. UnifiedAuditLog 레코드의 내보내기가 있는 경우 PowerShell 배열에 로드하여 이 명령에 전달하고 관련 플레이북을 지정할 수 있습니다.
Search-AzureCloudUnifiedLog -StartDate "2020-03-06T10:00:00" -EndDate "2020-06-09T12:40:00" -TimeInterval 12 -AggregatedResultsFlushSize 5000 -Verbose
이 명령은 다음을 수행합니다:
AggregatedResultsFlushSize 매개변수는 다운스트림 플레이북에서 처리할 레코드 배치를 지정합니다. 여기서는 총량이 5000에 도달하면 AzureHunter에 레코드 배치를 처리하도록 지시합니다. 이렇게 하면 수 시간 동안 방대한 레코드 범위가 CSV 파일로 내보내질 때까지 기다리지 않고 즉시 결과를 얻을 수 있습니다.UnifiedAuditLog 레코드를 CSV 파일로 내보냈다고 가정하면 다음을 수행할 수 있습니다:
$RecordArray = Import-Csv .\my-exported-records.csv
Invoke-AzHunterPlaybook -Records $RecordArray -Playbooks 'AzHunter.Playbook.UAL.LogonAnalyser'
쉼표로 구분하여 여러 플레이북을 실행할 수 있으며, 순차적으로 실행됩니다:
$RecordArray = Import-Csv .\my-exported-records.csv
Invoke-AzHunterPlaybook -Records $RecordArray -Playbooks 'AzHunter.Playbook.UAL.Exporter', 'AzHunter.Playbook.UAL.LogonAnalyser'
eDiscovery 요약 보고서를 CSV 파일로 내보냈다고 가정하면 다음을 수행할 수 있습니다:
$eDiscoReportFile = .\eDisco-Summary-Report-PersonOfInterest.csv
Invoke-AzHunterPlaybook -Records $eDiscoReportFile -Playbooks 'AzHunter.Playbook.eDisco.SummaryReportCleaner'
선택적으로 다음과 같이 플레이북에 일부 매개변수를 전달할 수 있습니다:
$eDiscoReportFile = .\eDisco-Summary-Report-PersonOfInterest.csv
Invoke-AzHunterPlaybook -Records $eDiscoReportFile -Playbooks 'AzHunter.Playbook.eDisco.SummaryReportCleaner' -PlayBookParameters @{"CsvRecordsBatchSize" = 700}
매개변수 "CsvRecordsBatchSize"는 플레이북에 레코드를 700개 단위로 디스크에 플러시하도록 지시합니다.
SolarWinds 공급망 침해 이후로 사이버 포렌식 전문가들의 깊은 대장간에서 많은 도구가 등장했으며, 사이버 블랙스미스 닌자들이 신중하게 개발했습니다. 이러한 도구는 일반적으로 Azure에서 클라우드 포렌식을 수행하는 데 도움을 줍니다. AzureHunter의 의도는 이 혼잡한 공간에 더 많은 소음을 추가하는 것이 아닙니다. 그러나 저는 이 공간의 일부 도구에서 관찰한 몇 가지 격차를 해결할 필요성을 느꼈습니다(틀릴 수도 있습니다. 다양한 도구가 있으며 모두 알지는 못하기 때문입니다):
UnifiedAuditLog용 Powershell API의 복잡성을 다루지 않습니다. 이 API는 대량의 데이터를 내보낼 때 매우 불안정하고 일관성이 없습니다. 저는 이러한 문제 중 일부를 해결하는 데 충분히 내결함성이 있는 인터페이스를 개발하고자 했으며, 오직 UnifiedAuditLog에만 집중했습니다. 이는 사용자, 애플리케이션 및 서비스에 대한 가장 관련성 높고 상세한 활동 로그를 포함하는 Azure 아티팩트이기 때문입니다.Playbooks 개발에 중점을 두지 않습니다. 저는 커뮤니티가 동일한 데이터에서 다양한 의미를 추출하는 새로운 플레이북을 만들고 공유할 수 있도록 돕는 간단한 프레임워크를 고안하고자 했습니다.그러나 Azure 클라우드 포렌식을 위한 더 많은 기능과 성숙한 애플리케이션을 찾고 있다면 다음 애플리케이션을 만든 사이버 보안 전문가들의 훌륭한 작업을 확인하는 것이 좋습니다:
더 포괄적인 도구 목록이 있을 것으로 확신하지만, 제가 생각해낸 것은 이것들입니다. 자유롭게 더 제안해 주십시오.
더 많은 정보를 원하시면:
이 프로젝트 및 기타 오픈 소스 프로젝트를 지원하는 모든 분들께 감사드립니다! 여러분은 저와 같은 사람들이 사이버 전사의 길을 걷고 커뮤니티에 양질의 도구를 제공할 수 있도록 도와주고 있습니다 :)