1. Triage
oleid를 사용해 이상징후 확인
외부링크를 통해 페이로드가 들어올 수 있다.
HxD로 파일을 분석해보자. ZIp과 동일한 구조이므로 unzip할 수 있다.
2. cvc Analysis
압축을 푼 파일의 word파일 내부에 document.xml.rels파일을 살펴보자.
이부분이 앞서 본 external 부분이다.
하지만 이때 외부링크로부터 리소스를 가져오는 것을 볼 수 있다.
MHTML은 MIME HTML로 이미지, 플래쉬 애니메이션 등을 담고 있다.
또한 로드될 때는 MSHTML로 로드되어 내부의 JavaScript가 실행된다.
이후 ActiveX가 실행되며 악성파일이 실행되고, calc.cab파일을 다운로드 받는 것으로 보인다.
calc.cab를 실제로 다운로드 받으면 위와 같고 , MZ시그니처를 보아 PE파일임을 알 수 있다.
3. PE File Analysis
이제 이 파일이 dll인지 exe인지 확인해본다.
PEView를 사용해 살펴보면 DLL임을 알 수 있다.
이제 코드를 살펴보면
championship이 저장될 경로와 .cpl이 보이는데 이는 URL Scheme이다.
정리하면 악성파일인 cab파일을 다운받고 그 안에 존재하는 championship.inf를 임시 디렉토리에 저장한 후
Path Traversal 기법을 이용해 경로를 제대로 설정하게 된다.
다음으로 resources 세션을 찾아봤다. .rsrc 확장자를 가지고 있는데, 유의미한 문자열이 보이지 않는다.
이제 IMPORT Address Table을 확인해보면
LoadLibrary, VirtualAlloc등의 API가 보이므로 조사해봐야한다.
strings 명령어를 통해 찾아보자.
내용을 찾아보면
IAT 테이블에 존재하지 않았던 모듈과 api세트가 존재한다.
api 세트는 특정 url에 접속해 해당 파일의 내용을 읽는 함수다.
그 아래에 접속할 때 사용되는 user agent와 url이 존재하는 것을 확인할 ㅅ ㅜ있고
실제로 해당 url에 접속하면 셸코드 바이너리 코드가 있는 것을 확인할 수 있다.
정적분석 결과 championship.inf 파일은 virtualAlloc함수를 통해 메모리를 할당하는데
읽기, 쓰기, 실행 권한을 할당하고 할당된 메모리 주소에 동적으로 로드한 api를 사용해 특정 url에서
셸코드를 할당된 메모리에 주입하고 Create Thread로 주입된 셸코드를 실행시킨다.