阅读:2741回复:0
无处不在的监控: Hacking Team:WP8 监控代码分析
◆0 背景
最近Hacking Team被黑客入侵,近400GB的资料泄漏,在安全界炒的沸沸扬扬.其中泄漏的资料包括:源代码,0day,资料入侵项目相关信息,相关的账户密码,数据及音像资料,办公文档,邮件及图片。 Hacking Team在意大利米兰注册了一家软件公司,主要销售入侵及监视功能的软件。其远程控制系统可以监测互联网用户的通讯,解密用户的加密,文件及电子邮件,记录各种通信信息,也可以远程激活用户的麦克风及摄像头。其产品在几十个国家使用 201507160706214828307f3f91803c04d426f05a1101a7ba097 在源代码中有各个操作系统平台的远程控制软件源码,RCS(Remote Control System)。经过我们的分析,发现其监控内容不可谓不详尽。Android,blackberry,ios,windows,window phone,symbian均有与之对应的监控代码。 在源码中,rcs为前缀的源码文件是其远控功能,包括代理 控制 监控数据库 隐藏ip 等,而针对特定平台架构的是以core前缀命名。其中和相关window phone监控代码在core-winphone-master.zip文件中。其主要用于实时手机系统的系统状态信息如(电池状态,设备信息,GPS地址位置),联系人,短信记录,日历日程安排,照片;同时还能录音,截取手机屏幕,开启摄像头,话筒等功能,由此可见监控信息的详细程度令人害怕。 20150716070623193560de16b0815b6a4cab43b03c470141e94 ◆1 WP8监控源码分析 core-winphone-masterMornellaWp8MornellaWp8下是其主要核心代码,主要文件如下: 201507160706253676117109a304ec12d528c1026c85f3ae476 通过观察源码流程图可以看出,整个监控项目源码的逻辑还是比较复杂的,但是深入之后,发现其还是设计的比较巧妙 2015071607062766311b98170077708e0bcb65afc961aaaf0c5 ◆1-1 程序框架分析 1.项目主要分为3大块Modules,Events,Actions,主要的功能Modules核心监控代码在此处,Event等待监控事件的到来并调用对应的监控模块,Action主要负责一些行为的启动和停止 程序启动流程如下: main->mornellaStart->BTC_Init->CoreProc->Core->Task setLoadLibraryExW分支主要负责加载一些API函数的地址,做一些初始化工作 201507160705548643588949f2bdd7d8a2043a72f68827c208d 最后Task创建了3大模块的管理对象ModulesManager,EventsManager,ActionsManager 并在Task::TaskInit()中启动了events 2015071607055711573bbbfa2c70bcfa722d5ef480414020e0f ◆1-2 Event模块分析 Event主要负责以下事件的监控,例如短信,日历日程安排,联系人,地址位置,电池状态,进程信息,计时器状态等信息 20150716070558990087ab30c5bf7d232d49b3d0c776654d32e 所有的event均以json格式发送,并调用conf.cpp下的ParseEvent进行解析,源码部分逻辑被注释上了,经过搜索发现被注释上的功能最后没有相关的实现代码. 20150716070601649541d43eececa11e3f15e840356bc1a8c4a 我们选择电池状态监控为例,在OnBatteryLevel函数中,首先通过RefreshBatteryStatus刷新了电池的状态,deviceObj->GetBatteryStatus()得到当前的电池状态,最后me->triggerStart()添加到ActionManage中的Action队列中 2015071607060213307f2200de2625ebfc077b62a2401d4332b ◆1-3 Action模块分析 Action模块主要是3个类 ActionManage,Action,SubAction其中ActionManage主要维护一个Action队列,Action是抽象的接口,而执行的实体主要是SubAction。 SubAction主要处理synchronize,execute,uninstall,module,event,sms,log,destroy等行为的执行 2015071607060596099f0bf6471cb00f6fd8b520b89205c376e 而在处理module时用了start类进行启动,Start首先初始化了一个ModulesManager对象,然后在调用conf对获取对应的module信息,并调用ModulesManager->start()启动对应的模块。 2015071607060619012f8117edc419b65efa66ca4d9dfc1c531 ◆1-4 Module模块分析 Module模块同上面的模块结构保持一致,也是一个ModuleManage负责维护一个Modules队列。 进行外层调度,Module类是一个抽象的接口,负责统一调用接口,主要的模块接口如下. 这些模块,完成了获取设备信息(如:操作系统版本,设备ID,电量,应用程序列表,进程列表,可用磁盘空间,内存信息,处理器架构),联系人,一些社交帐号信息,同时还能开启摄像头,话筒,截取手机屏幕等功能 2015071607060888532db525337dcbf2dc6b26c3fb3d0b9397a 1.获取的设备信息,代码主要在DeviceInfo.cpp中 2015071607061015332dc2b0aff3875c4c5ef80a069b1fbb2ed 2.获取联系人的以及社交网站的帐号密码,代码主要在PoomAddressBook.cpp中 20150716070611178595df299a32b5f93bc526cef4302fa9d3c 3.日历日程安排,代码主要在PoomCalendar.cpp中 2015071607061389134ef425388f11ef05b5d4c3451848018cb 4.截图功能(代码在SnapshotGrabber.cpp中,但是该部分代码已经被注释) 2015071607061590918e5e969e2991fb018b4c1a4768a696780 5.开启摄像头(代码在NativePhotoCaptureInterface.cpp中) 201507160706161027207042cde4921caae78d4cf7a8a2ea798 其主要通过WP的PhotoCaptureDevice API接口来实现,当你在啪啪啪的时候,你的摄像头被开启,那是种什么样的感觉呢? 2015071607061951090483c4b9f556ab611fe5a002d4681fcce 其他的一些监控行为就不一一叙述了,大多都可以通过调用WP的接口来实现。 ◆2 感染途径 Window在新推出的WP8上做了很多对非越狱用户的保护,只能安装应用商店中的软件,但是WP8可以通过一个链接访问应用商店中的某个APP,当被攻击者被欺骗的安装了该APP应用,该APP遍可以通过WP提权的漏洞来提升运行权限,即可执行高权限代码,带来的后果非常严重,所以我们要警惕一些钓鱼欺诈的应用。 而对于越狱用户,别人可以直接把应用捆绑在越狱工具,在越狱的过程中,即可捆绑安装他们的APP应用,如果这个应用是恶意的,那么后果可想而知,然而在越狱后的WP系统安全性也将大打折扣.所以我们最好不要轻易的越狱。 Hacking Team是拥有微软的企业证书的,而具有企业证书的公司可以将自己的应用提交到商店供人下载,不用授权即可安装,不论是否越狱都可以安装上去,然而从应用商店下载的程序,用户一般都会认为是安全的。 由于Window Phone用户较少,反馈的问题可能也比较少,相关的开发维护人员也相应的比较少,可能会存在一些不为人知的安全漏洞,可以突破Window Phone8的安全限制,将恶意程序安装上去,还可能存在某些已经安装的应用存在漏洞,利用这些具有漏洞应用结合提权漏洞,将恶意的应用安装到设备上。 ◆3 小结 通过Hacking Team泄漏的这些资料来看,Hacking Team团队还是具备非常专业的水平,但是强如Hacking Team的公司都被入侵了,你手机里面的那些私密照片还保险么? 建议: 1.不要随意安装不知名的应用 2.及时更新系统的安全补丁 3.社交帐号设置复杂的密码 4.给私密的照片加密 |
|