Macmod/sopa
GitHub: Macmod/sopa
Sopa 是一个基于 Golang 实现的 ADWS 协议客户端,用于通过 SOAP/Web Services 接口对 Active Directory 进行查询、对象管理和拓扑信息检索。
Stars: 54 | Forks: 1
sopa
A practical client for ADWS in Golang.
Sopa 实现了 ADWS 协议栈([MS-NNS](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-nns) + [MC-NMF](https://learn.microsoft.com/en-us/openspecs/windows_protocols/mc-nmf) + SOAP),提供以下命令行功能: - **对象搜索与检索** - `query`:通过 WS-Enumeration `Enumerate` + `Pull` 循环运行 LDAP 过滤器搜索,支持属性投影、范围控制(Base/OneLevel/Subtree)和分页 - `get`:通过 WS-Transfer `Get` 根据 DN 获取单个对象 - **对象生命周期** - `create`:通过 WS-Transfer `ResourceFactory` 创建对象(内置类型:user、computer、group、OU、container;或通过 IMDA `AddRequest` 从 YAML 模板创建自定义对象) - `delete`:通过 WS-Transfer `Delete` 根据 DN 删除对象 - **属性编辑** - `attr`:通过 WS-Transfer `Put` 在现有对象上添加、替换或删除单个属性值 - **账户管理** - `set-password`:通过 MS-ADCAP `SetPassword` 设置账户密码 - `change-password`:通过 MS-ADCAP `ChangePassword` 更改账户密码(需要旧密码) - **ADCAP 自定义操作** - `translate-name`:通过 `TranslateName` 在 DN 和规范名称格式之间进行转换 - `groups`:通过 `GetADPrincipalGroupMembership` / `GetADPrincipalAuthorizationGroup` 列出主体的组成员身份或授权组 - `members`:通过 `GetADGroupMember` 枚举组成员(可选择递归) - `optfeature`:通过 `ChangeOptionalFeature` 切换可选的 AD 功能(例如 Recycle Bin) - `info`:通过 `GetVersion`、`GetADDomain`、`GetADForest`、`GetADDomainControllers` 检索拓扑元数据(版本、域、林、DC 列表) - **服务元数据** - `mex`:通过未经身份验证的 WS-MetadataExchange 请求获取 ADWS 服务端点元数据 # 安装说明 ``` $ go install github.com/Macmod/sopa/cmd/sopa@latest ``` # 用法 ``` # 为简洁起见,Auth flags (-u, -p, -d, -k, -H, -c, ...) 已省略 - 参见 Authentication 部分。 # 通过 LDAP filter 搜索对象 $ sopa [auth_flags] query --dc标签:Active Directory, ADWS协议, EVTX分析, Golang, HTTP, Plaso, 安全编程, 目录服务, 网络客户端