Microsoft Office (최근 파일, 신뢰할 수 있는 문서, 매크로 설정)¶
Office가 기록하는 내용¶
Microsoft Office는 사용자별로 NTUSER.DAT에, 버전 및 애플리케이션별로 다음을 보관합니다.
- 최근 파일과 위치: 애플리케이션이 연 문서인
File MRU와, 그 문서를 연 폴더인Place MRU가 있으며, 각 항목에는 마지막으로 연 시간이 있습니다. Microsoft 365는 로그인한 계정별 목록(User MRU\<account>)도 보관합니다. - 신뢰할 수 있는 문서: 사용자가 문서에서 편집 사용 또는 콘텐츠 사용을 클릭하면, Office는 이를
TrustRecords에 기억합니다. 문서의 경로, 신뢰된 시점, 매크로가 사용 설정되었는지 여부입니다. - 매크로 설정:
VBAWarnings(어떤 매크로가 실행되는지),BlockContentExecutionFromInternet(인터넷에서 받은 파일의 매크로가 차단되는지),AccessVBOM(프로그램이 VBA 프로젝트를 변경할 수 있는지), 그리고 문서의 매크로가 확인 없이 실행되는 폴더인 신뢰할 수 있는 위치입니다. 그룹 정책은Software\Policies아래에서 같은 설정을 지정할 수 있습니다.
악성 문서는 보통 사용자가 매크로를 사용 설정해야 합니다. 매크로가 사용 설정된 신뢰 레코드는 문서, 사용자, 시간을 하나로 연결합니다.
가장 타당한 결론: 사용자가 이 애플리케이션에서 이 문서를 열었습니다 (마지막으로는 이 시간에). 사용자가 이 시간에 이 문서의 편집 또는 매크로를 사용 설정했습니다. Office는 이러한 방식으로 매크로를 실행하도록 구성되어 있었습니다.
위치¶
C:\Users\<user>\NTUSER.DAT
Software\Microsoft\Office\<version>\<application>\File MRU Item 1, Item 2, …
Software\Microsoft\Office\<version>\<application>\Place MRU
Software\Microsoft\Office\<version>\<application>\User MRU\<account>\File MRU
Software\Microsoft\Office\<version>\<application>\Security\Trusted Documents\TrustRecords
Software\Microsoft\Office\<version>\<application>\Security VBAWarnings, …
Software\Microsoft\Office\<version>\<application>\Security\Trusted Locations\LocationN
Software\Policies\Microsoft\Office\<version>\<application>\Security by policy
버전: 16.0은 Office 2016 이상(2019, 2021, 2024, Microsoft 365), 15.0은 Office 2013, 14.0은 Office
2010, 12.0은 Office 2007입니다.
항목은 [F00000000][T01D86AF6D3C287B0][O00000000]*C:\Users\alice\report.docx와 같은 형태입니다. T는
마지막으로 연 시간(16진수 FILETIME)이며, 경로는 * 뒤에 옵니다. 신뢰 레코드는 24바이트입니다. 문서가 신뢰된
FILETIME 뒤에 마지막 4바이트에 플래그가 있으며, 매크로가 사용 설정된 경우 0x7FFFFFFF, 편집만 사용 설정된
경우 0x00000001입니다.
분석 시 주의 사항¶
- 시간.
LastOpenedUTC는 각 항목의 고유한 시간입니다.TrustedAtUTC는 사용자가 문서를 신뢰한 시점, 즉 편집 사용 또는 콘텐츠 사용을 클릭한 순간이며, 가장 최근에 연 시점보다 이전일 수 있습니다. - 매크로 사용 설정이지 실행이 아닙니다.
MacrosEnabled는 사용자가 문서의 매크로를 사용 설정했다는 뜻이며, 매크로가 실행되었다는 것이나 무엇을 했는지를 증명하지 않습니다. 프로세스 생성, Prefetch, PowerShell 로그 및 문서 자체와 상관 분석하십시오. - 경로는 Office가 저장한 그대로입니다. 신뢰 레코드는
%USERPROFILE%, 슬래시,file:///URL, URL 인코딩(%20)을 사용할 수 있는 경로로 문서를 지칭합니다. 클라우드 문서의 MRU 항목은 URL입니다. - 기본값과 실제 적용 정책. Office는 기본 신뢰할 수 있는 위치(
Templates,XLSTART,STARTUP, …)를 생성합니다. 위치의Date는 유용한 단서이지만 누가 만들었는지에 대한 증거는 아닙니다. 관리자, 스크립트, 정책, 복사된 레지스트리 설정도 이를 채울 수 있습니다.VBAWarnings가 없다는 것만으로는 실제 적용되는 매크로 정책을 확정할 수 없습니다. Office 버전, 인터넷 파일 표시 및 기타 관리 설정도 영향을 줍니다. Microsoft의 인터넷 매크로 차단 설명. - 삭제된 문서. 목록은 문서보다 오래 남으므로, 존재하지 않는 파일도 여기에 표시될 수 있습니다. 목록은 짧으며 Office의 고정되지 않은 항목 지우기와 정리 도구에 의해 지워집니다.
Juntei로 파싱하기¶
Usage: juntei parse-registry office <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Recursively find NTUSER.DAT hives
-f, --file <FILE> Parse one NTUSER.DAT
--log1/--log2 Supply transaction logs explicitly
--no-logs Do not replay logs
Output:
-o, --output <FILE> Save records
-t, --output-type <TYPE> csv, json, or jsonl
juntei parse-registry office -d evidence/ -o office.csv
juntei parse-registry office -f NTUSER.DAT -t jsonl | jq 'select(.MacrosEnabled == true)'
요약에는 매크로가 사용 설정된 문서, 매크로를 더 자유롭게 실행하게 하는 설정(VBAWarnings 1,
BlockContentExecutionFromInternet 0, AccessVBOM 1, AllowNetworkLocations 1), 사용자가 추가했거나 정책이
설정한 신뢰할 수 있는 위치, 그리고 마지막으로 연 문서가 표시됩니다.
출력 필드¶
| 필드 | 해석 |
|---|---|
Host, User, UserSID, SourcePath |
호스트, 프로필 소유자(경로 또는 셸 폴더에서), 시스템 ProfileList의 SID, 그리고 하이브. |
OfficeVersion, App |
버전 키(16.0)와 애플리케이션(Word, Excel, …). |
List |
File MRU, Place MRU, TrustRecords, Security 또는 Trusted Locations. |
Account |
User MRU 목록의 Microsoft 365 계정. |
Policy |
설정 또는 위치가 정책으로 지정되었는지 여부. |
MRU-Position, IsMostRecent |
목록 내 항목의 위치(Item 1이 0이며 가장 최근). |
Path |
문서 또는 폴더. 신뢰할 수 있는 문서의 저장된 경로. 신뢰할 수 있는 위치의 Path. |
LastOpenedUTC |
항목을 마지막으로 연 시간. |
TrustedAtUTC, MacrosEnabled, TrustFlags |
문서가 신뢰된 시간, 매크로가 사용 설정되었는지 여부, 그리고 레코드의 플래그. 알 수 없는 플래그는 MacrosEnabled를 비워 두고 진단 메시지를 생성합니다. |
Setting, Value |
매크로 설정과 그 값 및 의미(1 (all macros enabled)). 신뢰할 수 있는 위치의 키(Location3)와 그 밖의 값(AllowSubFolders=1; Date=…; Description=…). |
KeyPath, KeyLastWrittenUTC |
키와 키의 마지막 쓰기 시간. |
DataRaw |
디코딩되지 않을 때 값의 바이트(16진수). |
TransactionLogStatus, LogsApplied |
레지스트리 복구 컨텍스트. |
Problems |
*가 없거나 시간이 올바르지 않은 항목, 24바이트가 아닌 신뢰 레코드, Path가 없는 위치, 잘못된 유형. |
조사 전략¶
MacrosEnabled가 true인 것부터 시작합니다. 어떤 문서인지, 언제, 누가 했는지 확인합니다. 파일($MFT, USN 저널,Zone.Identifier), 그 출처(브라우저 및 메일 기록), 그리고 그다음에 무엇이 실행되었는지 찾습니다.- 매크로 설정과 신뢰할 수 있는 위치를 확인합니다. 모든 매크로 사용 설정, 인터넷 매크로 미차단, VBA 프로젝트
액세스, 또는 사용자가 추가한 위치(
Downloads,Temp, 네트워크 공유 내)는 기본 설정을 약화시킵니다. - 이동식 및 네트워크 위치를 포함한 문서 경로에 대해
LastOpenedUTC를 LNK 파일, Jump Lists, RecentDocs와 함께 타임라인에 배치합니다.