본문 바로가기

정보보안/Spear-Phishing

[Spear-Phishing] Malicious HWPX Document Analysis

728x90

1. HWPX

  • OWPML 기반 (Open Word - Processor Markup Language)
  • HWPML (Hangul Word-Processor Markup Language) 사용
  • HWP가 바이너리 파일 포맷이면, HWPX는 XML기반 개방형 파일 포맷이다.
  • ZIP파일과 동일하다. (시그니처)
  • 기존 HWP는 Postscript가 삽입되어 GhostScript를 익스플로잇했다면
  • HWPX는 HWP 프로세스에 의해 XML을 통해 악성코드를 실행하므로, XML에 Payload가 저장되어있다.
  • eps파일이 없으므로 xml파일을 식별해야한다.

2. XML Analysis and ShellCode Analysis

 

준비된 XML의 주요 부분은 다음과 같다.

 

section0

 

color 정보는 gradation 버퍼에 저장되는데, 버퍼의 크기보다 값을 더 많이 집어넣어

 

buffer overflow를 발생시킨다. 특히 coloNum의 553이 버퍼 크기 이상의 값일 것이다.

 

이제 x32dbg로 color값에 들어간 셸코드를 분석해보자.

 

셸코드는 리틀엔디언 방식으로 들어가 있으므로 따로 변환해주는 작업이 필요하다.

 

변환된 코드를 HxD로 열어 값을 모두 복사한 후 

 

앞선 포스팅에서 했던 것 처럼 x32dbg에 세팅해준다.

 

https://walk-cat-dev.tistory.com/135

 

[Spear-Phishing] Malicious HWP Document Exploit Analysis

1. Attack Flow 한글 파일을 실행 포스트 스크립트 실행 파워 셸 스크립트 실행 공격자 C2서버로부터 악성 페이로드를 전달받음 감염 2. Basic Extract 윈도우에는 prefetch라는 아티팩트가 존재한다. 이를

walk-cat-dev.tistory.com

 

 

setting

 

위 환경은 악성코드가 실행될 때와 다른 레이아웃이기에 실행이 되지는 않을 것이다.

 

 

memory

 

고정된 메모리 주소에서 값을 가져오는 것을 확인할 수 있다.

 

API리졸빙 없이 가져오므로 메모리 랜덤화 기법이 사용되지 않았다는 것을 알 수 있다.

 

그래서 이런 취약점과 메모리 레이아웃이 동일해야 하는 경우, 윈도우 디버거 등으로 크래쉬 발생 부분을

 

설정해서 분석해한다. 지금 진행하는 사용자 행위에 대한 분석에서는

 

실제 셸코드 디코딩 부분도 없으며 페이로드 관련 문자열도 보이지 않는다.

 

따라서 다시 돌아와 section0 xml 문서에서 셸코드 실행과 관련된 부분을 찾아야 한다.

 

 

suspicious

 

수상한 부분은 금방 찾을 수 있었다. 글자가 깨진 부분을 utf-16으로 다시 변환해본다.

 

이후 추출된 Shellcode를 다시 x32dbg로 가져와 살펴보자.

 

setting

 

마찬가지로 앞선 디버깅 환경을 설정해주고 살펴보면 push로 스택에 값들을 넣고 있는 것을 볼 수 있고

 

실제로 esp 레지스터에는 shellcode가 적재되고 있는 것을 볼 수 있다.

 

그리고 코드를 살펴보면 앞선 포스팅과 마찬가지로 C2서버에서 코드를 다운로드하고 IEX로 실행하는 것을 볼 수 있다.

 

이후 API리졸빙을하고 winExec을 통해 파워셸코드를 실행한다.

 


위 분석파일과 별개로 pushad popad를 사용해 범용 레지스터의 값들을 스택에 저장, 불러오는 유형도 있다. 

 

pushad

 

또한 Explorer.exe의 핸들을 가져와 메모리에 할당하기도 한다.

728x90