====== Falsa fattura elettronica via PEC ======
{{.:pec:aruba-pec-2-contenuto-pec.png?320 |Componenti del messaggio 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.
{{.:pec:aruba-pec-1-preview.png?480|Anteprima di messaggio PEC}}
{{.:pec:aruba-pec-2-contenuto-pec.png?480|Componenti del messaggio PEC}}
{{.:pec:aruba-pec-3-messaggio.png?480|Contenuto del messaggio PEC}}
===== 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.