Tapio Särkelä

Tapio Särkelä

Helping software companies to make Secure DevOps.

Kun käyttäjä lukee saapunutta sähköpostia, ei ole aina ilmiselvää, onko viesti turvallinen vai ei. Sähköpostiviestin lähdekoodi saattaa kuitenkin antaa vihjeitä haitallisuudesta. Spamhausin estolistoja käyttämällä voidaan haitallinen sähköposti saada suodatettua — ennen kuin se tulee käyttäjälle.

Mutta ennen kuin käymme käsiksi estolistoihin, tarkastellaan hieman sähköpostiviestin anatomiaa.

Sähköposti — mitä käyttäjä näkee

Aluksi tarkastellaan hieman kontekstia: mitä käyttäjä näkee lukiessaan mahdollisesti haitallista sähköpostia, ja toisaalta, mitä tietoa sähköpostin lähdekoodi sisältää? Ensin katsotaan alla olevaa sähköpostia:

How a malicious email looks to an end userHow-a-malicious-email-looks-to-an-end-user

Yllä oleva kuva on tyypillinen esimerkki, miltä roskaposti voi näyttää käyttäjälle hänen sähköostiohjelmassaan — kuten vaikka Outlookissa tai Apple Mailissa.

Sähköpostia tutkittaessa jotkut sen osat saattavat soittaa hälytyskelloja, kuten linkki bitcoin-osoitteeseen tai outo liitetiedosto. Valitettavasti tavalliselle käyttäjälle nämä saattavat näyttää ihan asiallisilta. Juuri tähän kyberrikolliset luottavat. He laskevat sen varaan, että sähköposti näyttää tavalliselta ja pitävät haitalliset elementit piilotettuna.

Jotta näkisi, mitä sähköposti todella sisältää, pitää avata se ja tutkia viestin lähdekoodia, viestin otsakkeita (header) sekä viestin sisältöä.

Sähköpostin lähdekoodi

Nyt on ehkä aika vetää syvään henkeä; sähköpostin lähdekoodi sisältää kohtuullisen paljon informaatiota. Se käydään kuitenkin läpi kokonaisuudessaan, ja toivottavasti ette ikävysty aivan täysin.

Sähköpostin lähdekoodin saa näkyville esimerkiksi Outlookissa avaamalla viestin ja valitsemalla vasemmasta yläkulmasta File/Tiedosto ja listasta Properties/Ominaisuudet. Gmailissa klikkaa oikeassa yläkulmassa näkyviä kolmea pistettä ja valitse listasta Show original/Näytä kokonaan.

Email source code elements explained

#1. Paluuosoite (Return-Path)

Return-Path” tunnetaan myös termillä ”Envelope-From”. Tämä on se todellinen osoite, josta sähköposti lähetettiin.

Return-Path” on sama kuin entisaikaisen kirjepostin postileima eli se on todellinen tieto kirjeen alkuperästä. Tosin kun kirjettä käytännössä luetaan, kirjekuoren postileimaa ei enää ole tarvetta katsoa eikä se välttämättä ole enää käsillä.

Sähköpostiä luettaessa viestin lähettäjän todellinen osoite ei ole esillä, kuten kuvasta 1 huomataan..

#7 Lähettäjän osoite (Sender-Address/From)

Lähettäjän osoitetta voidaan verrata postin kautta tulevan kirjeen allekirjoitukseen. (Toki allekirjoitus voi olla kenen hyvänsä.)

Esimerkissämme paluuosoite (#1) ja lähettäjän osoite (#7) ovat erilaisia. Lähettäjän osoite näkyy lukijalle, kuten lähettäjä sen haluaakin näkyvän. Tyypillisesti lähettäjän osoite sisältää lähettäjän nimen ja sähköpostiosoitteen.

Rikolliset käyttävät eri lähettäjä- ja paluuosoitetta

Miksi? Yksinkertaisesti huijatakseen ihmisiä! Rikolliset toimijat haluavat, että viestin lukija uskoo viestin tulevan luotettavalta/tärkeältä/heidän tuntemaltaan henkilöltä. Rikolliset haluavat lukijan uskovan, että viesti on oikea ja luotettava.

On hyvä muistaa, että useimmat sähköpostin asiakassovellukset näyttävät vain lähettäjän osoitteen. Sehän on kuin avaisi kirjeen ja heittäisi kuoren menemään; katsomatta mistä se on oikeasti tullut. Käyttäjät näkevät vain kirjeen sisällön.

Saapumisketju (The Received Chain)

Ajatellaan saapumispolkua kuin paperiin merkittyjä leimoja, joita lukuisat sähköpostipalvelimet ovat leimanneet viestiin matkan varrella, viestin edetessä palvelimelta toiselle. Jälkiä luetaan yleensä ylhäältä alas, jolloin viimeisin/lopullinen kohde on ylimpänä, ja sitä edeltävät on listattu alenevassa järjestyksessä, ja lähetyspaikka on alimpana.

Ketju on tärkeä, sillä se kertoo kaikkien viestiä käsitelleiden sähköpostipalvelimien IP-osoitteet, sekä muut tiedot kuten HELO-ketjut ja IP-osoitteita vastaavat verkko-osoitteet.

HELO on SMTP-protokollan (Simple Mail Transfer Protocol) komento. Sitä voidaan pitää samanlaisena tervehdyksenä, jonka postinkantaja voisi huikata työtoverilleen, kun hän käsittelee postia: ”Moi, olen Jussi Postista ja minulla kirjeitä sinun reittisi varrella oleville vastaanottajille.”

Tutkitaankin tarkemmin esimerkkipostimme ketjua ylhäältä alas.

Saapumisketju (Received Chain C) - viimeisin rivi

Tämä on viimeisin ja luotetuin rivi ketjussa, koska vastaanottajan sähköpostipalvelin on sen käsitellyt. On siis varmaa, että sitä ei ole peukaloitu.

Rikolliset yrittävät joskus sekoittaa saapumisketjua, jotta voisivat hämätä roskapostisuodattimia. Tämä on hyvä pitää mielessä, kun tarkastellaan ketjun seuraavia rivejä.

Rivin C oleelliset elementit ovat:

#2. HELO

HELO ketju: mta-out.someisp.example

#3. Verkkotunnus

IP-osoitteen vastaava verkkotunnus: mta-out.someisp.example

#4. IP-osoite

Verkkotunnuksen IP-osoite: 192.0.4.1 

Received Chain C

Selitys: lähettävä sp-palvelin ”mta-out.someisp.example” (#2) avaa yhteyden sähköpostin vastaanottajan sähköpostipalvelimeen ”mx.email.example”, ja ilmoittaa itsestään HELO-komennolla ja IP-osoitteella ”192.0.4.1.” (#4) ja verkkotunnuksella “mta-out.someisp.example” (#3). Tämä on lopullinen ja viimeinen yhteydenotto — jos se hyväksytään (ja tässä tapauksessa hyväksyttiin), sähköposti toimitetaan osoitteeseen <your@email.example>.

Saapumisketju B

Tässä palvelin “smtp.someisp.example” kuittaa saapuneen sähköpostin osoitteeseen .
Received Chain B

Selitys: sähköpostipalvelin “smtp.someisp.example” avaa yhteyden lähettävään (Postfix-) palvelimeen “mta-out.someisp.example” ja toteaa sille, että sillä on sähköpostia, joka pitäisi lähettää osoitteeseen <your@email.example>.

Saapumisketju A - alkuperäinen tapahtuma

Tämä rivi edustaa ensimmäistä sähköpostitapahtumaa, jossa sähköpostiviesti luotiin, ja se sisältää alkuperäisen IP-osoitteen.

Rivin keskeiset elementit:

  • alkuperäinen paikallinen laite [192.168.1.2], 
  • alkuperäisen laitteen verkkotunnus: ei tiedossa (unknown) JA

#5. Lähettävän palvelimen IP-osoite

Lähettävän palvelimen IP: 192.0.2.1

Received Chain A

Selitys: alkuperäinen paikallinen laite “192.168.1.2″ ottaa yhteyttä palvelimeen “smtp.someisp.example” ja ilmoittaa olevansa “192.0.2.1″. Yhteydenoton saatuaan palvelin ”smtp.someisp.example” yrittää turhaan hakea verkon nimipalvelimelta (rDNS) mikä on IP-osoitteen “192.0.2.1″ verkkotunnus. Ja koska haku epäonnistuu, tuloksena on ”unknown”.

Lisää sähköpostin lähdekoodin elementtejä

#6. Vastaa-osoite (Reply-To address)

Klikkaamalla sähköpostissa ”Vastaa” (Reply), tämä kenttä kertoo sähköpostiohjelmallesi, minkä osoitteen se laittaa Vastaanottaja-kenttään. Tavallisissa ja luotettavissa sähköposteissa ”Vastaa/Reply-to” ja ”Lähettäjä/From” ovat yleensä samoja.

Esimerkkisähköpostimme osoittaa, että ilmeinen lähettäjä olisi “president@theworld.example”. Mutta jos viestiin yritettäisiin vastata, osoite olisikin “prezident@gmail.example”. Pahikset toivovat, ettei kukaan huomaisi tätä.

#8. Verkkosivu

Viestin vastaanottaja ei näe verkkosivun osoitetta (URL) viestillä, koska lähettäjä on kätkenyt linkin hypertekstin ”Click here” taakse. Todellinen verkko-osoitteen URL on “www.worldlotterywinner.example”.

Tekstin ”Click here” takana olevan todellisen verkkosivun saa usein selville viemällä kursorin tekstin päälle, jolloin sähköpostiohjelma näyttää osoitteen. Useissa tapauksissa haitallisen sähköpostin sisältämä URL vie johonkin haitallista sisältöä välittävälle sivulle, jossa on esim. haitallisia tiedostoja kuten kiristysohjelmia, tiedon kalastelua tai jotain muuta haitallista tai vastenmielistä sisältöä.

#9. Kryptovaluutan lompakko (Bitcoin Wallet)

Kryptovaluutan lompakko on kyberrikollisten hallitsema kryptattu osoite, jota usein käytetään pääväylänä ns. ”sextortion”-roskapostikampanjoille. Näissä kampanjoissa väitetään, että vastaanottajan toimintaa on tallennettu, kun hän on ”hemmotellut itseään”. Kyberrikolliset uhkaavat jakaa tallenteen työnantajan, perheen ja ystävien kesken, mikäli rikolliset eivät saa maksua kryptovaluuttana.

Tästä teemasta on useita erilaisia versioita ja yhteistä niille on, että vastaanottajan pelot ovat pelivälineenä. Tarkoituksena on vain kerätä rahaa.

#10. Liite

Esimerkissämme liite on Office-tiedosto, joka on nimetty “Further instructions.doc”.  On todennäköistä, että tiedostoa on ”käsitelty” tavalla tai toisella. Tarkoituksena on, että mikäli tiedosto ladataan ja avataan, haittaohjelma saastuttaa kyseisen tietokoneen. Kyberrikollinen voi sen jälkeen käyttää konetta mihin tarkoitukseen haluaa — esimerkiksi vaikkapa lähettääkseen lisää roskapostia, hankkiakseen käyttäjän suostumuksen henkilötietojen tai salasanojen käyttöön tai käyttääkseen konetta DDoS-hyökkäykseen.

Toivottavasti tämä tiivis paketti sähköpostin lähdekoodista selventää taustoja ja auttaa ymmärmään kyberrikollisten menetelmiä.

Phishing Landing Page Example

Spamhaus DNS Firewall – Lyhyt johdanto

Yksinkertaisimmillaan DNS Firewall estää ja ohjaa loppukäyttäjiä menemästä haitallisille verkkosivuille, samoin kuten perinteisetkin palomuurit. Keskeinen ero näiden välillä on se, että DNS Firewall -palvelua käytetään eri verkkokerroksessa ja eri vaiheessa.

Lue lisää »
Tapio Särkelä

Tapio Särkelä

Helping software companies to make Secure DevOps.

ota yhteyttä

Pyydä rohkeasti lisätietoa. Vastaamme todennäköisesti nopeammin kuin osasit kuvitella.