OutDoorFrog의 리버싱 이야기

win_shadowpad_nssock2.dll 분석(미완성, 수정 중, 분석 중, 공부 중) 본문

공부/악성코드

win_shadowpad_nssock2.dll 분석(미완성, 수정 중, 분석 중, 공부 중)

OutDoorFrog 2018. 9. 12. 11:43




안녕하세요! 블로그의 주인장 OutDoor Frog입니다!





오늘은 기증 받은 악성코드를 분석해봅시다!





1. Detect It Easy & Hasy My Files



MFC를 사용했고, x86 DLL 파일이군요.


Windows 7 32bit 사무용 컴퓨터에 딱 맞는 악성코드인 것 같습니다!


MFC 같은 프레임워크는 입문 난이도가 높아서 진도를 덜 나갔었는데

복습까지 되겠군요!!! (개꿀~)





MD5 : 97363d50a279492fda14cbab53429e75

SHA1 : f1a181d29b38dfe60d8ea487e8ed0ef30f064763


해시값을 구하는 이유는

악성코드의 해시값을 분석사이트에서 검색해볼 수도 있고

파일의 변조 여부를 판단할 때 활용하기 때문입니다.





2. PE viewer


IAT를 보고 악성 코드의 기능을 유추해봅시다.




GetLastError : API 사용 시, 에러의 이유를 찾을려고 사용하는 함수입니다.


주로 악성코드 제작할 때 디버그할려고 자주 사용했었습니다.





LoadLibraryA : DLL 파일을 로드하기 위해 사용해본 경험이 있습니다.


GetProcAddress : DLL 파일에서 특정 함수의 주소를 얻을 때 사용해 봤습니다.


FreeLibrary : 로드한 DLL을 해제할 때 사용합니다.


DLL 파일 내에 특정 함수를 불러올 때 자주 사용하는 기능이지요.




CreateThread : 프로그램의 실행 흐름을 나눌 때 (스레드 만들 때) 사용하는 함수입니다.


TerminateThread : 스레드를 종료시킬 때 사용하는 함수입니다.


WaitForSingleObject : 스레드가 특정 신호가 발생할 때까지 정지해 있다가 신호를 받으면
                      다시 작업을 수행합니다.


스레드를 만들고 스레드가 맡은 임무를 다할 때까지 기다리는 기능,


스레드를 종료시키는 기능 등이 있는 듯 싶습니다.




GetModuleHandleA, GetModuleFileHandleNameA, FindResourceExW, LoadResource

SizeOfResource, LockResouce, LoadResource


리소스에 대해서 다룰 때 사용되는 API들입니다.


CreateFile, WriteFile이 없어서 리소스를 드롭한다고 말은 못하겠군요.


리소스 해커로 리소스를 보아야하겠군요.




EncodePointer, DecodePointer


BOF 같은 공격을 우회하기 위해 포인터를 암 * 복호화 하는 함수인데...


 (음..?) 분석을 하면서 악성코드의 취약점을 찾아야할 이유는 없을텐데??




(점점 산으로 가는 분석)




IsDebuggerPresent : 안티 디버깅에 사용되는 함수 중 하나입니다.


역시 최소한의 안티 디버깅은 해놓는군요.


















Sleepy님의 _purecall에 관한 글입니다.


글 보러가기!!!! 


Msdn에서의 PostMessageA 함수에 관한 글입니다.


글 보러가기!!!!


인생은 아름다워 님의 GetClientRect 함수에 관한 글입니다.


글 보러가기!!!!


Msdn에서의 SHDeleteKeyA 함수에 관한 글입니다.


글 보러가기!!!!







함수 목록들만 보아도 난이도 : 상 이상을 짐작할 수 있습니다.


난이도 최상으로 느낀 적은 더미다 패커 때 입니다.


(저 같은 청정슈는 그런 것은 손을 댈 수가 읍어요!!)




3. Resource Hacker












음 딱히 주목할 내용은 없는 듯 싶습니다. (뭐지?)




4. IDA


일단 전체적인 형태만 보면서 모르는 단어를 추출합시다.




4.1 DllMain 발견



오 처음부터 DllMain 발견하다니, 느낌이 좋은 듯 싶습니다.


(음? sp-analysis failed?? 이건 뭐지?)




4.2 DllMain 안으로 진입, 분석


1번 사진





2번 사진






3번 사진






4번 사진






5번 사진






6번 사진







7번 사진






(사진 1번)



__SEH_prolog4, __SEH_epilog4 부터 모르겠습니다!(사진 1, 7번 참고)


OpenRCE에서의 SEH에 관한 글 읽으러 가기!!!


stru_10020FD0 이라.. (사진 1번 참고)


리버싱하면서 이 구조체의 용도, 구조에 대해 파악해야 할 듯 싶습니다!


ms_exc.registration.trylevel (사진 1번 참고)




(사진 2번)


여러 if 문이 있나봅니다.




(사진 3번)


3개의 인자값을 가지는(DllMain에서 2개, ebx 레지스터에서 1개)

함수를 하나 호출하는 모습이 있습니다!




(사진 4번)




함수 여러 개를 연속해서 부르는군요.





(사진 5,6,7번)


계속해서 DllMain 함수의 인자값을 가지고 함수를 호출하는 패턴이 보이며


ms_exc.old_esp 라는 단어도 보이는 군요.




오늘 올린 링크 내용만 구글링, 구걸링해도 하루가 다 가겠군요.


악성코드 분석하는 사람들을 모아서 진행하는 것이 속도에 좋을 듯 합니다.



(워너크라이 때 느낌이 왜 여기서 느껴지냐...)


호출하는 함수도 분석해서 모르는 내용 추출하고 있겠습니다.

'공부 > 악성코드' 카테고리의 다른 글

ShadowPad Shellcode 분석 일기 [수정중, 연구중]  (2) 2018.11.05
nssock2.dll 분석 일기  (2) 2018.09.05
Comments