APP下载

戴夫寇尔剖析漏洞与制作攻击验证工具

2019-10-09 21:49

图片来源: 

周峻佑摄

专精于找寻漏洞的戴夫寇尔,今年举办的资安大会中,有2场他们在台湾发现的资安漏洞演讲,它们的共通之处,就是在许多民众习以为常的资讯设备或系统上,发现可被滥用的弱点。我们先前整理了有关中华电信家用网络调制解调器的漏洞,而他们公开的另一项漏洞,则是戴夫寇尔去年与网擎资讯合作,由网擎资讯提供测试环境,并且同意戴夫寇尔透过逆向工程等管道,所发现Mail2000网页邮件系统上的漏洞。

Mail2000是台湾本土厂商网擎资讯所开发的解决方案,发展已经超过10年以上,有许多企业、公部门,以及教育单位采用。这套产品最新的版本为7.0,企业部署的方式相当多元,包含了硬件设备、纯软件,以及云端服务(MailCloud)等。

负责寻找Mail2000漏洞的戴夫寇尔资安研究员Meh,揭露她当时找出网擎Mail2000网页邮件服务CGI漏洞的过程。虽然攻击对象是网页应用程序,一般来说,骇客多半会从前台下手,找寻能够利用的漏洞。但对于专精找寻应用程序漏洞的Meh来说,她发现,网站后台的元件,也与一般应用程序相同,是透过许多二进制执行档(Binary)组合而成,因此,在她检视Mail2000的系统架构后,发现还是有不少可以尝试攻击的地方。

戴夫寇尔资安研究员Meh发现的漏洞,来自libm2k和libm2kc等2个程式库。(摄影/周峻佑)

而透过Binary的角度来看待网页应用程序时,也会出现另一种的思维。由于一般的套装软件被发现漏洞时,所有部署相同软件的设备,都会受到影响,企业若是没有充分的资产盘点,逐一修补,想躲都躲不掉。Meh甚至形容,Binary漏洞的威力,有如核武般的恐怖,以这次发现的漏洞为例,红队演练的队员若是发现企业环境中建置Mail2000服务器,再加上没有安装修补程式,可能就直接从管理者的信件里,找到存取企业内部环境所需的账号密码,而无须侦察相关漏洞。

然而,网页应用程序通常采用动态呼叫的方式运作,导致每次执行使用者的请求时,都会视为全新执行的处理程序,而取得不同的内存区块,对于骇客而言,便必须在无法指向特定内存区块的限制下进行攻击。

发现漏洞后必须制作能够利用的攻击工具

Meh表示,越底层的漏洞越泛用,所以她决定朝程式库下手。这次发现的漏洞,出现在网擎实作的libm2k与libm2kc两个程式库中,它们处理连线过程的验证,并且具备CGI通用函式的功能。她发现了内存越界写入漏洞,参数数量能够超过阵列大小,而且,只要有使用参数的CGI都能触发。Meh指出,若是网擎其他产品也运用这两个程式库,也会受到影响。

接着,他们就开始研究如何利用这个漏洞,Meh说,在Binary的渗透手法中,利用FILE结构的特性,就能挟持程式的执行流程,因为,可执行程式未必会做档案处理,却一定会有STDERR,也就是输出错误讯息的指令。因此,她就规划了初步的渗透流程。

在拟定的攻击方法里,她先建立连线,呼叫CGI,然后使用大量参数覆写vector指标,并且伪造POST file里的FILE,指向伪造的FILE结构指标,最后在CGI的流程呼叫FILE执行相关操作,得以挟持程式的运作流程。但是这个时候,因为Linux操作系统内建的内存存取保护机制,也就是位址空间配置随机载入(Address Space Layout Randomization,ASLR),会在应用程序每次执行时,重新分配所需的内存位置。也就是说,Mail2000呼叫CGI的时候,存取所需的应用程序,都会取得不同的内存区块。

Meh发现了程式库的内存越界写入漏洞,但真正实际要拿来发动攻击,必须解决Shellcode指向内存位置的问题。(摄影/周峻佑)

基于上述的原因,Meh说,他们必须在没有固定内存位置的情况下,执行渗透攻击,为此,先后写出了2个专用的CGI程式。

第1个CGI攻击程式名为msg_read,其特点是程式的功能较多,其中内含能够发动内存堆叠溢位攻击(Heap Spray)的模组,也就是称为返回导向程式设计(Return-Oriented Programming,ROP)的Gadget数量,比较丰富。他们再搭配意外发现Mail2000的另一项弱点,也就是开发者开放了stack的可执行权限,得以直接绕过系统,执行壳层指令(Shellcode)。

但上述CGI真正难以实际运用的问题,在于攻击者必须登入Mail2000系统,才能发挥作用。因此,Meh又再制作了第2个CGI攻击程式,名为cgi_api。

顾名思义,这个攻击程式用途是呼叫程式库的API界面,而无法像前一只程式使用ROP攻击,也因为第2个CGI程式的特性,Meh发现,他们只要利用CGI的特性,让HTTP的变数存放于环境变数里,就能直接让壳层指令复制到stack上执行,实际上根本不需要透过ROP手法。

这个时候执行的问题,又回到前述与ASLR机制有关的内存定址。但Meh发现,Mail2000是32位元的应用程序,内存可能的位址,只有4,096种,透过暴力破解,仅需要几分钟的时间,就能得到真正的位址,进而执行壳层指令,取得Shell。她说,虽然资安人员总想要像狙击手帅气的一击毙命,但这次的例子中,暴力破解才是务实的作法──只要拿出大炮全面扫射,打中敌人就能达标。

从这次发现漏洞的过程中,我们可以看到,骇客想要攻打目标,过程中会依据执行的结果,持续修正做法,调整思维,甚至是推翻先前的策略,进而达成目的。

相关文章

最新资讯

  • 浙江阿拉丁电子商务有限公司受邀参加第九届数…
    2019-10-22 11:56
  • 代号2020“轰九”登陆 老车主期待早日服役
    2019-10-22 11:53
  • 银联正式发布“刷脸付”产品,补贴战一触即发
    2019-10-22 10:53
  • 51信用卡创始人孙海涛微博发声:我们非常自责
    2019-10-22 10:52
  • Deepin 20 - 外媒称它是最漂亮的Linux操作系统
    2019-10-22 09:55

手机

  • Pixel 4被抱怨影片录制仅支援4K、30fps规格 Google表示画质和储存空间更重要
    2019-10-22 09:49
  • 联手 Yahoo / Verizon Media 中华电信宣示发展 5G 影音娱乐内容
    2019-10-22 07:48
  • Pixel 4都不能免费以原图储存在Google相簿上 为什么 iPhone 竟可以免费?Google表示:是Bug
    2019-10-21 16:48
  • HTC推出平价版 EXODUS 1s区块链手机 价格新台币5,990 元
    2019-10-21 15:47
  • 承诺解决 Pixel 4 闭眼解锁漏洞 Google 将在几个月内修正让你可以安心睡觉
    2019-10-21 13:48

数码

  • 音乐爱好者的福音,Baseus倍思推出多款音频设…
    2019-10-22 11:58
  • 你家的WiFi升级了吗? 上京东满足你的飚速网络…
    2019-10-22 11:58
  • 乐视414电商节 21.7亿 电视38.6万手机44.7…
    2019-02-20 07:45
  • 苹果无人车要来了 加州监管部门正式允许苹果测试
    2019-02-20 07:45
  • 一加 7T/Pro 今日开售
    2019-10-22 09:58

科技

  • 木匠黄章的故事才刚刚开始 魅族16确实值得期待
    2018-07-23 13:31
  • 32GB的iPhone7plus经常提示储存空间不够用要怎么办才好?
    2018-07-23 13:31
  • 即使亏损 B站也要把上万人线下活动开到北京 为什么?
    2018-07-23 13:31
  • 魅族16最新爆料:超高性价比+更多新功能
    2018-07-23 13:31
  • 专访Rokid王舜德:揽括AI芯片、硬件和开放平台 这个公司疯了吗
    2018-07-23 13:31