SOC Prime Bias: 심각

27 1월 2026 17:21

워터링 홀 공격, EmEditor 사용자 타겟으로 정보 탈취형 악성코드 배포

Author Photo
Ruslan Mikhalov SOC Prime에서 위협 연구 책임자 linkedin icon 팔로우
워터링 홀 공격, EmEditor 사용자 타겟으로 정보 탈취형 악성코드 배포
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

트로이 목마가 심어진 EmEditor 설치 관리자가 다단계 악성코드 체인을 배포하는 데 활용되었습니다. 손상된 설치 관리자는 공격자가 제어하는 도메인에서 PowerShell 스크립트를 가져온 다음, 자격 증명 수집, 호스트 및 환경 세부 정보 수집, 결과 유출 등의 작업을 수행하는 후속 페이로드를 가져옵니다. 이 전달 메커니즘은 공급자의 다운로드 경로가 손상되어 합법적인 소프트웨어를 찾는 사용자에게 도달하는 워터링 홀 기법과 일치합니다.

조사

분석 결과, MSI 패키지가 변조되어 EmEditor 테마를 가장한 도메인에 접속하는 임베디드 PowerShell 명령이 실행되는 것으로 확인되었습니다. 초기 스크립트는 두 개의 추가 단계를 다운로드하며, 이들은 분석 방지 동작, 자격 증명 절도, 시스템 지문 수집을 담당하며, 수집된 데이터를 명령 및 제어 서버로 전송합니다. 조사는 고유한 문자열과 실행 체인에 사용된 특정 URL을 포함한 뚜렷한 지표를 문서화했습니다.

완화

설치 관리자 무결성을 배포 전에 공급업체 코드 서명 검증 및 해시 검사를 통해 확인합니다. 엄격한 PowerShell 제어 및 모니터링을 적용하고 ETW 또는 다른 원격 분석 비활성화와 관련된 동작을 감시합니다. 식별된 악성 도메인에 대한 네트워크 필터링을 구현하고 비정상적인 아웃바운드 HTTPS 활동에 경고합니다.

대응

악성 도메인을 참조하는 PowerShell 명령 줄을 검색하고 관련 URL/도메인 차단, 영향받은 엔드포인트 격리, 변조된 MSI와 같은 포렌식 아티팩트 보존을 실행합니다. 공급업체 배포 워크플로의 공급망 점검 수행 및 사용자 알림 및 수정 지침 조정을 계획합니다.

“graph TB %% Class definitions classDef technique fill:#ffcc99 classDef file fill:#e6e6fa classDef command fill:#add8e6 classDef server fill:#ffd700 classDef tool fill:#d3d3d3 %% Technique nodes tech_T1195[“<b>기법</b> – T1195 공급망 손상:<br />악성 페이로드를 배포하기 위한 소프트웨어 공급망의 손상.”] class tech_T1195 technique tech_T1199[“<b>기법</b> – T1199 신뢰할 수 있는 관계:<br />신뢰할 수 있는 공급업체 관계를 이용하여 악성 콘텐츠를 전달.”] class tech_T1199 technique tech_T1546_016[“<b>기법</b> – T1546.016 이벤트 트리거된 실행 (설치 패키지):<br />MSI의 CustomAction이 설치 프로그램이 실행될 때 스크립트를 실행.”] class tech_T1546_016 technique tech_T1059_001[“<b>기법</b> – T1059.001 PowerShell:<br />페이로드를 다운로드 및 실행하기 위한 PowerShell 명령 실행.”] class tech_T1059_001 technique tech_T1027[“<b>기법</b> – T1027 난독화된 파일 또는 정보:<br />페이로드는 문자열 조작 및 인코딩을 사용하여 강하게 난독화됨.”] class tech_T1027 technique tech_T1620[“<b>기법</b> – T1620 반사적 코드 로딩:<br />디스크를 건드리지 않고 반사적으로 메모리에 로드됨.”] class tech_T1620 technique tech_T1497[“<b>기법</b> – T1497 가상화/샌드박스 회피:<br />사용자 활동 및 시간 기반 로직을 사용하여 분석 환경을 점검.”] class tech_T1497 technique tech_T1218_007[“<b>기법</b> – T1218.007 시스템 바이너리 프록시 실행:<br />신뢰할 수 있는 바이너리인 Msiexec를 사용하여 악성 MSI를 실행.”] class tech_T1218_007 technique tech_T1555_004[“<b>기법</b> – T1555.004 패스워드 저장소에서의 자격 증명:<br />Windows 자격 증명 관리자에서 저장된 자격 증명을 추출.”] class tech_T1555_004 technique tech_T1082[“<b>기법</b> – T1082 시스템 정보 수집:<br />운영 체제, 하드웨어 및 소프트웨어 세부 정보 수집.”] class tech_T1082 technique tech_T1016_001[“<b>기법</b> – T1016.001 인터넷 연결 발견:<br />네트워크 연결 상태를 확인.”] class tech_T1016_001 technique tech_T1592_002[“<b>기법</b> – T1592.002 피해자 호스트 정보 수집 (소프트웨어):<br />설치된 애플리케이션 및 버전을 열거.”] class tech_T1592_002 technique tech_T1102[“<b>기법</b> – T1102 웹 서비스:<br />명령 및 제어 통신을 위한 HTTPS 웹 서비스를 사용.”] class tech_T1102 technique tech_T1090_002[“<b>기법</b> – T1090.002 외부 프록시 프록시:<br />트래픽이 외부 프록시 서버를 통해 라우팅됨.”] class tech_T1090_002 technique tech_T1070_001[“<b>기법</b> – T1070.001 지표 제거 (Windows 이벤트 로그 지우기):<br />ETW를 비활성화하고 로그를 지워 활동을 숨김.”] class tech_T1070_001 technique tech_T1546_013[“<b>기법</b> – T1546.013 이벤트 트리거된 실행 (PowerShell 프로필):<br />악성 PowerShell 프로필 스크립트를 통한 지속성.”] class tech_T1546_013 technique tech_T1068[“<b>기법</b> – T1068 권한 상승을 위한 취약점 악용:<br />높은 권한을 얻기 위한 로컬 취약점 사용 가능성.”] class tech_T1068 technique %% File, tool, command and server nodes file_msi[“<b>파일</b> – EmEditor.msi:<br />공급업체 다운로드 페이지에 호스팅된 손상된 MSI 설치 파일.”] class file_msi file tool_msiexec[“<b>도구</b> – Msiexec:<br />악성 MSI를 실행하는 데 사용되는 Windows 설치 관리자 실행 파일.”] class tool_msiexec tool command_ps[“<b>명령어</b> – PowerShell:<br />CustomAction이 Invoke-WebRequest를 통해 스크립트를 다운로드하는 PowerShell을 실행.”] class command_ps command server_c2[“<b>서버</b> – C2 HTTPS:<br />https://cachingdrive.com/gate/init/2daef8cd”] class server_c2 server %% Connections showing attack flow tech_T1195 u002du002d>|배달| file_msi tech_T1199 u002du002d>|다운로드| file_msi file_msi u002du002d>|실행자| tool_msiexec tool_msiexec u002du002d>|트리거| tech_T1546_016 tech_T1546_016 u002du002d>|실행| command_ps command_ps u002du002d>|실행| tech_T1059_001 command_ps u002du002d>|난독화 사용| tech_T1027 command_ps u002du002d>|코드를 반사적으로 로드| tech_T1620 command_ps u002du002d>|샌드박스 검사를 수행| tech_T1497 command_ps u002du002d>|msiexec를 통한 프록시 실행| tech_T1218_007 command_ps u002du002d>|자격 증명 추출| tech_T1555_004 command_ps u002du002d>|시스템 정보 수집| tech_T1082 command_ps u002du002d>|인터넷 연결 발견| tech_T1016_001 command_ps u002du002d>|소프트웨어 열거| tech_T1592_002 command_ps u002du002d>|통신| server_c2 server_c2 u002du002d>|사용| tech_T1102 server_c2 u002du002d>|경로를 통해 라우팅| tech_T1090_002 command_ps u002du002d>|로그 지우기| tech_T1070_001 command_ps u002du002d>|지속성 확립| tech_T1546_013 command_ps u002du002d>|트리거할 수 있음| tech_T1068 “

공격 흐름

시뮬레이션 실행

전제조건: 원격 분석 및 기준선 사전검사가 통과되어야 합니다.

근거: 이 섹션은 탐지 규칙을 트리거하도록 설계된 적 기술 (TTP)의 정확한 실행을 자세히 설명합니다. 명령 및 서술은 식별된 TTP를 직접 반영해야 하며 탐지 로직에 의해 예상되는 정확한 원격 분석을 생성하는 것을 목표로 합니다.

  • 공격 설명 및 명령:
    적은 공식 EmEditor 설치 관리자 패키지를 손상시켰습니다. 피해자가 설치 관리자를 실행한 후, 악성 바이너리는 하드 코딩된 C2 도메인과 연결을 시도합니다. cachingdrive.com/gate/init/2daef8cd. 이 아웃바운드 요청은 권한을 상승시키고 자격 증명을 수확하는 2차 페이로드를 다운로드합니다. 공격자는 표준 Windows 명령 줄 (cmd.exe)을 사용하여 설치 관리자를 실행하여 악성 URL이 프로세스 생성 이벤트에 그대로 나타나 Sigma 규칙의 문자열 매치 조건과 일치하도록 합니다.

  • 회귀 테스트 스크립트:

    # --------------------------------------------------------------
    # 손상된 EmEditor 설치 관리자의 시뮬레이션된 악성 실행
    # --------------------------------------------------------------
    $installerPath = "C:TempEmEditorSetup.exe"
    $maliciousUrl   = "https://cachingdrive.com/gate/init/2daef8cd"
    
    # 설치 관리자가 존재하는지 확인 (플레이스홀더 – 실제 테스트에서는 안전한 exe를 복사)
    if (-not (Test-Path $installerPath)) {
        Write-Error "설치 관리자가 $installerPath에 없습니다."
        exit 1
    }
    
    # 악성 인수를 사용하여 설치 관리자 실행
    Write-Host "[*] 손상된 설치 관리자 실행 중..."
    Start-Process -FilePath $installerPath -ArgumentList $maliciousUrl -Wait
    
    Write-Host "[+] 실행 완료. 탐지 규칙이 발동했는지 확인하십시오."
    # --------------------------------------------------------------
  • 정리 명령:

    # --------------------------------------------------------------
    # 시뮬레이션된 테스트로 인한 아티팩트 제거
    # --------------------------------------------------------------
    $installerPath = "C:TempEmEditorSetup.exe"
    
    if (Test-Path $installerPath) {
        Remove-Item $installerPath -Force
        Write-Host "[*] 설치 관리자 바이너리 삭제."
    }
    
    # (선택 사항) 다운로드된 페이로드를 물리화한 경우 삭제
    $downloadedPath = "$env:TEMPpayload.bin"
    if (Test-Path $downloadedPath) {
        Remove-Item $downloadedPath -Force
        Write-Host "[*] 다운로드된 악성 페이로드 삭제."
    }
    # --------------------------------------------------------------