Eset: Adware Pirrit je na konci roku největším strašákem uživatelů macOS

9. 12. 2022
Doba čtení: 2 minuty

Sdílet

Autor: © freshidea - Fotolia.com
Adware Pirrit, nejčastěji detekovaný škodlivý kód pro platformu macOS v Česku, překročil v listopadu hranici třetiny všech detekcí.

Společnost Eset ve své pravidelné analýze informuje, že v listopadu se ve více než třetině všech detekovaných hrozeb pro platformu macOS v České republice objevil adware Pirrit, který je pro české uživatele dlouhodobým rizikem.

Počet jeho detekcí přitom již několikátý měsíc kontinuálně roste a podobně, jako v případě jiných škodlivých kódů, se vrcholu blíží především na přelomu roku. Ke svému šíření v listopadu podle bezpečnostních analytiků využíval aplikaci SearchUp.

V listopadu detekce adwaru Pirrit opět narostly. Důvodem bude pravděpodobně to, že uživatelé začali daleko více stahovat aplikace a nástroje mimo oficiální obchody a webové stránky,“ vysvětluje Jiří Kropáč, vedoucí virové laboratoře společnosti Eset v Brně.

Společnost popisuje, že přítomnost Pirritu v zařízení se projevovala dotěrnými a agresivními reklamními kampaněmi. Útočníci jeho prostřednictvím dokážou sbírat osobní informace o uživatelích a systému macOS včetně toho, jaká vyhledávají při prohlížení internetu klíčová slova a jaké navštěvují webové stránky.

Co hledáte? A můžeme to vidět?

Eset vysvětluje, že mezi hlavní funkce adwaru patří zobrazování agresivní reklamy a negativně se projevuje na výkonu infikovaného zařízení. Přesto experti upozorňují, že by ho uživatelé neměli rozhodně považovat za neškodný a ani v případě systému macOS rezignovat na kvalitní zabezpečení.

Uživatel obvykle přítomnost adwaru v zařízení hned neodhalí. Upozorní ho až některé, poměrně nápadné ukazatele, že něco s jeho zařízením není v pořádku. Při používání počítače se pak typicky objevují vyskakovací reklamní pop-up okna, prohlížení webového obsahu je pomalé a celkově je snížený uživatelský komfort,“ říká Kropáč.

Uživatel podle něj může být také náhle přesměrován na podvodné reklamní stránky, které nabízejí různé produkty nebo služby. Útočníci přitom tyto stránky mohou přizpůsobit tomu, co o uživateli ví právě podle historie navštívených stránek a vyhledávaných klíčových slov.

Do internetového prohlížeče pak také mohou být instalována další rozšíření třetích stran, aniž by k tomu uživatel dal pokyn. Prostřednictvím těchto rozšíření pak mohou útočníci sbírat další informace o uživatelích a nastavení systému a sdílet je s třetími stranami bez jejich vědomí,“ shrnuje Kropáč.

Eset dodává, že i další nejčastěji detekované škodlivé kódy se v listopadu šířily především prostřednictvím neoficiálních obchodů třetích stran. Adware přitom mohou útočníci používat ve větší míře právě proto, že k jeho stažení často dochází vlivem naší neopatrnosti a jeho šíření je tak jednoduché a nevyžaduje větší náklady.

Nejčastější kybernetické hrozby v České republice pro platformu macOS za listopad 2022:

1. OSX/Adware.Pirrit (37,50 %)

2. OSX/TrojanProxy.Agent (10,83 %)

3. OSX/Adware.MacSearch (6,67 %)

4. OSX/TrojanDownloader.Adload (5,83 %)

5. OSX/Adware.Bundlore (4,17 %)

Zdroj: Eset

Čtěte dále

Tomáš Břečka je novým country managerem iStyle
Tomáš Břečka je novým country managerem iStyle
Polovina českých podnikatelů neví, jak se bránit proti kybernetickým útokům
Polovina českých podnikatelů neví, jak se bránit proti kybernetickým útokům
Optoma Photon Go: Chytrý přenosný projektor s ultra krátkou projekční vzdáleností
Optoma Photon Go: Chytrý přenosný projektor s ultra krátkou projekční vzdáleností
IDC: Cla necla, globální dodávky počítačů by letos měly vyrůst o 4 %
IDC: Cla necla, globální dodávky počítačů by letos měly vyrůst o 4 %
Arrow posiluje nabídku úložišť, podepsalo smlouvu s Object First
Arrow posiluje nabídku úložišť, podepsalo smlouvu s Object First
Téměř dvě třetiny firem preferují uchovávat zálohu v cloudu
Téměř dvě třetiny firem preferují uchovávat zálohu v cloudu
'; 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'; } }
OSZAR »