
iocx v0.7.6
PE 바이너리와 텍스트에서 고신호 IOC를 추출하는 확장 가능하고 결정론적인 정적 분석 엔진으로, SOC 자동화 및 현대 위협 분석 파이프라인을 위해 구축되었습니다.
IOCX
현대 보안 파이프라인을 위한 결정적(Deterministic), 무위험 IOC 추출
IOCX CLI를 사용한 PE 파일의 정적 IOC 추출
공식 IOCX 프로젝트
이 프로젝트는 결정적 정적 IOC 추출 및 PE 분석을 위한 원본 IOCX 엔진입니다. "iocx"라는 이름을 사용하는 다른 모든 저장소는 이 프로젝트와 관련이 없습니다.
공식 링크:
- PyPI: https://pypi.org/project/iocx/
- Github: https://github.com/iocx-dev/iocx
- 웹사이트: https://iocx.dev/
IOCX가 중요한 이유
현대 악성코드는 기본적으로 적대적(adversarial) 입니다 — 변형되고, 회피적이며, 단순한 추출기를 무너뜨리도록 설계되었습니다.
- 바이너리를 인식하지 못하는 도구는 변형된 PE에서 붕괴됩니다
- 샌드박스는 안전하지 않으며 CI/CD에서 사용할 수 없습니다
- 재현성은 자동화된 파이프라인에 필수적입니다
IOCX는 정확성과 결정성이 실제로 중요한 환경을 위해 구축되었습니다.
IOCX 엔진
IOCX는 공식 정적 IOC 추출 엔진입니다 — DFIR, SOC 자동화, CI/CD 보안, 대규모 위협 인텔리전스 파이프라인을 위해 구축된 결정적이고 바이너리를 인식하는 시스템입니다.
정규식 전용 추출기나 샌드박스 의존 도구와 달리 IOCX는 다음을 수행합니다:
- 순수 정적 분석
- 실행 위험 제로
- 안정적이고 결정적인 출력
- 적대적 테스트를 거친 휴리스틱
확장 가능한 현대 위협 분석을 위한 MalX Labs 생태계의 핵심 구성 요소입니다.
10초 만에 IOCX 사용해보기
echo "http://malicious.example" | iocx -
또는 PE 파일을 안전하게 스캔:
iocx suspicious.exe -a deep
IOCX가 존재하는 이유
보안 팀은 세 가지 지속적인 문제에 직면합니다:
- 정규식 추출기는 적대적 입력에서 붕괴됩니다
- 샌드박싱은 안전하지 않고 느리며 자동화에 부적합합니다
- 대부분의 IOC 도구는 일관성이 없거나 느리거나 실행 간에 미묘하게 다른 출력을 생성합니다
IOCX는 자동화, 안전성, 확장성을 위해 설계된 결정적이고 정적 전용 엔진으로 이 문제를 해결합니다.
IOCX가 아닌 것
IOCX는 의도적으로 다음이 아닙니다:
- 샌드박스
- 행동 분석 도구
- 에뮬레이터
- 강화(enrichment) 엔진
신뢰할 수 없는 코드를 절대 실행하지 않습니다. 동적 분석을 절대 수행하지 않습니다. 안전성, 결정성, CI/CD 호환성을 위해 설계상 정적 전용입니다.
설계 철학
IOCX는 레거시 도구의 가정이 아닌 현대 악성코드의 현실을 위해 설계되었습니다.
1. 모호성보다 결정성
안정적이고 재현 가능한 출력 — 무작위성 없음, 변동성 없음.
2. 동적보다 정적
실행은 안전하지 않습니다. 정적 분석은 예측 가능하고 확장 가능하며 CI 친화적입니다.
3. 적대적 우선 엔지니어링
변형된 PE, 손상된 RVA, 적대적 문자열 — IOCX는 이를 정상 입력으로 취급합니다.
4. 계약으로서의 스키마 안정성
다운스트림 시스템은 업그레이드 시 절대 중단되지 않아야 합니다.
5. 타협 없는 성능
원시 텍스트에서 150–300 MB/s. 일반적인 PE에서 6–15 MB/s. 최악의 적대적 부하에서도 예측 가능.
이러한 약속은 PE 구조 분석에 대한 발표된 연구 방법론 — 결정적 픽스처 구성, 단일 이상 징후 규율, 정확성의 기준으로서의 Windows 로더 동작 — 에서 파생되었습니다. 전체 방법론은 docs/methodology.md를 참조하고, 더 넓은 적대적 PE 분류 체계와 상업용 픽스처 제품군은 paax.dev를 참조하십시오.
IOCX의 차별점
| 기능 | IOCX | 일반적인 IOC 추출기 | 샌드박스 / 동적 도구 |
|---|---|---|---|
| 안전성 | 무실행, 정적 전용 | 정규식 전용, 바이너리 안전성 없음 | 신뢰할 수 없는 코드 실행 (고위험) |
| 결정성 | 완전히 결정적인 출력 | 노이즈에서 비결정적 | 설계상 비결정적 |
| 바이너리 인식 | 전체 PE 파싱, 휴리스틱 | 바이너리 지원 없음 | 가능하지만 안전하지 않고 느림 |
| 적대적 복원력 | 변형된 PE, 적대적 문자열에 대해 테스트됨 | 쉽게 우회됨 | 종종 충돌하거나 오분류 |
| 성능 | 150–300 MB/s (텍스트), 6–15 MB/s (PE) | 매우 가변적 | 극도로 느림 |
| CI/CD 친화성 | 예 — 안전, 결정적, 빠름 | 부분적 | 아니요 — 파이프라인에 안전하지 않음 |
| 스키마 안정성 | 보장됨 | 드묾 | 없음 |
요약: IOCX는 이상적인 입력이 아닌 실제 적대적 현실을 위해 구축되었습니다.
사용 사례
CI/CD 및 DevSecOps
- 릴리스 전 바이너리 스캔
- 빌드 내 우발적 URL, IP 또는 비밀번호 감지
- 실행 위험 제로로 보안 게이트 적용
SOC 및 침해 대응
- 알림 또는 분석가 클립보드 텍스트에서 지표 추출
- 실행 없이 악성코드 샘플 안전하게 검사
- IOC를 구조화된 JSON으로 정규화
위협 인텔리전스
- 대규모 피드 처리
- 비구조화된 보고서 파싱
- 결정적 출력 기반 강화 파이프라인 구축
자동화 및 스크립팅
- 로그 또는 아티팩트를 IOCX에 파이프
- ETL 또는 배치 워크플로우에 Python API 사용
- 사용자 정의 감지기로 확장
성능 프로필
1. 원시 IOC 추출 (텍스트, 로그, 버퍼)
150–300 MB/s 지속 처리량 빠른 경로 — PE 파싱 없음.
| 감지기 | 1 MB 시간 | 처리량 |
|---|---|---|
| Crypto | 0.0037 s | ~270 MB/s |
| Filepaths | 0.0041 s | ~250 MB/s |
| IP | 0.0065 s | ~156 MB/s |
| Domains | 0.0035 s | ~300 MB/s |
2. 일반적인 PE 파일 (~39 KB)
- 0.0122 s (일반)
- 0.0145 s (휴리스틱 포함)
- 6–15 MB/s 처리량
3. 적대적 고밀도 PE (1.5 MB)
- 0.192 s
- ~7.6 MB/s 처리량
- TLS 이상 징후, 구조적 이상 징후, 안티디버그 패턴 트리거
4. 전체 엔진 (비-PE)
- 1 MB: 0.038 s
버전 주요 사항
버전 기록 보기
v0.7.6.2 — Import 테이블 검증기
- 새로운 결정적 import 테이블 구조 검증기 (
IMPORT_*사유 코드). version_info가 이제 제한된 공개 프로젝션을 통해 모든 분석 수준에서 파싱되어 표시됩니다 (-a full뿐만 아니라).- CLI 재구축: 브랜드화된
--version출력, 더 명확한--help텍스트, 인수 그룹 재구성. - 모든 항목에서 도달 가능한 리로케이션 파서 충돌, PE32+ 데이터 디렉토리 오프셋 버그, 여러 가지 조용한 export/resource 오류 누락 수정.
- 파서 오류 태그가 검증기에 의해 조용히 소비되지 않도록 방지하는 새로운 정적 CI 검사.
- 테스트 스위트: 2,136 → 2,802 테스트.
v0.7.6.1 — 예외 디렉토리 검증기
- PE 예외 (
.pdata) 디렉토리의 심층 의미론적 검증 추가; 14개의 새로운 사유 코드; 총 15개의 검증기. - 엔진 전반에 걸쳐 구조적 발견 사항을 억제하던 결함 수정.
- 프로덕션에서 죽은 것으로 확인된 추가 검사 4개: 디렉토리 배치 2개, 섹션 매핑 1개, 리소스 디렉토리 경계 검사 1개.
- 출력에 표시됨: 이전에 억제되거나 잘못 레이블링된 발견 사항이 이제 표시됩니다.
- 테스트: 1620 → 2136. 커버리지: 100%.
v0.7.6 — 구조 검증기 확장: Debug 및 리로케이션 디렉토리
- 두 개의 새로운 PE 구조 검증기 — 리로케이션 및 디버그
- WIN_CERTIFICATE 및 tls 검증기는 이제 pefile과 독립적인 전용 구조 파서에서 구조적 진실을 소싱
- 우선순위 해결 하위 사유 분류 체계를 갖춘 12개의 새로운 사유 코드
- 결정적 바이트 수준 파싱 — pefile의 지연 해석에 의존하지 않음
- 100% 커버리지의 1620 테스트
v0.7.5 — 구조 검증기 확장
- 네 개의 새로운 PE 구조 검증기 — exports, delay-load imports, VS_VERSIONINFO, 리소스 계층 구조
- 우선순위 해결 하위 사유 분류 체계를 갖춘 24개의 새로운 사유 코드
- 결정적 바이트 수준 파싱 — pefile의 지연 해석에 의존하지 않음
- 보안 관련 메타데이터 — DLL 특성, 하위 시스템/머신 이름 디코딩, 리소스별 엔트로피
- 100% 커버리지의 1370 테스트 — 실제 바이너리에서
dumpbin에 대해 종단 간 검증됨
v0.7.4.1 — Windows 호환성 핫픽스
- Windows 시스템에서 import 실패를 유발한
python-magic의존성 제거 - 완전한 크로스 플랫폼 이식성을 위한 순수 Python 파일 유형 감지기 추가
- 엄격한 Windows 호환 PE 검증을 적용하여 PE 감지 로직 개선
- IOC 추출에 대한 동작 변경 없음
--min-length일관성 수정은 v0.7.5에서 계획됨
v0.7.4 — 고급 디렉토리 파싱
- 전체 Load Config 디렉토리 파싱 및 검증
- 다운스트림 휴리스틱을 위한 확장된 Optional Header 메타데이터
- 새로운 GuardCF, cookie, 이상 징후 휴리스틱
- 더 빠른 PE 분석
- 테스트 스위트의 99개 PE 픽스처; 45개 완전히 사양 검증됨
v0.7.3 — 구조적 정확성 및 결정적 휴리스틱
- 모든 PE 구조 검증기의 주요 강화
- 결정적이고 스냅샷 안정적인 동작
- 명확하고 일관된 ReasonCodes
- 구조적 진실에 기반한 더 강력한 휴리스틱
v0.7.2 — 의존성 수정
- 누락된
idna의존성 추가 - 동작 또는 스키마 변경 없음
v0.7.1 — 적대적 휴리스틱 확장 및 파서 강화
- 여섯 개의 새로운 PE 휴리스틱
- 확장된 적대적 PE 코퍼스
- 강화된 도메인/URL/crypto/hash 추출기
- 결정적 스냅샷 검증 출력
v0.7.0 — 결정적 휴리스틱 및 적대적 테스트 기반
- 결정적 휴리스틱
- 레이어-3 적대적 샘플
- 스냅샷 계약 테스트
- Rich Header 충돌 수정
v0.6.0 — 안정적인 출력 스키마 및 결정적 메타데이터
- 완전히 안정적인 JSON 스키마
- 정규화된 PE 메타데이터
- 공식화된 분석 수준
v0.5.0 — 분석 수준, PE 섹션 분석, 난독화 힌트
- 새로운 분석 수준 시스템
- PE 구조 분석
- 난독화 휴리스틱
v0.4.0 — 플러그인 아키텍처
- 플러그인 준비 규칙 엔진
- 통합 감지 흐름
v0.3.0 — Crypto IOC 감지
- Ethereum 및 Bitcoin 지갑 감지
v0.2.0 — 고신뢰성 IP 감지
- 주요 IPv4/IPv6 개선
빠른 시작
설치
pip install iocx
파일에서 IOC 추출
iocx suspicious.exe
텍스트에서 추출
echo "Visit http://bad.example.com" | iocx -
PE 분석 활성화
iocx suspicious.exe -a
Python API
from iocx.engine import Engine
engine = Engine()
results = engine.extract("suspicious.exe")
print(results)
출력 예시
IOCX는 IOC, PE 메타데이터, 섹션 분석, 휴리스틱 및 난독화 지표를 포함하는 구조화되고 결정적인 JSON을 생성합니다.
아래 예시는 실제 적대적 PE 샘플의 축약된 출력입니다. 문서화 목적으로 크기를 관리 가능하게 유지하면서 스키마의 형태와 깊이를 보여줍니다.