SITUATION Security research & response knowledge base UTC+09 · SEOUL
INTELLIGENCE REPORT TLP:CLEAR

Emotet 분석: 이메일 스레드 탈취에서 랜섬웨어 전 단계까지

Emotet의 문서 기반 유입, 모듈 구조, C2, 횡적 이동과 실전 포렌식·탐지

#emotet#malware#loader#phishing#dfir

분석 요약

Emotet은 뱅킹 트로이목마에서 출발했지만 2020년에는 다른 악성코드를 전달하는 모듈형 loader로 운용됐다. 탈취한 Outlook 메일 대화에 답장하는 형태로 악성 문서를 전달하고, 감염 후 TrickBot·QakBot 같은 후속 payload를 내려 랜섬웨어 사고로 확장했다.

핵심은 악성 문서를 열었다는 단일 이벤트가 아니라 다음 연결을 복원하는 것이다.

thread-hijacked email
  └─ Office document / archive
      └─ macro or script
          └─ PowerShell·cmd download
              └─ Emotet DLL + rundll32
                  ├─ credential/email modules
                  ├─ HTTP C2
                  └─ secondary malware

초기 유입과 실행

2020년 캠페인은 Word 문서와 암호화 ZIP을 사용해 메일 보안 검사를 우회했다. 문서 매크로는 난독화된 명령으로 payload를 내려받고, DLL 형태의 Emotet을 rundll32.exe로 실행하는 경우가 많았다.

조사할 때 파일명이나 URL 하나에 의존하지 않는다. 메일의 Message-ID, 첨부파일 SHA-256, Office 자식 프로세스, 최초 외부 연결을 하나의 타임라인으로 묶는다.

Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-Sysmon/Operational'; Id=1} |
  Where-Object Message -Match 'WINWORD.EXE|EXCEL.EXE|rundll32.exe|powershell.exe'

지속성·자격 증명·확산

관측 시기와 build에 따라 Run Key, 예약 작업 또는 서비스가 사용됐다. password-grabber·Outlook scraper 모듈은 브라우저와 메일 데이터를 수집했고, 탈취한 로컬 관리자 계정과 ADMIN$ 공유를 이용한 확산도 보고됐다.

다음 증거를 우선 보존한다.

  • HKCU\Software\Microsoft\Windows\CurrentVersion\Run
  • Task Scheduler Operational log와 신규 XML
  • 서비스 생성 Event ID 7045
  • rundll32.exe의 command line과 parent process
  • Outlook 데이터 접근 시각과 이후 외부 SMTP/HTTP 통신
  • 짧은 시간에 다수 호스트로 발생한 TCP/445 fan-out

네트워크 헌팅

CISA는 2020년 활동에서 80·8080·443 포트의 HTTP C2와 임의 길이 경로, 오래된 IE 형태 User-Agent를 관측했다. 이는 캠페인별로 바뀔 수 있으므로 단독 IOC가 아니라 endpoint 행위와 결합한다.

Office → script interpreter
AND script/rundll32 → newly observed domain
AND endpoint → multiple internal SMB targets

프록시에서는 한 단말이 짧은 시간에 여러 신규 도메인으로 POST하고, 응답 직후 DLL이 생성되는 패턴을 찾는다. CDN·정상 updater로 인한 오탐은 signer, parent process, destination prevalence로 줄인다.

안전한 분석 절차

실제 sample은 인터넷과 업무망에서 분리된 disposable VM에서만 다룬다. 샘플을 확보하지 못했더라도 메일 원본, Office telemetry, Prefetch, Amcache, SRUM, DNS·proxy log로 감염 여부를 판정할 수 있다.

  1. 원본을 암호화된 증거 저장소에 보관하고 SHA-256을 계산한다.
  2. 정적 분석에서 PE architecture, imports, sections, strings와 signer를 기록한다.
  3. 동적 분석은 DNS·HTTP를 sinkhole로 제한하고 snapshot으로 복구한다.
  4. 생성 파일·레지스트리·프로세스·네트워크 차이를 수집한다.
  5. 관측된 행위를 Sigma/EDR 쿼리로 변환한 뒤 정상 환경에서 오탐을 검증한다.

공개 sandbox에 조직 문서나 내부 URL이 포함된 sample을 업로드하지 않는다. 공개 서비스의 검색 결과는 제3자에게 노출될 수 있다.

대응 범위

Emotet 프로세스 제거만으로 종결하지 않는다. 메일 계정 탈취, 같은 대화 참여자에게 전달된 피싱, 관리자 자격 증명, 후속 TrickBot/QakBot 또는 랜섬웨어 흔적을 조사한다. 감염 호스트는 격리·재이미징하고 노출된 자격 증명을 회전한다.

References