Chrome: DNS-запросы со случайными DNS-именами: вредоносное ПО?

Posible solución:

Defina la variable en la parte superior de Makefiley use ifeq. Por ejemplo:

RESULT = $(shell grep... 2>/dev/null && echo 0 || echo 1)
...
skipped_tests:
ifeq ($(RESULT),0)
   ...
endif

Pero grepse ejecutará en cada llamada de make, incluso si las pruebas omitidas _no están llamando. Si ese objetivo se llama cada vez, entonces también es una solución.


Teniendo en cuenta sus deseos. Si desea usar el resultado grepen el objetivo varias veces, puede usar una expresión de varias líneas. Supongamos que tengo el siguienteMakefile:

all: target

target:
    @res=`grep -E 'test|pttern' test.js` || { res="" ; : ; } ; \
        [ ! -z "$$res" ] && echo "Grep result: $$res" ; \
        ls ; \
        [ ! -z "$$res" ] && echo "Grep result: $$res" ; \
    :

.PHONY: target

y tengo el siguiente test.jsen el mismo directorio:

$ cat test.js
pattern

Si el patrón no coincide, habrá el siguiente resultado:

$ make
Makefile  test.js

Si el patrón existe, habrá el siguiente resultado:

$ make
Grep result: pattern
Makefile  test.js
Grep result: pattern

Para facilitar la lectura, puede cambiar ``con res=$$(grep -E...) ||....

Por supuesto, no es muy conveniente hacer comandos multilínea en una llamada al sistema (esta multilínea es una sesión de intérprete )pero a veces puede ser útil en casos en los que necesita operar una variable (variable de entorno también ).

93
04.05.2019, 12:16
1 ответ

Я нашел серию сообщений/отчетов об ошибках о случайных DNS-запросах, сделанных Chrome.Вывод состоит в том, что случайные DNS-запросы не генерируются ни вредоносными программами, ни плагинами или надстройками.

Запросы выполняются Chrome, чтобы узнать, может ли он обрабатывать поиск, сделанный из его адресной строки.

Лучшее объяснение, которое я нашел, приведено ниже по этой ссылке.

Если вы вводите поисковый запрос из одного слова, Chrome должен отправить DNS-запрос. запрос, чтобы проверить, может ли это быть именем хоста из одного слова: для например, "тест" может быть поиском "тест" или переходом к "http://test". Если запрос оказывается хостом, Chrome показывает информационная панель, которая спрашивает: «Вы имели в виду вместо этого перейти к« тесту »». Для производительности причинам DNS-запрос должен быть асинхронным.

Теперь некоторые интернет-провайдеры начали показывать рекламу несуществующих доменных имен ( http://en.wikipedia.org/wiki/DNS_hijacking ), что означает, что Chrome всегда показывать эту информационную панель для каждого запроса, состоящего из одного слова. Так как это раздражает, хром теперь отправляет три случайных DNS-запроса при запуске, и если они все разрешаются (я думаю, на один и тот же IP), теперь он знает, что нельзя показать информационную панель "Вы имели в виду" для однословных запросов, которые разрешают к этому ИП.

Помимо уровня интернет-провайдера или вредоносного DNS, перехватывающего связанную выше запись в Википедии, некоторые платные точки беспроводного доступа или авторизованные порталы также перехватывают DNS. Случайные запросы выполняются через, казалось бы, случайные промежутки времени, а не только при запуске Chrome. По крайней мере, они происходят каждый раз, когда текущий сетевой интерфейс получает новый IP-адрес.

Вот еще одна ссылка на тему от @Gilles: Необычные запросы HEAD к бессмысленным URL-адресам из Chrome. Следовательно, добавляя к вопросу тему настройки прокси-теста. В конечном итоге вы видите журналы прокси-сервера, потому что, когда прокси-сервер настроен, запросы выполняются через прокси-сервер; и прокси-сервер должен разрешать DNS-запросы.

За неимением более подробной информации в Интернете я скачал и изучил исходный код Chromium с помощью приведенной ниже команды.

git clone https://chromium.googlesource.com/chromium/src 

Приведенная ниже цитата была скопирована из комментариев к исходному коду Chromium:

Поскольку эта функция может быть вызвана во время запуска, при запуске Получение URL-адреса может занимать 20 мс, мы задерживаем семь секунд, что надеюсь, достаточно долго, чтобы быть после запуска, но все же получить результаты быстро.

Этот компонент отправляет запросы трем случайно сгенерированным и, следовательно, несуществующие, имена хостов. Если хотя бы два редиректят на один и тот же имя хоста, это говорит о том, что провайдер захватывает NXDOMAIN, а омнибокс следует рассматривать аналогичные перенаправленные переходы как «неудачные» при принятии решения запрашивать ли у пользователя информационную панель «Вы имели в виду навигацию» для определенных поисковых входов. Триггер

: «При запуске и изменении IP-адреса компьютера».

Мы генерируем случайное имя хоста длиной от 7 до 15 символов.

Я пришел к выводу, что эти случайные имена DNS-запросов не являются проявлением вредоносного ПО ; они являются зондами для Chromium (и Google Chrome), чтобы узнать, что он может сделать в отношении по крайней мере, поисковых запросов.

Не имея более подробной информации в Интернете, я скачал исходники Chromium для своего расследования. Логику этой функции можно найти в файле src/chrome/browser/intranet_redirect_detector.cc и src/chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer.cc.

Ниже приведена выдержка из src/chrome/browser/intranet_redirect_detector.cc:

void IntranetRedirectDetector::FinishSleep() {
  in_sleep_ = false;

  // If another fetch operation is still running, cancel it.
  fetchers_.clear();
  resulting_origins_.clear();

  const base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess();
  if (cmd_line->HasSwitch(switches::kDisableBackgroundNetworking))
    return;

  DCHECK(fetchers_.empty() && resulting_origins_.empty());

  // Create traffic annotation tag.
  net::NetworkTrafficAnnotationTag traffic_annotation =
      net::DefineNetworkTrafficAnnotation("intranet_redirect_detector", R"(
        semantics {
          sender: "Intranet Redirect Detector"
          description:
            "This component sends requests to three randomly generated, and "
            "thus likely nonexistent, hostnames.  If at least two redirect to "
            "the same hostname, this suggests the ISP is hijacking NXDOMAIN, "
            "and the omnibox should treat similar redirected navigations as "
            "'failed' when deciding whether to prompt the user with a 'did you "
            "mean to navigate' infobar for certain search inputs."
          trigger: "On startup and when IP address of the computer changes."
          data: "None, this is just an empty request."
          destination: OTHER
        }
        policy {
          cookies_allowed: false
          setting: "This feature cannot be disabled by settings."
          policy_exception_justification:
              "Not implemented, considered not useful."
        })");

  // Start three fetchers on random hostnames.
  for (size_t i = 0; i < 3; ++i) {
    std::string url_string("http://");
    // We generate a random hostname with between 7 and 15 characters.
    const int num_chars = base::RandInt(7, 15);
    for (int j = 0; j < num_chars; ++j)
      url_string += ('a' + base::RandInt(0, 'z' - 'a'));
    GURL random_url(url_string + '/');
    std::unique_ptr<net::URLFetcher> fetcher = net::URLFetcher::Create(
        random_url, net::URLFetcher::HEAD, this, traffic_annotation);
    // We don't want these fetches to affect existing state in the profile.
    fetcher->SetLoadFlags(net::LOAD_DISABLE_CACHE |
                          net::LOAD_DO_NOT_SAVE_COOKIES |
                          net::LOAD_DO_NOT_SEND_COOKIES |
                          net::LOAD_DO_NOT_SEND_AUTH_DATA);
    fetcher->SetRequestContext(g_browser_process->system_request_context());
    fetcher->Start();
    net::URLFetcher* fetcher_ptr = fetcher.get();
    fetchers_[fetcher_ptr] = std::move(fetcher);
  }
}

void IntranetRedirectDetector::OnURLFetchComplete(
    const net::URLFetcher* source) {
  // Delete the fetcher on this function's exit.
  auto it = fetchers_.find(const_cast<net::URLFetcher*>(source));
  DCHECK(it != fetchers_.end());
  std::unique_ptr<net::URLFetcher> fetcher = std::move(it->second);
  fetchers_.erase(it);

  // If any two fetches result in the same domain/host, we set the redirect
  // origin to that; otherwise we set it to nothing.
  if (!source->GetStatus().is_success() || (source->GetResponseCode() != 200)) {
    if ((resulting_origins_.empty()) ||
        ((resulting_origins_.size() == 1) &&
         resulting_origins_.front().is_valid())) {
      resulting_origins_.push_back(GURL());
      return;
    }
    redirect_origin_ = GURL();
  } 

.....

Ниже приведена выдержка из файла src/chrome/browser /ui/omnibox/chrome_omnibox_navigation_observer.cc:

// Returns true if |final_url| doesn't represent an ISP hijack of
// |original_url|, based on the IntranetRedirectDetector's RedirectOrigin().
bool IsValidNavigation(const GURL& original_url, const GURL& final_url) {

....

void ChromeOmniboxNavigationObserver::NavigationEntryCommitted(
    const content::LoadCommittedDetails& load_details) {
  load_state_ = LOAD_COMMITTED;
  if (ResponseCodeIndicatesSuccess(load_details.http_status_code) &&
      IsValidNavigation(match_.destination_url,
                        load_details.entry->GetVirtualURL()))
    OnSuccessfulNavigation();
  if (!fetcher_ || (fetch_state_ != FETCH_NOT_COMPLETE))
    OnAllLoadingFinished();  // deletes |this|!
}

...

void ChromeOmniboxNavigationObserver::OnURLFetchComplete(
    const net::URLFetcher* source) {
  DCHECK_EQ(fetcher_.get(), source);
  const net::URLRequestStatus& status = source->GetStatus();
  int response_code = source->GetResponseCode();
  fetch_state_ =
      (status.is_success() && ResponseCodeIndicatesSuccess(response_code)) ||
              ((status.status() == net::URLRequestStatus::CANCELED) &&
               ((response_code / 100) == 3) &&
               IsValidNavigation(alternate_nav_match_.destination_url,
                                 source->GetURL()))
          ? FETCH_SUCCEEDED
          : FETCH_FAILED;
  if (load_state_ == LOAD_COMMITTED)
    OnAllLoadingFinished();  // deletes |this|!
}

Ссылка по теме: DNS-запросы смешанного типа — вредоносное ПО в моей сети?.

Немного похоже: Почему Chromium не кэширует DNS дольше минуты?

147
27.01.2020, 19:30

Теги

Похожие вопросы