
Uno strumento di inganno basato sui font per red teaming, ricerca sulla sicurezza e quant'altro.
Uno strumento di inganno basato sui font per red teaming, ricerca sulla sicurezza e qualsiasi altra cosa.
EvilFontTool nasconde testo leggibile dalla macchina all'interno di un documento che mostra testo completamente diverso a un lettore umano. Lo fa usando Evil Fonts — font che ingannano deliberatamente l'osservatore visualizzando una lettera diversa da quella compresa da un computer. Rimappando i glifi dei font, i caratteri visibili del documento mostrano agli umani una cosa, mentre terminali, sistemi AI e copia/incolla degli appunti ne vedono un'altra.
Le demo in formato docx NON funzionano su mobile a causa del modo in cui i telefoni renderizzano i font.
pip install evilfonttool
git clone https://github.com/DoctorEww/EvilFontTool.git
cd EvilFontTool
pip install .
Per lo sviluppo (installazione modificabile):
pip install -e .
Installate automaticamente tramite pip:
fonttools — parsing e manipolazione dei fontbrotli — compressione WOFF2 (usata da fonttools)python-docx — generazione di DOCXreportlab — generazione di PDFpdf2image — conversione da PDF a immaginepdfminer.six — estrazione di testo/layout da PDFPillow — gestione delle immagini per il pipeline PDFRequisiti di sistema (non installati da pip — devono essere nel tuo PATH):
pdf, che chiama soffice --headless per convertire DOCX in PDF. Il comando pdf è sperimentale su Windows e potrebbe non funzionare come previsto.
sudo apt install libreofficebrew install --cask libreofficepdf2image per renderizzare le pagine PDF per il comando pdf
sudo apt install poppler-utilsbrew install popplerInstalla poppler in ~\Documents\poppler e aggiungilo al path.
irm (irm https://api.github.com/repos/oschwartz10612/poppler-windows/releases/latest).assets[0].browser_download_url -OutFile ~\Documents\poppler.zip
Expand-Archive ~\Documents\poppler.zip ~\Documents\poppler -Force
$bin = (gci ~\Documents\poppler -Recurse -Filter pdftotext.exe)[0].DirectoryName
[Environment]::SetEnvironmentVariable('Path', [Environment]::GetEnvironmentVariable('Path','User') + ";$bin", 'User'); $env:Path += ";$bin"
/usr/share/fontsC:\Windows\Fontspdf è sperimentale su Windows e potrebbe non funzionare come previsto.doc --ttf-dir <ttffonts_dir> (EvilFontTool li incorpora da solo) oppure Word su Windows. L'opzione "embed fonts" di LibreOffice non funziona con gli Evil Fonts.Il comando pdf non si basa affatto sugli Evil Fonts. Renderizza il DOCX come immagine (quindi la pagina visibile è un'immagine, non testo), poi disegna sopra il vero testo leggibile dalla macchina come testo completamente invisibile e selezionabile. Copia e incolla e l'estrazione del testo leggono quel livello invisibile. Ci sono alcuni altri strumenti che possono farlo, ma niente è semplice come il comando pdf quando hai già un DOCX che ti piace.
Se vuoi un vero PDF con Evil Font, devi creare il documento Word senza lettere invisibili (le lettere invisibili non sopravvivono alla conversione in PDF). Da lì, esporta direttamente da Word oppure usa "Stampa su PDF". Questo mantiene tutto su un singolo livello, dando al documento IOC diversi rispetto al noto trucco a due livelli usato dal comando pdf. Il comando pdf esiste unicamente perché quel processo manuale è noioso, e a volte vuoi solo una rapida copia PDF di un documento Word.
TLDR;
Se qualcuno scopre come realizzare l'Opzione 2 con lettere invisibili, ti devo un drink. Apri un issue e ti accrediterò nel README.
Tutte le funzionalità sono esposte tramite una singola CLI con quattro sottocomandi.
create — Genera la famiglia di font per l'uso in file HTML o DOCevilfonttool create <reference_font> <output_dir> <font_name>
| Argomento | Descrizione |
|---|---|
reference_font | Percorso di un font sorgente .ttf o .woff |
output_dir | Directory in cui scrivere font e CSS |
font_name | Prefisso del nome interno per la famiglia di font generata |
Esempio:
evilfonttool create fonts/Arial.ttf output/ 'Arial'
Output:
output/fonts/*.woff — web font, uno per carattereoutput/ttffonts/*.ttf — font TTF per l'incorporamento nei documentioutput/fonts.css — dichiarazioni @font-face per l'uso sul web.txt semplici.computer_file deve essere uguale o più lunga della riga corrispondente in human_fileweb — Genera un file HTML con Evil Fontevilfonttool web <human_file> <computer_file> <output_file>
Richiede che
fonts.csse i font generati siano nella directory di output così il file HTML può usarli (o modifica il percorso nel file HTML).
| Argomento | Descrizione |
|---|---|
input_human_file | Testo visibile ai lettori umani. Può avere più righe |
input_computer_file | Testo visibile alle macchine / AI. Può avere più righe |
output_file | Percorso per il file HTML generato |
Esempio:
evilfonttool web human.txt computer.txt output/index.html
doc — Genera un file DOCX con Evil Fontevilfonttool doc <human_file> <computer_file> <output_file> <font_name> [--author AUTHOR] [--ttf-dir DIR]
Il
font_namedeve corrispondere al nome usato nel passaggiocreate. I font TTF devono essere installati sul sistema, incorporati tramite--ttf-dir, oppure incorporati manualmente in Word (file -> opzioni -> salvataggio -> incorpora i font) affinché l'inganno venga renderizzato correttamente.
L'opzione di salvataggio "incorpora font" di Word funziona bene, ma quella di LibreOffice no — non sono mai riuscito a fargli incorporare correttamente gli Evil Fonts. Usa invece --ttf-dir: EvilFontTool incorpora i font da solo, direttamente nel .docx, senza dipendere affatto dall'incorporamento di Word o LibreOffice.