
Ein auf Schriftarten basierendes Täuschungstool für Red Teaming, Sicherheitsforschung und was auch immer sonst.
Ein schriftartenbasiertes Täuschungswerkzeug für Red Teaming, Sicherheitsforschung und was auch immer sonst.
EvilFontTool verbirgt maschinenlesbaren Text in einem Dokument, das einem menschlichen Leser völlig anderen Text anzeigt. Dies geschieht mithilfe von Evil Fonts – Schriftarten, die den Betrachter absichtlich täuschen, indem sie einen anderen Buchstaben rendern, als ein Computer versteht. Durch das Neuzuordnen von Schriftglyphen zeigen die sichtbaren Zeichen des Dokuments Menschen das eine, während Terminals, KI-Systeme und Kopieren/Einfügen in die Zwischenablage etwas anderes sehen.
Die Word-DOCX-Demos funktionieren auf Mobilgeräten NICHT, weil Mobiltelefone Schriftarten auf ihre eigene Weise rendern.
pip install evilfonttool
git clone https://github.com/DoctorEww/EvilFontTool.git
cd EvilFontTool
pip install .
Für die Entwicklung (editierbare Installation):
pip install -e .
Wird automatisch über pip installiert:
fonttools — Schriftarten-Parsing und -Manipulationbrotli — WOFF2-Komprimierung (von fonttools verwendet)python-docx — DOCX-Erzeugungreportlab — PDF-Erzeugungpdf2image — PDF-zu-Bild-Konvertierungpdfminer.six — PDF-Text-/Layout-ExtraktionPillow — Bildverarbeitung für die PDF-PipelineSystemanforderungen (werden nicht von pip installiert — müssen sich in deinem PATH befinden):
pdf, der soffice --headless aufruft, um DOCX in PDF zu konvertieren. Der Befehl pdf ist unter Windows experimentell und funktioniert möglicherweise nicht wie vorgesehen.
sudo apt install libreofficebrew install --cask libreofficepdf2image benötigt, um PDF-Seiten für den Befehl pdf zu rendern
sudo apt install poppler-utilsbrew install popplerInstalliere poppler nach ~\Documents\poppler und füge es zum Pfad hinzu.
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 ist unter Windows experimentell und funktioniert möglicherweise nicht wie vorgesehen.pdf funktioniert nicht mit komplexen Word-Dokumenten, z. B. Spalten. Eröffne gern ein Issue, falls du ein Feature wirklich unterstützt haben möchtest.doc --ttf-dir <ttffonts_dir> (EvilFontTool bettet sie selbst ein) oder Word unter Windows. Die eigene Option „Schriftarten einbetten“ von LibreOffice funktioniert bei Evil Fonts nicht.Der Befehl pdf verlässt sich überhaupt nicht auf Evil Fonts. Er rendert das DOCX zu einem Bild (die sichtbare Seite ist also ein Bild, kein Text) und zeichnet dann den eigentlichen Computertext als vollständig unsichtbaren, auswählbaren Text darüber. Kopieren/Einfügen und Textextraktion lesen stattdessen diese unsichtbare Ebene. Es gibt ein paar andere Werkzeuge, die das können, aber keins ist so einfach wie der Befehl pdf, wenn man bereits ein DOCX hat, das einem gefällt.
Wenn du ein echtes Evil-Font-PDF möchtest, musst du das Word-Dokument ohne unsichtbare Buchstaben erstellen (unsichtbare Buchstaben überleben die PDF-Konvertierung nicht). Exportiere es dann direkt aus Word oder verwende „Als PDF drucken“. Dadurch bleibt alles in einer einzigen Ebene, und das Dokument erhält andere IOCs als der bekannte Zwei-Ebenen-Trick des Befehls pdf. Der Befehl pdf existiert nur, weil dieser manuelle Prozess mühsam ist und man manchmal einfach eine schnelle PDF-Kopie eines Word-Dokuments haben möchte.
TL;DR;
pdf → zweischichtiges PDF, gleicher Mechanismus wie bei anderen Werkzeugen (bekannter/erkennbarer).Falls jemand herausfindet, wie man Option 2 mit unsichtbaren Buchstaben umsetzt, schulde ich dir einen Drink. Öffne ein Issue und ich werde dich in der README erwähnen.
Die gesamte Funktionalität wird über eine einzige CLI mit vier Unterbefehlen bereitgestellt.
create — Die Schriftfamilie für die Verwendung in HTML- oder DOC-Dateien erzeugenevilfonttool create <reference_font> <output_dir> <font_name>
| Argument | Beschreibung |
|---|---|
reference_font | Pfad zu einer .ttf- oder .woff-Quellschrift |
output_dir | Verzeichnis, in das Schriftarten und CSS geschrieben werden |
font_name | Interner Namenspräfix für die erzeugte Schriftfamilie |
Beispiel:
evilfonttool create fonts/Arial.ttf output/ 'Arial'
Ausgaben:
output/fonts/*.woff — Webschriftarten, eine pro Zeichenoutput/ttffonts/*.ttf — TTF-Schriftarten zum Einbetten in Dokumenteoutput/fonts.css — @font-face-Deklarationen für die Webnutzung.txt-Dateien.computer_file muss gleich lang oder länger sein als die entsprechende Zeile in human_fileweb — Eine Evil-Font-HTML-Datei erzeugenevilfonttool web <human_file> <computer_file> <output_file>
Erfordert, dass sich
fonts.cssund die erzeugten Schriftarten im Ausgabeverzeichnis befinden, damit die HTML-Datei sie verwenden kann (oder ändere den Pfad in der HTML-Datei).
| Argument | Beschreibung |
|---|---|
input_human_file | Für menschliche Leser sichtbarer Text. Kann mehrere Zeilen umfassen |
input_computer_file | Für Maschinen / KI sichtbarer Text. Kann mehrere Zeilen umfassen |
output_file | Pfad für die erzeugte HTML-Datei |
Beispiel:
evilfonttool web human.txt computer.txt output/index.html
doc — Eine Evil-Font-DOCX-Datei erzeugenevilfonttool doc <human_file> <computer_file> <output_file> <font_name> [--author AUTHOR] [--ttf-dir DIR]