전공영역 공부 기록

헤븐즈게이트를 사용하는 악성코드

악분 2020. 3. 2. 11:52
반응형

시작하며

2월 마지막 주에는 헤븐즈게이트 주제를 선택했습니다. 헤븐즈게이트는 Trickbot악성코드를 분석하다가 우연히 발견했습니다.

 

call far이라는 처음 본 명령어를 발견하여 구글에 검색했습니다. 32비트 프로그램이 64비트 명령어를 호출하는 명령어라고 합니다. 악성코드는 헤븐즈게이트를 기술을 악용해서 백신우회 및 분석 방해를 합니다. 개인적인 생각으로는 2020년 이후부터 많이 보일 것으로 생각됩니다.

 

헤븐즈게이트 원리와 분석영상은 아래 유부트 링크에서 보실 수 있습니다.

https://youtu.be/LDFAX-9oTw0


wow64 윈도우 모듈

64비트 윈도우 시스템에서 32비트 프로그램을 실행하면 놀랍게도 64비트 모듈이 자동으로 메모리에 올라갑니다. 이 모듈은 32비트 실행을 중간에 받아 64비트 시스템 콜을 호출합니다.

그림1

*그림1 출처: https://www.studocu.com/row/document/v-a-graiciuno-aukstoji-vadybos-mokykla/education/lecture-notes/malware-collection/4472699/view

 

메모장 실습

64비트 윈도우에서 32비트 메모장(c:\Windows\Syswow64\notepad.exe)을 실행했을 때 WOW64비트 모듈이 올라가는지 관찰해봅시다.

 

[그림3]에서 보이는 것처럼 32비트 메모장이지만 자동으로 64비트 WOW64모듈이 같이 메모리에 로드된 것을 확인할 수 있습니다.

 

실습하고 싶으신 분들은 영상을 보면서 따라하시면 됩니다!

그림3: 32비트 메모장에서 로드한 WOW64비트 모듈

 

*실습영상: https://youtu.be/LDFAX-9oTw0?t=266

 

헤븐즈게이트 원리

헤븐즈게이트는 32비트 모듈이 64비트 모듈로 넘어가는 과정을 강제로 생략합니다. 그러므로, 32비트 모듈만 검사하는 백신을 우회하기 때문에 새로운 안티디버깅 기술에 속합니다. 

 

64비트 API함수를 강제로 호출하는 명령어는 0x33(far)이라고 합니다. call far, jump far, ret far 등이 있습니다. [그림2]는 Trickbot 악성코드에서 사용된 헤븐즈게이트입니다. 분석 샘플에서는 call far을 사용했습니다.

그림2

*그림2 출처: https://www.studocu.com/row/document/v-a-graiciuno-aukstoji-vadybos-mokykla/education/lecture-notes/malware-collection/4472699/view

 

헤븐게이트 위험성

백신우회

헤븐즈게이트 이전 백신은 32비트 API함수만 관찰했기 때문에 헤븐즈게이트가 적용된 악성코드는 탐지를 못했다고 합니다. 2020년인 지금도 여전히 어렵다고 합니다(기술적으로 어려운 듯?). 

 

분석방해

또한, 마이크로소프트에서 만든 windbg가 아닌 올리디버거 등 일반 디버거를 사용하면 디버깅을 실패합니다. 실제로 동작하는 64비트 API함수 호출은 무시됩니다. 요약하면, API추적(트레이싱)기반 수동분석을 방해합니다.

헤븐즈게이트 적용 사례

2019년부터 악성코드가 본격적으로 헤븐즈게이트를 사용하고 있습니다. 대표적으로 trickbot이 있습니다. 적용 사례는 유투브 영상에 업로드했으니 보고 싶은 분들은 영상을 참고해주세요!

 

*헤븐즈게이트 적용사례 분석 영상링크

https://youtu.be/LDFAX-9oTw0?t=624

 


끝으로

백신 개발자입장에서도 까다롭지만 수동으로 분석하는 입장에서도 어렵습니다. API함수에 브레이크포인트를 설정해서 분석했더라면 분석이 막힙니다. ㅜㅜ

 

점점 악성코드도 기존 분석방법을 많이 우회하는 기술이 적용되고 있네요. 😂
Trickbot 수동 언패킹은 30시간 넘게 했지만 포기... 재능이 없나보다.

반응형