作者:
瘦蛟舞
·
2014/08/08 15:01
參考:http://arxiv.org/pdf/1407.4923.pdf
0x00 三星S voice
三星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"/>
0x01 Android permission
應用在執行某項敏感操作時(例如傳送簡訊)必須在程式安裝時就對此項許可權進行申明
參考:
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 許可權。利用這一機制小夥伴如果發現某些不知名軟體申請這些許可權就果斷點取消。更機智小夥伴就會利用許可權管理軟體把看片神器的除網路訪問許可權以為的許可權都關閉掉。
0x02 攻擊思路
在許可權管理軟體的控制下惡意軟體視乎難以再有所作為,是否有零許可權的攻擊方法了? 這就要藉助上文提到高許可權軟體s voice了,我們可以偽裝一個惡意軟體不申請任何敏感許可權再借助S voice“提升許可權”達到攻擊效果。
0x03 Demo
設計思路: 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
0x04 補充說明
1. 因為google voice的谷歌類產品被嚴重河蟹基本無法使用,不考慮這種情況下音訊檔案過大可使用google TTS 文字轉語音。
2. 其他語音助手軟體:百度語音….
3. 即使聲音很小也能成功被s voice識別,睡眠時小於55分貝不易被發現。可以透過監視系統狀態、感測器判斷手機執行狀態。
4. 安卓系統中錄音方法是synchronized,也就是透過sdk api多個應用是無法同時訪問麥克風的。想無聲攻擊可以考慮NDK。
5. 透過感測器、系統狀態資訊判斷手機是否被使用,再未使用的情況下喚醒螢幕,發出攻擊指令。(s voice在螢幕關閉時候無法執行,使用者在使用時攻擊指令發聲易被發現)
6. 鎖屏下攻擊思路:
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!