ক্রোম: ডিএনএস র্যান্ডম ডিএনএস নামের অনুরোধগুলি: ম্যালওয়ার?


88

কয়েক বছর ধরে (2005 সাল থেকে), আমি একাধিক ডিএনএস / বিআইএনডি সার্ভারগুলিতে রক্ষণাবেক্ষণ করেছি, আমি অদ্ভুত র্যান্ডম ডিএনএস অনুরোধগুলির লগগুলি দেখেছি।

May  7 12:13:50 1.1.1.1 named[63742]: client 1.1.1.2#24123 (verxkgiicjmcnxg): view internal: query: verxkgiicjmcnxg IN A + (1.1.1.1)
May  7 12:13:50 1.1.1.1 named[63742]: client 1.1.1.2#29159 (epqoaqsayo): view internal: query: epqoaqsayo IN A + (1.1.1.1)
May  7 12:13:50 1.1.1.1 named[63742]: client 1.1.1.2#27411 (qlllglwcjglu): view internal: query: qlllglwcjglu IN A + (1.1.1.1)

আমি সাধারণত এটি কিছু উইন্ডোজ ম্যালওয়্যার পর্যন্ত চক করেছিলাম। যাইহোক, আমি এটি লক্ষ্য করা শুরু করেছি যে ইদানীং লিনাক্স এবং ম্যাক ক্লায়েন্টদের কাছ থেকে আসছে। আবার আমি ভেবেছিলাম এটি কিছু দূষিত ব্রাউজার প্লাগ-ইন (গুলি) এর কারণে হতে পারে।

তবে, আমার নতুন ইনস্টল করা ম্যাকবুক প্রো / ক্রোমে, গুগল ক্রোম ব্রাউজার ইস্যুটি ডিবাগ করার সময়, ইউআরএল ক্রোম: // নেট-ইন্টারনালস / # ডিএনএস ব্যবহার করে, আমি আমার ক্রোম ডিএনএসের পরিসংখ্যান পৃষ্ঠায় অনুরূপ অনুরোধগুলি পেয়েছি।

আমার ক্রোম ব্রাউজারটিতে বরং নিরীহ প্লাগ-ইন ইনস্টল করা আছে এবং ম্যালওয়্যারের কোনও আপাত চিহ্ন নেই

এটি আমার দূষিত ক্রিয়াকলাপ হওয়া উচিত কিনা তা আমার সন্দেহজনক। কি হচ্ছে?

(ছবিটিতে দেখা গেছে, পিএনএক্সসিগ্যাকিউএমইউ , রাইজিপউভেগুউটকিডি , এবং স্ন্পলুইও ডিএনএস নামের অনুরোধগুলি ক্রোমের দ্বারা তৈরি হয়েছে)।

DNS

ক্রোম ব্রাউজারটি চালু হওয়ার সাথে সাথে ডিএনএস ক্রিয়াকলাপ স্নিগ্ধ করা:

sudo tcpdump -n port 53

আমি নিম্নলিখিত ডিএনএস অনুরোধগুলি, এবং আবার এলোমেলো অনুরোধগুলি 10:20:34 এ দেখতে সক্ষম হয়েছি:

খোলার ক্রোম:

tcpdump: data link type PKTAP
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on pktap, link-type PKTAP (Apple DLT_PKTAP), capture size 262144 bytes
10:20:27.119736 IP 1.1.1.2.12568 > 1.1.1.1.53: 10990+ A? apis.google.com. (33)
10:20:27.119962 IP 1.1.1.2.34930 > 1.1.1.1.53: 13828+ A? disconnect.me. (31)
10:20:27.120078 IP 1.1.1.2.17860 > 1.1.1.1.53: 37420+ A? mxr.mozilla.org. (33)
10:20:27.120314 IP 1.1.1.1.53 > 1.1.1.2.12568: 10990 2/4/4 CNAME plus.l.google.com., A 216.58.214.174 (206)
10:20:27.120479 IP 1.1.1.1.53 > 1.1.1.2.34930: 13828 3/4/8 A 54.197.255.152, A 54.225.94.202, A 204.236.239.134 (339)
10:20:27.120666 IP 1.1.1.1.53 > 1.1.1.2.17860: 37420 1/4/5 A 63.245.215.42 (234)
10:20:27.123394 IP 1.1.1.2.51642 > 1.1.1.1.53: 58375+ A? ssl.gstatic.com. (33)
10:20:27.123658 IP 1.1.1.2.17933 > 1.1.1.1.53: 48570+ A? www.google.pt. (31)
10:20:27.123726 IP 1.1.1.1.53 > 1.1.1.2.51642: 58375 1/4/4 A 216.58.214.163 (192)
10:20:27.123897 IP 1.1.1.2.57779 > 1.1.1.1.53: 7559+ A? www.gstatic.com. (33)
10:20:27.123946 IP 1.1.1.1.53 > 1.1.1.2.17933: 48570 1/4/4 A 216.58.207.163 (193)
10:20:27.124192 IP 1.1.1.1.53 > 1.1.1.2.57779: 7559 16/4/4 A 194.210.238.166, A 194.210.238.170, A 194.210.238.174, A 194.210.238.176, A 194.210.238.177, A 194.210.238.181, A 194.210.238.185, A 194.210.238.187, A 194.210.238.144, A 194.210.238.148, A 194.210.238.152, A 194.210.238.154, A 194.210.238.155, A 194.210.238.159, A 194.210.238.163, A 194.210.238.165 (432)
10:20:27.432926 IP 1.1.1.2.29865 > 1.1.1.1.53: 62300+ A? clients4.google.com. (37)
10:20:27.433219 IP 1.1.1.2.28193 > 1.1.1.1.53: 23734+ A? translate.googleapis.com. (42)
10:20:27.433703 IP 1.1.1.1.53 > 1.1.1.2.29865: 62300 2/4/4 CNAME clients.l.google.com., A 216.58.211.238 (213)
10:20:27.464772 IP 1.1.1.1.53 > 1.1.1.2.28193: 23734 1/4/4 A 216.58.198.202 (201)
10:20:28.430622 IP 1.1.1.2.46792 > 1.1.1.1.53: 1963+ A? accounts.google.com. (37)
10:20:28.431046 IP 1.1.1.1.53 > 1.1.1.2.46792: 1963 1/4/4 A 216.58.201.141 (189)
10:20:32.348765 IP 1.1.1.2.16654 > 1.1.1.1.53: 39847+ A? www.google.com. (32)
10:20:32.349362 IP 1.1.1.1.53 > 1.1.1.2.16654: 39847 1/4/4 A 216.58.213.164 (184)

কয়েক সেকেন্ড পরে, উল্লিখিত র্যান্ডম ডিএনএস অনুরোধগুলি সত্যই উপস্থিত হবে:

10:20:34.159229 IP 1.1.1.2.5042 > 1.1.1.1.53: 47676+ A? kblxfid.xxx.xxx.xxx. (44)
10:20:34.159829 IP 1.1.1.2.63360 > 1.1.1.1.53: 55094+ A? weefjmw.xxx.xxx.xxx. (44)
10:20:34.159893 IP 1.1.1.1.53 > 1.1.1.2.5042: 47676 NXDomain* 0/1/0 (104)
10:20:34.160230 IP 1.1.1.1.53 > 1.1.1.2.63360: 55094 NXDomain* 0/1/0 (104)
10:20:34.160872 IP 1.1.1.2.29339 > 1.1.1.1.53: 22434+ A? luebcanqpumlaj.xxx.xxx.xxx. (51)
10:20:34.161290 IP 1.1.1.1.53 > 1.1.1.2.29339: 22434 NXDomain* 0/1/0 (111)
10:20:34.162489 IP 1.1.1.2.64592 > 1.1.1.1.53: 49055+ A? kblxfid.xxx.xxx.xxx. (44)
10:20:34.162859 IP 1.1.1.1.53 > 1.1.1.2.64592: 49055 NXDomain* 0/1/0 (104)
10:20:34.164105 IP 1.1.1.2.50225 > 1.1.1.1.53: 1276+ A? weefjmw.xxx.xxx.xxx. (44)
10:20:34.164386 IP 1.1.1.2.52389 > 1.1.1.1.53: 59022+ A? luebcanqpumlaj.xxx.xxx.xxx. (51)
10:20:34.164472 IP 1.1.1.1.53 > 1.1.1.2.50225: 1276 NXDomain* 0/1/0 (104)
10:20:34.164751 IP 1.1.1.1.53 > 1.1.1.2.52389: 59022 NXDomain* 0/1/0 (111)

Chrome এ একটি নতুন ট্যাব খোলা হচ্ছে:

10:20:44.106915 IP 1.1.1.2.26171 > 1.1.1.1.53: 14460+ A? clients2.google.com. (37)
10:20:44.139387 IP 1.1.1.1.53 > 1.1.1.2.26171: 14460 2/4/4 CNAME clients.l.google.com., A 216.58.211.238 (213)

এছাড়াও, @ গিলস লিঙ্ক অনুসারে, ক্রোমে একটি প্রক্সি (স্কুইড) ব্যবহার access.logকরার সময়, ক্রোম বুট করার সময় আপনি সংশ্লিষ্ট স্কুইড লগ ফাইলে এলোমেলো ডিএনএস নাম দেখতে পাবেন :

1494276554.709    216 127.0.0.1 TCP_MISS/504 277 HEAD http://vgifrooogs/ - DIRECT/vgifrooogs text/html
1494276554.731    238 127.0.0.1 TCP_MISS/504 277 HEAD http://cbwknhka/ - DIRECT/cbwknhka text/html  
1494276554.875    382 127.0.0.1 TCP_MISS/504 277 HEAD http://vtjhiag/ - DIRECT/vtjhiag text/html

উত্তর:


124

আমি ক্রোম দ্বারা তৈরি এলোমেলো ডিএনএস অনুরোধ সম্পর্কে একাধিক পোস্ট / বাগ রিপোর্ট পেয়েছি। উপসংহারটি হল যে এলোমেলো ডিএনএস অনুরোধগুলি ম্যালওয়্যার দ্বারা তৈরি হয় না প্লাগইন বা অ্যাড-অন দ্বারা generated

অনুরোধগুলি Chrome এর ঠিকানা দণ্ড থেকে তৈরি অনুসন্ধানগুলি পরিচালনা করতে পারে কিনা তা জানার জন্য তা করা হয়েছে।

আমি খুঁজে পেয়েছি সেরা ব্যাখ্যা নীচে এই লিঙ্ক থেকে উদ্ধৃত করা হয় ।

আপনি যদি একটি একক-শব্দ অনুসন্ধান ক্যোয়ারী টাইপ করেন তবে ক্রোমের একটি ডিএনএস অনুরোধ প্রেরণ করতে হবে এটি একটি একক-শব্দের হোস্টের নাম হতে পারে তা পরীক্ষা করার জন্য: উদাহরণস্বরূপ, "পরীক্ষা" "পরীক্ষা" বা একটি নেভিগেশন অনুসন্ধান হতে পারে http: // পরীক্ষা "। যদি কোয়েরিটি হোস্ট হিসাবে শেষ হয়, ক্রোম একটি ইনফোবার দেখায় যা "আপনার পরিবর্তে 'পরীক্ষায়" যাওয়ার অর্থ কি "জিজ্ঞাসা করে। পারফরম্যান্সের কারণে, ডিএনএস ক্যোয়ারিতে অ্যাসিঙ্ক্রোনাস হওয়া দরকার।

এখন কিছু আইএসপি অস্তিত্বহীন ডোমেন নামগুলির জন্য বিজ্ঞাপন দেখাতে শুরু করেছে ( http://en.wikedia.org/wiki/DNS_hijacking ), যার অর্থ ক্রোম সর্বদা প্রতিটি একক-শব্দের ক্যোয়ারির জন্য সেই ইনফোবার দেখায়। যেহেতু এটি বিরক্তিকর, ক্রোম এখন শুরুতে তিনটি এলোমেলো ডিএনএস অনুরোধ প্রেরণ করে এবং যদি তারা সকলেই সমাধান করে (একই আইপিতে, আমি মনে করি), এখন এটি একক-শব্দের প্রশ্নের জন্য "আপনি কি বোঝাতে চেয়েছিলেন" ইনফোবার দেখাবেন না তা জানেন যে আইপি

উপরের লিঙ্কযুক্ত উইকিপিডিয়া এন্ট্রি হাইজ্যাক করে আইএসপি স্তর বা ম্যালওয়্যার ডিএনএস ছাড়িয়ে কিছু প্রদত্ত ওয়্যারলেস অ্যাক্সেস পয়েন্ট বা ক্যাপটিভ পোর্টাল ডিএনএস হাইজ্যাক করে। এলোমেলোভাবে অনুরোধগুলি আপাতদৃষ্টিতে এলোমেলো অন্তরগুলিতে করা হয় এবং কেবল ক্রোম শুরু করার সময় নয়। কমপক্ষে, প্রতিটি সময়ই বর্তমান নেটওয়ার্ক ইন্টারফেসটি একটি নতুন আইপি ঠিকানা পায় happen

@ গিলস থেকে থিম সম্পর্কিত আরও একটি লিঙ্ক এখানে দেওয়া হয়েছে: ক্রোম থেকে ননসেন্স ইউআরএলগুলির জন্য অস্বাভাবিক হেড অনুরোধ । সুতরাং, প্রশ্নটিতে প্রক্সি পরীক্ষা সেটআপের বিষয়টিকে যুক্ত করা হচ্ছে। আপনি প্রক্সি লগগুলি দেখে শেষ করেছেন কারণ, যখন একটি প্রক্সি কনফিগার করা হয়, তখন প্রক্সিটির মাধ্যমে অনুরোধ করা হয়; এবং, এটি ডিএনএস অনুরোধগুলি সমাধান করার জন্য প্রক্সি নির্ভর করে।

অনলাইনে আরও নিবিড় বিশদ না থাকায় আমি নীচের কমান্ডটি সহ ক্রোমিয়াম উত্স কোডটি ডাউনলোড এবং ব্যবহার করেছি।

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

নীচের উদ্ধৃতিটি ক্রোমিয়াম উত্স কোড মন্তব্যগুলি থেকে অনুলিপি করা হয়েছিল:

কারণ এই ফাংশনটি প্রারম্ভকালে বলা যেতে পারে, যখন ইউআরএল আনার সময় 20 এমএস সময় খেতে পারে, আমরা সাত সেকেন্ড বিলম্ব করি, যা আশা করি প্রারম্ভ হওয়ার পরে যথেষ্ট, তবে তবুও দ্রুত ফলাফল ফিরে পাবে।

এই উপাদানটি এলোমেলোভাবে উত্পন্ন তিনটিতে অনুরোধ প্রেরণ করে, এবং সম্ভবত এটি অস্তিত্বহীন, হোস্ট-নেম। যদি কমপক্ষে দু'জন একই হোস্টনামে পুনর্নির্দেশ করা হয় তবে এটি প্রস্তাব করে যে আইএসপি এনএক্সডিওআরজে হাইজ্যাক করছে, এবং নির্দিষ্ট অনুসন্ধানের জন্য ইনফোবারকে 'নেভিগেট করার অর্থ ছিল' দিয়ে ব্যবহারকারীকে প্রম্পট করা হবে কিনা তা সিদ্ধান্ত নেওয়ার সময় ওমনিবক্সের অনুরূপ পুনঃনির্দেশিত নেভিগেশনগুলিকে 'ব্যর্থ' হিসাবে বিবেচনা করা উচিত ইনপুট।

ট্রিগার: "প্রারম্ভকালে এবং কম্পিউটারের আইপি ঠিকানা পরিবর্তন হয়।"

আমরা 7 এবং 15 অক্ষরের মধ্যে একটি এলোমেলো হোস্টনাম তৈরি করি।

আমার উপসংহারটি হল যে those র্যান্ডম ডিএনএস অনুরোধের নামগুলি ম্যালওয়্যার আচরণের প্রকাশ নয় ; তারা প্রোব ক্রোমিয়াম (এবং গুগল ক্রোম) জন্য শিখতে কি এটা বিষয়ে কি করতে পারেন অন্তত অনুসন্ধান এ

অনলাইনে আরও শক্ত বিশদ না থাকাতে আমি আমার তদন্তে ক্রোমিয়াম উত্স ডাউনলোড করেছি। এই কার্যকারিতাটির সাথে যুক্ত যুক্তিটি ফাইলটিতে পাওয়া যাবে 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|!
}

সম্পর্কিত লিঙ্ক: মিশ্রিত কেস ডিএনএস অনুরোধ - আমার নেটওয়ার্কে ম্যালওয়্যার?

কিছুটা সম্পর্কিত: ক্রোমিয়াম কেন এক মিনিটেরও বেশি সময় ডিএনএসকে ক্যাশে করে না?


@ কেট ধন্যবাদ, যেহেতু আপনি এটি পছন্দ করেছেন সম্ভবত আপনি এটি খুব পছন্দ করতে পারেন st স্ট্যাককেেক্সচেঞ্জ
রুই এফ রিবেইরো

3
"এমন কিছু ইঙ্গিত রয়েছে যেগুলি এলোমেলোভাবে অনুরোধগুলি আপাতদৃষ্টিতে এলোমেলো অন্তরগুলিতে করা হয়, এবং কেবল ক্রোম শুরু করার সময় নয়" - অবশ্যই সত্য। আমি প্যাকেট লগগুলিতে তাদের দেখতে পাই যদিও আমি মূলত ক্রোম পুনরায় আরম্ভ করি না।
কেভিন

2
@ কেভিন "যখনই কম্পিউটারের আইপি ঠিকানা পরিবর্তন হবে" - আপনার কম্পিউটারকে রাউটারের সাথে আপাতদৃষ্টিতে এলোমেলো বিরতিতে তার ডিএইচসিপি ইজারা পুনর্নবীকরণ করা দরকার যা এটি ট্রিগার করে।
Riking

নিঃসন্দেহে আমি প্রকাশিত যে মন্তব্য। অন্যান্য শর্তে এটি ঘটে কিনা তা আমি নিশ্চিত নই।
রুই এফ রিবেইরো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.