powerview.py 项目介绍与使用
在红队域渗透、AD 资产侦察与权限运维场景中,PowerView.ps1 一直以来是 Windows 环境下域信息枚举、对象操控的核心工具,但受限于 PowerShell 运行环境,无法在 Linux、macOS 等跨平台场景直接使用。powerview.py 作为原生 PowerView 的 Python 重构替代品,完整复刻了原生命令语法风格,同时实现跨平台运行、持久化 LDAP 会话、扩展更多域利用模块,还新增混淆、Web 管理、AI 对接等增强能力。
本文将系统梳理 powerview.py 完整语法规则,并深度对比其与原生 PowerView.ps1 的核心差异,为安全从业者落地使用提供参考。
一、基础启动连接语法
powerview.py 采用统一的命令行入口格式,结构简洁且兼容多种域接入协议与认证方式。
标准连接格式
powerview <domain>/<user>:<password>@<target> [可选参数]
协议互斥选项
工具内置五种域通信协议,参数互斥,按需指定端口与通信模式:
| 参数 | 通信协议 | 默认端口 |
|---|---|---|
--use-ldap |
明文 LDAP | 389 |
--use-ldaps |
加密 LDAPS | 636 |
--use-gc |
全局编录 GC | 3268 |
--use-gc-ldaps |
加密全局编录 | 3269 |
--use-adws |
ADWS 服务 | 9389 |
多类型认证选项
支持域渗透全场景认证方式,覆盖明文、哈希、票据、证书等主流方案:
| 参数 | 认证方式说明 |
|---|---|
-k |
Kerberos 票据认证,自动读取环境变量 KRB5CCNAME |
-H LMHASH:NTHASH |
NTLM 哈希认证,直接传入 LM/NT 哈希值 |
--pfx <file> |
PFX 证书 Schannel 认证 |
--use-channel-binding |
启用通道绑定适配服务端安全策略 |
--use-sign-and-seal |
开启 LDAP 签名与加密传输 |
--use-simple-auth |
简易模式身份认证 |
--dc-ip <IP> |
手动指定 KDC 或域控制器 IP,适配跨网段场景 |
除此之外,工具还支持自定义域名服务器、调试模式、查询单次执行、缓存开关、LDAP 混淆、NTLM Relay 中继、Web 可视化界面、MCP AI 协议对接、连接池配置等全局启动参数,可根据渗透场景灵活选配。
二、交互式 Shell 命令语法
成功连接域环境后,powerview.py 进入专属交互式 Shell,完全沿用 PowerShell 经典 Verb-Noun 动名词命令风格,降低原生用户迁移学习成本。
基础命令格式
<命令名> [-Identity <值>] [-参数名 <值>] [-开关参数]
命令大小写完全不敏感,get-domainuser、Get-DomainUser 执行效果一致,适配不同输入习惯。
Identity 位置简写特性
为简化输入,核心枚举命令支持省略 -Identity 参数,直接后跟目标对象值,语法等价:
# 简写形式
Get-DomainUser Administrator
# 完整参数形式
Get-DomainUser -Identity Administrator
工具底层解析器会自动识别位置参数并绑定至 Identity 字段,兼顾简洁性与兼容性。
三、全局通用参数
绝大多数域枚举、对象操作命令都支持统一通用参数,实现查询筛选、结果格式化、输出导出、缓存控制等标准化能力,是日常使用的高频配置项:
| 参数 | 功能说明 |
|---|---|
-Identity <值> |
指定目标对象,支持用户名、DN、SID、GUID 等多种标识 |
-Properties <属性1,属性2> |
自定义查询返回的 LDAP 属性,逗号分隔多属性 |
-LDAPFilter <过滤器> |
传入原生 LDAP 过滤字符串,精准筛选域对象 |
-SearchBase <DN> |
指定搜索起始基准 DN,限定 OU 或站点范围 |
-Server <域名/IP> |
跨域操作指定目标域控制器,支持多域环境切换 |
-Select <属性列表> |
对查询结果进行列筛选,也可传入数字限制返回条数 |
-Where <条件> |
后置结果过滤,内置专属过滤语法 |
-SortBy <属性名> |
按指定属性对结果进行排序 |
-Count |
仅输出结果条目数量,不展示详细数据 |
-TableView [csv|md] |
表格化输出,支持普通表格、CSV、Markdown 格式 |
-OutFile <路径> |
将查询结果导出至本地文件 |
-NoWrap |
禁用长文本自动换行,保持原始格式 |
-NoCache |
本次查询禁用内置缓存,获取实时域数据 |
-NoVulnCheck |
关闭内置 AD 漏洞自动检测功能 |
-Raw |
返回原始 LDAP 条目数据,不做格式化处理 |
四、-Where 专属过滤语法
powerview.py 摒弃了原生 PowerView 复杂的管道过滤语法,内置轻量化 -Where 过滤规则,直接在命令内联完成结果筛选,无需嵌套管道。
基础语法格式
'<属性名> <操作符> <值>'
常用示例
# 匹配包含 admin 后缀的账户
Get-DomainUser -Where 'samaccountname contains admin'
# 精确匹配指定管理员账户
Get-DomainUser -Where 'samaccountname eq Administrator'
# 筛选描述字段非空的账户
Get-DomainUser -Where 'description not null'
支持操作符
工具底层通过正则解析过滤表达式,兼容多别名操作符,适配多样筛选需求:
| 操作符别名 | 功能 |
|---|---|
contains/con/match |
大小写不敏感子串匹配 |
eq/equal/= |
字段精确匹配 |
not/!= |
不等于反向匹配 |
五、Set-DomainObject 对象修改语法
Set-DomainObject 是域对象属性修改核心命令,支持设置、追加、清除、移除四类操作,四个参数互斥,不可同时使用。
核心用法示例
# 单点设置对象属性
Set-DomainObject -Identity "user" -Set 'attribute=value'
# 追加多值属性内容
Set-DomainObject -Identity "user" -Append 'attribute=value'
# 清空指定属性
Set-DomainObject -Identity "user" -Clear 'attribute'
# 从本地文件读取内容写入属性(@ 前缀引用文件)
Set-DomainObject -Identity "user" -Set 'attribute=@/path/to/file'
同时支持 -SearchBase、-Server、-OutFile 通用参数,可限定操作范围并导出执行日志。
六、RPC 计算机枚举命令语法
针对内网主机会话、共享、进程、服务等远程枚举场景,powerview.py 提供基于 RPC 协议的专属命令,采用 -Computer 与 -ComputerName 互斥参数指定目标主机,还可临时覆盖登录凭据。
基础使用示例
# 枚举目标主机共享资源
Get-NetShare -Computer dc01.range.net
# 指定凭据枚举主机登录会话
Get-NetLoggedOn -ComputerName dc01 -Username admin -Password Pass123
# 查询指定主机进程
Get-NetProcess -Computer dc01 -Pid 1234
# 远程终止进程
Stop-NetProcess -Computer dc01 -Name notepad.exe
此类命令支持自定义账号、密码或 NTLM 哈希覆盖认证,适配内网横向移动场景。
七、powerview.py 与原生 PowerView.ps1 差异
作为跨平台重构版本,powerview.py 在运行环境、会话机制、语法逻辑、功能扩展等方面与原生版本存在显著区别,也是其核心优势所在。
1. 运行环境差异
- 原生 PowerView.ps1:强依赖 Windows 系统 + PowerShell 环境,无法在 Linux、macOS 直接运行,受限 Windows 终端策略与执行权限。
- powerview.py:基于 Python 开发,全平台兼容,Linux、macOS、Windows 均可部署运行,适配红队常用离线攻击机环境。
2. 会话连接机制
- 原生版本:每条命令独立发起 LDAP 认证,无会话复用,频繁查询会重复握手、产生大量日志,效率低下。
- powerview.py:交互式 Shell 维持持久 LDAP 连接池,默认支持最多 10 个域连接复用,内置保活与定时清理机制,减少认证交互、降低日志暴露风险。
3. 语法与管道逻辑
- 原生版本:重度依赖 PowerShell 管道链,通过
Where-Object、Select-Object、Sort-Object嵌套实现筛选排序,语法冗长。 - powerview.py:取消管道依赖,将筛选、选择、排序、计数全部封装为内联参数,一条命令完成全流程操作,语法更精简易记。
4. 参数映射变更
原生管道语法全部简化为专属命令参数,映射关系如下:
| 原生 PowerView.ps1 | powerview.py 替代参数 |
|---|---|
-Filter |
-LDAPFilter |
Where-Object {} |
-Where 内联过滤 |
Select-Object 管道 |
-Select |
Sort-Object 管道 |
-SortBy |
Measure-Object 管道 |
-Count |
Out-File 管道 |
-OutFile |
Format-Table 管道 |
-TableView |
-Credential 凭据参数 |
-Username/-Password/-Hash |
5. powerview.py 独有新增功能
原生 PowerView 不具备以下能力,也是 Python 版的增值点:
- 查询可控:
-NoCache/-NoVulnCheck/-Raw精准控制缓存、漏洞检测与原始数据输出; - 隐匿对抗:
--obfuscate实现 LDAP 查询混淆,通过 OID 编码、随机大小写规避 ED R 检测; - 高级利用:支持 NTLM Relay 中继模式、ADCS 证书服务模块、DMSA 托管服务账号、Exchange 邮件服务专属枚举;
- 可视化与智能化:内置 Web 管理界面、MCP 协议对接 AI 助手,实现可视化侦察与智能分析;
- 自动化能力:内置 AD 漏洞自动检测,查询结果实时标注安全风险;30 分钟 TTL 缓存机制,提升重复查询效率。
6. 命令别名机制
powerview.py 为高频命令设置简短别名,兼顾习惯与输入效率,部分常用别名:
| 完整标准命令 | 简写别名 |
|---|---|
Get-DomainObject |
Get-ADObject |
Get-DomainObjectAcl |
Get-ObjectAcl |
Get-NetProcess |
tasklist |
Stop-NetProcess |
taskkill |
Stop-Computer |
Shutdown-Computer |
八、总结
powerview.py 并非简单复刻原生 PowerView.ps1,而是在完全兼容原有命令语法的基础上,解决了原生工具平台受限、无持久会话、语法繁琐的痛点。其统一的启动语法、标准化通用参数、轻量化过滤规则,降低了域渗透学习门槛;跨平台运行、LDAP 会话池、查询混淆、ADCS/Exchange 扩展模块,大幅适配现代红队攻防、AD 安全运维、漏洞检测等实战场景。同时,命令大小写兼容、位置参数简写、自定义别名等人性化设计,让从原生 PowerView 迁移的使用者可以无缝上手,成为替代传统 PowerView 的首选跨平台域侦察工具。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐




所有评论(0)