Security&Hacking/리버싱

Lena Reversing - tutorial 25_1

Dior2ky 2020. 4. 9. 16:27
반응형

Lena Reversing tutorial 25_1

이번 단계는 24단계와 비슷하다 두번에 나누어 진행하는데 한번은 언패킹을 진행하고 한번은 로더를 이용해준다. 

먼저 언패킹 먼저 진행하도록 한다. 

 

이번 프로그램은 Spyware Doctor 프로그램이다. 

이번 프로그램도 역시 Armadillo 프로텍터가 적용되어 있다. 

Ollydbg로 열어준다. 

역시 OutputDebugStringA 함수를 통해 안티 디버깅 기법을 적용하고 있다.

24단계와 마찬가지로 진행해준다. 

Command bar에 bp OutputDebugStringA 를 해주어 bp를 걸어준다.

PUSH 234로 되어있는 부분을 RETN 4로 바꾸어 주면 제대로 실행이 된다.

 

이제 OEP를 찾아주어야 한다.

Exception을 이용한 방법을 이전 단계에서 진행했었는데 이번에도 사용 가능하다.

그러나 이번에는 횟수가 100번 가까이 눌러주어야 하기 때문에 다른 방법을 사용하도록 한다.

 

Command bar에 bp CreateThread를 입력해준다. 

다음과 같이 break point가 걸린다. 

해당 주소로 이동해준다. 

몇줄의 코드 후에 RETN 18이 나온다. RETN 18에 bp를 걸고 실행시킨다. 

break가 걸리면 어디서 호출했는지 확인해준다. 

계속 분석을 해준다. CreateThread를 호출한 곳을 찾아주는 것이 목적이다.

RETN을 빠져나간뒤 한줄씩 확인해준다. 

CALL EDI를 하고 있다. EDI의 값을 확인해보면 503F68이다. 

memory map에서 확인해보면 프로그램의 코드 영역이다. 

내부로 들어가면 함수 프롤로그도 보인다. 

OEP라고 볼 수 있다. 

 

memory map을 확인해준다. 

PE header가 없는 것을 볼 수 있다. 

이유는 Armadillo 프로텍터가 PE header offset을 삭제했기 때문이다.

 

ImportREC를 통해 IAT를 찾을 수 있는지 확인해준다. 

IAT Autosearch 후 Get Imports 까지 해준다. 

Import function을 보면 Valid가 NO로 나온다. 

 

살펴보면 다음과 같이 name 이 나오지 않는 함수들이 보인다. 

이 함수들을 살펴보도록 한다.

가장 위에있는 함수를 살펴보았다. 오른쪽 마우스를 눌러 Disassamble/HexView를 눌러주었다.

정말 의미없는 명령어들이 있고 리턴된다. 

API Redirect를 통해서 특정한 몇몇 API들의 주소를 다른 곳으로 바꾸어 버린 것으로 보인다. 

언패킹 루틴 동안에 이 API의 주소를 바꾸어 버리는 루틴을 찾도록 한다.

 

프로그램을 다시 실행해주고 bp OutputDebugStringA는 계속해서 무효화 시켜주도록한다. 

이번에는 bp GetModuleHandleA를 걸어주고 실행한다. 

다음과 같이 break가 걸린다.

RETN을 만나 나오면 해당 함수가 여러번 사용되는 것을 알 수 있다. 

계속 진행하면서 API 주소를 바꾸는 루틴을 찾아준다.

 

GetModuleHandleA 함수에 bp를 걸고 진행하다보면 LoadLibraryA 함수가 같이 나오게 되는 부분이 존재하고 

JE를 통해 분기하게 되는데 이 부분이 Magic Jump로 API 주소를 바꾸는 루틴이라고 한다.

 

그렇지만 아무리 찾아봐도 잘못 한 것인지 찾을 수가 없다. 

차후에 다시 업데이트를 하도록 하겠다.

 

반응형

'Security&Hacking > 리버싱' 카테고리의 다른 글

Lena Reversing - tutorial 24_2  (0) 2020.03.26
Lena Reversing - tutorial 24_1  (0) 2020.03.19
Lena Reversing - tutorial 23  (0) 2020.03.16
Lena Reversing - tutorial 22  (0) 2020.03.16
Lena Reversing - tutorial 21_4  (0) 2020.03.15