포렌식...첫 포렌식 문제다 ㄷㄱㄷㄱㄷㄱ
떨린다..캬
포렌식 문제를 풀기전 스테가노그래피에 대해 먼저 알아보자.
**스테가노그래피 (Steganography)**는 정보를 숨기거나 숨긴 메시지를 전송하는 기술입니다. "스테가노그래피"라는 단어는 그리스어에서 유래했으며, "steganos"(덮개)와 "grapho" (쓰다)의 결합으로, 직역하면 "덮개에 쓰기"라는 의미를 가지고 있습니다. 즉, **스테가노그래피는 메시지를 눈에 띄지 않게 숨기는 기술**입니다.
### 스테가노그래피의 목적
스테가노그래피의 주요 목적은 숨겨진 정보를 누군가에게 전송하면서 그 정보의 존재를 감추는 것입니다. 일반적으로, 사람이나 시스템이 전송된 정보의 존재를 인식할 수 없도록 하는 것이 핵심입니다. 이는 암호화(Encryption)와는 다른 개념으로, 암호화는 메시지를 읽을 수 없도록 만드는 반면, 스테가노그래피는 메시지를 **감추는 것**에 집중합니다.
### 스테가노그래피의 역사
스테가노그래피는 고대부터 사용되어 온 기술입니다. 예를 들어, 고대 그리스에서는 중요한 메시지를 나무나 금속 표면에 조각하여 전송했으며, 중세에는 인물의 머리카락을 깎아서 그 아래에 글을 숨기기도 했습니다. 그러나 현대의 스테가노그래피는 디지털 미디어, 특히 이미지, 오디오, 비디오와 같은 파일 형식을 사용하여 정보를 숨기는 방식으로 발전했습니다.
### 스테가노그래피의 종류
스테가노그래피는 여러 방식으로 구현될 수 있으며, 그중 가장 일반적인 형태는 다음과 같습니다:
1. **이미지 기반 스테가노그래피**:
- 이미지 파일에 비트 단위로 메시지를 숨기는 방법입니다. 이미지 파일은 인간의 눈으로는 변화를 감지하기 어려운 정도의 미세한 변경을 허용합니다.
- 가장 흔히 사용되는 방식은 **LSB (Least Significant Bit)** 기법입니다. 이는 이미지의 각 픽셀에서 가장 덜 중요한 비트를 변경하여 메시지를 숨깁니다. 예를 들어, 8비트 색상 값에서 가장 낮은 비트를 바꿔서 메시지를 인코딩하는 방법입니다.
2. **오디오 파일 기반 스테가노그래피**:
- 오디오 파일의 특정 샘플이나 주파수 대역에서 정보를 숨깁니다. 일반적으로 사람의 귀로는 감지할 수 없는 미세한 변화를 사용합니다.
- LSB 기법이나 주파수 영역 변형이 사용될 수 있습니다.
3. **비디오 파일 기반 스테가노그래피**:
- 비디오 파일의 각 프레임이나 오디오 트랙을 이용해 데이터를 숨기는 방식입니다. 이 방법은 이미지와 오디오를 결합하여 더욱 복잡한 데이터를 숨길 수 있습니다.
4. **텍스트 기반 스테가노그래피**:
- 텍스트 파일 안에서 글자나 단어 사이에 숨겨진 메시지를 삽입하는 방식입니다. 예를 들어, 글자 사이에 공백이나 특정 문자 순서를 숨기는 방법이 있습니다.
- 더 복잡한 기법으로는, 텍스트의 문법적인 변형을 통해 숨기는 방법도 있습니다.
5. **기타 형식**:
- **IP 패킷**의 헤더, **디지털 이미지의 메타데이터** 등 다양한 디지털 매체에서 스테가노그래피를 구현할 수 있습니다.
### 스테가노그래피의 응용 분야
1. **보안 및 프라이버시**:
- 스테가노그래피는 민감한 정보나 비밀 데이터를 안전하게 전달하기 위해 사용될 수 있습니다. 예를 들어, 정부나 군대에서 비밀 메시지를 전송하는 데 사용될 수 있습니다.
2. **디지털 워터마킹**:
- 저작권 보호를 위해 이미지나 비디오에 스테가노그래피를 사용하여 저작권 정보를 숨기기도 합니다. 이는 파일의 소유권을 증명하는 수단으로 사용됩니다.
3. **암호학 및 정보 보안**:
- 중요한 정보를 암호화하지 않고 숨기는 방식으로, 정보를 암호화하는 것만으로는 충분하지 않은 경우에 사용됩니다. 예를 들어, 온라인에서 비밀 메시지를 보내는 것 외에도 스테가노그래피를 통해 누군가의 시스템에서 중요한 데이터를 숨기는 경우도 있을 수 있습니다.
4. **디지털 포렌식**:
- 범죄 수사나 디지털 포렌식에서 스테가노그래피를 추적하여 숨겨진 데이터를 찾아내는 일이 있습니다. 이는 특히 사이버 범죄, 개인정보 유출 사건 등에서 중요한 역할을 합니다.
### 스테가노그래피의 장단점
#### 장점:
- **정보 은닉**: 정보를 눈에 띄지 않게 숨길 수 있어, 보안이 필요한 상황에서 유용합니다.
- **비가시성**: 암호화된 정보와 달리, 숨겨진 정보의 존재 자체를 인식하기 어려워, 공격자가 해당 정보를 찾는 것이 매우 어렵습니다.
#### 단점:
- **용량 제한**: 스테가노그래피를 사용할 수 있는 공간에 제한이 있습니다. 이미지 파일처럼 용량이 작은 파일에 숨길 수 있는 데이터 양이 제한적입니다.
- **탐지 위험**: 고급 탐지 기법을 사용하면 스테가노그래피로 숨겨진 데이터를 찾을 수 있습니다.
- **법적 문제**: 불법적인 정보나 악성 코드가 숨겨져 있는 경우, 법적 문제가 될 수 있습니다.
### 결론
스테가노그래피는 디지털 환경에서 비밀 정보를 전송하고 저장하는 중요한 방법 중 하나입니다. 그러나 이 기술은 정보 보호뿐만 아니라, 악의적인 용도로도 사용될 수 있기 때문에, 이를 탐지하고 분석하는 기술도 중요합니다.
파일을 이제보자
whitebear.png 파일이다
저번에 ctf에서 jpg이미지 복원해야한다고 HxD깔았었는데 그걸로 먼저 헤더 시그니처를 확인해봤다
**HxD**는 바이너리 파일 편집기이자 헥스 에디터(HEX Editor)로, 주로 **16진수(헥스)** 형식으로 데이터를 읽고 편집하는 데 사용됩니다. 이 프로그램은 파일의 바이트 레벨에서 직접 데이터를 수정할 수 있는 기능을 제공하여, 개발자나 보안 전문가가 파일을 분석하거나 수정을 필요로 할 때 유용합니다.
### 주요 기능:
1. **헥스 편집**:
- HxD는 바이너리 파일을 16진수로 표시하고, 사용자가 각 바이트를 직접 수정할 수 있도록 합니다. 텍스트 파일 뿐만 아니라 실행 파일, 이미지 파일, 디스크 드라이브, 메모리 덤프 등 다양한 파일 형식을 지원합니다.
2. **파일 비교**:
- 두 파일을 비교하고 차이를 표시하는 기능을 제공합니다. 파일이 어떻게 다르게 변형되었는지 확인할 수 있습니다.
3. **메모리 덤프**:
- HxD는 시스템의 메모리를 덤프하여 직접 수정하거나 분석할 수 있습니다. 이를 통해 프로그램의 메모리 내용을 실시간으로 볼 수 있습니다.
4. **디스크 편집**:
- HxD는 하드 드라이브의 데이터를 직접 편집할 수 있는 기능을 제공합니다. 이를 통해 파일을 복구하거나, 하드 드라이브 상의 특정 데이터에 대한 작업을 할 수 있습니다.
5. **찾기 및 바꾸기**:
- 16진수 형식이나 텍스트로 파일을 검색하고, 일괄적으로 변경하는 기능을 제공합니다.
6. **파일 및 데이터 구조 분석**:
- 바이너리 파일이나 데이터를 분석하고, 어떤 형식으로 구조가 되어 있는지 파악하는 데 유용합니다.
7. **대용량 파일 처리**:
- HxD는 매우 큰 파일도 효율적으로 처리할 수 있어, 대용량 파일이나 시스템 덤프 파일을 분석할 때 유용합니다.
8. **인터페이스**:
- 직관적인 사용자 인터페이스를 제공하여, 복잡한 작업을 상대적으로 쉽게 수행할 수 있도록 도와줍니다.
### 용도:
- **소프트웨어 개발**: 프로그램의 실행 파일이나 바이너리 데이터를 분석하고 수정하는 데 사용됩니다.
- **보안 분석**: 악성코드 분석, 파일의 무결성 검사, 시스템의 보안 취약점 점검에 유용합니다.
- **디지털 포렌식**: 파일의 메타데이터를 분석하거나 삭제된 파일을 복구하는 작업에 사용됩니다.
- **파일 복구**: 손상된 파일을 복구하거나, 파일의 특정 부분을 수정하는 데 유용합니다.
### 지원 운영체제:
- **Windows**: HxD는 주로 Windows 운영 체제에서 사용되며, 무료로 다운로드하여 사용할 수 있습니다.
HxD는 파일을 손상시키지 않고 바이트 단위로 세밀하게 데이터를 수정할 수 있는 매우 유용한 도구입니다.
DH문자열 검색, 푸터 시그니처 뒷부분도 특이사항이 없다.
PNG (Portable Network Graphics) 파일은 이미지 파일 형식 중 하나로, 고유의 **헤더**와 **푸티 시그니처**를 가지고 있습니다. 이를 통해 PNG 파일이 다른 파일 형식과 구별되며, 올바른 파일 형식을 유지할 수 있습니다.
### 1. **PNG 헤더 (Signature)**
PNG 파일의 첫 부분은 **헤더 시그니처**로, 파일이 PNG 형식임을 식별할 수 있도록 돕는 고유한 바이트 문자열을 포함합니다. 이 헤더 시그니처는 PNG 파일이 시작될 때 반드시 있어야 합니다.
- **헤더 시그니처**는 **8바이트** 크기로 고정되어 있습니다.
- 시그니처 값은 다음과 같습니다:
```
89 50 4E 47 0D 0A 1A 0A
```
이 값을 각각 설명하면:
- `89`: 파일을 ASCII 코드로 표현한 값으로, 특정 바이트 값은 파일을 바이너리로 읽을 때 데이터가 손상되었는지 확인하는 용도로 사용됩니다.
- `50 4E 47`: 이는 "PNG"라는 문자열의 ASCII 코드입니다.
- `0D 0A`: 이는 CR (Carriage Return)과 LF (Line Feed) 문자로, 줄바꿈을 의미합니다.
- `1A`: DOS/Windows에서 파일 끝을 나타내는 제어 문자로, 파일에서 발생할 수 있는 데이터 손상 여부를 방지합니다.
- `0A`: LF (Line Feed) 문자입니다.
### 2. **PNG 푸티 시그니처 (Footer Signature)**
PNG 파일의 끝 부분에는 **푸티 시그니처**가 존재합니다. 이는 PNG 파일이 제대로 끝났음을 나타내는 중요한 시그니처입니다. 푸티 시그니처는 다음과 같습니다:
- **푸티 시그니처**는 4바이트 크기로 고정되어 있습니다.
- 시그니처 값은:
```
49 45 4E 44
```
이 값은 ASCII 코드로 표현된 "IEND" 문자열입니다. 이는 PNG 파일의 끝을 나타내는 마커로 사용되며, 모든 PNG 파일은 반드시 "IEND"로 끝나야 합니다. 이 시그니처는 PNG 파일에 포함된 데이터가 정상적으로 끝났음을 나타냅니다.
### 요약:
- **헤더 시그니처**: `89 50 4E 47 0D 0A 1A 0A` (PNG 파일 시작을 나타냄)
- **푸티 시그니처**: `49 45 4E 44` ("IEND", PNG 파일 종료를 나타냄)
이 두 시그니처는 PNG 파일의 정확한 시작과 끝을 식별하는 중요한 역할을 합니다. 이를 통해 다른 파일 형식과 구분할 수 있으며, 파일이 PNG 형식인지 확인하는 데 사용됩니다.
파일마다 헤더,푸티 시그니처가 다르다.
스테가노그래피 속 숨겨진 데이터를 추출해주는 사이트가 이미 있다. 역시나.천재는 세상에 많다
https://stegonline.georgeom.net/image
https://stylesuxx.github.io/steganography/
**RGB 값에서 0~7까지 설정하는 것**은 **스테가노그래피**에서 숨겨진 데이터를 추출할 때 사용되는 **비트 수준의 추출**을 의미합니다. 이 사이트에서는 **RGB 값**을 조작하여 **이미지 파일에 숨겨진 정보**를 추출하는 방식으로 작동합니다. 이제 이를 더 자세히 설명하겠습니다.
### RGB와 LSB (Least Significant Bit)
이미지는 일반적으로 RGB 값(빨간색, 초록색, 파란색)으로 표현되며, 각 색상은 보통 8비트로 표현됩니다. 즉, 각 색상 채널(R, G, B)은 0부터 255까지의 값을 가질 수 있습니다. 이러한 값은 **8비트**로 표현되며, 각 비트는 0 또는 1로 설정될 수 있습니다.
- 예를 들어, **RGB = (255, 255, 255)** 는 흰색을 나타내며, 각 색상 채널이 8비트로 표현될 때 `11111111`이라는 이진 값이 됩니다.
스테가노그래피에서 데이터는 종종 이미지의 **LSB (Least Significant Bit)**를 사용하여 숨겨집니다. LSB는 가장 낮은 비트이며, 이는 인간의 눈으로는 잘 감지되지 않는 미세한 변화입니다. 예를 들어, 빨간색 채널이 `11111111`일 때 LSB 비트(`1` 또는 `0`)만을 변경하여 메시지를 숨기는 방식입니다.
### RGB 값에서 "0~7까지 설정"의 의미
이 설정은 **RGB 값**에서 **0번째 비트부터 7번째 비트까지**를 추출하여 숨겨진 데이터를 가져오는 방법을 설정하는 것입니다. 각 RGB 채널의 8비트가 0에서 7까지의 비트를 갖고 있기 때문에, 각 비트를 추출하여 이미지의 색상 정보를 **데이터로 변환**하는 방식입니다.
- **0~7 설정**은 **각각의 비트를 사용하여 숨겨진 데이터를 추출**하는 범위를 지정하는 것입니다.
- 예를 들어, **0~7**이면 8비트 모두를 추출하여 숨겨진 정보를 가져옵니다.
- 만약 **0~6**으로 설정하면, 7번째 비트(가장 낮은 비트)는 제외하고 6번째 비트까지의 정보만을 추출하게 됩니다.
### 원리
- **이미지 내 숨겨진 데이터 추출**은 LSB 기법을 기반으로 합니다. 이미지의 각 픽셀에서 RGB 값을 **하위 비트**만 사용하여 데이터를 숨깁니다.
- 예를 들어, `RGB = (100, 150, 200)`라는 픽셀에 대해, 각 색상의 이진 표현을 보면:
- 빨간색(R) = `01100100`
- 초록색(G) = `10010110`
- 파란색(B) = `11001000`
여기에 숨겨진 데이터는 **각 채널의 LSB** 비트(각각의 가장 낮은 비트)를 사용하여 저장됩니다.
### 예시
1. **RGB 값에 0~7까지 설정**: 이는 각 RGB 채널의 **모든 비트**를 사용하여 데이터를 추출하도록 설정합니다. 이 경우, 각 채널의 8비트(0~7 비트)를 모두 추출하여 데이터로 변환합니다.
2. **RGB 값에 0~6 설정**: 이 경우, **7번째 비트**는 무시하고 0~6번째 비트만 사용하여 숨겨진 데이터를 추출합니다. 이는 추출하는 데이터의 양을 줄이거나, 메시지가 조금 더 숨겨지게 만들 수 있습니다.
### 결론
RGB 값에서 "0~7까지 설정"은 이미지의 각 색상 채널(R, G, B)의 8비트를 모두 추출하여 숨겨진 데이터를 복원하는 작업입니다. 이 방식을 통해, 이미지의 픽셀들에서 **하위 비트만을 변경**하여 메시지를 숨기고, 이를 추출할 수 있게 되는 원리입니다.
맞습니다! **추출된 비트**를 **아스키 코드**로 전환시켜서 숨겨진 메시지를 찾는 방식입니다. 이 과정을 단계별로 살펴보면 다음과 같습니다:
### 1. **비트 추출**
- 이미지에서 숨겨진 데이터는 각 픽셀의 RGB 값에서 **하위 비트(LSB)**를 사용하여 저장됩니다.
- 예를 들어, **0~7까지 설정**으로 RGB의 각 채널(빨강, 초록, 파랑)에서 **모든 8비트**를 추출한다고 했을 때, 각 색상 채널의 8비트 중에서 LSB 비트들만을 선택하여 데이터를 복원할 수 있습니다.
### 2. **이진 데이터 생성**
- 추출된 비트들을 하나로 이어붙이면 **이진 문자열**이 만들어집니다. 예를 들어, RGB에서 LSB 비트만 추출하여 하나의 이진 코드로 합친다고 하면, `01100001 01101110 01100101`과 같은 이진 문자열이 생성될 수 있습니다.
- 각 8비트는 **1바이트 (1 byte)**에 해당하며, **1바이트는 1개의 아스키 문자**에 대응됩니다.
### 3. **아스키 코드 변환**
- 이진 데이터(8비트씩 자른 문자열)를 **아스키 코드**로 변환합니다. 아스키 코드는 **문자와 숫자, 특수 기호를 7비트 혹은 8비트로 표현**하는 표준입니다.
예를 들어:
- `01100001` → **a**
- `01101110` → **n**
- `01100101` → **e**
이렇게 추출된 비트들을 아스키 코드로 변환하면, 원래 숨겨진 메시지인 **"ane"**가 복원됩니다.
### 4. **숨겨진 메시지 복원**
- 이렇게 아스키 코드로 변환된 문자를 이어붙이면, 원래 숨겨진 메시지를 찾을 수 있습니다.
### 요약
- 이미지에서 RGB 값의 LSB 비트를 추출하여 이진 데이터를 얻고, 이 이진 데이터를 **아스키 코드**로 변환하여 숨겨진 메시지를 복원합니다.
- 이 방법은 **스테가노그래피** 기술의 기본 원리로, 이미지나 다른 미디어 파일 안에 정보를 숨기고, 이를 나중에 다시 복원하는 방식입니다.
참고 풀이 블로그
https://sh1r0hacker.tistory.com/90
https://apple-eden.tistory.com/8
https://velog.io/@c01dbr0th3r/Dreamhack-BasicForensics1
'Dreamhack > Dreamhack Wargame (Challenge)' 카테고리의 다른 글
[73] IT 비전공자 [dreamhack]File Vulnerability Advanced for linux문제 풀기 (1) | 2024.11.21 |
---|---|
[72] IT 비전공자 [dreamhack]Secure Mail문제 풀기 (2) | 2024.11.20 |
[70] IT 비전공자 [dreamhack] baby-union문제 풀기 (2) | 2024.11.18 |
[69] IT 비전공자 [dreamhack] Command Injection Advanced문제 풀기 (2) | 2024.11.17 |
[68] IT 비전공자 [dreamhack][wargame.kr] strcmp문제 풀기 (0) | 2024.11.16 |