가짜 면접, 개발자 시스템을 노리는 백도어 공격!
가짜 채용 면접을 통해 개발자 시스템에 백도어를 설치하는 악성코드 공격이 발생함
Next.js 프로젝트 및 기술 평가 자료로 위장한 악성 저장소를 통해 공격이 시작됨
VS Code 자동화, 빌드 타임 실행, 서버 시작 등 개발 환경을 악용하는 것이 특징임
.env 파일, GitHub 토큰, 데이터베이스 비밀번호 등 민감 정보 유출 위험이 존재함
개발 환경을 노린 공격 경로 분석
공격은 VS Code 워크스페이스 자동화(VS Code Workspace Automation), 빌드 타임 실행(Build-time Execution), 서버 시작(Server Startup) 등 개발자의 일상적인 작업 흐름을 악용한다. 특히, `.vscode/tasks.json` 설정, `jquery.min.js` 변조, `.env` 파일 내 base64 인코딩된 엔드포인트 사용 등 다양한 경로를 통해 백도어를 설치한다. 개발 환경에 대한 이해를 바탕으로 공격 벡터를 분석해야 한다.
백도어 설치 및 C2 시스템 작동 방식
공격은 2단계 C2(Command and Control) 시스템을 통해 이루어진다. Stage 1은 가벼운 등록 시스템(Lightweight Registrar)으로, `instanceId`를 획득한다. Stage 2는 지속적인 컨트롤러(Persistent Controller)로 업그레이드되어, `messages[]` 배열을 통해 JavaScript 작업을 수신하고, STDIN을 통해 Node에 코드를 파이핑하여 실행한다. C2 인프라(C2 Infrastructure)에 대한 이해는 방어 전략 수립에 필수적이다.
데이터 미저장 정책(Zero-Retention Policy) 기반의 보안 강화
공격으로 인해 자격 증명 탈취(Credential Theft), 세션 탈취(Session Theft), 디렉토리 탐색(Directory Browsing), 파일 업로드(File Upload) 등 다양한 정보 유출이 발생할 수 있다. 개발자는 데이터 미저장 정책(Zero-Retention Policy)을 통해 민감 정보를 보호하고, Microsoft Defender 공격 표면 감소 규칙(Microsoft Defender Attack Surface Reduction Rules)을 활성화하여 악성 스크립트 실행을 차단해야 한다.
공격 지표(IOC) 및 예방 전략
공격에 사용된 도메인(Domain), IP 주소(IP Address), 엔드포인트(Endpoint) 등의 IOC(Indicators of Compromise)를 파악하고, Vercel.app 도메인 및 C2 IP로의 반복적인 아웃바운드 연결을 감지해야 한다. 또한, 알 수 없는 프로젝트에 대한 VS Code 워크스페이스 신뢰(VS Code Workspace Trust) 및 제한 모드(Restricted Mode)를 활성화하고, 공식 채널을 통해 채용 제안을 확인하는 등 예방 조치를 취해야 한다.