PreAMo:GooglePlayでの広告クリックアクティビティ



Preamo Ad Click Activity Google Play



概要概要

チェック・ポイントのセキュリティ研究者は、広告主に対する不正行為の一連のアプリケーションを発見しました。その中には、Presage、Admob、Mopubの3つの広告主のバナーをクリックすることでユーザーをシミュレートできるマルウェアPreAMoがあります。



6つのマルウェアの合計9千万回以上のダウンロードが行われ、Googleは感染したアプリケーションをGooglePlayから削除しました。

PreAMo:グーグルプレイ



図1-RAMマスターのGooglePlay情報

PreAMo

PreAMoは3つの異なるコードで構成されており、それぞれが広告主の処理を担当します。これらの3つのコードは異なるパッケージで配布されるため、トリガー方法が異なり、接続がありません。コードの3つの部分はすべて、統計データの送信と構成データの受信に使用される同じC2サーバーと通信するために接続されています。コードの3つの部分の動作は似ています。広告ネットワークによって読み込まれたバナーにリスナーを登録します。バナーが読み込まれると、PreAMoはAndroidフレームワークの「MotionEvent」クラスを使用してクリックをシミュレートします。



ただし、広告ライブラリの実装の違いにより、PreAMoの背後にいる攻撃者は、各広告主に対処するために異なる方法を使用します。

1.広告代理店#1 – Admob:

「PreAMo」はcom.google.android.gms.ads.internal.tools.ConfigProviderのマニフェストに登録されています。目的は、ホストアプリケーションの起動時にAdMobFixerクラスを初期化することです。このクラスは、タイマーを使用して動的レシーバーを登録し、C2サーバーからの構成の更新を定期的にチェックします。

PreAMo:グーグルプレイ

図2-受信者の登録

「PreAMo」は、2つの異なる方法を使用して、広告バナーが表示されているかどうかを検出します。最初の方法は、リフレクションを使用して内部構造に分割し、コールバックをインストールすることです。 2番目の方法は、アクティビティライフサイクルコールバックに基づいています。

PreAMo:グーグルプレイ

図3-検出方法#1

PreAMo:グーグルプレイ

図4-検出方法#2

Androidシステムは、アプリケーションで新しいアクティビティが作成されるたびにリスナーに通知します。 PreAMoは、トップウィンドウから特定の広告ビューを再帰的に検索します(装飾)

PreAMo:グーグルプレイ

図5-OnAdActiviyの実装

バナーが正常に検出された後、PreAMoは次の一連の条件をチェックします。

ユーザーがオーガニックかどうか。このタグはcom.DianXinOSライブラリの一部であり、INSTALL_REFERRERのリスナーが受信したインテントに従って設定されます。コンテンツにオーガニックという単語が含まれている場合は、Google Playで検索した後にアプリケーションがインストールされたことを示します。値はTrueに設定され、そうでない場合はfalseに設定されます。自動クリックは、値がFalseの場合にのみ機能します。ただし、PreAMoの一部のバージョンでは、この値はC2サーバーから受信されます。

ユーザーは広告バナーをクリックしていません。

クリックの間隔と1日の最大クリック数が、事前定義された制限を下回っています。

ランダムな値を確認してください。

上記のすべての条件が満たされると、PreAMoはバナーのクリックをシミュレートします。これを実現するために、マルウェアはファイルassets / xddから事前定義された座標位置を読み取ります。場合によっては、これはバナーのサイズに基づいています。 PreAMoは、ランダムに生成された座標を使用できます。

PreAMo:グーグルプレイ

図6-PreAMoによって実行された条件チェック

PreAMo:グーグルプレイ

図7-xddから読み取られた事前に決定された座標

PreAMo:グーグルプレイ

図8-ランダムに生成された座標の使用

広告代理店#2 –プレサージュ:

コードのこの部分の実行は、com.DianXinOS.OServiceクラスから派生します。 onStartCommandを呼び出すメソッドでは、PreAMoは新しいスレッドを開始して、Presage(ogury)ライブラリからのインストリーム広告を定期的に表示します。

スレッドでは、マルウェアはC2サーバーと通信し、URL hxxps://res.mnexuscdn [。] com / dp / 0845e0150308bcdf5ef03ba8295075f9から構成データをロードします。

PreAMo:グーグルプレイ

図9-スレッドの作成

PreAMo:グーグルプレイ

図10-広告戦略(構成データ)

PreAMoは構成ファイルを受け取り、広告の期間(min_i_sec_l​​imit)と1日の最大広告(max_p_ad)を確認します。検証が成功すると、PreAMoはPresageからの広告に関連するアクティビティを表示します。

PreAMo:グーグルプレイ

図11-広告構成を確認する

PreAMo:グーグルプレイ

図12-インストリーム広告

Presageからの広告の表示に加えて、PreAMoはホストアプリケーション用に独自のイベントマネージャーを登録し、次の方法を実装し(図13)、デフォルトのPresage Webクライアントを置き換えて、ランダムに生成された座標を使用してバナーをクリックします(図14)。

PreAMo:グーグルプレイ

図13-Presageの再実装方法

PreAMo:グーグルプレイ

図14-ランダムに生成された座標

広告代理店#3 – Mopub:

PreAMoがMopubを処理する場合、最初の部分はコンテンツプロバイダーに配置されます。プロバイダーはcom.android.stats.tools.InitProviderクラスにあります。ホストアプリケーションが起動すると、つまりOnCreateメソッドで、コードが実行され、タイマーが構成されます。

タイマーは、構成の更新を確認するために、設定されたURLに定期的に要求を送信します。

hxxps://res.mnexuscdn [。] com / dp / a79a2d1b9a8252fcc6917d6c46211199 ’

hxxps://res.mnexuscdn [。] com / dp / 75d109e54ce75b05064374ae0b77a359 ’

hxxps://res.mnexuscdn [。] com / dp / dd87a43132f3ce443d1e50b29019de3b ’

hxxps://res.mnexuscdn [。] com / dp / 8c7d12b8c28d8e573439c59627df9092 ’

前のセクションと同様に、構成にはクリックアルゴリズムに関連するさまざまな遅延と条件が含まれています。 Mopubライブラリはオープンソースであるため、ProAMoオープンソースインジェクションコードはライブラリのソースコードに統合されています。たとえば、com.mopub.common.AdUrlGeneratorメソッドで偽のパッケージ情報を使用します。

PreAMo:グーグルプレイ

図15-偽造パッケージ情報

同様に、攻撃者はMraidコントローラーのコードを変更して、WebViewコンポーネントで開かれたリンクを処理します。コントローラには、JSによってトリガーされたイベントのコールバックを含むMraidListenerインターフェイスを実装するオブジェクトが含まれています。コールバックメソッドの1つはonOpenと呼ばれ、オープンソースはJSで開かれたURLに反応します。

PreAMo:グーグルプレイ

図16-偽造されたホスト情報

PreAMo:グーグルプレイ

図17-MraidControllerの実装

onOpenの実装はクラスURLHandlerと呼ばれ、スキームに対応するURLの処理を担当します。 PreAMoの背後にいる攻撃者は、このプロセスを変更しました。 URLが正しく処理され、それがHTMLページである場合、クリックがシミュレートされます。

PreAMo:グーグルプレイ

図18–イミテーション#1のクリック

HTMLWebViewClientは、URLが現在のWebViewにロードされるタイミングをホストアプリケーションに制御する機会を与えるメソッドshouldOverrideUrlLoadingを含め、同様のことを行います。 Mopubはこれを使用して、WebViewにロードされるURLの処理方法をチェックしますが、マルウェア開発者は、ロードされるページをクリックするために独自のコードを挿入します。 スカイカラー

PreAMo:グーグルプレイ

図19–クリック模倣#2

C2サーバー

C2サーバーのドメイン名res.mnexuscdn.comは、匿名サービスを通じて登録されました。パッシブトータルのデータによると、最も早いのは2018年12月12日です。

PreAMo:グーグルプレイ

図20-RiskIQのWhoISデータ

クリックしてAdMobから設定データを受信します。

https://res.mnexuscdn [。] com / dp / 4456476a30e111ba1b3ee299c279d51a ’

クリックしてMopubから構成データを受信します。

https://res.mnexuscdn [。] com / dp / a79a2d1b9a8252fcc6917d6c46211199 ’

https://res.mnexuscdn [。] com / dp / dd87a43132f3ce443d1e50b29019de3b ’

https://res.mnexuscdn [。] com / dp / 8c7d12b8c28d8e573439c59627df9092 ’

https://res.mnexuscdn [。] com / dp / cdaef0b66c347591bffd32260d76c6cc ’

https://res.mnexuscdn [。] com / dp / 9a641c69cf5186982e8ac8c4e06e80f4 ’

https://res.mnexuscdn [。] com / dp / f61f3f92d0dbcebe26d47dea3af1492a ’

presage / oguryから構成データを受信するをクリックします。

https://res.mnexuscdn [。] com / dp / 0845e0150308bcdf5ef03ba8295075f9 ’