仮想Android端末で問題のサイトにアクセス
「仮想Android」という端末を入手した純真無垢で人を信用してしまう私は、ついにAndroidで問題のサイトにアクセスできるようになりました。
マルウェア一つに感染させるために、えらい手間をかけさせてくれるな。(´・ω・`)
既にAndroid端末で「提供元不明のアプリ」を許可する手順が必要なことが分かっているので、その設定をしておきます。
そして、問題のサイトにアクセスして、インストールボタンを押しました。
なんかボタンが端っこで見切れているんですが、頑張って押してみます。
すると、以下のようなメッセージが表示されました。
英語ですが、「このタイプのファイルはデバイスに危害を与えるかもしれないけど本当にいいの?」と聞いてきています。
純真無垢で人を信用してしまう私はこのサイトを信用しきっているので、そんな悪いことをするはずがない!とOKを押しました。
すると!マルウェアがダウンロードされ、ダウンロードフォルダに格納されました。
攻撃者のサイトから落ちてきた、新鮮な生のマルウェアです。
ヒャッハー!やっぱりマルウェアをヤるのは生に限るぜー!!
・・・あ、いかん。
品行方正かつ純真無垢で人を信用してしまう私は、うっかり騙されてマルウェアをダウンロードしてしまいました。
騙されてマルウェアをダウンロードしてしまったのだから仕方ない、これは仕方ない。
さて、設定マニュアル通りにやるなら、この後さらにインストールするのですが。
もう面倒なんで、このままapkファイルを抜いちゃいましょう。
(面倒とか言い出したぞ、この被害者・・・。)
仮想デバイスからファイルを抽出
仮想デバイスにapkファイルがドロップされたので、このファイルを抽出します。
抽出にはadbというAndroid用のツールを使います。
今回は、以下のページからツールを入手することができました。
SDK Platform-Tools リリースノート
https://developer.android.com/studio/releases/platform-tools.html
なお、私は試してないですが、物理デバイスにダウンロードした場合でも、USB接続してこれを用いれば抽出できるようです。
実際に感染してしまった被害者の端末を調査する際にも活用できるのではないでしょうか。
なお、この方法をやる場合、デベロッパーモードにしたうえで、USBデバッグを有効にする必要があります。
ググれば方法は出てくると思いますが、以下のページなどは図もあって分かりやすかったです。
Android「開発者向けオプション」の基本と表示/非表示にする方法まとめ! デベロッパーモードで隠れ機能を使おう
https://sp7pc.com/google/android/4517
USBデバッグの有効化は、開発者向けオプション画面をスクロールしていけばどこかにありますので、見つけて有効にするだけです。
adbはコマンドラインツールのため、WindowsでもDOSプロンプトで操作する必要があります。
一応、管理者権限でDOSプロンプトを起動してください(通常の起動でも問題ないかは未検証)。
まず、「adb devices」コマンドでAndroidデバイスの一覧を取得します。
先ほどのエミュレータを起動した状態であれば、それがデバイスとして参照できます。
次に「adb -s (デバイス名) shell」でデバイスにシェルでアクセスできるようにします。
この接続が成功すると、Linuxのコマンドが打てるようになります。
ただし、パーミッションは制限されているようです。
これはちょっと調べましたが、ダウンロードされたファイルは/sdcard/downloadに格納されているようです。
lsコマンドで調べると、sagawa.apkがありました。
このデータを引っこ抜きたいと思います。
一度exitした後、「adb pull」コマンドでファイルをOSのフォルダに抽出して格納します。
今回の場合、「adb pull /sdcard/Download/sagawa.apk」です。
「1 file pulled」になったので、抽出は成功したようです。
なお、今回はやっていませんが、インストールされたアプリのapkも抽出できるようです。
既にマルウェアに感染しているデバイスから検体を抽出する方法として使えるのではないでしょうか。
Android 端末から APK を adb pull で取得する
https://loumo.jp/wp/archive/20180602120005/
adbのフォルダを確認すると、「sagawa.apk」が格納されていました。
これで、マルウェアアプリを入手することができました。
うひひひ・・・。おじょぉちゃぁぁぁん。オジさんの世界へようこそぉぉぉ。もう逃げられないぞぉぉおおお?
apkファイルの展開
さあて・・・。それではひん剥いてソースコードを素っ裸にしてやりますかぁぁぁ。
apkは一つのファイルになっていますが、この中身を調査します。
apkファイルはzipで圧縮されているので、unzipすれば良いのですが、それでも実行コードはデコンパイルされていない状態になります。
classes.dexファイルを dex2jar と jad を使って戻せばいいのですが、Linuxでならapkxというツールがgithubに公開されていて、これがapkからjavaソースファイル展開までをパッケージしてやってくれているので、これを導入しちゃいます。
git clone https://github.com/b-mueller/apkx
cd apkx
sudo ./install.sh
・・・でいけるハズなんですが、私の環境では「sudo ./install.sh」でエラーになりました。
まあ、install.shの中身をみたら、root権限かどうかをチェックして、rootならファイルのコピーとパーミッションの変更をしているだけだったので、sudo suでrootになってからそのコマンドをコピペで実行してインストールしました。
なお、Linuxマシンは日頃使っているSANSのSIFTのVMを利用しました。
コマンドは単純に「apkx (apkファイル名)」で、実行するとzipの解凍とJavaのデコンパイルまでをまとめてやってくれます。
すると、src/orgにデコンパイルされたソースが展開されます。
テキストエディタで参照すると、デコンパイルできていることが分かります。
なお、関数名までは完全に戻らないため、a、bといった関数名になっているものもあります。
ここから先は、apkファイルやjavaソースの解析になります。
今回は、品行方正かつ純真無垢で人を信用してしまう私がフィッシングサイトにダマされてしまったので、そのアプリの取得と抽出、ソースの展開までの一通りの方法を試してみて、そこそこ上手くいったのでメモっておきました。
残念ながら、これからはスマホの被害も増えてきそうなので、こういった手法も押さえておかないといけないでしょうね。
さぁて・・・。悪いお嬢ちゃんは、オシオキしてあげないとなぁぁぁ。
なぁに、オジさんがたぁぁぁっぷりかわいがってあげるよぉぉぉ?
オジさん、今回のイベで未取得のU-511とJervisが掘れなくて、ちょっと機嫌が悪いんだぁ。
恨むなら、オジさんのドロップ運の悪さを恨むんだなぁぁぁぁ。
(こんなワケの分からない勝手な理由で変態のオッサンに絡まれるんだから、サイバー犯罪者もラクな稼業じゃなさそうだなぁ。)