위협 인텔리전스

Lazarus의 Contagious Interview 캠페인 변종 분석

Lazarus의 Contagious Interview 캠페인 변종 분석

엔키화이트햇

2025. 1. 20.

개요

북한의 해킹그룹 Lazarus의 Contagious Interview 캠페인을 엔키에서 지속적으로 추적하였다. 해당 캠페인은 23년부터 지속적으로 활동하였으며, 구직자 대상의 합법적인 직업 인터뷰를 가장하여 악성코드를 배포하며 최종적으로 암호화폐를 탈취를 목적으로한다.

하지만, 최근 추적 결과 24년 12월부터 Contagious Interview 캠페인의 변종을 통해 추가적인 악성코드들이 배포되는 정황을 식별하였다. 본 글에서는 해당 피싱 사이트를 통해 악성코드가 배포되고 실행되는 전체 공격 과정을 분석한다.

Contagious Interview 변종

기존 Contagious Interview 캠페인은 구직자를 대상으로 직업 인터뷰를 진행하며 코딩 능력 테스트 등을 이유로 악성코드가 포함된 패키지를 실행하도록 유도하여 초기 침투를 진행하였다. 반면 변종 캠페인에서는 구직자를 대상으로 직업 인터뷰를 진행한다는 점은 같지만 비디오 인터뷰 사이트에서 “카메라에 접근할 수 없다”는 알림과 함께 악성코드를 다운로드하는 스크립트를 실행하도록 유도하는 방식으로 변경되었다.

추가적으로 초기 침투 과정 뿐 아니라 공격에 사용된 악성코드에서도 많은 변화가 나타났다. 기존의 javascript로 작성된 다운로더는 암호화폐 지갑 정보를 탈취하는 기능이 삭제되며 sh파일 혹은 vbs파일로 대체되었다. python으로 작성되어 여러 파일에 기능이 나누어져있던 백도어 악성코드 또한 go언어로 작성된 백도어로 대체되어 소스코드를 직접 컴파일하여 실행하는 형태로 변경된 것을 확인하였다.

공격 과정


Contagious Interview 캠페인의 변종 전체 공격 과정

[ Contagious Interview 캠페인의 변종 전체 공격 과정 ]

  1. 공격자가 피싱 URL 전송, 피해자의 OS에 따라 추가 공격과정 진행

  2. Windows

    2-1. nvidiaupdate.zip 파일을 다운로드하고 압축을 해제한 후 nvidiaupdate 내부의 update.vbs 파일 실행

    2-2. nvidiaupdate 내부의 nvidia.js 파일 실행

    2-3. nvidiadrivers.zip 파일을 다운로드하고 압축을 해제한 후 nvidiadrivers 내부의 update.vbs 파일 실행

    2-4. nvidiadrivers 내부의 gobatch.bat 파일 실행

    2-5. nvidiadrivers 내부의 go언어 백도어 소스코드를 go run 명령어를 통해 실행

  3. macOS

    3-1. ffmpeg.sh 파일을 다운로드 후 실행

    3-2. VCam.zip 파일을 다운로드하고 압축을 해제한 후 vcamservice.sh 실행, ChromeUpdateAlert.app 실행

    3-3. go run 명령어를 통해 go 백도어 실행

    3-4. ChromUpdateAlert.app 이 마이크의 접근 권한을 요구하는 척 하여 사용자 비밀번호를 탈취

  4. 최종적으로 go로 작성된 백도어의 소스코드가 컴파일 되어 실행됨

상세분석 1. Send phishing URL

공격자들은 암호 화폐 관련 기업의 인사 담당자로 위장하여 웹사이트를 통해 인터뷰를 진행한다는 명목으로 피싱 사이트의 url을 공격 대상에게 전송한다. 피싱사이트의 특징으로는 해당 URL에 접속하면 실제 비디오 인터뷰를 지원하는 서비스인 “Willo”를 가장한 “Video Interviewing” 사이트가 출력된다.

Willo 서비스 위장 웹 사이트 화면

[ Willo 서비스 위장 웹 사이트 화면 ]

인터뷰 과정

  • 인터뷰(질문)가 진행되는 동안 3번째 질문에서 비디오 촬영이 요구된다.

[ 인터뷰 진행 과정 중 비디오 촬영 요구 ]

  • 카메라 사용이 막혀있다는 메시지가 출력된다.

  • 문제를 해결하기 위해 사용자가 “How to fix”를 클릭하도록 유도된다.

오류 해결 문구로 공격자는 사용자의 클릭 유도

[ 오류 해결 문구로 공격자는 사용자의 클릭 유도 ]

팝업창의 내용을 읽어보면 cmd창을 열어 주어진 curl 명령어를 입력하도록 한다. 명령어는 여러 환경의 피해자를 감염시키기 위한 목적으로 Windows용과 macOS용 2가지가 존재한다. 이때 curl을 통해 다운로드 받지 않으면 더미 파일이 다운로드 된다.

상세분석 2. Windows

Windows용 명령어는 nvidiaupdate.zip 파일을 다운로드 받아 압축을 풀고 update.vbs 파일을 실행한다.

nvidiaupdate.zip 파일에는 update.vbs, nvidia.js와 자바스크립트 파일을 실행시키기 위한 node.exe 등의 파일이 압축되어 있다.

2-1. download nvidiaupdate and execute update.vbs

update.vbs 파일은 현재 디렉토리를 기준으로 nvidia.js 파일을 Node.js로 실행한다.

Set objShell = CreateObject("WScript.Shell")

' Get the current directory
currentDir = CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName)
objShell.CurrentDirectory = currentDir


' Run the Node.js script
objShell.Run "cmd /c node nvidia.js", 0, False

2-2. execute nvidia.js

nvidia.js 파일은 hxxps://api[.]camera-drive[.]org/nvidiawin[.]update에서 파일을 다운로드 받아 nvidiadrivers.zip으로 저장한다. 이후 nvidiadrivers.zip 파일의 압축을 풀고 update.vbs 파일을 실행한다. 다운로드 및 실행을 완료하면 지속성 확보를 위해 아래와 같이 레지스트리 키를 설정한다.

2-3. download nvidiadrivers and execute update.vbs

nvidiadrivers.zip 파일에는 update.vbs, gobatch.bat 파일과 go언어로 작성된 백도어의 소스 코드, go언어를 컴파일 및 실행시키기 위한 go.exe 등의 파일들이 압축되어있다.

파일 압축

2-4. execute gobatch.bat

update.vbs 파일은 gobatch.bat 파일을 실행하여 GO 백도어를 컴파일하고 실행한다.

Dim objShell
Set objShell = CreateObject("WScript.Shell")

' Get the current directory
currentDir = CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName)

' Specify the batch file name (change this to your .bat file name)
batchFileName = "gobatch.bat"

' Combine current directory and batch file name
expectedFile = currentDir & "\" & batchFileName


' Run the batch file silently
objShell.Run "cmd.exe /c """ & expectedFile & """", 0, False

2-5. execute go backdoor

go run 명령어를 통해 go 소스 코드를 컴파일하여 실행한다. 추가적으로 탐지 회피를 위한 무작위 지연 시간코드가 삽입되어 있다.

@echo off

REM Set the working directory to the folder where this script is located
cd /d %~dp0

REM Step 1: Set the Go project file and delay range
echo Installing Dependencies...

set project_file=app.go
.\bin\go run %project_file%

REM Step 2: Calculate a random delay between 10 to 30 minutes (600 to 1800 seconds)
set /a min_delay=600
set /a max_delay=1200
set /a random_delay=%random% * (%max_delay% - %min_delay% + 1) / 32768 + %min_delay%

REM Step 3: Display the selected delay time
echo Waiting for %random_delay% seconds before running the Go project...
timeout /t %random_delay% /nobreak >nul

REM Step 4: Run the Go project

REM End of script
exit /b

상세분석 3. MacOS

3-1. download and execute ffmpeg.sh

ffmpeg.sh 파일은 실행된 기기의 CPU 아키텍쳐에 따라 다른 url을 사용하여 다음 단계의 악성코드를 다운로드 한다.

download and execute ffmpeg.sh

다운로드한 파일은/var/tmp/VCam.zip으로 저장된다. 다운로드 완료된 파일은 압축 해제 후 vcamservice.sh 파일을 실행한다. 이후 지속성 확보를 위해 ~/Library/LaunchAgents/com.vcam.plist 경로에 아래와 같은 파일을 생성하고 시작 프로그램으로 등록한다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.vcam</string>
    <key>ProgramArguments</key>
    <array>
        <string>/var/tmp/VCam/vcamservice.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <false/>
</dict>
</plist>

마지막으로 ChromeUpdateAlert.app을 실행하고 /var/tmp/VCam.zip파일을 삭제한다.

3-2. download VCam and execute vcamservice.sh, ChromeUpdateAlert.app

VCam.zip 파일에는 vcamservice.sh, ChromeUpdateAlert.app과 go언어로 작성된 백도어의 소스 코드, go언어를 컴파일 및 실행시키기 위한 go 등의 파일들이 압축되어있다.

압축파일 리스트

3-3. execute go backdoor

vcamservice.sh파일은 go run 명령어를 통해 go 소스 코드를 컴파일하여 실행한다.

#!/bin/bash

# Set the working directory to the folder where this script is located
cd "$(dirname "$0")"

echo "Installing Dependencies..."

project_file="app.go"
./bin/go run "$project_file"

exit 0

3-4. upload password

12버전 이상의 macOS에서만 실행되는 악성코드로 Chrome을 사칭하여 비밀번호를 탈취한다.

실행 시 아래와 같이 Google Chrome이 마이크 권한을 요청한다는 메시지가 나타난다.

마이크 권한 요청 화면

[ 마이크 권한 요청 화면 ]

이후 인증이 필요하다며 비밀번호를 요구한다.

비밀번호 요구화면

[ 비밀번호 요구 화면 ]

입력된 비밀번호는 dropbox api를 통해 클라우드 서비스에 password.txt 파일로 업로드된다.

입력된 비밀번호 탈취 코드

[입력된 비밀번호 탈취 코드 ]

업로드에 사용되는 dropbox 토큰은 하드 코딩되어 있다.

dropbox 토큰 정보

[ dropbox 토큰 정보 ]

상세분석 4. Command and control

gobatch.bat 파일 혹은 vcamservice.sh 파일을 통해 컴파일 및 실행되는 백도어로 컴파일된 바이너리가 아닌 소스 코드가 다운로드되는 특징이 있다. 백도어의 C&C 서버 주소는 평문으로 하드코딩 되어있으며 주석으로 hxxps://api[.]jz-aws[.]info/public/images/ 와 같은 url이 추가적으로 적혀있다.

[ 순서대로 하드코딩된 C&C서버 URL(주석), C&C 서버 주소 IP, 테스트 IP(주석) ]

http post 요청을 보내 C&C 서버에 접속하며 통신에서 모든 메시지는 RC4로 암호화 되어 아래와 같은 구조를 가진다.

  • [MD5sum][RC4EncryptedMsg][128ByteRC4Key]

처음 C&C 서버에 접속할 때에는 유저 이름, 호스트, OS 등의 정보를 함께 전송한다.

C&C 서버에서 전송한 http 응답을 RC4로 복호화하고 공백을 기준으로 나누어 메시지 타입에 따라 명령을 수행한다. 메시지 타입는 복호화 된 메시지의 가장 처음에 base64로 인코딩 되어있다.

[ base64 디코드 함수 ]

메시지 타입에 따른 행위는 아래와 같다.

메시지 타입에 따른 행위

마치며

본 글에서는 Lazarus 그룹의 Contagious Interview 캠페인으로 추정되는 피싱 수법과 이를 통해 실행되는 백도어의 동작 원리, 주요 명령 및 C&C 통신 구조를 상세히 분석하였다.

공격자들은 다양한 운영 체제 환경을 겨냥한 정교한 공격 방식을 활용하며, 파일 다운로드, 지속성 확보, 원격 명령 실행 등 체계적인 방법으로 목표 시스템을 장악하려는 의도를 보였다.

이러한 공격은 갈수록 진화하며 더욱 정교하고 은밀한 방식으로 발전할 가능성이 크다. 이에 따라 보안 조직과 기업은 지속적인 모니터링과 분석을 통해 빠르게 대응할 수 있는 보안 체계를 마련해야 할 것이다.

본 글이 끊임없이 변화하는 사이버 위협에 맞서기 위한 방어 전략을 수립하는 데 유용한 참고 자료가 되기를 바란다.

IOC

10e4c74df854f63951facfd589717be18b746befd9099e1d9083f0cb6cf310c3

bfac94bfb53b4c0ac346706b06296353462a26fa3bb09fbfc99e3ca090ec127e

98373befd5fd24ebac29604848e15b3abe8966b2d5e83323a08247f07b5c3d6f

13e7589c778b4b36420ce77145a98b75ba54150ab80ea06a73ad0924e7da7d20

35f27685fbd1b0507106862870bafa5f3a7fc5d9f27dc59fffea18182d67cf35

b951066189461d2acd27b635f3f858be4c94734b81df7e63cc3af0476b90c6dd

b3da2af06b5828d6809614c4c86a5dfa25bad29a605869f94c5d4ecbc4362c3f

a01ebbcc2aa25527ea4a0367c00c780ff563f37f5776629adf928ced6f22ce00

bab567e14eedf6690fbee8ac4ac448a5b663deff14ff5f1fec97bb16eedf027d

b2a4a981ba7cc2add74737957efdfcbd123922653e3bb109aa7e88d70796a340

c56a1897e97a5e52bf1d879eba55541c85f7d8684becc88feb7875d860d91ad9

cee03de4bd70cbd7b6bca498d3cf9c6d07bd0d9d7667c1ba84d7da6e1a4f54d9

hxxp://216[.]74[.]123[.]191:8080

hxxps://api[.]camera-drive[.]org/VCam2[.]update

hxxps://api[.]camera-drive[.]org/VCam1[.]update

hxxps://api[.]camera-drive[.]org/nvidia-ka[.]update

hxxps://api[.]camera-drive[.]org/ffmpeg-ka[.]sh

digitpotalent[.]com

digitptalent[.]com

엔키화이트햇

엔키화이트햇

ENKI Whitehat
ENKI Whitehat

오펜시브 시큐리티 전문 기업, 공격자 관점으로 깊이가 다른 보안을 제시합니다.

오펜시브 시큐리티 전문 기업, 공격자 관점으로 깊이가 다른 보안을 제시합니다.

침해사고 발생 전,
지금 대비하세요

빈틈없는 보안 설계의 시작, NO.1 화이트 해커의 노하우로부터

침해사고 발생 전,
지금 대비하세요

빈틈없는 보안 설계의 시작, NO.1 화이트 해커의 노하우로부터

침해사고 발생 전,
지금 대비하세요

빈틈없는 보안 설계의 시작,
NO.1 화이트 해커의 노하우로부터

공격자 관점의 깊이가 다른 보안을 제시합니다.

Contact

biz@enki.co.kr

02-402-1337

서울특별시 송파구 송파대로 167
(테라타워 B동 1214~1217호)

ENKI Whitehat Co., Ltd.

Copyright © 2024. All rights reserved.

공격자 관점의 깊이가 다른 보안을 제시합니다.

ENKI Whitehat Co., Ltd.

Copyright © 2024. All rights reserved.