SOC Prime Bias: 심각

24 11월 2025 12:15

NotDoor 통찰: Outlook 매크로 및 그 이상의 심층 분석

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Follow
NotDoor 통찰: Outlook 매크로 및 그 이상의 심층 분석
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

이 문서에서는 지속성을 유지하고 명령 및 제어를 제공하기 위해 악의적인 Outlook VBA 매크로를 악용하는 NotDoor 백도어를 조사합니다. 페이로드는 변조된 SSPICLI.dll 를 가장하여 합법적인 OneDrive.exe 바이너리로 전달됩니다. 난독화된 PowerShell 스크립트는 웹훅 서비스를 통해 데이터 탈취를 처리하고 매크로 실행을 강제하기 위해 Outlook 레지스트리 설정을 조정합니다. 탐지 가이드는 의심스러운 파일 생성, DLL 로드 활동, 레지스트리 변경, 인코딩된 PowerShell 명령을 추적하는 데 중점을 둡니다.

NotDoor 백도어 분석

추가 분석을 통해 악성 DLL이 임시 디렉터리를 생성하고 Outlook의 VBAProject.OTM 파일에 페이로드를 기록하며 모든 매크로를 허용하도록 레지스트리 키를 구성한다는 사실이 밝혀졌습니다. 그런 다음 DNS 및 HTTP 콜백을 webhook.site and dnshook.site로 발행하는 base64 인코딩된 PowerShell 명령을 실행합니다. 레지스트리 변경 사항에는 LoadMacroProviderOnBoot을 활성화하고 Outlook 보안 수준을 낮추며 PONT_STRING 을 수정하여 보안 프롬프트를 억제하는 것이 포함됩니다.

완화

주요 완화책에는 DLL 사이드로딩 가능성 제한, 실행 파일에 대한 코드 서명 요구 사항 시행, 비-Outlook 프로세스에 의한 VBAProject.OTM 생성 모니터링 및 식별된 웹훅 도메인으로의 아웃바운드 연결 차단이 포함됩니다. 또한 팀은 레지스트리 수정에 최소 권한 원칙을 적용하고 자동 매크로 로딩을 가능한 한 비활성화할 수 있습니다.

대응

NotDoor 활동이 감지되면 감염된 엔드포인트를 격리하고 악성 DLL 및 관련 페이로드를 확보하며 레지스트리 편집 및 네트워크 추적의 포렌식 검토를 수행하십시오. 관련 도메인과 IP를 차단하고 유사한 DLL 사이드로딩 행동에 대한 더 광범위한 사냥을 개시하며 Outlook 매크로 정책을 재설정하고 모든 사용자의 보안 설정이 강화된 상태로 돌아갔는지 확인하십시오.

ngraph TB %% 클래스 정의 classDef technique fill:#ffcc99 classDef tool fill:#cccccc classDef file fill:#e6e6fa classDef action fill:#99ccff classDef operator fill:#ff9900 %% 노드 – 액션 / 기술 initial_access[“<b>액션</b> – 기존 발판을 통한 초기 접근”] class initial_access action dll_sideload[“<b>기술</b> – <b>T1574.001 실행 흐름 가로채기: DLL</b><br />OneDrive.exe가 DLL 사이드로딩을 통해 악성 SSPICLI.dll 로드”] class dll_sideload technique powershell[“<b>기술</b> – <b>T1059.001 명령 및 스크립트 인터프리터: PowerShell</b><br />네트워크 확인 및 파일 복사를 위해 Base64로 인코딩된 PowerShell 명령 실행”] class powershell technique office_macro[“<b>기술</b> – <b>T1137.001 Office 애플리케이션 시작: Office 템플릿 매크로</b><br />VBA 매크로가 %APPDATA%\Microsoft\Outlook\VbaProject.OTM에 배치됨”] class office_macro technique vba_stomping[“<b>기술</b> – <b>T1564.007 아티팩트 숨기기: VBA Stomping</b><br />매크로가 수신 메일(Application_NewMailEx)을 모니터링하여 C2 트리거 확인 및 데이터 유출”] class vba_stomping technique vb_interpreter[“<b>기술</b> – <b>T1059.005 명령 및 스크립트 인터프리터: Visual Basic</b><br />VBA 코드가 명령을 실행하고 Outlook을 통해 통신”] class vb_interpreter technique %% 노드 – 파일 / 객체 file_oneDrive[“<b>파일</b> – OneDrive.exe”] class file_oneDrive file file_sspicli[“<b>파일</b> – SSPICLI.dll”] class file_sspicli file file_vba[“<b>파일</b> – VbaProject.OTM”] class file_vba file email_monitor[“<b>객체</b> – Outlook 애플리케이션<br />수신 메일(Application_NewMailEx) 모니터링”] class email_monitor action outlook_comm[“<b>객체</b> – Outlook<br />C2 통신 및 데이터 유출”] class outlook_comm action %% 공격 흐름 연결 initial_access –>|연결| dll_sideload dll_sideload –>|사용| file_oneDrive dll_sideload –>|로드| file_sspicli dll_sideload –>|트리거| powershell powershell –>|연결| office_macro office_macro –>|배치| file_vba office_macro –>|활성화| vba_stomping office_macro –>|활성화| vb_interpreter vba_stomping –>|모니터링| email_monitor vb_interpreter –>|통신| outlook_comm

공격 흐름

시뮬레이션 실행

전제 조건: 원격 로깅 및 기본 설정 도구 시뮬레이션을 완료해야 합니다.

이유: 이 섹션에서는 탐지 규칙을 발동하기 위해 설계된 공격자 기술 (TTP)의 정확한 실행을 설명합니다. 명령 및 서술은 식별된 TTP를 직접 반영하며 탐지 로직이 예상하는 정확한 원격 로깅을 생성하는 것을 목표로 해야 합니다.

  • 공격 서술 및 명령:
    사용자 수준의 실행 권한을 얻은 공격자는 피해자 시스템에 NotDoor 악성코드를 배포합니다. 해당 악성코드의 목표는 Outlook이 시스템 시작 시 자동으로 악성 매크로를 로드하게 하고, 보안 경고를 비활성화하며, 팝업 대화 창을 억제하는 것입니다. 이를 달성하기 위해 공격자는 Outlook 하이브에 세 가지 특정 레지스트리 값을 기록합니다:

    1. LoadMacroProviderOnBoot로 설정합니다.1아래HKCUSoftwareMicrosoftOutlook – 부팅할 때마다 매크로 제공자를 Outlook이 로드하도록 강제합니다.
    2. 레벨로 설정합니다.1아래HKCUSoftwareMicrosoftOutlook보안 – 매크로 보안 수준을 낮춥니다.
    3. PONT_STRING를 악성 CLSID로 설정하여HKCUSoftwareMicrosoftOutlook옵션일반 – Outlook이 악성 매크로 DLL을 가리키도록 합니다.

    이러한 기록은selection1 and (selection2 or selection3)을 만족시키고 경고가 발동되도록 하는 Sigma 규칙에서 레지스트리 변경 이벤트를 생성합니다.

  • 회귀 테스트 스크립트:

    # NotDoor 레지스트리 수정 시뮬레이션 – PowerShell
    function Set-NotDoorOutlookRegistry {
        # 1. 부팅 시 매크로 제공자 활성화
        New-ItemProperty -Path "HKCU:SoftwareMicrosoftOutlook" `
            -Name "LoadMacroProviderOnBoot" -Value 1 -PropertyType DWORD -Force
    
        # 2. 보안 경고 수준 낮추기
        New-ItemProperty -Path "HKCU:SoftwareMicrosoftOutlookSecurity" `
            -Name "Level" -Value 1 -PropertyType DWORD -Force
    
        # 3. 악성 매크로로 포인팅 (시뮬레이션된 CLSID)
        $maliciousClsid = "{12345678-1234-1234-1234-123456789ABC}"
        New-ItemProperty -Path "HKCU:SoftwareMicrosoftOutlook옵션일반" `
            -Name "PONT_STRING" -Value $maliciousClsid -PropertyType String -Force
    }
    
    # 시뮬레이션된 공격 실행하기
    Set-NotDoorOutlookRegistry
  • 정리 명령:

    # 시뮬레이션된 NotDoor 레지스트리 수정 제거
    Remove-ItemProperty -Path "HKCU:SoftwareMicrosoftOutlook" `
        -Name "LoadMacroProviderOnBoot" -ErrorAction SilentlyContinue
    
    Remove-ItemProperty -Path "HKCU:SoftwareMicrosoftOutlook보안" `
        -Name "Level" -ErrorAction SilentlyContinue
    
    Remove-ItemProperty -Path "HKCU:SoftwareMicrosoftOutlook옵션일반" `
        -Name "PONT_STRING" -ErrorAction SilentlyContinue