參考:http://arxiv.org/pdf/1407.4923.pdf
三星s voice是類似apple siri以及google voice的一款語音助手軟件,通過此款軟件可以釋放雙手通過語音命令操作手機。執行如撥打電話、發送短信、拍照等功能。由此可見此軟件的權限是非常寬廣的。
App申請的權限如下:
<uses-permission android:name="android.permission.BROADCAST_STICKY"/>
<uses-permission android:name="android.permission.READ_CALENDAR"/>
<uses-permission android:name="android.permission.WRITE_CALENDAR"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.READ_USER_DICTIONARY"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.WRITE_SMS"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_USER_DICTIONARY"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
<uses-permission android:name="com.android.vending.BILLING"/>
<uses-permission android:name="android.permission.GET_TASKS"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
<uses-permission android:name="com.sec.android.widgetapp.q1_penmemo.permission.READ"/>
<uses-permission android:name="com.sec.android.widgetapp.q1_penmemo.permission.WRITE"/>
<uses-permission android:name="com.sec.android.permission.READ_MEMO"/>
<uses-permission android:name="com.sec.android.permission.WRITE_MEMO"/>
<uses-permission android:name="com.android.email.permission.ACCESS_PROVIDER"/>
<uses-permission android:name="com.android.email.permission.READ_ATTACHMENT"/>
<uses-permission android:name="com.sec.android.app.clockpackage.permission.READ_ALARM"/>
<uses-permission android:name="com.sec.android.app.clockpackage.permission.WRITE_ALARM"/>
<uses-permission android:name="com.sec.android.app.twdvfs.DVFS_BOOSTER_PERMISSION"/>
<uses-permission android:name="android.Manifest.permission.DISABLE_KEYGUARD"/>
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
<uses-permission android:name="com.infraware.provider.SNoteProvider.permission.READ"/>
<uses-permission android:name="com.infraware.provider.SNoteProvider.permission.WRITE"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.READ_CALL_LOG"/>
<uses-permission android:name="com.sec.android.app.sns3.permission.SNS_FB_ACCESS_TOKEN"/>
<uses-permission android:name="com.samsung.music.permission.READ_MUSIC_STORAGE"/>
<uses-permission android:name="com.sec.android.daemonapp.ap.yonhapnews.permission.YONHAP_DAEMON_ACCESS_PROVIDER"/>
<uses-permission android:name="com.sec.android.app.music.permission.READ_MUSICPROVIDER"/>
應用在執行某項敏感操作時(例如發送短信)必須在程序安裝時就對此項權限進行申明
參考:
http://developer.android.com/guide/topics/manifest/uses-permission-element.html http://developer.android.com/guide/topics/manifest/manifest-intro.html#perms http://developer.android.com/reference/android/Manifest.permission.html
惡意軟件要獲取手機通訊錄中的聯系人信息就必須申請READ_CONTACTS 權限,讀取信必須申請READ_SMS ,發現短信要申請 SEND_SMS 權限。利用這一機制小伙伴如果發現某些不知名軟件申請這些權限就果斷點取消。更機智小伙伴就會利用權限管理軟件把看片神器的除網絡訪問權限以為的權限都關閉掉。
在權限管理軟件的控制下惡意軟件視乎難以再有所作為,是否有零權限的攻擊方法了? 這就要借助上文提到高權限軟件s voice了,我們可以偽裝一個惡意軟件不申請任何敏感權限再借助S voice“提升權限”達到攻擊效果。
設計思路: 1、 設置intent啟動S Voice
Intent intent = new Intent();
intent.setAction("android.intent.action.VOICE_COMMAND");
startActivity(intent);
2、 調用MediaPalyer類播放攻擊語音
private MediaPlayer mp4;
mp4 = MediaPlayer.create(MainActivity.this, R.raw.confirm);
mp4.start();
demo應用未申請任何權限
演示視頻: http://v.youku.com/v_show/id_XNzUyNzk3MzYw.html
1. 因為google voice的谷歌類產品被嚴重河蟹基本無法使用,不考慮這種情況下音頻文件過大可使用google TTS 文字轉語音。
2. 其他語音助手軟件:百度語音….
3. 即使聲音很小也能成功被s voice識別,睡眠時小于55分貝不易被發現。可以通過監視系統狀態、傳感器判斷手機運行狀態。
4. 安卓系統中錄音方法是synchronized,也就是通過sdk api多個應用是無法同時訪問麥克風的。想無聲攻擊可以考慮NDK。
5. 通過傳感器、系統狀態信息判斷手機是否被使用,再未使用的情況下喚醒屏幕,發出攻擊指令。(s voice在屏幕關閉時候無法運行,用戶在使用時攻擊指令發聲易被發現)
6. 鎖屏下攻擊思路: