#About
Author : ArturDents
Korean :
패스워드로 인증하는 실행파일이 손상되어 실행이 안되는 문제가 생겼다. 패스워드가 무엇인지 분석하시오
English :
The program that verifies the password got messed up and ceases to execute. Find out what the password is.
#Contents
[그림 1] - 손상된 실행 파일
[그림 2] - 디버거로도 열리지 않음
#Solution
손상된 실행 파일에서 패스워드를 유추할 수 있는 방법으로는 세 개가 있다
1. 패스워드가 Static으로 저장되어 있다면 실행파일 어디인가 저장되어 있을 것
2. 패스워드가 알고리즘으로 인증된다면 실행파일 내에 알고리즘 소스가 저장되어 있을 것
3. 패스워드가 네트워크를 통한 인증이라면 실행파일로부터 인증서버의 주소가 파일 내에 있을 것
그 중 첫 번째 방법으로 패스워드를 얻을 수 있었음
(출처 : http://blog.koo.world/9)
[그림 3] - HxD로 열어본 실행파일
실행파일을 헥스에디터로 열어본 결과, e_magic 필드의 제일 첫 부분에 MZ(4D 5A)라는 코드를 확인할 수 있으며 e_magic 필드는
PE 파일임을 확인할 때 사용, PE 파일 처음부터 2바이트까지 4D 5A(IMAGE_DOS_SIGNATURE)로 시작하는 부분이 e_magic이 차지하는 공간임
또한 해당 바이너리를 확인하다보면 .data 섹션을 확인할 수 있고 .data섹션은 그 속성이 읽고 쓸 수 있는
가장 일반적인 데이터 섹션이며 전역변수 또는 정적 변수를 선언하게 되면 이러한 변수들은 모두 .data 섹션에 위치하게 된다
.data 섹션이 프로세스 주소 공간에 매핑되게 되면 이 섹션 내의 번지 값 그대로 사용된다 .data 섹션은 앞서 언급한대로
특별한 구조가 없이 컴파일러가 판단해 적당한 크기를 잡고 그 섹션 내에 사용자가 정의한 전역/정적 변수들을 위치시킨다
+ 지역변수는 프로세스 스택에 그 영역이 할당되기 때문에 PE와는 관계가 없음
(출처 : http://sol9501.blog.me/70102511201)
.data 섹션을 따라가다보면 아래와 같은 Raw Data를 확인가능
[그림 4] - Raw Data
Raw Data의 아스키 값에서 패스워드 JK3FJZh를 얻음
PE구조에 맞게 수정해 문제를 해결하는 방법을 추후에 업로드할 예정
'Wargame' 카테고리의 다른 글
CodeEngn Basic 4 (0) | 2017.09.05 |
---|---|
CodeEngn Basic 3 (0) | 2017.09.05 |
CodeEngn Basic 1 (0) | 2017.09.04 |
[STEGANOGRAPHY] Codegate 2013 - Forensic 300 (0) | 2017.07.21 |
[DISK] Codegate 2013 > Forensic 200 (16) | 2017.07.20 |