Weitere ähnliche Inhalte
Ähnlich wie Androidアプリ解析の基礎 公開用 (20)
Mehr von Lumin Hacker (11)
Androidアプリ解析の基礎 公開用
- 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
• ダウンロード専用のプログラムを使う
– ダウンロードできるアプリに制限有り
– 検索すると出てきます
- 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というファイルがあると思います
- 12. 静的解析の手法(5)
• 変数を追っかけるには
– 開発環境があると便利です Eclipse+JD-Eclipse+
MarkOccurrence機能
– 危険そうなAPIを比較して何をやっているのか
判断します。
– http://developer.android.com/guide/components
/index.html
- 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の場合は異なる方法で行
う。)ケースによっては静的解析で出た情報
と同じ方法でハッシュ化する。
• パーミッション情報と静的解析された情報か
らそれらをどのように送っているかどうかを
確認する。