Eset: Hrozbám pro Android u nás v dubnu dominoval adware Andreed

26. 5. 2022
Doba čtení: 2 minuty

Sdílet

Autor: © freshidea - Fotolia.com
Bankovní malware je na ústupu v souvislosti s blížícím se začátkem léta. Útočníci nyní podle Esetu více cílí na volnočasové aktivity.

Společnost Eset v dubnu zaregistrovala výraznou proměnu hrozeb pro platformu Android v Česku. Nejčastěji detekovaným malwarem byl trojský kůň Andreed, který zobrazuje nevyžádanou agresivní reklamu. Naproti tomu bankovní malware Cerberus byl již druhý měsíc v řadě detekován pouze v desetině všech případů. 

Útočníci v dubnu šířili malware především přes falešné verze známých her, jako je Buddy Toss, hororová hra Ultime Custom Night či hra od českých vývojářů Chuchel. Eset ale zaznamenal také případy, kdy útočníci k šíření malwaru zneužili mobilní aplikace k vozidlům Kia nebo Hyundai.

Trojský kůň Andreed, který byl v dubnu nejčastější hrozbou pro uživatele zařízení s platformou Android v Česku, zobrazuje především nevyžádanou agresivní reklamu. Uživatelé mohou tento škodlivý kód stáhnout do svého zařízení z neoficiálních obchodů s aplikacemi.

Ačkoli adware nepředstavuje ve srovnání s bankovním malwarem tak závažné riziko, uživatelé by jej podle Esetu neměli podceňovat, neboť může v konečném důsledku sbírat citlivé informace o uživateli a jeho chování na internetu, nebo ho přesměrovat na webové stránky se škodlivým obsahem.

Malware Cerberus, který je rizikem pro internetové bankovnictví, byl již druhý měsíc detekován ve zhruba desetině případů, zatímco v únoru byl u nás ještě dominantní. Třetím nejčastěji detekovaným škodlivým kódem byl tentokrát dropper Agent.JDU.

Eset dodává, že oproti minulému měsíci obecně klesl objem detekovaných bankovních trojských koní. S příchodem letního období se útočníci opět spíše orientují na aplikace a služby, které využíváme ve svém volném čase, a motivují uživatele ke stažení podvodných verzí her a jiných aplikací.

bitcoin_smenarna

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

  1. Android/Andreed trojan (40 %)
  2. Android/Spy.Cerberus trojan (10,12 %)
  3. Android/TrojanDropper.Agent.JDU trojan (2,74 %)
  4. Android/Triada trojan (2,44 %)
  5. Android/Agent.DAC trojan (1,65 %)
  6. Android/FakeApp.KD trojan (1,46 %)
  7. Android/TrojanDownloader.Agent.WI trojan (1,40 %)
  8. Android/Monitor.Cerberus application (1,28 %)
  9. Android/Spy.Agent.CBT trojan (1,22 %)
  10. Android/Agent.CZB trojan (1,22 %)

Zdroj: Eset

Čtěte dále

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
Obrazem: 100Mega v Telči poručila dešti i hokeji
Obrazem: 100Mega v Telči poručila dešti i hokeji
Obrazem: SWS pozvala Krakonoše na inovace a networking
Obrazem: SWS pozvala Krakonoše na inovace a networking
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 %
ČD – Telematika a ČD-IS fúzují, vzniká velký hráč v ICT službách v dopravě a státní správě
ČD – Telematika a ČD-IS fúzují, vzniká velký 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
'; 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 »