android pen test - recon -

24
2015/09/29 @kengoScal Android Pen Test - Recon -

Upload: kengo-suzuki

Post on 12-Apr-2017

1.277 views

Category:

Engineering


1 download

TRANSCRIPT

2015/09/29 @kengoScal

Android Pen Test - Recon -

自己紹介

名前: 鈴木 研吾 twitter: @kengoScal

2011~2014:セキュリティアナリスト@某SIer 2014年11月: マネーフォワード入社 2014年11月~2015年01月: iOS開発 2015年02月~08月:Android開発 2015年10月~ : セキュリティ的な何か

2

Pen Testとは

• Pen(etration) Test • ターゲットアプリの脆弱性を実際に突き、情報の取得や改竄を狙うテストのこと

• バグ探し(テスト)の一種

3

自前Pen Testのすゝめ

• 価格は大体50万~100万くらい • 自分で(も)やったほうがよくね? • 診断項目の取捨選択 -> 大事な情報にリソースを • 診断担当者とのやり取りの捗り • Androidのフレームワークについて語れる • お小遣い稼ぎに繋がる

4

Pen Test Phases

1. Planning 2. Scoping 3. Recon 4. Scanning 5. Exploitation 6. Reporting

5

Reconとは

• Recon(naisance): 偵察 • リーチ可能な情報を収集し、整理するフェーズ • 技術的情報ももちろんだが、ターゲットの組織図・ビジネス内容といったところもターゲット

6

Recon@Android

• アプリ情報収取 • logcat探し • Networkキャプチャ

7

Recon@Android

• アプリ情報収拾 • logcat探し • Networkキャプチャ

8

アプリ情報収集

• 収拾対象 • package情報 • Permission情報 • データの置き場 • android:exported=trueなコンポーネント • etc

• drozerを使うとラク • Androidセキュリティ・アセスメントツール

• デモ

9

Drozer

10

# package dz> run app.package.list -f Maps com.google.android.apps.maps (Maps)

# package情報(含むPermission) dz> run app.package.info -f Maps Package: com.google.android.apps.maps Application Label: Maps Process Name: com.google.android.apps.maps Version: 8.4.1 Data Directory: /data/data/com.google.android.apps.maps APK Path: /system/app/Maps/Maps.apk UID: 10073 GID: [3003, 1028, 1015] Shared Libraries: null Shared User ID: com.google.android.apps.maps Uses Permissions: - android.permission.INTERNET...

11

# android:exportedなActivity dz> run app.activity.info -a com.google.android.apps.maps Package: com.google.android.apps.maps com.google.android.maps.MapsActivity Permission: null com.google.android.maps.PlacesActivity...

# android:exported=trueなコンポーネントサマリ dz> run app.package.attacksurface com.google.android.apps.maps Attack Surface: 9 activities exported 2 broadcast receivers exported 1 content providers exported 4 services exported Shared UID (com.google.android.apps.maps)

Recon@Android

• アプリ情報収取 • logcat探し • Networkキャプチャ

12

logcat探し

• デバッグ用に実装していたlogcatがリリース用のapkに残ったまま 且つlogcatがセンシティブな情報を含んでる場合 • -> 情報漏えいのチャンス

13

logcat探し

• 下記ターミナルで実行して、アプリを弄っとけばおk % adb logcat | egrep --color=auto -i 'cookie|token'

• 対策は簡単 • BuildVariantsでわけるとか • Timberとかでちょろっと対応してればおk

• やっててそんなに楽しくなかった

14

Recon@Android

• アプリ情報収取 • logcat探し • Networkキャプチャ

15

Networkキャプチャ

• トラフィックを観察して、tcp周りのプロテクションの問題、サーバサイド側の変な実装、セッションハンドリングなどの情報を収集することが目的 

16

Networkキャプチャ: tcp編

17

• tcpdump + netcat + wiresharkでリアルタイムにパケットを見る(デモ) • tcpdump:

• netcat:

• wireshark:

※エミュレータには別途インストールが必要

※実機の場合、Root化が必要

※エミュレータと実機はCPUアーキテクチャが 違うので、コンパイル時に注意する

環境図

18

:54321:12345forward

19

[Kengo@Mac] ~ % adb shell "./data/local/tcpdump -w - | /data/local/./netcat -l -p 12345”

% adb forward tcp:12345 tcp:54321 && nc 127.0.0.1 54321 | sudo wireshark -k -S -i lo0

• L4レイヤーまでしか一見してわからない • セッションレベルの話ならわかる

• でもアプリとサーバとの動作はイマイチわからりにくい • Https通信を見れない

ローカルWebプロキシを立てる

tcpdump + netcat + wiresharkの限界

20

Network Capture: http(s)編

21

• ローカルWebプロキシ

• ブラウザ<-->Webサーバ間のhttp(s)通信をスニッフィングし • パラメタやシグネチャ等を改竄@ローカルプロキシしたり • OWASP ZAPならReconからExploitationへの遷移が楽です

参照: http://www.slideshare.net/zaki4649/ss-39061128

22 参照: http://www.slideshare.net/zaki4649/ss-39061128

こんな感じ

次回予告

23

1. Planning 2. Scoping 3. Recon 4. Scanning 5. Exploitation 6. Reporting

-> StageFlight辺りをやってみる(たい)

Thank you!

絶賛採用中