Windows远程执行
前言
1、在办公环境中,利用系统本身的远程服务进行远程代码执行甚至内网穿透横向移动的安全事件是非常可怕的,因此系统本身的一些远程服务在没有必要的情况下建议关闭,防止意外发生;
2、作为安全人员,了解远程执行的方法或者原理对于防范或者事件监控也都是很有必要的;
以下只是一些简单的示例,如有不对的地方,请大家指正,我会立马修改!!!
一、利用powershell 远程执行
1、通过winrm服务进行远程操作
Get-Service WinRM ##查看winrm状态
Enable-PSREmoting -Force ##启用配置系统接收远程命令
防火墙规则也会多出监听端口
如果计算机已经加入了域,直接可以发起连接,若没有需要先做一步信任设置,然后重启winrm服务
A连接B 需要在A上面设置信任B
set-item wsman:\localhost\client\trustedhosts B主机ip ##信任设置
Restart-Service WinRM ##重启winrm服务
get-item wsman:\localhost\client\trustedhosts ##查看信任ip
clean-item wsman:\localhost\client\trustedhosts ##去掉信任ip
测试远程连接
powerShell 还提供了一个命令用来测试远程主机是否开启了远程操作服务:
test-wsman 主机IP地址
创建远程连接 Session
enter-pssession -computername 主机IP -credential 主机用户名
已连接 且B主机无感知 可执行命令
Exit-PSSession 退出连接
2、自动化脚本
命令被执行了,但缺陷也很明显:需要用户输入密码,因此无法被写到脚本中进行自动化操作
使用如下办法就可以实现脚本自动化
$Username = 'xxxx'
$Password = 'yyyy'
$pass = ConvertTo-SecureString -