본문 바로가기

정보보안/Spear-Phishing

[Spear-Phishing] Malicious HWP Document Exploit Analysis

728x90

1.  Attack Flow

  • 한글 파일을 실행
  • 포스트 스크립트 실행
  • 파워 셸 스크립트 실행
  • 공격자 C2서버로부터 악성 페이로드를 전달받음
  • 감염

2. Basic Extract

 

윈도우에는 prefetch라는 아티팩트가 존재한다.

 

이를 통해 실행된 프로세스의 실행 시간과 같은 정보를 확인할 수 있다.

 

Malicious

 

위와 같은 악성 문서를 열었을 때 prefetch를 통해 어떤 악성행위를 하는지 확인해보자.

 

GBB(고스트 스크립트 관련 프로세스)가 실행된 후 파워 셸이 실행되는 것을 볼 수 있다.

 

powershell

 

따라서 익스플로잇 코드가 있다는 것을 짐작할 수 있다.

 

이제 oledump로 파일을 분석해보자.

 

oledump

 

eps파일이 encapsulated 된 PostScript파일이므로 이 파일을 먼저 추출해보자.

 

oledump의 -d -s 옵션을 사용해서 파일로 추출해준다.

 

한글 문서 파일은 zlib 알고리즘을 이용해 압축되어 있으므로 압축을 decompress해줘야 제대로 된 파일이 나올것이다.

 

decom

 

decompress 해준 파일을 notepad로 코드정렬해보자.

 

code

 

위 코드 중 Y77이 셸코드로 보여지며 이유는 다음과 같다.

 

90909090--- 부분은 nop sled 공격을 사용한 것인데,

 

nop sled 공격이란 코드 시작 지점이 뒤로 가더라도 nop(90)이 있기 때문에 셸코드가 바로 실행될 수 있도록 한다.

 

이제 cybershef를 통해 셸코드를 추출해보겠다.

 


2. ShellCode Analysis

 

hex

 

코드를 from hex로 추출하게 되면 위와같은 hex file이 나온다.

 

이제 이 코드를 x32dbg를 통해 디버깅해보자.

 

ㅌ32dbg

 

아무 파일을 열어서 메모리 할당을 해준 후 16진수로된 코드를 붙여넣어주고 시작 위치를 셸코드 위치로 바꾸자. (ctrl + g)

 

 

setting

 

그리고 셸코드의 시작부분에 EIP설정, push가 이루어지고 난 후에 breakpoint를 설정해서 실행시키면 ESP값이 바뀔 것이다.

 

powershell

 

이제 stack pointer 즉 ESP로 덤프 따라가기를 하고 ASCII값을 보면 (ctrl + e) 셸코드가 나온다.

 

위 셸코드에서 C2서버에서 문자열을 가져와 파이썬 코드를 실행하는 코드를 발견할 수 있다.

 

이제 API 리졸빙과 바인딩 과정을 따라가보자.

 

위 setting 코드의 맨 아래 fs 레지스터의 0x30번 자리에 위치한 것은 PEB( Process Environment Block)이다.

 

여기서 필요한 API를 가져오는 리졸빙을 수행하게 된다.

 

원하는 API를 찾으면 스택에 저장 혹은 레지스터에 반환하기 위해 스택을 call할 것이므로 call 부분에 Breakpoint를 걸고 실행해본다.

 

winexec

 

winExec함수를 통해서 파워셸을 실행하는 것을 볼 수 있다.

728x90