Skip to content

Commit eaaecdb

Browse files
committed
New post: maya_secure_system 악성코드 분석 보고서
1 parent f55fb8c commit eaaecdb

11 files changed

Lines changed: 79 additions & 0 deletions
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
---
2+
layout: article
3+
title: "maya_secure_system 악성코드 분석 보고서"
4+
excerpt: "maya_secure_system 바이러스는 자기 자신을 Scene 파일을 통해 복제하는 Maya 바이러스로 userSetup.py를 변조, 악성코드를 설치한 뒤 C2 서버에 하드웨어 정보를 전송하고 RCE를 수행하는 악성코드이다."
5+
date: 2026-01-27 00:42 +0900
6+
author: SystemaHacker
7+
categories: [Malware-Analysis]
8+
tags: [Malware-Analysis, Maya, Malware, Security]
9+
permalink: /malware-analysis/maya_secure_system
10+
---
11+
12+
## 개요
13+
`maya_secure_system 바이러스`는 자기 자신을 Scene 파일을 통해 복제하는 Maya 바이러스로 `userSetup.py`를 변조, 악성코드를 설치한 뒤 C2 서버에 하드웨어 정보를 전송하고 [RCE](https://www.cloudflare.com/ko-kr/learning/security/what-is-remote-code-execution/)를 수행하는 난독화된 악성코드이다.
14+
15+
난독화된 악성코드의 원본 샘플과 복화화된 코드를 보고 싶다면 [Github 저장소](https://github.com/SystemaHacker/Deobfuscated-maya_secure_system.py)에 업로드해놓았다.
16+
파일 목록은 다음과 같다.
17+
18+
| File | Description |
19+
|------|------------|
20+
| [maya_secure_system.py](https://github.com/SystemaHacker/Deobfuscated-maya_secure_system.py/blob/main/maya_secure_system.py) | Original obfuscated malware sample (**DANGEROUS — DO NOT RUN**) |
21+
| [maya_secure_system.deob.py](https://github.com/SystemaHacker/Deobfuscated-maya_secure_system.py/blob/main/maya_secure_system.deob.py) | Deobfuscated malware code for analysis |
22+
23+
---
24+
## 침투 방식
25+
출처가 불분명한 Maya scene 파일 열람을 통한 악성코드 감염
26+
27+
---
28+
## 침해 지표
29+
1. `%userprofile%/Documents/maya/[마야버전]/` 경로의 `userSetup.py` 변조 및 `[maya_secure_system.py]` 파일 생성.
30+
2. 이후 열람한 Maya scene 파일의 script node에 복제 스크립트인 `maya_secure_system_scriptNode`를 삽입
31+
32+
---
33+
## maya_secure_system.py 분석
34+
### 난독화
35+
1. 심볼 난독화
36+
난독화된 import, 함수, 변수 심볼을 VSCode의 `Rename Symbol` (F2) 기능을 이용하여 복원하였다.
37+
![난독화된 import](/assets/malware-analysis/maya_secure_system/obfuscatedImports.png)
38+
39+
2. 실행 순서 난독화
40+
`if g_iStatus == 1:` 실행 이후 `g_iStatus`를 `2`로 설정하여 다음 loop에서는 `if g_iStatus == 2:`에 해당하는 코드가 실행되고 그다음에는 `if g_iStatus == 3:`... 1842번 반복한다.
41+
`while` 루프 내 모든 `if` 블럭을 실행 순서에 맞게 정렬한 후 `if` 구문을 제거하는 방법으로 복원하였다.
42+
![난독화된 실행순서](/assets/malware-analysis/maya_secure_system/obfuscatedCodeflow.png)
43+
44+
3. 더미코드
45+
실제로 사용되지 않은 변수들을 제거하였다.
46+
![더미코드](/assets/malware-analysis/maya_secure_system/dummyCodes.png)
47+
48+
4. 암호화된 String과 주석
49+
악성코드를 Maya로 실행한 후 암호화에 사용되는 2개의 `key` 값을 메모리에서 읽는 방법으로 동적 분석하였다.
50+
![암호화된 String과 주석](/assets/malware-analysis/maya_secure_system/obfuscatedStrings.png)
51+
52+
### 기능
53+
1. `userSetup.py` 변조 및 `maya_secure_system.py` 설치
54+
`maya_secure_system.py`를 설치하고 `userSetup.py`에서 이를 불러오는 코드를 삽입하여 매번 마야 실행과 함께 악성코드가 작동하도록 변조
55+
![userSetup 변조](/assets/malware-analysis/maya_secure_system/infectUserSetup.png)
56+
57+
2. Heartbeat
58+
5분에 한 번씩 C2 서버에 생존신고
59+
![Heartbeat sending every 5 minutes](/assets/malware-analysis/maya_secure_system/heartbeat.png)
60+
61+
3. [RCE](https://www.cloudflare.com/ko-kr/learning/security/what-is-remote-code-execution/)
62+
Heartbeat 응답으로부터 Custom script를 받아 실행하는 모습
63+
![난독화된 실행순서](/assets/malware-analysis/maya_secure_system/heartbeatRce.png)
64+
![난독화된 실행순서](/assets/malware-analysis/maya_secure_system/rce.png)
65+
66+
Custom script 실행 결과를 서버에 보고하는 모습
67+
![난독화된 실행순서](/assets/malware-analysis/maya_secure_system/rceReport.png)
68+
69+
4. Scene 파일 감염
70+
현재 열려있는 scene 파일의 script node에 복제 스크립트인 `maya_secure_system_scriptNode`를 삽입
71+
이후 다른 PC에서 해당 scene 파일을 열람하면 똑같은 방법으로 감염된다.
72+
73+
![Scene 파일 감염](/assets/malware-analysis/maya_secure_system/infectScene.png)
74+
75+
---
76+
## 대응 및 복구 방안
77+
1. `%userprofile%/Documents/maya/[마야버전]/` 경로 내 `userSetup.py`, `maya_secure_system.py` 파일 제거
78+
79+
2. 감염된 scene 파일 내 script node를 점검하고 `maya_secure_system_scriptNode`를 제거
115 KB
Loading
30.8 KB
Loading
32.6 KB
Loading
57.7 KB
Loading
56.1 KB
Loading
130 KB
Loading
57.5 KB
Loading
91 KB
Loading
121 KB
Loading

0 commit comments

Comments
 (0)