포렌식 Tip
스테가노그래피 CTF 체크리스트
https://stegonline.georgeom.net/checklis
https://stylesuxx.github.io/steganography/
StegOnline(강력)
파일 카빙
binwalk
foremost
foremost -t all -i filename
LSB steg
zsteg
StegOnline(String .. etc)
SmartDeblur: 블러처리된 사진 복구
forevid: 프레임 단위 영상 분석도구(*.avi)
SNOW: Whitespace 언어 Steganography 도구
diffimg: 두 이미지를 비교, 다른 부분 분석
steghide: 임지에 데이터를 숨기거나 추출해냄.(LSB에 숨기고자 하는 내용 암호화하여 삽입)
exiftool: exif 데이터 출력
pillow 라이브러리(파이썬)
Forensically
https://present4n6.tistory.com/65
[디지털포렌식 까마귀:티스토리]
2.3 파일 카빙 도구
다양한 기법에 따라 카빙 기능이 삽입된 포렌식 도구 또는 오직 파일 카빙의 기능을 제공하는 도구들이 다양하게 존재한다. 이러한 도구들은 제공하는 파일 유형 또는 기법이 서로 다르기 때문에 같은 환경에서의 도구별 파일 카빙 결과는 상이하게 나타난다. 잘 알려진 오픈소스 파일 카빙 도구로는 Foremost, Scalpel, Bulk extractor, Photorec 등이 존재한다. Bulk extractor은 zip, exif 파일 카빙이 가능하지만 대부분 문자열을 카빙하는데 활용되며 Photorec의 경우 그래픽 파일을 카빙하는 목적으로 사용된다. Foremost와 Scalpel은 문서, 오디오, 비디오, 압축, 그래픽 등의 다양한 파일을 지원하는 파일 카빙 도구이다. 본 논문에서는 다양한 파일 유형의 데이터셋으로 구성된 환경에서의 도구 검증을 위하여 Foremost v1.5.7[10] 도구를 사용하였다. 해당 도구는 데이터 복구를 위한 Linux 플랫폼 오픈소스 파일 카빙 도구로 널리 알려져 있으며 초기에 사용되어 헤더, 푸터 및 데이터 구조를 사용하여 파일을 복구할 수 있다. dd, Safeback, Encase 등으로 생성한 이미지 파일 혹은 드라이브에 직접 이미지 파일을 카빙할 수 있으며, 헤더, 푸터 및 데이터 구조는 configuration (config) 파일로부터 카빙 대상의 파일들을 지정하므로 복구하려는 특정 파일의 헤더 및 푸터의 정보를 입력함으로써 기존에 지원하지 않는 파일을 속성을 입력하여 선택할 수 있다. Foremost는 Scalpel[11]이라는 카빙 도구 개발에도 사용되어 졌으며, Scalpel은 현재 Foremost와의 코드를 공유하지만 불필요한 memory-to-memory 복사와 디스크 I/O을 줄일 수 있는 최적화된 방식 사용하여 성능이 비교적 우수한 것으로 연구되었다[12]. 하지만 Scalpel은 기본적으로 설정되어있는 파일 카빙을 위한 헤더/푸터 시그니처 및 데이터 구조가 Foremost보다 매우 다양하여 카빙할 수 있는 파일의 개수가 불필요하게 많아지기 때문에 하나의 시나리오로부터 4TB 이상의 파일이 복사되어 본 연구에서 실험 환경적인 한계가 존재한다. 따라서 Foremost를 통해 개발된 이미지로부터 검증한 결과를 제시한다.
V. 파일 카빙 도구 검증
5.1 파일 카빙 결과
파일 카빙 도구를 검증하는데 있어 샘플 파일 집합에 대한 레이아웃에 대한 정보를 수집하였다. 이 정보에는 모든 파일 목록, 샘플 파일의 크기, 블록 범위 및 MD5로 구성된다. MD5는 암호 해시 함수를 사용하여 계산된 32자의 16진수를 나타내어, 특정 파일을 고유하게 식별하는데 사용할 수 있다. 도구로부터 파일을 카빙하는데 있어 결과는 크게 세 가지 유형으로 이어질 수 있다. Table 5는 세 가지 유형의 결과를 나타낸다. 카빙 결과에서 샘플 파일 집합의 MD5와 일치하는 경우는 올바르게 카빙된 파일로 판단되어 Positive를 의미한다. 하지만 MD5가 일치하지 않는 항목이 없는 경우 False positive라고 의미하지 않는다. 대부분 파일 형식은 시작과 끝 부분에 일정한 공간을 가지고 있다. 예를 들어, html 파일은 정확한 결과를 위해서는 카빙될 필요가 없는 비어있는 새로운 데이터와 함께 카빙되어 다른 MD5 값이 생성된다. 하지만 블록 범위가 동일하면 카빙 결과를 Positive라고 할 수 있으며 이러한 결과를 Known false positive라고 한다. 따라서, 우리는 파일 유사도 측정 도구인 ssdeep을 사용하여 파일 간의 유사도가 99% 이상의 결과를 나타내는 경우를 Positive와 동일하게 판단한다. 또한, Positive와 Known false positive 외의 결과를 False negative라고 할 수 있다. 즉, 샘플파일 집합에 포함되나 카빙이 되지 않은 경우를 False negative로 나타낸다. 또한 False negative는 도구가 샘플 파일을 지원하지 않아 카빙되지 않은 경우와 지원은 하지만 제대로 카빙 처리를 할 수 없는 경우로 나뉠 수 있다. 이를 각각 Supported false negatives와 Unsupported false negatives라고 한다. 도구 결과가 Unsupported false negatives보다 Supported false negative가 신뢰성을 떨어뜨리는 것이므로 나쁜 것으로 판단하여야한다[17].
CTF에 주로 출제되는 파일들의 헤더 시그니처