File name: MfcTTT.exe

MD5: a2019144b76733cf5ef0e7f2dd13e4c5

Size: 563,505 byte

 

Emotet과 연관성이 있는 Trickbot을 분석한다.

 

 

1.  해당 파일 리소스영역에는 실제 사용하게 될 API, 경로 및 파일 이름 등을 가지고 있다.

 

  - "GetModuleFileNameW", "LayvXBcOppdgzCgnncA", "ShellExecuteW", "C:\ \ ProgramData\ \ аНао"キ"ヘ래별.exe"...

 

리소스 영역

 

2. Dummy Code를 지나 EAT에 존재하는 함수에서 악성행위가 시작된다. 리소스 영역에서 문자열들을 불러와 자가복제 및 프로세스를 실행시킨다.

 

  - EAT Function : "LayvXBcOppdgzCgnncA“

  - 자가복제 : C:\ ProgramData\ аНаоすは래별.exe

 

자가복제 및 프로세스 실행

 

3. 현재 프로세스가 자가복제 된 프로세스인지 확인 후 분기를 나눈다.

 

자가복제 확인

 

4. 코드의 로직은 코드패치를 통해 유동적으로 변경이되고 패치 후 특정 주소값을 호출해 행위를 이어간다.

 

   - 코드 패치 = ebp+8

   - 악성 행위 = ebp+14

 

코드 패치 주소
패치 후 호출 주소

 

5.  explorer.exe를 system32 내부 디렉토리에서 검색 후 경로와 합쳐준다. 실제 행위는 explorer.exe를 사용하지 않는다.

 

가짜 행위

 

 

6. UAC 우회와 관리자 권한으로 실행하기 위해 COM Interface를 활용하며 CLSID값과 IID값을 구하고 CoGetObject API를 호출 시켜 객체를 넘겨 받는다.

 

   - CLSID: {3E5FC7F9-9A51-4367-9063-A120244FBEC7}

   - IID: {6EDD6D74-C007-4E75-B76A-E5740995E24C}

 

CLSID
COM 호출

 

 

7. 현재 자신의 프로세스가 관리자 권한으로 생성이 되었는지를 검사하고 분기를 나눈다.

 

프로세스 권한 검사

 

 

8. 여러번의 분기를 통해 이전에 받아 두었던 COM Interface 객체 값으로 svchost.exe 프로세스를 Suspend 상태로 실행시킨다.

 

관리자 권한 실행 svchost.exe
Suspend

 

 

9. svchost.exe를 실행 이후 악성행위는 백신 우회 및 안티 디버깅에 사용되는 “Haven’s Gate”기법이 사용된다.

“call far [33]:offset” 명령어를 통해 native 64bit system call을 하여 native 64bit system에서 실행된다.

 

Haven's Gate
64bit OS 원리

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

 

10. svchost.exe 프로세스의 내부 메모리를 읽어오고 1000byte를 지우고 해당 주소값에 코드패치를 진행한다.

PE header 제거
PE header 수정 및 코드 패치

 

 

11. 타겟 프로세스인 svchost.exe의 코드 패치를 통해 기존에 존재하는 “wmainCRTStarup” 함수의 로직을 변경한다. 

패치 전 패치 후

 

 

12. 코드패치 이후 Suspend 되어 있던 svchost.exe 프로세스 상태를 Resume 시켜준다.

 

Resume Thread

 

13. 프로세스 중복 방지를 위해 뮤텍스를 생성한다.

 

- “Global\812B46B81AE10”

Create Mutex

 

 

14. 자가복제를 위한 디렉터리를 생성하고 원본파일을 복사 시킨다.

 

- ~%APPDATA%\NuiGet\аНаоすは래별.exe

디렉터리 생성
자가복제

 

15. “rdtsc” 명령어를 통해 현재 CPU의 클럭(코드의 실행시간)을 측정해 시간차 계산을 통해 안티 리버싱을 탐지하고 분기를 나눈다. 

 

  - 2st CPU 클럭 - 1st CPU 클럭

안티 리버싱

 

 

16. 작업스케줄러의 복제되었던 자기 자신을 등록시키고 시스템 시작 시 재실행이 되게 한다. 

 

  - 이름: Download http service

  - 실행 계정: SYSTEM

작업 스케줄러 생성
작업 스케줄러 XML

 

17. 작업 스케줄러로 등록해 두었던 작업을 XML 파일에서 SYSTEM 권한으로 등록이 되어 있는지 확인한다.

 

SYSTEM 권한 확인

 

18. ECC 암호화 key와 AES 암호화 key를 생성한다. 데이터 암호화에는 ECC key가 활용되고 데이터 복호화에는 AES key를 사용한다.

 

ECC Key 생성
AES Key 생성

 

 

19. 해당 주소에는 암호화가 되어있는 값들이 존재하고, 이전에 생성했던 AES Key값으로 복호화를 진행하고 그 값에는 gtag와 C2의 IP가 존재한다. 

복호화 전 복호화 후

<mcconf>
<ver>1000480</ver>
<gtag>ono23</gtag>
<servs><srv>144.91.79.9:443</srv>
<srv>172.245.97.148:443</srv>
<srv>85.204.116.139:443</srv>
<srv>185.62.188.117:443</srv>
... 생략

 

 

 

20. 나열된 C2서버들을 순차적으로 GET 요청을 통해 연결을 시도하고 이전에 수집했던 사용자의 컴퓨터이름,OS버전을 파라미터로 합친다. 

 

   - \gtag\컴퓨터이름_OS버전\5\spk\

 

연결 개체 생성
연결 요청
URI 파라미터
응답 데이터

 

 

 

결론 

 

Emotet과 연관성이 있는 Trickbot을 분석하였지만 실제 C2 서버가 정상 사이트로 복구가 된 상태이거나, 서버가 오프라인 상태이므로 Trickbot의 Module을 받아오지 못했다. Trickbot의 특징은 다른 변종들도 마찬가지이며 “Haven’s Gate” 기법을 사용하는 걸 알게 되었다. 이 기법을 통해 User level 에서의 디버거로 제어를 하지 못하게 되므로 Windbg로 분석을 진행했다.

 

 

 

 

Haven's Gate 참고 자료

malwareanalysis.tistory.com/54

 

m.blog.naver.com/PostView.nhn?blogId=aepkoreanet&logNo=221581461165&proxyReferer=https:%2F%2Fwww.google.com%2F

 

blog.talosintelligence.com/2019/07/rats-and-stealers-rush-through-heavens.html

 

'Analysis' 카테고리의 다른 글

emotet 분석  (0) 2020.09.08
28833e121bb77c8262996af1f2aeef55 분석  (0) 2020.09.01
2142739359fd0c614ffe3e2fcbc8c89d 분석  (0) 2020.08.10

+ Recent posts