Neklikejte na Google reklamy s výzvou ke stažení softwaru, mohou být nebezpečné

25. 10. 2023

Sdílet

Autor: © chanpipat - Fotolia.com
Malvertising nikdy nezmizí. Jen jeho tvůrci mění taktiku.

Kliknutí na reklamu/sponzorovaný odkaz nabízené Googlem může představovat hazard. Avšak takový, ve kterém nemůžete zvítězit. Pokud kliknete na legitimní webovou stránku, poskytnete algoritmu informace o tom, jaké reklamy vám má dále zobrazovat. Pokud zamíříte na pochybný web, možná jste vystavili svůj počítač nebezpečí… Zvlášť, pokud z takového webu stáhnete nějaký software.

Plánujete ve firmě v brzké době nasadit Wi-Fi 7?

Takové varování jsme vydali už dřív, například když hackeři před nedávnem cílili na majitele grafických karet AMD Radeon. Nebo když se zaměřili na uživatele služby Bitwarden. Aktuálně společnost Malwarebytes, známý výrobce softwaru proti malwaru, připomíná nám všem, abychom se i nadále vyhýbali reklamám ve výsledcích vyhledávání. Jak informoval server Bleeping Computer, společnost objevila nový trend v servírování závadných reklam – používání unicode znaků k tomu, aby falešné webové adresy vypadaly jako pravé.

Taktika tzv. homografových útoků je známá už delší dobu. Novější je však její použití v reklamách Google. Společnost Malwarebytes si tohoto přístupu všimla ve sponzorované reklamě na KeePass, bezplatného správce hesel. Jeho uživatelé jsou většinou techničtí nadšenci, bystří, schopní odhalit stopy, že odkaz by mohl být podezřelý. V případě této konkrétní sponzorované reklamy však adresa URL ve výsledku vyhledávání vypadala stejně jako skutečná adresa – bez dalších ukazatelů, že se jedná o podvodný web.

Chcete dostávat do mailu týdenní přehled článků z Computertrends? Objednejte si náš mailový servis a žádná důležitá informace vám neuteče. Objednat si lze také newsletter To hlavní, páteční souhrn nejdůležitějších článků ze všech našich serverů. Newslettery si můžete objednat na této stránce.

Pokud jste však na odkaz klikli ve spěchu, mohli jste podvod přehlédnout. Falešná webová stránka vypadá úplně stejně jako skutečná, jen její software ke stažení je plný malwaru. Jediným vodítkem je adresní řádek, který místo písmene „k“ používá znak unicode „Ä-“, což je nepatrný rozdíl, který lze snadno přehlédnout.

bitcoin_smenarna

Úplné technické podrobnosti o tom, jak tento trik s malvertisingem funguje, najdete v přehledu Bleeping Computer, ale hlavní poznatek je stejný jako dřív: Neklikejte na reklamní odkazy Googlu za účelem stahování softwaru. To se možná snáz řekne, než udělá, když se sponzorované reklamy objevují na začátku výsledků vyhledávání, ale pokud vyzkoušíte tyto tipy, je to možné:

  • Posuňte se v seznamu výsledků dolů. Textové reklamy legálních společností se opět zobrazí jako normální výsledky vyhledávání, často v první pětce. Použijte odkaz, který se nachází dále na stránce.
  • Zkontrolujte, zda je na inzerátu štítek.
  • Zpomalte. Věnujte několik sekund navíc prohlížení výsledků vyhledávání.
  • Pokud nevidíte celou adresu URL, najeďte myší na textový odkaz a ten se zobrazí úplně vlevo dole na kartě prohlížeče.
  • Používejte antivirový nebo antimalwarový software, který zablokuje možnost načítání falešných stránek.

Nekompromisní možností je samozřejmě použití rozšíření pro blokování reklam v prohlížeči, jako je například uBlock Origin. Protože stále rozvíjeným pokusům o kompromitaci vašeho počítače se bohužel nevyhnete – a to ani změnou vyhledávače. S podobnými problémy se potýká i vyhledávač Microsoft Bing. Nejlepší, co můžete udělat, je udržovat si od podvodných odkazů co největší odstup – a pokud na nějaké narazíte, nahlásit je.

 

Securitytrends si můžete koupit i jako klasický časopis, buď v klasické tištěné formě nebo v elektronické verzi. Věnujeme se bezpečnosti počítačových systémů, ochraně dat, informací a soukromí.  Jsme jediný titul na českém a slovenském trhu, který oslovuje širokou čtenářskou obec – od ředitelů firem, přes odborníky na bezpečnost po koncové uživatele. Naším cílem je poskytnout ucelený přehled o bezpečnostních hrozbách a zejména o tom, proč a jak se jim bránit, případně proč respektovat a dodržovat nařízení IT manažerů ve firmách.

'; document.getElementById('preroll-iframe').onload = function () { setupIframe(); } prerollContainer = document.getElementsByClassName('preroll-container-iframe')[0]; } function setupIframe() { prerollDocument = document.getElementById('preroll-iframe').contentWindow.document; let el = prerollDocument.createElement('style'); prerollDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:20px;right:25px}"; videoContent = prerollDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('PREROLL sound allowed'); // setUpIMA(true); videoContent.volume = 1; videoContent.muted = false; setUpIMA(); }).catch(function () { console.log('PREROLL sound forbidden'); videoContent.volume = 0; videoContent.muted = true; setUpIMA(); }); } } function setupDimensions() { prerollWidth = Math.min(iinfoPrerollPosition.offsetWidth, 480); prerollHeight = Math.min(iinfoPrerollPosition.offsetHeight, 320); } function setUpIMA() { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Preroll advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = prerollWidth; // adsRequest.linearAdSlotHeight = prerollHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. prerollDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( prerollDocument.getElementById('adContainer'), videoContent); } function unmutePrerollAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } } function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(prerollWidth, prerollHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } function onAdEvent(adEvent) { const ad = adEvent.getAd(); console.log('Preroll event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: if (!ad.isLinear()) { videoContent.play(); } prerollDocument.getElementById('adContainer').style.width = '100%'; prerollDocument.getElementById('adContainer').style.maxWidth = '640px'; prerollDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); if (ad.isLinear()) { intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } prerollDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (prerollLastError === 303) { playYtVideo(); } break; case google.ima.AdEvent.Type.COMPLETE: if (ad.isLinear()) { clearInterval(intervalTimer); } playYtVideo(); break; } } function onAdError(adErrorEvent) { console.log(adErrorEvent.getError()); prerollLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { playYtVideo(); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoPrerollPosition.remove(); playPrerollAd(); } else { return false; } adVolume = 1; return true; } function onContentPauseRequested() { videoContent.pause(); } function onContentResumeRequested() { videoContent.play(); } function onActiveView() { if (prerollContainer) { const containerOffset = prerollContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (prerollPaused) { adsManager.resume(); prerollPaused = false; } return true; } else { if (!prerollPaused) { adsManager.pause(); prerollPaused = true; } } } return false; } function playYtVideo() { iinfoPrerollPosition.remove(); youtubeIframe.style.display = 'block'; youtubeIframe.src += '&autoplay=1&mute=1'; } }