SOC Prime Bias: 중간

29 Jan 2026 15:23 UTC

PyRAT 코드: 파이썬 기반 RAT의 내부

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon 팔로우
PyRAT 코드: 파이썬 기반 RAT의 내부
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

이 기사는 PyInstaller를 사용하여 ELF 바이너리로 패키지된 Python 기반 원격 접근 트로이 목마인 PyRAT를 다룹니다. 이 프로그램은 Linux와 Windows 모두에서 실행되며, 암호화되지 않은 HTTP를 통해 C2 서버와 통신하고, 명령 실행, 파일 유출, 스크린샷 캡처, 자체 삭제 루틴을 지원합니다. 지속성은 Linux에서는 XDG autostart를 통해, Windows에서는 실행 레지스트리 키를 통해 구현됩니다. 보고서는 이 도구가 얼마나 가볍고 사이버 범죄자들에게 얼마나 쉽게 전용될 수 있는지를 강조합니다.

조사

연구자들은 pyinstxtractor로 내장된 Python 바이트코드를 추출하고 모듈을 디컴파일하여 호스트 지문 생성, UID 생성, 스레드 관리, C2 조정을 수행하는 기본 Agent 클래스를 식별했습니다. 정적 분석을 통해 주요 가져오기, 파일 이름, 레지스트리 상호작용, 비콘에 사용되는 HTTP POST 엔드포인트를 표면화했습니다. 행동 테스트는 지속성 생성, 명령 실행, 파일 열거, 업로드/다운로드 작업, ZIP 아카이브 생성, 스크린샷 캡처 및 선택적 유물 정리를 포함한 전체 워크플로를 보여주었습니다.

완화

사용자 프로필에서 생성된 의심스러운 자동 시작 .desktop 파일 및 익숙하지 않은 실행 파일 이름을 사용하는 HKCURun 레지스트리 키의 추가 사항을 모니터링하십시오. 네트워크 레이어에서는 /api/{uid}/hello 엔드포인트를 대상으로 하는 미지의 호스트로의 HTTP POST 트래픽을 주시하십시오. 엔드포인트에서는 내장된 Python 콘텐츠와 비정상적인 프로세스 동작, 예를 들어 잦은 하위 프로세스 실행을 포함하는 알려지지 않은 ELF 바이너리를 플래그로 설정하십시오.

응답

탐지된 경우, 시스템을 격리하고 ELF 샘플 및 관련 .desktop 파일을 수집하고 관련된 레지스트리 상태를 보존하십시오. 포렌식의 일부로 UID, C2 주소 및 실행 중 전송된 파일을 추출하십시오. 식별된 C2 인프라를 차단하고 지속성을 제거하며 완전한 정리를 완료하십시오. 노출되었을 수도 있는 계정의 자격 증명을 교체하십시오.

공격 흐름

시뮬레이션 실행

전제 조건: 텔레메트리 및 기준 사전 비행 점검이 통과해야 합니다.

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

  • 공격 서술 및 명령어:

    공격자는 일반 사용자에 대한 SSH 자격 증명을 탈취했습니다. 로그인 후, 그들은 land에서 살아남기 스크립트를 실행합니다.

    1. 악성 ELF 페이로드를 작성합니다 (agent-svc.pyc)는 사용자의 홈 디렉토리에 Python 바이트코드 파일로 위장하여 저장되며 실제로는 ELF 바이너리입니다.
    2. 마스킹된 Debian 패키지 도구를 복사합니다 칭하여 dpkgn 로 이동 /usr/local/bin에 배치하고, 실행 권한을 부여합니다. 이 도구는 ELF 페이로드를 단순히 실행하는 얇은 래퍼에 불과합니다.
    3. 자동 시작 데스크탑 항목을 설치합니다 (dpkgn.desktop)은 ~/.config/autostart 에 설치하여 페이로드가 모든 그래픽 세션 시작 시 실행되도록 합니다.
    4. 적절한 권한을 설정합니다 즉각적인 의심을 피하기 위해.

    결합된 파일 이벤트(agent-svc.pyc and dpkgn) 규칙의 첫 번째 조건을 충족시키며, .desktop 파일은 두 번째 조건을 충족시킵니다.

  • 회귀 테스트 스크립트:

    #!/usr/bin/env bash
    set -euo pipefail
    
    # 1. 악성 ELF를 .pyc로 위장하여 배포
    MALWARE_PATH="$HOME/agent-svc.pyc"
    echo "가짜 ELF 페이로드(더미 바이너리) 생성 중 ..."
    dd if=/dev/zero bs=1 count=1024 of="$MALWARE_PATH" status=none
    chmod +x "$MALWARE_PATH"
    
    # 2. dpkgn이라는 가짜 Debian 도구 배포
    FAKE_TOOL="/usr/local/bin/dpkgn"
    echo "#!/usr/bin/env bash" | sudo tee "$FAKE_TOOL" > /dev/null
    echo "exec "$MALWARE_PATH" "$@"" | sudo tee -a "$FAKE_TOOL" > /dev/null
    sudo chmod +x "$FAKE_TOOL"
    
    # 3. 자동 시작 데스크탑 항목 생성
    AUTOSTART_DIR="$HOME/.config/autostart"
    mkdir -p "$AUTOSTART_DIR"
    DESKTOP_FILE="$AUTOSTART_DIR/dpkgn.desktop"
    cat > "$DESKTOP_FILE" <<EOF
    [Desktop Entry]
    Type=Application
    Exec=$FAKE_TOOL
    Hidden=false
    NoDisplay=false
    X-GNOME-Autostart-enabled=true
    Name=Package Manager
    Comment=System Update Service
    EOF
    
    echo "PyRAT 지속성 아티팩트 배포됨."
  • 정리 명령:

    #!/usr/bin/env bash
    set -euo pipefail
    
    # 악성 ELF 제거
    rm -f "$HOME/agent-svc.pyc"
    
    # 가짜 툴 제거
    sudo rm -f /usr/local/bin/dpkgn
    
    # 자동 시작 항목 제거
    rm -f "$HOME/.config/autostart/dpkgn.desktop"
    
    echo "정리 완료."