686f6c61/process-cloak

GitHub: 686f6c61/process-cloak

一款通过将系统运行进程重命名为合法系统服务名称,来规避基于进程名称扫描检测的网络安全防御工具。

Stars: 0 | Forks: 0

# process-cloak 一款用于伪装操作系统正在运行的进程的网络安全防御工具。某些软件会通过将活动进程的名称与已知程序的黑名单进行比对,来对计算机上打开的应用程序进行盘点。process-cloak 会将这些进程重命名为看似合法的系统服务名称,使得真实应用程序对任何基于进程名称的扫描变得不可见。 ## 问题所在 第三方软件可以列出计算机上的活动进程,以识别: - 正在使用哪个浏览器(Chrome, Firefox, Brave, Edge, Opera...) - 是否打开了安全工具(Burp Suite, OWASP ZAP) - 是否在使用远程控制(TeamViewer, AnyDesk, Parsec) - 是否在虚拟机内运行(VirtualBox, VMware) - 打开了什么编辑器或 IDE(VS Code, PyCharm, Sublime Text, Eclipse) - 正在运行什么通信工具(Slack, Teams, Telegram, Discord) - 是否有屏幕录像机或虚拟摄像头(OBS, ManyCam, Bandicam) 其机制很简单:该软件获取操作系统的进程列表,并将每个名称与已知应用程序的数据库进行比对。如果列表中出现了 `chrome.exe` 或 `firefox`,就会被记录下来。 ## 解决方案 **process-cloak** 会对进程进行重命名,使其看起来像合法的操作系统服务。扫描 `chrome.exe` 的扫描器将会看到 `RuntimeBroker_a3f2.exe`。扫描 `firefox` 的扫描器将会看到 `xdg_session_b4d9`。 程序仍会正常运行,但其真实名称对于任何基于进程名称的检测工具来说都是不可见的。 ## 工作原理 ### 检测机制分析 进程扫描软件的工作方式如下: ``` // Carga una lista de programas prohibidos const bannedList = bannedPrograms.map(name => name.toLowerCase()); // Obtiene todos los procesos del sistema const processes = await systeminformation.processes(); // Compara cada proceso por nombre (case-insensitive) processes.forEach(process => { if (bannedList.includes(process.name.toLowerCase())) { // DETECTADO - marca el proceso } }); ``` 扫描器**不计算 hash**,**不验证数字签名**,**不分析二进制文件的内容**,也不检查进程内存。它仅仅是比较文本字符串。只要更改进程名称,就足以让它在扫描器中隐形。 ### Linux 上的方法 1. 定位程序的真实二进制文件(例如:`/usr/lib/firefox/firefox`) 2. 在 `~/.process-cloak/lib/<伪装名称>/` 中创建一个镜像目录 3. 为原程序的所有库文件创建 symlink 4. 使用伪装名称创建二进制文件的 hardlink(或副本) 5. 关闭原始进程 6. 从镜像目录启动副本,并保留原始参数和工作目录 `/proc/PID/comm` 中的 `comm` 字段(即扫描器读取的内容)会显示伪装后的名称。程序能正常运行,因为库文件指向的是原始文件。 ### Windows 上的方法 1. 定位程序真实的可执行文件 (.exe) 2. 将该 .exe 复制到 `%USERPROFILE%\.process-cloak\`,并重命名为伪装名称 3. 关闭原始进程 4. 启动副本 Windows 会在任务管理器、`tasklist` 和 `Get-Process` 中显示所运行的 .exe 文件的名称。如果它叫 `RuntimeBroker_a3f2.exe`,那么任何扫描器看到的就是这个名字。 ### 生成的伪装名称 这些名称并非明显的随机字符串。它们是基于真实的操作系统服务前缀生成的: | 系统 | 生成的名称示例 | |---------|-------------------------------| | Linux | `sys_worker_a3f2`, `dbus_helper_7c1e`, `pulse_worker_b4d9`, `xdg_session_e9b1` | | Windows | `svchost_a3f2.exe`, `RuntimeBroker_7c1e.exe`, `SearchProtocol_b4d9.exe`, `WmiPrvSE_e9b1.exe` | 系统管理员看到这些名称时,会把它们误认为是合法的服务。 ## 两种使用模式 ### 模式 A:自动扫描和保护 主要流程。该脚本会自动扫描活动进程,将它们与包含 164 个已知应用程序的数据库进行交叉比对,并警告哪些进程会被检测到: ``` $ ./process-cloak.sh Se han detectado 4 procesos que un escáner podría identificar: PID 1423 firefox (Navegadores web) PID 2891 code (Editores de código) PID 3102 spotify (Reproductores multimedia) PID 4521 slack (Herramientas de conversación) ¿Qué deseas hacer? [1] Camuflar TODOS [2] Elegir cuáles camuflar ``` 结果: ``` firefox -> xdg_session_b4d9 [OK] code -> gsd_service_7c1e [OK] spotify -> pulse_worker_a8f3 [OK] slack -> dbus_helper_2d4a [OK] Cuando termines, vuelve a ejecutar este script para restaurar los nombres originales. ``` ### 模式 B:从目录中启动伪装后的应用程序 如果应用程序尚未打开,你可以直接使用伪装名称启动它: ``` Categorías: [1] Procesadores de texto (3 apps) [2] Navegadores web (5 apps) [3] Herramientas de conversación (7 apps) ... > Navegadores web > Mozilla Firefox Se lanzará como: xdg_session_b4d9 ¿Lanzar ahora? [Sí] Firefox lanzado como xdg_session_b4d9 PID: 5678 ``` ## 应用程序数据库 `apps-db.json` 文件包含 164 个程序,分为 17 个类别: | 类别 | 程序数量 | 示例 | |-----------|-----------|----------| | 文字处理 | 10 | Word, Notepad++, Gedit, Kate, Pages | | PDF 阅读器 | 15 | Acrobat, Foxit, Evince, Okular, Sumatra | | 电子表格 | 3 | Excel, Numbers, JASP | | 邮件客户端 | 4 | Outlook, Thunderbird, Mail, Airmail | | 网页浏览器 | 18 | Chrome, Firefox, Brave, Edge, Safari, Opera | | 通信工具 | 11 | Teams, Slack, Discord, Telegram, Zoom, WhatsApp | | 虚拟摄像头 | 19 | OBS, ManyCam, Snap Camera, XSplit, DroidCam | | 文件管理器 | 8 | Explorer, Finder, Nautilus, Dolphin | | 多媒体播放器 | 8 | VLC, Spotify, iTunes, Audacity | | 演示文稿 | 2 | PowerPoint, Keynote | | 截图 / 录屏 | 29 | ShareX, Greenshot, Loom, Bandicam, OBS | | 远程控制 | 7 | TeamViewer, AnyDesk, Parsec, Barrier | | 渗透测试 | 2 | Burp Suite, OWASP ZAP | | 代码编辑器 | 14 | VS Code, PyCharm, Sublime Text, Eclipse, MATLAB | | 虚拟机 | 3 | VirtualBox, VMware, Parallels | | 数据库客户端 | 8 | DataGrip, MySQL Workbench, HeidiSQL, TablePlus | | 开源办公软件 | 4 | LibreOffice, OpenOffice, WPS Office | ## 环境要求 ### Linux - **jq**: JSON 处理器 (`sudo apt install jq`) - **whiptail**: 终端交互式菜单(通常已预装) - **file**, **xxd**, **shuf**, **pgrep**: 大多数桌面发行版已预装 (`sudo apt install file xxd coreutils procps`) ### Windows - **PowerShell 5.1** 或更高版本(Windows 10/11 已内置) - 无需其他额外软件 ## 用法 ### Linux ``` chmod +x process-cloak.sh ./process-cloak.sh ``` ### Windows ``` cd C:\ruta\a\process-cloak powershell -ExecutionPolicy Bypass -File .\process-cloak.ps1 ``` ## 主菜单 ``` [1] Escanear y camuflar procesos expuestos [2] Restaurar procesos camuflados [3] Lanzar aplicación camuflada (catálogo) [4] Ver estado actual [5] Verificar exposición (qué ve un escáner) [0] Salir ``` ## 已知限制 ### Linux 上的 snap 应用程序 作为 snap(Ubuntu Snap Store)安装的程序在隔离的 sandbox 中运行。它们的二进制文件无法复制或在 snap 环境之外运行。 **解决方案**:安装该程序的 .deb 版本。以 Firefox 为例: ``` sudo snap remove firefox sudo add-apt-repository ppa:mozillateam/ppa sudo apt install firefox ``` 该脚本会自动检测 snap 进程并提醒用户。 ### Windows 上的 UWP 应用程序 从 Microsoft Store 安装的应用程序 (UWP) 在受 Windows 保护的 sandbox 中运行。它们的可执行文件位于 `C:\Program Files\WindowsApps\`,这是一个权限受限的文件夹。这包括 Windows 11 的记事本、计算器以及任何来自 Store 的应用。 **解决方案**:从程序官网下载经典的 .exe 版本。 该脚本会检测 UWP 应用并显示 `[UWP - no camuflable]` 标签。 ### macOS(不受支持) macOS 存在安全限制,无法可靠地伪装进程: - **Hardened Runtime**:像 Firefox 这样的应用程序启用了 Library Validation。macOS 会在运行时验证代码签名,并终止 (SIGKILL) 任何被修改的二进制副本。不可能在无效化签名的情况下重命名可执行文件。 - **App Store sandbox**:从 Mac App Store 下载的应用程序(WhatsApp, Pages, Numbers 等)受 sandbox 保护,不允许复制或重新启动其二进制文件。 - **Code Signing enforcement**:即使使用 `codesign --force --sign -` 进行临时签名,许多应用程序也会验证其自身完整性并拒绝启动。 - **bash 兼容性**:macOS 附带的是 bash 3.2(2007),不支持关联数组和其他现代功能。需要通过 Homebrew 安装 bash 5+ 版本。 在开发过程中,我们在搭载 Apple Silicon (arm64) 的 Mac 上进行了测试。在受测的应用程序(Chrome, Firefox, Brave, Telegram, WhatsApp)中: | 应用程序 | 结果 | 原因 | |------------|-----------|--------| | Google Chrome | 正常运行 | 轻量级启动器二进制文件,接受临时签名 | | Brave Browser | 正常运行 | 与 Chrome 相同的内核 | | Telegram | 正常运行 | 没有严格的 hardened runtime | | Firefox | 失败 | Hardened runtime + Library Validation (SIGKILL) | | WhatsApp | 失败 | App Store sandbox | 由于仅适用于部分应用程序,且无法保证普遍兼容性,因此决定在此版本中不包含 macOS。可靠的实现需要对每个应用程序的签名验证机制进行逆向工程,或者使用代码注入技术(DYLD_INSERT_LIBRARIES),而这些技术可能会被 SIP (System Integrity Protection) 阻止。 ### 多进程 像 Chrome 或 Firefox 这样的应用程序会启动多个子进程。主进程会被伪装,但根据应用程序启动它们的方式,子进程可能会保留原始名称。 ### 持久化 伪装效果在重启后不会保留。登录时,进程会再次以其原始名称启动。每次重启后都需要重新运行该脚本。 ### 无法隐藏的内容 - **二进制文件的 hash**:可执行文件的内容保持不变 - **网络连接**:如果进程打开了已知端口,流量会暴露其身份 - **内存特征**:RAM 内存分析仍能看到原始字符串 - **Linux 上的 `/proc/PID/exe`**:拥有 root 权限即可查看真实的二进制文件 这些限制不会影响基于进程名称的自动扫描器(这是主要用例),但对此保持清醒认识是非常重要的。 ## 项目结构 ``` process-cloak/ process-cloak.sh Script principal Linux (bash + whiptail) process-cloak.ps1 Script principal Windows (PowerShell) apps-db.json Base de datos de 164 aplicaciones en 17 categorías fake-names.json Pool de 50 nombres falsos realistas (25 por SO) INSTRUCCIONES-LINUX.txt Guía paso a paso para Linux INSTRUCCIONES-WINDOWS.txt Guía paso a paso para Windows README.md Esta documentación CHANGELOG.md Historial de cambios LICENSE MIT ``` ## 验证 ### Linux ``` # 检查进程是否不可见 ps -eo pid,comm | grep -i firefox # (无) # 查看伪装进程 ps -eo pid,comm | grep xdg_session # 5678 xdg_session_b4d9 ``` ### Windows ``` # 检查进程是否不可见 Get-Process | Where-Object { $_.Name -ieq "chrome" } # (无) # 使用 tasklist 检查 tasklist /fi "imagename eq chrome.exe" # 没有正在运行的任务 ``` ## 常见问题 **问:杀毒软件会将此工具检测为恶意软件吗?** 答:不会。该脚本不注入代码,不修改其他进程的内存,也不使用 rootkit 技术。它只是复制一个可执行文件并重命名,然后运行它。这等同于手动重命名一个文件。 **问:它能应对检查 hash 的扫描器吗?** 答:不能。如果扫描器计算可执行文件的 SHA-256,它会检测到内容与原始程序完全相同,即使名称不同。然而,基于进程名称的扫描器(占大多数)不会进行这种验证。 **问:我可以将自己的应用程序添加到数据库中吗?** 答:可以。编辑 `apps-db.json` 并按以下格式添加条目: ``` { "programName": "Mi aplicación", "win32": ["miapp.exe"], "darwin": ["Mi aplicación"], "linux": ["miapp"] } ``` **问:如果我在不还原的情况下关闭脚本会怎样?** 答:伪装后的进程将继续正常运行。再次运行脚本时,它会检测到这些伪装的进程并提供还原选项。 **问:我需要管理员权限吗?** 答:在大多数情况下不需要。只有在伪装以其他用户或 SYSTEM/root 身份运行的进程时才需要。 **问:伪装会占用多少磁盘空间?** 答:这取决于可执行文件的大小。对于大多数应用程序来说,只需几 MB。还原时,副本会被自动删除。 ## 许可证 MIT
标签:AI合规, Libemu, 应用安全