여러 테마의 피싱 이메일을 활용한 새로운 XWorm 캠페인 심층 분석
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
FortiGuard Labs는 악성 Excel 첨부 파일을 통해 XWorm 원격 접근 트로이 목마를 배포하는 다단계 피싱 캠페인을 관찰했습니다. 이 문서는 Microsoft Equation Editor의 CVE-2018-0802를 악용하여 HTA 파일을 검색한 다음 XWorm을 새로 생성된 Msbuild.exe 프로세스에 삽입하는 프로세스 홀로잉을 사용하는 파일리스 .NET 로더를 트리거합니다. RAT는 AES 암호화된 트래픽을 사용하여 C2와 통신하며 확장된 제어를 위한 플러그인 지원을 포함한 폭넓은 명령 집합을 노출합니다. 이 캠페인은 타협된 엔드포인트에 걸쳐 지속적인 원격 제어를 달성하기 위해 파일리스 기술과 현존하는 바이너리의 사용을 활용하는 고급 기법을 보여줍니다.
조사
분석가들은 피싱 이메일부터 Excel OLE 익스플로잇, HTA 실행, 파워셸 기반의 .NET 모듈 다운로드, 최종적으로 Msbuild.exe로의 프로세스 홀로잉까지의 흐름을 복구했습니다. 정적 및 동적 검토에서는 JPEG 이미지 내에 숨겨진 Base64 인코딩 페이로드 데이터가 하이라이트 되었으며 최종 XWorm 구성 요소는 실행 중 디스크에 해독된 실행 파일을 기록하지 않고 메모리에 로드되었습니다. 네트워크 캡처에서는 C2 도메인 berlin101.com으로 포트 6000을 통해 AES 암호화된 패킷이 전송되는 것이 관찰되었습니다. 보고서는 또한 XWorm의 광범위한 명령 세트와 플러그인 아키텍처를 분류했습니다.
완화
FortiGuard는 매크로 및 OLE 보호를 활성화하고 CVE-2018-0802에 대한 패치를 적용하며 이메일 콘텐츠에서 유래된 Msbuild, PowerShell 및 HTA 파일의 실행을 제한할 것을 권장합니다. 웹 필터링, 피싱 방지 제어 및 게이트웨이에서의 전달 및 스테이징을 차단하기 위해 관찰된 지표와 연결된 IDS/IPS 시그니처를 배포하십시오. 특히 PowerShell에서 시작된 Msbuild.exe와 같은 이상한 프로세스 트리를 모니터링하여 초기 착취를 식별하십시오.
대응
탐지 시 영향을 받은 엔드포인트를 격리하고 악성 프로세스를 종료하며 메모리에서 로드된 XWorm 모듈을 제거하십시오. 명령줄 텔레메트리, 네트워크 로그 및 레지스트리 변경사항을 포함하여 포렌식 아티팩트를 수집하여 침입 범위를 파악하십시오. 잠재적으로 손상된 자격 증명을 재설정하고 취약한 Equation Editor 구성 요소를 업데이트하며 악성 도메인 및 C2 서버를 차단하십시오. 환경 전반에서 재발을 방지하고 관련된 활동을 찾기 위해 EDR/SIEM 탐지에 위협 정보 업데이트를 적용하십시오.
공격 흐름
탐지
의심스러운 파워셸 문자열 (via powershell)
보기
의심스러운 LOLBAS MSHTA 방어 회피 행동의 관련 명령 탐지 (via process_creation)
보기
의심스러운 파워셸 문자열 (via cmdline)
보기
Powershell에서 의심스러운 .NET 메서드 호출 (via powershell)
보기
IOCs (HashSha256) 탐지: 다양한 주제로 피싱 이메일을 사용하는 새로운 XWorm 캠페인 깊이 있는 조사
보기
다중 공격 벡터를 사용하는 CVE-2018-0802을 악용한 XWorm 캠페인 [Windows 프로세스 생성]
보기
XWorm 캠페인에서 Base64로 인코딩된 파워셸 페이로드 탐지 [Windows Powershell]
보기
시뮬레이션 실행
전제 조건: 텔레메트리 및 기준선 점검이 통과해야 합니다.
이유: 이 섹션은 탐지 규칙을 활성화하기 위해 설계된 적의 기술(TTP)의 정확한 실행을 설명합니다. 명령 및 서사는 식별된 TTP를 직접 반영하며 탐지 논리에 의해 기대된 정확한 텔레메트리를 생성하는 것을 목표로 합니다.
-
공격 서사 및 명령:
- 초기 드롭: 공격자는 CVE‑2018‑0802를 악용하는 악성 Excel 파일을 전달합니다. 시뮬레이션을 위해 익스플로잇을 무시하고 페이로드를 직접 실행합니다.
- EQNEDT32.EXE을 통한 프로세스 홀로잉: 실행
EQNEDT32.EXE명령 행을 사용하여ShellExecuteExW()를 합법적인 Office 구성 요소로 가장합니다. - Msbuild.exe 횡적 실행: 스폰
Msbuild.exe와 함께CreateProcessA()를 사용하여 실시간으로 은신형 .NET 페이로드를 컴파일합니다. - 파일리스 .NET 실행: Use
powershell.exe기본-64 인코딩된 명령으로 반사 .NET 어셈블리를 로드합니다 (T1620). 명령 줄에는 ‘규칙’을 충족시키기 위해 리터럴 문자열이 포함되어 있습니다.CreateProcessA()to satisfy the rule.
-
회귀 테스트 스크립트:
<# XWorm 실행 체인을 시뮬레이션합니다: 1. ShellExecuteExW()를 가진 EQNEDT32.exe 2. CreateProcessA()를 가진 Msbuild.exe 3. CreateProcessA()를 포함한 .NET 반사 로더가 인코딩된 파워셸 #> # 1. EQNEDT32.exe (프로세스 홀로잉) $eqnPath = "$env:SystemRootSystem32EQNEDT32.EXE" $eqnArgs = "-Command "ShellExecuteExW()"" Start-Process -FilePath $eqnPath -ArgumentList $eqnArgs -WindowStyle Hidden # 2. Msbuild.exe (동적 DLL 주입) $msbuildPath = "$env:ProgramFilesMicrosoft Visual Studio2022CommunityMSBuildCurrentBinMsbuild.exe" $msbuildArgs = "/t:Compile /p:UseShellExecute="CreateProcessA()"" Start-Process -FilePath $msbuildPath -ArgumentList $msbuildArgs -WindowStyle Hidden # 3. 파워셸 (파일리스 .NET 반사 로드) # Base64로 인코딩된 샘플 .NET 페이로드 (플레이스홀더) $payload = "W3siQmFzZURhdGEiOiAiIiB9XQ==" # 더미 base64 $psArgs = "-EncodedCommand $payload -ArgumentList "CreateProcessA()"" Start-Process -FilePath "powershell.exe" -ArgumentList $psArgs -WindowStyle Hidden Write-Host "XWorm 시뮬레이션 완료." -
정리 명령어:
# 남아있는 시뮬레이션 프로세스 종료 Get-Process -Name "EQNEDT32","Msbuild","powershell" -ErrorAction SilentlyContinue | Stop-Process -Force # 임시 파일을 제거할 선택적 단계 (이 순수 프로세스 시뮬레이션에서는 생성되지 않음) Write-Host "정리 완료."