Eset: Adware si nachází cesty k českým uživatelům Androidu přes populární hry

25. 1. 2023
Doba čtení: 2 minuty

Sdílet

Autor: © freshidea - Fotolia.com
Experti nevylučují, že se v letošním roce na platformě Android setkáme s novými typy hrozeb.

Společnost Eset ve své pravidelné zprávě informuje, že v prosinci byl nejčastěji detekovaným kybernetickým rizikem pro platformu Android adware Andreed. Konec roku tak v České republice nepřinesl žádné větší změny ve statistice.

Počet případů adwaru Andreed v prosinci podle bezpečnostních specialistů opět mírně klesl, přesto stále patří mezi největší aktuální hrozby pro platformu Android v Česku.

Šíří se prostřednictvím různých verzí známých her, na které uživatelé nejčastěji narazí v neoficiálním obchodě třetí strany. V prosinci ho bezpečnostní specialisté objevili například ve verzi hry Bridge Constructor.

Předpokládáme, že zůstane mezi kybernetickými útočníky oblíbený a bude v Česku nadále rozšířený – není tolik invazivní jako jiné hrozby a uživatelé mu nemusí věnovat takovou pozornost,“ říká Martin Jirkal, vedoucí analytického týmu v pražské pobočce Esetu.

Proměnlivý Android

Jirkal doplňuje, že platforma Android se zatím proměňuje nejvíce ze všech operačních systémů, které společnost sleduje. „Očekáváme tak, že se v průběhu roku setkáme s řadou dalších škodlivých kódů, které se mohou nakonec v českém prostředí vyskytovat dlouhodobě,“ uvádí.

Jak jsme viděli již v minulých letech, můžeme například počítat s krátkodobými útočnými kampaněmi různých backdoorů nebo malwaru zaměřeného na uživatelská hesla. Není ani vyloučeno, že se objeví nový typ sledovací aplikace porušující soukromí uživatelů, jako jsme v minulosti pozorovali například u stalkerwaru,“ upřesňuje.

Škodlivý kód se přizpůsobuje poptávce

Eset dále uvádí, že i v prosinci 2022 se v pravidelné statistice opět objevil adware Hiddad. V listopadu na sebe upozornil v kampani, ve které ke svému šíření využíval verzi hry podobné velmi populární hře Minecraft.

Ani v případě třetího nejčastějšího škodlivého kódu Agent.KEQ, který se objevuje na veřejných internetových úložištích, se strategie útočníků prozatím nezměnila. Nadále se tento dropper vydává především za soubor „Your File Is Ready To Download.apk“.

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

1. Android/Andreed trojan (19,94 %)

2. Android/Hiddad.AYF trojan (14,70 %)

3. Android/TrojanDropper.Agent.KEQ trojan (10,37 %)

4. Android/TrojanDropper.Agent.KMZ trojan (6,25 %)

5. Android/TrojanDropper.Agent.JDU trojan (3,32 %)

6. Android/TrojanDropper.Agent.JGZ trojan (2,87 %)

7. Android/Agent.CZB trojan (2,37 %)

8. Android/Triada trojan (2,20 %)

9. Android/TrojanDropper.Agent.IVJ trojan (1,80 %)

Cyber25

10. Android/TrojanDropper.Agent.GKW trojan (1,75 %)

Zdroj: Eset

Čtěte dále

Netgear kupuje bezpečnostní společnost Exium
Netgear kupuje bezpečnostní společnost Exium
Od června musejí být weby tisíců firem dostupné pro zdravotně znevýhodněné
Od června musejí být weby tisíců firem dostupné pro zdravotně znevýhodněné
Peter Majdak a Veronika Závodná posilují obchodní tým TP-Linku
Peter Majdak a Veronika Závodná posilují obchodní tým TP-Linku
Za vysoké účty za elektřinu nemohou datacentra, ale kancelářské počítače
Za vysoké účty za elektřinu nemohou datacentra, ale kancelářské počítače
Canalys: Prémiové mobily jdou v Evropě na dračku, přesto trh klesá
Canalys: Prémiové mobily jdou v Evropě na dračku, přesto trh klesá
Firmy připravují týmy na digitální kolegy, rekvalifikací kvůli AI projde každý čtvrtý
Firmy připravují týmy na digitální kolegy, rekvalifikací kvůli AI projde každý čtvrtý
'; 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 »