使用PowerShell进行用户密码钓鱼攻击
伪造凭证提示是有效的权限提升和横向移动技术。在Windows环境中,用户经常会遇到Outlook、VPN等各类身份验证协议的随机密码弹窗。攻击者会滥用Windows和PowerShell内置功能调用凭证弹窗以窃取密码。
根据MITRE ATT&CK框架定义: “当需要额外权限的程序执行时…操作系统通常会提示用户输入凭证。攻击者可能模仿常见系统组件,通过PowerShell等语言显示看似合法的凭证提示。”
CredPhish工具解析
CredPhish是一个通过调用凭证弹窗并外传密码的PowerShell脚本,其技术核心包括:
- 使用
CredentialPicker
API收集密码 - 利用PowerShell的
Resolve-DnsName
实现DNS外传 - 通过Windows Defender的
ConfigSecurityPolicy.exe
执行任意GET请求
DNS外传技术细节
默认情况下,CredPhish使用PowerShell内置的DNS解析器Resolve-DnsName
:
- 将凭证字符转换为十六进制值
- 分割为预定义长度的数据块
- 将数据块嵌入流行网站子域名
示例:用户名"tokyoneon"的十六进制值(746f6b796f6e656f6e)出现在google.com和office.com子域名中。
脚本配置详解
credphish.ps1
采用独立脚本设计,避免使用可能引发告警的Import-Module
。关键配置参数包括:
|
|
多种外传方法
DNS外传配置
|
|
使用Kali的dns_server.py
脚本可拦截并重组明文凭证。
HTTP外传方法
通过Windows Defender组件实现:
|
|
持久化攻击技术
通过Windows任务计划程序实现定时执行:
|
|
防御建议
MITRE ATT&CK框架推荐:
- 开展用户培训,提高对异常弹窗的警惕性
- 监控异常进程和脚本解释器行为
- 检查输入提示的合法性特征(横幅、文本、时间等)
该技术源自Invoke-LoginPrompt、CredsLeaker等项目,更激进的变种可能涉及使用Cobalt Strike伪造整个Windows锁屏界面。