SysAdminDoc/npp-sc-scanner
GitHub: SysAdminDoc/npp-sc-scanner
针对 Notepad++ 供应链攻击(Lotus Blossom APT)的 PowerShell IOC 扫描与一键修复工具,支持 RMM 批量部署与 GUI 交互式处置。
Stars: 0 | Forks: 0
# Notepad++ 供应链 IOC 扫描器
  
针对归因于中国 APT 组织 **Lotus Blossom**(又名 Billbug、Raspberry Typhoon、Spring Dragon)的 **Notepad++ 供应链攻击事件**(2025年6月至12月)的综合 IOC 扫描器。
该攻击通过入侵托管提供商劫持了 WinGUp 更新机制,从而向目标组织投递 **Chrysalis 后门**、Cobalt Strike 信标和 Metasploit 载荷。

## 快速开始
**单行运行**(在 PowerShell 中以管理员身份运行):
```
irm https://raw.githubusercontent.com/SysAdminDoc/npp-sc-scanner/refs/heads/main/NppScanner-GUI.ps1 | iex
```
## 脚本
| 脚本 | 描述 |
|--------|-------------|
| `Check-NotepadPlusPlusIOC.ps1` | **CLI 扫描器** - 非常适合 RMM 部署(ConnectWise、Datto、NinjaRMM 等) |
| `Check-NotepadPlusPlusIOC-GUI.ps1` | **GUI 扫描器和修复工具** - 供技术人员使用的交互式 WPF 界面 |
## 功能
### 检测范围
- **Notepad++ 版本分析** - 8.8.9 之前版本 = 存在漏洞,8.9.1 之前版本 = 已部分修补
- **恶意软件暂存目录** - `%APPDATA%\ProShow`、`%APPDATA%\Bluetooth`
- **隐藏属性检测** - Chrysalis NSIS 安装程序会设置 Bluetooth 目录的隐藏属性
- **41 个文件哈希** - 25 个 SHA-1(Kaspersky)+ 16 个 SHA-256(Rapid7)
- **8 个 C2 IP 地址** - 恶意更新主机和 C2 服务器
- **6 个 C2 域名** - 包括 api.skycloudcenter.com、wiresguard.com
- **Cobalt Strike 产物** - 位于 `ProgramData\USOShared` 中
- **持久化机制** - 注册表 Run 键(包括 WOW6432Node)、服务、计划任务
- **正在运行的进程** - BluetoothService、ProShow、ConsoleApplication2、伪造的 svchost
- **网络连接** - 活动的 C2 连接、DNS 缓存条目
- **GUP.exe 监控** - 连接到非合法更新源
- **Hosts 文件篡改** - notepad-plus-plus.org 重定向
- **Chrysalis 互斥体** - `Global\Jdhfv_1.0.1`
- **AutoUpdate.exe** - 并非合法的 Notepad++ 文件
### RMM/MSP 功能 (CLI)
- **SYSTEM 账户支持** - 以 NT AUTHORITY\SYSTEM 身份运行时,自动枚举所有用户配置文件
- **退出代码** - `0` = 干净,`1` = 发现 IOC(用于 RMM 告警)
- **导出到文件** - `-ExportPath` 参数用于合规性文档记录
- **HKU 注册表访问** - 以 SYSTEM 身份运行时,检查 HKEY_USERS 中加载的用户配置单元
### GUI 功能
- **深色主题 WPF 界面** - 专业外观
- **实时扫描** - 进度条和状态更新
- **一键修复** - 终止进程、删除文件、清理注册表、阻止 C2 IP
- **导出/复制报告** - 支持文本和 CSV 格式
- **来源链接** - 指向 Kaspersky、Rapid7 和官方披露信息的直接链接
## 用法
### CLI (RMM 部署)
```
# 基础扫描
.\Check-NotepadPlusPlusIOC.ps1
# 导出报告
.\Check-NotepadPlusPlusIOC.ps1 -ExportPath "C:\Reports\npp-scan.txt"
# RMM 与 exit code check 集成
.\Check-NotepadPlusPlusIOC.ps1 -ExportPath "C:\Logs\npp-scan.txt"
if ($LASTEXITCODE -eq 1) {
# Alert: IOCs detected
}
```
### GUI
```
.\Check-NotepadPlusPlusIOC-GUI.ps1
```
或右键点击 >“使用 PowerShell 运行”
## RMM 部署说明
通过 RMM 工具(ConnectWise Automate、Datto RMM、NinjaRMM 等)部署时,脚本将以 `NT AUTHORITY\SYSTEM` 身份运行。版本 2.3 及以上通过以下方式自动处理此问题:
1. 检测 SYSTEM 执行上下文
2. 通过 `HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList` 枚举所有用户配置文件
3. 检查每个用户的 `%APPDATA%` 和 `%LOCALAPPDATA%` 路径
4. 通过 `HKU:\{SID}\...` 而不是 `HKCU:` 访问用户注册表配置单元
**以前的版本(2.3 之前)在以 SYSTEM 身份运行时会漏掉用户配置文件 IOC。**
## 误报说明
### `C:\ProgramData\USOShared`
这是一个**合法的 Windows Update 目录**(更新会话协调器)。扫描程序仅在此目录包含特定的恶意产物(`svchost.exe`、`conf.c`、`libtcc.dll`)时才对其进行标记,而不是因其仅仅存在就标记。
### DNS 缓存中的 `temp.sh`
`temp.sh` 是一项合法的匿名文件共享服务,在此攻击活动中被用于数据外发。开发人员工作站上对 `temp.sh` 的 DNS 缓存命中可能是误报。在采取行动之前,请调查相关上下文。
### `%APPDATA%\Adobe\Scripts`
这可能是一个合法的 Adobe 目录。仅当它包含 `alien.ini` 恶意软件配置时才对其进行标记。
## 修复(仅限 GUI)
GUI 提供自动修复功能,它可以:
1. **终止恶意进程** - BluetoothService、ProShow、ConsoleApplication2、伪造的 svchost
2. **删除恶意软件目录** - `%APPDATA%\ProShow`、`%APPDATA%\Bluetooth`
3. **删除特定的恶意软件文件** - 包括合法目录中的文件
4. **清理注册表持久化** - 包括 WOW6432Node 在内的 Run 键
5. **移除 BluetoothService 服务** - 如果存在
6. **取消注册恶意计划任务**
7. **创建防火墙规则** - 阻止与所有已知 C2 IP 的出站连接(需要提权)
## 修复后步骤
1. 通过从 [GitHub releases](https://github.com/notepad-plus-plus/notepad-plus-plus/releases) 手动下载,将 Notepad++ 更新至 v8.9.1+ 版本
2. 通过防火墙阻止 `gup.exe` 的 Internet 访问,或通过内部存储库路由更新
3. 轮换受影响机器上的凭证
4. 检查其他安装了 Notepad++ 的机器
5. 查看日志以寻找横向移动指标
6. 如果确认遭到入侵,请联络事件响应团队
## 来源
- **Kaspersky GReAT**: [Notepad++ 供应链攻击分析](https://securelist.com/notepad-supply-chain-attack/118708/)
- **Rapid7 Labs**: [Chrysalis 后门深度剖析](https://www.rapid7.com/blog/post/tr-chrysalis-backdoor-dive-into-lotus-blossoms-toolkit/)
- **Notepad++ 官方**: [劫持事件信息更新](https://notepad-plus-plus.org/news/hijacked-incident-info-update/)
## 要求
- PowerShell 5.1+(内置于 Windows 10/11、Server 2016+ 中)
- Windows 10/11 或 Windows Server 2016+
- GUI 需要 WPF(.NET Framework,内置于 Windows 中)
- 建议使用管理员/提权权限以获得完整的检测能力
## 版本历史
| 版本 | 日期 | 更改内容 |
|---------|------|---------|
| 2.3 | 2026-02-04 | 用于 RMM 部署的 SYSTEM 账户配置文件枚举;WOW6432Node 注册表覆盖;隐藏属性检测;退出代码;temp.sh 误报说明;错误修复 |
| 2.2 | 2026-02-04 | USOShared 误报修复;Adobe\Scripts 智能检测 |
| 2.1 | 2026-02-03 | 隐藏的 Bluetooth 目录检测 |
| 2.0 | 2026-02-02 | GUI 修复工具;全面的 IOC 覆盖 |
| 1.0 | 2026-02-01 | 初始版本发布
标签:AI合规, IPv6, IP 地址批量处理, Libemu, PowerShell, Web扫描, 威胁情报, 库, 应急响应, 开发者工具, 文档安全, 网络信息收集