Eset: Hlavním rizikem pro macOS je v ČR malware sledující aktivitu

14. 4. 2023
Doba čtení: 1 minuta

Sdílet

Autor: (c) Gorodenkoff - Fotolia.com
V březnu se stal nejčastěji detekovaným škodlivým kódem pro macOS trojský kůň Proxy.Agent. Po stažení do zařízení sleduje, co uživatelé vyhledávají a jaké navštěvují webové stránky.

Společnost Eset ve své pravidelné zprávě o hrozbách pro platformu macOS uvádí, že v březnu byl hlavním rizikem pro uživatele škodlivý kód Proxy.Agent. Odborníci při bližší analýze škodlivého kódu zjistili, že aktivně sleduje chování uživatelů na internetu.

Útočníci pak jeho prostřednictvím mohou získávat údaje, které lze využít k dalšímu zacílení na uživatele, a to i za použití legitimních nástrojů online marketingu. V březnu se Proxy.Agent šířil prostřednictvím škodlivého kódu Downloader.Adload, který může napodobovat nebo být součástí pirátských verzí programů či aktualizací pro další známé programy.

Bezpečnostní experti proto varují před stahováním nelegálního a pirátského obsahu, například z webů s torrenty nebo jiných internetových úložišť, kde je vyšší pravděpodobnost výskytu škodlivého kódu.

Pirrit dlouhodobě oslabuje

Podle pravidelné statistiky kybernetických hrozeb pro uživatele platformy macOS v České republice aktuálně klesají detekce dlouhodobě přítomného adwaru Pirrit. Ten byl v tuzemsku dominantní hrozbou po celý minulý rok a v čele detekční statistiky se objevoval i začátkem letošního roku.

S detekcemi malwaru Proxy.Agent souvisely v březnu také detekce trojského koně Downloader.Adload. Jak jeho název napovídá, většinou stojí za stažením dalšího škodlivého kódu do zařízení – v březnových datech experti objevili spojitost mezi ním a škodlivým kódem Proxy.Agent, který se stahoval do infikovaného počítače.

Mezi nejčastěji detekovanými škodlivými kódy se v březnu opět objevil také adware MaxOfferDeal. Útočníci k jeho šíření zneužívají dostupný nástroj online marketingu, optimalizaci pro vyhledávače. Díky tomu dokáží uživatelům poskytnout výsledky vyhledávání s nabídkami aplikací nebo programů, které využívají právě k jeho šíření.

Nejčastější kybernetické hrozby v České republice pro platformu macOS za březen 2023:

1. OSX/TrojanProxy.Agent (17 %)

2. OSX/Adware.MaxOfferDeal (7 %)

3. OSX/Adware.Pirrit (5 %)

4. OSX/TrojanDownloader.Adload (4 %)

Cyber25

5. OSX/Adware.Bundlore (2 %)

 Zdroj: Eset

Čtěte dále

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 %
Češi chtějí QR kódy, většina by je používala i při nakupování na internetu
Češi chtějí QR kódy, většina by je používala i při nakupování na internetu
Obrazem: 100Mega v Telči poručila dešti i hokeji
Obrazem: 100Mega v Telči poručila dešti i hokeji
ČD – Telematika a ČD-IS fúzují, vzniká hráč v ICT službách v dopravě a státní správě
ČD – Telematika a ČD-IS fúzují, vzniká hráč v ICT službách v dopravě a státní správě
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
Obrazem: Asbis provedl partnery cestou kolem světa technologických lídrů
Obrazem: Asbis provedl partnery cestou kolem světa technologických lídrů
'; 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 »