반응형

Security&Hacking/리버싱 46

Lena Reversing - tutorial 20_7

Lena Reversing tutorial 20_7 7번째 프로그램은 UnPackMe_Exe32Pack1.42 이다. Ollydbg로 열어준다. 이번에도 ESP를 이용한 언패킹을 수행한다. 진행하다보면 다음 PUSH EBP가 수행되고 나면 ESP가 0012FFC0으로 바뀌게 된다. 여기에 hw bp를 걸고 실행해준다. 다음과 같은 주소에 break가 걸린다. 같은 ESP를 비교했기 때문에 다음 분기문에서 분기가 일어난다. 이동하게 되면 바로 다시 한 번 분기가 일어난다. 이 주소가 OEP로 추정된다. 이제 Ollydump를 통해 dump 해준다. 이번엔 Rebuild Import를 체크 해제 해주고 dump 해준다. 끝.

Lena Reversing - tutorial 20_6

Lena Reversing tutorial 20_6 6번째 프로그램은 UnPackMe_NoNamePacker.d.out 이다. Ollydbg로 열어준다. 실행을 해보면 다음과 같은 이상한 창이 나온다. 아무 문구도 없다.. 이상해서 디버거를 종료시키고 실행해보았다. 아까와는 다른 창이 나온다. 실행중인 디버거를 탐지하는 코드가 내부에 들어있는 것으로 보인다. 따라서 이번 프로그램은 안티 디버깅 기법을 우회하고 언패킹도 해주어야 한다. 쭉 진행하다보면 다음과 같이 IsDebuggerPresent 함수가 Call 된다. 이 함수를 통해 디버거가 실행중인지 판단하여 분기하는 것으로 보인다. 여기서 OR EAX, EAX 수행 전 EAX는 1이다. 디버거가 실행중임을 나타낸다. 이 값을 0으로 바꾸어 진행해준다...

Lena Reversing - tutorial 20_5

Lena Reversing tutorial 20_5 5번째 프로그램은 UnPackMe_NsPack3.5 이다. 프로그램을 Ollydbg로 열어준다. 이번엔 시작부분이 PUSHFD, PUSHAD로 시작한다. 따라서 언패킹 루틴이 끝날때는 POPAD 명령어가 나올것이다. control + f를 눌러 검색을 해준다. POPAD 또는 POPFD 를 검색해준다. 여러개가 검색되기 때문에 control + l 을 눌러주면서 하나하나 확인해준다. POPAD, POPFD 가 나온후 해당 프로그램의 .text 범위 내의 주소로 분기해야한다. 다음과 같이 찾을 수 있다. 004271B0로 분기하고 있고 이 주소가 OEP로 생각할 수 있다. 이번에도 Rebuild Import는 체크하고 dump 해준다. 끝.

Lena Reversing - tutorial 20_4

Lena Reversing tutorial 20_4 20단계 4번째 이다. 이번에는 UnPackMe_MEW1.1 프로그램을 볼 것이다. Ollydbg에서 열어준다. 바로 400154로 분기한다. ESP가 변하는 부분까지 진행한다. ESP가 변하면 hw bp를 걸어준다. F9를 눌러 진행한다. 이제는 익숙한 주소에 멈춘다. Ollydump를 통해 dump를 떠준다. EP를 확인하고 이번엔도 Rebuild Import 부분을 체크하고 dump한다. 실행해보면 오류창이 발생한다. 이번에도 이전 프로그램과 동일한 오류창이다. 넘어가도록 한다. 끝.

Lena Reversing - tutorial 20_3

Lena Reversing tutorial 20_3 20단계 세번째 프로그램이다. 이번 프로그램은 UnPackMe_eXPressor1.3.0.1pk 이다. 이번 프로그램은 이전 프로그램과 같은 방법으로 ESP를 이용하여 언팩을 진행한다. Ollydbg에서 열어준다. 패킹이 되지 않은 것으로 보이지만 패킹이 된 프로그램이다. PUSH EBP를 하면 ESP 값이 12FFC0이 된다. 이전 프로그램과 같은 방법으로 hw bp를 걸어준다. 이제 F9를 눌러 실행해주면 오류창이 하나 뜬다. 아직 breakpoint에 걸리지 않았기 때문에 무시하고 진행한다. break 가 걸린다. 004271B0로 점프하고 있다. 영역도 이 프로그램의 .text 영역이며 명령어들도 익숙한 명령어들이 보인다. OEP라고 추정할 수 ..

Lena Reversing - tutorial 20_2

Lena Reversing tutorial 20_2 20단계 두번째 프로그램이다. 이번에는 UnPackMe_EZIP1.0 프로그램을 언팩 해보도록 한다. 이번 프로그램에서는 ESP를 이용해서 언팩을 하는 방법을 사용하도록 한다. Ollydbg로 열어준다. 바로 JMP가 나온다. F8을 눌러 진행해준다. 함수 프롤로그가 나온다. PUSH EBP를 해주고 나면 ESP는 12FFC0가 된다. ESP는 Stack pointer 레지스터이다. 함수가 끝날 때 까지 해당 주소의 stack은 변하지 않고 끝나기 직전에 POP을 하게 된다. 이 값에 hardware breakpoint를 걸어준다. 이제 F9를 눌러 진행해준다. EAX의 값으로 분기하고 있다. 004271B0로 memory map에서 확인하면 이 프로그..

Lena Reversing - tutorial 20_1

Lena Reversing tutorial 20_1 이번 단계가 끝나면 절반이 끝나게 된다 힘을 내자! 이번 단계에서는 패커와 프로텍터에 대해서 배우게 된다. 패커와 프로텍터에 대해서는 시간이 되면 따로 글을 올려야겠다. 파일의 수는 어마어마하게 많이 준비되어있다. 총 8개이며 하나씩 나누어 진행하도록 하겠다. 가장 먼저 볼 프로그램은 UnPackMe_CrypKeySDK5.7 이다. Ollydbg로 열어준다. 패킹이 되었기 때문에 오류 창이 뜨지만 무시하고 진행해준다. 시작하는 곳을 보면 일반적인 Entry point가 아니다. F8을 눌러 진행해주면 RETN 전에 분기가 일어난다. 분기한 위치는 다음과 같다. 코드를 보았을 때는 아무것도 없다고 생각할 수 있다. 주소 값을 확인하고 memory map을..

Lena Reversing - tutorial 19_2

Lena Reversing tutorial 19_2 이번에는 Debugger Detected 프로그램을 분석하도록 한다. 프로그램 이름에도 나와있듯이 Debugger가 실행중인지를 판단하는 내용이 들어 있는 것으로 보인다. 프로그램을 실행해준다. 초기 창이다. Verify 버튼을 누른다. Debugger가 탐지되지 않았다고 나온다. 이번엔 Ollydbg로 실행해준다. debugger가 탐지 되었다고 나온다. 분석을 진행해보자. Search for -> All referenced text strings를 들어가준다. 탐지되었다는 문자열이 세개가 보인다. 모두 breakpoint를 걸어주고 실행해준다. 살펴보면 어떤 루틴 안으로 들어와있다. 가장 위에는 CreateToolhelp32Snapshot 함수가 보..

Lena Reversing - tutorial 19_1

Lena Reversing tutorial 19_1 이번 단계에서는 디버거를 탐지하고 안티 디버깅 기법이 들어있는 프로그램을 분석한다. 세개의 프로그램이 존재하지만 antisniff 프로그램은 디버거에서 오류가 나야 하는것이 안나서 두개만 나누어 진행한다. 첫번째 프로그램은 ReverseMe.A 프로그램이다. 프로그램을 실행하면 다음과 같이 나온다. 어디서 많이 본 것 같은 창이다. keyfile 을 확인하여 창을 띄우는 방식으로 1, 2 단계를 참고하면 좋다. Ollydbg로 열어서 실행을 해준다. ?? 그냥 실행한 것과 다른 결과가 나온다. Ollydbg에서 한줄씩 분석하도록 한다. CreateFileA 함수를 통해 파일이 있는지 확인하고 파일이 있다면 분기하고 있다. 아래쪽에는 기간이 지났으며 라이..

Lena Reversing - tutorial 18

Lena Reversing tutorial 18 이번 단계에서는 분석을 방해하는 속임수 코드들을 파악하고 자기 변조 코드에 대해 이해 하는 것이 목적이다. 프로그램을 실행하면 다음과 같이 나온다. 가장 먼저 나오는 창이다. 2byte 패치를 통해 nag 창을 없애라고 나온다. 프로그램은 이전과 비슷한 문구를 포함하고 있고 종료시키면 그대로 종료가 된다. Ollydbg로 열어준다. 조금만 내리면 nag 창에 있는 문구를 포함한 messagebox 함수가 보인다. messagebox에 breakpoint를 걸고 실행을 해본다. 예상과 다르게 breakpoint에 걸리지 않고 nag창이 실행이 된다. 이 코드들은 실제로 동작하지 않고 분석을 방해할 목적으로 들어있는 코드로 보인다. 다시 실행하여 F8을 눌러가..

반응형