Newsgroup: it.comp.programmare
Titolo: infettare file PDF possibile?

Spiego meglio..
Utente fa login su server web attraverso token e scarica un file PDF 
attraverso un semplice link
scopo: alterare l'hash MD5/SHA1 del file prima del download inserendo il 
nuovo hash in un DB, questo per poter identificare in modo certo il 
proprietario del file nel caso il suddetto "esca erroneamente" dal 
circuito..
In parole povere, se il materiale è da mantenere riservato e finisce 
chissàdove in caso il suddetto file venga ritrovato si potrà risalire al 
furbone che l'ha caricato su penna USB e passato in giro.
Idee sul come fare la cosa con un normalissimo PDF non generato 
dinamicamente?

 un normalissimo PDF non generato dinamicamente?
Perhe' dal mio punto di vista, intervenire sul file prima del download
vuol dire generarlo dinamicamente.
Quanto e' grosso questo file?

dinamicamente?
In un documento PDF � possibile inserire uno stream dati arbitrario, con
diverse codifiche, che pu� essere (come qualunque altro oggetto) ignorato
nella composizione delle pagine, e quindi non influire sul rendering. Direi
quindi che, in linea teorica, ci sono tutti gli elementi per poter alterare
a piacere l'hash del file, anche se non saprei in dettaglio costruire un
algoritmo. Ancora pi� semplicemente, si pu� registrare un hash arbitrario
direttamente nello stream.
Sono comunque entrambi procedimenti abbastanza facilmente individuabili:
nulla vieta a chi ha scaricato il file, di rimuovere l'oggetto, una volta
che ne intuisca lo scopo (basta, del resto, rimuovere qualunque oggetto non
direttamente utilizzato).
Sistemi pi� furbi non me ne vengono in mente (si tratterebbe, immagino, di
alterare la codifica di un oggetto utilizzato, quindi non rimovibile, ma mi
sembra piuttosto complicato). Ma, del resto, anche in presenza di
accorgimenti pi� intelligenti, chi diffonde il file potrebbe a sua volta
modificarne l'hash, vanificando la cosa. Mi sembra, in sostanza, che questa
"tracciabilit�" del documento elettronico sia abbastanza illusoria, almeno
in questa forma.
Ciao.

 circuito..
Prova ad aggiungere una riga dopo %%EOF.

,
scriveva:

Questo non è particolarmente raccomandabile, anche se la maggior parte dei
lettori PDF sarebbe comunque in grado di gestire il documento, ma esistono
modi puliti e abbastanza semplici (gli incremental updates, per esempio),
per inserire nuovo materiale in fondo ad un documento PDF.
Ciao.

 modi puliti e abbastanza semplici (gli incremental updates, per esempio),
Esiste uno strumento per controllare che un file PDF sia sano?

 Quanto e' grosso questo file?
Generalmente non superano 1MB

Il 18/06/10 12:05, Andrea D'Amore ha scritto:

Banalmente.. un semplice echo "XCGHJKJHGF">>nomefile.pdf pare funzionare 
senza problemi, proverò a testarlo anche con Acrobat Reader..
Teoricamente gli antivirus non dovrebbero stopparlo no?


http://www.adobe.com/devnet/acrobat/pdfs/PDF32000_2008.pdf
...
  7.5.5 File Trailer
  The trailer of a PDF file enables a conforming reader to quickly find the
  cross-reference table and certain special objects. Conforming readers
  should read a PDF file from its end. The last line of the file shall
                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  contain only the end-of-file marker, %%EOF.
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...
Cosě le specifiche ufficiali. Poi č vero che Acrobat Reader lo legge lo
stesso, Ghostview lo legge lo stesso, ecc... ma resta il fatto che non č
conforme alle specifiche del formato.
Ciao.

,

Si trovano dei parser, ma non so quanto rigorosi e attendibili; non ho idea
se ci sia qualcosa di ufficiale da parte di Adobe (la PDF Library?).
Ciao.

 Generalmente non superano 1MB
Direi di procedere secondo questa logica:
a valle del pdf non taggato, sia esso gia' presente o elaborato in
real time, si aggiunge un tag personalizzato per quell'utente, prima
di inviarglielo in upload.
Devo vedere se esiste qualche strumento che consenta di aggiungere/
visualizzare queste informazioni.

 conforme alle specifiche del formato.
Ok ma si tratta di una funzione attivabile in caso di sospetto che 
qualcuno stia esportando illegalmente dei documenti, stiamo parlando 
della normale segretaria o di un semplice impiegato della PA non certo 
di hacker, nella migliore delle ipotesi.. lo girano via mail o lo 
copiano su chiavetta USB.
Nulla di trascendentale...

Nulla di trascendentale...
Non č questo il punto.
L'ultima riga di un file PDF, secondo le specifiche, deve contenere la
stringa "%%EOF" e basta, se contiene altro non č piů conforme al formato; i
lettori di PDF (Adobe Reader in primis) sembrano essere di bocca buona al
riguardo (cosě almeno dalle poche prove cha abbiamo effettuato noi,
peraltro di scarsa rilevanza statistica): questo vuol dire che
PROBABILMENTE i lettori piů comunemente usati non segnaleranno alcun errore
e PROBABILMENTE leggeranno il documento.
Non ci si puň perň fare affidamento certo. Non č detto che una successiva
versione di Adobe Reader non adotti un comportamento piů rigoroso; non č
neppur detto che la cosa vada liscia su TUTTI i documenti cosě conciati,
solo perché ne abbiamo provati un paio ed ci č andata bene.
In breve, distribuire documenti PDF non conformi alle specifiche non č
comunque una buona idea; a maggior ragione, direi, se il destinatario č una
segretaria o un impiegato che non ha la competenza per risolvere eventuali
problemi di lettura, se si dovessero verificare.
Tanto piů che, ripeto, in un PDF ci si puň mettere praticamente quello che
si vuole in modo del tutto legale e conforme alle specifiche: si tratta
solo di farlo con la dovuta creanza (aggiustando adeguatamente la tabella
di cross-reference, o aggiungendo in fondo una ben formata sezione di
modifica incrementale). Certo, bisogna rassegnarsi a lavorare un po' di piů
che con un echo "XCGHJKJHGF">>nomefile.pdf.
Ciao.

>
startxref
86738
%%EOF
E' lasciata molta libertà su come costruire l'identificatore,
sostanzialmente l'unico requisito è che sia tendenzialmente unico, cioè che
sia improbabile che documenti diversi abbiano lo stesso identificatore
(qundi digest su contenuto, data, nome e percorso del file, ecc. sono
validi candidati).
Per quello che capisco, è quindi possibile intervenire con discreta
sicurezza sull'ID, per ottenere quanto richiesto dall'OP, almeno su
documenti non criptati. In particolare, è possibile modificare con discreta
sicurezza il secondo elemento di ID, perché incorpori le informazioni
sull'utente che ha prelevato il file (naturalmente, l'utente può a sua
volta modificare molto facilmente questo dato, ma più difficilmente
nascondere il fatto che c'è stata una modifica, quindi un eventuale dolo).
Il documento apparirebbe così, secondo le specifiche, come una legittima
diversa versione dello stesso file.
Per documenti criptati, mi pare di capire che ci siano delle limitazioni,
perché l'ID viene utilizzato non so in che modo per la decifrazione, e non
ho capito se un intervento di questo genere sia ugualmente possibile.
Ciao.

 nell'attributo ID del trailer:
Troppo facile, sembra fatto apposta :-)
Se i PDF sono generati dinamicamente, puo' essere dilettevole
l'applicazione di uno Spread Spectrum Watermarking con steganografia
(come se fosse antani).