SOC Prime Bias: 높음

15 Jun 2026 15:51 UTC

재정 미끼에서 NinjaOne RMM 악용으로

Author Photo
SOC Prime Team linkedin icon 팔로우
재정 미끼에서 NinjaOne RMM 악용으로
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

현재 활성 피싱 캠페인은 브라질 조직을 표적으로 하여 일반적인 비즈니스 프로세스인 재정 문서 및 불만 처리 등을 모방하고 있습니다. 공격자들은 기존 악성 소프트웨어를 배포하는 대신, 공격자가 통제 가능한 방식으로 합법적 NinjaOne 원격 모니터링 및 관리(RMM) 에이전트를 전달합니다. 신뢰할 수 있는 기업 소프트웨어에 의존함으로써, 전통적인 멀웨어 기반 방어를 쉽게 우회할 수 있습니다.

조사

Cato CTRL 연구자들은 포르투갈어 피싱 페이지와 Google이 호스팅하는 인프라를 사용하는 리다이렉션 체인을 분석하는 과정에서 이 캠페인을 발견했습니다. 그들은 브라질을 중심으로 한 지리적 차단, 브라우저 지문 인식, 샌드박스 탐지 논리 등 여러 반분석 조치를 밝혀냈습니다. 또한, 재사용된 지구 테마의 배경 이미지 기반의 피봇을 통해 이 활동을 추가적인 공격자 통제 도메인에 연결하는 데 도움을 주었습니다.

완화

조직은 승인되지 않은 원격 모니터링 및 관리 도구 설치에 대해 엄격한 통제를 시행해야 합니다. 보안 팀은 예상치 못한 소프트웨어 배포를 모니터링하고 재정 기록이나 기타 비즈니스 문서와 관련된 요청을 꼼꼼히 검증하는 데 주의를 기울여야 합니다. 알려진 악성 도메인을 차단하고 피싱 리다이렉션 체인을 탐지할 수 있도록 이메일 보안을 강화함으로써 노출을 더 줄일 수 있습니다.

대응

이 활동이 감지될 경우, 보안 팀은 RMM 에이전트를 통한 추가 액세스를 차단하기 위해 영향을 받은 엔드포인트를 즉시 격리해야 합니다. 조사관은 NinjaOne 설치가 어떻게 시작되었는지를 파악하고, 비인가 관리 작업에 대한 감사 로그를 검토해야 합니다. 엔드포인트 관리 공급업체와의 조정도 필요할 수 있으며, 손상된 관리 프로파일을 식별하고 비활성화해야 할 수도 있습니다.

graph TB %% 클래스 정의 섹션 classDef action fill:#99ccff classDef evasion fill:#ff99cc classDef tool fill:#cccccc classDef execution fill:#ccffcc classDef operator fill:#ff9900 %% 노드 정의 %% 초기 접근 단계 action_phishing[“<b>행위</b> – <b>T1566.002 피싱: 스피어피싱 링크</b><br/>공격자는 bc.googleusercontent.com의<br/>리디렉션 체인 뒤에 숨겨진 링크가 포함된<br/>이메일을 전송한다.”] class action_phishing action %% 회피 및 실행 조건 단계 evasion_geofencing[“<b>행위</b> – <b>T1665 인프라 은닉</b><br/>지오펜싱을 사용하여 특정 브라질 IP 대역에만<br/>페이로드가 전달되도록 제한한다.”] class evasion_geofencing evasion evasion_keying[“<b>행위</b> – <b>T1480.001 실행 가드레일: 환경 기반 키잉</b><br/>인프라는 실행이 대상 시스템에서만 이루어지도록<br/>환경 기반 키잉을 적용한다.”] class evasion_keying evasion evasion_browser[“<b>행위</b> – <b>T1217 브라우저 정보 수집</b><br/>피싱 포털은 회피를 지원하기 위해<br/>브라우저 정보를 수집한다.”] class evasion_browser evasion evasion_sandbox[“<b>행위</b> – <b>T1497.002 가상화/샌드박스 회피: 사용자 활동 기반 검사</b><br/>Selenium 또는 Puppeteer와 같은 자동화 프레임워크를<br/>탐지하고 마우스 움직임을 통해 실제 사용자의<br/>존재를 확인한다.”] class evasion_sandbox evasion op_check((“AND”)) class op_check operator %% 실행 단계 op_validation((“AND”)) class op_validation operator action_user_exec[“<b>행위</b> – <b>T1204.002 사용자 실행: 악성 파일</b><br/>피해자는 사회공학 기법에 속아<br/>업무 문서로 위장된 파일을<br/>다운로드하게 된다.”] class action_user_exec execution tool_rmm_installer[“<b>도구</b> – <b>이름</b>: NinjaOne RMM 설치 프로그램<br/><b>설명</b>: 합법적인 RMM 에이전트 설치 프로그램<br/>(예: NinjaOne-Agent-DocumentoFiscal)으로,<br/>악의적인 의도를 숨기기 위해 사용된다.”] class tool_rmm_installer tool %% 지속성 및 제어 단계 action_software_ext[“<b>행위</b> – <b>T1176 소프트웨어 확장</b><br/>시스템 기능을 확장하기 위해<br/>RMM 에이전트를 설치한다.”] class action_software_ext execution tool_remote_access[“<b>도구</b> – <b>T1219 원격 액세스 도구</b><br/>설치된 RMM 에이전트를 사용하여<br/>지속적인 명령 및 제어(C2), 정찰,<br/>명령 실행을 수행한다.”] class tool_remote_access tool %% 연결 %% 초기 흐름 action_phishing –>|이어짐| evasion_geofencing evasion_geofencing –>|이어짐| evasion_keying evasion_keying –>|이어짐| op_check %% 회피 로직 분기 op_check –>|검사| evasion_browser op_check –>|검사| evasion_sandbox evasion_browser –>|이어짐| op_validation evasion_sandbox –>|이어짐| op_validation %% 실행 흐름 op_validation –>|정상으로_판단되면| action_user_exec action_user_exec –>|다운로드| tool_rmm_installer tool_rmm_installer –>|지원함| action_software_ext action_software_ext –>|활성화함| tool_remote_access

공격 흐름

시뮬레이션 실행

전제 조건: 원격 측정 및 기본 기준 사전 점검이 통과되어야 합니다.

이유: 이 섹션은 탐지 규칙을 유발하는 적대적 기술(전술, 기법 및 절차)을 정확히 실행하는 방법을 설명합니다. 명령어 및 내러티브는 반드시 식별된 전술, 기법 및 절차를 직접 반영하며 탐지 논리에서 기대되는 정확한 원격 측정을 생성하는 것을 목표로 해야 합니다. 추상적이거나 관련 없는 예는 오진을 초래할 것입니다.

  • 공격 내러티브 및 명령어: 적대자는 브라질 사용자에 대한 목표 스피어 피싱 캠페인을 수행하고 있습니다. 공격자는 “재정 문서” 제목의 이메일을 전송하여 sefaz.services에 호스팅된 악성 사이트로 연결되는 링크가 포함되어 있습니다. 링크는 googleusercontent.com URL을 통해 최종적으로 NinjaOne RMM 에이전트 페이로드를 전달합니다. 이 시뮬레이션은 프록시 스트림에 이 특정 시퀀스를 모방한 합성 로그 항목을 주입하여 Sigma 규칙을 검증할 것입니다.

  • 회귀 테스트 스크립트:

    # 악성 프록시 로그 항목 주입을 시뮬레이션하기 위한 Python 스크립트
    import datetime
    
    def generate_malicious_log():
        timestamp = datetime.datetime.utcnow().isoformat()
        # 'selection_domains'와 'selection_url' 논리를 모방
        log_entry = {
            "timestamp": timestamp,
            "src_ip": "192.168.1.50",
            "dest_ip": "104.21.45.12",
            "url": "https://storage.googleapis.com/googleusercontent.com/payloads/malware.exe",
            "domain": "sefaz.services",
            "subject": "Documento Fiscal - Urgente",
            "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
        }
    
        print(f"INJECTING SYNTHETIC PROXY LOG: {log_entry}")
        # 실제 시나리오에서는 이를 syslog 엔드포인트로 보내거나 API로 수집해야 합니다
        return log_entry
    
    if __name__ == "__main__":
        generate_malicious_log()
  • 정리 명령어:

    # 시스템에 영구적인 변경은 없습니다;
    # 로그가 실제 SIEM에 전송된 경우, SIEM API를 사용하여 특정 테스트 항목을 삭제하십시오.
    echo "시뮬레이션 완료. 호스트 정리 불필요."