SOC Prime Bias: 위급

06 5월 2026 14:26

퀘이사 리눅스 (QLNX): 풀 RAT 기능을 갖춘 공급망 접근 지점

Author Photo
SOC Prime Team linkedin icon 팔로우
퀘이사 리눅스 (QLNX): 풀 RAT 기능을 갖춘 공급망 접근 지점
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

Quasar Linux (QLNX)는 사용자 공간 및 eBPF 루트킷과 PAM 백도어 및 광범위한 자격 증명 수집 기능을 결합한 고급 Linux 원격 접근 트로이 목마입니다. 이 멀웨어는 파일리스 실행, 프로세스 이름 가장 및 여러 지속성 기술을 지원하여 감염된 시스템에서 숨겨지도록 합니다. 특히 개발자 워크스테이션을 대상으로 하여 공급망 남용에 특히 위험합니다. 이는 토큰, SSH 키 및 클라우드 자격 증명을 탈취할 수 있습니다. 이 멀웨어는 또한 암호화된 통신을 사용하며 끈기를 높이고 접근을 유지하기 위해 피어 투 피어 메쉬 아키텍처를 지원합니다.

조사

트렌드 마이크로 연구원들은 QLNX 바이너리를 획득하고 정적 및 동적 분석을 통해 루트킷 및 PAM 백도어 구성 요소의 내장 소스 코드를 발견했습니다. 그들의 조사는 목표 호스트에서 직접 구성 요소를 컴파일할 수 있는 멀웨어의 능력, 사용되는 지속성 메커니즘의 범위 및 임플란트가 지원하는 전체 명령 세트를 문서화했습니다. 네트워크 분석을 통해 사용자 정의된 TLS 기반 프로토콜 및 통신에서 사용되는 독특한 매직 식별자가 밝혀졌습니다. 이 작업을 통해 연구자들은 사냥 및 탐지를 지원하기 위한 침해 지표를 추출했습니다.

경감

방어자는 고유한 뮤텍스 잠금 파일, 의심스러운 LD_PRELOAD 항목, 그리고 악성 공유 객체를 생성하는 비정상적인 gcc 컴파일 명령을 모니터링하여 QLNX를 찾아야 합니다. 조직은 또한 quasar-implant 이름이 사용된 알려지지 않은 바이너리 실행을 차단하고 /etc/ld.so.preload에 대한 쓰기 접근을 제한해야 합니다. 개발자 계정에 대해 다중 인증이 적용되어야 하며, 보안 팀은 자격 증명 저장소와 민감한 토큰 파일을 빼내려는 시도를 면밀히 모니터링해야 합니다.

대응

QLNX 지표가 발견되면 즉시 영향을 받은 시스템을 격리하고 메모리 및 디스크 이미지를 수집하며 악성 프로세스를 종료해야 합니다. 비인가 항목을 /etc/ld.so.preload에서 제거하고, 컴파일된 악성 .so 파일을 삭제하고, 임플란트가 사용하는 잠금 파일을 지워야 합니다. 특히 클라우드 및 패키지 레지스트리 토큰과 같은 모든 잠재적으로 노출된 자격 증명은 지체 없이 회전되어야 합니다. 조사자는 또한 공격 중 오염된 공급망 시스템, 저장소 또는 빌드 환경이 있는지 평가해야 합니다.

graph TB %% 定義クラス classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef malware fill:#ff9999 classDef tool fill:#cccccc classDef process fill:#ccffcc classDef persistence fill:#ffdd99 %% マルウェアノード malware_qlnx[“<b>マルウェア</b> – <b>名称</b>: QLNX<br/><b>説明</b>: ルートキット技術を使用するファイルレスLinuxインプラント”] class malware_qlnx malware %% 実行フェーズ action_execution[“<b>アクション</b> – <b>実行</b>: memfd_createとexecveatを使用してファイルレスインプラントを起動し、argv0とプロセス名を偽装”] class action_execution action technique_process_spoof[“<b>技術</b> – T1564.010:<br/>アーティファクトの隠蔽 – プロセス引数の偽装”] class technique_process_spoof technique technique_unix_shell[“<b>技術</b> – T1059.004:<br/>コマンドおよびスクリプトインタプリタ – Unixシェル”] class technique_unix_shell technique %% 権限昇格フェーズ action_priv_esc[“<b>アクション</b> – <b>権限昇格</b>: sudoまたはpkexecを使用してより高い権限を取得しようとする”] class action_priv_esc action technique_priv_esc[“<b>技術</b> – T1548.004:<br/>権限昇格制御メカニズムの悪用 – プロンプト付き昇格実行”] class technique_priv_esc technique %% 永続化フェーズ action_persistence[“<b>アクション</b> – <b>永続化</b>: systemdサービス、cron @reboot、init.dスクリプト、XDG自動起動、LD_PRELOADフックをインストール”] class action_persistence action technique_rc_scripts[“<b>技術</b> – T1037.004:<br/>ブートまたはログオン初期化スクリプト – RCスクリプト”] class technique_rc_scripts technique technique_autostart[“<b>技術</b> – T1547:<br/>ブートまたはログオン自動実行”] class technique_autostart technique technique_hijack[“<b>技術</b> – T1574:<br/>LD_PRELOADによる実行フローのハイジャック”] class technique_hijack technique class action_persistence persistence %% 防御回避フェーズ action_defense_evasion[“<b>アクション</b> – <b>防御回避</b>: LD_PRELOADルートキット、eBPFコントローラ、プロセスインジェクションを展開しログを消去”] class action_defense_evasion action technique_rootkit[“<b>技術</b> – T1014:<br/>ルートキット – ファイル、プロセス、ポートを隠蔽”] class technique_rootkit technique technique_thread_hijack[“<b>技術</b> – T1055.003:<br/>プロセスインジェクション – スレッド実行ハイジャック”] class technique_thread_hijack technique technique_process_hollow[“<b>技術</b> – T1055.012:<br/>プロセスインジェクション – プロセスホロウイング”] class technique_process_hollow technique %% 認証情報収集フェーズ action_credential_harvest[“<b>アクション</b> – <b>認証情報収集</b>: ファイル、SSHキー、/etc/shadow、ブラウザ、PAMから認証情報を収集”] class action_credential_harvest action technique_creds_files[“<b>技術</b> – T1552.001:<br/>不適切に保護された認証情報 – ファイル内の認証情報”] class technique_creds_files technique technique_private_keys[“<b>技術</b> – T1552.004:<br/>不適切に保護された認証情報 – 秘密鍵”] class technique_private_keys technique technique_shadow_dump[“<b>技術</b> – T1003.008:<br/>OS認証情報ダンプ – /etc/passwdおよび/etc/shadow”] class technique_shadow_dump technique technique_cookies[“<b>技術</b> – T1550.004:<br/>代替認証情報の使用 – WebセッションCookie”] class technique_cookies technique technique_pam[“<b>技術</b> – T1555:<br/>パスワードストアからの認証情報 – PAMモジュール”] class technique_pam technique %% 収集フェーズ action_collection[“<b>アクション</b> – <b>収集</b>: クリップボードデータとスクリーンショットを取得”] class action_collection action technique_clipboard[“<b>技術</b> – T1115:<br/>クリップボードデータ”] class technique_clipboard technique technique_screenshot[“<b>技術</b> – T1113:<br/>スクリーンキャプチャ”] class technique_screenshot technique %% C2フェーズ action_c2[“<b>アクション</b> – <b>コマンド&コントロール</b>: TLS/HTTPS暗号化チャネルでデータを流出”] class action_c2 action technique_exfil[“<b>技術</b> – T1041:<br/>C2チャネル経由のデータ流出”] class technique_exfil technique %% 横展開フェーズ action_lateral[“<b>アクション</b> – <b>横展開</b>: 収集したSSHキーを使用してリモートホストへアクセス”] class action_lateral action technique_remote_exploit[“<b>技術</b> – T1210:<br/>リモートサービスの悪用”] class technique_remote_exploit technique %% 接続 malware_qlnx –>|実行する| action_execution action_execution –>|使用| technique_process_spoof action_execution –>|使用| technique_unix_shell action_execution –>|移行| action_priv_esc action_priv_esc –>|使用| technique_priv_esc action_priv_esc –>|移行| action_persistence action_persistence –>|使用| technique_rc_scripts action_persistence –>|使用| technique_autostart action_persistence –>|使用| technique_hijack action_persistence –>|移行| action_defense_evasion action_defense_evasion –>|使用| technique_rootkit action_defense_evasion –>|使用| technique_thread_hijack action_defense_evasion –>|使用| technique_process_hollow action_defense_evasion –>|移行| action_credential_harvest action_credential_harvest –>|使用| technique_creds_files action_credential_harvest –>|使用| technique_private_keys action_credential_harvest –>|使用| technique_shadow_dump action_credential_harvest –>|使用| technique_cookies action_credential_harvest –>|使用| technique_pam action_credential_harvest –>|移行| action_collection action_collection –>|使用| technique_clipboard action_collection –>|使用| technique_screenshot action_collection –>|移行| action_c2 action_c2 –>|使用| technique_exfil action_c2 –>|可能にする| action_lateral action_lateral –>|使用| technique_remote_exploit

공격 흐름

## 시뮬레이션 실행

전제 조건: 텔레메트리 & 베이스라인 예비 비행 검사가 통과되어야 합니다.

이유: 이 섹션은 탐지 규칙을 트리거하기 위해 설계된 적 기법(TTP)의 정확한 실행을 자세히 설명합니다. 명령어와 서술은 식별된 TTP를 직접 반영해야 하며 탐지 로직에서 예상하는 정확한 텔레메트리를 생성하는 것을 목표로 합니다.

  • 공격 서사 및 명령어:

    1. 1단계 – 페이로드 생성: 공격자는 memfd_create 를 호출하는 최소한의 C 페이로드를 작성하고 익명 인-메모리 실행 파일을 작성하고 간단한 쉘코드(예: execve("/bin/sh", …))를 작성하며, 실행 가능하게 표시하고 그 다음에 execveat.
    2. 을 통해 실행합니다 2단계 – 실시간 컴파일: gcc (규칙에 보이는 지표) 사용하여 공격자는 소스 코드를 디스크에 touch하지 않고 컴파일합니다(출력은 /dev/fd/3).
    3. 으로 리디렉션) 3단계 – 실행 및 주입: memfd_create컴파일된 바이너리는 실행되어 execveat 을 호출하여 메모리 상주 ELF를 실행합니다. 선택적 ptrace 가 사용되어 형제 프로세스에 코드를 주입할 수 있으며, 이는 규칙을 만족시킬 것입니다.
  • 회귀 테스트 스크립트:

    #!/usr/bin/env bash
    #
    # QLNX‑like 파일리스 실행 시뮬레이션
    # memfd_create 및 execveat를 통해 인 메모리 ELF 생성 및 실행
    # 요구 사항: gcc, libcap2-bin (execveat 데모용), 예비 비행의 auditd 규칙.
    
    set -euo pipefail
    
    # 1️⃣ memfd + execveat 동작을 수행하는 C 소스 생성
    cat > /tmp/payload.c <<'EOF'
    #define _GNU_SOURCE
    #include <sys/mman.h>
    #include <sys/syscall.h>
    #include <unistd.h>
    #include <fcntl.h>
    #include <string.h>
    
    int main(void) {
        // 익명 파일 디스크립터(memfd) 생성
        int fd = syscall(SYS_memfd_create, "memfd_payload", MFD_CLOEXEC);
        if (fd == -1) _exit(1);
    
        // 매우 간단한 ELF 바이너리로 just execve /bin/sh
        const unsigned char elf[] = {
            0x7f,0x45,0x4c,0x46,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
            // ... (간결성을 위해 잘랐습니다 - 정적으로 링크된 근소한 /bin/sh ELF)
        };
        write(fd, elf, sizeof(elf));
        // 실행 가능하게 설정
        fchmod(fd, 0755);
    
        // in-memory 바이너리를 실행하기 위해 execveat 사용
        syscall(SYS_execveat, fd, "", NULL, NULL, AT_EMPTY_PATH);
        _exit(0);
    }
    EOF
    
    # 2️⃣ gcc로 컴파일(탐지 규칙에 의해 캡처됩니다)
    gcc -static -o /tmp/payload /tmp/payload.c
    
    # 3️⃣ 악성 바이너리 실행 - execveat가 발생함
    /tmp/payload
    
    # 4️⃣ 정리
    rm -f /tmp/payload /tmp/payload.c
  • 정리 명령어:

    # 잔여 파일 제거 및 잠재적 감시 규칙 해제 (테스트 환경이 일회용인 경우) 
    rm -f /tmp/payload /tmp/payload.c 
    sudo auditctl -d -a always,exit -F arch=b64 -S execveat -k qlnx_execveat 
    sudo auditctl -d -a always,exit -F arch=b64 -S memfd_create -k qlnx_memfd 
    sudo auditctl -d -a always,exit -F arch=b64 -S ptrace -k qlnx_ptrace