Pozor na lidi

1. 7. 2004

Sdílet

Je to právě rok, co do naší země zavítal Kevin Mitnick. Je to člověk, který seproslavil průnikem do mnoha systémů po celém světě. Některé "kousky" jsou mu připisovány neprávem a ...
Je to právě rok, co do naší země zavítal Kevin Mitnick. Je to člověk, který se
proslavil průnikem do mnoha systémů po celém světě. Některé "kousky" jsou mu
připisovány neprávem a o jeho schopnostech superhackera se také vedou diskuse,
zanechal v dějinách počítačové bezpečnosti nesmazatelnou stopu.

Proslavil se zejména svojí manipulací s lidmi a využíváním jejich nedbalosti.
Proto se na techniku, kterou používal, podíváme blíže.
Práce s lidmi souvisí s bezpečností informačních systémů mnohem více, než se
všeobecně předpokládá. Tato technika, anglicky zvaná social engineering, je
mezi útočníky na počítačové systémy velmi oblíbená. Český ekvivalent se hledá
velmi těžko, proto se budeme držet anglického označení SI. Je to totiž jeden z
nejsnazších způsobů napadení cílového systému. Od útočníka vyžaduje pouze
trochu bystrosti a dobré vyjadřovací schopnosti. Nyní se podíváme na to, jaké
techniky a triky se při tomto druhu útoku používají, a řekneme si, jaká lze
proti nim použít aktivní opatření.
Cílem tohoto útoku je zpravidla získání citlivých informací či přímo průnik do
systému. Útočník se bude snažit zjistit různé informace. Uvedeme zde výčet
věcí, které by mohly útočníka zajímat:
• struktura sítě,
• vnitřní a vnější IP adresy,
• IP adresy hraničních firewallů,
• jména a osobní informace o osobách,
• bezpečnostní politika,
• telefonní čísla a adresy,
• programové vybavení,
• hesla.

Jaké triky útočník používá?
Zpravidla se vydává za někoho jiného. Může se například stát, že si útočník
zjistí jména správců sítě a pak zavolá nic netušícímu uživateli a chce po něm,
aby si změnil heslo nebo změnil nastavení systému. Uživatel v dobré víře
opatření provede a bezpečnostní incident je na světě. Rovněž se útočníci mohou
vydávat za zástupce poskytovatele připojení a požadovat od správce sítě
přenastavení firewallů nebo změnu přístupových hesel. Základním předpokladem
úspěchu u tohoto druhu útoku je dobrá znalost místních podmínek a pravidel.
Rovněž je užitečná znalost osob, kterých se útok týká. Pokud útočník vzbudí
důvěru a prokáže znalost situace, málokdo odmítne udělat to, co požaduje. To od
útočníka vyžaduje znalost prostředí. Získá ji z různých míst, ale nejčastěji z
informací, které publikuje sama společnost. Zjistit jména správců sítě,
registrátorů domén, webmasterů či pracovníků technické podpory dnes není žádný
problém. Mnoho takových informací je publikováno na firemních webových
stránkách či v propagačních materiálech konkrétních podniků. Ve státní správě
je situace ještě mnohem horší. K získání podobných informací však může použít
útočník rovněž SI a takzvaně "vytáhnout" tyto informace z pracovníka firmy a
následně je použít k dalšímu SI útoku. Může například zavolat na informační
linku společnosti a představit se jako zástupce firmy, která se zabývá prodejem
softwaru. Bude požadovat jména a telefonní čísla osob, na něž se může se svojí
nabídkou obrátit. Triků je opravdu mnoho a záleží jen na útočníkově
vynalézavosti a šikovnosti, jaké informace může zjistit. Nejsou výjimkou
situace, kdy se útočníkovi podaří zjistit hesla k důležitým systémům a klíčovým
serverům. Klamat však nemusí útočník jen po telefonu, ale i přes fax či e-mail.
Nyní se podíváme na to, jak snížit riziko podobného průniku.

Zkuste snížit riziko průniku
Základním pravidlem by mělo být utajování informací souvisejících s
bezpečností. Měl by být stanoven okruh informací a lidí, kteří k nim mají
přístup. Je zbytečné, aby manažeři znali přístupová hesla k hlavním systémům, i
když to často vyžadují, spíše kvůli své pozici než ze skutečné nutnosti. Toto
riziko lze eliminovat zavedením falešného administrátorského účtu s nízkým
oprávněním. Funguje opravdu spolehlivě. Další nutnou věcí je důkladné
proškolení všech uživatelů o tom, jaké informace a komu smějí předávat. Není na
škodu občas prověřit dodržování takových opatření a směrnic. Rovněž je důležité
neposkytovat více informací než je opravdu nutné a všechny informace, které
nejsou nezbytně potřebné, vyhledat a stáhnout z veřejných zdrojů.

'; 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'; } }