#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

+ Recent posts