링크드인 채용 사칭 악성코드 주의! npm install 전에 package.json을 확인하세요.
링크드인(LinkedIn) 채용 담당자를 사칭한 악성코드 유포 시도 발생, GitHub 레포지토리(Repository)를 통해 악성코드 배포
npm install 실행 시, 구글 드라이브(Google Drive)에서 악성 스크립트(Malicious Script)를 다운로드하여 실행하는 5단계 공격
공격자는 구글 문서(Google Docs)를 C2 서버(C2 Server)로 활용, 기업 방화벽(Firewall) 우회 시도
Microsoft는 해당 공격을 북한 연계(North Korean) 해킹 그룹의 소행으로 분석, 유사 사례 보고
npm install --ignore-scripts를 통해 악성 스크립트 실행을 방지, 패키지 설치 전 package.json 검토 권장
악성코드(Malware) 분석: 정교한 공격 기법
본문에서 제시된 악성코드는 npm install 실행 시, 5단계 공격 체인(Attack Chain)을 통해 환경 변수를 탈취한다.
prepare 스크립트(Script)는 app/index.js를 실행, frontController.js를 require
frontController.js는 getGoogleDriveValue() 함수를 호출, 구글 문서(Google Docs)에서 base64 인코딩된 URL을 가져옴
axios.post()를 통해 process.env를 C2 서버로 전송, 공격자는 API 키(API Key) 및 토큰(Token) 획득
new Function.constructor("require", responseData)를 통해 임의의 자바스크립트(JavaScript) 실행
결과적으로 공격자는 fs, child_process, net 모듈(Module)에 접근하여 시스템을 장악한다.
C2 서버(C2 Server)로 구글 문서(Google Docs)를 활용하는 이유
공격자는 구글 문서(Google Docs)를 C2 서버로 활용하여 탐지 회피 및 지속적인 공격을 시도한다.
C2 URL 변경 용이성: 구글 문서 내용만 수정하면 C2 서버 변경 가능, GitHub 커밋(Commit) 불필요
방화벽 우회: 기업 방화벽에서 *.docs.google.com에 대한 아웃바운드 HTTPS(HTTPS) 트래픽(Traffic)을 허용하는 경우가 많음
탐지 회피: C2 URL이 레포지토리(Repository)에 직접 노출되지 않아, 도메인 차단(Domain Blocking) 규칙 회피
이러한 전략은 지속적인 공격(Persistent Attack)을 가능하게 하며, 탐지 및 대응을 어렵게 만든다.
악성코드(Malware) 은폐를 위한 위장술
공격자는 코드 분석(Code Analysis)을 방해하기 위해 다양한 위장 기법을 사용한다.
check-environment.js: Gitpod, GitHub Codespaces, Windows-11 VS Code 환경에서 실행 거부, 분석 환경(Analysis Environment) 회피
npm install.cmd: --ignore-scripts 옵션(Option)을 사용하지 않도록 유도, 안전한 설치 경로(Install Path) 회피
app/test/index.js: Mocha/Chai 테스트 코드(Test Code) 주석 처리, 연구자의 주의 분산
$null 파일: npm warning 출력, cmd.exe 환경에서 실행된 흔적(Trace) 남김
이러한 기법들은 악성코드 분석가의 접근을 어렵게 만들고, 실제 악성 행위(Malicious Behavior)를 숨기는 데 기여한다.
npm install --ignore-scripts: 악성코드(Malware) 방어의 핵심
본문에서는 npm install --ignore-scripts를 통해 악성코드 실행을 방지하는 방법을 제시한다.
lifecycle hook(Lifecycle Hook) 비활성화: prepare, postinstall, preinstall 스크립트 실행 방지
패키지(Package) 검토: package.json 파일에서 스크립트(Script) 내용 확인
npm rebuild: 필요한 경우, 개별 패키지(Package)에 대해 수동으로 rebuild 실행
이 방법은 npm 패키지(Package) 보안 취약점(Vulnerability)으로부터 보호하는 기본적인 방어 수단이며, 개발 환경(Development Environment)을 안전하게 유지하는 데 필수적이다.
채용 사칭 공격(Recruitment Scam)의 특징
본문은 채용 담당자 사칭(Impersonation)을 통한 악성코드 유포 공격의 특징을 분석한다.
LinkedIn을 통한 접근: Web3/AI 엔지니어(Engineer) 채용 제안, 그럴듯한 기술 스택(Tech Stack) 제시
코드 검토 요청: 기술 면접 전 코드베이스(Codebase) 검토 요청, GitHub 레포지토리(Repository) 링크 제공
북한 연계(North Korean) 공격: Microsoft, Mandiant 등에서 해당 공격을 북한 연계 해킹 그룹의 소행으로 분석
피해 예방: 의심스러운 링크(Link) 클릭 금지, npm install --ignore-scripts 사용, 계정 정보(Account Information) 변경
결과적으로, 개발자들은 채용 제안에 대한 경계심을 늦추지 않고, 보안 의식을 강화해야 한다.