[디지털 포렌식] 사진 파일에서 메타(EXIF) 정보 알아보기
들어가며
메타데이터에 알아 보려고 한다. 스마트폰의 발전으로 매일 사진을 찍는다. 우리가 매일 찍는 사진에도 데이터가 들어가 있다. 우리가 아는 데이터는 디지털 포렌식은 현대 조사의 핵심 요소로, 디지털 장치로부터 데이터를 추출하고 분석하는 것을 중심으로 빠르게 발전하고 있다.
수사관들이 자주 활용하는 주요한 데이터 중 하나는 메타 정보 또는 메타데이터이다. 이 메타데이터는 경우에 따라 추가적인 맥락이나 증거를 제공하는 데 있어 가치 있는 도구가 될 수 있으며, 종종 다른 증거들을 보완하거나 입증하는 데에도 사용된다.
가장 폭넓게 이해하는 메타데이터는 기본적으로 ‘데이터(data)에 대한 데이터’입니다. 이는 주어진 데이터에 대한 추가 정보를 제공하며, 그렇지 않으면 감춰질 수 있는 통찰력을 제공한다. 디지털 포렌식의 맥락에서 메타데이터는 문서의 작성자부터 파일의 마지막 수정, 사진이 촬영된 장치, 그리고 그 장소까지 대부분의 정보 그리고 방대한 정보까지 알아볼 수 있다.
EXIF 메타데이터 이해하기
메타데이터의 대표적인 예로는 Exchangeable Image File Format (EXIF) 데이터가 있다. EXIF 메타데이터는 일반적으로 디지털 카메라와 스마트폰으로 촬영한 이미지에 내장되어 있다. 이 데이터는 이미지 파일에 자동으로 추가되며, 디지털 포렌식 조사에서 중요할 수 있는 다양한 정보를 포함할 수 있다.
카메라가 촬영한 사진, 녹음파일에 시간 등의 각종 정보를 담기 위해 개발되었다 JPEG, TIFF 6.0과 RIFF, WAV 포맷에 이미지나 소리에 대한 정보를 추가로 기록할 수 있다. 이렇게 메타데이터가 있기 때문에 우리가 사진을 찍었을때 가로로 저장 할지 세로로 저장할지가 정해진다. 우리사 앨범을 봤을때 가로 세로로 볼 수 있는 이유이다.
스마트폰으로 사진을 찍으면 DCIM 폴더에 찍은 사진이 저장되는 이유는 JEIDA의 Design rule for Camera File system 에 따르기 때문이다. exif.org에 정의되어 있다고 한다.
EXIF 메타데이터란?
EXIF 데이터는 디지털 카메라(스마트폰 포함), 스캐너, 그리고 다른 시스템에 의해 사용되는 이미지, 소리, 부가 태그의 형식을 지정하는 표준이다. 이는 카메라 모델과 제조사, 사진이 촬영된 날짜와 시간, 방향, 셔터 속도, 초점 거리, 측광 모드, ISO 속도 등의 광범위한 정보를 포함한다. 특히, 사진이 촬영된 정확한 지리적 위치를 지정할 수 있는 GPS (Global Positioning System) 데이터를 포함할 수도 있다.
포렌식에서의 활용
EXIF 메타데이터의 메커니즘, 강점과 약점, 그리고 고급 디지털 포렌식 방법론에서의 활용을 이해하는 것은 이 주제에 대한 더 포괄적인 시각을 제공할 수 있다. 다음의 주제들은 디지털 포렌식 조사에서 EXIF 메타데이터의 미묘한 사용법에 대해 더 알아보려고 한다.
간단한 실습
import argparse
from PIL import Image
import pyexifinfo as pex
def get_image_info(image_path):
with Image.open(image_path) as img:
width, height = img.size
info = pex.get_json(image_path)[0]
translated_info = {
"사진크기": f"{width} x {height}",
"카메라제조사": info.get("EXIF:Make", "정보 없음"),
"카메라모델": info.get("EXIF:Model", "정보 없음"),
"소프트웨어": info.get("EXIF:Software", "정보 없음"),
"조리개": info.get("EXIF:FNumber", "정보 없음"),
"노출시간": info.get("EXIF:ExposureTime", "정보 없음"),
"ISO": info.get("EXIF:ISO", "정보 없음"),
"촬영일시": info.get("EXIF:DateTimeOriginal", "정보 없음"),
"플래시사용": info.get("EXIF:Flash", "정보 없음"),
"GPS정보": info.get("GPS:GPSLatitude", "정보 없음") + ', ' + info.get("GPS:GPSLongitude", "정보 없음"),
"확장자": info.get("File:FileTypeExtension", "정보 없음"),
"MIME타입": info.get("File:MIMEType", "정보 없음"),
"방향": info.get("EXIF:Orientation", "정보 없음"),
"해상도": f"{info.get('EXIF:XResolution', '정보 없음')} x {info.get('EXIF:YResolution', '정보 없음')}",
"조리개값": info.get("EXIF:ApertureValue", "정보 없음"),
"측광모드": info.get("EXIF:MeteringMode", "정보 없음"),
"화이트밸런스": info.get("EXIF:WhiteBalance", "정보 없음"),
"컬러스페이스": info.get("EXIF:ColorSpace", "정보 없음"),
"픽셀수": f"{info.get('EXIF:ExifImageWidth', '정보 없음')} x {info.get('EXIF:ExifImageHeight', '정보 없음')}"
}
original_software = "사진 편집 소프트웨어 이름"
if translated_info["소프트웨어"] != original_software:
translated_info["사진 수정 여부"] = "수정됨"
else:
translated_info["사진 수정 여부"] = "원본"
return translated_info
parser = argparse.ArgumentParser(description="Process image file.")
parser.add_argument('image', type=str, help='The path to the image file.')
args = parser.parse_args()
image_info = get_image_info(args.image)
for key, value in image_info.items():
print(f"{key}: {value}")
위에는 간단하게 파이썬으로 작성해 봤다. 유저가 지정한 이미지 파일의 메타데이터를 추출하고 출력하는 프로그램이다. 메타데이터는 디지털 이미지에 포함된 정보로 카메라의 모델, 촬영 설정, 날짜 및 시간, 그리고 GPS 위치 등을 포함 할 수 있다.
실습 결과
실습 결과 갭쳐 사진
코드설명
↓ 아래는 간단한 코드 설명이다.
라이브러리 임포트: 이 스크립트는 argparse, PIL(Python Imaging Library, 이제는 Pillow로 알려져 있음), pyexifinfo 라는 세 가지 외부 라이브러리를 사용한다. argparse는 명령 줄 인수를 처리하고, PIL은 이미지를 열고 정보를 가져오며, pyexifinfo는 EXIF 메타데이터를 읽는다.
함수 정의: get_image_info 함수는 이미지 경로를 인수로 받아 해당 이미지의 다양한 메타데이터를 추출하고 이를 사전 형태로 반환한다. 이미지의 폭과 높이는 PIL을 사용해 얻고, 나머지 정보는 pyexifinfo를 사용해 얻는다. 반환되는 사전은 키-값 쌍의 형태로, 각 키는 특정 종류의 정보를 나타내고 값은 해당 정보이다. 정보가 없는 경우, “정보 없음”으로 기록된다.
명령 줄 인수 처리: argparse 라이브러리는 사용자가 명령 줄에서 스크립트에 인수를 제공하는 방식을 정의한다. 이 경우, 사용자는 이미지 파일의 경로를 스크립트에 전달해야 한다.
메인 프로그램 실행: 사용자가 제공한 이미지 파일에 대해 get_image_info 함수를 호출하고, 반환된 메타데이터 사전을 반복하여 각 항목을 출력한다. 출력은 “키: 값” 형식으로 이루어진다.
이미지 수정 여부 판단: ‘소프트웨어’ 항목을 검사하여 원본 소프트웨어와 다른 경우, 이미지가 수정되었다고 판단한다. ‘사진 편집 소프트웨어 이름’은 원본 이미지를 생성하는데 사용된 소프트웨어의 이름으로, 실제 코드에서는 해당 소프트웨어의 실제 이름으로 교체되어야 한다.
이 프로그램은 다양한 이미지 분석 작업에 유용하게 사용될 수 있다. 예를 들어, 이미지가 어떤 카메라로 촬영되었는지, 어떤 설정을 사용했는지, 이미지가 수정되었는지 여부 등을 알아낼 수 있다.
코드 설명 2
요구사항
- Python 3.7 이상
- Pillow
- pyexifinfo
사용 방법
필요한 패키지 설치 이 프로젝트를 실행하기 위해서는 Pillow와 pyexifinfo 패키지가 필요하다.
모듈 설치
pip install Pillow
pip install pyexifinfo
스크립트 실행
스크립트는 이미지 파일의 경로를 명령 줄 인수로 받아 실행된다.
실행 예제
python3 image_info.py /경로/경로/image.jpg
이 때, /경로/경로/image.jpg는 분석하려는 이미지 파일의 실제 경로로 바꿔야 한다.
출력 정보
사진크기, 카메라제조사, 카메라모델, 소프트웨어, 조리개, 노출시간, ISO, 촬영일시, 플래시사용, GPS정보, 확장자, MIME타입, 방향, 해상도, 조리개값, 측광모드, 화이트밸런스, 컬러스페이스, 픽셀수, 사진 수정 여부
주의사항
사진 수정 여부는 이미지가 원래 생성될 때 사용된 소프트웨어와 메타데이터에 기록된 소프트웨어가 다르면 ‘수정됨’으로 표시된다. 이 판단 기준은 모든 경우에 완벽하게 작동하지는 않을 수 있다.
디지털 포렌식에서 EXIF의 중요성
EXIF 데이터의 디지털 포렌식에서의 활용은 과소평가될 수 없다. 제공할 수 있는 정보의 양을 고려할 때, EXIF 메타데이터는 종종 조사의 결정적인 부분이 될 수 있다.
타임스탬프와 장치 정보: EXIF 데이터에는 이미지가 촬영된 시점과 관련된 타임스탬프가 포함되어 있다. 이 정보는 이벤트의 타임라인을 만들거나 특정 사진이 촬영된 시점을 인증하는데 사용될 수 있다. 또한, 이미지를 촬영하는데 사용된 장치(카메라 제조사와 모델)에 대한 정보는 때때로 특정 장치를 사진에 연결하는 추가 증거를 제공할 수 있다.
위치 데이터: EXIF 메타데이터 내에서 가장 영향력 있는 정보 중 하나는 GPS 데이터일 수 있다. 장치에서 활성화된 경우, 이미지가 촬영된 곳의 지리적 좌표가 저장된다. 이 지오태깅은 특정 시간에 용의자나 피해자의 위치를 확립하는 데 중요한 역할을 할 수 있다.
데이터의 진실성: 마지막으로, 이미지 파일의 EXIF 데이터가 조작되었거나 변경되었다면, 이는 종종 포렌식 분석 중에 확인될 수 있다. 이는 누군가가 증거를 조작하려고 시도했음을 시사할 수 있으며, 이 자체가 중요한 발견이다.
그러나, EXIF 데이터는 이미지 파일에서 쉽게 수정하거나 제거할 수 있어서, 특정 상황에서 그 사용이 제한될 수 있다는 것을 명심해야 한다. 따라서, 디지털 포렌식 분석가들은 종종 다양한 데이터 소스와 분석 기법을 조합하여 견고하고 신뢰할 수 있는 사건을 구성해야 한다.
EXIF 데이터의 고급 분석
EXIF 메타데이터가 제공할 수 있는 데이터의 풍부함에도 불구하고, 이의 효과는 디지털 포렌식 전문가가 이 정보를 효과적으로 해석하고 활용하는 능력에 밀접하게 연관되어 있다. EXIF 데이터의 유용성을 향상시키기 위해 여러 분석이 필요하다.
상관 분석: 포렌식 조사관들은 여러 사진 또는 소스에서의 EXIF 메타데이터를 통합적으로 분석하는 상관 분석을 수행할 수 있다. 비슷한 카메라 설정, GPS 위치, 타임스탬프와 같은 공통 요소를 식별함으로써 패턴과 연결점을 찾아내어, 더 확실한 결론을 도출할 수 있다.
교차 참조 검사: EXIF 데이터는 장치 로그, 사용자 활동 로그, 네트워크 로그와 같은 다른 데이터 소스와 교차 참조하여 메타데이터의 진실성과 정확성을 입증하거나 반박할 수 있습니다.
데이터 복구 기법: EXIF 데이터가 삭제되었거나 수정되었더라도, 고급 데이터 복구 기법을 사용하면 여전히 복구할 수 있을 수 있다. 원래의 EXIF 데이터의 잔여물이 여전히 할당되지 않은 디스크 공간이나 시스템 복원 지점의 섀도우 복사본으로 남아있을 수 있다.
제한사항과 대책
EXIF 메타데이터가 디지털 포렌식에 풍부한 정보 소스를 제공하는 반면, 고려해야 할 특정한 제한사항들이 있다.
데이터 조작: EXIF 메타데이터에 대한 주요한 우려 중 하나는 이를 변경하거나 완전히 제거할 수 있다는 것이다. 이는 교차 참조, 데이터 복구 기법의 활용, 파일 시그니처의 분석을 포함하는 포렌식 워크플로우를 수립함으로써 대응할 수 있다.
개인정보 보호 도구: 다양한 개인정보 보호 도구와 서비스는 사용자의 개인정보를 보호하기 위해 이미지에서 EXIF 데이터를 자동으로 삭제한다. 이는 포렌식 분석을 위한 EXIF 메타데이터의 사용 가능성을 제한할 수 있다.
장치 간의 불일치: 모든 장치가 동일한 세트의 EXIF 메타데이터를 기록하지는 않는다. 특히 오래된 장치는 더 적은 메타데이터를 기록할 수 있다. 이런 불일치는 포렌식 목적으로 EXIF 데이터의 사용 가능성과 신뢰성에 영향을 미칠 수 있다.
이러한 제한 사항들에도 불구하고, EXIF 메타데이터가 디지털 포렌식 조사에 제공하는 이점은 상당하다. 그 응용과 제약에 대한 더 깊은 이해는 조사관들이 이 데이터를 더 효과적으로 활용하는 데 도움이 되어, 더 포괄적이고 정확한 조사에 기여할 수 있다. 기술의 빠른 발전에 따라, EXIF 메타데이터를 포렌식 목적으로 활용하는 방법은 분명히 계속 발전할 것이다.
마무리하며
결론적으로, 일상적인 사용자들에게서 종종 간과되는 EXIF 데이터는 디지털 포렌식에서 강력한 도구이다. 이는 디지털 이미지를 둘러싼 상황에 대한 더 깊은 이해를 제공하며, 조사 중에 사실을 확립하는 데 도움이 된다. 우리의 세계가 점점 더 디지털화되면서 이러한 메타데이터의 디지털 포렌식 분야에서의 중요성은 계속해서 증가할 것으로 보인다.
댓글남기기