워게임/CodeEngn 28

[CodeEngn] Basic RCE L07

이번 문제는 조금 특이한 문제인것 같습니다. 일단 시리얼번호가 생성되는 과정에서 C드라이브의 이름이 쓰이는것같으므로 먼저, C 드라이브의 이름을 CodeEngn 으로 바꿔줬습니다. 우선 exeinfope를 통해서 까보면 별다른 패킹은 되어있지 않고, 어셈블리어로 직접 작성한 프로그램인것으로 파악됩니다. 우선 프로그램을 실행해보면 저번 문제와 비슷한 구조를 가지고 있습니다. 그리고 임의의 값을 넣어보면 다음과 같은 메세지가 출력되면서 프로그램이 종료되는것을 확인할수 있습니다. 이것들을 이용해서 분석을 해보도록 하겠습니다. 이번에도 저번 문제 처럼, 알고있는 문자열을 통해서 분석을 시작할곳을 찾아내야합니다. 문자열 검색을 해보면, 아까전에 뜬 실패메세지창에 뜬 문자열이 보입니다. 이 문자열이 위치한 함수를 ..

워게임/CodeEngn 2022.05.12

[CodeEngn] Basic RCE L06

문제 설명을 보면, 파일을 분석하기 전에 unpack을 해야할것으로 보입니다. 일단 exeinfope로 까보면 32비트 기반 실행파일이고, UPX로 packing 되어있다는것을 알수 있습니다. 그러므로 upx라는 패킹툴을 이용해서 unpacking을 진행해야 합니다. upx 언패킹은 툴을 이용해서 간단하게 할수 있습니다. 이제 다시 exeinfope를 통해서 까보면 이렇게 정상적으로 언패킹이 되어있는 모습을 확인할수 있습니다. 그리고 프로그램은 C++로 작성되었다는 것을 알수있습니다. 이제 IDA를 통해서 분석해보기 전에 프로그램을 실행시켜 보겠습니다. 프로그램을 실행시키면 다음과 같이 시리얼 번호를 입력할수있는 박스와 시리얼번호 체크를 시작하는 버튼이 있습니다. 여기에 임의의 값을 넣으면 다음과 같이 ..

워게임/CodeEngn 2022.05.12

[CodeEngn] Basic RCE L05

이번 문제는 다음과 같습니다. 먼저 exeinfope로 프로그램을 까보면 32비트 기반 실행파일에 패킹은 안되있고 델파이로 작성된 프로그램입니다. 먼저 프로그램을 실행해보면 다음과 같은 프로그램이 나옵니다. 텍스트박스가 2개있고 Register now ! 라는 버튼을 누르면 시리얼번호에 대한 검증을 거치는 구조로 파악됩니다. 이름은 별 상관없는 문제 같으므로 시리얼번호에대한 검증이 어떻게 이루어지는지 확인해보겠습니다. 우선 임의의 시리얼번호를 입력해보면 다음과 같은 메세지가 뜨는것을 확인할수 있습니다. 우선 IDA로 열어봐야합니다. 시리얼번호가 틀렸을때 나오는 Wrong Serial_try again! 이라는 문자열이 나오는데 그렇다는건 분기문에서 특정 조건에 부합하지 않으면 나오는 문자열이므로 이 문자..

워게임/CodeEngn 2022.05.08

[CodeEngn] Basic RCE L04

이번 문제도 저번 문제와 같이 특정 함수의 이름을 알아내야하는 문제입니다. 우선 exeinfope를 통해서 까보면 32비트 실행파일에 C++ 로 작성된 프로그램으로 보입니다. 우선 관련 함수를 찾아보면 다음과 같은 디버거 탐지 함수가 있는것이 확인됩니다. 그러므로 x32dbg를 통해서 관련 함수가 있는지 찾아보겠습니다. x32dbg 를 통해서 동적분석을 실행하다보면 프로그램이 시작될때 이 부분을 거칩니다. 간단하게 보면, IsDebuggerPresent라는 함수를 거친후 esp와 esi를 비교한후, 서로 같을 경우, "디버깅 당함"이라는 문자열이 출력되고, 아닐 경우 "정상"이란 문자열 출력됩니다. 공식문서에서 확인한 내용과 프로그램의 흐름을 분석해봤을때 IsDebuggerPresent 라는 함수가 디버..

워게임/CodeEngn 2022.05.04

[CodeEngn] Basic RCE L03

이번에 풀문제는 비주얼 베이직으로 작성된 프로그램으로 보입니다. 저는 비주얼 베이직을 잘 모르지만 일단 풀어보겠습니다. 우선 exeinfope로 까보면 다음과 같이 나옵니다. 32비트 기반 실행파일이고 비주얼베이직으로 작성되있습니다. 한번 IDA를 통해서 분석해보겠습니다. 우선 비주얼 베이직에서 쓰이는 스트링 비교함수는 뭐가 있는지 찾아보면 StrComp 함수 (microsoft.com) 다음과 같은 함수가 공식문서에 나와있습니다. 하지만 이 함수이름을 쓴다고해서 답이 풀리지 않습니다. 그러므로 프로그램을 분석해서 직접 유사한 함수를 찾아봐야합니다. IDA를 통해서 프로그램을 열어보겠습니다. 함수를 찾는것이 목표이기 때문에 Functions window 창을 확인해보면 함수가 쭉 나열되서 나옵니다. 아까..

워게임/CodeEngn 2022.05.04

[CodeEngn] Advance RCE L07

문제는 다음과 같습니다. 일단 문제파일을 exeinfope로 한번 까보면 이렇게 나오는데, 우선 32비트기반 실행파일이고 .NET 기반의 C# 프로그램인것을 확인해볼수 있습니다. 하.... 저는 C#에 대해서 잘 모르기 때문에 다음 문제로 넘어갈까 하다가 한번 도전해보고자 시작하게 되었습니다. 정확한 분석을 위해서 virtualbox를 이용해서 만든 windows 7 32bit 환경에서 계속해서 분석하겠습니다. 우선 프로그램을 실행시켜보면 다음과 같이 텍스트박스 2개와 버튼 2개로 이루어진 프로그램이고 1번째 텍스트박스에 HMX0101이라는 문자열이 있는것을 확인할수 있습니다. 문제에서는 name이 CodeEngn이고 serial이 28BF522F-A5BE61D1-XXXXXXXX 와 같은 형식일때 뒤에 ..

워게임/CodeEngn 2022.05.03

[CodeEngn] Basic RCE L02 공부

이번 문제는 다음과 같습니다. 먼저 Exeinfope로 파일 정보를 살펴보면 다음과 같이 PE파일이 아니라고 뜨면서 아무런 정보도 나오지 않습니다. 이 실행파일을 실행시켜보면 다음과 같이 실행이 안되는것을 확인해볼수 있습니다. 실행이 안되므로 동적분석을 진행할수 없기 때문에 HxD를 이용해서 바이너리를 직접 분석해보겠습니다. HxD를 통해서 까보면 다음과 같이 바이너리를 16진수와 Decoded text로 읽을수 있게 해줍니다. 바이너리가 비교적 크지 않기 때문에 한번 천천히 읽다보면 다음과 같은 데이터를 확인해볼수 있는데, 위에있는 부분은 파일 내에서 정의된 함수들로 추정되고 및에 부분은 프로그램이 실행되면서 출력될 가능성이 있어보이는 문자열들로 추측할수 있습니다. 문자열을 살펴보면 "Nope, try..

워게임/CodeEngn 2022.04.14

[CodeEngn] Basic RCE L01 공부

문제는 다음과 같습니다 먼저 Exeinfope를 통해서 살펴보면 다음과 같이, 아무런 패킹이 안되어있고 32비트 프로그램인것을 확인해볼수 있습니다. 프로그램을 실행시켜보면 다음과 같은 창이 뜨고 다음과 같은 창이 뜨면서 프로그램이 끝나는것을 확인할수 있습니다. 프로그램이 어떤 방식으로 돌아가는지 분석하기 위해, x32dbg를 통해서 살펴보겠습니다. 한번 실행시켜보면 EP에서 멈춥니다. 여기서부터 한 단계씩 실행시켜보면서 프로그램의 실행흐름을 살펴보면, "abex' 1st crackme" "Make me think your HD is a CD-Rom" 라는 메세지들이 MessageBoxA함수를 통해서 출력된 후에 "c:\\"라는 드라이브 루트의 이름이 push된 후에 GetDriveTypeA라는 함수가 c..

워게임/CodeEngn 2022.04.14
728x90