Disk Forensic #12 (우리는 이 바이너리가...)
해당 파일을 다운로드하면 파일에 대한 확장자 정보가 나오지 않는다.
따라서 리눅스 환경으로 옮긴 다음, file 명령어를 통해 해당 파일의 확장자를 확인하였다.
다운로드한 binned라는 파일은 리눅스 실행 파일이라는 것을 확인할 수 있다.
해당 파일에 대한 동작 원리와 시스템 콜을 파악하여 분석하기 위해 strace 명령어를 입력하여 확인해보자.
strace 명령어는 시스템 콜을 추적하여 동작 과정을 출력해주는 명령어이다.
명령을 수행하면 파일의 동작 순서에 따라 시스템 콜을 확인 가능하다.
[그림 3]은 중간에 있는 내용이고, [그림 4]는 끝 부분에 있는 시스템 콜 내용이다.
위의 두 문자열 증거를 통해 두 문자열 사이의 31번 시스템 콜이 문제 해결과 연관되어 있다는 것을 추측 해볼 수 있다.
31번의 시스템 콜 내용은 다음과 같다.
아스키코드 변환 방식은 스테가노그래피 유형에서 자주 사용되는 방식이다.
따라서 31번 시스템 콜을 순서대로 시스템 콜 테이블 사이트에서 확인한 뒤, 번호를 정리하여 아스키코드로 변환하였다.
시스템 콜 테이블 사이트 : https://elixir.bootlin.com/linux/v3.14/source/arch/x86/syscalls/syscall_64.tbl
위 사이트에 접속한 다음, 시스템 콜 문자열을 시스템 콜 번호대로 아스키코드로 변환하면 플래그를 얻을 수 있다.
예시로 몇 가지만 설명해보자.
시스템 콜 맨 위에 보이는 문자열인 fork()는 시스템 콜 번호 57번이다.
이제 아스키코드로 변환 시켜보자.
57을 아스키코드 문자로 변환해보면 숫자 9를 의미한다.
한 가지 더 해보자면 그 다음 문자열인 getpeername() 시스템 콜 문자열의 시스템 콜 번호는 52번이다.
52는 아스키코드 문자로 숫자 4를 의미한다.
이렇게 하나씩 시스템 콜 문자열을 번호에 맞게 아스키코드로 변환 시켜보면 9447{Ch3ck_~} 플래그가 나오게 된다.
이번 문제는 처음 접해본 문제로 '이런 문제도 있구나' 라고 깨닫게 되었으며 많은 도움이 된 문제였다.
해당 문제를 접하는 사람은 꼭 풀어봤으면 좋겠다는 마음에 시스템 콜 문자열과 번호에 대한 아스키코드는 따로 정리하지 않겠다.
이로써 위 과정을 통하여 해당 문제를 해결할 수 있다.
# Reference
'Digital Forensics > CTF-D' 카테고리의 다른 글
[Disk Forensic] 이 편리한 안드로이드... (0) | 2020.04.03 |
---|---|
[Disk Forensic] 조개를 찾아 열고, 진주를 찾으십시오. (0) | 2020.04.03 |
[Network Forensic] 특정 위치에 무선 트래픽이 포함된... (0) | 2020.04.03 |
[Network Forensic] 우리의 제일 귀여운... (0) | 2020.04.03 |
[Network Forensic] Sans Network Forensic [Puzzle 8] #7, #8, #9 (0) | 2020.03.13 |