
أداة خداع تعتمد على الخطوط للاختبارات الهجومية، والبحث الأمني، وأي شيء آخر.
أداة خداع قائمة على الخطوط للفريق الأحمر (Red Teaming)، والأبحاث الأمنية، وأي شيء آخر.
يُخفي EvilFontTool نصًا قابلًا للقراءة آليًا داخل مستند يعرض نصًا مختلفًا تمامًا للقارئ البشري. ويقوم بذلك باستخدام الخطوط الخبيثة (Evil Fonts) — وهي خطوط تخدع المشاهد عمدًا بعرض حرف مختلف عن الذي يفهمه الحاسوب. من خلال إعادة تعيين أشكال الحروف (glyphs) في الخط، تُظهر الأحرف المرئية في المستند للبشر شيئًا واحدًا بينما ترى الأجهزة الطرفية وأنظمة الذكاء الاصطناعي والنسخ واللصق شيئًا آخر.
عروض ملفات docx لا تعمل على الجوال بسبب طريقة عرض الهواتف المحمولة للخطوط.
pip install evilfonttool
git clone https://github.com/DoctorEww/EvilFontTool.git
cd EvilFontTool
pip install .
للتطوير (تثبيت قابل للتحرير):
pip install -e .
تُثبَّت تلقائيًا عبر pip:
fonttools — تحليل الخطوط ومعالجتهاbrotli — ضغط WOFF2 (يستخدمه fonttools)python-docx — إنشاء ملفات DOCXreportlab — إنشاء ملفات PDFpdf2image — تحويل PDF إلى صورpdfminer.six — استخراج النص/التخطيط من PDFPillow — معالجة الصور لخط أنابيب PDFمتطلبات النظام (لا يُثبِّتها pip — يجب أن تكون في PATH الخاص بك):
pdf، الذي يستدعي soffice --headless لتحويل DOCX إلى PDF. أمر pdf تجريبي على ويندوز وقد لا يعمل كما هو مقصود.
sudo apt install libreofficebrew install --cask libreofficepdf2image لعرض صفحات PDF لأمر pdf
sudo apt install poppler-utilsbrew install popplerثبّت poppler في ~\Documents\poppler وأضفه إلى المسار.
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 تجريبي على ويندوز وقد لا يعمل كما هو مقصود.doc --ttf-dir <ttffonts_dir> (EvilFontTool يضمّنها بنفسه) أو Word على ويندوز. خيار "تضمين الخطوط" الخاص بـ LibreOffice لا يعمل مع الخطوط الخبيثة.أمر pdf لا يعتمد على الخطوط الخبيثة إطلاقًا. فهو يعرض ملف DOCX كصورة (بحيث تكون الصفحة المرئية صورة وليست نصًا)، ثم يرسم النص الحاسوبي الحقيقي فوقها كنص غير مرئي بالكامل وقابل للتحديد. القراءة عبر النسخ واللصق واستخراج النص تقرأ تلك الطبقة غير المرئية بدلًا من ذلك. هناك عدد قليل من الأدوات الأخرى التي يمكنها فعل ذلك، لكن لا شيء بنفس سهولة أمر pdf عندما يكون لديك بالفعل ملف DOCX يعجبك.
إذا كنت تريد ملف PDF بخط خبيث حقيقي، فأنت بحاجة إلى بناء مستند Word بدون أحرف غير مرئية (الأحرف غير المرئية لا تصمد عند التحويل إلى PDF). من هناك، قم بالتصدير مباشرة من Word أو استخدم "Print to PDF". هذا يُبقي كل شيء في طبقة واحدة، مما يمنح المستند مؤشرات اختراق (IOCs) مختلفة عن خدعة الطبقتين المعروفة التي يستخدمها أمر pdf. أمر pdf موجود فقط لأن تلك العملية اليدوية مملة، وأحيانًا تريد فقط نسخة PDF سريعة من مستند Word.
الخلاصة؛
إذا اكتشف أحدهم كيفية تنفيذ الخيار 2 مع الأحرف غير المرئية، فأنا مدين له بمشروب. افتح issue وسأنسب لك الفضل في ملف README.
تتوفر جميع الوظائف عبر واجهة سطر أوامر واحدة بأربعة أوامر فرعية.
create — توليد عائلة الخطوط لاستخدامها في ملفات HTML أو DOCevilfonttool create <reference_font> <output_dir> <font_name>
| الوسيط | الوصف |
|---|---|
reference_font | مسار إلى ملف خط مصدر .ttf أو .woff |
output_dir | المجلد الذي ستُكتب فيه الخطوط وملف CSS |
font_name |
مثال:
evilfonttool create fonts/Arial.ttf output/ 'Arial'
المخرجات:
output/fonts/*.woff — خطوط ويب، خط واحد لكل حرفoutput/ttffonts/*.ttf — خطوط TTF لتضمينها في المستنداتoutput/fonts.css — تعريفات @font-face للاستخدام على الويب.txt عادية.computer_file مساويًا أو أطول من السطر المقابل في human_fileweb — توليد ملف HTML بخط خبيثevilfonttool web <human_file> <computer_file> <output_file>
يتطلب وجود
fonts.cssوالخطوط المولّدة في مجلد الإخراج حتى يتمكن ملف HTML من استخدامها (أو غيّر المسار في ملف HTML).
| الوسيط | الوصف |
|---|---|
input_human_file | النص المرئي للقراء البشر. يمكن أن يكون عدة أسطر |
input_computer_file | النص المرئي للآلات / الذكاء الاصطناعي. يمكن أن يكون عدة أسطر |
output_file | مسار ملف HTML المولّد |
مثال:
evilfonttool web human.txt computer.txt output/index.html
doc — توليد ملف DOCX بخط خبيثevilfonttool doc <human_file> <computer_file> <output_file> <font_name> [--author AUTHOR] [--ttf-dir DIR]
يجب أن يطابق
font_nameالاسم المستخدم في خطوةcreate. يجب تثبيت خطوط TTF على النظام، أو تضمينها عبر--ttf-dir، أو تضمينها يدويًا في Word (ملف -> خيارات -> حفظ -> تضمين الخطوط) حتى يظهر الخداع بشكل صحيح.
خيار "تضمين الخطوط" الخاص بـ Word يعمل بشكل جيد، لكن خيار LibreOffice لا يعمل — لم أتمكن أبدًا من جعله يضمّن الخطوط الخبيثة بشكل صحيح. مرّر --ttf-dir بدلًا من ذلك: EvilFontTool يضمّن الخطوط بنفسه، مباشرة داخل ملف .docx، دون الاعتماد على تضمين Word أو LibreOffice إطلاقًا.
مثال:
evilfonttool doc human.txt computer.txt output/secret.docx MyFont --author "Finance Team" --ttf-dir output/ttffonts
pdf — تحويل ملف DOCX بخط خبيث إلى PDF آمن للنسخ واللصقevilfonttool pdf <input_docx> <output_file> [--ttf-dir DIR] [--dpi DPI] [--soffice PATH] [--ink-font FONT] [--title TITLE] [--author AUTHOR] [--subject SUBJECT] [--producer PRODUCER]
يعرض ملف DOCX باستخدام LibreOffice بحيث يبدو ملف PDF مطابقًا للمستند، ثم يضع الحمولة المخفية فوقه كطبقة نسخ غير مرئية بحيث تصمد عند النسخ واللصق في كل عارض.
ويندوز: هذا الأمر تجريبي على ويندوز وقد لا يعمل كما هو مقصود.
يتطلب LibreOffice (
soffice) وpoppler-utils— انظر التبعيات.
مثال:
evilfonttool pdf output/secret.docx output/secret.pdf --ttf-dir output/fonts/ttffonts --title secret
أنت مسؤول عن كيفية استخدامك لهذه الأداة. استخدام هذه التقنية ضد أنظمة أو أفراد دون إذن صريح غير أخلاقي وقد يكون غير قانوني. يقدّم المؤلفون هذه الأداة لمساعدة المدافعين على فهم واختبار هذا الصنف من الثغرات — وليس لتمكين الهجمات.
أُنشئت هذه الأداة لمساعدة الفرق الحمراء (Red Teams) على التحقق من مخاطر الهجمات القائمة على الخطوط ضد مؤسساتهم. كما أُنشئت لمساعدة الفرق الزرقاء (Blue Teams) والباحثين وأصحاب الأنظمة على فهم الفجوات الأمنية التي يتركها الاعتماد الأعمى على الخطوط المقدمة من المستخدم. فيما يلي بعض التوصيات العملية للأفراد والصناعة لمعالجة أو تخفيف المشكلة التي تشكلها الخطوط في أنظمة التشغيل والتطبيقات الحديثة.
curl مباشرة إلى bash / Invoke-Expression. من السهل على المهاجم تبديل الموقع الذي تنزّل منه.Win + R عبر نافذة منبثقة مخيفة توضح مدى خطورة ذلك في أول مرة يفعلونها (لا أعرف لماذا لا يوجد هذا بالفعل...).المساهمات مرحب بها. إذا وجدت سطح هجوم جديدًا، أو تحسينًا لخط أنابيب توليد الخطوط، أو تقنية دفاع تستحق التوثيق، فيرجى فتح issue أو طلب سحب (PR).
git checkout -b feature/my-feature)من الصعب جدًا اختبار هذه الأداة بسبب تعقيد مستندات Word وملفات PDF والخطوط. إذا وجدت مشكلة قابلة للتكرار، فيرجى فتح issue على GitHub وسأتعامل معها بأسرع ما يمكن.
يرجى تضمين ما يلي في الـ issue:
mismatch)..docx / إدخال مصغّر يعيد إنتاج المشكلة، إذا كان بإمكانك مشاركته.| بادئة الاسم الداخلية لعائلة الخطوط المولّدة |
| الوسيط | الوصف |
|---|
input_human_file | النص المرئي للقراء البشر. يمكن أن يكون عدة أسطر |
input_computer_file | النص المرئي للآلات / الذكاء الاصطناعي. يمكن أن يكون عدة أسطر |
output_file | مسار ملف DOCX المولّد |
font_name | اسم عائلة الخط (يجب أن يطابق خطوة create) |
--author | بيانات وصفية لمؤلف مستند DOCX (الافتراضي: لا شيء) |
--ttf-dir | مجلد خطوط TTF الخبيثة (مثل <output_dir>/ttffonts). إذا تم تحديده، يتم تضمين الخطوط المستخدمة فعليًا مباشرة داخل ملف .docx، بحيث يظهر الخداع بشكل صحيح دون تثبيتها على مستوى النظام. يضمّن فقط الأحرف الموجودة في الملف البشري. |
| الوسيط | الوصف |
|---|
input_docx | مسار ملف DOCX بخط خبيث (من خطوة doc) |
output_file | مسار ملف PDF المولّد |
--ttf-dir | مجلد خطوط TTF الخبيثة (مثل <output_dir>/ttffonts)، يُعرَّض لـ LibreOffice بحيث يظهر التنكر. يُحذف فقط إذا كانت الخطوط مثبتة على مستوى النظام أو مضمّنة في الملف |
--dpi | جودة التنقيط للطبقة المرئية (الافتراضي: 200) |
--soffice | مسار ثنائي LibreOffice (الافتراضي: soffice) |
--ink-font | خط TTF لطبقة النسخ غير المرئية (الافتراضي: خط sans من النظام) |
--title | بيانات وصفية لعنوان مستند PDF (الافتراضي: Untitled) |
--author | بيانات وصفية لمؤلف مستند PDF (الافتراضي: لا شيء) |
--subject | بيانات وصفية لموضوع مستند PDF (الافتراضي: لا شيء) |
--producer | بيانات وصفية لمنتج مستند PDF (الافتراضي: لا شيء) |