MikeRicketts/LinuxSurface

GitHub: MikeRicketts/LinuxSurface

LinuxSurface 是一款纯只读的 Windows 安全审计脚本,用于枚举和评估系统中 Linux/POSIX 收敛性功能(如 sudo、WSL、OpenSSH、开发者模式等)带来的攻击面风险。

Stars: 0 | Forks: 0

# LinuxSurface ![PowerShell 5.1+ | 7+](https://img.shields.io/badge/PowerShell-5.1%2B%20%7C%207%2B-5391FE?logo=powershell&logoColor=white) ![Windows 10 | 11](https://img.shields.io/badge/Windows-10%20%7C%2011-0078D6?logo=windows&logoColor=white) ![模式: 只读](https://img.shields.io/badge/mode-read--only-16a34a) ![许可证: MIT](https://img.shields.io/badge/license-MIT-blue) **一个针对“Linux 收敛性”攻击面的只读 Windows 审计工具。** 现代 Windows 悄然引入了越来越多的 Linux/POSIX 功能——`sudo.exe`、 开发者模式、WSL、内置 OpenSSH、`curl`/`tar`、非管理员符号链接。每一项功能 都很便利,同时每一项也都打开了以 Windows 为中心的监控通常难以察觉的 攻击面。LinuxSurface 会枚举主机上已启用的功能,并将其报告为 一个按优先级排列的、通俗易懂的风险全貌——只需一条命令,且不会对系统进行任何 更改。

Example LinuxSurface report showing an ELEVATED risk posture
Example run on a host with several convergence features enabled.

## 快速开始 ``` # 彩色控制台报告(默认) .\LinuxSurface.ps1 # 同时生成可在任何浏览器中打开的可共享 HTML 报告 .\LinuxSurface.ps1 -Html # Machine-readable JSON,用于通过管道传递给其他工具 .\LinuxSurface.ps1 -Json ``` 无需安装,无需依赖,无需管理员权限。支持在 Windows PowerShell 5.1+ 和 PowerShell 7+ 上运行。以管理员权限运行只是为了让 WSL/OpenSSH 检查 能够完全解析,而不是报告“需要管理员权限”。 ## 检查内容 检查结果按三种攻击面主题进行分组: | 主题 | 检查项 | 重要性说明 | |-------|-------|----------------| | **权限提升** | Windows `sudo.exe` | 内联本地权限提升。标记启用状态、已配置的模式以及签名篡改。版本限制在 24H2+。 | | | 开发者模式 | 放宽了应用旁加载限制,并授予非管理员创建符号链接的权限。 | | | 非管理员符号链接权限 | 标准用户可创建符号链接/ junction → 基于链接跟随和 TOCTOU 的权限提升原语。 | | **远程访问** | OpenSSH | 正在运行的 `sshd` 是一种新的、通常未被监控的入站访问方式;而客户端则是用于出站隧道的 LOLBin。 | | **Linux 工具与 LOLBins** | WSL | 完整的 Linux 用户环境——带来了巨大的全新执行、工具和凭据访问面(例如通过 `/mnt` 访问宿主机文件)。 | | | POSIX 工具(`curl` / `tar`) | 内置的下载/归档 LOLBins,可用于环境部署和数据外发;如果签名看似被篡改则会被标记。 | 每项检查结果都会报告其 **状态**(已启用 / 存在但未启用 / 不存在 / 针对该版本不适用 / 需要管理员权限)、**严重程度**、**原始证据**(注册表路径、文件路径 + Authenticode 签名者、服务状态),以及一行简短的理由说明。 ### 风险态势与退出代码 该工具将各项检查结果汇总为整体安全态势和进程退出代码,因此可以 无缝集成到脚本和 CI 中: | 退出代码 | 态势 | 含义 | |:----:|---------|---------| | `0` | **CLEAN** | 未启用任何值得关注的项。 | | `1` | **ADVISORY** | 存在值得审查的检查项。 | | `2` | **ELEVATED** | 存在复合的高风险组合(≥ 2 项高危结果)。 | 其价值在于*组合*:开发者模式 **+** 启用的 `sudo` **+** 正在运行的 `sshd`,与其中任何单独一项相比都是截然不同的情况—— 正是这种组合将主机的风险推高到了 ELEVATED。 ## 输出格式 - **控制台**(默认) — 彩色显示、分组呈现,便于一目了然地阅读。 - **HTML**(`-Html`) — 一个独立且带样式的报告,你可以在浏览器中打开它 或直接交给非技术人员。输出到 `.\LinuxSurface-report.html`(或通过 `-OutputPath ` 指定)。 - **JSON**(`-Json`) — 包含主机信息、各项检查证据和 摘要的完整结构化结果,可用于自动化处理或供其他工具接入。 ## 安全性 — 只读保证 作为一款被动审计工具,在授权评估期间,可安全地运行于生产环境和第三方机器上。 - **它只进行读取。** 读取注册表值、文件元数据 + Authenticode 签名 以及服务/功能状态。它绝不会在宿主机上进行写入、修改、删除、启用、 禁用、启动、停止或执行任何操作 —— 包括在错误处理路径中也是如此。 - **它绝不会运行其检测的二进制文件。** `sudo.exe`、`ssh`、`wsl.exe` 等程序仅通过文件元数据进行检测,从不被调用。 - **仅使用只读 cmdlet:** `Get-ItemProperty`、`Test-Path`、`Get-Item`、 `Get-Service`、`Get-WindowsOptionalFeature`、`Get-AppxPackage`、 `Get-WindowsCapability`、`Get-AuthenticodeSignature`。绝不包含任何位置的 `Set-*`、`Remove-*`、 `Enable-*`、`Disable-*`、`Start-*`、`Stop-*` 或 `Invoke-Expression`。 - **它唯一写入的内容是其自身的报告**,且仅在你主动要求时 (`-Html` / `-Json -OutputPath`)才会生成。绝不会写入被审计系统的注册表、 服务或任务中。 - **安全失效。** 每一项检查都包裹在 `try/catch` 中;缺失某项功能或 发生权限错误时,会报告明确的状态,而不是直接导致程序崩溃。 有两项检测在策略上偏保守,报告中也对此作出了说明: `SeCreateSymbolicLinkPrivilege` 是从开发者模式推断出来的,而不是 从安全策略中导出的(因为导出操作会写入文件);此外,OpenSSH “正在监听”是根据 `sshd` 服务状态推断出来的,而不是通过实时套接字查询得出。 ## 许可证 [MIT](LICENSE)
标签:AI合规, HTTP工具, IPv6, Libemu, PowerShell, 搜索语句(dork), 配置检查