安卓逆向安全从今天开始

常见APP漏洞及风险
静态破解
通过工具apktool、dex2jar、jd-gui、DDMS、签名工具,可以对任何一个未加密应用进行静态破解,窃取源码。
二次打包
通过静态破解获取源码,嵌入恶意病毒、广告等行为再利用工具打包、签名,形成二次打包应用。
本地储存数据窃取
通过获取root权限,对手机中应用储存的数据进行窃取、编辑、转存等恶意行为,直接威胁用户隐私。
界面截取
通过adb shell命令或第三方软件获取root权限,在手机界面截取用户填写的隐私信息,随后进行恶意行为。
输入法攻击
通过对系统输入法攻击,从而对用户填写的隐私信息进行截获、转存等恶意操作,窃取敏感信息。
协议抓取
通过设置代理或使用第三方抓包工具,对应用发送与接收的数据包进行截获、重发、编辑、转存等恶意操作。

用这个工具
android逆向助手
他的结构和使用的jar包
如下

然后反编译这个软件
生成的文件如下

先看manifest文件

 <?xml version="1.0" encoding="utf-8"?>
<manifest android:versionCode="1" android:versionName="1.0" package="net.droid.installer"
  xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_SMS" />
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.READ_LOGS" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <application android:label="@string/app_name" android:icon="@drawable/icon">
        <activity android:theme="@*android:style/Theme.NoTitleBar" android:label="@string/app_name" android:name=".InstallActivity" android:screenOrientation="portrait" android:configChanges="keyboardHidden|orientation">
            <intent-filter>
                <action android:name="android.intent.action.CREATE_SHORTCUT" />
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:theme="@*android:style/Theme.NoTitleBar" android:name=".RuleActivity" android:screenOrientation="portrait" />
        <activity android:theme="@*android:style/Theme.NoTitleBar" android:name=".LoaderActivity" android:screenOrientation="portrait" />
        <activity android:theme="@*android:style/Theme.NoTitleBar" android:name=".StartActivity" />
        <receiver android:name=".StartupReceiver" android:enabled="true" android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <action android:name="android.intent.action.QUICKBOOT_POWERON" />
            </intent-filter>
        </receiver>
        <service android:name=".UpdateService" android:enabled="true" />
        <receiver android:name=".UpdateReceiver" />
        <receiver android:name=".MessageReceiver">
            <intent-filter android:priority="1000">
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
        </receiver>
        <receiver android:name=".Scanner">
            <intent-filter>
                <action android:name="android.intent.action.PACKAGE_ADDED" />
                <action android:name="android.intent.action.PACKAGE_REPLACED" />
                <action android:name="android.intent.action.PACKAGE_REPLACED" />
                <data android:scheme="package" />
            </intent-filter>
        </receiver>
        <service android:name=".USSDDumbExtendedNetworkService">
            <intent-filter>
                <action android:name="com.android.ussd.IExtendedNetworkService" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </service>
    </application>
</manifest>

我们先来看权限

别人总结的权限详情
http://ask.dcloud.net.cn/article/100

<!--网络-->
   <uses-permission android:name="android.permission.INTERNET" />
    <!--短信的权限-->
    <uses-permission android:name="android.permission.WRITE_SMS" />
    <!--读取彩信-->
    <uses-permission android:name="android.permission.READ_SMS" />
    <!--收发短信-->
    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <!--读写sd卡的权限-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    这个是重点!!!!!
    <!--允许应用程序在手机锁屏后进程仍然运行-->
        <uses-permission android:name="android.permission.WAKE_LOCK" />
   <!--允许程序访问手机状态信息-->
  <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!--安装快捷方式权限-->
    <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<!--打电话的权限-->
    <uses-permission android:name="android.permission.CALL_PHONE" />
<!--夺取logcat的输出信息-->
    <uses-permission android:name="android.permission.READ_LOGS" />
<!--开机自启动广播-->
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

有几个不熟悉的 比如夺取log信息的那个
详解见: http://drops.wooyun.org/tips/3812

安卓安全分析
http://blog.csdn.net/androidsecurity/article/details/9428861

我们来看那个编译后的文件

     <receiver android:name=".StartupReceiver" android:enabled="true" android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <action android:name="android.intent.action.QUICKBOOT_POWERON" />
            </intent-filter>
        </receiver>
        <service android:name=".UpdateService" android:enabled="true" />
        <receiver android:name=".UpdateReceiver" />
        <receiver android:name=".MessageReceiver">
            <intent-filter android:priority="1000">
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
        </receiver>
        <receiver android:name=".Scanner">
            <intent-filter>
                <action android:name="android.intent.action.PACKAGE_ADDED" />
                <action android:name="android.intent.action.PACKAGE_REPLACED" />
                <action android:name="android.intent.action.PACKAGE_REPLACED" />
                <data android:scheme="package" />
            </intent-filter>
        </receiver>
        <service android:name=".USSDDumbExtendedNetworkService">
            <intent-filter>
                <action android:name="com.android.ussd.IExtendedNetworkService" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </service>

我们来看注册后的组件
不用想 重点肯定是在Service上面
然后看看recevier来激活什么东西(配合一个activity)

java -jar shakafix bs F:\android\classes.dex -o ~/desktop/classes 反编译
java -jar shakafix s F:\android\classes -o ~/desktop/classes 回编译

posted @ 2016-05-12 23:35  Tesi1a  阅读(252)  评论(0编辑  收藏  举报