본문 바로가기

CodeEngn

(16)
[CodeEngn] Basic RCE L08 문제 파일을 다운로드하고, 7-Zip File Maneger로 압축을 푼다. 08.exe를 실행해본다. 계산기 프로그램이다. 사실 OEP를 찾는 문제라서 어떤 프로그램인지 확인할 필요는 없다. OEP는 Original Entry Point의 약자로, 프로그램의 시작 주소를 말한다. 패킹되어있는 프로그램인 경우 OEP를 찾기 위해서는 언패킹 과정을 거쳐야 한다. 따라서 패킹 여부를 확인하기 위해 PE(Portable Executable) 파일 정적 분석 툴인 PEiD를 이용해 08.exe를 열어보았다. UPX로 패킹되어있는 것을 확인할 수 있다. UPX로 패킹되어있는 파일을 언패킹하는 툴 중 하나인 upx303w을 이용해 언패킹한다. 위의 폴더를 다운로드한 후 압축을 푼다. 압축을 푼 폴더 안에 언패킹할 ..
[CodeEngn] Basic RCE L07 문제 파일을 다운로드하고, 7-Zip File Maneger로 압축을 푼다. 07.exe 를 실행해본다. 입력창이 있는 메시지박스가 나온다. 임의의 값을 입력하고 Check 버튼을 클릭한다. 시리얼이 맞지 않는다고 뜬다. 이제 디버거로 실행파일을 열어 리버싱을 해본다. 디버거로 파일을 열었다. 메시지박스를 생성하는 두 영역을 찾을 수 있다. 하나는 에러 메시지를 출력하고, 하나는 성공 메시지를 출력하는데 어떤 메시지 박스를 출력할지 정해지는 CMP 문은 004010FC에 있다. 이 부분에 breakpoint를 걸어두었다. CMP 문을 실행하기 전 전처리 과정이 되는 부분의 코드 영역이 있다. 계속 거슬러 올라가다가 RETN 명령어가 등장하는(전혀 다른 영역으로 구분되는) 부분까지 거슬러올라갔다. 해당 부..
[CodeEngn] Basic RCE L06 문제 파일을 다운로드하고, 7-Zip File Maneger로 압축을 푼다. 06.exe를 실행해본다. 값을 입력하는 창이 뜬다. 임의의 값을 입력하고 Check Serial 버튼을 클릭해본다. Wrong serial!!! 이라는 메시지 박스가 뜬다. 올바른 serial 값을 입력하면 성공 메시지 박스가 뜰 것으로 예상할 수 있다. 이제 본격적인 리버싱을 하기 위해서 06.exe를 디버거로 뜯어볼 것이다. 문제에서 언패킹을 하라는 것을 보면 해당 실행파일이 패킹되어있는 것 같다. 어떻게 패킹되어 있는지 확인하기 위해 PE(Portable Executable) 파일용 정적분석 툴인 PEiD를 이용해 파일을 열어보았다. UPX로 패킹된 것을 확인할 수 있다. UPX 언패킹 툴인 upx303w를 이용해 언패킹..
[CodeEngn] Basic RCE L05 01번 문제(https://studyforall.tistory.com/65)를 풀었을 때와 같이 문제 파일을 다운로드하고, 7-Zip File Maneger로 압축을 푼다. 05.exe를 실행해본다. 입력값을 받는 창이 뜬다. 기본 입력값을 변경하지 않고 Register now! 를 클릭해본다. Wrong Serial,try again! 이라는 오류메시지가 뜬다. 올바른 입력값을 찾아야 한다. ollydbg를 이용해 파일을 열어보았다. 어셈블리 코드를 열어봤는데 아무런 심볼도 찾을 수 없다. 뭔가 이상하다. PEiD를 이용해 05.exe의 파일 정보와 패킹 방식 정보를 확인해본다. UPX로 패킹 되어있는 것을 알 수 있다. UPX 패킹은 실행 파일 내부에 있는 코드를 압축하는 것인데, 주로 파일의 크기를..
[CodeEngn] Basic RCE L04 01번 문제(https://studyforall.tistory.com/65)를 풀었을 때와 같이 문제 파일을 다운로드하고, 7-Zip File Maneger로 압축을 푼다. 04.exe 파일을 실행해본다. 검은색 창이 열리고 알 수 없는 특수문자가 한 줄씩 출력되는데, 문제에서 이 프로그램이 디버거 프로그램을 탐지하는 기능이 있다고 한 것으로 보아 디버거 프로그램 탐지가 이루어지고 있는 것으로 추측할 수 있다. 올리디버거를 이용해 04.exe 파일을 열어보았다. 우선 F8을 눌러 명령어를 한 줄 씩 실행해보았다. 화면의 한쪽에는 디버거를 한 줄 씩 실행하고 한쪽에는 실행되고 있는 프로그램을 두어서 어느 명령어가 실행됐을 때 디버거 프로그램 탐지가 작동하기 시작하는 지 확인하려고 한다. 00408454 주..
[CodeEngn] Basic RCE L03 01번 문제(https://studyforall.tistory.com/65)를 풀었을 때와 같이 문제 파일을 다운로드하고, 7-Zip File Maneger로 압축을 푼다. 03.exe를 실행해본다. 독일어인가? 올바른 password를 찾으라는 것 같은데 일단 OK를 클릭한다. 입력창이 뜬다. 임의의 값을 입력하고 Registrieren을 클릭했다. 에러가 뜬다. ollydbg를 이용해 03.exe를 열어 코드를 살펴본다. 화면에서 우클릭하여 Search for > All referenced text strings를 클릭한다. 스크롤을 내리다보면 004028BD 주소 근방에서 성공메시지로 보이는 텍스트와 에러메시지로 보이는 텍스트 등이 있는 것을 확인할 수 있다. 004028BD와 00402A2A 에는..
[CodeEngn] Basic RCE L02 01번 문제(https://studyforall.tistory.com/65)를 풀었을 때와 같이 문제 파일을 다운로드하고, 7-Zip File Maneger로 압축을 푼다. 압축이 풀린 02.exe 파일을 실행해보면 문제에 써있는 것과 같이 실행이 되지 않는다. https://mh-nexus.de/en/downloads.php?product=HxD20에서 HxD프로그램을 다운로드하여 설치한다. HxD는 16진수로 표현된 이진파일를 읽을 수 있게 보여주는 프로그램이다. HxD로 02.exe를 실행한다. 실행해보면 위와 같이 뜬다. Decoded text 부분을 살펴보며 이해할 수 있는 텍스트가 있는지 본다. 스크롤을 내리다보면 CrackMe라는 문구가 보인다. Nope, try again!이라는 에러 메시..
[CodeEngn] Basic RCE L01 1. 문제 다운로드 우선 문제에 들어있는 첨부파일을 다운로드한다. 문제에 있는 디스크 아이콘을 클릭하면 01.7z 라는 이름의 파일을 다운로드할 수 있다. https://www.7-zip.org/ 에서 7zip을 다운로드하여 설치한다. 7zip은 압축을 풀 때 사용할 툴인데, 리버싱 문제파일을 일반적인 방식으로 압축해제할 경우, 악성코드로 인식되어 제대로 압축이 안 풀리는 경우가 있어서 이 툴을 사용한다. 2. 문제 파일 실행 설치한 7-Zip File Maneger 를 실행한다. 다운로드한 01.7z 파일이 위치한 경로로 이동한다. 해당 파일을 클릭하여 선택한 뒤 파란 - 아이콘을 클릭해 Extract 한다. password는 문제에 써있는 codeengn을 입력하면 된다. OK를 클릭하면 Extrac..