世界を動かす技術を、日本語で。

持ち帰りの面接プロジェクトを検査しました。それは一大事業でした。

概要

  • LinkedIn経由のリクルーター から高額案件のDMを受信
  • 課題プロジェクトにマルウェア が仕込まれていることを発見
  • Git hooksやVSCode設定 を悪用した感染手法
  • 攻撃者の手口や痕跡 の詳細な調査
  • 安全なコード受け渡しの重要性 を再認識

リクルーターからのDMと最初の違和感

  • LinkedInのDM でPython開発者向けの 高額案件 を紹介される
  • 月額$10,000~$15,000、リモート・契約社員から正社員化前提の条件提示
  • 初回連絡で給与額を提示 する点に違和感、通常は後出しが多い
  • Y Combinator系スタートアップ 名義だが、選考フローが雑
  • 履歴書提出後、即座に課題送付 という流れに警戒感

課題プロジェクトの解析とマルウェア発見

  • Google Drive経由でzipファイルとPDF課題 を受け取る
  • FastAPI+SQLAlchemy の標準的な構成、requirements.txtも問題なし
  • tree -aコマンドで隠しディレクトリを確認、.git/hooksに多数のフックスクリプト
  • pre-commitフック でOS判定後、外部IPからスクリプトをダウンロードし実行
  • curl/wget経由で二次ペイロードを取得、nohupでバックグラウンド実行

二次・三次ペイロードの挙動

  • tokenlinux.npl→tokenlinux.sh として~/Documentsに配置し、実行権限付与
  • Node.js環境を自動セットアップ、npm installで依存パッケージ導入
  • clipboardy, fs, hardhat等の怪しい依存 を含むpackage.json
  • parser.jsは難読化済み、idパラメータで個別に異なるスクリプト配布
  • crypto資産やクリップボード情報狙い の可能性

他のバリエーションと攻撃者の手口

  • VSCodeの.vscodeフォルダを悪用 し、エディタ起動時に感染するパターンも確認
  • Zavopay等の実在企業名を騙る手口、実際は無関係
  • プロジェクトのcommit履歴を解析、GitHubの公開リポジトリを流用
  • 攻撃者は既存コードにマルウェアを上乗せ、痕跡を最小限に

攻撃インフラと痕跡調査

  • 攻撃者のIPアドレスでNmapスキャン、SSH等のサービスのみ開放
  • 最新バージョンのOpenSSHでOPSEC意識高め
  • 攻撃者アカウントは指摘後に削除

まとめ・教訓

  • 不審な課題やプロジェクトは必ず中身を確認
  • Git hooksやエディタ設定ファイルもチェック
  • 「高額・即決」案件は特に警戒
  • 攻撃者は日々手口を進化、油断禁物
  • 安全なやり取りのためには慎重な行動が必須

参考リンク・追加情報

  • 元リポジトリ: https://github.com/Bgogoi123/personal-finance-service
  • 課題ファイル例: Google Driveコピー
  • 攻撃者IP: 45.61.164.38

おわりに

  • LinkedIn等SNS経由のリクルーター案件には特に注意
  • 怪しい課題やファイルは安易に実行しない
  • 興味深いマルウェアサンプルがあれば情報共有歓迎(ただし自己責任で)
  • セキュリティ意識を高く持ち、被害拡大防止に努めることが重要

Hackerたちの意見

こういうのがどんどん増えていくんだろうな。こいつら、ほんとに下調べしてるみたいだ。気持ち悪いけど、そのスキルにはちょっと敬意を表するわ。結構うまくいくんじゃないかな。

彼らの「スキル」は、もしかしたらどこかのLLMから借りたものかもね。

うん、ちょっと探検してみて楽しかった。CTFチャレンジみたいな感じだったわ(笑)。もしサーバーに脆弱性があったら、もっと面白かっただろうな。

最近見た面白い動画があって、誰かが自分のコンピュータでRed Star OSを動かしてて、詐欺師がWindowsだと思って騙そうとしてるやつ。これとは関係ないけど、面白かったよ。

ハッカーニュースで実際にハッキングに関する投稿がフロントに出ると、いい日だなって思う。

ハッカーニュースは、違うタイプのハッカーについての話だよ。http://www.catb.org/jargon/html/H/hacker.html > 1. プログラム可能なシステムの詳細を探求し、その能力を引き伸ばすのを楽しむ人。ほとんどのユーザーは必要最低限のことだけを学ぶのが好きだけど。RFC1392、インターネットユーザー用語集では、これをこう説明してるよ:システムの内部動作を深く理解することに喜びを感じる人、特にコンピュータやコンピュータネットワークに関して。 > 2. 熱心に(時には執着して)プログラミングをする人、またはプログラミングについて理論を考えるだけでなく、実際にプログラミングを楽しむ人。

被害者のホストOSをチェックして、リモートペイロードを静かに実行するスクリプトを埋め込んだみたい。これ、最近のテーマになってるね。先月も同じような話がフロントページに載ってた。 https://news.ycombinator.com/item?id=48546294

OPもそう言ってるし、同じことを言ってるGoogle検索結果へのリンクも貼ってるよ。

LinkedInが本当に詐欺を防ぎたいなら、現在の雇用をリストするために会社のメールを使った認証を実装すればいいのに。もしそれが負担すぎるなら、少なくともリクルーターが正当性を保つために従わなきゃいけないオプション機能として持っておくべきだよ。

企業のメールを使った認証を導入できるようにしたんだって。2023年にこれを追加したらしいけど、実際にメールで認証する人は少ないから、認証がないからって必ずしも不正ってわけじゃないよね。

余談だけど、なんで生のIPアドレスを使うんだろう?これって「マルウェア」って感じがするよ。少なくとも、lint-checker.comやjenkins-ci-runner.netみたいな偽のドメインを登録すればいいのに。このコードを書いた脅威アクターが見てたら、メモしておいて!もしかして、ドメインレジストラに特定情報を渡したくないのかな?それとも、オンラインでの存在感を最小限にしたいのかもね。

確かに、その通りだね。

Hacker Newsで議論の続きを見る