포렌식 이미지 분석기 구축: OSINT 조사에서 격차 해소
Source: Dev.to
프로젝트 배경: “디지털 고스트” 문제
현대 조사관들은 종종 디지털 고스트 문제에 직면합니다. 중요한 이미지를 찾았지만, 언제 어디서 촬영되었는지 모르면 단서가 차갑게 식어버립니다.
온라인 “EXIF 뷰어”가 존재하지만, 다음과 같은 큰 위험을 안고 있습니다:
- OPSEC 위험 – 증거를 제3자 사이트에 업로드하면 조사 내용이 유출될 수 있습니다.
- 신뢰성 – 대부분의 도구는 메타데이터가 없을 때 어떻게 해야 할지 알려주지 않습니다.
저는 분석가들을 위한 로컬화된, 안전한 샌드박스를 만들기 위해 이 도구를 구축했습니다.
기술 스택
- Python & Pillow – JPEG EXIF 헤더를 깊이 파고듭니다.
- Streamlit – 포렌식 스크립트를 전문적인 인터랙티브 대시보드로 변환합니다.
- Docker – 도구가 플랫폼에 독립적이며 호스트 머신에 “포렌식 흔적”을 남기지 않도록 합니다.
주요 기능
자동 지리 위치 매핑
도구는 원시 GPS 데이터(종종 혼란스러운 DMS 형식)를 단순히 추출하는 것이 아니라, 이를 소수점 위도·경도로 자동 변환하고 클릭 가능한 Google Maps 링크와 임베드된 지도를 제공합니다.
Visual OSINT 대체 모드
WhatsApp, X, Instagram 등 소셜 미디어 플랫폼은 메타데이터를 자주 제거합니다. 도구가 “빈” 이미지를 감지하면 자동으로 Visual OSINT 모드로 전환되어 다음을 제공합니다:
- 시각적 체크리스트(그림자 분석, 랜드마크, 식생).
- Google Lens, Yandex, SunCalc 등 외부 도구에 대한 빠른 링크.
기술적 난관 및 학습 포인트
들여쓰기 함정
Python 초보자로서 고전적인 IndentationError에 부딪혔습니다. 이는 코딩과 정보 수집 모두에서 정확성이 얼마나 중요한지를 일깨워 주었습니다—하나의 잘못된 공백이 시스템을 망가뜨리듯, 하나의 놓친 디테일이 조사를 좌절시킬 수 있습니다.
보안 우선: 자격 증명 회전
GitHub에 배포하면서 실제 보안 시나리오를 경험했습니다: Personal Access Token(PAT) 관리. 로컬 설정 오류 후 즉시 토큰을 회전시켜 비밀 관리의 중요성을 개발 라이프사이클에 재확인했습니다.
코드 보기
프로젝트는 완전 오픈소스이며, 단일 Docker 명령으로 배포할 수 있습니다.