2014年7月16日,由360承办的2014亚洲知名安全技术峰会SyScan360强势登陆北京。来自Coseinc的OSX领域的专业研究员Pedro Vilaca介绍了如何逆向HacKing Team的OS X商业间谍软件Crisis。Pedro Vilaca喜欢rootkits,破解软件保护及挑战HacKing Team。最近转向白帽并试图为OS X打造最好的企业终端安全解决方案。
来自Coseinc的OSX领域的专业研究员Pedro Vilaca
针对目前的OS X攻击样本我们可以了解到攻击的这样一些特性与能力:其可以监控麦克风、监控摄像头、实现屏幕截图、记录键盘和鼠标的操作、保存Skype/MSN记录以及监控浏览器等等。它可以通过Exploit,以邮件形式将它发出来,然后进入到dropper,最后把它放到后门模块。
什么叫dropper?一般通过溢出Flash,Word等释放代码,有些发送邮件或者通过其他社会工程学方式,让用户安装,但它本身并不大,小于1MB。dropper试图隐藏真实的程序入口,使用虚假的main()函数,如果是有经验的人可以通过检查Mach-0头部数据轻易发现。
针对dropper,Pedro Vilaca给出了很专业的建议:不需要Mmap的库,因为它们每个流程的进程都有一个mmap;利用dyld共享缓存特性;重要的库是被缓存的,可以直接从内存读取它们,但是还是需要寻找部分dyld函数。
在本届会议现场,Pedro Vilaca详细介绍了OS X商业间谍软件Crisis的核心——后门模块。后门模块主要负责与C&C通信、注入到目标程序中、记录与Rootkit控制等工作。
此外,因发现最近市面上最近检测到的样本中将后门与MPRESS打包来绕过逆向工程,他还探讨了打包,如何解包,如何构建自动解包器,以及调试技巧。
特别提醒,关于解压问题,大家需要注意以下几个方面:
在转储之前头部数据必须解析;
使用文件大小域和偏移域转储正确的数据大小到磁盘;没有其它需要修复的内容;
_DATA段是0x1000字节,在转储映像里太大了;
二进制转储会导致崩溃,因为_OBJC和_LINKEDIT指向了磁盘上的虚假数据;
并不是所有的样本都可以转储;内存中的大小和文件中的大小可能会不一致;
一个简单的转储可能导致文件偏移指向错误的数据。
另外,针对调试技巧,Pedro Vilaca提供了两种反调试方法,一是对于后门模块来说,利用Sysctl反调试方法,可以检测一个线程是否有调试器存在,若存在则退出,这个很容易绕过线程,而且会移除掉对新线程的函数调用。二是,如果你想调试一个被隔离的后门模块,你需要在配置检查出patch。
最后,Pedro Vilaca为大家介绍了加密用法,配置和可用的功能,以及大部分功能的实现方法,也就是捆绑注入,并回顾了C&C communications及内核rootkit。