SlideShare a Scribd company logo
Androidアプリ解析の基礎
      (公開用)

 ネットエージェント株式会社
     2013/01/19
アプリ解析の目的について
• アプリが勝手に情報を持って行っていた
  り、意図しない動作をする現状をアプリ
  解析で解決しよう
Androidアプリの解析にあたっ
           て
• 最低限必要なスキル
 – Android 4.0以上でアプリを実行してそのアプ
   リを使いこなす。

• あったらより効率的にできるスキル
 – Javaが読める
 – パケットが読める
 – Androidデバイスの識別子について知っている
 – AndroidのAPIを熟知している
解析手法の比較
静的解析                         動的解析
• 実行せずに構造のみで解析す              • 実際に実行して解析する
  る
                             • メリット
• メリット                         – 真実をつかめる
                               – 機器の外部から取得できる。
  – 全て探すことができる。                  (パケットキャプチャ)
  – たまにしか難読化されていない             – SSLで暗号化されていても内容が
    (ProGuardは除く)                分かる
  – 自動化できるので大量にできる。            – IDで検索可能


• デメリット                      • デメリット
  – 事実が出ない                     – ユーザ登録など自動化出来ない
                                 部分が多い
  – 実装されているものが利用され             – 時間がかかる
    ていないものも含め全てでる。
  – Java scriptは入手する必要がある。
静的解析
静的解析(.apkファイルの取得)
• .apkファイルの取得
 – Google Playでダウンロードしてインストールして
   コピー

• パケットキャプチャしたデータから再現
 – WiresharkやPacketBlackHoleでやってください。
 – http://nttxstore.jp/_II_NA14094679

• ダウンロード専用のプログラムを使う
 – ダウンロードできるアプリに制限有り
 – 検索すると出てきます
静的解析の手法(1)
• .apkファイルを展開
 – zipファイルなので、zipファイルをそのまま展
   開して下さい。
 – classes.dexがDalvik仮想マシンの中間コードで
   す。
静的解析の手法(2)
• Android's Java VM implementation
  – http://code.google.com/p/smali/


• 中間コードに一対一で展開する場合は
  baksmaliを利用します。
  – 編集してapkファイルを再構成することも可能
静的解析の手法(3)
• dalvikからjavaの中間コードに変換する場合は dex2jarを
  使います。
  – http://code.google.com/p/dex2jar/

• Linuxの場合
  – $ dex2jar-0.0.9.8/dex2jar.sh classes.dex

• Windowsの場合
  – > dex2jar-0.0.9.8/dex2jar.bat classes.dex

• 以上で.jarファイルに変換出来ます。
• classes_dex2jar.jarというファイルがあると思います
静的解析の手法(4)
• classファイルを見やすくするにはJDが便利
  です。
• dex2jarで出てきたファイルをJD-guiにド
  ロップすると中身が見えます。

• http://java.decompiler.free.fr/?q=jdgui

• Eclipseが使える方は、JD-Eclipseでもよいで
  す。
Androidアプリ解析の基礎 公開用
静的解析の手法(5)
• 変数を追っかけるには
 – 開発環境があると便利です Eclipse+JD-Eclipse+
   MarkOccurrence機能

 – 危険そうなAPIを比較して何をやっているのか
   判断します。

 – http://developer.android.com/guide/components
   /index.html
静的解析の手法(6)
• これまでのことを自動でやる方法。

• secroidの評価者モードから解析データをダ
  ウンロードします。
動的解析
動的解析の手法
• 実機もしくはエミュレータ環境で実行し
  ます。

• 実際の動作を確認する。

• 静的解析の情報から、ここにアクセスす
  る動作をするという目的を作るとやりや
  すい。
 – 例:該当するURLへのアクセスをする
動的解析の3つのアプローチ
• ディバッガを使って実際に動かしながら行う。
 – プログラム自体を解析する場合には必要

• でたらめな入力をするツールで通信パケットを確
  認
 – 自動化できる、自動ユーザ登録や広告モジュールの
   動作確認程度のみ可能
 – ユーザ登録があるものはほぼ無力

• 実際に動かしてその通信パケットを確認
 – 自動化が困難
 – ユーザ登録があるものも検査可能
実際に動かしてその通信パケット
          を確認
• パケットキャプチャ環境の構築
    – Wifi経由で通信して、PCでキャプチャ
    – tPacketCapture(taosoftware co.,ltd)でキャプチャ
    https://play.google.com/store/apps/details?id=jp.co.tao
    software.android.packetcapture


•    SSLを解読するには、Android4.0以上で、証
    明書をインストールする必要があります。
    – セキュリティ - 認証情報ストレージ - SDからイン
      ストール (PINかパターン認証が必要になります)
(4) アプリから発生した通信を
                                    解析サーバーが解析し,可視化。




(3) SSL通信解読サーバーがProxyとして動作し,
  アプリと外部との通信を確立。
  アプリから発生した通信は解読サーバーを経由し,
  解析サーバーへコピー。


                      (1) 任意のスマートフォンから『Google Play』等にアクセスし,任意のアプリをダウンロード。
                      (2) そのスマートフォンからアプリを起動。任意の操作を実行。
                                                     対応OS:iOS 5.0 以降,Android 4.0 以降


                                                                   18
プライバシーを確認するポイント
       (1)
• 識別子
 – IMEI (端末識別番号)*#06#
 – ICCID(SIMシリアル番号)
 – IMSI (加入者識別番号)
 – Wi-Fi MACアドレス
 – 電話番号 プロフィール表示など
 – MCC/MNC (キャリア識別番号)
 – Android_ID *#*#8255#*#*
プライバシーを確認するポイント
       (2)
• 個人情報
 – 連絡先情報
 – 緯度経度
 – googleアカウント
 – インストール済みパッケージ名
 – SDカードの中身
 – DCIM(カメラデータ)の中身
プライバシーを確認するポイント
       (3)
• 生情報とMD5,SHA1でハッシュ化された情報
  を持っておくと良い
• ※そのままハッシュ化していない場合は、同
  一ハッシュでは分からないので
  0123456789abcdefABCDEFの32文字40文字の連
  続で判定。(base64の場合は異なる方法で行
  う。)ケースによっては静的解析で出た情報
  と同じ方法でハッシュ化する。
• パーミッション情報と静的解析された情報か
  らそれらをどのように送っているかどうかを
  確認する。
Androidアプリ解析の基礎 公開用

More Related Content

Androidアプリ解析の基礎 公開用

  • 1. Androidアプリ解析の基礎 (公開用) ネットエージェント株式会社 2013/01/19
  • 2. アプリ解析の目的について • アプリが勝手に情報を持って行っていた り、意図しない動作をする現状をアプリ 解析で解決しよう
  • 3. Androidアプリの解析にあたっ て • 最低限必要なスキル – Android 4.0以上でアプリを実行してそのアプ リを使いこなす。 • あったらより効率的にできるスキル – Javaが読める – パケットが読める – Androidデバイスの識別子について知っている – AndroidのAPIを熟知している
  • 4. 解析手法の比較 静的解析 動的解析 • 実行せずに構造のみで解析す • 実際に実行して解析する る • メリット • メリット – 真実をつかめる – 機器の外部から取得できる。 – 全て探すことができる。 (パケットキャプチャ) – たまにしか難読化されていない – SSLで暗号化されていても内容が (ProGuardは除く) 分かる – 自動化できるので大量にできる。 – IDで検索可能 • デメリット • デメリット – 事実が出ない – ユーザ登録など自動化出来ない 部分が多い – 実装されているものが利用され – 時間がかかる ていないものも含め全てでる。 – Java scriptは入手する必要がある。
  • 6. 静的解析(.apkファイルの取得) • .apkファイルの取得 – Google Playでダウンロードしてインストールして コピー • パケットキャプチャしたデータから再現 – WiresharkやPacketBlackHoleでやってください。 – http://nttxstore.jp/_II_NA14094679 • ダウンロード専用のプログラムを使う – ダウンロードできるアプリに制限有り – 検索すると出てきます
  • 7. 静的解析の手法(1) • .apkファイルを展開 – zipファイルなので、zipファイルをそのまま展 開して下さい。 – classes.dexがDalvik仮想マシンの中間コードで す。
  • 8. 静的解析の手法(2) • Android's Java VM implementation – http://code.google.com/p/smali/ • 中間コードに一対一で展開する場合は baksmaliを利用します。 – 編集してapkファイルを再構成することも可能
  • 9. 静的解析の手法(3) • dalvikからjavaの中間コードに変換する場合は dex2jarを 使います。 – http://code.google.com/p/dex2jar/ • Linuxの場合 – $ dex2jar-0.0.9.8/dex2jar.sh classes.dex • Windowsの場合 – > dex2jar-0.0.9.8/dex2jar.bat classes.dex • 以上で.jarファイルに変換出来ます。 • classes_dex2jar.jarというファイルがあると思います
  • 10. 静的解析の手法(4) • classファイルを見やすくするにはJDが便利 です。 • dex2jarで出てきたファイルをJD-guiにド ロップすると中身が見えます。 • http://java.decompiler.free.fr/?q=jdgui • Eclipseが使える方は、JD-Eclipseでもよいで す。
  • 12. 静的解析の手法(5) • 変数を追っかけるには – 開発環境があると便利です Eclipse+JD-Eclipse+ MarkOccurrence機能 – 危険そうなAPIを比較して何をやっているのか 判断します。 – http://developer.android.com/guide/components /index.html
  • 15. 動的解析の手法 • 実機もしくはエミュレータ環境で実行し ます。 • 実際の動作を確認する。 • 静的解析の情報から、ここにアクセスす る動作をするという目的を作るとやりや すい。 – 例:該当するURLへのアクセスをする
  • 16. 動的解析の3つのアプローチ • ディバッガを使って実際に動かしながら行う。 – プログラム自体を解析する場合には必要 • でたらめな入力をするツールで通信パケットを確 認 – 自動化できる、自動ユーザ登録や広告モジュールの 動作確認程度のみ可能 – ユーザ登録があるものはほぼ無力 • 実際に動かしてその通信パケットを確認 – 自動化が困難 – ユーザ登録があるものも検査可能
  • 17. 実際に動かしてその通信パケット を確認 • パケットキャプチャ環境の構築 – Wifi経由で通信して、PCでキャプチャ – tPacketCapture(taosoftware co.,ltd)でキャプチャ https://play.google.com/store/apps/details?id=jp.co.tao software.android.packetcapture • SSLを解読するには、Android4.0以上で、証 明書をインストールする必要があります。 – セキュリティ - 認証情報ストレージ - SDからイン ストール (PINかパターン認証が必要になります)
  • 18. (4) アプリから発生した通信を 解析サーバーが解析し,可視化。 (3) SSL通信解読サーバーがProxyとして動作し, アプリと外部との通信を確立。 アプリから発生した通信は解読サーバーを経由し, 解析サーバーへコピー。 (1) 任意のスマートフォンから『Google Play』等にアクセスし,任意のアプリをダウンロード。 (2) そのスマートフォンからアプリを起動。任意の操作を実行。 対応OS:iOS 5.0 以降,Android 4.0 以降 18
  • 19. プライバシーを確認するポイント (1) • 識別子 – IMEI (端末識別番号)*#06# – ICCID(SIMシリアル番号) – IMSI (加入者識別番号) – Wi-Fi MACアドレス – 電話番号 プロフィール表示など – MCC/MNC (キャリア識別番号) – Android_ID *#*#8255#*#*
  • 20. プライバシーを確認するポイント (2) • 個人情報 – 連絡先情報 – 緯度経度 – googleアカウント – インストール済みパッケージ名 – SDカードの中身 – DCIM(カメラデータ)の中身
  • 21. プライバシーを確認するポイント (3) • 生情報とMD5,SHA1でハッシュ化された情報 を持っておくと良い • ※そのままハッシュ化していない場合は、同 一ハッシュでは分からないので 0123456789abcdefABCDEFの32文字40文字の連 続で判定。(base64の場合は異なる方法で行 う。)ケースによっては静的解析で出た情報 と同じ方法でハッシュ化する。 • パーミッション情報と静的解析された情報か らそれらをどのように送っているかどうかを 確認する。