oiweiwei/go-msrpc
GitHub: oiweiwei/go-msrpc
这是一个Go语言的MS-RPC/DCOM客户端库,用于简化与Windows系统的远程过程调用,支持多种协议和认证方式。
Stars: 156 | Forks: 24
# go-msrpc库
[](https://pkg.go.dev/github.com/oiweiwei/go-msrpc)
[](https://goreportcard.com/report/github.com/oiweiwei/go-msrpc)
一个用于Go的MS-RPC/DCOM客户端库。实现了[C706: DCE/RPC 1.1](http://www.dcerpc.org/documentation/)的[微软扩展](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rpce/290c38b1-92fe-4229-91e6-4fc376610c15),并包含了所有主要Windows RPC和DCOM协议的预生成存根,可供直接使用:[Netlogon](./msrpc/nrpc)、[Windows 注册表](./msrpc/rrp)、[事件日志](./msrpc/even6)、[WMI](./msrpc/dcom/wmi) ([查询](./examples/wmic.go)、[执行](./examples/wmiexec.go))、[DCOM/OXID](./msrpc/dcom)以及[更多](#generated-stubs)。
## 安装说明
```
go get github.com/oiweiwei/go-msrpc
```
## 快速开始
```
package main
import (
"context"
"fmt"
"github.com/oiweiwei/go-msrpc/dcerpc"
"github.com/oiweiwei/go-msrpc/msrpc/rrp/winreg/v1"
"github.com/oiweiwei/go-msrpc/ssp"
"github.com/oiweiwei/go-msrpc/ssp/credential"
"github.com/oiweiwei/go-msrpc/ssp/gssapi"
_ "github.com/oiweiwei/go-msrpc/msrpc/erref/win32"
)
func main() {
ctx := gssapi.NewSecurityContext(context.Background(),
gssapi.WithCredential(credential.NewFromPassword("DOMAIN\\User", "password")),
gssapi.WithMechanismFactory(ssp.SPNEGO),
gssapi.WithMechanismFactory(ssp.NTLM),
)
// connect to server
cc, err := dcerpc.Dial(ctx, "192.168.1.1", dcerpc.WithEndpoint("ncacn_np:[winreg]"))
if err != nil {
panic(err)
}
// create protocol client (MS-RRP)
cli, err := winreg.NewWinregClient(ctx, cc, dcerpc.WithSeal())
if err != nil {
panic(err)
}
// make RPC call
resp, err := cli.OpenLocalMachine(ctx, &winreg.OpenLocalMachineRequest{
DesiredAccess: winreg.KeyRead,
})
if err != nil {
panic(err)
}
fmt.Printf("HKLM handle: %v\n", resp.Key)
}
```
参见[examples/samples_with_config](./examples/samples_with_config)和[msrpc](./msrpc/doc.go)包的文档。
```
# 使用 string binding 格式
go run examples/samples_with_config/dnsp.go Administrator%P@ssw0rd@ncacn_ip_tcp:dc01.msad.local[privacy,spnego,krb5]
go run examples/samples_with_config/wmic.go Administrator%P@ssw0rd@ncacn_ip_tcp:dc01.msad.local[privacy,spnego,krb5] \
--query "SELECT * FROM Win32_ComputerSystem"
# 使用 explicit flags
go run examples/samples_with_config/dnsp.go \
--username=Administrator \
--domain=MSAD.LOCAL \
--password=P@ssw0rd \
--auth-level=privacy \
--auth-spnego \
--auth-type=krb5 \
--server=dc01.msad.local
```
[examples/](./examples)目录下的旧示例使用环境变量:
| 变量 | 描述 | 示例 |
|------|------|------|
| `USERNAME` | 域\用户名 | `"MSAD2.COM\User"` |
| `PASSWORD` | 密码 | `"password"` |
| `PASSWORD_MD4` | NT哈希(使用 [nt_hash.go](./examples/helpers/nthash/nt_hash.go) 生成) | `"f077ca4b7d73486a45e75dcdd74cd5bd"` |
| `WORKSTATION` | 工作站名称 | `"Ubuntu"` |
| `SERVER` | 服务器FQDN或IP | `"192.168.0.22"` |
| `SERVER_NAME` | 服务器NetBIOS名称 | `"WIN2019"` |
| `SERVER_HOST` | 服务器FQDN | `"my-server.win2019.com"` |
| `SAM_USERNAME` | 机器账户名(参见 [netlogon_sec_channel.go](./examples/netlogon_sec_channel.go)) | `"COMPUTER$"` |
| `SAM_PASSWORD` | 机器账户密码 | `"password"` |
| `SAM_WORKSTATION` | 机器账户工作站 | `"COMPUTER"` |
| `TARGET` | Kerberos SPN | `"host/my-server.win2019.com"` |
| `KRB5_CONFIG` | Kerberos配置路径 | `"/path/to/krb5.conf"` |
## 代码生成
IDL解析器和Go代码生成器位于[github.com/oiweiwei/midl-gen-go](https://github.com/oiweiwei/midl-gen-go),在此通过发布的Docker镜像`ghcr.io/oiweiwei/midl-gen-go`使用。
重新生成所有存根:
```
make all
```
重新生成单个协议(例如`nrpc.go`):
```
make nrpc.go
```
其底层每个目标运行:
```
docker run --rm \
-v $(pwd):/work \
-u $(id -u):$(id -g) \
ghcr.io/oiweiwei/midl-gen-go generate \
--pkg "github.com/oiweiwei/go-msrpc/msrpc/" \
-I /work/idl \
-I /work/idl/h \
--output /work/msrpc/ \
--msdn-openspecs-indexer-file /work/msdn/index.yaml \
--msdn-openspecs-extra-file /work/msdn/extra.yaml \
--msdn-openspecs-cache-dir /work/msdn/.cache/ \
/work/idl/.idl
```
要添加新的IDL文件,请将其放入`idl/`(对于DCOM,放入`idl/dcom/`),然后在Makefile的`all`规则中添加相应的目标。
## 功能特性
### DCE/RPC v5客户端 (`dcerpc` 包)
- 传输语法:NDR 2.0 和 NDR64
- 传输方式:命名管道(SMB2/3)和TCP
- 连接复用:通过单个连接支持多个客户端
- 每个关联组支持多个连接,并共享上下文句柄
- 验证尾部支持
- Kerberos、Netlogon、NTLM、SPNEGO认证
- 端点映射器和字符串绑定支持
- 基础DCOM支持
- 事件日志BinXML解析器
- WMIO对象编组/解组
### MS-RPCE扩展
- 安全上下文复用
- 绑定时特性协商
- 头签名
- NDR64
### GSS-API / SSP (`ssp` 包)
GSS-API接口定义位于`ssp/gssapi`。`ssp`包实现了以下安全提供程序:
- **Kerberos** (通过 [jcmturner/gokrb5 fork](https://github.com/oiweiwei/gokrb5.fork/tree/master/v9)):
- 加密:RC4-HMAC、DES-CBC-MD5、DES-CBC-CRC、AES128-CTS-HMAC-SHA1、AES256-CTS-HMAC-SHA1
- DCE风格的AP请求/响应
- 相互和非相互认证
- Wrap/GetMic-Ex方法
- **NTLM**:NTLMv1 和 NTLMv2
- **Netlogon**:RC4-HMAC 和 AES-SHA2
- **SPNEGO**:MechListMIC 和 NegTokenInit2
### SMB2客户端
基于[hirochachacha/go-smb2 fork](https://github.com/oiweiwei/go-smb2.fork),并增加了以下功能:
- 强制加密支持
- 通过`ssp/gssapi`集成Kerberos/NTLM
- 修复`NT_STATUS_PENDING`
- 密钥材料导出(应用程序密钥、会话密钥)
## 生成的存根
### RPC协议
| 规范 | 描述 | 包 |
|------|------|------|
| [MS-ADTS](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts) | Active Directory技术规范:声明 | [msrpc/adts](./msrpc/adts) |
| [MS-BKRP](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-bkrp) | 备份密钥远程协议 | [msrpc/bkrp](./msrpc/bkrp) |
| [MS-BPAU](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-bpau) | BITS对等缓存:对等认证协议 | [msrpc/bpau](./msrpc/bpau) |
| [MS-BRWSA](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-brwsa) | CIFS浏览器辅助协议 | [msrpc/brwsa](./msrpc/brwsa) |
| [MS-CAPR](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-capr) | 中央访问策略ID检索协议 | [msrpc/capr](./msrpc/capr) |
| [MS-CMPO](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-cmpo) | MSDTC连接管理器:OleTx传输协议 | [msrpc/cmpo](./msrpc/cmpo) |
| [MS-CMRP](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-cmrp) | 故障转移群集:管理API (ClusAPI) 协议 | [msrpc/cmrp](./msrpc/cmrp) |
| [MS-DFSNM](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dfsnm) | DFS命名空间管理协议 | [msrpc/dfsnm](./msrpc/dfsnm) |
| [MS-DHCPM](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dhcpm) | DHCP服务器管理协议 | [msrpc/dhcpm](./msrpc/dhcpm) |
| [MS-DLTM](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dltm) | 分布式链接跟踪:中央管理器协议 | [msrpc/dltm](./msrpc/dltm) |
| [MS-DLTW](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dltw) | 分布式链接跟踪:工作站协议 | [msrpc/dltw](./msrpc/dltw) |
| [MS-DNSP](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dnsp) | DNS服务器管理协议 | [msrpc/dnsp](./msrpc/dnsp) |
| [MS-DRSR](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-drsr) | 目录复制服务 (DRS) 远程协议 | [msrpc/drsr](./msrpc/drsr) |
| [MS-DSSP](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dssp) | 目录服务设置远程协议 | [msrpc/dssp](./msrpc/dssp) |
| [MS-DTYP](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dtyp) | Windows数据类型 | [msrpc/dtyp](./msrpc/dtyp) |
| [MS-EERR](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-eerr) | 扩展错误远程数据结构 | [msrpc/eerr](./msrpc/eerr) |
| [MS-EFSR](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-efsr) | 加密文件系统远程 (EFSRPC) 协议 | [msrpc/efsr](./msrpc/efsr) |
| [MS-ERREF](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-erref) | Windows错误代码 | [msrpc/erref](./msrpc/erref) |
| [MS-EVEN6-BINXML](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-even6/c73573ae-1c90-43a2-a65f-ad7501155956) | 事件日志BinXML编码 | [msrpc/binxml](./msrpc/binxml) |
| [MS-EVEN6](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-even6) | 事件日志远程协议版本6.0 | [msrpc/even6](./msrpc/even6) |
| [MS-EVEN](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-even) | 事件日志远程协议 | [msrpc/even](./msrpc/even) |
| [MS-FASP](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-fasp) | 防火墙和高级安全协议 | [msrpc/fasp](./msrpc/fasp) |
| [MS-FAX](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-fax) | 传真服务器和客户端远程协议 | [msrpc/fax](./msrpc/fax) |
| [MS-FRS1](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-frs1) | 文件复制服务 (FRS) 远程协议 | [msrpc/frs1](./msrpc/frs1) |
| [MS-FSR2](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-frs2) | 文件复制服务 (FRS) 远程协议版本2 | [msrpc/frs2](./msrpc/frs2) |
| [MS-ICPR](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-icpr) | ICertPassage远程协议 | [msrpc/icpr](./msrpc/icpr) |
| [MS-IRP](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-irp) | IIS Inetinfo远程协议 | [msrpc/irp](./msrpc/irp) |
| [MS-LREC](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-lrec) | 实时远程事件捕获 (LREC) 协议 | [msrpc/lrec](./msrpc/lrec) |
| [MS-LSAD](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-lsad) | 本地安全机构(域策略)远程协议 | [msrpc/lsad](./msrpc/lsad) |
| [MS-LSAT](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-lsat) | 本地安全机构(转换方法)远程协议 | [msrpc/lsat](./msrpc/lsat) |
| [MS-MQDS](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-mqds) | MSMQ:目录服务协议 | [msrpc/mqds](./msrpc/mqds) |
| [MS-MQMP](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-mqmp) | MSMQ:队列管理器客户端协议 | [msrpc/mqmp](./msrpc/mqmp) |
| [MS-MQMQ](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-mqmq) | MSMQ:数据结构 | [msrpc/mqmq](./msrpc/mqmq) |
| [MS-MQMR](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-mqmr) | MSMQ:队列管理器管理协议 | [msrpc/mqmr](./msrpc/mqmr) |
| [MS-MQQP](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-mqqp) | MSMQ:队列管理器间协议 | [msrpc/mqqp](./msrpc/mqqp) |
| [MS-MQRR](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-mqrr) | MSMQ:队列管理器远程读取协议 | [msrpc/mqrr](./msrpc/mqrr) |
| [MS-MSRP](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-msrp) | 信使服务远程协议 | [msrpc/msrp](./msrpc/msrp) |
| [MS-NEGOEX](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-negoex) | SPNEGO扩展协商 (NEGOEX) 安全机制 | [msrpc/negoex](./msrpc/negoex) |
| [MS-NRPC-SECCHANNEL](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-nrpc/fb50db72-7f71-478d-a180-12eb0ca3b36b) | Netlogon安全通道 | [msrpc/nrpc](./msrpc/nrpc) |
| [MS-NRPC](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-nrpc) | Netlogon远程协议 | [msrpc/nrpc](./msrpc/nrpc) |
| [MS-NSPI](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-nspi) | 名称服务提供程序接口 (NSPI) 协议 | [msrpc/nspi](./msrpc/nspi) |
| [MS-OXABREF](https://learn.microsoft.com/en-us/openspecs/exchange_server_protocols/ms-oxabref) | 通讯簿NSPI转介协议 | - |
| [MS-OXCRPC](https://learn.microsoft.com/en-us/openspecs/exchange_server_protocols/ms-oxcrpc) | 线路格式协议 | [msrpc/oxcrpc](./msrpc/oxcrpc) |
| [MS-OXNSPI](https://learn.microsoft.com/en-us/openspecs/exchange_server_protocols/ms-oxnspi) | Exchange NSPI协议 | [msrpc/nspi](./msrpc/nspi) |
| [MS-PAC](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-pac) | 特权属性证书数据结构 | [msrpc/pac](./msrpc/pac) |
| [MS-PAN](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-pan) | 打印系统异步通知协议 | [msrpc/pan](./msrpc/pan) |
| [MS-PAR](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-par) | 打印系统异步远程协议 | [msrpc/par](./msrpc/par) |
| [MS-PCQ](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-pcq) | 性能计数器查询协议 | [msrpc/pcq](./msrpc/pcq) |
| [MS-RAA](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-raa) | 远程授权API协议 | [msrpc/raa](./msrpc/raa) |
| [MS-RAIW](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-raiw) | 远程管理界面:WINS | [msrpc/raiw](./msrpc/raiw) |
| [MS-RPCE-EPM](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rpce) / [C706-EPM](https://pubs.opengroup.org/onlinepubs/9629399/apdxo.htm#tagcjh_35) | 端点映射器 | [msrpc/epm](./msrpc/epm) |
| [MS-RPCL](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rpcl) | RPC位置服务扩展 | [msrpc/rpcl](./msrpc/rpcl) |
| [MS-RPRN](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rprn) | 打印系统远程协议 | [msrpc/rprn](./msrpc/rprn) |
| [MS-RRP](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rrp) | Windows远程注册表协议 | [msrpc/rrp](./msrpc/rrp) |
| [MS-RSP](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rsp) | 远程关机协议 | [msrpc/rsp](./msrpc/rsp) |
| [MS-SAMR](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-samr) | 安全账户管理器 (SAM) 远程协议 | [msrpc/samr](./msrpc/samr) |
| [MS-SCH](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-tsch) | 任务计划程序服务远程协议 | [msrpc/sch](./msrpc/sch) |
| [MS-SCMR](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-scmr) | 服务控制管理器远程协议 | [msrpc/scmr](./msrpc/scmr) |
| [MS-SRVS](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-srvs) | 服务器服务远程协议 | [msrpc/srvs](./msrpc/srvs) |
| [MS-SSP](https://learn.microsoft.com/en-us/openspecs/sharepoint_protocols/ms-ssp) | 单点登录协议 | [msrpc/ssp](./msrpc/ssp) |
| [MS-SWN](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-swn) | 服务见证协议 | [msrpc/swn](./msrpc/swn) |
| [MS-TRP](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-trp) | 电话远程协议 | [msrpc/trp](./msrpc/trp) |
| [MS-TSCH](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-tsch) | 任务计划程序服务远程协议 | [msrpc/tsch](./msrpc/tsch) |
| [MS-TSGU](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-tsgu) | 终端服务网关服务器协议 | [msrpc/tsgu](./msrpc/tsgu) |
| [MS-TSTS](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-tsts) | 终端服务运行时接口协议 | [msrpc/tsts](./msrpc/tsts) |
| [MS-W32T](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-w32t) | W32Time远程协议 | [msrpc/w32t](./msrpc/w32t) |
| [MS-WDSC](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-wdsc) | Windows部署服务控制协议 | [msrpc/wdsc](./msrpc/wdsc) |
| [MS-WKST](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-wkst) | 工作站服务远程协议 | [msrpc/wkst](./msrpc/wkst) |
### DCOM协议
| 规范 | 描述 | 包 |
|------|------|------|
| [MC-CCFG](https://learn.microsoft.com/en-us/openspecs/windows_protocols/mc-ccfg) | 服务器群集:配置 (ClusCfg) 协议 | [msrpc/dcom/ccfg](./msrpc/dcom/ccfg) |
| [MC-IISA](https://learn.microsoft.com/en-us/openspecs/windows_protocols/mc-iisa) | IIS应用程序宿主COM协议 | [msrpc/dcom/iisa](./msrpc/dcom/iisa) |
| [MC-MQAC](https://learn.microsoft.com/en-us/openspecs/windows_protocols/mc-mqac) | MSMQ:ActiveX客户端协议 | [msrpc/dcom/mqac](./msrpc/dcom/mqac) |
| [MS-ADTG](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adtg) | 远程数据服务 (RDS) 传输协议 | [msrpc/dcom/adtg](./msrpc/dcom/adtg) |
| [MS-COMA](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-coma) | COM+远程管理协议 | [msrpc/dcom/coma](./msrpc/dcom/coma) |
| [MS-COMEV](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-comev) | COM+事件系统协议 | [msrpc/dcom/comev](./msrpc/dcom/comev) |
| [MS-COMT](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-comt) | COM+跟踪服务协议 | [msrpc/dcom/comt](./msrpc/dcom/comt) |
| [MS-COM](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-com) | 组件对象模型增强版 (COM+) 协议 | [msrpc/dcom/com](./msrpc/dcom/com) |
| [MS-CSRA](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-csra) | 证书服务远程管理协议 | [msrpc/dcom/csra](./msrpc/dcom/csra) |
| [MS-CSVP](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-csvp) | 故障转移群集:设置和验证协议 (ClusPrep) | [msrpc/dcom/csvp](./msrpc/dcom/csvp) |
| [MS-DCOM](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dcom) | 分布式组件对象模型 (DCOM) 远程协议 | [msrpc/dcom](./msrpc/dcom) |
| [MS-DFSRH](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dfsrh) | DFS复制辅助协议 | [msrpc/dcom/dfsrh](./msrpc/dcom/dfsrh) |
| [MS-DMRP](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dmrp) | 磁盘管理远程协议 | [msrpc/dcom/dmrp](./msrpc/dcom/dmrp) |
| [MS-FSRM](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-fsrm) | 文件服务器资源管理器协议 | [msrpc/dcom/fsrm](./msrpc/dcom/fsrm) |
| [MS-IISS](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-iiss) | IIS服务控制协议 | [msrpc/dcom/iiss](./msrpc/dcom/iiss) |
| [MS-IMSA](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-imsa) | IIS IMSAdminBaseW远程协议 | [msrpc/dcom/imsa](./msrpc/dcom/imsa) |
| [MS-IOI](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-ioi) | IManagedObject接口协议 | [msrpc/dcom/ioi](./msrpc/dcom/ioi) |
| [MS-OAUT](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-oaut) | OLE自动化协议 | [msrpc/dcom/oaut](./msrpc/dcom/oaut) |
| [MS-OCSPA](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-ocspa) | Microsoft OCSP管理协议 | [msrpc/dcom/ocspa](./msrpc/dcom/ocspa) |
| [MS-PLA](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-pla) | 性能日志和警报协议 | [msrpc/dcom/pla](./msrpc/dcom/pla) |
| [MS-RAI](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rai) | 远程协助发起协议 | [msrpc/dcom/rai](./msrpc/dcom/rai) |
| [MS-RDPESC](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpesc) | RDP:智能卡虚拟通道扩展 | [msrpc/dcom/rdpesc](./msrpc/dcom/rdpesc) |
| [MS-RRASM](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rrasm) | RRAS管理协议 | [msrpc/dcom/rrasm](./msrpc/dcom/rrasm) |
| [MS-RSMP](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rsmp) | 可移动存储管理器 (RSM) 远程协议 | [msrpc/dcom/rsmp](./msrpc/dcom/rsmp) |
| [MS-SCMP](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-scmp) | 卷影复制管理协议 | [msrpc/dcom/scmp](./msrpc/dcom/scmp) |
| [MS-TPMVSC](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-tpmvsc) | TPM虚拟智能卡远程协议 | [msrpc/dcom/tpmvsc](./msrpc/dcom/tpmvsc) |
| [MS-UAMG](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-uamg) | 更新代理管理协议 | [msrpc/dcom/uamg](./msrpc/dcom/uamg) |
| [MS-VDS](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-vds) | 虚拟磁盘服务 (VDS) 协议 | [msrpc/dcom/vds](./msrpc/dcom/vds) |
| [MS-WCCE](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-wcce) | Windows客户端证书注册协议 | [msrpc/dcom/wcce](./msrpc/dcom/wcce) |
| [MS-WMIO](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-wmio) | WMI编码版本1.0协议 | [msrpc/dcom/wmio](./msrpc/dcom/wmio) |
| [MS-WMI](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-wmi) | Windows管理规范远程协议 | [msrpc/dcom/wmi](./msrpc/dcom/wmi) |
| [MS-WSRM](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-wsrm) | Windows系统资源管理器 (WSRM) 协议 | [msrpc/dcom/wsrm](./msrpc/dcom/wsrm) |
### 其他
| 规范 | 描述 | 包 |
|------|------|------|
| [MIMICOM](https://gist.github.com/gentilkiwi/e3d9c92b93ed4bb48f7956492c1d335a) | Mimikatz命令接口 | [msrpc/mimicom](./msrpc/mimicom) |
### 文档
生成的代码包含从MSDN门户拉取的文档。由于上游HTML源代码的不一致性,准确性可能有所不同。
## 待解决问题
- 为什么IObjectExporter不支持NDR64?
- 为什么服务器对NDR64返回无法区分的指针?
- 为什么SMB2不支持某些认证级别(例如Winreg仅支持Insecure和Privacy)?
## 参考
- [Samba](https://www.samba.org/)
- [Impacket](https://github.com/fortra/impacket)
- [go-smb2](https://github.com/hirochachacha/go-smb2)
- [gokrb5](https://github.com/jcmturner/gokrb5)
## 贡献
提交PR前请先开一个issue。该项目仍在成熟过程中,可能存在未发现的bug。
标签:Awesome, DCE/RPC, DCOM, DNS解析, EVTX分析, Go库, Go语言, HTTP, Kerberos认证, NDR, NDR64, NTLM认证, SMB2, SOC Prime, SPNEGO, Windows RPC, Windows协议, Windows集成, WMI, 事件日志, 内核驱动, 分布式计算, 协议实现, 安全认证, 客户端库, 开发工具, 开源项目, 异常处理, 日志审计, 注册表操作, 生成桩, 程序破解, 系统管理, 网络协议, 网络安全, 身份验证协议, 远程访问, 远程过程调用, 隐私保护