Root Me 에서 제공하는 암호학 문제
분류는 스테가노그래피로 되어있는데 암호학적인 요소가 있어서 그렇게 다시 분류했다.
문제 설명을 읽어보면
경찰이 테러리스트 그룹의 메세지를 가로챘는데,
메세지에는 다른 통신을 암호화하기 위한 비밀 키가 숨겨져 있다고 한다.
그걸 찾아서 decrypt 하는것이 문제의 목표이다.
문제에서 주어지는건 ch8.ppm 파일이다.
ppm 이라는 확장자를 난생 처음봤는데
칼리 리눅스로 파일을 옮겨보니 뭔가 그림이 보였다.
찾아보니 Portable PixMap 의 약자로 이미지 파일의 한 종류라고 한다.
일반적인 이미지 뷰어로는 볼 수가 없어서 어떻게 해야하나 고민하다가
cat 명령어로 파일 내용을 한번 봤더니
수상한 문자열들이 보였다.
Hi! Welcome to esoteric programming! The encrypted pass is : EPCQFBXKWURQCTXOIPMNV
라고 적혀있다.
일단 이걸로 암호문은 찾았다.
문제는 secret key 를 또 찾아야 한다는 것인데,
위에 문장에 있는 esoteric programming 을 주목했다.
esoteric programming 이란 장난으로 설계된 이상한 프로그래밍 언어를 말한다.
대표적으로 한글로 된 '아희' 라는 언어가 있다.
저렇게 쓰면 Hello, world! 를 출력할 수 있는 것이다.
구글에 PPM esoteric programming 이런식으로 검색해 봤더니 유사한 것을 하나 발견했다.
나무위키에서 찾은 Piet 라는 언어인데
이게 뭔가 그림을 사용하고 도트형태로 된게 문제와 비슷한 느낌이라 한번 시도해보기로 했다.
npiet online(https://www.bertnase.de/npiet/npiet-execute.php) 이라는 사이트에서 테스트 해볼 수 있었다.
ch8.ppm 파일을 업로드 하고 execute 시켜주면 이렇게
key is EYJRFGTT 라는 문장이 출력된다.
이렇게 해서 secret key 와 암호문을 모두 구했다.
마지막 남은 과제는 이게 대체 어떤 알고리즘을 사용한 것이냐는건데
이것 저것 시도해보다가 Vigenere 암호라는것을 알았다.
위 표를 사용하면 비제네르 암호를 쉽게 풀 수 있다.
앞의 두개 정도만 해독해보면
key 값의 첫글자는 E, 암호문의 첫글자 역시 E이다.
표를보면 4번행이 E로 시작하는것을 볼 수 있다.
4번 행에서 암호문의 첫글자인 E의 열 이름(파란색)을 읽어주면 된다.
이 경우에 A가 되고, 평문의 첫번째 글자는 A가 되는 것이다.
두번째 글자도 마찬가지이다.
Key 의 두번째 글자는 Y, 암호문의 두번째 글자는 P이다.
표에서 y로 시작하는 행은 24번행이고, 해당 행에서 P 위치의 열이름은 R이 된다.
그래서 평문의 두번째 글자는 R이다.
이런식으로 계속해서 풀어주면 된다.
사실 비제네르는 온라인에서 더 간단하게 풀 수 있다.
CyberChef(https://gchq.github.io/CyberChef) 에서 Vigenere Decode 를 선택해주고
암호문과 키를 넣으면 평문을 바로 얻을 수 있다.
'워게임 > Root Me' 카테고리의 다른 글
[Root Me] XSS - Reflected - 웹해킹 / 크로스사이트스크립트 (65) | 2022.11.25 |
---|---|
[Root Me] Malicious Word macro - 포렌식 / Volatility (62) | 2022.11.21 |
[Root Me] APNG - Just A PNG - 포렌식 / 스테가노그래피 (47) | 2022.11.11 |
[Root Me] NoSQL injection - Authentication - 웹해킹 / Python (43) | 2022.11.05 |
[Root Me] PHP - Loose Comparison - 웹해킹 / MD5 Magic Hash (52) | 2022.10.25 |