lsecqt/FakeWindowsPopup
GitHub: lsecqt/FakeWindowsPopup
基于 .NET Framework 的 Windows 原生凭据提示 POC,调用系统 API 绘制像素级逼真的安全对话框,用于红队演示和安全意识培训。
Stars: 2 | Forks: 0
# FakeLogin
一个基于 .NET Framework 4.5 的凭据提示 POC,适用于红队演示和安全意识视频。
调用 `credui.dll!CredUIPromptForWindowsCredentials`,由操作系统绘制**真实的** Windows 安全对话框——在 Windows 10 和 Windows 11 上均能实现像素级的完美还原(包括正确的 Segoe UI Variable 字体、DPI、Mica/亚克力效果、焦点下划线等)。
## 功能说明
1. 检测主机是否已加入域(`NetGetJoinInformation`)。
2. 定位域控(`DsGetDcName`)或回退使用本地主机名。
3. 暗化桌面(约 55% 黑色遮罩)以模拟 UAC 的安全桌面效果。
4. 显示原生的 `"Enter your credentials to connect to: "` 提示。
5. 使用 `advapi32!LogonUser`(`LOGON32_LOGON_NETWORK`)验证输入的凭据:
- **成功** → 对话框静默关闭,应用退出(模拟真实的 Windows 行为)。
- **失败** → 重新提示;操作系统会内嵌渲染本地化的错误信息(例如 `"The user name or password is incorrect."` 等)。
6. 紧急退出:`Ctrl + Shift + F4`。
## 编译
在包含 `Program.cs` 的目录下,打开 Windows 命令提示符(`cmd.exe`):
```
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe" /target:winexe /out:FakeLogin.exe /reference:System.dll /reference:System.Drawing.dll /reference:System.Windows.Forms.dll Program.cs
```
如果使用 PowerShell 代替 cmd,请在前面加上 `&`:
```
& "C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe" /target:winexe /out:FakeLogin.exe /reference:System.dll /reference:System.Drawing.dll /reference:System.Windows.Forms.dll Program.cs
```
不需要任何外部 NuGet 包、项目文件或 `System.DirectoryServices` 引用——所有非 BCL 调用都是对始终可加载的 Windows DLL(`credui.dll`、`advapi32.dll`、`netapi32.dll`、`kernel32.dll`)进行的 P/Invoke。
## 运行
手动执行
```
FakeLogin.exe
```
或通过 execute assembly 模块
```
execute_assembly FakeLogin.exe
```
## 注意事项
- 仅用于教育/安全意识演示。
- 无法在真实的安全桌面上渲染——只有 `SYSTEM` 进程有此权限。变暗效果只是在普通桌面上近似模拟 UAC 的变暗效果;微软已公开承认这类视觉欺骗是非常容易实现的。
标签:ESC8, 凭据收集, 社会工程学