Windows Amcache 아티팩트 분석은(는) 무엇을 하나요?
사용 시기
- 침해 대응 중 Windows 시스템에 존재하거나 실행된 프로그램 확인
- Amcache의 SHA-1 해시를 알려진 악성코드 데이터베이스(VirusTotal, CIRCL, MISP)와 연계
- 포렌식 조사를 위한 애플리케이션 설치 및 실행 타임라인 구축
- 파일 삭제 후에도 Amcache에 흔적을 남기는 삭제된 실행 파일 식별
- 휴대용 또는 승인되지 않은 응용 프로그램의 존재를 문서화하여 내부자 위협 조사
- 루트킷 또는 악성 커널 모듈 탐지를 위한 드라이버 로딩 기록 분석
프로그램 실행의 유일한 증거로 사용하지 마십시오. Amcache는 파일 존재와 메타데이터 등록을 증명하지만, ShimCache(AppCompatCache)와 Prefetch가 더 강력한 실행 증거를 제공합니다. 최종 분석을 위해 세 가지 아티팩트를 함께 사용하십시오.
사전 요구 사항
- 포렌식 이미지 또는 라이브 트라이어지 사본
C:\Windows\appcompat\Programs\Amcache.hve(관련.LOG1,.LOG2트랜잭션 로그 포함) - Eric Zimmerman의 AmcacheParser (
AmcacheParser.exe): https://ericzimmerman.github.io/ 에서 다운로드 - Eric Zimmerman의 Timeline Explorer: 파싱된 CSV 출력 확인용
- 선택 사항: Registry Explorer: 수동 하이브 검사용
- 알려진 정상 실행 파일의 SHA-1 화이트리스트(예: NSRL 해시셋): 필터링 용도
- .NET 6+ 런타임 설치 (현재 EZ 도구에 필요)
- CSV 결과를 위한 출력 디렉터리에 대한 쓰기 권한
워크플로
1단계: Amcache.hve 파일 획득
포렌식 이미지 또는 라이브 시스템에서 Amcache 하이브를 추출합니다.
# 라이브 시스템에서 (관리자 권한 및 원시 디스크 복사 도구 필요)
# Amcache.hve는 시스템에 의해 잠겨 있음; 원시 디스크 복사 도구 사용
# 옵션 A: FTK Imager - 이미지를 마운트하고 다음으로 이동:
# C:\Windows\appcompat\Programs\Amcache.hve
# 함께 수집: Amcache.hve.LOG1, Amcache.hve.LOG2
# 옵션 B: KAPE를 사용한 자동 트라이어지 수집
kape.exe --tsource C: --tdest D:\Evidence\%m --target Amcache
# 옵션 C: 마운트된 포렌식 이미지에서 (E: = 마운트된 이미지)
copy "E:\Windows\appcompat\Programs\Amcache.hve" D:\Evidence\
copy "E:\Windows\appcompat\Programs\Amcache.hve.LOG1" D:\Evidence\
copy "E:\Windows\appcompat\Programs\Amcache.hve.LOG2" D:\Evidence\
항상 하이브와 함께 트랜잭션 로그 파일(.LOG1, .LOG2)을 수집하십시오. AmcacheParser는 이러한 로그에서 커밋되지 않은 트랜잭션을 재생하여 가장 완전한 데이터를 복구합니다.
2단계: AmcacheParser로 Amcache 파싱
획득한 하이브에 대해 AmcacheParser를 실행합니다.
# CSV 출력을 사용한 기본 파싱
AmcacheParser.exe -f "D:\Evidence\Amcache.hve" --csv "D:\Evidence\Output"
# 알려진 정상 항목(NSRL)을 제외하는 SHA-1 화이트리스트를 사용한 파싱
AmcacheParser.exe -f "D:\Evidence\Amcache.hve" -w "D:\Whitelists\nsrl_sha1.txt" --csv "D:\Evidence\Output"
# SHA-1 포함 목록 사용 (알려진 악성 해시와 일치하는 항목만 표시)
AmcacheParser.exe -f "D:\Evidence\Amcache.hve" -b "D:\IOCs\malware_sha1.txt" --csv "D:\Evidence\Output"
# 삭제된 항목 포함, 고정밀 타임스탬프 사용
AmcacheParser.exe -f "D:\Evidence\Amcache.hve" --csv "D:\Evidence\Output" -i --mp
AmcacheParser는 출력 디렉터리에 여러 CSV 파일을 생성합니다.
| 출력 파일 | 내용 |
|---|---|
Amcache_AssociatedFileEntries.csv | SHA-1 해시, 경로, 크기 및 타임스탬프가 있는 파일 항목 |
Amcache_UnassociatedFileEntries.csv | 이전 Amcache 형식의 분리된 파일 항목 |
Amcache_ProgramEntries.csv | 설치된 프로그램 메타데이터 (이름, 게시자, 버전, 설치 날짜) |
Amcache_DeviceContainers.csv | USB 및 장치 연결 기록 |
Amcache_DevicePnps.csv | 플러그 앤 플레이 장치 드라이버 정보 |
Amcache_DriverBinaries.csv | 경로 및 해시가 포함된 로드된 드라이버 바이너리 |
3단계: 의심스러운 프로그램에 대한 파일 항목 분석
Timeline Explorer에서 AssociatedFileEntries.csv를 열고 주요 열을 검토합니다.
검토해야 할 주요 열:
- ProgramId : 파일을 상위 프로그램 항목에 연결
- SHA1 : 위협 인텔리전스 조회를 위한 해시
- FullPath : 디스크상의 원본 파일 위치
- FileSize : 실행 파일 크기
- FileKeyLastWriteTimestamp : Amcache 항목이 마지막으로 업데이트된 시간
- Name : 파일 이름
- Publisher : 코드 서명 게시자 (비어 있음 = 서명되지 않음)
- BinProductVersion : PE 헤더의 버전 문자열
- LinkDate : PE 컴파일 타임스탬프 (타임스톰핑 탐지에 유용)
의심스러운 지표에 대해 필터링합니다.
# Timeline Explorer에서 다음 필터를 적용합니다.
# 1. 서명되지 않은 실행 파일 찾기 (잠재적 악성)
Publisher 열 = (비어 있음)
# 2. 의심스러운 경로에서 실행 파일 찾기
FullPath 포함: \temp\, \appdata\, \downloads\, \public\, \programdata\
# 3. 침해 기간 내 최근 타임스탬프가 있는 실행 파일 찾기
FileKeyLastWriteTimestamp 사이: 2026-03-15 00:00:00 and 2026-03-16 00:00:00
# 4. 의심스러운 컴파일 날짜가 있는 실행 파일 찾기 (타임스톰핑)
LinkDate 연도 < 2015 AND FileKeyLastWriteTimestamp 연도 = 2026
4단계: SHA-1 해시를 위협 인텔리전스와 연계
SHA-1 해시를 추출하고 악성코드 데이터베이스와 대조합니다.
# 파싱된 출력에서 고유 SHA-1 해시 추출
# PowerShell을 사용하여 SHA1 열 추출
Import-Csv "D:\Evidence\Output\Amcache_AssociatedFileEntries.csv" |
Select-Object -ExpandProperty SHA1 -Unique |
Where-Object { $_ -ne "" } |
Out-File "D:\Evidence\Output\extracted_hashes.txt"
# vt-cli를 사용하여 VirusTotal에서 해시 확인
foreach ($hash in Get-Content "D:\Evidence\Output\extracted_hashes.txt") {
vt file $hash --format json | Select-Object -Property meaningful_name, last_analysis_stats
}
# CIRCL hashlookup에서 해시 확인
foreach ($hash in Get-Content "D:\Evidence\Output\extracted_hashes.txt") {
Invoke-RestMethod -Uri "https://hashlookup.circl.lu/lookup/sha1/$hash"
}
# NSRL과 교차 참조하여 알려진 정상 vs. 알 수 없음 식별
# NSRL에 없는 알 수 없는 해시는 더 자세한 조사가 필요함
5단계: 승인되지 않은 설치에 대한 프로그램 항목 분석
ProgramEntries.csv를 검토하여 공격자가 설치했을 수 있는 소프트웨어를 확인합니다.
ProgramEntries의 주요 열:
- ProgramName : 설치된 응용 프로그램의 표시 이름
- ProgramVersion : 버전 문자열
- Publisher : 소프트웨어 게시자
- InstallDate : 프로그램이 설치된 시기
- Source : 설치 소스 (msi, exe 등)
- UninstallKey : 레지스트리 제거 경로
- PathsList : 설치 디렉터리
다음을 확인합니다.
- 원격 액세스 도구 (AnyDesk, TeamViewer, ngrok, Chisel)
- 해킹 도구 (Mimikatz, PsExec, Cobalt Strike)
- 터널링 유틸리티 (plink, socat, WireGuard)
- 침해 기간 동안 설치된 프로그램
- 비표준 위치에 설치된 프로그램
6단계: 루트킷 증거에 대한 드라이버 바이너리 분석
의심스러운 로드된 드라이버에 대해 DriverBinaries.csv를 검토합니다.
DriverBinaries의 주요 열:
- DriverName : 드라이버 이름
- DriverInBox : Windows와 함께 제공되었는지 여부 (false = 타사)
- DriverSigned : 드라이버에 유효한 서명이 있는지 여부
- DriverTimeStamp : 컴파일 타임스탬프
- Product : 드라이버와 관련된 제품
- ProductVersion : 드라이버 버전
- SHA1 : 드라이버 바이너리의 해시
DriverInBox = false 및 DriverSigned = false로 필터링하여 루트킷이거나 BYOVD(Bring Your Own Vulnerable Driver) 공격에 사용된 취약한 드라이버일 수 있는 서명되지 않은 타사 드라이버를 찾습니다.
7단계: Amcache 데이터에서 타임라인 구축
Amcache 데이터를 다른 아티팩트와 결합하여 포괄적인 타임라인을 만듭니다.
# Timeline Explorer를 사용하여 Amcache CSV를 다른 EZ 도구 출력과 병합
# Timeline Explorer에 다음 CSV를 로드:
# - Amcache_AssociatedFileEntries.csv (파일 증거)
# - Amcache_ProgramEntries.csv (설치 증거)
# - PECmd.exe의 Prefetch 출력 (실행 증거)
# - AppCompatCacheParser.exe의 ShimCache 출력 (실행 증거)
# 모든 항목을 타임스탬프별로 정렬하여 공격 시퀀스 재구성
# Timeline Explorer는 다중 파일 로드 및 열 기반 정렬 지원
# 결합된 타임라인 내보내기
# 파일 > CSV로 저장 > combined_timeline.csv
주요 개념
| 용어 | 정의 |
|---|---|
| Amcache.hve | 응용 프로그램 호환성 목적으로 응용 프로그램, 파일 및 드라이버에 대한 메타데이터를 저장하는 C:\Windows\appcompat\Programs\Amcache.hve의 Windows 레지스트리 하이브 |
| 연결된 파일 항목 (Associated File Entry) | 특정 프로그램 설치에 연결된 Amcache 레코드로, 파일 경로, 크기, 해시 및 타임스탬프 포함 |
| 분리된 파일 항목 (Unassociated File Entry) | 이전 형식의 분리된 Amcache 레코드로, 프로그램 항목에 연결되지 않음. Windows 7/8 시스템에서 일반적 |
| 프로그램 항목 (Program Entry) | 설치 메타데이터(프로그램 이름, 버전, 게시자, 설치 날짜 및 제거 키)가 포함된 Amcache 레코드 |
| SHA-1 해시 | 등록된 각 파일에 대해 Amcache에 저장된 암호화 해시로, 위협 인텔리전스 조회를 통한 악성코드 식별 가능 |
| LinkDate | 실행 파일 헤더에 포함된 PE 컴파일 타임스탬프. 파일 시스템 타임스탬프와의 불일치는 타임스톰핑을 나타낼 수 있음 |
| 트랜잭션 로그 | 커밋되지 않은 레지스트리 트랜잭션이 포함된 .LOG1 및 .LOG2 파일. AmcacheParser가 완전한 데이터 복구를 위해 재생 |
| NSRL (National Software Reference Library) | 알려진 상용 소프트웨어의 SHA-1 해시 데이터베이스(NIST 유지 관리). 무해한 항목을 필터링하는 화이트리스트로 사용 |
확인 목록
- Amcache.hve 및 트랜잭션 로그(LOG1, LOG2)가 포렌식 이미지에서 수집되었습니다.
- AmcacheParser가 오류 없이 예상되는 모든 CSV 출력 파일을 생성했습니다.
- SHA-1 해시가 추출되어 VirusTotal 또는 CIRCL hashlookup과 대조 확인되었습니다.
- 의심스러운 경로에 있는 서명되지 않은 실행 파일이 추가 분석을 위해 플래그 지정되었습니다.
- 프로그램 항목이 침해 기간 내 모든 소프트웨어 설치를 보여줍니다.
- 드라이버 바이너리가 서명되지 않았거나 기본 제공되지 않은 항목에 대해 확인되었습니다.
- 타임스톰핑 탐지를 위해 LinkDate와 FileKeyLastWriteTimestamp 비교가 수행되었습니다.
- Amcache 결과가 실행 확인을 위해 Prefetch 및 ShimCache와 연계되었습니다.
- 최종 타임라인이 Amcache 데이터를 다른 포렌식 아티팩트와 통합합니다.