1. 스테가노그래피(일반, 문서파일 등)

1. 스테가노그래피의

스테가노그래피(steganography) stegano(그리스어:감추어져 있다) graphos (그리스어 : 쓰다, 그리다) 가 결합된 단어로, 말 그대로 안보이게 감추어 쓴다는 것을 말한다. 이 것은 정보은닉(information hiding)의 한 방법으로, 일반적으로 사용되는 암호와는 차이가 있다.

암호화는 메시지 자체에 숨겨서 정보를 보내는 반면, 스테가노그래피는 커버(cover)라고 불리는 다른 매체 안에 정보를 숨겨 보내는 것이기 때문이다.

, 스테가노그래피는 커버데이터(cover data)안에 비밀 정보를 숨겨 제3자에게 전송하는 비밀통신기술인 것이다. 이 때 사용되는 커버(cover data)로는 디지털 이미지, 오디오 클립, 그리고 실행 가능한 파일 등이 사용된다.

즉 스테가노그래피는 암호의 한 종류라기보다는 또 한 종류의 분야라고 볼 수 있다. 암호의 경우에는 메시지를 해독 불가하게 하여 중간에 가로채도 못 알아보게 하는 것이지만, 스테가노그래피의 경우에는 이 메시지는 읽을 수 있으나 그 존재를 감춘다. 즉 암호와는 다르게 메시지가 있다는 사실 자체를 인식 못하게 할 수 있다.

현재는 스테가노그래피와 크립토그래피 2가지를 섞어서 사용하여 비밀의 효과를 높임.

 

2. 유래

기원전 5세기, 그리스의 왕 히스티에우스는 다이루스왕의 인질이었다. 그는 밀레투스의 양아들에게 밀서를 전달하는 방법으로 노예의 머리를 깎고 머리에 메시지를 쓴 후 머리카락이 자라자 그 노예를 밀레투스로 보낸 것이 시초이다. 또한 고대 로마인들은 천연재료를 이용하여 투명잉크를 만들어 불을 쬐어야만 읽을 수 있는 메시지를 만들었고, 또한 2차대전 중 독일에서 는 '마이크로도트'를 창안하여 전쟁 중 메시지를 위장하여 전송하였다.

그림입니다.

원본 그림의 이름: image1.jpeg

원본 그림의 크기: 가로 183pixel, 세로 262pixel 이는 메시지를 점 하나의 크기로 축소하는 것을 뜻 하는데, 영문자 i 등의 점에 붙여 위장 후 전송하였다.

 

 

3. 방식과 종류

스테가노그래피는 대칭키(비밀키)암호라고 볼 수 있다. Steganography 방법은 메시지의 존재 자체를 은폐하는 방법이다. 간단한 스테가노그래피의 예로는 고전부터 쓰이는 단순한 메시지를 숨기는 방식과 종이에 열 또는 화학처리를 해야 보이는 메시지 등이 있고, 현대에는 파일의 LSB나 이미지 파일의 픽셀의 RGB정보에서 각 픽셀의 LSB를 변화시켜 메시지를 숨기는 방식 등이 있다.

스테가노그래피가 많이 쓰이는 파일은 주로 이미지와 mp3 등의 매체이며 문서파일에 메시지를 숨기는 경우 또한 많이 쓰이고 있다. 문서파일의 경우, docxpptx의 경우에는 압축파일의 기능을 가지고 있으므로 압축해제로 그 안에 숨기거나 또는 문서내용과 섞어 메시지를 숨기기도 한다. (문장의 마침표로 위장하여 메시지를 숨기는 경우가 있다. Ex) 안녕하세요. 제 이름은 아 르 고 스 입 니 다 )

4. 장점과 단점

장점

- 일반적으로 CoverImage에 비밀정보를 숨기는 방법을 쓴다.

- File 안에 File을 숨기는 방식이며 숨긴 방식을 모르면 제 3자가 알아채기 힘들다.

- 암호화의 경우 제3자도 역시 암호화 된 데이터라는 것을 간파 하고 복호화를 시도할 수 있지만 Steganography의 경우 암호화 여부 조차 알기 힘들기 때문에 더욱 안전한다.

단점

- 본래 FileHASH(MD5,SHA1)을 알고 있다면 해쉬값 대조를 통하여 알아낼 수 있다.

- 잘못된 알고리즘으로 인하여 CoverData를 손상시켜 의심을 유발할 수 있다.

- 다량의 Data를 은닉하기 힘들다.

 

5. 분석 과정(간략히)

1. 커버(cover)파일로 의심되는 파일을 헥스이진파일분석기(HxD, WinHex )을 이용하여 간략히 분석한다.

2. Stegdetect( StegSpy2.1 )을 이용하여 숨겨진 데이터 유무를 판단한다.

3-1. 이미지 파일이면 StegSolve 등의 툴을 이용하여 LSB, Enhance LSB 등을 시도해본다.

3-2. 이미지파일이 아니면 binwalk를 이용하여 파일안에 숨겨진 파일이 있는지 분석해본.

4. 숨겨진 데이터를 추출한다.

 

6. 유용한 툴

분석툴 : StegSpy2.1, binwalk

StegSpy2.1 : 파일에 스테가노그래피 기법이 쓰였는지, 숨겨진 파일이 있는지 탐지해준다.

binwalk : 파일 분석툴, 파일안에 다른 파일의 헤더를 찾아준다.

2. 스테가노그래피(이미지파일)

1. 이미지 스테가노기법 방식들

여기서는 이미지파일을 기준으로 설명하겠다. 스테가노그래피는 분석하는데 있어서 과정은 크게 두가지이다.

주어진 이미지 파일에 숨겨진 데이터가 있는지 없는지 알아내는 감별과정

숨겨진 데이터가 있다면 그 데이터를 끄집어 내는 추출과정

먼저 설명하기 전에 http://www.jjtc.com/Steganography/tools.html 이곳에 들어가보면 수많은 스테가노그래피 툴들이 있는 것을 볼 수 있다. 우리는 이것을 보고 스테가노그래피 방식 및 기술은 많고 데이터 식별이나 해독자체를 어렵게 하는 정형화되고 널리 쓰이는 방식은 존재할 것이라 생각하지만, 그 생각은 틀렸다. 현재 스테가노그래피의 연구가 활발히 진행되고 있지만 아직까지 기법의 종류는 한정되어 있고, 이 기법들의 대부분은 쉽게 숨겨진 데이터 존재유무 파악 및 추출하는 크랙이 가능하다.

물론 이를 보안하기 위해 데이터를 숨길시 암호화(encryption)시켜 해독시 동일한 암호를 입력하지 않으면 복호화(decryption) 불가능 혹은 offset을 흐트리는 방식,

순차적인 LSB인코딩이 아닌 랜덤(혹은 Pusedo random, 랜덤한것처럼 보이는 알고리즘들 ex)난수발생) 형식으로 데이터를 인코딩하는 방식,

Fixed substitution 알고리즘을 기반으로 먼저 숨길 데이터 파일에 대해 인코딩한 후 재차 이미지에 삽입하는 기법 등

여러 안전성을 더하는 기법들이 존재하지만, 실제로 크랙 불가능할 정도로 정교한 스테가노그래피 알고리즘은 현재까지는 존재하지 않는다.

이 기법들을 크게 나누면 LSB, Fuse, DCT coefficient LSB 등등 많은 기법들이 있다.

2. LSB 및 스테가노기법

이미지 파일을 이용하여 어떻게 스테가노그래피를 적용할 것인가?

크게 공간적인 변환 방법과 주파수 변환 방법으로 구분됩니다.


1. 공간적인 변환 방법
이미지 파일에서의 LSB(Least Significant Bit)등을 이용한 방법으로써 이미지 내용 중 중요도가 가장 떨어지는 부분에 비밀 정보를 삽입하는 방법입니다.
이는 비밀 정보를 손쉽게 삽입할 수 있고 커버이미지의 종류에 따라 커버 이미지 크기의 최대 약 50%까지도 비밀정보를 삽입할 수 있다는 장점이 있지만 이미지의 변환에 약하다는 단점이 있습니다.

 

2. 주파수 변환 방법
JPEG 파일에서 쓰이는 DCT변환 등을 이용하는 방법으로서 이미지 변환 등에 대해 비밀 정보가 훼손되지 않는다는 장점이 있지만, 삽입할 수 있는 용량이 커버 이미지의 약 5~15%정도로 현저히 줄어드는 단점이 있습니다.

하지만, 보편적으로 LSB를 이용한 첫 번째 방법이 많이 사용되고 있습니다.
LSBLeast Significant Bit의 약자로서 말 그대로 가장 중요하지 않은 비트를 의미합니다.
이미지 파일에서의 LSB는 일반적으로 한 바이트 중에서 마지막 비트, 8번째 비트를 의미합니다. (: 1101101X, 여기서 X가 마지막 8번째 비트인 LSB)
반대로 MSBMost Significant Bit의 약자로서 가장 중요한 비트르 의미하는 것으로 이미지 파일에서의 MSB는 일반적으로 한 바이트 중 첫 번째 비트를 의미합니다. (: X1011011, 여기서 X가 첫 번째 비트인 LSB)


그림입니다.

원본 그림의 이름: image2.png

원본 그림의 크기: 가로 436pixel, 세로 247pixel
그림입니다.

원본 그림의 이름: image3.png

원본 그림의 크기: 가로 650pixel, 세로 233pixel

그럼 이미지 파일에서 왜 첫 번째 비트가 가장 중요하고 마지막 8번째 비트가 중요하지 않은걸까요?
그 이유는 이미지 파일의 구조에서 찾을 수 있습니다.

24비트 BMP파일을 예로 들어 보겠습니다.
24비트 BMP 파일에서 이미지를 나타내는 한 픽셀은 24비트로 표현(RGB 각각 8비트, 8비트, 8비트)되는데 이는 곧 한 픽셀을 나타낼 수 있는 색상의 수가 224승 개만큼 존재한다는 것을 의미합니다. 이 때 RGB 각각의 색상을 나타내는 8비트짜리 3개가 이미지의 색상을 표현해 낸다고 볼 수 있는 것이죠.
그런데 RGB 색상의 경우 상위 비트가 바뀔수록 육안으로 인식하 수 있는 색상의 변화가 크고 하위 비트로 내려갈수록 그 변화가 작아집니다.

그림입니다.

원본 그림의 이름: image4.png

원본 그림의 크기: 가로 743pixel, 세로 401pixel

그림입니다.

원본 그림의 이름: image5.png

원본 그림의 크기: 가로 394pixel, 세로 69pixel

[위 오렌지 색은 같아 보이지만, 그 구성이 다릅니다.]


이러한 이유로 LSBMSB라는 말이 나왔죠.
그렇다면 LSB를 이용할 때 몇 비트까지 사용해야 육안으로 식별하기 어려운걸까요?
물론 정확한 답은 없습니다. 이미지에 따라 비트 이상으로 사용할 수 있는 경우(물론 드물겠지만)도 있고 1비트만 사용할 수 있는 경우도 있을 것이겠죠.

LSB-4비트를 조작하는 경우 이미지의 전체적 외형은 크게 변경되지 않으나 색감과 윤곽선의 현저한 왜곡이 나타납니다.
LSB-2비트를 조작하는 경우는 언뜻 보기에 이미지의 외형, 색감, 윤곽선이 동일한 것처럼 보이지만 이 경우에도 비트가 조작된 이미지를 확대해서 보면 변경된 부분을 육안으로 불 수 있습니다.
마지막으로 LSB-1비트의 경우 이미지의 외형뿐만 아니라 색감, 윤곽선 모두 동일한 것으로 보입니다. 물론 육안으로 봤을 경우죠.
또한 확대 이미지에서도 변경된 부분을 식별하기가 어렵죠.


따라서 LSB를 이용한 이미지 스테가노그래피의 경우 이미지에 관계없이 일괄적인 정보은닉을 위해 LSB-1비트를 이용한다고 보면 됩니다.

마지막으로 아래 사진을 보시면 이해가 가실 것 입니다.


그림입니다.

원본 그림의 이름: image6.png

원본 그림의 크기: 가로 519pixel, 세로 364pixel

프로그램 이름 : Adobe ImageReady [출처] 스테가노그래피 (Steganography)|작성자 바테크 연구소 http://blog.naver.com/namuya11/40207109776

 

1) LSB의 가장 원초적인 스테가노기법 : 숨기고자 하는 데이터를 바이너리(binary)화 시킨후 별다른 인코딩없이 png, gif 등의 bmp형식을 따르지 않는 이미지에 삽입하는 방식. 이런 경우 간단한 visual attack만으로도 숨겨진 데이터의 유무를 판별할수 있다. 물론 Statistical attack을 통해서도 물론 쉽게 판별가능하다.

Visual attack이란 원본이미지에서 추출한 LSB값들을 enhance시켜서(예를 들어 1byte 블록의 맨 끝 LSB를 사용하는 기법이면 이 비트가 1이면 이 블록을 FFFFFF(하양)으로 만들어주고 0이면 000000(검정)으로 만드는 것) 시각적 효과를 통해(원본이미지의 LSB시각화와 비교하여보면 스테가노데이터가 삽인된 이미지는 가시화된 차이가 있다.) 쉽게 LSB기법을 통해 파일이 숨겨졌다는 것을 판별할 수 있다.

2) JPG파일의 LSB 인코딩 방식 : JPG파일은 압축방식을 이용한다. 이 압축방식에서 데이터가 손실되는데, 이 손실되는 부분으로 인해 LSB로 숨겨진 메시지 또한 손실되어 의미가 사라진다. 그러나 복잡한 여러 알고리즘이 개발되어 JPGLSB기법 또한 개발되었다. 그러나 이러한 스테가노기법 또한 Stegdetect 등의 분석툴로 쉽게 판별가능하다. Ex) StegSpy 2.1

3) 납땜 방식(Fuse) : 숨길 데이터에 대한 직접적인 수정 없이 은닉매체 끝 쪽 등에 파일을 숨기는 방식, 물론 해쉬 값이나 Fixed substitution암호, Ascii table 변환 복잡화, 등등 다양한 암호화 방식으로 분석을 복잡하게 하고 패스워드 등을 넣어 숨겨진 파일 탐지와 복호화 등을 어렵게 만들 수는 있으나, 기본적으로 헛점이 가장 많이 존재하는 스테가노기법이다.

 

3. 분석 방법

1) GIF포맷

GIF2^24개의 24비트 컬러값들 중에서 255개의 컬러값만을 임의로 뽑은 파렛트를 인덱스해서 컬러를 표현하기 때문에 실제로 LSB에다 데이터를 인코딩할 경우 이 파렛트에 대응되는 인덱스값이 달라져서 실제 스테가노그래피화된 파일이 많이 달라보이게 된다. 그렇기에 활용성이 제한적이고 문제로 나올 경우 수준 또한 굉장히 낮다. GIF 포맷을 사용한다 하더라도 회색계열의 단조로운 색채의 그림에 적은 데이터를 숨기는 정도다. https://www.net-force.nl/challenges/ steganography 5번문제 참조(국기형태의 단순 5개로 분리된 사진을 검은선 기준으로 각색 rgb를 구해 b 비트에 문자열을 인코딩한 방식)

2) BMP, PNG 포맷

이 포맷방식은 직접적인 각각 픽셀에 RGB값들을 인코딩하는 방식을 하기 때문에 LSB에 적합하다. 하지만 statistical attack이나 visualization attack 등을 통해 쉽게 숨겨진 파일 유무를 판별할 수 있어 판별 후 헥스 값을 분석하는 방법이나 Stegsolve 등의 간단한 툴의 활용만으로 풀 수 있다. (암호인코딩이 들어간 경우는 조금 복잡해 질수도 있다.) Ex) 2014 국가암호공모전 1-A분야 문제2

3) JPG/JPEG 방식

JPG/JPEG는 압축 과정에서 단순 LSB로 파일을 삽입하게되면 상당수가 변질되어 디코딩이 불가능하므로 여러 복잡한 방식을 통하여 이루어지므로 일반적인 탐지를 힘들게 만든다. 분석과정은 심히 복잡하여 툴 활용이 추천되고, 복잡성으로 인해 스테가노 문제로 거의 나오지 않는다.

4. 스테가노 암호키

스테가노그래피 툴들은 파일들의 크랙을 더 어렵게 하기위해서 암호키를 사용하게 되는데, 이 암호키는 크게 두가지로 나뉘어진다.

1) 스테가노기법적 암호키 : 이 암호키는 스테가노그래피할 데이터를 저장매체에 숨길 때 삽입/추출 방식에 영향을 준다. 예를 들어 저장매체의 저장공간이 여러곳일 경우, 이 키를 통해 저장매체의 어느 부분에 자료를 나누어 숨길지 지정한다.

2) 암호학적 키 : 데이터를 저장매체에 숨길 때 사용하는 암호화에 사용하는 키를 말한다.

 

 

 

5. 유용한 툴

분석툴 : StegSpy2.1, Stegsolve, ImgStegano

StegSpy2.1 : 파일에 스테가노그래피 기법이 쓰였는지, 숨겨진 파일이 있는지 탐지해준다.

Stegsolve : bmp형식 파일에서 LSB Enhanced LSB 등 여러가지 편리한 기능을 제공해준다.

ImgStegano : 이미지 스테가노그래피를 풀어줌. 메세지 암호화 및 복호화 가능 또한 Enhanced LSB를 제공해준다.

 

 

5. 참고

Binwalk의 사용법 :

http://k1rha.tistory.com/entry/binwalker-%EC%82%AC%EC%9A%A9%EB%B2%95-%EA%B4%80%EB%A0%A8-%EB%B8%94%EB%A1%9C%EA%B7%B8-%EB%A7%81%ED%81%AC

dd 명령

if = 입력 파일

of = 출력 파일

ibs = 읽을 바이트 단위

skip = 건너뛸 바이트 수

 

그림입니다.

원본 그림의 이름: image7.png

원본 그림의 크기: 가로 540pixel, 세로 146pixel

그림입니다.

원본 그림의 이름: image8.png

원본 그림의 크기: 가로 540pixel, 세로 101pixel

dd 명령의 if 옵션은 입력 파일, of 옵션은 출력 파일, ibs 옵션은 읽을 바이트 단위, skip 옵션은 건너뛸 바이트 수를 의미합니다. binwalk를 통해 elf 파일의 위치가 0x10FC00 (1113088)임을 알았기 때문에 위와 같이 실행하면 다음과 같은 elf 파일이 떨어지게 되고, 실행 권한을 준뒤 실행 하면 다음과 같이 나타나게 됩니다.

그림입니다.

원본 그림의 이름: image9.png

원본 그림의 크기: 가로 540pixel, 세로 52pixel








내 메일이나, 원드라이브 등에서 잘찾아보면 암호학팀 관련 자료 있을거임 거기서 찾아오셈;



 

+ Recent posts