
아티팩트(MFT, USN, 레지스트리 등)를 수집, 파싱, 연관 분석하여 AI 지원 분석과 법정 제출 등급의 증거 봉인 기능으로 타임라인을 재구성하는 오픈소스 Windows 포렌식 엔진입니다.
Windows를 위한 포렌식 타임머신.
Crow-Eye는 단지 탐지만 하지 않습니다 — 타임라인에서 실제로 무슨 일이 일어났는지를 재구성하며, 수집부터 출처 기록까지 추적 가능한 판정에 이르기까지 전 과정을 다룹니다.
Crow-Eye는 수집, 분석, 검증, 인텔리전스, AI를 하나로 통합하는 오픈소스(GPL-3.0) Windows 포렌식 엔진입니다. 대부분의 보안 도구는 *"이게 나쁜가?"*라고 묻고 정상으로 보이는 것은 모두 무시합니다. Crow-Eye는 다른 질문을 던집니다: "무슨 일이 있었나?" — 의심스러운 활동이든 아니든 모든 활동을 상호 연관시켜 시스템에서 실제 발생한 사건들의 정확한 순서를 재구성하므로, 조사의 진실은 알림에서 추측되는 것이 아니라 증거로부터 재구성됩니다.
이러한 재구성 우선 설계는 APT 및 국가 주도 위협을 사냥하는 데 정확히 필요한 것입니다: 정교한 공격자는 합법적인 도구(powershell.exe, PsExec, certutil)와 행동의 순서 속에 숨어 있으며, 정상으로 보이는 것을 무시하는 도구에는 보이지 않습니다. Crow-Eye는 어떤 것도 무시하지 않고 로그 변조와 안티포렌식에서도 살아남는 실행 아티팩트를 기반으로 추론하기 때문에 공격은 숨을 수 없습니다. 동일한 엔진은 일상적인 DFIR 작업과 컴퓨터에서 무슨 일이 있었는지 알고 싶은 비전문가에게도 쉽게 접근할 수 있도록 유지됩니다.
Crow-Eye는 매우 다양한 작업 흐름에서 사용됩니다. 각 사용자는 다른 문을 통해 엔진에 들어옵니다:
어떤 수집 도구든 작동합니다. Crow-Eye는 자체 수집 도구를 요구하지 않습니다. 오프라인 가져오기를 Velociraptor, KAPE, EDR 수집 패키지 또는 기타 수집 도구가 생성한 원시 아티팩트 폴더에 지정하면 지원되는 아티팩트를 인덱싱하고 해당 폴더에서 오프라인 파서를 실행합니다. 별도로 Plaso, Autopsy, Volatility 또는 다른 도구의 출력물은 증거 가져오기를 통해 CSV, JSON 또는 SQLite로 가져와 기본 아티팩트와 함께 상호 연관시킬 수 있습니다.
Crow-Eye는 통합 루프로 구축되었습니다 — 각 단계는 다음 단계로 이어지며, 원시 디스크에서 방어 가능한 판정까지 연결됩니다.
Crow-Eye는 파서 묶음이 아닌 통합 파이프라인입니다. 증거는 한 방향으로 흐르며, 모든 단계는 소스 레코드에 대한 연결을 유지합니다.```mermaid %%{init: {"flowchart": {"nodeSpacing": 60, "rankSpacing": 70, "curve": "basis"}, "themeVariables": {"fontSize": "17px", "fontFamily": "system-ui, sans-serif"}} }%% flowchart TB
%% ═══════════ 1. EVIDENCE SOURCE ═══════════
S1["Live Windows system"]
S2["Forensic image
E01 · VHDX · VMDK · Raw"]
S3["Collected artifacts
Velociraptor · KAPE · EDR"]
S4["Third-party output
Plaso · Autopsy · Volatility"]
%% ═══════════ 2. INGEST ═══════════
I1["CROW-CLAW
live acquisition"]
I2["IMAGE PARSING
direct, no mounting"]
I3["OFFLINE IMPORTER
SCAN → COLLECT → PARSE"]
I4["IMPORT EVIDENCE
CSV · JSON · SQLite"]
PARSERS["ARTIFACT PARSERS<br/>18 artifact types · live and offline"]
%% ═══════════ 3. CASE ═══════════
CASE[("CASE DATABASES
Target_Artifacts/
Imported_Evidence/")]
%% ═══════════ 4. ANALYSIS ═══════════
TL["INTERACTIVE TIMELINE
heat map · week · day"]
UB["USER BEHAVIOR ANALYTICS
40 detections · plain-English story"]
CE["CORRELATION ENGINE
Feathers → Wings → Engines → Pipelines"]
RES[("Correlation results")]
DL["DYNAMIC LINKING
non-destructive enrichment overlay"]
INTEL[("Crow_Intelligence.db
SID · MAC · hash · GUID → name")]
%% ═══════════ 5. AI LAYER ═══════════
EYE["EYE
GEP-governed AI assistant"]
NM["NARRATIVE MAP
hash-chained case memory"]
COMP["COMPLIANCE
live GEP status · EvidenceSeal audit"]
OUT["LIVING REPORT<br/>CSV · JSON · HTML"]
%% ═══════════ FLOW ═══════════ S1 --> I1 S2 --> I2 S3 --> I3 S4 --> I4
I1 --> PARSERS
I2 --> PARSERS
I3 --> PARSERS
PARSERS -- "parsed artifacts" --> CASE
I4 -- "verbatim copy or<br/>converted to feather" --> CASE
CASE -- "read-only" --> TL
CASE -- "read-only" --> UB
CASE -- "read-only" --> CE
CASE -- "read-only" --> DL
CE --> RES
DL --> INTEL
CASE -- "read-only queries" --> EYE
RES -. "queried on demand" .-> EYE
EYE <== "verdict · narrative · evidence" ==> NM
EYE -- "audited by" --> COMP
EYE -- "report_* tools" --> OUT
%% ═══════════ STYLE ═══════════ classDef src fill:#334155,stroke:#94a3b8,stroke-width:2px,color:#f1f5f9 classDef ing fill:#0f766e,stroke:#2dd4bf,stroke-width:2px,color:#f0fdfa classDef store fill:#92400e,stroke:#fbbf24,stroke-width:3px,color:#fffbeb classDef ana fill:#1e40af,stroke:#60a5fa,stroke-width:2px,color:#eff6ff classDef ai fill:#6b21a8,stroke:#c084fc,stroke-width:2px,color:#faf5ff classDef out fill:#166534,stroke:#4ade80,stroke-width:2px,color:#f0fdf4
class S1,S2,S3,S4 src
class I1,I2,I3,I4,PARSERS ing
class CASE,RES,INTEL store
class TL,UB,CE,DL ana
class EYE,NM,COMP ai
class OUT out
linkStyle default stroke-width:2px
*증거 소스 → 수집 → 사례 데이터베이스 → 분석 → AI 계층 → 보고서*
**읽는 방법:**
| 단계 | 중요 사항 |
|---|---|
| ① → ② | **사례에 들어가는 네 개의 독립된 통로.** Crow-Eye 자체 수집기가 필요하지 않습니다. Velociraptor, KAPE 또는 EDR 패키지의 폴더는 Offline Importer를 통해 들어가고, 타사 CSV/JSON/SQLite는 Import Evidence를 통해 들어갑니다. |
| ② → ③ | 모든 것이 한곳, 즉 **사례 데이터베이스**로 수렴됩니다. 파싱된 아티팩트는 `Target_Artifacts/`에 들어가고, 가져온 타사 증거는 `Imported_Evidence/`에 들어가 자동으로 탐지됩니다. |
| ③ → ④ | **세 가지 분석 경로는 서로 독립적입니다.** Timeline과 UBA는 사례 데이터베이스를 직접 읽습니다. 둘 다 상관 분석 실행이 필요하지 않습니다. Correlation Engine은 *추가* 계층이지 필수 조건이 아닙니다. |
| ③ → ④ | **Dynamic Linking은 Timeline 및 UBA와 나란히 위치합니다** — 사례 데이터베이스의 네 번째 독립 판독기입니다(Timeline 시각화와는 아무 관련이 없습니다). ID 매핑(SID → 사용자 이름, MAC → 네트워크, 해시/GUID → 앱)을 사례별 `Crow_Intelligence.db`로 수집한 다음, 비파괴적인 `ATTACH` + `LEFT JOIN`을 통해 **아티팩트 데이터 테이블에 인라인으로** 해당 컨텍스트를 오버레이합니다. 레코드가 *읽히는* 방식만 변경하며 증거 자체는 절대 변경하지 않습니다. |
| ④ → ⑤ | Eye는 사례 데이터베이스를 직접 쿼리하고 **요청 시** 상관 분석 결과를 가져올 수 있습니다. 증거 자체에는 절대 접촉하지 않으며, Crow-Eye가 실행하고 기록하는 도구 호출을 생성합니다. |
| ⑤ → 보고서 | **Living Report는 Eye 단독으로** `report_*` 도구를 통해 작성됩니다. Timeline과 UBA는 분석 표면일 뿐이며 보고서에 기록하지 않습니다. 사례 수준의 분석 결과는 [Search & Export](#-search--export)를 통해 별도로 내보낼 수 있습니다. |
| ⑤ ↔ | **Narrative Map은 양방향입니다**: Eye도 쓰고 사용자도 쓰며, 그 내용은 매 턴 Eye의 프롬프트에 주입됩니다. 그것은 기억이며, 사용자가 명령할 수 있습니다. |
| ⑤ ⟳ | **Compliance 페이지는 Eye를 감사합니다.** Eye가 수행하는 모든 도구 호출은 **EvidenceSeal** 해시 체인에 고정됩니다. 페이지는 해당 체인과 `EYE_Logs/`에서 검증된 규칙별 **GEP** 상태(10가지 원칙)를 실시간으로 렌더링하며 `audit_trail.json`으로 내보낼 수 있습니다. |
**독립적인 단계.** Timeline과 UBA는 사례 아티팩트 데이터베이스를 **직접** 읽습니다. 둘 다 상관 분석 실행이 필요하지 않으며, Timeline은 Correlation Engine에 의존하지 않습니다(자체적인 경량 시간 그룹화를 적용합니다). Correlation은 Eye가 결과를 쿼리할 수 있는 추가 분석 계층입니다.
**설계상 읽기 전용.** 파싱은 사례 데이터베이스에 기록합니다. 모든 다운스트림 단계(UBA, Timeline, 상관 분석 뷰어, Eye)는 해당 데이터베이스를 **읽기 전용**으로 엽니다. 원본 증거는 절대 수정되지 않습니다. [Dynamic Linking](#-analysis-modes)은 사례 데이터베이스를 읽어 ID 매핑의 사례별 `Crow_Intelligence.db`를 구축하고, 행을 다시 쓰는 대신 비파괴적인 `ATTACH` + `LEFT JOIN` 쿼리를 통해 아티팩트 데이터 테이블을 인라인으로 보강합니다.
**설계상 통제됨.** Eye가 취하는 모든 행동은 변조 방지 **EvidenceSeal** 해시 체인에 고정되며, **Compliance** 페이지는 [Ghassan Elsman Protocol (GEP)](https://github.com/ghassan-elsman/crow-eye/blob/HEAD/eye/docs/GEP_standard.md)에 대해 Eye를 지속적으로 검증합니다. 규칙별 실시간 상태를 `EYE_Logs/audit_trail.json`으로 내보낼 수 있습니다.
## 📥 다운로드 및 설치
> **권장:** 공식 웹사이트에서 패키지된 Windows 빌드(**MSI 설치 프로그램 / EXE**)를 받으세요. Python 설정이 필요 없으며 바로 실행됩니다.
### ▶️ [Windows용 Crow-Eye 다운로드 → crow-eye.com/download](https://crow-eye.com/download)
**설치된 MSI/EXE 빌드는 Crow-Eye를 실행하는 권장 방법**이며, 업데이트에서 **최우선 순위**입니다:
- 🛡️ **가장 빠른 수정.** 문제가 발견되거나 버그가 신고되면 **가능한 한 빨리** 업데이트된 EXE를 릴리스합니다. 패키지 빌드에 수정 사항이 가장 먼저 반영됩니다.
- 🔄 **내장 자동 업데이트.** 설치된 앱에서 **설정 → 업데이트**를 열어 **업데이트를 확인하고 자동으로 설치**할 수 있습니다. 수동 재설치가 필요 없습니다.
- 📦 **설정 불필요.** Python, Node 또는 종속성 설치가 필요 없습니다.
> 소스에서 실행하는 것을 선호하시나요? 아래의 **[빠른 시작](#-quick-start)**를 참조하세요. 소스 빌드는 기여자를 위한 것으로 **자동 업데이트 기능을 포함하지 않습니다**. 자동 업데이트를 원한다면 MSI/EXE를 사용하세요.
## 🚀 빠른 시작
### 옵션 A — 설치 빌드(권장)
[crow-eye.com/download](https://crow-eye.com/download)에서 **MSI/EXE**를 다운로드하고 설치한 다음, 관리자 권한으로 **Crow-Eye**를 실행하세요. 사례를 만들고 분석을 시작하세요.
### 옵션 B — 소스에서 실행(개발자)
> 기여자와 고급 사용자를 위한 방법입니다. 이 경로에는 **자동 업데이트 기능이 포함되지 않습니다**. 자동 업데이트를 원한다면 MSI/EXE를 사용하세요.
**요구 사항**(첫 실행 시 자동으로 설치됨):
- Python 3.12.4
- **Node.js 및 npm** — **Timeline Visualization**에 필요
- 주요 패키지: PyQt5, python-registry, pywin32, pandas, streamlit, altair, olefile, windowsprefetch, sqlite3, colorama, setuptools
**권장 하드웨어**
| | 최소 | 대규모 사례 권장 |
|---|---|---|
| **RAM** | 8 GB | 16 GB+ (수백만 개 레코드의 MFT/USN 세트) |
| **디스크** | 5 GB 여유 공간 | 파싱할 증거 크기의 2배 이상 여유 공간 |
| **CPU** | 4코어 | 8코어 이상 |
| **OS** | Windows 10/11(전체) · Linux(오프라인 및 이미지 분석) | — |
> 상관 분석은 매우 큰 데이터 세트에서 일정한 메모리로 스트리밍되므로 RAM이 병목이 되는 경우는 드뭅니다. 일반적으로 디스크 처리량과 여유 공간이 병목입니다.
**실행**(Crow-Eye가 시스템 아티팩트에 접근할 수 있도록 관리자 권한으로 실행):```bash
python "Crow Eye.py"
The main interface opens, you create a case, and all analysis output is organized under that case directory for later review and reporting.
🖥️ 크로스 플랫폼 참고: Linux에서는 라이브 파서가 자동으로 비활성화되고 Crow-Eye는 오프라인 / 포렌식 이미지 모드로 실행됩니다. 전체 라이브 수집은 Windows에서만 가능합니다.
Crow-Eye는 라이브 시스템과 오프라인 소스(수집된 폴더 또는 포렌식 이미지) 모두에서 Windows 실행, 파일 시스템 및 사용자 활동 아티팩트의 광범위한 집합을 파싱합니다.
Jump Lists & LNK는 Crow-Eye 자체의 전용 LNK / Jump List 파서로 파싱됩니다 — 타사 모듈이 아닙니다.
사용자 지정 레지스트리 / 잠긴 파일: Windows는 작동 중에 라이브 레지스트리 하이브(
NTUSER.DAT,SOFTWARE,SYSTEM)를 잠급니다. 라이브 시스템을 사용자 지정 분석하려면 외부 미디어(WinPE/Live CD)로 부팅하거나, 포렌식 수집 도구를 사용하거나, 디스크 이미지를 분석하세요.
CrowEye/Artifacts Collectors/Target Artifacts(또는 케이스의 registry/ 폴더)에 복사하세요:
NTUSER.DAT from C:\Users\<Username>\NTUSER.DATSOFTWARE from C:\Windows\System32\config\SOFTWARESYSTEM from C:\Windows\System32\config\SYSTEMC:\Windows\Prefetch를 파싱하여 실행 기록 및 포렌식 메타데이터(실행별 타임스탬프 포함)를 추출합니다.$RECYCLE.BIN을 파싱하여 삭제된 파일 이름, 원래 경로, 삭제 시간 및 크기를 복구합니다 (라이브 시스템 및 디스크 이미지).Crow-Claw는 라이브 시스템 또는 마운트된 이미지에서 아티팩트를 수집하고 보존하기 위한 Crow-Eye의 특화 수집 엔진입니다.
대상에 대한 라이브 연결 없이 모든 소스에서 수집된 아티팩트를 분석합니다 — 세 가지 명확한 작업:
live_acquisition 폴더에 유형별로 정리하여 물리적으로 복사합니다.파싱은 Crow-Eye의 전용 오프라인 파서가 처리합니다 — 라이브 모드와 동일한 아티팩트 로직을 수집된 파일에 적용합니다: Prefetch, Registry, MFT, USN (MFT/USN 상관기 포함), AmCache, ShimCache, SRUM, Event Logs, LNK/JumpLists, Recycle Bin.
원시 아티팩트 외에도 Crow-Eye는 타사 포렌식 출력을 케이스로 직접 가져올 수 있습니다 — Plaso, Autopsy, Volatility 또는 모든 사용자 지정 내보내기 — 상관 실행을 먼저 요구하지 않고 Eye와 Timeline에서 사용할 수 있게 합니다.
케이스 데이터베이스 관리자가 케이스 트리 아래의 모든 .db를 자동으로 검색하므로 가져온 증거는 즉시 다음에서 사용할 수 있습니다:
imported 아티팩트 유형으로 제공되며, 시간 창 필터링과 시간 범위가 작동합니다.가져오기는 표준 라이브러리만 사용하며(sqlite3 / csv / json) 백그라운드 작업자에서 실행되므로 대용량 가져오기가 UI를 차단하지 않습니다.
실행 중인 Windows 시스템에서 아티팩트를 직접 분석하고, 표준 위치에서 자동으로 추출하여 실시간 포렌식 분석을 수행합니다.
모든 조사는 케이스입니다: 아티팩트 데이터베이스와 분석 출력을 구성하는 자체 포함 디렉터리입니다. Crow-Eye는 최근 케이스를 추적하고(즐겨찾기, 태그, 상태 포함), 열 때 케이스를 검증하며, 구성을 원자적으로 작성하고(크래시 세이프), 기성 의미 매핑이 포함된 케이스 구성 가져오기/내보내기와 템플릿을 지원합니다.
통합 시간 그리드에서 아티팩트 간 이벤트를 상호 연관시키며, 히트 맵, 주, 일 보기를 제공합니다 — 단순한 슈퍼 타임라인이 아니라 정체성으로 연결되고 법정에서 추적 가능한 스토리입니다.
타임라인은 케이스의 파싱된 아티팩트 데이터베이스를 직접 읽으며 상관 엔진과 독립적입니다 — 사용하기 위해 feather를 만들거나, wing을 작성하거나, 파이프라인을 실행할 필요가 없습니다. 타임라인은 자체적인 경량 시간 그룹화(정확한 타임스탬프 및 시간 창 상관, 애플리케이션/경로/사용자별 그룹화)를 적용하여 그리드에서 이벤트를 연결합니다. 증거 가져오기를 통해 가져온 증거도 imported 아티팩트 유형으로 타임라인에 나타나며, 시간 창 필터링과 시간 범위가 작동합니다.
케이스 데이터베이스 전체에 대한 전문 검색과 CSV(스프레드시트), JSON(다른 도구와의 통합), 상세 HTML 보고서(검색어와 연결된 모든 아티팩트를 통합한 전체 도시에) 내보내기를 지원합니다.
SID, MAC 주소, 해시 같은 원시 기술 식별자를 즉시 사람이 읽을 수 있는 컨텍스트로 변환합니다. 동적 연결은 비파괴적 SQL ATTACH 쿼리를 사용하여 보기를 강화하므로 원본 증거는 절대 수정되지 않으며, 대량 IOC 위협 피드를 수집하여 알려진 악성 지표를 인라인으로 표시할 수 있습니다.
원시 아티팩트를 평이한 언어의 활동 스토리로 전환 — 사용자와 해당 애플리케이션이 실제로 수행한 작업을 관리자/HR이 읽을 수 있도록 설명하며, 모든 진술은 정확한 소스 증거로 추적할 수 있습니다.
사용자 행동 분석 (UBA) 는 케이스의 Target_Artifacts/ 폴더에 있는 파싱된 아티팩트 데이터베이스를 읽고(엄격히 읽기 전용) 선언적 규칙 집합을 통해 재생하여 명확하고 시간순의 활동 스토리를 생성합니다. "User Behavior" 도구 모음 버튼 또는 Ctrl+Shift+B 로 열 수 있습니다 (케이스가 로드되어 있어야 합니다).
uba/config/behavior_rules.json) — 코드 없이 조정 가능 — 각 탐지는 심각도로 분류됩니다: 일상(routine) · 주목할 만함(notable) · 의심스러움(suspicious) · 심각(critical).runas), 계정 및 그룹 변경, 서비스 변경, 시스템 시계 변조(의심스러움), 이벤트 로그 삭제(심각).database : table : rowid)가 열립니다 — 소스 없이 주장되는 것은 없습니다.40가지 탐지는 네 가지 심각도 클래스와 파싱된 아티팩트 집합의 전체 범위를 다룹니다:
필터: 자유 텍스트 검색 · 사용자/행위자("Unattributed" 및 로그인 세션 토글 포함) · 행동 클래스(사용자 / 애플리케이션 / 시스템) · 심각도 · 애플리케이션(200개 이상 프로그램에 대한 검색 가능한 다중 선택) · 빠른 사전 설정이 포함된 날짜/시간 범위(전체 기간 / 첫 날 / 마지막 날 / 마지막 활동 시간).
데이터 소스: Security, System 및 Application 이벤트 로그 · USN Journal · MFT · UserAssist · BAM · Prefetch · ShimCache · AmCache · MUICache · ShellBags · LNK / JumpLists · Recycle Bin · SRUM(애플리케이션, 네트워크, 연결) · 레지스트리 하이브.
database → table → rowid를 포함하며 필요 시 실제 소스 행을 엽니다.<user> 세션 동안")로만 사용되며, 작업을 귀속시키는 데 사용되지 않습니다.UBA는 규칙 기반 행동 상관 및 분류이며 통계/ML 이상 징후 점수가 아닙니다 — 모든 발견은 명시적이고 감사 가능한 규칙에 매핑됩니다. 전체 탐지 카탈로그는
RELEASE_NOTES.md를 참조하세요.
Correlation Engine v1.7.0 — 재구성 핵심. 릴리스 기록은 RELEASE_NOTES.md를 참조하세요.
Crow-Eye Correlation Engine은 프로덕션 등급의 포렌식 상관 시스템입니다. 모든 소스에서 Windows 아티팩트를 수집하고 정규화하여, 고립된 레코드를 시스템에서 발생한 일, 시기, 관련된 사용자를 보여주는 일관된 내러티브로 바꿔주는 시간 및 정체성 관계를 표면화합니다. 가장 일반적인 조사 질문에 대한 기본 제공 상관 규칙(Wings)으로 즉시 작동하며, 분석가가 코드를 만지지 않고 사용자 지정 규칙을 작성할 수 있게 하고, 의미 해석은 작성 가능한 규칙과 조사자에게 맡깁니다 — 블랙박스 점수에 절대 맡기지 않습니다.
범용 데이터 가져오기: 상관 엔진은 CSV, JSON 또는 SQLite 형식의 모든 포렌식 도구 출력을 가져와 Feather 데이터베이스로 변환할 수 있습니다. 즉, 타사 도구(Plaso, Autopsy, Volatility 등)의 데이터를 Crow-Eye 네이티브 아티팩트와 상호 연관시켜 모든 포렌식 데이터 소스에 걸친 통합 상관 분석을 만들 수 있습니다.
실제 약 700K 레코드 Windows 케이스에 대해 엔드투엔드로 검증된 집중적인 정확성 개선 작업이 이전 신뢰성 작업 위에 추가되었습니다. 아래의 모든 수정 사항은 pytest 회귀 테스트 스위트로 고정되며, 두 엔진 모두에 대해 기본 7개 wing을 실행하는 총체적 검증 하네스로 검증됩니다.
정체성 엔진이 모든 증거를 포착합니다
TypeError를 발생시켜 행별 루프가 중단됨). 검증 케이스에서 확인된 레코드 수가 3,558 → 745,615로 급증했습니다.User, ComputerName, NewProcessName, TargetUserName)를 우선합니다.artifact 열을 기록하지 않아 아티팩트 인식 필드 매핑이 실행되지 않았습니다. 이제 엔진은 feather_metadata.artifact_type으로 대체하므로 SecurityLogs / SystemLogs / ApplicationLogs는 해당 아티팩트별 정체성 우선순위를 사용합니다.'N/A', 'Unknown', '-', nil-GUID가 관련 없는 레코드를 함께 묶음). 이제 검증기가 30개 이상의 자리 표시자 변형을 거부합니다.더 이상 "모든 것이 Low — 뭔가 잘못됨" 없음
High로 태그되었습니다. feather_count == 1인 매칭은 이제 confidence_category="Low - single feather"를 받으므로 High 보기는 실제 cross-feather 상관에 집중합니다.chrome은 10개 이상의 키를 가지며 상관되지 않았습니다). 이제 키는 이름만 사용합니다 — cross-feather 상관이 다시 작동합니다.경로 분류를 통한 가장(impersonation) 탐지 — 매칭이 형성된 후 엔진은 모든 레코드의 경로를 TRUSTED(Program Files, System32, WinSxS, BAM/SRUM /device/harddiskvolumeN/... 형식, …) 또는 SUSPICIOUS(Temp, Downloads, Public, AppData\Local\Temp, Recycle Bin, 이동식 루트, 네트워크 공유)로 분류합니다. 두 분류에 모두 걸친 매칭은 impersonation_alert를 발생시킵니다(≈0.05% 비율, 각각 실제 후보).
정직한 증거 회계 — 명명된 버킷(no_identity_field, normalize_failure, below_threshold_skipped, …)이 있는 창별 드롭 원장과 파이프라인별 요약(확인된 레코드, high/low 출력, no-identity, 드롭 버킷, timeless-feather 조인)을 제공합니다. 모든 레코드는 매칭 또는 명명된 드롭 버킷에 들어갑니다 — "남는 증거 없음"이 로그에서 검증 가능합니다. low_confidence_review_mode는 기본적으로 ON이므로 임계값 미만 그룹은 조용히 사라지지 않고 Low-confidence 매칭이 됩니다.
Timeless-feather 정체성 강화 — 행별 타임스탬프가 없는 feather(AutoStartPrograms, MUICache, SystemServices, TypedPaths)는 더 이상 모든 행에 가짜 생성 시간을 기록하지 않습니다. 대신 시간 기반 매칭이 형성된 후 엔진은 모든 timeless feather의 일치 레코드를 정체성별로 보충 증거로 조인합니다.
통합 정체성 레지스트리 — config/standard_fields/identities.json은 엔진 + Eye가 참조해야 하는 모든 열의 단일 소스입니다: 98개 범주, 1,146개 열 동의어 (앱/프로세스, 파일, 해시, 사용자, 호스트/디바이스, 네트워크, 레지스트리, 서비스/작업, 이벤트, 이메일, 브라우저, 클라우드, Windows 내부, 인증서, 컨테이너, OS 객체). 새 열 동의어를 추가하는 것은 코드 변경이 아니라 JSON 편집입니다.
의미 매핑 오탐 수정 — 다중 지표 게이팅이 이제 실제로 적용됩니다(data-exfiltration-pattern은 지표 2개 이상 필요); 불가능한 AND 규칙(4625 AND 4624)은 OR로 재작성됨; wiper/원격 도구 규칙은 모든 Prefetch 항목에 발화하지 않고 실제 정규식을 사용함; 기준 활동 규칙은 high/critical에서 info/low로 강등됨(wing의 가중 점수는 실제 위협을 상향 조정).
상관 엔진은 프로덕션 사용 준비가 완료되었으며 조사에 적극적으로 사용되고 있습니다 (Correlation Engine v1.7.0):- ✅ 시간 창 스캔 엔진 — 프로덕션 준비 완료, 시간 기반 분석에 권장 (O(N log N))
Chrome.exe/chrome.dll/Chrome.EXE 같은 변형은 하나의 버킷으로 통합되고, 버전 및 아키텍처 한정자는 구별된 상태로 유지됩니다.YYYYMMDD, 미국식 슬래시 표기, 주석이 포함된 문자열이 모두 첫 시도에 올바르게 파싱됩니다.run_times)이 확장되어 모든 실행이 자체 상관 이벤트를 갖습니다.config/standard_fields/*.json에, 테이블별 메타데이터는 correlation_engine/config/feather_schemas.json에 있습니다 — 코드가 아닌 JSON 편집으로 확장하세요.query_time_range_iter, 잠금으로 보호된 feather 캐시, 병렬 상관 분석 준비 완료.상관 엔진은 네 가지 주요 구성 요소로 이루어져 있습니다:
목적: 원시 포렌식 아티팩트를 표준화된 쿼리 가능 형식으로 변환합니다.
Examples:
**지원되는 가져오기 형식:** CSV (헤더가 있는 모든 파일), JSON (평면 또는 중첩), SQLite (직접 가져오기). 자동 열 매핑, 데이터 유형 감지, ISO 타임스탬프 정규화, 유효성 검사 및 최적화된 인덱스.```
prefetch.db (Feather)
├── feather_metadata (artifact type, source, record count)
├── prefetch_data (executable_name, path, last_executed, hash)
└── Indexes (timestamp, name, path)
목적: 어떤 아티팩트를 어떻게 상호 연관시킬지 정의합니다.
#### 3. ⚙️ 엔진 (상관관계 전략)
**목적**: 아티팩트 간의 관계를 찾기 위해 상관관계 로직을 실행합니다. 구조적 링크가 **먼저** 오며, 계층 가중 점수는 *해석/순위*로 그 위에 적용됩니다. 일치의 기준이 아닙니다.
**시간 창 스캔 엔진** — 시간 기반 분석 및 체계적인 시간적 상관관계에 가장 적합합니다. 고정 간격으로 시간을 스캔하고, 각 창의 모든 feather에서 레코드를 수집하며, 의미 필드 매칭 + 가중 점수 계산을 적용하고, MatchSet 추적을 통해 중복을 방지합니다. **O(N log N)** (인덱스된 타임스탬프 쿼리); 배치 처리 (~2,567 창/초).
**신원 기반 상관관계 엔진** — 대규모 데이터셋(>1,000 레코드) 및 신원 추적에 가장 적합합니다. 신원을 추출하고 정규화하고, 신원별로 레코드를 그룹화하고, 각 클러스터 내에서 시간적 앵커를 구축하며, 증거를 1차/2차/보조로 분류하고, 매우 큰 집합(>5,000 앵커)에 대해 일정한 메모리로 스트리밍합니다. **O(N log N)**; 유형당 40+ 신원 필드 패턴.
**엔진 선택:** 시간 기반 분석에는 시간 창 엔진을, 신원 추적에는 신원 기반 엔진을 사용하세요. 둘 다 프로덕션 준비가 되어 있으며 인덱스된 쿼리를 통해 대규모 데이터셋에 최적화되어 있습니다.
#### 4. 🔄 파이프라인 (워크플로 오케스트레이션)
**목적**: feather 생성부터 결과 생성까지 완전한 분석 워크플로를 자동화합니다. 파이프라인은 자체 설정(엔진 유형, wing, feather)을 읽고, EngineSelector를 통해 올바른 엔진을 인스턴스화하고, 각 wing을 실행하고, 일치 항목을 집계하고, 결과를 저장하며(DB + JSON), 필터링 및 시각화 기능과 함께 GUI에 표시합니다.```json
{
"pipeline_name": "Investigation Pipeline",
"engine_type": "identity_based",
"wings": [{"wing_id": "execution-proof"}, {"wing_id": "file-access"}],
"feathers": [
{"feather_id": "prefetch", "database_path": "data/prefetch.db"},
{"feather_id": "srum", "database_path": "data/srum.db"},
{"feather_id": "eventlogs", "database_path": "data/eventlogs.db"}
],
"filters": {
"time_period_start": "2024-01-01T00:00:00",
"time_period_end": "2024-12-31T23:59:59"
}
}
### 예시 사용 사례: 실행 증거 찾기
**시나리오**: `malware.exe`가 시스템에서 실행되었음을 증명합니다.```json
{
"wing_id": "malware-execution",
"correlation_rules": { "time_window_minutes": 5, "minimum_matches": 2 },
"feathers": ["prefetch", "shimcache", "amcache"]
}
I need to translate a Markdown document from English to Korean. However, the input content is empty—there's no text provided in the "INPUT:" section.
Since there's no content to translate, I should return nothing, or an empty response, rather than inventing content or adding meta-text. The instructions say to return only the translated text with no preamble. With no input, the correct output is an empty response.```python from correlation_engine.pipeline import PipelineExecutor executor = PipelineExecutor(pipeline_config) results = executor.execute()
입력 내용이 비어 있어 번역할 텍스트가 없습니다. 원문 청크를 제공해 주시면 번역해 드리겠습니다.```
Identity: malware.exe
Anchor 1 (2024-01-15 10:30:00):
✓ Prefetch: malware.exe executed at 10:30:00
✓ ShimCache: malware.exe modified at 10:30:15
✓ AmCache: malware.exe installed at 10:29:45
Conclusion: Execution proven with 3 corroborating artifacts
| 레코드 수 |
|---|
python -m correlation_engine.main강력한 어시스턴트이지 대체재가 아닙니다. Eye는 조사관의 가설을 자동화하고 검증합니다 — 결코 당신을 대신해 판단을 내리지 않습니다.
Eye는 Crow-Eye에 내장된 포렌식 AI 어시스턴트입니다. Windows 아티팩트에 대한 실제 지식 베이스를 기반으로 하는 숙련된 포렌식 조사관입니다. Prefetch, MFT, 레지스트리, 이벤트 로그, AmCache, ShimCache, SRUM 등을 포함한 사건의 모든 것을 자연어 인터페이스로 질의, 상관 분석, 문서화할 수 있으면서, 정확히 무엇을 했는지에 대한 감사 가능하고 변조 방지된 기록을 유지합니다. Eye는 (완전한 에어갭 환경을 포함하여) 전적으로 자체 하드웨어에서 실행할 수 있으며, 이는 Crow-Eye의 "0ms 데이터 장비 외 유출 없음" 프라이버시 원칙에 부합합니다. 전체 아키텍처: eye/README.md.
Eye는 대화형 질문("C:\Temp에서 22:00 이후 실행된 것을 보여줘")을 실제 포렌식 작업으로 바꿉니다. 접근 방식을 계획하고, 관련 아티팩트 지식을 검색하고, 사건 데이터베이스에 대해 SQL 및 아티팩트 간 검색을 실행하고, 검증된 답변을 종합합니다. 모든 답변은 동시에 두 곳에서 생성됩니다 — 사용자를 위한 채팅 응답과 라이브 보고서 작업 영역에 기록되는 구조화된 블록. 그래서 조사가 진행됨에 따라 도면(증거 문서)이 스스로 구축됩니다.
Eye가 하는 모든 일은 Ghassan Elsman 프로토콜 (GEP) — 디지털 포렌식에서 AI를 어떻게 사용해야 하는지에 대한 벤더 중립적이고 도구에 구애받지 않는 표준에 기반합니다. 이는 적합한 시스템이 준수해야 하는 10가지 원칙으로, AI 지원 조사 결과가 진실에 기반하고, 원본 기록으로 추적 가능하며, 감사 가능하고 변조 방지된 체인으로 뒷받침되고, 인간 조사관이 통제권을 갖도록 보장합니다:
Crow-Eye의 Eye는 GEP의 참조 구현이며, 이를 뒷받침하는 제품 내 동작은 **운영 규칙(Operating Rules)**입니다. 📜 표준 읽기: eye/docs/GEP_standard.md.
Eye는 세 가지 배포 모드를 통해 위협 모델에 적응합니다:
CLI 에이전트 모드에서 Crow-Eye는 클라우드 API나 로컬 오프라인 서버 대신 기존 AI 터미널/명령줄 에이전트를 모델로 구동하므로, 이미 사용 중인 에이전트로 조사할 수 있습니다.
조사 루프:
런타임에 switch_model 도구를 사용하여 모델을 변경할 수 있습니다. 전환은 동일한 백엔드로 제한되므로, 선택한 공급자와 다른 공급자로 증거가 조용히 전송되지 않습니다.
Eye는 결론에 어떻게 도달했는지 보고 — 나중에 증명할 수 있도록 — 설계되었습니다. Eye가 작업하는 동안 실시간으로 구조화된 ThinkingStep 업데이트를 UI로 스트리밍합니다. 각 업데이트는 step_id, type, 사람이 읽을 수 있는 label, status (active → done 또는 error), 선택적 tool/params/detail을 포함합니다.
| 단계 유형 | 표시되는 내용 |
|---|---|
thinking | Eye 계획 — 포렌식 의도 감지, 시스템 프롬프트 구성, 다음 동작 결정. |
rag | Eye가 답변을 뒷받침하기 위해 지식 베이스에서 아티팩트 지식을 검색. |
일반적인 쿼리는 thinking → rag → thinking → tool_call → synthesis로 전개되며, 모든 사건은 이후에 검사할 수 있는 온디스크 추적 아티팩트를 유지합니다:
| 파일 | 기록 내용 |
|---|---|
<case>/EYE_Logs/eye_payload_seal.jsonl | 모델로 전송된 정확한 페이로드, 해시 체인으로 연결됨. |
<case>/EYE_Logs/truncation_audit.log | 어떤 컨텍스트가 유지, 요약, 삭제, 고정되었는지 — 그리고 그 이유. |
<case>/case_history.json | 메시지별 토큰 수가 포함된 전체 대화 기록. |
Eye는 도구 중심입니다. 모델은 증거를 직접 다루지 않습니다. 도구 호출을 내보내면 Eye가 사건 데이터베이스에 대해 이를 실행하고 결과를 반환합니다. 따라서 모든 작업은 명시적이고, 기록되며, 재현 가능합니다. 도구는 configs/llm_config.json에 정의되고 eye/services/context_manager.py를 통해 디스패치됩니다.
조사 도구 — 증거 읽기 및 분석:
보고 도구는 라이브 보고서 작업 영역을 구축합니다: report_append_section, report_add_data_table, report_add_chart, report_add_timeline, report_add_heatmap, report_add_chain_of_custody, report_add_chat_transcript, report_add_image, report_edit_section, report_delete_section, chat_add_table, export_report (내보내기는 인간 승인 필요).
작성 도구 (관리 대상 — 상관 Wing 및 의미 매핑 구축 참조): correlation_create_wing, correlation_edit_wing, correlation_create_semantic_mapping, correlation_edit_semantic_mapping. 도구 호출은 활성 백엔드가 기대하는 형식으로 변환됩니다 — 클라우드 API 및 로컬 서버의 경우 네이티브 함수 호출, CLI 에이전트의 경우 XML <tool_call> 래퍼.
Eye는 상관 엔진을 질의할 뿐만 아니라 확장하는 데도 도움을 줄 수 있습니다. Eye가 반복되는 아티팩트 간 패턴을 발견하면 새로운 Wing(상관 규칙)과 의미 매핑(기술-인간 번역)을 제안할 수 있습니다. 이는 관리되는 작성입니다. Eye가 제안하고, 분석가가 저장된 아티팩트를 검토하며, 모든 변경은 근거와 증거로 뒷받침됩니다.
Wing은 Feather를 시간 창과 최소 일치 임계값 내에서 묶어 주장을 증명합니다:
의미 매핑은 원시 기술 값을 사람이 읽을 수 있는 의미로 변환합니다 (예: EventID 4624 → "성공적인 로그온"). 단순 mapping(단일 값/정규식 → 의미 값) 또는 다중 조건 rule(AND/OR로 결합된 조건)의 두 가지 형태가 있습니다. 둘 다 category, severity, confidence, scope를 지원하며, 둘 다 reason + related_evidence가 필요합니다.
거버넌스 — GEP를 준수하는 쓰기 측 규칙:
reason이 포함되어야 합니다.database:table:rowid 참조를 인용해야 합니다.긴 조사는 모델의 컨텍스트 창을 초과할 수 있습니다. 특히 소규모 오프라인 모델에서 그렇습니다. 충돌하거나 증거를 조용히 삭제하는 대신 Eye는 모델 호출 전마다 자체 컨텍스트를 자동 압축(보호된 생성 경로 내에서, 완전히 감사됨)합니다.
각 호출 전에 Eye는 전체 페이로드를 측정하고 응답을 위한 공간(창의 10%, 최소 512 토큰, 절반을 초과하지 않음)을 예약합니다. 그래도 맞지 않으면 두 가지 순서 있는 패스를 통해 치유하며, 보호된 메시지(고정된 메시지, 자동 감지된 증거, 도구 결과)는 절대 건드리지 않습니다:
SUMMARIZED로 기록됩니다.TRUNCATED로 기록됩니다.축소 불가능한 증거 코어(고정 + 도구 결과 + 현재 질문)가 여전히 넘치면 Eye는 증거를 자르는 대신 진행을 거부(REFUSED_OVERFLOW)하고 쿼리를 좁히거나 analyze_large_dataset을 사용하도록 요청합니다. 최종적으로 모델에 전달되는 것은 무엇이든 증거 체인을 위해 봉인되는 정확한 페이로드입니다.
Eye는 턴 사이에 상태가 없습니다 — 그래서 내러티브 맵은 "우리가 알고 있고 결론 내린 것"이 사건에 대해 저장되는 곳입니다. 이는 Eye의 지속적이고, 감사 가능하며, 변조 방지된 작업 메모리이며, 그 내용은 매 턴 Eye의 프롬프트에 주입됩니다(맵은 말 그대로 메모리 그 자체입니다).
proven · open · negative · needs · absolute), 그 아래 아티팩트로 뒷받침되는 증거.narrative_map_audit.jsonl)에 봉인됩니다. 주장과 증거를 추가, 편집, 제거할 수 있어 Eye가 사건을 이해하고 해석하는 방식을 직접 형성할 수 있습니다.open 상태로 남을 수 있지만, 증거 없이 proven이 될 수는 없습니다. Eye가 확인했지만 비어 있음을 발견한 테마는 자동으로 negative 로 전환됩니다 — 문서화된 부재 자체가 하나의 발견이기 때문입니다.규정 준수(Compliance)는 추가된 기능이 아니라 파이프라인에 강제됩니다.
database:table:rowid, MFT 레코드의 계산된 오프셋 포함). 봉인은 추가 전용이며 해시 체인으로 <case>/EYE_Logs/eye_payload_seal.jsonl에 연결됩니다 — 단일 레코드가 변경되거나 제거되면 체인이 끊어지므로, 로그는 모델이 분석한 바이트가 무엇인지 수학적으로 증명합니다.<case>/EYE_Logs/truncation_audit.log(SUMMARIZED, TRUNCATED, PRESERVED, PINNED, UNPINNED, BUDGET_REDUCED)에 기록되며 각각 해시가 있습니다. 감지된 증거는 신뢰도 임계값 이상에서 자동 고정되며, 메시지를 수동으로 고정할 수도 있습니다.reason 및 를 포함해야 합니다. Eye 외부에서 작성된 규칙은 읽기 전용이며 조용히 다시 작성될 수 없습니다.📖 전체 Eye 아키텍처: eye/README.md.
역사적으로 조사관들은 기본 아티팩트가 어떻게 동작하는지, 또는 도구가 이를 어떻게 파싱했는지 이해하지 못한 채 포렌식 도구를 신뢰하는 함정에 빠지곤 했습니다. 오늘날의 위험은 단순히 *"도구"*에 대한 신뢰를 *"AI"*에 대한 신뢰로 바꾸는 것입니다. AI는 기술적으로 완벽한 정확도로 레코드를 파싱할 수 있지만 여전히 잘못된 맥락에 배치할 수 있습니다 — 증거의 전체 의미를 바꿔버릴 수 있습니다.
Eye-Describe는 인간과 모델 모두 추측할 필요가 없도록 존재합니다. 이는 Windows 아티팩트의 원시 바이너리 구조에 대한 대화형 바이트 수준 참조이며, 동시에 두 가지 역할을 합니다:
| 역할 | 하는 일 |
|---|---|
| 🧑🏫 인간을 위한 청사진 | Windows 아티팩트의 심층 바이트 수준 해부학에 대한 대화형 교육 참조 — 각 구조가 무엇인지, 어떻게 동작하는지, 무엇을 증명할 수 있고 무엇을 증명할 수 없는지. 무료로 사용할 수 있으며, 출력 열이 아닌 증거 자체를 이해하려는 학생, 교육자, 실무자를 대상으로 합니다. |
| ⚖️ AI를 위한 규정 준수 앵커 | Eye의 가시성은 Eye-Describe에 문서화된 아티팩트 동작에 묶여 있습니다. 모델은 아티팩트가 실제로 의미하는 바에 대한 하드코딩된 참조에 대해 추론하며, 스스로 의미를 추론하지 않습니다. |
AI 레이어를 문서화된 아티팩트 동작에 고정함으로써, Crow-Eye는 모델을 신뢰하라고 요구하는 것이 아니라 모델이 원시 포렌식을 존중하도록 제약하는 것입니다.
도구 신뢰를 AI 신뢰로 대체하지 마십시오. 데이터를 이해하십시오.
포렌식 도구는 그 출력이 방어될 수 있을 때만 유용합니다. Crow-Eye의 정확성 작업은 의도적으로 투명하게 이루어집니다:
RELEASE_NOTES.md에 공개적으로 문서화됩니다 — 수정으로 인해 레코드 수가 자릿수 단위로 변경된 경우를 포함합니다. 무엇이 언제 잘못되었는지 아는 것은 결과를 방어 가능하게 만드는 요소 중 하나입니다.verify_chain()은 내러티브 맵 감사 로그와 증거 봉인 체인을 다시 걸어 수정을 감지합니다 — 사람이 읽을 수 있는 필드의 수정도 포함합니다.Crow-Eye의 인터페이스 및 분석 뷰 모음입니다.






계획되었거나 진행 중인 작업 (배포된 변경 사항은 RELEASE_NOTES.md 참조):
아이디어가 있거나 아티팩트를 추가하고 싶으신가요? 이슈 열기 또는 기여를 참조하세요.
Crow-Eye는 오픈 리서치 플랫폼으로 구축되었으며, 새로운 파서, 상관관계 규칙, 문서 및 아티팩트 리서치 등 기여를 환영합니다.
Crow-Eye는 GNU General Public License v3.0 (GPL-3.0)에 따라 배포됩니다. 해당 라이선스 조건에 따라 자유롭게 사용, 연구, 공유 및 수정할 수 있습니다.
학술 작업, 발표된 연구 또는 사례 보고서에서 Crow-Eye를 사용하는 경우 다음을 인용해 주세요:```bibtex @software{elsman_crow_eye, author = {Elsman, Ghassan}, title = {Crow-Eye: A Windows Forensics Engine}, url = {https://github.com/Ghassan-elsman/Crow-Eye}, license = {GPL-3.0}, year = {2026} }
일반 텍스트: Elsman, G. *Crow-Eye: A Windows Forensics Engine* (GPL-3.0). https://github.com/Ghassan-elsman/Crow-Eye
방법론 인용의 경우, Ghassan Elsman Protocol은 [`eye/docs/GEP_standard.md`](https://github.com/ghassan-elsman/crow-eye/blob/HEAD/eye/docs/GEP_standard.md)에 별도로 문서화되어 있습니다.
## 💖 후원
Crow-Eye는 무료 오픈소스이며, 한 명이 만들고 유지보수하고 있습니다. 작업에 도움이 된다면 후원을 고려해 주세요 — 후원은 새로운 파서와 연구에 직접 자금을 지원합니다: **[SPONSORS.md](https://github.com/ghassan-elsman/crow-eye/blob/HEAD/SPONSORS.md)** · **[GitHub Sponsors](https://github.com/sponsors/Ghassan-elsman)**.
## 크레딧
**Ghassan Elsman**이 만들고 유지보수합니다.
| 사용자 | 일반적인 입력 | 시작 지점 |
|---|
| 기업 IR / MSSP / MDR | Velociraptor, KAPE 또는 EDR 자체 수집의 대상 수집물 | 오프라인 가져오기 → 상관관계 엔진 → UBA |
| 법 집행 기관 / 포렌식 연구소 | 증거물 관리 요구 사항이 있는 전체 포렌식 이미지(E01, VHDX, VMDK, Raw) | 이미지 분석 → 상관관계 엔진 → 내러티브 맵 |
| 내부 보안 / 내부자 위협 및 HR 조사 | 라이브 시스템 또는 수집된 아티팩트 | 라이브 분석 → UBA 활동 스토리 |
| 학생, 교육자 및 연구자 | 샘플 이미지와 연구실 데이터 | Eye-Describe → 빠른 시작 |
| 하위 시스템 | 역할 | 단계 |
|---|
| Crow-Claw | 라이브 시스템 및 데드박스 이미지의 고속 수집. | 수집 |
| 오프라인 가져오기 | 모든 소스의 아티팩트를 SCAN → COLLECT → PARSE하여 사건 데이터베이스로 저장. | 수집 |
| 상관관계 엔진 | Feathers · Wings · Engines · Pipelines을 통한 이중 엔진(Identity + Time-Window) 재구성. | 분석 |
| 대화형 타임라인 | 사건 데이터베이스에서 직접 읽는 Identity 스레드형, 법정 추적 가능 타임라인(Heat Map / Week / Day 보기). | 검증 |
| 사용자 행동 분석(UBA) | 규칙 기반의 평문 "이 사용자가 무엇을 했는가" 활동 스토리. | 인텔리전스 |
| Eye — AI 어시스턴트 | 자연어 조사 + 봉인된 내러티브 맵 사건 메모리. | AI |
| 스토리지 포렌식 | 물리 디스크 및 파티션 분석(숨김/마운트 해제 감지, 부팅 경고). | 분석 |
| 아티팩트 | 라이브 | 오프라인 | 추출 데이터 |
|---|
| Prefetch | ✅ | ✅ | 실행 기록, 실행 횟수, 실행별 타임스탬프 |
| Registry (AutoRun, UserAssist, BAM, ShimCache, networks, time zone) | ✅ | ✅ | 지속성, 프로그램 사용, 백그라운드 활동, 네트워크 구성 |
| Amcache | ✅ | ✅ | 앱 실행, 설치 시간, SHA-1, 파일 경로 |
| ShimCache | ✅ | ✅ | 실행된 앱, 마지막 수정 시간, 크기 |
| MUICache | ✅ | ✅ | 프로그램 존재 및 표시 이름 |
| Jump Lists & LNK | ✅ | ✅ | 파일 액세스, 경로, 타임스탬프, 메타데이터 |
| ShellBags | ✅ | ✅ | 폴더 액세스 기록 및 탐색 |
| MRU & RecentDocs / Typed Paths | ✅ | ✅ | 열기/저장 기록, 최근 파일, 입력한 위치 |
| Browser / Website history | ✅ | ✅ | 방문한 사이트 및 액세스 시간 |
| Event Logs (System / Security / Application) | ✅ | ✅ | 로그온, 프로세스 생성(4688), 계정 및 서비스 변경, 로그 삭제 |
| MFT | ✅ | ✅ | 파일 메타데이터, 삭제된 파일, 타임스탬프 (NTFS, Win 7/10/11) |
| USN Journal | ✅ | ✅ | 전체 이름 기록이 포함된 파일 생성/수정/삭제/이름 변경 |
| Recycle Bin | ✅ | ✅ | 삭제된 파일 이름, 경로, 삭제 시간, 크기 |
| SRUM | ✅ | ✅ | 앱 리소스/네트워크/에너지 사용량, 앱별 전송 데이터 |
| USB & connected devices | ✅ | ✅ | 디바이스 연결 및 존재 |
| Network list & connections | ✅ | ✅ | 알려진 네트워크 및 연결 활동 |
| AutoStart / Services & Drivers | ✅ | ✅ | 지속성, 서비스 설치 및 상태 변경 |
| Disks & Partitions (Storage Forensics) | ✅ | ✅ | 물리 디스크 트리, 파티션 레이아웃, 숨김/마운트 해제 감지 |
| 🔍 SCAN | 📦 COLLECT |
|---|
| 작업 | 검색 — 원래 위치에서 아티팩트 식별 | 수집 — 케이스 폴더에 아티팩트를 복사 및 보존 |
| I/O 영향 | 읽기 전용; 파일 이동 없음 | 읽기 + 쓰기; 아티팩트 물리적 복제 |
| 구성 | .artifact_scan_index.json 메타데이터 업데이트 | 파일을 유형별 폴더로 구성 |
| 사용 사례 | 소스에 관련 데이터가 있는지 빠르게 선별 | 장기 분석을 위한 전체 포렌식 보존 |
| 입력 | 처리 내용 |
|---|
.db / .sqlite | 케이스의 Imported_Evidence/ 폴더에 그대로 검증 및 복사됩니다. 스키마는 변경되지 않습니다. |
.csv / .json | 표준 FeatherWriter를 통해 feather 형태의 SQLite 데이터베이스로 자동 변환되며, 열 이름에서 자동 감지된 테이블의 기본 타임스탬프를 선언하는 feather_metadata를 포함합니다 — 네이티브로 수집된 feather와 정확히 동일합니다. |
| 범주 | 포함되는 탐지 |
|---|
| ID 및 액세스 | 로그인 / 로그아웃, 워크스테이션 잠금 해제, 원격 데스크톱 로그온, 관리자 로그온, 명시적 자격 증명 사용(runas), 계정 생성 및 변경, 관리자 그룹 추가 |
| 실행 | 프로그램 열기(UserAssist), 프로그램 실행(Prefetch, 실행별 이벤트로 확장), 프로세스 생성(4688), 프로그램 존재(ShimCache / AmCache / MUICache), 애플리케이션 설치, 애플리케이션 충돌(Application Event Log 1001 레코드에서) |
| 파일 활동 | 파일 열기 / 생성 / 삭제 / 복사 / 이름 변경 — 이름 변경은 USN Journal에서 재구성된 전체 이름 기록(old → … → current)을 표시하며, 소프트 삭제($R/$I) 해석 포함 |
| 탐색 | 폴더 탐색(ShellBags), 최근 문서, 입력한 위치, 웹사이트 방문 |
| 디바이스 및 네트워크 | USB 디바이스 연결, 디바이스 존재, 네트워크 공유, 네트워크 연결, 앱별 전송 데이터(SRUM) |
| 지속성 및 시스템 | 자동 시작 지속성(Run 키 + 서비스, 대상이 사용자 쓰기 가능 경로에서 실행되면 심각도 상향), 서비스 및 드라이버 설치, 서비스 상태 변경, 시스템 시작/종료, 시계 변경, 이벤트 로그 삭제 |
| 시간 기반 엔진(Time-Window Engine) |
|---|
| ID 기반 엔진(Identity-Based Engine) |
|---|
| 1,000 | 0.5s | 2s |
| 10,000 | 5s | 15s |
| 100,000 | 50s | 2.5분 (스트리밍) |
| 1,000,000 | — | 25분 (스트리밍) |
| 기능 | 사용자에게 의미하는 바 |
|---|
| 자연어 조사 | 평범한 영어로 질문하세요. Eye가 SQL을 작성하고 검색을 수행합니다. |
| 다중 소스 통합 | 사건에서 파싱된 모든 아티팩트에 대한 통합 접근. |
| RAG 강화 분석 | Eye는 답변 전에 아티팩트별 포렌식 지식을 가져옵니다. |
| 라이브 보고서 작업 영역 | 조사 결과, 표, 차트, 타임라인이 실시간으로 문서화됩니다. |
| Human-in-the-loop | 중요한 작업(예: 보고서 내보내기)은 명시적인 승인이 필요합니다. |
| 증거 체인 | 모델이 분석한 것이 정확히 무엇인지에 대한 암호학적 증명. |
| # | 원칙 | 한 줄 요약 |
|---|
| GEP-1 | 증거 우선(Evidence Primacy) | 결론은 실제로 조사된 아티팩트에서만 나옵니다. |
| GEP-2 | 추적 가능성(Traceability) | 모든 사실은 특정 원본 기록에 연결됩니다. |
| GEP-3 | 구체성 및 연대기(Specificity & Chronology) | 정확한 UTC 타임스탬프, 식별자, 경로를 시간순으로 정렬. |
| GEP-4 | 교차 입증(Cross-Corroboration) | 여러 소스에 기반하며, 일치, 침묵, 충돌을 모두 보고합니다. |
| GEP-5 | 전제 검증(Premise Verification) | 인간의 주장을 증명하거나 반박할 가설로 취급합니다. |
| GEP-6 | 완전성(Completeness) | 증거를 조용히 누락하거나 잘라내지 않습니다. |
| GEP-7 | 무결성 및 부인 방지(Integrity & Non-Repudiation) | 증거를 절대 수정하지 않으며, 본 것과 행한 것을 변조 방지 방식으로 기록합니다. |
| GEP-8 | 투명성 및 설명 가능성(Transparency & Explainability) | 추론, 사용된 도구, 본 데이터가 모두 표시되고 감사 가능합니다. |
| GEP-9 | 인간의 권위(Human Authority) | 조사관이 결정하며, 지속적인 조치는 귀속될 수 있습니다. |
| GEP-10 | 방어 가능성(Defensibility) | 출력은 독립적인 검토를 위해 객관적이고 정확하며 구조화되어 있습니다. |
| 모드 | 가장 적합한 경우 | 백엔드 |
|---|
| ☁️ 클라우드 AI 모델 | 최대 컴퓨팅 성능이 필요한 깊고 복잡한 분석 | OpenAI, Anthropic (Claude), Google Gemini |
| 🔒 오프라인 AI 서버 (에어갭) | 노출 제로, 사내 조사 | Ollama, LM Studio |
| ⚡ CLI 터미널 에이전트 | 이미 보유한 AI 터미널 에이전트를 모델로 재사용 | Claude Code, Gemini CLI, ChatGPT CLI, llama.cpp, … |
tool_call | Eye가 포렌식 도구 실행 (SQL 쿼리, 검색, 상관 조회). |
synthesis | Eye가 최종 증거 기반 답변을 검증하고 조립. |
| 도구 | 용도 |
|---|
query_database | 포렌식 데이터베이스에 SELECT 실행. |
search_artifacts | 데이터베이스 간 텍스트 / 정규식 검색. |
semantic_search_artifacts | 파싱된 아티팩트에 대한 의미론적 검색. |
get_schema | 테이블 스키마 검사. |
query_correlation_results | 상관 엔진의 출력을 시간 / ID로 질의. |
correlate_imported_evidence | 사건으로 가져온 타사 증거를 고유 아티팩트와 상관 분석. |
analyze_large_dataset | 대규모 결과 집합의 Map-Reduce 분석 — 조용한 잘림 없음. |
list_case_files | 사건 디렉터리의 파일 목록. |
internet_search / fetch_web_content | 외부 위협 / 기술 컨텍스트 조회 및 가져오기. |
query_living_off_the_land_intel | LOLBAS / LOLDrivers 조회. |
query_threat_intel | VirusTotal / 위협 인텔리전스 조회. |
switch_model | 런타임에 모델 변경 (동일 백엔드만). |
| 필드 | 의미 |
|---|
wing_name | 규칙의 사람이 읽을 수 있는 이름. |
proves | 해당 규칙이 뒷받침하는 포렌식 주장 (예: 프로그램 실행). |
feathers[] | 상관 분석할 아티팩트 — 각각 artifact_type, 선택적 weight (0–1) 및 tier (1–4). |
time_window_minutes | 상관 시간 창 (기본 180 = 3시간). |
minimum_matches | 창 내에서 일치해야 하는 Feather 수 (기본 1). |
reason (필수) | 규칙에 대한 포렌식 근거. |
related_evidence (필수) | 규칙의 동기가 된 하나 이상의 database:table:rowid 참조. |
related_evidence