李承远是韩国逆向工程技术专家,目前负责带领AhnLab安卓恶意代码分析团队。他以前是C/C++开发工程师,后来加入安全公司并从事恶意代码分析工作。如今,李承远在安全公司AhnLab从事恶意代码分析已有十年,在此期间他分析了大量的恶意代码,并开发出了对恶意代码进行自动分类多种程序。他带领的安卓恶意代码分析团队,从全球认证企业获得了“世界最高诊断率纪录”。2009年起,他开始运营逆向分析技术专业学习博客。从世界各地博客访客的留言中,他燃起了写作《逆向工程核心原理》这本书的想法。

您当初是如何从C++工程师转行加入安全公司的, 是什么样的机会呢?

以前单位的前辈向安全公司推荐了我,作为开发人员,我对恶意代码分析感到十分新奇有趣,所以跳槽了。

非安全领域的程序员怎么才能迈进安全领域的大门?

如果您希望在逆向工程领域就业,最好通过网络社区交流等活动,与观点类似的人进行沟通。因为进入新领域的时候,最重要的就是获取多种信息。其实要想成为逆向工程师,也不一定非要从开发人员做起。

逆向工程所需要的知识很综合,您是否考虑在每章附上一些其他的学习资料供读者选择?作为《逆向工程核心原理》的补充,您有什么其他的书籍或学习材料推荐吗?

我本人从两本书中获得了很大帮助,它们都十分有助于深入理解Windows操作系统。

  1. Windows Via C/C++, Jeffrey Richter / Christophe Nasarre | Microsoft Press 《Windows核心编程》,清华大学出版社
  2. Windows Internals, Mark Russinovich / David A Solomon / Alex Ionescu | Microsoft Press 《深入解析Windows操作系统》,人民邮电出版社

移动安全得到越来越多人的重视,关于Android安全软件,您有什么推荐的学习资料和书籍吗?

我目前还没有看到什么安卓方面的书值得推荐,不过建议各位可以参考developer.android.com上的官方资料,尝试分析源代码。

许多Android安全软件不断去破解Android本身的安全机制,以便使用更强大的功能支持其工作,您是如何看待这种自相矛盾的情况呢?

众多安卓手机用户都先rooting后使用,在这种rooting环境下,恶意软件会通过root权限进行更隐蔽而强烈的攻击,而安全软件又不得不通过相同的root权限进行防御。韩国的rooting用户比较少,还不算什么大问题,但在rooting用户相对较多的中国,恶意软件与安全软件的拼杀会以何种方式进行,我将一直保持高度关注。

现在商业的虚拟机加密也越来越常见了,效率损失的不低,但是加密强度确实非常高,随机性也强,逆向工程技术是不是遇到瓶颈了?

您是说“逆向分析技术已经停滞,不再发展”了吗?也没有那么绝对。攻击越强,防御也会越强。人们一定会针对新的攻击方法开发出新的防御方法,一切只是时间问题。

对于现在不断涌出的新的脚本语言,脚本程序也可能被感染,您觉得这样的文件检测恶意软件容易吗?

现在也有很多脚本病毒格式。脚本文件越多、安装到用户PC的越多,脚本病毒也就越多。脚本病毒的检测就像其制作一样容易。

各种新的程序语言,他们可能用自己的库对API进行封装,对这样的程序逆向或者检测有什么好的思路吗?

可以用常规逆向方法,但实际并不容易。如果开发了适合该语言的专用逆向分析工具,就完全可以保质保量地进行逆向分析,但开发新工具的过程要耗费大量时间。

逆向工程是一把双刃剑,既可以检测分析病毒,也可以用来破解商业软件,对于这种情况你怎么看?

安全技术需要很高的伦理意识,逆向工程师灵活运用自己掌握的技术,就能作为安全方面的专家为社会做贡献;如果恶意使用,将自己视作恶意代码编写者,就会为他人带来损失,所以我才说它是双刃剑。

利用逆向工程可以分析恶意代码、检测蠕虫、反病毒,但技术人员也可以利用逆向工程,来对某款杀毒软件检测病毒的行为进行反-反病毒研究,从而躲过杀毒软件的检测。像这种博弈可能未来很长一段时间内都会继续存在。关于未来检测恶意软件的方法,您有什么好的想法吗?

恶意代码编写者一直试图使杀毒产品无效,安全专家又为了避免这种行为而开发反-反杀毒技术。这就是安全领域从业人员无法摆脱的宿命。

这种情况下,人们引入了检测恶意软件的多种方法之一——Clean OS,这是一种White List分类方法。它使企业PC中只能安装使用公司规定的软件,其他所有运行的软件都被诊断为Risk,并从运行之初就进行拦截。虽然这个方法很难适用于个人PC,但的确值得企业引进。


更多精彩,加入图灵访谈微信!