《逆向工程核心原理》作者李承远:攻击越强,防御也会越强
李承远是韩国逆向工程技术专家,目前负责带领 AhnLab 安卓恶意代码分析团队。他以前是C/C++开发工程师,后来加入安全公司并从事恶意代码分析工作。如今,李承远在安全公司 AhnLab 从事恶意代码分析已有十年,在此期间他分析了大量的恶意代码,并开发出了对恶意代码进行自动分类多种程序。他带领的安卓恶意代码分析团队,从全球认证企业 获得了“世界最高诊断率纪录”。2009 年起,他开始运营逆向分析技术专业学习博客。从世界各地博客访客的留言中,他燃起了写作《逆向工程核心原理》这本书的想法。
您当初是如何从 C++ 工程师转行加入安全公司的, 是什么样的机会呢?
以前单位的前辈向安全公司推荐了我,作为开发人员,我对恶意代码分析感到十分新奇有趣,所以跳槽了。
非安全领域的程序员怎么才能迈进安全领域的大门?
如果您希望在逆向工程领域就业,最好通过网络社区交流等活动,与观点类似的人进行沟通。因为进入新领域的时候,最重要的就是获取多种信息。其实要想成为逆向工程师,也不一定非要从开发人员做起。
逆向工程所需要的知识很综合,您是否考虑在每章附上一些其他的学习资料供读者选择?作为《逆向工程核心原理》的补充,您有什么其他的书籍或学习材料推荐吗?
我本人从两本书中获得了很大帮助,它们都十分有助于深入理解 Windows 操作系统。
- Windows Via C/C++, Jeffrey Richter / Christophe Nasarre Microsoft Press 《Windows 核心编程》,清华大学出版社
- 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,但的确值得企业引进。