중요한 오피스 365 포렌식 이벤트들
MailItemsAccessed 이벤트는 Microsoft 365 고급 감사(또는 감사)의 일부로 도입된 첫 번째 중요한(가끔은 고가치) 감사 이벤트입니다. 그 도입은 부드럽거나 복잡하지 않았으며 지난 해 동안 경험한 Exchange Online 메일박스 감사에 관한 문제들에 기여했습니다. 이제 테넌트에서 MailItemsAccessed 감사 이벤트가 표시되고 있으며, 검증된 계정을 조사할 때 이러한 이벤트가 얼마나 유용한지 알고 싶었습니다.
E5 라이센스 필요
MailItemsAccessed 이벤트는 라이센스를 보유한 사용자가 Exchange Online 메일박스의 항목에 연결 프로토콜을 사용하여 액세스할 때 생성됩니다. 그러나 Office 365 E5 또는 Microsoft 365 E5 준수 애드온이 계정에 있는 경우에만 해당됩니다. 제 경우에는 Office 365 E5 라이선스를 소유하고 있으며, 고급 감사가 계획에서 하나의 앱으로 나타납니다(그림 1). 캡처된 후 이벤트는 다른 메일박스 감사 이벤트와 함께 Exchange Online에 의해 Office 365 감사 로그로 업로드됩니다.

두 가지 MailItemsAccessed 이벤트
MailItemsAccessed 이벤트에는 동기화와 바인드 두 가지 종류가 있습니다.
동기화 이벤트는 아웃룩 데스크톱 클라이언트가 메일함에서 메시지를 로컬 캐시(Windows 용 OST 또는 Mac용 OLM)로 동기화할 때 캡처됩니다. 동기화 중에 클라이언트는 메일함에서 모든 새로운 또는 변경된 항목의 복사본을 다운로드하고 로컬 복사에 적용할 삭제 사항을 기록합니다. 동기화 이벤트는 폴더에 대한 동기화가 발생했음을 기록합니다. 일반적인 경우에는, 받은 편지함, 보낸 편지함, 삭제된 항목 및 캘린더와 같이 메시지가 이동되는 다른 폴더에 대한 동기화 기록을 많이 볼 것으로 예상됩니다. 조사 관점에서 가정은 침해가 발생하고 아웃룩을 사용하여 폴더를 로컬 캐시로 동기화할 수 있다면, 해당 폴더의 모든 항목이 복사될 수 있다는 것입니다.
바인드 이벤트는 개별 메시지에 대한 액세스를 기록합니다. 감사 레코드의 수를 줄이기 위해 Exchange Online은 두 분 간의 기간 내에 메시지에 대한 액세스를 커버하는 단일 바인드 이벤트를 생성합니다. 따라서 바인드 이벤트는 단일 메시지나 열 개의 메시지에 대한 액세스를 커버할 수 있습니다.
사용자가 생성할 수 있는 이벤트 양을 감안하면, 두 일간 내에 내 계정에서 443 MailItemsAccessed 이벤트가 생성되었습니다. 그 중 대부분은 바인드 이벤트(394)이며, 그 중에서 312개는 받은 편지함에 있고 32개는 보낸 항목에 있습니다.
흥미로운 점은 교환 전송 서비스에서 처리를 기다리는 동안 항목이 존재하는 일시적인 폴더인 아웃박스에 대해 25개의 이벤트가 캡처되었다는 것입니다. 또한 Outlook이 Outlook 그룹에서 대화에 글을 게시할 때 사용되며, 이에 따라 아웃박스 폴더의 이벤트가 감사 레코드에 표시된 것입니다.
스로틀링 가능성
I don’t use email as heavily as I once did when I was a corporate VP, so expect heavier volumes for other mailboxes. The transfer of some communications to Teams has also reduced email volume in some tenants. However, I do use multiple clients (OWA, Outlook, and Outlook mobile), all of which are usually signed in and active, which increases the number of Bind events. In the case of very active mailboxes, if more than a thousand events are generated for a mailbox in less than 24 hours, Exchange Online stops generating MailItemsAccessed events for that mailbox for 24 hours. Microsoft says that less than 1% of Exchange Online mailboxes are throttled.
이벤트 검색
이제 우리는 기대할 이벤트에 대해 알았으니 조사 중에 어떻게 이벤트에 액세스할 수 있는지 알아볼까요? Microsoft 365 컴플라이언스 센터의 감사 로그 검색을 사용하는 것은 불가능합니다. 왜냐하면 거기서 이벤트들을 연관시키는 것이 불가능하기 때문입니다. 대신에 우리는 감사 로그에서 관련 있는 이벤트를 추출하고, 추가 분석을 용이하게 해주는 형태로 처리해야 합니다.
이를 위해 저는 PowerShell 스크립트를 사용하여 다음을 수행합니다:
- Search-UnifiedAuditLog cmdlet을 사용하여 MailItemsAccessed 이벤트를 찾습니다. 이 검색은 다른 날짜 범위와 사용자에 맞게 조정될 수 있습니다.
- 각 레코드를 처리하여 JSON 형식으로 된 AuditData 속성에서 정보를 추출합니다.
- 추가 처리를 수행하여 AuditData 정보를 더 명확하게 만듭니다. 예를 들어, 숫자 코드 대신에 로그온 유형을 텍스트(User, Delegate 또는 Admin)로 기록합니다.
- 가능하다면 메시지 추적을 수행하여 메시지의 제목을 검색합니다 (아래 참조).
- 처리된 레코드를 포함하는 CSV 파일을 생성합니다.
이 스크립트는 다음과 같이 보이는 감사 레코드를 다음과 같이 변환합니다:
RunspaceId : bb26bb84-41fe-4d3f-85dd-e800a4352e3d RecordType : ExchangeItemAggregated CreationDate : 7 Apr 2020 23:47:30 UserIds : [email protected] Operations : MailItemsAccessed AuditData : {"CreationTime":"2020-04-07T23:47:30","Id":"f5493f9a-57ce-4859-94bd-fd2ad38d5680","Operation": "MailItemsAccessed","OrganizationId":"b662313f-14fc-43a2-9a7a-d2e27f4f3478","RecordType":50,"ResultStatus":"Succeeded","UserKey":"1003BFFD805C87B0","UserType":0,"Version":1,"Workload":"Exchange","UserId":"[email protected]","ClientIPAddress":"2001:bb6:5f4f:f058:4163:e14a:1332:27c7","ClientInfoString":"Client=OutlookService;Outlook-iOS\/2.0;","ExternalAccess ":false,"InternalLogonType":0,"LogonType":0,"LogonUserSid":"S-1-5-21-458367025-2064581115-2950179075-392557","MailboxGuid":"0370f354-2752-4437-878d-cf0e5310a8d4","MailboxOwnerSid":"S-1-5-21-458367025-2064581115-2950179075-392557", "MailboxOwnerUPN":"[email protected]","OperationProperties":[{"Name":"MailAccessType","Value":"Bind"},{"Name":"IsThrottled","Value":"False"}],"OrganizationName":"office365itpros.onmicrosoft.com","OriginatingServer":"DB7PR04MB4346 (15.20.2878.014)\u000d\u000a","SessionId":"1f99e672-8141-4a22-9aa0-96357297e843","Folders":[{"FolderItems":[{"InternetMessageId":"<71ceaeec-6dc3-4452-839f-6db34dd95f95@DB5EUR01BG102.eop-EUR01.prod.protection.outlook.com>"}], "Id":"LgAAAAB+7ILpFNx8TrktaK8VYWerAQBe9CuwLc2fTK7W46L1SAp9AAAA2lHHAAAB","Path":"\\Inbox"}],"OperationCount":1} ResultIndex : 1 ResultCount : 443 Identity : f5493f9a-57ce-4859-94bd-fd2ad38d5680 IsValid : True ObjectState : Unchanged
TimeStamp : 7 Apr 2020 23:47 Mailbox : [email protected] User : [email protected] LogonType : User FolderId : LgAAAAB+7ILpFNx8TrktaK8VYWerAQBe9CuwLc2fTK7W46L1SAp9AAAA2lHHAAAB Folder : Inbox Access : Bind Operation : MailAccessType Throttled : False ClientIP : 2001:bb6:5f4f:f058:4163:e14a:1332:27c7 ClientInfo : Client=OutlookService;Outlook-iOS/2.0; SessionId : 1f99e672-8141-4a22-9aa0-96357297e843 Messages : (1) 71ceaeec-6dc3-4452-839f-6db34dd95f95@DB5EUR01BG102.eop-EUR01.prod.protection.outlook.com (Spam Notification: 3 New Messages)
구문 분석 및 정리된 감사 레코드는 더 쉽게 작업할 수 있습니다.
이메일 제목 없음
MailItemsAccessed 이벤트는 메시지 제목에 대한 정보를 제공하지 않습니다. 감사 이벤트에서 메시지에 대한 모든 참조는 메일 서버에서 생성된 고유한 값인 인터넷 메시지 식별자로 이루어집니다. 예를 들어:
Microsoft는 조사관에게 개인 정보를 노출시킬 수 있는 가능성 때문에 MailItemsAccessed 이벤트에 메시지 제목을 포함시키지 않을 수 있습니다. 이해하기는 하지만 SharePoint Online은 감사 레코드에서 문서 제목을 공개하고 있으며, 메시지 제목은 Office 365 콘텐츠 검색에서 조사관에게 공개됩니다.
감사 이벤트에는 인터넷 메시지 식별자만 포함되어 있기 때문에 조사관들은 감사 이벤트를 실제 메시지에 연결하는 문제에 직면하게 됩니다. 이는 중요한 이유입니다. 왜냐하면 공격자가 메일함에 침투했을 경우 접근한 메시지에 중요하거나 기밀이나 민감한 정보가 있는지 이해해야 하기 때문입니다.
메시지 추적 도움이 됩니다.
메시지 식별자를 메시지와 일치시키는 가장 쉬운 방법은 메시지 추적을 사용하는 것입니다. 그러나 대화형 메시지 추적(Microsoft 365 준수 센터에서 제공) 또는 Get-MessageTrace cmdlet은 10일 이하의 오래된 메시지를 추적할 수 있습니다. 이러한 이유로 감사 이벤트를 처리할 때 스크립트는 10일 미만의 메시지에 대한 제목을 검색하기 위해 Get-MessageTrace cmdlet을 호출합니다. 오래된 메시지에 대해서는 호출하지 않고 대신 일부 설명 텍스트가 제목 대신 삽입됩니다. MailItemsAccessed Bind 이벤트에서 찾은 일련의 메시지에 대한 출력은 다음과 같이 보입니다. 제목의 존재로 중요한 메시지가 침해되었는지 쉽게 이해할 수 있습니다.
(1) CH2PR00MB0763CF5D33C5C47B0E0700B6A1C30@CH2PR00MB0763.namprd00.prod.outlook.com (Re: Counting Distribution list members);
(2) [email protected] (TechSmith Influencer News – Camtasia 2020 sneak peek, help for organizations transitioning to remote work and learning, and more!);
(3) 20200407140628.27860.640645555.swift@theirishtimes.activehosted.com (Coronavirus: Ireland’s infection peak may have passed, toll could hit 400 by August, report forecasts);
(4) DM6PR00MB07650C27AC4B4FA1245BA27BC4C30@DM6PR00MB0765.namprd00.prod.outlook.com (Presentation on ‘Inclusive Meetings’ today)
오래된 메시지 추적
오래된 메시지의 경우 역사적 검색을 실행하여 11~90일 전의 메시지 세부 정보를 검색할 수 있지만 cmdlet은 백그라운드 검색을 설정하므로 상호 작용적으로 실행할 수는 없습니다. Exchange Online은 90일을 넘는 메시지 추적 데이터를 보유하지 않으므로, 공격자가 오래된 이메일에 접속하는 경우 문제가 발생합니다. 반면에 오래된 이메일은 최신 메시지만큼 민감하지 않을 수 있습니다.
감사 이벤트에서 찾은 메시지 식별자를 이전 이메일과 연결할 수 있지만, 일부 검색 가능한 저장소에 데이터가 없다면 이 작업은 귀찮은 일입니다. 수동적으로 접근하는 방법은 Outlook 또는 OWA를 사용하여 감사 이벤트 주변의 날짜에 사용자의 메일함의 메시지를 확인하는 것입니다. 각 메시지에 대해 Message Header Analysis 애드인을 사용하여 메시지 헤더를 보고, 이 중에는 인터넷 메시지 식별자가 포함되어 있습니다 (그림 2).

감사 이벤트 해석
내 스크립트(당신이 GitHub에서 다운로드할 수 있는)는 PowerShell 목록에 결과를 출력하여 폴더 당 바인드 이벤트 수와 같은 통계를 생성하기 쉽게 만듭니다. 목록은 또한 초기 분석을 위해 PowerShell의 Out-GridView 창으로 파이프됩니다 (그림 3) 및 장기적으로 고려할 CSV 파일에 파이프됩니다.
Out-GridView는 발생한 일들을 빠르게 SessionId 또는 클라이언트 IP 주소로 이벤트를 정렬할 수 있기 때문에 일어난 일에 대한 초기 핸들을 얻는 좋은 방법입니다. Microsoft의 문서는 이러한 필드를 사용하여 이벤트를 연결하여 공격자가 수행한 작업을 강조하는 방법에 대해 설명합니다.
메일함에서 발생하는 일들에 대한 유용한 통찰
MailItemsAccessed 감사 이벤트는 사용자가 메일함 항목에 액세스할 때 발생하는 일들에 대한 유용한 통찰을 제공합니다. 이벤트에 게시된 정보가 더 접근 가능하고 완전히 나오기를 바라지만, 현재의 상황이 이전보다 나은 것입니다.
감사 이벤트를 생성하고 저장하는 데는 비용이 소요되는데, 특히 이벤트가 풍부할 때 그렇습니다. Microsoft가 MailItemsAccessed를 중요한 이벤트로 간주하는 이유를 이해하고, 앞으로 이 기준과 일치하는 다른 이벤트들을 기대합니다. 이 감사 이벤트가 E5 기능이라는 것이 안타깝습니다. E3 테넌트도 공격을 받으니까요!
Source:
https://petri.com/interpreting-the-office-365-mailitemsaccessed-audit-event/