전염성 있는 인터뷰: 가짜 채용 제안이 악성코드를 전달하는 방식

현대 채용 시장에서 LinkedIn은 리크루터와 전문가 모두에게 주요한 활동 영역이 되었습니다. 그러나 이러한 개방성은 사이버 범죄자들에게 수익성 높은 기회를 제공했습니다. 개발자 ashishb의 최근 사례에 따르면 충격적인 트렌드가 드러났습니다. 공격자들이 리크루터나 창업자로 위장하여 숙련된 엔지니어들을 "기술 고문(technical advisor)" 역할로 유인한 뒤, 인터뷰 과정을 정교한 악성코드 전달 메커니즘으로 사용하고 있습니다.

이것은 단순한 피싱 링크가 아닙니다. 개발자의 전문적 신뢰와 호기심을 이용해 전통적인 보안 경계를 우회하는 표적형 사회 공학적 공격입니다.

"기술 고문" 사기의 구조

이 공격 패턴은 페이로드를 전달하기 전 신뢰를 쌓기 위해 설계된 일관된 시나리오를 따릅니다. 두 건의 별도 사례에서 피해자들은 LinkedIn을 통해 프로젝트의 기술 고문으로 합류하라는 제안을 받았습니다. 프로세스는 일반적으로 세 단계로 진행됩니다:

  1. 미끼(The Hook): 높은 지위의 제안(예: Web3 프로젝트 고문)을 가진 전문적인 프로필이 연락을 취합니다. 이는 대상자의 전문 지식과 자존심을 자극합니다.
  2. 검증(The Validation): 공격자는 미팅을 잡고, 프로젝트가 "실제"임을 증명하기 위해 Figma 목업을 공유하며 정당성을 확보합니다.
  3. 페이로드(The Payload): 공격자는 코드 저장소(GitHub 또는 Bitbucket) 링크를 공유하며, 후보자에게 코드를 "평가"하거나 라이브 화면 공유 중에 피드백을 제공하기 위해 로컬에 저장소를 클론하고 실행할 것을 요구합니다.

기술적 분석: 악성코드가 작동하는 방식

개발자가 저장소를 클론하면, 공격자들은 사용자가 명시적으로 "start" 명령어를 실행하지 않고도 악성코드가 실행되도록 여러 벡터를 사용합니다.

벡터 1: npm install 트리거

많은 개발자가 프로젝트 설정을 위해 본능적으로 npm install을 실행합니다. 공격자들은 package.jsonprepare 라이프사이클 스크립트를 악용합니다. "prepare": "node server/server.js"를 추가함으로써, 의존성이 설치되는 즉시 악성코드가 실행되어 사용자가 수동으로 애플리케이션을 시작할 필요가 없게 만듭니다.

벡터 2: VS Code 자동 실행

더욱 교활한 방법 중 하나는 .vscode/tasks.json 파일을 이용하는 것입니다. 공격자는 "runOn": "folderOpen" 설정을 통해 작업을 구성할 수 있습니다. 개발자가 VS Code에서 폴더를 열면, 에디터는 원격 서버(C2)에서 악성 스크립트를 다운로드하고 실행하는 curl 또는 wget 요청과 같은 셸 명령어를 자동으로 실행합니다.

벡터 3: 원격 코드 실행(RCE) 및 데이터 유출

초기 스크립트가 실행되면 악성코드는 일반적으로 백도어를 구축합니다. 분석된 사례에서 코드는 다음과 같은 작업을 수행했습니다:

  • 환경 변수 유출: 악성코드는 process.env를 읽어 모든 비밀 정보(AWS 키, Stripe 키, JWT 비밀 키 등)를 Vercel 호스팅 API로 POST 전송합니다.
  • 동적 페이로드 로딩: 서버는 명령 및 제어(C2) 서버와 통신하며, 전달받은 문자열을 new Function() 또는 eval()을 사용하여 실행함으로써 공격자가 피해자의 컴퓨터에서 실시간으로 임의의 코드를 실행할 수 있게 합니다.

위험 신호 및 방어 전략

이러한 사기를 식별하려면 기술적 회의론과 사회적 인식이 결합되어야 합니다.

사회적 위험 신호

  • "Web3" 미끼: 커뮤니티에서 언급되었듯이, "Web3 기술 고문" 제안은 현재 고위험 지표입니다. 이 분야는 암호화폐를 탈취하기 위해 국가 지원 행위자(예: Lazarus Group)의 표적이 되는 경우가 빈번하기 때문입니다.
  • 형식 미비: NDA에 서명하거나 조직에 정식으로 온보딩되기 전에 코드 실행을 요구하는 사람은 경계하십시오.

기술적 보호 조치

기기를 보호하려면 타사 코드에 대해 "제로 트러스트(Zero Trust)" 접근 방식을 채택하십시오:

  • 클라우드 IDE 사용: GitHub Codespaces와 같은 도구는 로컬 OS를 위험에 빠뜨리지 않고 코드를 검사할 수 있는 일회성 격리 환경을 제공합니다.
  • 모든 것을 샌드박스화: 호스트 머신에서 npm install을 실행하거나 바이너리를 실행하지 마십시오. Docker 컨테이너나 전용 가상 머신(VM)을 사용하여 실행 환경을 격리하십시오.
  • 설치 전 분석: 설치 명령을 실행하기 전에 package.json에서 의심스러운 라이프사이클 스크립트(preinstall, postinstall, prepare)를 검사하고 비정상적인 .vscode 설정을 확인하십시오.

공격자들이 점점 더 정교해짐에 따라, 정당한 기술 평가와 보안 침해 사이의 경계가 계속해서 모호해지고 있습니다. 최선의 방어는 규율 있는 워크플로우를 갖추는 것입니다. 안전하고 격리된 환경에서 증명되기 전까지는 모든 검증되지 않은 외부 코드를 악성으로 간주하십시오.

Sources