Android Notification flags

 

public static final int FLAG_SHOW_LIGHTS = 1;               置位第1位
public static final int FLAG_ONGOING_EVENT = 2;             置位第2位 (正在下载中,等等)
public static final int FLAG_INSISTENT = 4;                            置位第3位
public static final int FLAG_ONLY_ALERT_ONCE = 8;              置位第4位
public static final int FLAG_AUTO_CANCEL = 16;                   置位第5位
public static final int FLAG_NO_CLEAR = 32;                       置位第6位 (不可清除广告,不可清除通知等等)
public static final int FLAG_FOREGROUND_SERVICE = 64;     置位第7位

@Deprecated
public static final int FLAG_HIGH_PRIORITY = 128;                置位第8位

关于插屏广告的实现

插屏广告: alert dialog, 能显示在任何应用之上的窗口, 用于显示匿名窗口广告.

需要申请权限:

android.permission.SYSTEM_ALERT_WINDOW

然后一些知识如下文:

在Android中使用WindowManager实现悬浮窗口

 

最近在做一个项目的过程中,客户提出要一个能悬浮于所有应用的界面。下图右侧这个界面就是需要实现的悬浮于所有应用之上的视图。
下面就介绍一下如何通过WindowManager来实现这个效果。

加载中...

通过WindowManager的addView()方法,并设置WindowManager.LayoutParams的相关属性,就可以往WindowManager中加入所需要的View,而根据WindowManager.LayoutParams属性不同,也就能实现不同的效果。比如创建系统顶级窗口,实现悬浮窗口效果。如果需要将View从WindowManager中移除,只需要调用removeView()即可。

下面以一个简单的例子来解释一下如何实现悬浮窗口效果。

首先,得到WindoeManager对象:
WindowManager wManager = getApplicationContext().getSystemService( Context. WINDOW_ SERVICE);

其次,得到WindowManager.LayoutParams对象,为后续设置相关参数做准备:
private WindowManager.LayoutParams wmParams=new WindowManager.LayoutParams();

接着,设置相关的窗口布局参数,要实现悬浮窗口效果,主要需要设置的参数有:
wmParams.type = LayoutParams.TYPE_PHONE; // 设置window type
wmParams.format = PixelFormat.RGBA_8888; // 设置图片格式,效果为背景透明

/*
* 下面的flags属性的效果形同“锁定”。 悬浮窗不可触摸,不接受任何事件,同时不影响后面的事件响应。
*/
wmParams.flags=LayoutParams.FLAG_NOT_TOUCH_MODAL |
LayoutParams.FLAG_NOT_FOCUSABLE | LayoutParams.FLAG_NOT_TOUCHABLE;
wmParams.gravity = Gravity.RIGHT| Gravity. CENTER_VERTICAL; // 调整悬浮窗口至右侧中间
// 以屏幕左上角为原点,设置x、y初始值
wmParams.x = 0;
wmParams.y = 0;

// 设置悬浮窗口长宽数据
wmParams.width = WindowManager.LayoutParams.WRAP_CONTENT;;
wmParams.height =WindowManager.LayoutParams.WRAP_CONTENT;;

然后,就可以将需要加到悬浮窗口中的View加入到窗口中了:
if(view.getParent==null)//如果view没有被加入到某个父组件中,则加入WindowManager中
wManager.addView(view,wmParams);

其中,view为需要放到悬浮窗口中的视图组件。

如果要将其从WindowManager中移除,则可以执行以下语句:
if(view.getParent()!=null)
wManager.removeView(view);

最后,还有需要注意的是,如果要用悬浮窗口,需要在AndroidManifest.xml中加入如下的权限:
<uses-permission android:name=”android.permission.SYSTEM_ALERT_WINDOW” />

 

 

以及该篇文章:

 

有时候需要在显示UI的时候不中断原来的Activity

比如在播放视频时或者玩游戏时,需要显示某个菜单(可以是系统提示,或类似于TV菜单)

显然用Activity来做是不行的,因为新Activity启动的时候会把原来的Activity pause掉

怎么做呢,可以参考系统电量提示窗口或statusbar那样在service中启动窗口

新窗口将会出现在UI最上层,但不会中断原来的Activity

效果图,一个是播视频中,一个是玩游戏中:

看一下WindowManager.LayoutParams的两个属性:

int TYPE_SYSTEM_ALERT        Window type: system window, such as low power alert.
int TYPE_SYSTEM_OVERLAYWindow type: system overlay windows, which need to be displayed on top of everything else.

这两个不错,正是我们想要的,上代码~

 

Seivece中代码

 

  1. private void showSystemDialog() {
  2.     /* create ui */
  3.         View v = View.inflate(mContext, R.layout.main, null);
  4.         AlertDialog.Builder b = new AlertDialog.Builder(mContext);
  5.         b.setView(v);
  6.         d = b.create();
  7.         d.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
  8.         //d.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY);
  9.     d.show();
  10.         /* set size & pos */
  11.         WindowManager.LayoutParams lp = d.getWindow().getAttributes();
  12.         WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
  13.         Display display = wm.getDefaultDisplay();
  14.     if (display.getHeight() > display.getWidth()) {
  15.         //lp.height = (int) (display.getHeight() * 0.5);
  16.         lp.width = (int) (display.getWidth() * 1.0);
  17.     } else {
  18.         //lp.height = (int) (display.getHeight() * 0.75);
  19.         lp.width = (int) (display.getWidth() * 0.5);
  20.     }
  21.         d.getWindow().setAttributes(lp);
  22.         /* update ui data */
  23.         lv = (ListView) d.getWindow().findViewById(R.id.listview);
  24.        SimpleAdapter adapter = new SimpleAdapter(mContext, getListData(), R.layout.list_item,
  25.                             new String[]{“item_text”, “item_img”},
  26.                             new int[]{R.id.item_text, R.id.item_img});
  27.         lv.setAdapter(adapter);
  28.         /* set listener */
  29.        lv.setOnItemClickListener(new OnItemClickListener() {
  30.         public void onItemClick(AdapterView<?> parent, View view, int pos,
  31.                 long id) {
  32.             d.dismiss();
  33.         }
  34.        });
  35. }

创建了一个dialog,可以调整dialog的位置、大小,dialog的从R.layout.main创建,动态添加UI数据

 

响应Ui上的OnClick操作

 

* manifest中需要相应的permission

<uses-permission android:name=”android.permission.SYSTEM_ALERT_WINDOW” />
<uses-permission android:name=”android.permission.SYSTEM_OVERLAY_WINDOW” />

* TYPE_SYSTEM_ALERT跟TYPE_SYSTEM_OVERLAY的区别

以上面的代码为例,system_alert窗口可以获得焦点,响应操作

system_overlay窗口显示的时候焦点在后面的Activity上,仍旧可以操作后面的Activity

* 上面的代码中请留意d.show()的位置,只有在show之后才能调整dialog大小及更新数据

* 可以调整的Attributes,先dump出来

lp.flags = 0x20002, // FLAG_DIM_BEHIND | FLAG_ALT_FOCUSABLE_IM

lp.gravity = 0x11, // CENTER

lp.type = 0x7d3, // TYPE_SYSTEM_ALERT

这些Attr都可以设置,具体定义在API文档WindowManager.LayoutParams中

 

 

原文链接:

http://www.2cto.com/kf/201209/158190.html

http://blog.csdn.net/zmyde2010/article/details/6863717

爱加密和梆梆加固的破解方法

By Bob Pan

原始链接: http://blog.csdn.net/pxb1988/article/details/17167795

梆梆与爱加密都使用了将原有的dex隐藏, 在运行时解压, 并且通过修改app的类加载器的方式实现加固. 参考:AndoridAPK反逆向解决方案:梆梆加固原理探寻

然而, 不管如何隐藏dex, 最终在运行时都必须释放到内存, 所以本文的思路是从内存中找到解密后的dex文件, 进而得到加固前的apk.

爱加密

爱加密的app并没有做反调试的保护. 打开app之后直接使用gdb连接, 然后用gcore, 产生core dump.

使用ps查看pid

使用gdb连接pid

使用gcore产生core dump

 

将产生的core.1033复制回电脑, 并使用编辑器打开, 通过类名找到dex中string-data段, 然后通过查找’dex.035’可以找到多离string-data最近的个dex头. dex文件头偏移32的整形值就是dex的文件长度. 使用dd命令可以从内存中抠出dex.

通过类名找string-data段

找到最近的dex文件头(0x4f87a08)和dex文件大小0x07c0

使用dd抠出dex

这个文件是个完整的dex文件, 并且可以被dexdump直接打印

梆梆

梆梆加固的程序做了anti-ptrace, 表现为使用gdb –pid 连接不上对应的进程, 利用kernel-model打印ptrace的记录, 可以看出梆梆

l  使用了3个进程互相ptrace.

l  发送错误指令来检查ptrace是否被劫持(反回值是-3行, 尝试让1568进程继续执行, 但是1568并未被ptrace, 必须出错),

l  利用ptrace修改另一个进程的数据(action是5的行).

ptrace系统调用的记录, 右边是ptrace的参数

虽然连不上1552, 但是dalvik是一个多线程的程序, 里面包含主进程, gc线程, binder线程等, 虽然我们用gdb连不上主线程, 但是我们可以连上其他线程, 这些线程的tid在/proc/[pid]/task/目录下.

Gdb连接任意一个tid

拿到coredump后与爱加密一样做相同的处理, 可以拿到dex.

总结

爱加密和梆梆通过隐藏dex确实可以让大部分静态分析工具找不到执行代码, 但是在动态运行的时候无可避免的需要将dex在内存中还原. 虽然梆梆做了反调试, 但是通过其他方式也同样可以获取其内存. 通过本文的方法分析其内存然后恢复dex, 更进一步可以完全恢复原始apk. 从这个角度说, 爱加密和梆梆的加固形同虚设.

 

Android短信欺诈(Smishing)漏洞

本文章由Jack_Jia编写,转载请注明出处。
文章链接:
http://blog.csdn.net/jiazhijun/article/details/8631829
作者:Jack_Jia    邮箱: 309zhijun@163.com

一、漏洞描述
    北卡罗来纳州州立大学研究员日前在进行一项有关智能手机的研究项目中发现了一个存在于Android 平台的“短信欺诈”(Smishing)漏洞,据悉,该漏洞可以允许应用在Android平台上进行短信伪装,且在所有版本的Android软件中都存在这一漏洞。
  攻击者可利用漏洞窃取个人资料,攻击者也可以利用漏洞,将自己的手机号码伪装成银行或亲友等号码。
二、影响版本
    Froyo (2.2.x), Gingerbread (2.3.x), Ice Cream Sandwich (4.0.x), and Jelly Bean (4.1)
三、漏洞原理
    Android系统有一套比较完善的安全体系,权限管理就是其中的一部分。当应用需要操作敏感数据时,需要申请相应的权限。
    该系统漏洞能够使攻击者无需申请任何权限发送短信到用户收件箱。
    出现该漏洞的原因是Android系统的com.android.mms.transaction.SmsReceiverService系统服务未判断启动服务的调用者,攻击者可以通过该应用发送伪装短信到用户收件箱。本漏洞实质上是一种能力的泄漏。
四、POC代码
    Intent intent = new Intent();
    byte[] pdus = new byte[]{…}; // the sms pdus bytes
    intent.setClassName(“com.android.mms”, “com.android.mms.transaction.SmsReceiverService”);
    intent.setAction(“android.provider.Telephony.SMS_RECEIVED”);
    intent.putExtra(“pdus”, new byte[][]{pdus});
    this.startService(intent);
五、相关链接
    http://www.csc.ncsu.edu/faculty/jiang/smishing.html
    http://www.newhua.com/2012/1109/183383.shtml

关于Android系统的Smishing攻击

1. 来自手机内其他app的威胁:

有些apk利用android系统的Smishing漏洞来伪造短信广播, 并使用伪造的短信欺骗用户,发送高消费短信,拨打高消费电话或者泄露银行账号等个人信息

2. 来自他人发来的包含欺诈内容或者欺诈链接的短信:

伪造成人网站链接,或者中奖信息链接,将用户引导到有害站点或者骗取用户身份证,手机号,银行账号等个人隐私

 

防范方法:

1. —

2. —

 

Smishing的例子:

 

Examples of fraudulent SMiShing messages:

 

  • Credit Union N.A. Please call us immediately at 1-888-xxx-xxxx regarding a recent restriction placed on your account. Thank you.
  • Alert!! Honolulu City & County Employees has limited your account pending verifications. Contact us NOW at 213-xxx-xxxx

 

参考文献:

 

[1]. http://www.csc.ncsu.edu/faculty/jiang/smishing.html

[2]. http://www.t-mobile.com/Company/PrivacyResources.aspx?tp=Abt_Tab_PhishingSMishing&tsp=Abt_Sub_IdentityTheft_SMiShing

[3]. NBC News: NBC News Reports on SMiShing Text Claiming to Be From Wal-Mart, November, 2012

[4].  PCWorld: ‘Smishing’ Attacks Are on the Rise, May 2012

金山手机毒霸工作原理

本文章由Jack_Jia编写,转载请注明出处。
文章链接:
http://blog.csdn.net/jiazhijun/article/details/8804402

作者:Jack_Jia    邮箱: 309zhijun@163.com

 

一、序言

 

金山手机毒霸(http://m.duba.com/)是金山网络推出的首款Android APP行为管理软件,是首家拦截软件恶意广告、智能防御病毒行为、查杀最新病毒和自主管理高危隐私权限的安卓手机安全管理软件。

它具有如下特色功能:

1、有效清除软件内置广告,拦截软件恶意广告。

2、依托于首创的Java虚拟机拦截技术,更精准更深入的拦截APP的高危行为。

本文将对金山手机毒霸的进行简单的逆向分析,以达到了解其工作原理的目的。金山手机毒霸的最新版本为V2.0,但为了使我们的分析过程简单高效,我们特意选择金山手机毒霸V1.0Beta版本作为分析样本。博友可以通过如下链接下载(http://bbs.xda.cn/thread-11186508-1-1.html)。

 

二、基本信息

 

1、安装包关键路径文件信息

 

lib\srmeabi\:

res\raw :

其中ksremote.mp3、libksrootclient.mp3、rootkeeper.mp3通过后缀名伪装成mp3文件,其实这三个文件为jar包。

 

AndroidMainfest.xml:

 

  1. <application android:theme=”@style/MainStyle” android:label=”@string/app_name_desktop” android:icon=”@drawable/main_icon_big” android:name=”com.ijinshan.duba.main.MobileDubaApplication” android:allowClearUserData=”false” android:debuggable=”false”>
  2.     <activity android:label=”@string/app_name” android:name=”com.ijinshan.duba.main.MainActivity” android:launchMode=”singleTask” android:screenOrientation=”portrait” />
  3.     <activity android:name=”com.ijinshan.duba.main.SplashActivity” android:clearTaskOnLaunch=”true” android:launchMode=”singleTop” android:screenOrientation=”portrait”>
  4.         <intent-filter>
  5.             <action android:name=”android.intent.action.MAIN” />
  6.             <category android:name=”android.intent.category.LAUNCHER” />
  7.         </intent-filter>
  8.     </activity>
  9.     <activity android:name=”com.ijinshan.duba.main.AuthorityActivity” android:screenOrientation=”portrait” />
  10.     <activity android:name=”com.ijinshan.duba.AdUI.AdwareNotifyListActivity” android:screenOrientation=”portrait” />
  11.     <activity android:name=”com.ijinshan.duba.AdUI.AdPrivacyActivty” android:screenOrientation=”portrait” />
  12.     <activity android:name=”com.ijinshan.duba.AdUI.AdScanActivty” android:screenOrientation=”portrait” />
  13.     <activity android:name=”com.ijinshan.duba.AdUI.AdwareLogActivty” android:screenOrientation=”portrait” />
  14.     <activity android:name=”com.ijinshan.duba.AdUI.AdDetailActivty” android:screenOrientation=”portrait” />
  15.     <activity android:name=”com.ijinshan.duba.common.NotifyEntryActivity” android:screenOrientation=”portrait” />
  16.     <activity android:name=”com.ijinshan.duba.malware.MalwareActivity” android:screenOrientation=”portrait” />
  17.     <activity android:name=”com.ijinshan.duba.malware.ScanResultListActivity” android:screenOrientation=”portrait” />
  18.     <activity android:name=”com.ijinshan.duba.malware.VirusDetailActivity” android:screenOrientation=”portrait” />
  19.     <activity android:name=”com.ijinshan.duba.defend.defendActivityTest” android:screenOrientation=”portrait” />
  20.     <activity android:name=”com.ijinshan.duba.privacy.PrivacyActivity” android:screenOrientation=”portrait” />
  21.     <activity android:name=”com.ijinshan.duba.privacy.PrivacyDetailActivity” android:screenOrientation=”portrait” />
  22.     <activity android:name=”com.ijinshan.duba.privacy.PrivacySortActivity” android:screenOrientation=”portrait” />
  23.     <activity android:theme=”@style/DialogActivityStyle” android:name=”com.ijinshan.duba.malware.PcConnectActivity” android:launchMode=”singleInstance” android:screenOrientation=”portrait”>
  24.         <intent-filter>
  25.             <action android:name=”” />
  26.         </intent-filter>
  27.     </activity>
  28.     <activity android:theme=”@style/DialogActivityStyle” android:name=”com.ijinshan.duba.watcher.FileInstNoticeActivity” android:launchMode=”singleInstance” android:screenOrientation=”portrait” />
  29.     <activity android:theme=”@style/DialogActivityStyle” android:name=”com.ijinshan.duba.watcher.AppLaunchMonitorActivity” android:launchMode=”singleInstance” android:screenOrientation=”portrait” />
  30.     <activity android:name=”com.ijinshan.duba.malware.BadNetActivity” android:screenOrientation=”portrait” />
  31.     <activity android:name=”com.ijinshan.duba.main.ShowProtocolActivity” android:screenOrientation=”portrait” />
  32.     <activity android:name=”com.ijinshan.duba.defend.Activity.IngnoreAppActivity” android:screenOrientation=”portrait” />
  33.     <activity android:theme=”@style/DialogActivityStyle” android:name=”com.ijinshan.duba.main.ShowRestartTipDialog” android:launchMode=”singleInstance” android:screenOrientation=”portrait” />
  34.     <service android:name=”com.ijinshan.duba.service.PcConnectService”>
  35.         <intent-filter>
  36.             <action android:name=”” />
  37.         </intent-filter>
  38.     </service>
  39.     <service android:name=”com.ijinshan.duba.defend.DefendService” android:exported=”false” android:process=”:DefendService” />
  40.     <receiver android:name=”com.ijinshan.duba.receiver.AutoRunReceiver” android:permission=”android.permission.RECEIVE_BOOT_COMPLETED” android:exported=”false”>
  41.         <intent-filter>
  42.             <action android:name=”android.intent.action.BOOT_COMPLETED” />
  43.             <category android:name=”android.intent.category.DEFAULT” />
  44.         </intent-filter>
  45.     </receiver>
  46.     <receiver android:name=”com.ijinshan.duba.receiver.ShutdownReceiver”>
  47.         <intent-filter>
  48.             <action android:name=”android.intent.action.ACTION_SHUTDOWN” />
  49.         </intent-filter>
  50.     </receiver>
  51.     <provider android:name=”com.ijinshan.duba.main.DubaConfigProvidor” android:exported=”false” android:authorities=”com.ijinshan.duba.config” />
  52.     <provider android:name=”com.ijinshan.duba.Provider.AdRuleProvidor” android:exported=”false” android:process=”:DefendService” android:authorities=”com.ijinshan.duba.adrule” />
  53.     <provider android:name=”com.ijinshan.duba.Provider.MalwareDBProvidor” android:exported=”false” android:process=”:DefendService” android:authorities=”com.ijinshan.duba.malwaredb” />
  54. </application>

 

 

2、手机毒霸运行时涉及进程及进程组件分布

 

通过对手机毒霸代码逆向分析及运行时进程状态变化,金山手机毒霸代码共在四类进程中被加载运行。

 

(1)com.ijinshan.duba 进程

 

广告扫描引擎、病毒扫描引擎、金山版本控制等逻辑都在该进程中运行,

另外手机毒霸还在15997端口建立监听,PC端可以通过该TCP连接发送命令手机端毒霸扫描。

 

(2)com.ijinshan.duba:DefendService进程

 

广告规则和扫描病毒信息由该进程通过Provider提供。

 

 

(2)com.ijinshan.duba.rootkeeper进程

该进程以ROOT身份运行,该进程提供了手机毒霸其它进程运行需要root身份才能执行的命令的Binder接口,第三方程序进程的代码注入由该进程完成。

 

 

(4)第三方(injected process)被注入程序进程

 

通过ptrace()注入到第三方程序的代码,ksremote.jar和libksrootclient.so完成java虚拟机hook和底层Socket hook。

 

 

三、JAVA虚拟机hook实现原理

目前Android进程代码的注入都是靠ptrace函数来完成。ptrace进程后完成底层函数的重定向。金山毒霸代码注入包括两部分:

 

1、底层C函数HOOK

2、JAVA虚拟机HOOK

 

代码注入基本流程如下:

 

1、com.ijinshan.duba.rootkeeper进程ptrace第三方进程,并注入libksrootclient.so文件

2、libksrootclient.so代码完成底层C函数hook并调用ksremote.jar代码,ksremote.jar完成java虚拟机hook

(1)C代码如何完成对java代码的调用呢?

 

基本代码实现如下:

 

  1. int (*callStatic)(const char* className, const char* methodName);
  2.        JavaVM* (*getJavaVM)();
  3.        JNIEnv* (*getJNIEnv)();
  4. void* handle = dlopen(“/system/lib/libandroid_runtime.so”, RTLD_NOW);
  5. getJNIEnv = dlsym(handle, “_ZN7android14AndroidRuntime9getJNIEnvEv”);
  6.        JNIEnv* env = getJNIEnv();
  7.        jclass classloaderClass = (*env)->FindClass(env,”java/lang/ClassLoader”);
  8.        jmethodID getsysloaderMethod = (*env)->GetStaticMethodID(env,classloaderClass<span style=”font-family: Arial, Helvetica, sans-serif;”> </span>, “getSystemClassLoader”, “()Ljava/lang/ClassLoader;”);
  9.        jobject loader = (*env)->CallStaticObjectMethod(env, classloaderClass, getsysloaderMethod);
  10.        jstring dexpath = (*env)->NewStringUTF(env, “dex文件路径”);
  11.        jstring dex_odex_path = (*env)->NewStringUTF(env,”odex文件路径”);
  12.        jclass dexLoaderClass = (*env)->FindClass(env,”dalvik/system/DexClassLoader”);
  13.        jmethodID initDexLoaderMethod = (*env)->GetMethodID(env, dexLoaderClass, “<init>”, “(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)V”);
  14.        jobject dexLoader = (*env)->NewObject(env, dexLoaderClass, initDexLoaderMethod,dexpath,dex_odex_path,NULL,loader);
  15.        jmethodID findclassMethod = (*env)->GetMethodID(env,dexLoaderClass,”findClass”,”(Ljava/lang/String;)Ljava/lang/Class;”);
  16.        jstring javaClassName = (*env)->NewStringUTF(env,”加载类名”);
  17.        jclass javaClientClass = (*env)->CallObjectMethod(env,dexLoader,findclassMethod,javaClassName);
  18.        jmethodID start_inject_method = (*env)->GetStaticMethodID(env, adInjectClient_class, “调用方法名”, “()V”);
  19.        (*env)->CallStaticVoidMethod(env,javaClientClass,start_inject_method);

 

(2)java虚拟机hook如何实现呢?
java虚拟机hook都是通过java反射修改系统关键类的关键字段来实现的,我们通过替换LocationManager来看看如何实现的:

 

 

当用户代码运行ServiceManager.getService(“location”)的时候,得到就是手机毒霸的LocationManager了。

 

三、广告拦截原理

 

广告拦截逻辑大致包含以下几个方面:

1、Banner类型广告

当Activity显示的时候,手机毒霸遍历Activity View树,判断View类包名是否为广告平台包名,如果是则添加手机毒霸广告关闭图标,当用户点击关闭图标时,隐藏Banner          广告View。

2、WebView类型广告

判断WebViewClient类名判断是否为广告。

3、Notification类型广告

主要是通过RemoteViews的action来判断是否为广告。

 

另外手机毒霸通过hook Socket接口来完成广告的拦截,通过网络层的拦截来完成广告的拦截。

目前流行的十大手机病毒家族

1. FakeInst

伪装成安装包诱惑用户安装,后台发送扣费短信,定制sp业务,给用户造成经济损失。

 

 

2. feejar

利用情色内容引诱用户安装,启动后私自下载其他安装包,并发送短信订阅服务,存在恶意扣费行为。

 

 

3. FakeOpera

伪装成安装或更新应用欺骗用户安装,病毒激活后后台发送扣费短信,定制sp业务,给用户造成经济损失

 

 

4. Keji

后门程序,后台自动下载恶意应用

 

 

5. GinMaster

样本重打包为游戏兔子等工具诱惑用户安装,样本激活后会静默下载推广应用,造成用户资费消耗,并可能下载新恶意应用对用户造成更大的破坏。

 

 

6. m933

样本伪装成系统应用或者系统更新,用户中招后病毒会恶意下载新应用消耗用户流量。

 

 

7. Kmin

该病毒伪装为kmLaucher 桌面管理程序,病毒激活后后台发送扣费短信,定制sp业务,给用户。造成经济损失。

 

 

8. i22hk

样本重打包为XXX卫士、傲游浏览器、人人网客户端、酷我音乐盒等30几款知名应用,病毒激活后窃取用户隐私信息,下载新应用。

 

 

9. Elpso

伪装成色情应用,用户安装后静默发送扣费短信拦截短信给用户造成经济损失

 

 

10. Popsg

病毒伪装成偷偷去约会、池塘钓鱼、塔防游戏阵型王道、武装战机、MyFirstColoringApp等十几款应用,病毒激活后会在其他应用(如微信、uc浏览器、qq浏览器等)中弹出广告。

 

 

MMarketPay.A

, New Android Malware Found in the Wild – See more at: http://blog.trustgo.com/mmarketpay/#sthash.heuNDoSF.dpuf

SUMMARY

 

On the 4th of July 2012, we uncovered a new malware that can download paid apps and contents from China Mobile’s Mobile Market. It placed orders automatically on behalf of users and could cause unexpected high phone bills. TrustGo Security Labs named it as: Trojan!MMarketPay.A@Android.

MMarketPay.A may arrive as repackaged applications with the following package names:

  • com.mediawoz.goweather
  • com.mediawoz.gotq
  • com.mediawoz.gotq1
  • cn.itkt.travelskygo
  • cn.itkt.travelsky
  • com.funinhand.weibo
  • sina.mobile.tianqitong
  • com.estrongs.android.pop

This virus is already found in following 9 China markets. More than 100,000 devices have been infected.

HOW IT WORKS

 

Mobile Market (http://mm.10086.cn/) is an Android Market hosted by China Mobile, one of the largest wireless providers on the planet. It hosts both free and paid applications and multimedia contents. Its payment workflow for paid application is as following:

  1. Customers login at M-Market website (http://mm.10086.cn/). No login required if customer use If you are using CMWAP as Access Point.
  2. M-Market will send a verification code to you via SMS if customer purchased paid apps or contents.
  3. Customers receive the verification code and input it to M-Market for verification
  4. Once the verification completed, the market will download apps automatically. China Mobile will add this order in customers’ phone bill.

MMarketPay.A can place orders via M-Market payment system automatically:

  1. Change the APN to CMWAP, so that it can login MMarket automatically.
  2. Find paid application and simulate the click action in background.
  3. Intercept the received SMS messages and collect verification code sent by M-Market.
  4. If CAPTCHA image is invoked, it will post the image to remote server for analyzing the verification code.
  5. Post the verification code to M-Market website.
  6. Download the application and customers get charged.

Following screenshot of malicious code shows the whole auto payment process.

Besides paid apps, M-Market also offers paid video contents. MMarketPay.A can also search, play and pay for the paid video contents on M-Market. Following piece of code shows the paid video auto play.

CONCLUSION

 

In summary, this sophisticated new malware could cause unexpected high phone bills. TrustGo recommends customers only download apps from trusted app stores and download a mobile security app which can scan malware in real-time.

– See more at: http://blog.trustgo.com/mmarketpay/#sthash.heuNDoSF.dpuf