在红队域渗透、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-domainuserGet-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-ObjectSelect-ObjectSort-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 版的增值点:

  1. 查询可控-NoCache/-NoVulnCheck/-Raw 精准控制缓存、漏洞检测与原始数据输出;
  2. 隐匿对抗--obfuscate 实现 LDAP 查询混淆,通过 OID 编码、随机大小写规避 ED R 检测;
  3. 高级利用:支持 NTLM Relay 中继模式、ADCS 证书服务模块、DMSA 托管服务账号、Exchange 邮件服务专属枚举;
  4. 可视化与智能化:内置 Web 管理界面、MCP 协议对接 AI 助手,实现可视化侦察与智能分析;
  5. 自动化能力:内置 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 的首选跨平台域侦察工具。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐