Scenarij: zasegli smo kopije elektronskih sporočil, ki dokazujejo, da je direktor tovarne vedel, da so njegovi izdelki škodljivi, a je to želel prikriti. Zdaj trdi, da so sporočila ponarejena. Kako lahko preverimo njhovo pristnost?

Hramba e-pošte

Tradicionalni sistemi Unix hranijo e-pošto v formatu mbox, ki preprosto naniza sporočila v eno datoteko. Novejša možnost je maildir, ki vsako sporočilo hrani v ločeni datoteki. Precej uporabniških programov uporablja razne izpeljanke teh formatov, medtem ko drugi (npr. Windows Mail in Thunderbird) uporabljajo zapis eml. Mnogi programi hranijo še indeks za hitrejše in strukturirano iskanje.

Namesto prenosa sporočil na lokalni računalnik (s protokolom POP3) vse več uporabnikov hrani pošto na strežniku in do nje dostopa s protokolom IMAP oziroma spletnim odjemalcem.

V obeh primerih lahko poslana in prejeta sporočila zbrišemo ali spremenimo. Na svojem računalniku enostavno uredimo datoteko, pošto na strežniku pa lahko zamenjamo z ukazi IMAP.

Naloga Oglejte si datoteko s poljubnim elektronskim sporočilom. Spletni vmesniki imajo ponavadi možnost View source, Show original ali podobno, lahko pa uporabite lokalnega odjemalca in sporočilo prenesete preko IMAP. Katere podatke vsebuje sporočilo? Je sestavljeno iz enega ali več delov?

Naloga Prenesite sporočilo z vsaj dvema prilogama. Na kakšen način so priloge zapisane v sporočilu? Izluščite eno od prilog, jo dekodirajte v ločeno datoteko in odprite.

Ponarejanje metapodatkov

Poskusimo poslati sporočilo s ponarejenim pošiljateljem in datumom na e-poštni naslov, do katerega imamo dostop, npr. ab1234@student.uni-lj.si. Poiščemo poštni strežnik za naslovnikovo domeno:

$ dig -t MX student.uni-lj.si
[…]
;; QUESTION SECTION:
;student.uni-lj.si.     IN  MX

;; ANSWER SECTION:
student.uni-lj.si.  3600    IN  MX  30 aspmx5.googlemail.com.
student.uni-lj.si.  3600    IN  MX  10 aspmx.l.google.com.
[…]

Izberemo enega od strežnikov z najnižjo prioriteto in ročno vzpostavimo varno povezavo na strežnik SMTP (zastavica -4 uporabi IPv4, -crlf pa za konec vrstice pošlje niz \r\n, ki ga zahteva protokol). Vrstice, označene z , prikazujejo sporočila s strežnika, ostale vrstice vpišemo na odjemalcu:

$ openssl s_client -4 -crlf -starttls smtp -connect aspmx.l.google.com:25
CONNECTED(00000003)
[…]
▌250 SMTPUTF8
HELO banka.si
▌250 mx.google.com at your service
MAIL FROM:<podpora@banka.si>
▌250 2.1.0 OK
rcpt to:<ab1234@student.uni-lj.si>
▌250 2.1.5 OK
DATA
▌354 End data with <CR><LF>.<CR><LF>
From: Banka <podpora@banka.si>
To: Anton Ban <ab1234@student.uni-lj.si>
Date: Tue 18 Dec 2018 11:11:11 AM CET
Subject: Pomembno obvestilo

Spoštovani,

kibernetski napadalci so ukradli vaše osebne podatke. Prosimo, da
nam jih ponovno posredujete tako, da spodnji obrazec izpolnjen vrnete
na naslov <a href="mailto:snowknows0@yahoo.com">podpora@banka.si</a>.

Ime: ......................
Priimek: ..................
Datum rojstva: ............
EMŠO: .....................
Davčna št.: ...............

Opravičujemo se za nevšečnosti.
.
▌250 2.1.5 OK

Zaradi raznih ukrepov proti neželeni pošti lahko postopek ne uspe. Nekatera omrežja (med njimi je tudi Eduroam na FRI) ne dovolijo izhodnega prometa na vrata 25; v tem primeru lahko poskusimo z vrati 587. Poštni strežnik lahko zavrne pošto, če se naš naslov IP ne ujema z domeno, ki smo jo navedli. Domena lahko ima zapis SPF, v katerem so našteti veljavni naslovi IP za pošiljanje. Nekateri strežniki uporabljajo t.i. greylisting, kjer sporočilo začasno zavrnejo in moramo čez nekaj minut poskusiti še enkrat.

Naloga Na svoj naslov pošljite elektronsko sporočilo s ponarejenim datumom in pošiljateljem.

Preverjanje pošte

Če je šlo vse po sreči, nas v nabiralniku čaka sporočilo. Oglejmo si ga v celoti:

Delivered-To: ab1234@student.uni-lj.si
Received: by 2002:a4f:8c87:0:0:0:0:0 with SMTP id n7csp2535318ivg;
        Tue, 16 Apr 2019 02:42:48 -0700 (PDT)
Return-Path: <podpora@banka.si>
Received: from banka.si ([193.2.76.145])
        by mx.google.com with SMTPS id y12si35048207wrr.282.2019.04.16.02.42.32
        for <ab1234@student.uni-lj.si>
        (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);
        Tue, 16 Apr 2019 02:42:47 -0700 (PDT)
Message-Id: <5cb5a397.1c69fb81.59305.ce24SMTPIN_ADDED_MISSING@mx.google.com>
From: Banka <podpora@banka.si>
To: Anton Ban <ab1234@student.uni-lj.si>
Date: Tue 18 Dec 2018 11:11:11 AM CET
Subject: Pomembno obvestilo

Spoštovani,

[…]

Tipični uporabniški vmesniki za e-pošto prikažejo le del sporočila, ki pride za DATA, torej telo in polja From, To, Date ter Subject iz glave. Kot smo videli, lahko v ta polja zapišemo karkoli, zato se na njihovo vsebino ne moremo zanašati.

Vsak poštni strežnik, ki posreduje sporočilo, v glavo načeloma doda polje Received. V zgornjem primeru nam zapis

Received: from banka.si ([193.2.76.145])
        by mx.google.com with SMTPS id y12si35048207wrr.282.2019.04.16.02.42.32
        for <ab1234@student.uni-lj.si>
        (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);
        Tue, 16 Apr 2019 02:42:47 -0700 (PDT)

pove, da je poštni strežnik mx.google.com prejel sporočilo 16. aprila 2019 (torej ne decembra 2018, kot navaja polje Date) z naslova 193.2.76.145.

Naloga Preverite, komu (domena oz. organizacija in država) v resnici pripada naslov IP, s katerega je bilo poslano sporočilo v prejšnji nalogi. Pomagate si lahko z ukazom dig oziroma nslookup.

DKIM

Ena izmed tehnologij za preprečevanje neželene pošte je DKIM, ki uporablja asimetrično kriptografijo za avtentikacijo sporočil. Poštni strežnik ustvari par javni/zasebni ključ in javni ključ objavi v posebnem zapisu DNS. Vsako poslano sporočilo podpiše z zasebnim ključem, s čimer zagotovi integriteto in avtentičnost sporočila. Podpis spravi v polje DKIM-Signature, na primer:

DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fri.uni-lj.si;
    s=default; t=1554983242;
    bh=KlB0xz9pk1KdeCQXwoxKx0T7NiVQlCCFsH3uw8mpd64=;
    h=Date:To:From:Reply-To:Subject:List-Id:List-Help:List-Unsubscribe:
     From;
    b=dLtO0eaS8WGVawz0ujvTM5AxzvHJFbkOXDZ1+QBcJRxZOR2YLqqhXBkmB2JmPkjva
     6QxyVWGQZrkiATzL5N6IIdJUaVFAzUdxyHNKfWCkXlFJGRch+VowpewyTbZtP4tOQ7
     Rt152E+IjcE0vSx8iAQf2uw+XAoX+bUioTk2t8Ko=

V takem zapisu d označuje domeno za e-pošto, s pa, kateri ključ je bil uporabljen za podpis. Pripadajoči javni ključ je shranjen v zapisu TXT na domeni <s>._domainkey.<d>.

Naloga Poiščite javni ključ, s katerim lahko preverimo zgornji podpis.

Naloga Preverite, ali ima sporočilo na učilnici veljaven podpis DKIM.

Naloga Kaj nam veljaven podpis DKIM pove o avtentičnosti sporočila? Kdo in kako lahko ponaredi veljaven podpis DKIM?

Razmislite še, kako bi pri pošiljanju sporočila zagotovili, da bomo lahko v prihodnosti dokazali, da smo ga res poslali ob nekem času.

Zadnja sprememba: sreda, 8. maj 2019, 11.11