Table of Contents
Falsa fattura elettronica via PEC
Con l'introduzione della fatturazione elettronica e relativi invii tramite PEC, era inevitabile che i malfattori ne approfittassero. In questo post analizziamo un caso avvenuto realmente in questi giorni (novembre 2019).
Si tratta di un vero messaggio di Posta Elettronica Certificata originato da un indirizzo PEC legittimo. Presumibilmente l'account di origine è stato violato rubando le credenziali al proprietario, tramite virus o altri sistemi.
Il malfattore ha composto un messaggio PEC contenente quello che sembra essere una fattura elettronica e lo ha inviato. Il messaggio è stato ricevuto al nostro indirizzo PEC, tramite il gestore certificato Aruba.
Pertanto agli occhi di chi riceve si è presentato un messaggio PEC del tutto legittimo, in quanto inviato da un account PEC e transitato tramite gestori certificati che ne hanno attestato il trust (le firme digitali). Il contenuto invece era fasullo, sebbene simulasse in tutto e per tutto una fattura elettronica transitata dal Sistema di Interscambio per la fatturazione elettronica. Fortunatamente (per questa volta) il messaggio non conteneva alcun malware, ma solo un link esterno ad un server - probabilmente a sua volta compromesso - che con tutta probabilità si è limitato a registrare che tale messaggio è effettivamente arrivato a destinazione e che il link esterno è stato seguito.
Capire che ci si trova di fronte ad un messaggio fraudolento è reso molto difficile dai seguenti fattori:
- Il malfattore ha tentato di camuffare l'indirizzo PEC mittente, riuscendoci parzialmente perché la webmail di Aruba mostra in alcuni casi il mittente contraffatto invece di quello effettivo.
- Un messaggio PEC ha una struttura complessa, in sostanza contiene tre parti: il registro di trasmissione, la catena dei certificati che attestano l'autenticità del mittente e il contenuto vero e proprio. Ciascuna di queste parti è un allegato in formato di difficile gestione: XML, P7S e EML.
- Una fattura elettronica inviata dal sistema di interscambio a sua volta è un documento di difficile interpretazione (XML, P7M).
Sono tutte condizioni assolutamente complesse da gestire, è altamente probabile che l'utente clicchi sui link, scarichi gli allegati e tenti di aprirli in qualche modo, esponendosi in questo modo a molteplici rischi.
La webmail di Aruba
Nelle schermate seguenti si evidenzia come la webmail di Aruba sia effettivamente complessa nel mostrare una PEC ricevuta. Inoltre non si comporta in modo sicuro, mostrando più volte il mittente PEC contraffatto invece di quello reale.
Come aprire il file p7s
Nei messaggi di posta elettronica certificata PEC c'è generalmente un file smime.p7s; esso contiene la signature, cioè la catena dei certificati che garantiscono l'identità di chi ha firmato la mail. Per vederne il contenuto in forma testuale si può usare il seguente comando su un PC GNU/Linux:
openssl pkcs7 -in smime.p7s -text -inform DER -print_certs -noout
Come aprire i file p7m
La Pubblica Amministrazione italiana distribuisce i documenti firmati digitalmente sotto forma di file con estensione .p7m. Ecco come estrarne il contenuto se si tratta di un formato PEM
(altri enti usano il formato DER
):
openssl smime -decrypt -verify -inform PEM -in doc_2018966.pdf.p7m -noverify -out doc_2018966.pdf
Il documento originale al suo interno si presenta in questo modo:
-----BEGIN PKCS7----- MIMDRc4GCSqGSIb3DQEHAqCDA0W+MIMDRbkCAQExDzANBglghkgBZQMEAgEFADCDAz8iBgkq ... zqFeaEs7Wsxim1xXyGnGOt2yxzAWuEYba0ggHa7prfr4vsthafc1KRic/8L9/6Czzg== -----END PKCS7-----
Se si desidera estrarre il certificato:
openssl pkcs7 -in doc_2018966.pdf.p7m -print_certs -out certificate.pem -text
Documenti firmati in formato CMS
In generale le fatture elettroniche firmate digitalmente vengono inviate nel formato S/MIME mail processing. Qualcuno in vena di originalità (ad esempio Enel Energia SpA) ha pensato bene di inviare in formato CMS (Cryptographic Message Syntax). Si tratta di file con intestazione binaria senza una particolare signature, quindi la verifica ed estrazione del file va fatta per tentativi.
Ecco la sintassi per estrarre il file XML contenuto nel messaggio firmato:
openssl cms -verify -inform DER -in input_file.p7m -nosigs -noverify -out output_file.xml
Il formato DER oppure PEM va anche in questo caso scoperto per tentativi.
Attenzione: il supporto al CMS è stato introdotto in OpenSSL 1.0.0 (29 Marzo 2010), quindi non è disponibile in Debian 6 Squeeze che fornisce OpenSSL versione 0.9.8.