HackCTF Forensics Writeup (Let'S get it! Boo*4)
문제
Let'S get it ! Boo * 4 대문자가 이상하게 들어가 있는 것이 보인다면 당신은 LSB를 알고 있는 겁니다. ㅎ
풀이
위에 문제에서 대문자가 이상하게 들어가 있는데 대문자로 된 글자들을 나열하면 LSB가 된다. 보통 LSB를 사용한 문제에는 이렇게 문제에서 티를 내주기 때문에 그대로 풀면 되는데 풀기 전에 LSB가 무엇인지 먼저 알아보도록 하자.
LSB (Least Significant Bit)
LSB는 하나의 데이터 형에서 가장 낮은 위치의 Bit를 의미한다. 반대로 하나의 데이터 형에서 가장 높은 위치의 Bit는 MSB라고 한다. 예를 들어 1byte unsigned char 형에서의 LSB와 MSB는 다음과 같다.
LSB와 MSB가 어떻게 사용되는지는 나중에 달리는 reference에 블로그를 참조하시면 될 것 같고 이 최하위 비트가 포렌식 분야에서 어떻게 사용되는지를 알아보자.
LSB Steganography
주로 jpeg 및 bmp 같은 24비트 이미지 파일에 적용이 되며 24bit 가장 위치가 낮은 최하위 비트를 조작하여 이미지를 변조한다. 하지만 이렇게 변조된 데이터는 사람의 눈으로 알아채기 힘들정도로 미세한 변화를 주기 때문에 데이터를 숨기는데 사용할 수 있다.
자 그럼 이제 문제를 풀어봅시다.
문제를 받고 연 이미지 파일이다. booboobooboo
LSB 문제인 것을 위에서 예측 하였으니 헥스 에디터로 여는건 생략하고 stegsolve를 이용하기로 했다.
stegsolve 라는 툴은 LSB를 이용하여 그림을 숨겨두거나 텍스트를 숨겨 놓았을 때 유용하게 사용할 수 있는 툴이다.
그림이 숨겨진 경우 아래 사진과 같이 각각의 색을 조정하여 숨겨진 텍스트를 나타나게 해준다.
다만 이번엔 숨겨진 것이 그림이 아니라 텍스트 인 듯하여 다른 방법을 사용해야 한다.
다음과 같이 Data Extract 메뉴에 옵션을 주고 열면 HackCTF{0U].Bl0C0xCDA9~~~}와 같이 플래그 포멧과 이상한 값들이 보인다.
( 옵션은 최하위 비트를 찾을 것이니 LSB First로 두고 Bitmap이미지는 RGB가 아닌 BGR방식을 따르기 때문에 Bit Plane Order를 BGR로 주었다. 또한 Bit Planes는 최하위 비트인 0번째 RGB비트만 주어서 Extract해주면 된다.)
Include Hex Dump in Preview 탭을 꺼주고 Save text를 누르면 txt파일로 저장할 수 있다.
그렇게 해서 생긴 요놈들이 뭘까 하다가 "0x" 가 있길래 무슨 헥스값인가 하여 검색을 하였다.
그 결과 한글 Unicode라는 것을 알 수 있었고 이를 통해 Flag를 구할 수 있었다.
zsteg
stegsolve가 아닌 다른 steganography tool 이다.
다음과 같이 LSB 이미지와 관련된 스테가노 그래피가 사용되었는지 분석하여 뽑아준다.
두번째 줄을 보면 "HackCTF{0U]" 와 같이 일부분을 뽑아주는 것을 확인할 수 있다.
그리고 다음과 같이 옵션을 이용하여 뽑아내면 stegsolve와 같은 결과값을 얻어낼 수 있다.
이 문제를 마지막으로 HackCTF Forensics 문제는 다 풀었다! ( 더 추가해주세요. ㅠㅠ )
포렌식 공부를 좀 더 해보다가 쉴 때 짬짬히 HackCTF에 포너블 문제도 풀어보도록 해야 겠다.