移动端C#病毒“东山再起”,利用知名应用通信实现远控隐私窃取

伴随着手机的全面普及和移动互联网的发展,以移动终端为平台的攻防对抗也愈演愈烈。针对日益升级的恶意代码检测技术,恶意攻击者的反查杀手段相应也在不断变化应对。早在2015年,安天移动安全就发现一例利用C#编写以逃避查杀的恶意代码,并对其进行了技术分析。

  近日,安天移动安全联合猎豹移动安全实验室又捕获一例类似的病毒,该病毒使用MonoDroid框架进行开发(MoniDroid是以C#语言和部分.Net基类库为核心,使用mono虚拟机为Android平台开发应用的代码框架),MonoDroid框架开发的特点是开发者编写的逻辑代码都会最终编译在dll文件中,而不是常规的dex文件中,因而常规的反病毒检测手段对这类应用一般都会失效。此外,该病毒使用了知名应用Telegram的Bot进行通信,相较于传统的C&C域名通信具有极强的隐蔽性。安天移动安全团队联合猎豹移动安全实验室对其进行了深入分析并发布技术报告,全文如下。

一、样本信息

二、静态分析

  首先从AM文件中,可以看到该病毒申请了一系列与窃密行为相关的权限:

  此外,在AM文件中还看到其注册了各种receiver用来监听系统消息。

  深入查看一个用来接收当有电话打入时的receiver,在该类中我们并未发现一些实际功能代码。在onReceiver函数中,其直接将Context和Intent转交给了一个native方法n_onReceive,然而尴尬的是在这个类中,我们并没有看到有loadLibrary的so文件,而这其实利用的是Mono框架实现的。

  在dex文件中其他的几个类也都存在类似的情况:

  MainActivity也是如此:

  从以上静态分析中,可以了解到该病毒dex文件中基本没有实质性的代码,这里的原因主要来源于MonoDroid框架允许开发者在.Net平台使用C#进行开发,而这意味着我们基本不可能在dex文件中有所得。

三、恶意行为分析

  该病毒的核心恶意模块为google.tools.dll文件,通过对该文件进行反编译后获得该病毒的核心恶意行为。该病毒的整体攻击流程如下图所示:

Step1:自我隐藏并初始化Telegram Bot

  当用户安装应用后,该病毒首先通过MainActivity的onResume()方法,弹出虚假提示框告知用户该程序无法运行并自动卸载,卸载完成后自动隐藏图标,为后续的恶意行为不被发现做好铺垫。而这也是当前常见的恶意代码自我隐藏的主要方式。 隐藏完毕后,该病毒启动下述服务,首先进行了语言识别,针对非英文语言环境会默认显示波斯语。

  mainservice中包含部分组件设置、绑定以及Telegram Bot API(后文简称TBA)模块的初始化相关的行为:

  值得一提的是,该病毒设置了定时器对相关核心恶意服务是否存活进行监控,如果挂掉了,就重启之。

  此外,该病毒还另外注册了两个Telegram的消息回调函数。在这里再次暴露了其通过利用知名应用Telegram提供的框架实现某些重要功能的意图:

Step2:远程控制设备

  在此之前我们也曾发现过一些使用TBA进行通信的样本,本次发掘的样本基本采用纯TBA进行通信,该病毒的远控的行为设计的十分完备,关键操作(文件增删、关键服务的启闭、关机重启被控端、卸载自身等)都需要主控端二次确认操作,分发起操作和确定操作两步。在文件管理功能方面基本上做到了PC端的远控的水平,集合了文件预览、上传、下载、移动、重命名等诸多功能。对于被控端的短信,来电等内容,在主控端可以做到“消息实时推送“级别的接收响应,另外这些功能都可以通过主控端随时进行开闭操作。同时主控端可以控制被控端设备的关机、重启(该功能需要被控端是已经被root的设备,该病毒自身不拥有提权功能),主控端可以随时发起被控端卸载该病毒、实时开启摄像头拍照、实时屏幕截图(需root)、获取实时地理位置信息。

  总的来说这款病毒在软控功能上设计的十分完善,主控端和被控端的可以进行灵活的交互,这点大大区别于其他普通的Android病毒,这在一定程度上得益于TBA提供的各种完善的网络传输方法。

  android.os.CTRLCB类的CTRLMESS()方法中包含了所有控制指令,整理如下。基本上所有上述指令中具体相关功能都在android.os.DoWork中有所实现。

Step3:Root模块检测

  由于远控行为中包括的远程开机、重启、屏幕截图等功能的实现需要设备的Root权限,因此在相关功能执行前,该病毒会先进行Root模块的检测,确认设备是否已经Root。如果已Root,则通过申请Root权限进行相关恶意行为的实施:

Step4:设置定时操作

  该病毒还特别创建了定时操作线程,按照规定的时间间隔进行恶意行为的执行,定时操作分别为:每小时执行对所窃取的隐私信息存放的缓存空间的释放工作;每五秒执行一次,检查采集地理位置的Service是否还在工作:

  而上述定时执行的线程还负责对获取到的隐私信息的定时上传:

Step5:监控亮屏行为激活守护主恶意服务

  亮屏动作的捕获主要是为了实现对主恶意服务mainservice的存活守护,结合上述的定时执行线程以及定时服务探活和激活的逻辑,都足以看出该病毒开发者对保护自我服务的“用心”:

Step6:其他隐私信息窃取

  (1)窃取手机图片

  通过onStartComand方法,启动一个服务去定时获取手机存储中的所有图片类型的文件:

  该病毒专门对此服务设置了定时器去进行“服务守护”,如果服务挂掉,重启之。

  **(2)监听短信模块 **

  从+98编码可以看出,该病毒的活动范围为某中东地区。此外,该病毒还会监听短信发送行为:

  **(3)窃取通话录音记录 **

  **(4)利用相机拍照 **

  **(5)获取通讯录 **

  **(6)窃取来电记录 **

  监视网络变化,上传通话记录,守护恶意服务:

  **(7)获取地理位置 **

四、事件分析

  从我们捕获到的样本上来看,该病毒基本上都是伪造的工具类应用,包名google.tools、System.OS也非常普遍,我们很难从这些地方发掘出可能的攻击对象和目标群体属性。 但是根据在应用中出现的波斯语设置以及在短信监听中出现的+98国际区号的线索,我们推测出,该病毒的活跃地区应该是某中东国家。此外,在分析的过程中我们发现了一个疑似主控端Telegram的账号主页:https://telegram.me/Qhack。该主页账号指向的是Telegram的某位用户账号“Qhack”。我们在Telegram上搜索这个用户,结果如下:

  从第二张图片中,我们可以发现这个账号在1小时前还在线,但是个人信息中并没有什么内容,因此推测这可能只是一个用来作为主控端的僵尸账号。 通过样本关联,我们在这批样本的其中一个签名下关联到一种不同的样本,但是都是使用MonoDroid框架编写,类名、方法名命名极为相似,都有伪装卸载后台隐藏图标启动恶意服务的行为,但是编写较为粗糙,虽然也进行了部分隐私信息的窃取,但并未如前面所分析的使用Telegram进行通信,而只是简单的使用http的方式进行通信,通信的IP为148.251.203.5、148.251.32.113,其中一个样本名为“电报技巧”(Telegram的译名就叫“电报”),同样也是活跃在阿拉伯语的使用地区,推测这类样本可能是早期的产物。

  一代样本:

  二代样本:

  从技术手法上来看,使用C#开发Android应用不多见,推测攻击者可能是精于Windows开发的技术人员,当然也不排除是故意为了混淆视听或是规避杀软检测而为之。从代码结构上来看,其模块划分比较明确,组织结构安排的也较为合理,同时其通信过程完全使用TBA,与TBA配合的远控行为逻辑和功能设计也颇有特色,从这些角度看来该攻击组织具备相当不错的技术水平。

五、总结

  该病毒采用C#编写,通过将逻辑代码编译在dll文件中而不是常规的dex文件中来规避常规的恶意代码检测机制。此外,该病毒使用了知名应用Telegram的Bot进行通信,进一步增强了其隐蔽性。这说明恶意开发者有一定的反查杀意识和能力。在此基础上,该病毒建立起了一套完整的远程控制体系,涵盖了各种远程控制恶意行为,包括对各种设备硬件信息采集、文件管理(文件和文件夹预览、移动、删除、重命名、上传、下载)、短信实时监控、通话记录实时监控,以及截屏、通话录音、图片、账户、和地理位置实时获取、远控摄像头拍照等等,极大程度上侵犯了用户的个人隐私信息安全,具有非常强的危害性。

  对此,安天移动安全联合猎豹移动安全实验室已实现对该病毒的检测查杀,建议用户安装猎豹安全大师等集成安天移动反病毒引擎的安全产品,定期进行病毒检测,保护个人信息安全。


原文出处: http://blog.avlsec.com/2017/12/5020/tba/