近日,百度安全实验室发现了一款“聊天剽窃手”病毒。该病毒可以通过ptrace方式注入恶意代码至QQ、微信程序进程。恶意代码可以实时监控手机QQ、微信的聊天内容及联系人信息。

该病毒是眼下发现的首款通过ptrace进程注入方式进行恶意窃取私密资料的病毒。

简单介绍

该病毒主要是通过ptrace注入QQ和微信进程进行信息窃取的,主程序调用assets中的inject_appso,libcall.so以及conn.jar联合进行“作案”。在conn.jar中获取聊天信息/近期联系人等。并发送广播启动主程序广播接收器,将隐私信息发送至远端地址。该病毒行为图例如以下:

代码分析:

主恶意程序代码结构图例如以下:

1、入口启动:

主恶意程序启动后立马尝试获取ROOT权限,并将assets下的几个将要执行的文件拷贝至系统不同文件夹下:

inject_appso –> /system/bin/

libcall.so –> /system/lib/

conn.jar –> /data/data/qy/

复制完文件后。以管理员权限执行inject_appso程序进行程序注入:

执行inject_appso

2、注入恶意代码至QQ/微信进程:

inject_appso可执行文件以Root用户执行后,通过调用ptrace函数获取QQ、微信进程的控制权。

获取控制权后。在目标进程载入并执行附带的恶意代码libcall.so:

ibcall.so代码执行后,首先获取Dalvik执行时环境。通过Dexclassloader动态载入附带的conn.jar恶意代码:

3、恶意代码HookQQ、微信重要数据获取用户隐私

conn.jar代码结构图例如以下:

conn.jar通过javahook方式监控QQ或微信聊天界面。

QQ聊天界面:com.tencent.mobileqq.activity.ChatActivity

微信聊天界面:com.tencent.mm.ui.chatting.ChattingUI

当聊天内容发生变动时。恶意代码便会获得通知并获取聊天内容:

HOOK微信聊天界面

监控聊天界面变化

获取聊天内容

不仅可以监控页面内容,并且可以通过获取/data/data/com.tencent.mobileqq/文件夹或者/data/data/com.tencent.mm/中的.db数据库文件。获取聊天历史记录。并且可以获取近期联系人信息:

获取近期联系人信息

4、将聊天信息上传至server:

conn.jar获取到聊天消息后,便将这些信息通过广播“learn.yincc.CHAT_UPDATE”发送出去。该广播由主恶意程序接收,主恶意程序解析广播内容后,将聊天内容发送至远端server:

conn.jar发送广播

主恶意程序接收广播

主恶意程序将聊天内容发送至远端server

“聊天剽窃手”--ptrace进程注入型病毒的更多相关文章

  1. ptrace注入型病毒“聊天剽窃手”分析

    概述 “聊天剽窃手”Windseeker是一款间谍软件,它使用了ptrace进程注入技术,能够对微信和QQ的聊天记录进行监控. 软件安装后的桌面图标和启动界面如图所示:   行为分析 该应用首先获取手 ...

  2. Virut.ce-感染型病毒分析报告

    1.样本概况 病毒名称 Virus.Win32.Virut.ce MD5 6A500B42FC27CC5546079138370C492F 文件大小 131 KB (134,144 字节) 壳信息 无 ...

  3. Android进程注入

    全部代码在这里下载:http://download.csdn.net/detail/a345017062/8133239 里面有两个exe.inj是一个C层进程注入的样例.inj_dalvik是我写的 ...

  4. 进程注入后门工具Cymothoa

    进程注入后门工具Cymothoa   Cymothoa是一款隐秘的后门工具.它通过向目标主机活跃的进程注入恶意代码,从而获取和原进程相同的权限.该工具最大的优点就是不创建新的进程,不容易被发现.由于该 ...

  5. 利用“进程注入”实现无文件复活 WebShell

    引子 上周末,一个好兄弟找我说一个很重要的目标shell丢了,这个shell之前是通过一个S2代码执行的漏洞拿到的,现在漏洞还在,不过web目录全部不可写,问我有没有办法搞个webshell继续做内网 ...

  6. 【原创】利用“进程注入”实现无文件不死webshell

    引子 上周末,一个好兄弟找我说一个很重要的目标shell丢了,这个shell之前是通过一个S2代码执行的漏洞拿到的,现在漏洞还在,不过web目录全部不可写,问我有没有办法搞个webshell继续做内网 ...

  7. 使用VC++通过远程进程注入来实现HOOK指定进程的某个API

    前阵子读到一篇关于<HOOK API入门之Hook自己程序的MessageBoxW>的博客,博客地址:http://blog.csdn.net/friendan/article/detai ...

  8. Android中通过进程注入技术改动广播接收器的优先级

    前言 这个周末又没有吊事,在家研究了怎样通过进程的注入技术改动广播接收器的优先级.关于这个应用场景是非常多的.并且也非常重要.所以就非常急的去fixed了. Android中的四大组件中有一个广播:B ...

  9. 如何实现.net程序的进程注入

    原文:如何实现.net程序的进程注入   如何实现.net程序的进程注入                                   周银辉 进程注入比较常见,比如用IDE调试程序以及一些Sp ...

随机推荐

  1. Jquery学习笔记:获取jquery对象的基本方法

    jquery最大的好处是将js对html页面的操作(读写)进行了封装,隔离了浏览器的差异性,并简化了操作,和提供了强大的功能. 在web页面中,所有的js操作都是围绕操作dom对象来的.而jquery ...

  2. 新的 Windows Azure 网络安全性白皮书

    下载新的 Windows Azure 网络安全性白皮书. Windows Azure 网络提供了将虚拟机安全连接到其他虚拟机所需的基础结构,以及云和内部部署数据中心之间的网桥. 本白皮书旨在挖掘这些内 ...

  3. 统一横轴墨卡托投影(UTM)

    UTM 坐标系统使用基于网格的方法表示坐标.UTM 系统将地球分为 60 个区,每一个区基于横轴墨卡托投影.画图法中的地图投影方法能够在平面中表示一个两维的曲面,比如一个标准地图.图 1 展示了一个横 ...

  4. PHP - MySQL数据库

    第15章 MySQL数据库 学习要点: 1.Web数据库概述 2.MySQL的操作 3.MySQL常用函数 4.SQL语句详解 5.phpMyadmin 一.Web数据库概述 现在,我们已经熟悉了PH ...

  5. itextSharp 使用模板(PdfTemplate)不规则分栏(ColumnText)

    public static void Main() { Document document = new Document(); BaseFont bf = BaseFont.createFont(Ba ...

  6. 基于visual Studio2013解决C语言竞赛题之1024求和

          题目 解决代码及点评 /* 已知有N个无规律的正整数,请编程序求出其中的素数并打印出能被5整除的数之积. */ #include <stdio.h> # ...

  7. android——使用pull解析xml文件

    1.persons.xml 将persons.xml文件放到src目录下.其代码如下: <?xml version='1.0' encoding='UTF-8' standalone='yes' ...

  8. 使用开源的PullToRefreshScrollView scrollTo和scrollby遇到的问题

    在项目中使用了开源的com.handmark.pulltorefresh.library 下拉刷新组件,当中使用了PullToRefreshScrollView ,须要调用scrollTo或者scro ...

  9. Java的LockSupport.park()实现分析

    LockSupport类是Java6(JSR166-JUC)引入的一个类,提供了主要的线程同步原语.LockSupport实际上是调用了Unsafe类里的函数,归结到Unsafe里,仅仅有两个函数: ...

  10. C++要点

           以下的这些要点是对全部的C++程序猿都适用的.我之所以说它们是最重要的,是由于这些要点中提到的是你通常在C++书中或站点上无法找到的.如:指向成员的指针,这是很多资料中都不愿提到的地方, ...