Git 저장소 악성코드, 채용 사칭으로 배포!

by DD
3주 전
조회수 2

채용 사칭을 통해 악성 코드가 포함된 Git 저장소를 배포하는 공격이 발생함

Git hook을 악용하여 git checkout/commit 명령어 실행 시 악성 스크립트를 실행함

악성 스크립트는 Node.js 기반의 인포스틸러(Infostealer)를 설치하고 실행함

파일 시스템 탐색, 원격 제어, 클립보드 감시 등 다양한 기능을 수행하며 정보를 탈취함

Git Hook을 이용한 악성코드 주입

공격자는 Git hook(Git Hook) 기능을 악용하여 악성 코드를 주입했다. 특히, `post-checkout` hook을 사용하여 `git checkout` 또는 `git commit` 명령어가 실행될 때마다 악성 스크립트가 실행되도록 설정했다. 이 스크립트는 운영체제(OS)를 확인하고, OS에 맞는 페이로드를 다운로드하여 실행한다. 악성 Git 저장소(Malicious Git Repository)를 다운로드하는 순간부터 이미 시스템이 위험에 노출되는 것이다.

악성코드의 단계별 분석

악성코드는 크게 세 단계로 구성된다. 첫 번째 단계는 Git hook을 통해 실행되는 쉘 스크립트로, OS에 따라 적절한 페이로드를 다운로드한다. 두 번째 단계는 다운로드된 스크립트가 Node.js 환경을 설정하고, 악성 JavaScript 페이로드를 실행한다. 마지막 단계는 인포스틸러(Infostealer)로, 파일 시스템을 탐색하고, 원격 제어 기능을 수행하며, 클립보드 내용을 감시하여 정보를 탈취한다.

난독화 기법과 정보 탈취

악성 JavaScript 페이로드는 다양한 난독화 기법을 사용하여 분석을 어렵게 만든다. 특히, 커스텀 Base64 인코딩(Custom Base64 Encoding)RC4 스타일의 복호화(RC4-style Decryption)를 사용하여 문자열을 숨기고, 런타임에 동적으로 코드를 생성한다. 이로 인해, 공격자는 파일 업로드, 원격 제어, 클립보드 감시를 통해 민감한 정보를 탈취한다.

악성코드 탐지 및 예방 방법

악성코드 감염 여부를 탐지하기 위해서는 `/tmp/pid.2677.*.lock` 패턴의 임시 파일 존재 여부, 8085, 8086, 8087 포트에 대한 연결 시도를 확인해야 한다. 또한, `--max-old-space-size=4096 --no-warnings` 인자를 사용하는 Node.js 프로세스 실행 여부도 점검해야 한다. 데이터 미저장 정책(Zero-Retention Policy)을 통해 잠재적 피해를 최소화하고, 출처가 불분명한 Git 저장소는 다운로드하지 않는 것이 중요하다.

Be careful with your Git: Investigating malware spreading through Git repositories