`

Dynamic Code Obfuscation — 最精确地理解DCO(二)

阅读更多

translated from:  http://www.finjan.com/Content.aspx?id=1456

 

黑客们玩“猫与老鼠”

 

动态代码混淆技术是黑客们与安全专家们长期智斗的产物。为了响应安全专家们关于检测“加密恶意代码”的努力,黑客们发明了动态代码混淆技术,该技术使得一个新的访问者访问恶意网站时代码被不同地混淆(方式不同)。代码混淆已经存在一段时间了,动态代码混淆由于其复杂性和流行性将成为值得关注的趋势.由于它有效地迂回传统“数字签证”(signature-based solution),已经成为传播恶意代码的有利武器。动态代码混淆,自动混淆代码和其它的编码方法便利黑客们安置不可见的恶意代码,在用户访问那个恶意站点时其机子就中标了。

 

动态混淆技术的广泛流传早由MCRC的2007年春的调查报告分析中出现了。通过分析UK多于10,000,000个URLs,Finjan发现80%被检测到的恶意代码都是被混淆的以规避数字签证产品(如anti-virus, IDS/IPS,URL)的过滤。

 

规避数字签证安全工具的复杂策略

 

动态代码混淆技术在黑客与安全公司间的棋局上不断发展进化。早期安全专家们检测恶意代码用的是词法分析,它扫描代码并识别执行恶意操作的记号(如删除文件,访问注册表)。当黑客们意识到这种安全策略,他们便开始通过加密或串联字符串或其它方法来隐藏或者混淆代码。被混淆了的代码在anti-virus scanners看来就是良性字符串,不能被检测出来哦。恶意行为在代码被解码时(即运行时)呈现出来。

 

为了能检测出恶意代码,anti-virus发明了一种“js/wonka”的数字签证,它能大体检测出那些包含有一些可能用于混淆脚本的功能函数的静态页面。黑客们响应这个防御策略通过开发动态代码混淆技术。换句话说,每个访问恶意网站的人都会收到一份恶意代码实例,这基于随机函数或可变参数。理论上讲,一个数字签证安全策略将需要成千上万的signatures来检测这些特别的恶意代码段并阻止它们。结果,动态代码混淆使得很多老式攻击(能被混淆和重用的)复活了。

 

考虑一下下面这段动态混淆代码,它是在2006年冬在一个俄国网站上检测出来的。一旦用户进入该站点,无需交涉,脚本将会解析混淆代码并执行它。

 

混淆代码示例

 

一个熟悉JS语言的人可能留意到代码中函数和参数名是随机的。这种类型的攻击迂回数字签证检测,因为数字签证检测没有能力处理无限多可能性。译码后代码如下图所示:

 

译码后的代码

 

实时代码检测忙于动态网页威胁

 

只有一个办法能防住动态混淆代码及类似的黑客技术,那就是在网页内容到达终端用户之前,动态地分析并理解嵌在内容中的代码。

前摄的,基于行为的安全策略对每一块内容实施了纵向分析,无论它来自什么源。这种分析将代码破为N块,理解代码想去做什么(在它们做之前)。结果呢,这种策略能够识别那些将要执行恶意或可疑操作的代码,在周边上把它阻止掉,而不是允许它进入网络后依赖于桌面安全策略。

 

但是,我有我的疑问:

1.文末提及的衬里代码检测是在服务器端进行的么?如果是,那么它在发出前是混淆的呀,明明检测不出结果来;如果不是在服务器端而是在浏览器端,那么末句“允许它进入网络后………”又该怎么理解。

2. 比如在Mozilla Firefox中,是在解释器一级作拦截么?那怎么“成片成片”地检测呢?一次不是只能解释执行几句话么?

 

请高手 大师 黑客大爷们指点一二呀,不胜感激!

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics