문제 풀이를하기 보다는
문제를 풀면서 몰랐던 '기술?'이나 '신박하다!'라고 생각했던
부분들을 추려서 정리해보려고 합니다.
바이너리를 받자마자 '매크로 악성코드'라고 생각 했다.
(분석경험에서 나온 감 이랄까?)
아무튼 매크로 코드를 추출하려고 구글링 하면서
오만 가지 별짓을 다해보았는데 추출이 안되는 것입니다 ㅡㅡ
결국 동적 분석을 선택했고 문서를 실행시켜보았습니다.
암호를 풀 수 있는 방법을 찾아보니 다음과 같다.
------ [*] Doc Project 암호 제거 ------
[핵심] DPB를 DPX로 바꿔줍니다.
드디어 코드를 볼 수 있었다.!!!!!!!!!!!!!!!
하지만,
여기서 바로 분석을 하는 것이아니라
[중요] '도구>VBAProject 속성의 탭메뉴 보호에서 새 암호를 입력후 프로젝트를 저장'
작업을 꼭 해주어야한다고 합니다ㅎㅎ
VBA 암호 해제 작업 끝
--------------------------------------------------------------
이렇게 하면
1번을 해결하고 바이너리를 찾아
문자열 검색으로 2번까지 해결 가능합니다.
3번에서 헤맸습니다.
PEID로 바이너리 확인 결과 UPX로 패킹? 되어있었는데
원래 파란색 부분에 UPX 패킹으로 나와야하는데 EP Section에 upx라고 나와있지...
결론만 말하자면
[중요] 언패킹을 수동을 해주어야 바이너리가 정상적으로 실행된다.
그렇지 않으면 중간에 뻗는다.
계속해서 분석을 진행해보면
프로세스 할로윙 맹키로 악성행위를 하는 주요한 코드라고 생각 했다.
그래서 WriteProcessMemory에 BP를 걸어주고 어떤 코드를 쓰는지 확인 해보았다.
그러면 dll 파일을 확인 할 수 있고 추출해준 후 dll을 다시 분석해준다.
쭈~욱 분석해보면
sub_100029c0에 들어가기 전
v1부터 값을 맞춰주고 들어가야한다.
[핵심]
3번은 출제자의 의도는 relectiveloader를 이용해 풀라고 한것 같다.
나는 다른 접근방법?신기하게?이상하게? 풀었던 부분입니다.
다른 사람들이 저보고 "궁예"라네요ㅋㅋㅋㅋ
sub_10002490을 실행 시키면 터진다.
그 이유를 분석했다.
호출 스택을 확인해보니 힙 할당해주는 부분을 찾을 수 있다.
즉, sub_100029c0안에 RtlAllocateHeap이 있다.
계속해서 호출 스택을 따라 갔다.
전역 변수를 사용에 힙을 할당해주고 있는데
이 전역변수를 어디에서 받아오는지 확인한다.
이부분이다!
결론,
프로그램이 터지는 이유가 전역변수 할당을 제대로 받지 못해서라고 했고,
eip컨트롤로 getProcesshEAP()으로 할당받은 뒤 다시
그림1.을 실행시켜주면 끝~
담에는 ReflectiveLoader를 이용해 풀어보겠다.
이상.
'Malware' 카테고리의 다른 글
스미싱(국민건강검진센터) 악성코드 분석 (0) | 2020.12.19 |
---|---|
HWP Malware containing COVID-19 contents By Lazarus (코로나19 악성코드) (0) | 2020.11.25 |
신용카드 정보를 훔치는 POS 악성코드(Alina v3.4) (1) | 2020.08.28 |
Codegate2020 simple_machine (0) | 2020.08.25 |
PEB를 이용한 DLL로드 (4) | 2020.08.23 |