E-pošta / E-mail
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.