1. 개요 (Overview)
1.1 분석 배경
Mamona 랜섬웨어(Mammon 변종)는 비대칭 암호화 기술인 X25519와 커스텀 스트림 암호인 HC-128을 결합한 고도의 하이브리드 공격 도구다. 표준 알고리즘의 초기화 루틴을 의도적으로 변형하여 일반적인 복구 도구의 접근을 차단하며, 주로 기업 내부망을 타겟팅하여 데이터 복구를 무력화하는 기만술을 구사한다.
1.2 핵심 요약
- 하이브리드 암호 체계 : X25519를 통한 세션 키 교환과 고성능 HC-128 스트림 암호를 결합하여 보안성과 속도를 동시에 확보했다.
- 커스텀 암호 엔진 : 표준 HC-128의 초기화 절차를 SHA-256 기반 확장 루틴으로 재설계하여 분석가의 알고리즘 식별 및 복구 시도를 방해한다.
- 치명적 설계 결함 : 암호화의 원천이 되는 피해자 개인키가 CryptGenRandom API 호출 시점에 평문(Plaintext) 상태로 노출되는 결함이 존재하여, 메모리/로그 포렌식을 통한 데이터 복구가 가능하다.
2. 식별 정보 (Identification)
- Malware Family: Mamona (Mammon Variant)
- Filetype: PE32 (Windows Executable)
- Hash (SHA256): c5f49c0f566a114b529138f8bd222865c9fa9fa95f96ec1ded50700764a1d4e7
- Extension: .HAes 또는 .crypt
- Target: Windows Environment
3. 분석 환경 및 도구 (Tools)
| 구분 | 도구명 (Tool) | 용도 (Purpose) |
| 정적 분석 | IDA Pro | 바이너리 디스어셈블리 및 커스텀 HC-128 로직 분석 |
| 행위 분석 | Hooking Log | API 호출 모니터링 및 CryptGenRandom 기반 키 후보군 추출 |
| 검증 도구 | Python | X25519/HC-128 복구 엔진 구현 및 자동 복호화 검증 (PoC) |
4. 암호화 기술 분석 (Technical Analysis)
4.1 키 생성 및 관리
Mamona는 하이브리드 암호화 방식을 사용하여 매 실행 시 고유한 키를 생성한다.
- X25519 기반 ECDH : 피해자 시스템에서 생성된 32바이트 임시 개인키와 공격자의 하드코딩된 공개키를 사용하여 Shared Secret(공유 비밀값)을 생성한다.
- SHA-512 기반 KDF : 생성된 공유 비밀값을 SHA-512 해시 알고리즘에 통과시켜 64바이트 마스터 키를 도출한다.
- 대칭키 할당 : 마스터 키의 상위 32바이트는 HC-128 Key로, 하위 32바이트는 IV(초기화 벡터)로 할당되어 엔진에 로드된다.
4.2 커스텀 HC-128 엔진 분석
분석 방해를 위해 표준 HC-128의 내부를 다음과 같이 개조하였다.
- 변형된 초기화 (sub_4085E0) : Key와 IV를 state[1057..1072] 영역에 배치하며, 비트 길이를 명시적으로 기록하는 독자적인 구조를 가진다.
- SHA-256 기반 테이블 확장 : 표준 Seed 초기화 대신 SHA-256의 메시지 확장 패턴(\sigma_0, \sigma_1 연산)을 적용하여 초기 P/Q 테이블(각 512워드)을 생성한다.
- 라운드 연산 및 스트림 생성 : 64회의 초기 라운드를 통해 테이블을 균질화한 후, 64바이트 단위의 키스트림을 생성하여 원본 데이터와 XOR한다.
4.3 파일 처리 및 부분 암호화 정책
I/O 효율성을 극대화하기 위해 파일 크기에 따라 암호화 범위를 차등 적용한다.
| 파일 크기 범위 | 암호화 정책 | 상세 방식 |
| 5MB 이하 | 전체 암호화 | 파일 전체 영역 파괴 |
| 5MB ~ 20MB | 부분 스트라이핑 | 6개 구간에 대해 각 4KB씩 암호화 |
| 20MB 초과 | 고속 암호화 | 10MB 간격으로 4KB씩 암호화 (최대 70MB) |
4.4 정적 분석
- 파일 암호화

- Curve25519 키 교환 함수 (공유 비밀 생성)

- SHA256 Hash 함수 (32바이트 마스터키 생성)

- HC-128 내부 상태 배열 설정 (256-bit Key)

state[1057..1064] ← Key (8 words)
state[1065..1072] ← IV (8 words)
state[1073] ← Key 비트 길이 (256)
state[1074] ← IV 비트 길이 (256)
- HC-128 내부 상태 배열 설정 (256-bit IV) 및 P/Q 테이블 초기화 (각 512워드)


- HC-128 스트림 암호화 함수


- HC-128 키스트림 생성




- 파일 크기에 따른 암호화 방식




| 파일 크기 | a3 = 1 (부분 암호화) | a3 = 0 (전체/퍼센트) |
| ≤ 64 bytes | 전체 | 전체 |
| 65B ~ 5MB | 앞부분 10% | 전체 |
| 5MB ~ 20MB | 6개 구간 × 4KB | a2% (최대 70MB) |
| > 20MB | 10MB 간격 × 4KB | a2% (최대 70MB) |
5. 복호화 기술 분석 (Decryption Strategy)
5.1 복구 키 확보 방안
암호화의 핵심인 피해자 임시 개인키(32바이트)는 CryptGenRandom API 호출을 통해 생성된다. 이 시점에 후킹 도구나 메모리 덤프를 활용하면 평문 상태의 키 후보군을 확보할 수 있다. 확보된 개인키와 공격자의 공개키를 조합하면 세션 키를 재구성할 수 있다.
5.2 복호화 알고리즘 구현
확보된 키와 변형된 엔진 구조를 재현하여 데이터를 복구하는 핵심 로직이다.
# [코드 5-1] X25519 및 SHA-512 KDF를 통한 마스터 키 도출
def derive_keys(victim_priv, attacker_pub):
# ECDH 공유 비밀값 생성
shared = x25519(victim_priv, attacker_pub)
# SHA-512 기반 Key(32B) / IV(32B) 분리
master = hashlib.sha512(shared).digest()
return master[:32], master[32:64]
# [코드 5-2] 커스텀 HC-128 복호화 엔진 구현 (PoC)
def decrypt_hc128(cipher, key_hex, iv_hex):
state = alloc_state()
# 변형된 초기화 루틴 (SHA-256 확장 적용)
sub_4085E0(state, key_words, 256, 256)
sub_408220(state, iv_words)
# 파일 크기별 부분 암호화 길이에 맞춰 XOR 복호화
dec_len = compute_partial_length(len(cipher))
return sub_408650(state, cipher, dec_len)
5.3 무결성 검증 및 자동화 (Integrity Check)
추출된 여러 키 후보군 중 정답을 식별하기 위해 파일 헤더의 시그니처를 검증한다.
- 검증 대상 : PNG (\x89PNG), JPEG (\xFF\xD8\xFF), ZIP/Office (PK\x03\x04), PDF (%PDF)
- 프로세스 : 각 개인키 후보로 복호화 시도 → 헤더 매직 넘버 대조 → 일치 시 복구 확정.
6. 요약 및 결론 (Conclusion)
6.1 암호화 워크플로우
- 초기화 : 뮤텍스 생성 및 중복 실행 방지.
- 키 생성 : CryptGenRandom으로 피해자 개인키 생성 --> X25519 ECDH --> SHA-512 KDF.
- 암호화 : 커스텀 HC-128 엔진 가동, 파일 크기별 스트라이핑 정책 적용.
- 완료 : 확장자 변경(.HAes / .crypt) 및 결과 저장.
6.2 최종 평가
Mamona 랜섬웨어는 알고리즘 변조를 통해 분석을 어렵게 설계하였으나, 키 생성 과정에서의 개인키 노출이라는 결정적인 설계 결함을 가지고 있다. 침해 사고 발생 시 시스템을 재부팅하지 않고 후킹 로그 또는 메모리 덤프를 확보한다면, 본 보고서에서 제시한 자동 복호화 모델을 통해 원본 데이터를 온전히 복원할 수 있다.
'랜섬웨어 분석 보고서' 카테고리의 다른 글
| DragonForce 랜섬웨어 분석 보고서 (0) | 2026.02.03 |
|---|---|
| Lynx 랜섬웨어 분석 보고서 (0) | 2026.01.01 |
| WannaCry 랜섬웨어 분석 보고서 (0) | 2026.01.01 |
| Nitrogen 랜섬웨어 분석 보고서 (0) | 2025.12.31 |
| Donut 랜섬웨어 분석 보고서 (0) | 2025.12.29 |