
FakeNet-NG - أداة تحليل الشبكة الديناميكية من الجيل التالي
| ____/\ | |/ / ____| \ | | ____|__ __| | \ | |/ ____|
| |__ / \ | ' /| |__ | \| | |__ | |______| \| | | __
| __/ /\ \ | < | __| | . ` | __| | |______| . ` | | |_ |
| | / ____ \| . \| |____| |\ | |____ | | | |\ | |__| |
|_|/_/ \_\_|\_\______|_| \_|______| |_| |_| \_|\_____|
D O C U M E N T A T I O N
FakeNet-NG 3.5 هو أداة تحليل شبكة ديناميكية من الجيل التالي لمحللي البرامج الضارة ومختبرات الاختراق. إنها مفتوحة المصدر ومصممة لأحدث إصدارات ويندوز (ولينكس، لوضعيات تشغيل معينة). يعتمد FakeNet-NG على أداة Fakenet الممتازة التي طورها Andrew Honig و Michael Sikorski.
تتيح لك الأداة اعتراض وإعادة توجيه كل حركة مرور الشبكة أو جزء منها أثناء محاكاة خدمات شبكة شرعية. باستخدام FakeNet-NG، يمكن لمحللي البرامج الضارة التعرف بسرعة على وظائف البرامج الضارة والتقاط توقيعات الشبكة. سيجد مختبرو الاختراق ومطاردو الأخطاء محرك الاعتراض القابل للتكوين والإطار المعياري لـ FakeNet-NG مفيدًا للغاية عند اختبار وظائف محددة للتطبيقات ونمذجة إثباتات المفهوم.
يمكنك تثبيت FakeNet-NG بعدة طرق مختلفة. لاحظ أن عمليات التثبيت التالية ستجلب مكتبات مفتوحة المصدر تابعة لجهات خارجية يستخدمها FakeNet-NG إلى نظامك. سيتم تحميل هذه المكتبات ديناميكيًا عند التشغيل، وقد تكون بعض هذه المكتبات مرخصة بموجب LGPL.
من الأسهل ببساطة تنزيل الإصدار المُجمَّع الذي يمكن الحصول عليه من صفحة الإصدارات:
https://github.com/mandiant/flare-fakenet-ng/releases
قم بتشغيل FakeNet-NG عن طريق تشغيل 'fakenet.exe'.
هذه هي الطريقة المفضلة لاستخدام FakeNet-NG على ويندوز لأنها لا تتطلب منك تثبيت أي وحدات إضافية، وهو مثالي لجهاز تحليل البرامج الضارة.
ملاحظة: قد يتم وضع علامة على FakeNet-NG كبرنامج ضار من قبل حلول مكافحة الفيروسات (AV) وكشف نقطة النهاية والاستجابة (EDR) (مثل Windows Defender و Chrome's Safe Browsing). يرجع ذلك على الأرجح إلى قدرته على تعديل حركة مرور الشبكة ومحاكاة خدمات الشبكة، بالإضافة إلى استخدام PyInstaller لبناء الملفات التنفيذية للإصدار. الملفات الثنائية الرسمية للإصدار آمنة، ويجب اعتبار هذه الاكتشافات إيجابيات خاطئة. كتذكير، تم تصميم FakeNet-NG ويوصى به بشدة للاستخدام في بيئة خاضعة للرقابة ومعزولة، مثل جهاز افتراضي (VM)، حيث يمكنه تعديل إعدادات الشبكة للنظام بأمان.
قم بتثبيت Python 3.10.11 وأحدث إصدار من pip لأنظمة ويندوز/لينكس.
في ويندوز، قم بتنزيل وتثبيت أدوات بناء Visual C++.
يتطلب التثبيت على لينكس التبعيات التالية:
قم بتثبيت هذه التبعيات باستخدام الأمر التالي:
sudo apt-get install build-essential python3.10-dev libnetfilter-queue-dev
قم بتثبيت FakeNet-NG كوحدة بايثون باستخدام pip:
python -m pip install https://github.com/mandiant/flare-fakenet-ng/zipball/master
أو عن طريق الحصول على أحدث كود مصدر وتثبيته يدويًا:
git clone https://github.com/mandiant/flare-fakenet-ng/
قم بتثبيت تبعيات بايثون عن طريق تشغيل الأوامر التالية بصلاحيات المدير:
في لينكس (تم اختباره على Ubuntu 24.04.2 LTS)، قم بتشغيل الأوامر التالية قبل تشغيل setup.py:
python -m pip install --upgrade setuptools
# بناء wheel لـ python 3.10
python -m pip install --force-reinstall netifaces
# تم ملاحظة خطأ "ModuleNotFoundError: No module named '_cffi_backend'" أثناء الاختبار
# سيؤدي هذا إلى الحصول على الإصدار المطلوب من حزم cffi للتشفير
python -m pip install --upgrade cryptography
إذا كنت تقوم بالتثبيت يدويًا، فانتقل إلى الدليل الذي تم تنزيله flare-fakenet-ng وقم بتشغيل الأمر التالي بصلاحيات المدير:
أخيرًا، إذا كنت ترغب في تجنب تثبيت FakeNet-NG وتريد فقط تشغيله كما هو (مثل التطوير)، فستحتاج إلى الحصول على الكود المصدري وتثبيت التبعيات كما يلي:
قم بتثبيت Python 3.10.11 إصدار 64 بت أو 32 بت لإصدارات ويندوز/لينكس 64 بت أو 32 بت على التوالي.
في ويندوز، قم بتثبيت تبعيات بايثون عن طريق تشغيل الأوامر التالية بصلاحيات المدير:
python -m pip install pydivert dnslib dpkt pyopenssl pyftpdlib netifaces jinja2
ملاحظة: سيقوم pydivert أيضًا بتنزيل وتثبيت مكتبة وبرنامج تشغيل WinDivert في دليل %PYTHONHOME%\DLLs. يقوم FakeNet-NG بتجميع تلك الملفات لذا فهي ليست ضرورية للاستخدام العادي.
في لينكس، قم بتثبيت تبعيات بايثون عن طريق تشغيل الأوامر التالية بصلاحيات المدير:
python -m pip install --upgrade setuptools
# بناء wheel لـ python 3.10
python -m pip install --force-reinstall netifaces
# تم ملاحظة خطأ "ModuleNotFoundError: No module named '_cffi_backend'" أثناء الاختبار
# سيؤدي هذا إلى الحصول على الإصدار المطلوب من حزم cffi للتشفير
python -m pip install --upgrade cryptography
python -m pip install netfilterqueue dnslib dpkt pyopenssl pyftpdlib netifaces jinja2
اختياريًا، يمكنك تثبيت الوحدة التالية المستخدمة للاختبار:
python -m pip install requests
قم بتنزيل الكود المصدري لـ FakeNet-NG:
git clone https://github.com/mandiant/flare-fakenet-ng
في لينكس، حرر المنفذ 53 لمستمع DNS:
sudo systemctl stop systemd-resolved
أسهل طريقة لتشغيل FakeNet-NG هي ببساطة تنفيذ الملف التنفيذي المقدم كمسؤول. يمكنك توفير معلمة سطر الأوامر --help للحصول على مساعدة بسيطة:
C:\tools\fakenet-ng>fakenet.exe --help
______ _ ________ _ _ ______ _______ _ _ _____
| ____/\ | |/ / ____| \ | | ____|__ __| | \ | |/ ____|
| |__ / \ | ' /| |__ | \| | |__ | |______| \| | | __
| __/ /\ \ | < | __| | . ` | __| | |______| . ` | | |_ |
| | / ____ \| . \| |____| |\ | |____ | | | |\ | |__| |
|_|/_/ \_\_|\_\______|_| \_|______| |_| |_| \_|\_____|
Version 3.5
_____________________________________________________________
Developed by FLARE Team
Copyright (C) 2016-2026 Mandiant, Inc. All rights reserved.
_____________________________________________________________
Usage: python -m fakenet.fakenet [options]:
Options:
-h, --help show this help message and exit
-c FILE, --config-file=FILE
configuration filename
-v, --verbose print more verbose messages (default: False)
-l LOG_FILE, --log-file=LOG_FILE
-s, --log-syslog Log to syslog via /dev/log (default: False)
-f STOP_FLAG, --stop-flag=STOP_FLAG
terminate if stop flag file is created
-p, --no-pause disable pause for confirmation before closing the console
(default: pause)
-n, --no-console-output
Suppress console output (for testing on Linux)
كما ترى من المساعدة البسيطة أعلاه، من الممكن تكوين ملف التكوين المستخدم لبدء FakeNet-NG. بشكل افتراضي، تستخدم الأداة configs\default.ini؛ ومع ذلك، يمكن تغييره باستخدام المعامل -c. يوجد العديد من ملفات التكوين النموذجية في دليل configs. نظرًا للعدد الكبير من الإعدادات المختلفة، يعتمد FakeNet-NG على ملفات التكوين للتحكم في وظائفه.
ملاحظة: سيحاول FakeNet-NG تحديد موقع ملف التكوين المحدد، أولاً باستخدام المسار المطلق أو النسبي المقدم في حال كنت تريد تخزين جميع تكويناتك. إذا لم يتم العثور على ملف التكوين المحدد، فسيحاول البحث في دليل configs الخاص به.
تتيح لك بقية خيارات سطر الأوامر التحكم في كمية إخراج التسجيل المعروض بالإضافة إلى إعادة توجيهه إلى ملف بدلاً من إلقائه على الشاشة.
قبل أن نتعمق ونقوم بتشغيل FakeNet-NG، دعنا نستعرض بعض المفاهيم الأساسية. تتكون الأداة من عدة وحدات تعمل معًا. إحدى هذه الوحدات المهمة هي المُحوِّل (Diverter) المسؤول عن إعادة توجيه حركة المرور إلى مجموعة من المستمعين. يجبر المُحوِّل التطبيقات على التفاعل مع FakeNet-NG بدلاً من الخوادم الحقيقية. المستمعون هم خدمات فردية تتعامل مع الاتصالات الواردة وتسمح لنا بفحص حركة مرور التطبيق (مثل توقيعات البرامج الضارة).
دعنا نقوم بتشغيل FakeNet-NG باستخدام الإعدادات الافتراضية عن طريق تشغيل الأمر التالي:
C:\tools\fakenet-ng>fakenet.exe
فيما يلي سجل الإخراج المُعلق الذي يوضح طلب DNS المعترض واتصال HTTP نموذجيين:
______ _ ________ _ _ ______ _______ _ _ _____
| ____/\ | |/ / ____| \ | | ____|__ __| | \ | |/ ____|
| |__ / \ | ' /| |__ | \| | |__ | |______| \| | | __
| __/ /\ \ | < | __| | . ` | __| | |______| . ` | | |_ |
| | / ____ \| . \| |____| |\ | |____ | | | |\ | |__| |
|_|/_/ \_\_|\_\______|_| \_|______| |_| |_| \_|\_____|
Version 3.5
_____________________________________________________________
Developed by FLARE Team
Copyright (C) 2016-2026 Mandiant, Inc. All rights reserved.
_____________________________________________________________
07/06/16 10:20:52 PM [ FakeNet] Loaded configuration file: configs/default.ini
/
default configuration file /
07/06/16 10:20:52 PM [ Diverter] Capturing traffic to packets_20160706_222052.pcap
/
PCAP output file /
07/06/16 10:20:52 PM [ FakeNet] Anonymous Forwarder listener on TCP port 8080...
\
\ Anonymous Listener rule
07/06/16 10:20:52 PM [ RawTCPListener] Starting...
07/06/16 10:20:52 PM [ RawUDPListener] Starting...
07/06/16 10:20:52 PM [ FilteredListener] Starting...
07/06/16 10:20:52 PM [ DNS Server] Starting...
07/06/16 10:20:52 PM [ HTTPListener80] Starting...
07/06/16 10:20:52 PM [ HTTPListener443] Starting...
07/06/16 10:20:52 PM [ SMTPListener] Starting...
07/06/16 10:20:52 PM [ Diverter] Starting...
\
\ Listeners starting up
07/06/16 10:20:52 PM [ Diverter] Diverting ports:
07/06/16 10:20:52 PM [ Diverter] TCP: 1337, 80, 443, 25
07/06/16 10:20:52 PM [ Diverter] UDP: 1337, 53
/
Summary of diverted ports /
07/06/16 10:21:03 PM [ Diverter] Modifying outbound external UDP request packet:
07/06/16 10:21:03 PM [ Diverter] from: 192.168.250.140:49383 -> 4.2.2.1:53
07/06/16 10:21:03 PM [ Diverter] to: 192.168.250.140:49383 -> 192.168.250.140:53
07/06/16 10:21:03 PM [ Diverter] pid: 456 name: malware.exe
/
Intercepted traffic to the DNS server from malware.exe /
07/06/16 10:21:03 PM [ DNS Server] Received A request for domain 'evil.com'.
\
\ Fake DNS Listener handling the above request
07/06/16 10:21:04 PM [ Diverter] Modifying outbound external TCP request packet:
07/06/16 10:21:04 PM [ Diverter] from: 192.168.250.140:2179 -> 192.0.2.123:80
07/06/16 10:21:04 PM [ Diverter] to: 192.168.250.140:2179 -> 192.168.250.140:80
07/06/16 10:21:04 PM [ Diverter] pid: 456 name: malware.exe
/
Intercepted traffic to the web server from malware.exe /
07/06/16 10:21:08 PM [ HTTPListener80] Received a GET request.
07/06/16 10:21:08 PM [ HTTPListener80] --------------------------------------------------------------------------------
07/06/16 10:21:08 PM [ HTTPListener80] GET / HTTP/1.0
07/06/16 10:21:08 PM [ HTTPListener80]
07/06/16 10:21:08 PM [ HTTPListener80] --------------------------------------------------------------------------------
\
\ Fake HTTP Listener handling the above request
لاحظ أن كل سجل لديه اسم لوحدة FakeNet-NG قيد التشغيل حاليًا. على سبيل المثال، عندما يتم تحويل حركة المرور، ستكون السجلات مسبوقة بتسمية Diverter:
07/06/16 10:21:03 PM [ Diverter] Modifying outbound external UDP request packet:
07/06/16 10:21:03 PM [ Diverter] from: 192.168.250.140:49383 -> 4.2.2.1:53
07/06/16 10:21:03 PM [ Diverter] to: 192.168.250.140:49383 -> 192.168.250.140:53
07/06/16 10:21:03 PM [ Diverter] pid: 456 name: malware.exe
في نفس الوقت، عندما يقوم المستمعون الفرديون بمعالجة حركة المرور المُحوَّلة، سيتم تسمية السجلات بالاسم المحدد في ملف التكوين:
07/06/16 10:21:03 PM [ DNS Server] Received A request for domain 'evil.com'.
لإيقاف FakeNet-NG وحفظ ملف PCAP وتقرير HTML الناتجين على القرص، ما عليك سوى الضغط على CTRL-C:
07/06/16 10:21:41 PM [ FakeNet] Stopping...
07/06/16 10:21:42 PM [ HTTPListener80] Stopping...
07/06/16 10:21:42 PM [ HTTPListener443] Stopping...
07/06/16 10:21:42 PM [ SMTPListener] Stopping...
07/06/16 10:21:43 PM [ Diverter] Stopping...
07/06/16 10:21:43 PM [ Diverter] Generated new HTML report: report_20160607_102143.html
[Press Enter to exit]
انتظر حتى يتم إنشاء ملف PCAP والتقرير، ثم اضغط Enter للخروج. ستبقى نافذة وحدة التحكم مفتوحة حتى تفعل ذلك؛ يمكن تعطيل ذلك (على سبيل المثال، في البرامج النصية) باستخدام العلم --no-pause.
مع كل جلسة من FakeNet-NG، يتم إنشاء تقرير HTML يحتوي على مؤشرات الشبكة (NBIs) التي تم التقاطها خلال الجلسة. عند إنهاء FakeNet بالضغط على CTRL-C، سيتم حفظ ملف HTML هذا في الدليل الجذر لـ FakeNet. يمكن للمستخدم مراجعة NBIs من خلال عرض ملف HTML هذا في متصفح مثل Chrome أو Firefox.
يعمل تقرير HTML كواجهة مستخدم رسومية تفاعلية (GUI) تعرض ملخص NBI بطريقة سهلة الاستخدام. يتضمن ميزات متنوعة لتحديد وتصفية ونسخ NBIs، مما يجعل تحليل الشبكة أسهل. تقوم الواجهة بتنظيم جميع NBIs بناءً على معلومات العملية الخاصة بها ثم تصنيفها بشكل أكبر حسب بروتوكول طبقة التطبيق أو طبقة النقل الذي تستخدمه.
يتم عرض المعلومات في جدول ملخص NBI بتنسيق جدولي ويتضمن التفاصيل التالية:
تحديد: يؤدي النقر على مربع الاختيار إلى تحديد NBI المقابل. يمكنك تحديد عدة NBIs عبر بروتوكولات مختلفة أو نفس البروتوكول. يمكن أيضًا تحديد الصف بأكمله من خلال النقر في أي مكان داخل الصف. يمكن نسخ NBIs المحددة باستخدام زر "Copy Selected NBIs".
NBI: تمثل هذه الخلية NBI الفعلي الذي تم التقاطه. تتضمن الأوامر والمعلمات وعناوين URI والأنشطة الهامة الأخرى التي يولدها العميل ضد المستمع. تلخص هذه الخلية سلوك البرامج الضارة لفهم أفضل.
معلومات إضافية: توفر هذه الخلية معلومات إضافية حول كل طلب NBI مثل بروتوكول طبقة النقل المستخدم وعنوان IP الوجهة والمنفذ وتشفير SSL.
الإجراءات: تسمح لك هذه الخلية بتنفيذ إجراءات على NBIs فردية. حاليًا، يتم دعم النسخ فقط. يؤدي النقر على زر النسخ إلى نسخ بيانات خلية NBI المحددة بتنسيق markdown مناسب لإنشاء التقارير.
تتضمن الواجهة أيضًا العديد من الميزات التفاعلية:
تحديد مربع الاختيار: تتوفر مربعات اختيار قبل كل كتلة عملية وبروتوكول. يؤدي تحديد مربع اختيار إلى تحديد جميع NBIs ضمن تلك العملية أو البروتوكول. يكون هذا مفيدًا عندما تريد تحديد جميع NBIs من عملية أو بروتوكول معين. يمكنك بعد ذلك استخدام زر Copy Selected NBIs لنسخ البيانات المحددة.
شريط البحث: يتيح لك شريط البحث كتابة كلمات رئيسية، وسيتم عرض الصفوف التي تحتوي على هذه الكلمات الرئيسية في اسم العملية أو NBI أو المعلومات الإضافية فقط في صفحة HTML. يمكنك بعد ذلك استخدام زر "Copy Filtered Data" لنسخ البيانات المعروضة بتنسيق markdown. يؤدي مسح استعلام البحث إلى استعادة عرض الجدول الأصلي.
أزرار النسخ:
Copy Selected Data: ينسخ جميع NBIs المحددة بتنسيق markdown. يمكنك تحديد NBIs فردية أو جميع NBIs ضمن عملية عن طريق تحديد مربعات الاختيار.Copy Filtered Data: ينسخ بيانات NBIs المصفاة بتنسيق markdown. إذا لم يتم استخدام استعلام بحث، فإن هذا الزر ينسخ جميع البيانات.Copy All NBIs: ينسخ جميع NBIs بتنسيق markdown الموجودة في صفحة HTML. حتى إذا تم تطبيق عامل تصفية، فإن النقر على هذا الزر ينسخ جميع NBIs.زر إخلاء المسؤولية: يعرض إخلاء المسؤولية، الذي يوضح الحقائق المهمة للمستخدم لمراعاتها قبل وضع افتراضات حول ملخص NBI المعروض.
زر الذهاب إلى الأعلى: يظهر عندما يتجاوز محتوى الصفحة المنطقة القابلة للعرض. يؤدي النقر على هذا الزر إلى نقلك إلى أعلى الصفحة، حيث يمكنك الوصول إلى الأزرار الهامة مثل Copy Selected NBIs و Copy All NBIs و Copy Filtered NBIs وشريط البحث.
من أجل الاستفادة الكاملة من إمكانيات FakeNet-NG، يجب علينا فهم بنية ملف التكوين وإعداداته. فيما يلي نموذج لملف تكوين:
###############################################################################
# Fakenet Configuration
[FakeNet]
DivertTraffic: Yes
###############################################################################
# Diverter Configuration
[Diverter]
NetworkMode: Auto
LinuxRedirectNonlocal: *
LinuxFlushIptables: Yes
LinuxFlushDNSCommand: service dns-clean restart
DumpPackets: Yes
DumpPacketsFilePrefix: packets
ModifyLocalDNS: No
StopDNSService: Yes
RedirectAllTraffic: Yes
DefaultTCPListener: RawTCPListener
DefaultUDPListener: RawUDPListener
###############################################################################
# Listener Configuration
[DNS Server]
Enabled: True
Port: 53
Protocol: UDP
Listener: DNSListener
DNSResponse: 192.0.2.123
NXDomains: 0
Hidden: False
[RawTCPListener]
Enabled: True
Port: 1337
Protocol: TCP
Listener: RawListener
UseSSL: No
Timeout: 10
Hidden: False
ينقسم ملف التكوين إلى عدة أقسام.* [FakeNet] - يتحكم في سلوك التطبيق نفسه. الخيار الوحيد الصحيح في هذه المرحلة هو DivertTraffic. عند تفعيله، يوجه الأداة لتشغيل ملحق Diverter المناسب واعتراض حركة المرور. إذا تم تعطيل هذا الخيار، سيظل FakeNet-NG يشغل المستمعين، لكنه سيعتمد على طريقة أخرى لتوجيه حركة المرور إليهم (مثل تغيير خادم DNS يدويًا).
[Diverter] - إعدادات إعادة توجيه حركة المرور. تمت تغطيتها بالتفصيل أدناه.
[اسم المستمع] - مجموعة من تكوينات المستمع. كل مستمع لديه مجموعة من الإعدادات الافتراضية (مثل المنفذ، البروتوكول) بالإضافة إلى تكوينات خاصة بالمستمع (مثل DumpHTTPPosts لـ HTTPListener).
بافتراض أنك قمت بتمكين إعداد DivertTraffic في كتلة التكوين [FakeNet]، ستمكن الأداة محرك إعادة توجيه حركة المرور الذي سنطلق عليه من الآن فصاعدًا اسم Diverter كإشارة إلى مكتبة WinDivert الممتازة المستخدمة لأداء السحر خلف الكواليس على منصات Windows (تستخدم نسخة Linux من Diverter python-netfilterqueue).
سيقوم Diverter بفحص جميع الحزم الصادرة ومطابقتها مع قائمة البروتوكولات والمنافذ للمستمعين الممكّنين. إذا كان هناك مستمع يستمع على منفذ الحزمة وبروتوكولها، فسيتم تغيير عنوان الوجهة إلى عنوان IP للجهاز المحلي حيث سيتولى المستمع معالجة الطلب. في نفس الوقت، سيتم تغيير الردود القادمة من المستمع بحيث يظهر عنوان IP المصدر كما لو أن الحزمة قادمة من المضيف المطلوب أصلاً.
يمكنك اختياريًا تمكين إعداد DumpPackets لتخزين كل حركة المرور التي يلاحظها FakeNet-NG (المعاد توجيهها أو المُمررة) إلى ملف PCAP. من الممكن فك تشفير حركة SSL بين تطبيق مُعترض وأحد المستمعين الذي يدعم SSL. استخدم التعليمات في الصفحة التالية:
https://wiki.wireshark.org/TLS
المفاتيح privkey.pem و server.pem المستخدمة بواسطة خوادم FakeNet-NG موجودة في الدليل الجذر للتطبيق.
SingleHost: التعامل مع حركة المرور من العمليات المحلية.MultiHost: التعامل مع حركة المرور من الأنظمة الأخرى.Auto: استخدام أي NetworkMode هو الأكثر وظيفية على النظام الأساسي الحالي.NetworkMode. فيما يلي حالة الدعم الحالية:
SingleHostMultiHost ويدعم بشكل تجريبي وضع SingleHost (يعمل باستثناء القائمة السوداء والبيضاء للعمليات والمنافذ والمضيفين).Auto للحصول على وضع SingleHost على Windows ووضع MultiHost على Linux.يدعم Diverter بشكل عام الإعداد التالي المتعلق بـ DNS:
يدعم تطبيق Windows لـ Diverter الإعداد التالي المتعلق بـ DNS:
يدعم تطبيق Linux لـ Diverter الإعدادات التالية:
LinuxRedirectNonlocal - عند استخدام FakeNet-NG لمحاكاة اتصال الإنترنت لمضيف مختلف، يحدد ذلك واجهات الشبكة الخارجية التي يجب إعادة توجيهها إلى FakeNet-NG.
LinuxFlushIptables - مسح جميع قواعد iptables قبل إضافة قواعد لـ FakeNet-NG. سيقوم Diverter Linux باستعادة القواعد القديمة طالما لم يتم مقاطعة تسلسل إنهائه.
LinuxFlushDnsCommand - حدد الأمر الصحيح لتوزيعة Linux الخاصة بك لمسح ذاكرة التخزين المؤقت لمحلل DNS إذا كان ذلك مناسبًا.
DebugLevel - حدد أحداث التصحيح الدقيقة لعرضها. راجع fakenet/diverters/linutil.py للملصقات الصالحة.
افتراضيًا، سيعترض Diverter فقط حركة المرور التي تم إنشاء مستمع مخصص لها. ومع ذلك، من خلال تمكين إعداد RedirectAllTraffic وتكوين معالجات TCP و UDP الافتراضية باستخدام إعدادات DefaultTCPListener و DefaultUDPListener، يمكن معالجة حركة المرور الموجهة إلى المنافذ غير المحددة صراحةً في أحد المستمعين بشكل ديناميكي. على سبيل المثال، دعنا نلقي نظرة على تكوين نموذجي يعيد توجيه كل حركة المرور إلى مستمعي TCP و UDP المحليين على المنافذ 1234:
RedirectAllTraffic: Yes
DefaultTCPListener: TCPListener1234
DefaultUDPListener: UDPListener1234
ملاحظة: نحن نقفز قليلاً إلى الأمام مع تعريفات المستمع، ولكن فقط اعتبر أن TCPListener1234 و UDPListener1234 سيتم تعريفهما في القسم أدناه.
مع إعداد RedirectAllTraffic، سيعدل FakeNet-NG ليس فقط عنوان الوجهة بل أيضًا منفذ الوجهة بحيث يمكن معالجته بواسطة أحد المستمعين الافتراضيين. فيما يلي سجل نموذجي لحركة مرور موجهة إلى عنوان IP مضيف خارجي 1.1.1.1 على المنفذ 4444 والذي تمت إعادة توجيهه إلى المستمع الافتراضي على المنفذ 1234 بدلاً من ذلك:
07/06/16 01:13:47 AM [ Diverter] Modifying outbound external TCP request packet:
07/06/16 01:13:47 AM [ Diverter] from: 192.168.66.129:1650 -> 1.1.1.1:4444
07/06/16 01:13:47 AM [ Diverter] to: 192.168.66.129:1650 -> 192.168.66.129:1234
07/06/16 01:13:47 AM [ Diverter] pid: 3716 name: malware.exe
من المهم ملاحظة أن حركة المرور الموجهة إلى المنفذ من أحد المستمعين المحددين صراحةً ستظل تُعالج بواسطة ذلك المستمع وليس المستمع الافتراضي. على سبيل المثال، لن يقوم مستمع UDP الافتراضي بمعالجة حركة DNS إذا تم تعريف مستمع DNS منفصل على منفذ UDP 53.
مشكلة واحدة عند تمكين خيارات RedirectAllTraffic هي أنك قد تظل ترغب في السماح بمرور بعض حركة المرور لضمان التشغيل الطبيعي للجهاز. ضع في اعتبارك سيناريو حيث تحاول تحليل تطبيق لا يزال بحاجة إلى الاتصال بخادم DNS خارجي. يمكنك استخدام إعدادات BlackListPortsTCP و BlackListPortsUDP لتحديد قائمة من المنافذ التي سيتم تجاهل حركة المرور إليها وإعادة توجيهها دون تغيير أو BlackListIDsICMP (Windows فقط) لتحديد قائمة من معرفات ICMP ليتم تصفيتها وتجاهلها:
BlackListPortsUDP: 53
بعض إعدادات Diverter الأخرى التي قد تنظر فيها هي ProcessBlackList و HostBlackList والتي تسمح لـ Diverter بتجاهل وإعادة توجيه حركة المرور القادمة من اسم عملية محددة أو الموجهة إلى مضيف محدد على التوالي.
تحدد تكوينات المستمع سلوك المستمعين الفرديين. دعنا نلقي نظرة على تكوين مستمع نموذجي:
[TCPListener1234]
Enabled: True
Port: 1234
Protocol: TCP
Listener: RawListener
UseSSL: Yes
Timeout: 10
Hidden: False
يتكون التكوين أعلاه من اسم المستمع TCPListener1234. سيتم استخدامه لأغراض التسجيل بحيث يمكنك التمييز بين المستمعين المختلفين الذين يعالجون الاتصالات حتى لو كانوا يعالجون نفس البروتوكول.
الإعدادات التالية عامة لجميع المستمعين:
إعدادات Port و Protocol ضرورية للمستمعين لمعرفة المنافذ التي يجب الارتباط بها، وإذا كانوا يدعمون بروتوكولات متعددة (مثل RawListener)، فسيقررون أي بروتوكول يستخدمون. كما تُستخدم بواسطة Diverter لمعرفة المنافذ والبروتوكولات التي يجب إعادة توجيهها.
يحدد إعداد Listener أحد ملحقات المستمع المتاحة لمعالجة حركة المرور المعاد توجيهها. يأتي الإصدار الحالي من FakeNet-NG مع المستمعين التاليين:
DNSResponse. يمكنك أيضًا تعيين سمة NXDomains لعدد الطلبات التي يجب على المستمع تجاهلها. بهذه الطريقة قد تتمكن من جعل البرنامج الضار يطلب جميع أسماء خوادم التحكم الاحتياطية الخاصة به. يدعم المستمع بروتوكولي TCP و UDP.Webroot القابل للتكوين بناءً على امتداد الملف المطلوب. اختياريًا، يفرغ طلبات POST إلى ملف قابل للتكوين يمكن تحديده باستخدام إعدادات DumpHTTPPosts و DumpHTTPPostsFilePrefix.ملاحظة: سيحاول FakeNet-NG تحديد موقع دليل webroot، أولاً باستخدام المسارات المطلقة أو النسبية المقدمة. إذا لم يتم العثور على مسار webroot المحدد، فسيحاول البحث في دليل defaultFiles الخاص به.
كحالة خاصة، يستجيب تطبيق Windows Diverter تلقائيًا لجميع طلبات ICMP أثناء التشغيل. لذلك في حالة محاولة برنامج ضار لعمل ping لمضيف لاختبار الاتصال، سيحصل على استجابة صالحة. يقوم Linux Diverter بتسجيل وإعادة توجيه جميع حزم ICMP إلى localhost.
ملاحظة: يمكن لبعض المستمعين التعامل مع تحميل الملفات (مثل TFTPListener و BITSListener). سيتم تخزين جميع الملفات التي تم تحميلها في دليل العمل الحالي مع بادئة قابلة للتكوين (مثل "tftp_" لتحميلات TFTP).
يدعم FakeNet-NG عدة قواعد تصفية تتكون من قوائم سوداء وبيضاء للعمليات والمضيفين. يتم التعامل مع القوائم البيضاء كقواعد تسمح بالاتصالات بالمستمعين بينما تُستخدم القوائم السوداء لتجاهل الاتصالات الواردة وتركها ببساطة لإعادة التوجيه.
على سبيل المثال، ضع في اعتبارك التكوين أدناه مع عوامل تصفية العمليات والمضيف:
[FilteredListener]
Enabled: True
Port: 31337
Protocol: TCP
Listener: RawListener
UseSSL: No
Timeout: 10
ProcessWhiteList: malware.exe, ncat.exe
HostBlackList: 5.5.5.5
سيقوم FilteredListener أعلاه بمعالجة الاتصالات القادمة من العمليات malware.exe و ncat.exe فقط، ولكنه سيتجاهل أي اتصالات موجهة إلى المضيف 5.5.5.5. مما يعني أنه إذا حاولت عملية تسمى test.exe الاتصال على المنفذ 31337، فلن يتم إعادة توجيهها إلى المستمع وسيتم إعادة توجيهها إلى أي مكان كان مقصودًا أصلاً إذا كان المسار متاحًا.
في نفس الوقت، إذا حاولت العملية malware.exe الاتصال بالمنفذ 31337 على أي مضيف غير 5.5.5.5، فسيتم تحويلها إلى FilteredListener. أي اتصالات من العملية malware.exe موجهة إلى 5.5.5.5 سيتم السماح لها بالمرور.
إعداد تكوين قوي آخر هو ExecuteCmd. يسمح لك بشكل أساسي بتنفيذ أمر عشوائي على أول حزمة تم اكتشافها للاتصال. يمكن لقيمة ExecuteCmd استخدام عدة متغيرات سلسلة تنسيق:
{pid} - معرف العملية{procname} - اسم الملف التنفيذي للعملية{src_addr} - عنوان المصدر{src_port} - منفذ المصدر{dst_addr} - عنوان الوجهة{dst_port} - منفذ الوجهةضع في اعتبارك سيناريو عينة برامج ضارة مضغوطة تتصل بخادم C2 مهيأ على المنفذ 8443 (استخدم RedirectAllTraffic إذا كان المنفذ غير معروف). في كثير من الحالات، سيقوم البرنامج الضار بفك ضغط نفسه بحلول وقت إجراء الاتصال، مما يجعل تلك النقطة في التنفيذ مثالية للارتباط بالعملية باستخدام مصحح الأخطاء وتفريغ نسخة غير مضغوطة منها لمزيد من التحليل.
دعنا نرى كيف يمكن استخدام هذا لتشغيل مصحح أخطاء تلقائيًا على أول اتصال:
[C2Listener]
Enabled: True
Port: 8443
Protocol: TCP
Listener: RawListener
UseSSL: Yes
Timeout: 300
ProcessWhiteList: malware.exe
ExecuteCmd: C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\windbg.exe -p {pid}
بمجرد أن يكتشف FakeNet-NG اتصالاً جديدًا قادمًا من العملية المسموح بها malware.exe (هذا الإعداد اختياري)، سيقوم تلقائيًا بتشغيل windbg وإرفاقه بالعملية المتصلة.
ملاحظة: قد ترغب في تمديد إعداد Timeout العادي في حالة احتياج البرنامج الضار إلى مزيد من التفاعل مع المستمع.
هناك حالة استخدام خاصة حيث يمكنك إنشاء تكوين مستمع جديد دون تعريف المستمع الفعلي لمعالجته:
[Forwarder]
Enabled: True
Port: 8080
Protocol: TCP
ProcessWhiteList: chrome.exe
بدون تعريف مستمع، سيظل FakeNet-NG يقوم بتحويل حركة المرور إلى الجهاز المحلي، ولكن يجب على المستخدم تشغيل مستمع منفصل. على سبيل المثال، يمكن أن يكون لديك وكيل HTTP يستمع للاتصالات على المنفذ 8080 ويدع FakeNet-NG يعترض كل حركة المرور من التطبيقات التي لا تستخدم إعدادات خادم الوكيل للنظام أو تستخدم عناوين IP ثابتة. باستخدام المستمعين المجهولين، يمكنك جلب قدرات FakeNet-NG المتقدمة لتصفية حركة المرور والعمليات إلى أدوات الطرف الثالث.
قد ترغب أيضًا في تمكين إعداد ProcessBlackList الخاص بـ Diverter للسماح للأداة الخارجية بالاتصال بالإنترنت. على سبيل المثال، للسماح لوكيل HTTP بإعادة توجيه حركة المرور الموكلة، أضف اسم العملية إلى القائمة السوداء للعمليات. على سبيل المثال، أضف العملية التالية للسماح لـ Burp Proxy بالاتصال بالإنترنت:
ProcessBlackList: java.exe
في السيناريو حيث يتصل التطبيق على منفذ غير معروف، ولكنك لا تزال ترغب في إعادة توجيهه إلى المستمع المجهول على المنفذ 8080، يمكنك تعريف المستمع الافتراضي على النحو التالي:
RedirectAllTraffic: Yes
DefaultTCPListener: ForwarderTCP
DefaultUDPListener: RawUDPListener
أخيرًا، للسماح لحركة DNS بالذهاب إلى خادم DNS الافتراضي على الإنترنت، مع إعادة توجيه كل حركة المرور الأخرى، أضف المنفذ 53 إلى القائمة السوداء لمنفذ UDP الخاص بـ Diverter على النحو التالي:
BlackListPortsUDP:
يقدم الإصدار الأخير من FakeNet-NG مستمع وكيل جديد قادر على اكتشاف بروتوكول الاتصال ديناميكيًا (بما في ذلك حركة SSL) وإعادة توجيه الاتصال إلى مستمع مناسب.
يمكنك تكوين مستمع الوكيل للعمل على منفذ معين كما هو موضح في التكوين أدناه:
[ProxyTCPListener]
Enabled: True
Protocol: TCP
Listener: ProxyListener
Port: 38926
Listeners: HTTPListener, RawListener, FTPListener, DNSListener, POPListener, SMTPListener, TFTPListener, IRCListener, BITSListener
Hidden: False
لاحظ، المعامل الجديد Listeners الذي يحدد قائمة بمعالجات البروتوكول المحتملة لتجربتها لجميع الاتصالات الواردة.
يوصى أيضًا بتعريف مستمع وكيل كمعالج افتراضي لك عن طريق تحديث تكوينات diverter التالية:
RedirectAllTraffic: Yes
DefaultTCPListener: ProxyTCPListener
DefaultUDPListener: ProxyUDPListener
مع توجيه المستمع الافتراضي إلى مستمع الوكيل، سيتم التعامل مع جميع الاتصالات غير المعروفة بشكل مناسب. لا يزال بإمكانك تعيين مستمعين محددين للمنافذ لفرض بروتوكول معين (مثل استخدام مستمع HTTP دائمًا للمنفذ 80).
يحدد الوكيل بروتوكول الحزم عن طريق استقصاء جميع المستمعين المتاحين باستخدام الدالة taste(). سيستجيب كل مستمع يقوم بتنفيذ taste() بنتيجة تشير إلى احتمال تطابق البروتوكول الذي يعالجه ذلك المستمع مع محتويات الحزمة. سيقوم الوكيل بإعادة توجيه الحزمة إلى المستمع الذي أعاد أعلى نتيجة. سيعيد RawListener دائمًا نتيجة 1، لذلك سيتم اختياره في حالة إرجاع جميع المستمعين الآخرين 0، وبذلك يعمل كافتراضي.
يمكن للمستخدمين تغيير معامل التكوين 'Hidden' في تكوين كل مستمع. إذا كان Hidden هو 'False'، فسيتم ربط المستمع بمنفذ محدد وسيستقبل تلقائيًا كل حركة المرور على ذلك المنفذ. مع تعيين Hidden على 'True'، يمكن للمستمع فقط استقبال حركة المرور التي يتم إعادة توجيهها عبر الوكيل.
تم تطوير FakeNet-NG بلغة Python مما يسمح لك بتطوير ملحقات جديدة بسرعة وتوسيع الوظائف الحالية. للحصول على التفاصيل، راجع Developing for FakeNet-NG.
اعتبارًا من هذا الكتابة، حجم المخزن المؤقت الافتراضي في pydivert هو 1500. إذا واجه FakeNet-NG حزمة أكبر من حجم المخزن المؤقت الافتراضي، فقد تلاحظ هذا الخطأ. الحل البديل هو تحديد حجم المخزن المؤقت المطلوب في self.handle.recv(bufsize=<your_bufsize>) في fakenet/diverters/windows. راجع هنا
انظر "عدم اعتراض حركة المرور" أدناه.
لكي يتمكن FakeNet-NG من اعتراض الحزمة وتعديلها، يجب أن يكون هناك مسار شبكة صالح للحزمة للوصول إلى وجهتها.
هناك طريقة سهلة للتحقق مما إذا كانت المسارات قد تم إعدادها بشكل صحيح أم لا. بدون تشغيل الأداة، حاول عمل ping للمضيف الوجهة. يجب أن تلاحظ إما استجابة صالحة أو رسالة انتهاء مهلة. إذا تلقيت خطأ عدم الوصول إلى الوجهة بدلاً من ذلك، فليس لديك مسار صالح.
عادةً ما يحدث هذا بسبب عدم تعيين البوابة الخاصة بك أو عدم إمكانية الوصول إليها. على سبيل المثال، على جهاز VMWare مع وضع host-only، لن يتم تكوين البوابة لجهازك مما يمنع FakeNet-NG من رؤية أي حركة مرور.
لتصحيح هذه المشكلة، قم بتكوين واجهتك الأساسية يدويًا إلى البوابة في نفس الشبكة الفرعية. أولاً تحقق من اسم الواجهة:
C:\>netsh interface show interface
Admin State State Type Interface Name
-------------------------------------------------------------------------
Enabled Connected Dedicated Local Area Connection
في هذه الحالة اسم الواجهة هو "Local Area Connection" لذا سنستخدمه لبقية الأوامر.قم بتكوين عنوان IP للواجهة والبوابة يدويًا كما يلي:
C:\>netsh interface ip set address name="Local Area Connection" static 192.168.249.123 255.255.255.0 192.168.249.254
قم بتعيين عنوان IP لخادم DNS يدويًا
C:\>netsh interface ip set dns name="Local Area Connection" static 4.2.2.2
إذا كنت لا تزال تواجه مشكلة، فتأكد من أن عنوان IP للبوابة نفسه قابل للتوجيه.
تأكد من أن مستمع DNS قد تم ربطه بنجاح بمنفذه. تشير الأخطاء مثل ما يلي إلى أن مستمع DNS لم يتم ربطه بنجاح:``` 05/01/17 11:11:16 AM [ FakeNet] Error starting DNSListener listener: 05/01/17 11:11:16 AM [ FakeNet] [Errno 98] Address already in use
استخدم أدوات مثل `netstat`، `tcpview`، أو غيرها لاكتشاف التطبيق المرتبط بالمنفذ، وراجع وثائق نظام التشغيل أو التطبيق المقابلة لتعطيل الخدمة.
قد يكون من المناسب أخذ لقطة من الجهاز الظاهري قبل الشروع في إعادة التهيئة.
على سبيل المثال، في أوبونتو، عادةً ما يتم تفعيل خدمة `dnsmasq` في
`/etc/NetworkManager/NetworkManager.conf` بالسطر `dns=dnsmasq`.
تعطيل ذلك (مثل عن طريق تعليق السطر) وإعادة تشغيل خدمة
`network-manager` (مثل `service network-manager restart`) يكفي
لتحرير المنفذ قبل إعادة تشغيل FakeNet-NG.
في الإصدارات الأحدث من أوبونتو أو في التوزيعات الأخرى، قد يكشف استخدام `lsof -i`
أن `systemd-resolved` يُستخدم بدلاً من ذلك. في هذه الحالات، يمكنك تجربة
هذه الخطوات المقتبسة من
<https://askubuntu.com/questions/907246/how-to-disable-systemd-resolved-in-ubuntu>:```
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
ثم في /etc/NetworkManager/NetworkManager.conf تحت القسم [main]، أضف سطرًا يحدد:```
dns=default
احذف الرابط الرمزي `/etc/resolv.conf`، أي `rm /etc/resolv.conf`.
أخيرًا، أعد تشغيل `NetworkManager`:```
sudo systemctl restart NetworkManager
يرجى التأكد من استخراج FakeNet-NG إلى محرك الأقراص المحلي C: لضمان تحميل برنامج تشغيل WinDivert بشكل صحيح.
قد يحدث هذا الخطأ عند تشغيل إصدار قابل للتنفيذ مستقل من Fakenet. يرجى تنزيل بيئة تشغيل Visual C++ 2008 وتثبيتها.
يتم دعم نظام Windows Vista+ فقط لوضع SingleHost. يُرجى استخدام
برنامج Fakenet الأصلي لأنظمة تشغيل Windows XP/2003.
يتم دعم نظام Linux فقط لوضع MultiHost.
الإصدارات القديمة من python-netfilterqueue يمكن أن تسبب خطأ تجزئة في
python. إذا واجهت هذه المشكلة، تحقق من أنك تستخدم أحدث إصدار
من python-netfilterqueue.
نظرًا لحجم المخزن المؤقت المشفر في python-netfilterqueue، لا يتعامل
موجه Linux بشكل صحيح مع الحزم التي يزيد حجمها عن 4016 بايت.
عمليًا، لا يؤثر هذا على وضع Linux MultiHost للواجهات
المهيأة بحجم وحدة إرسال قصوى (MTU) تقليدي يبلغ 1500 بايت.
إذا كانت واجهة Linux التي تستخدمها مع FakeNet-NG تدعم MTU أكبر
من 4016، فسيلزمك إعادة ترجمة python-netfilterqueue لدعم
حجم مخزن مؤقت قدره <your_mtu> + 80 (يخصص python-netfilterqueue 80 بايت من
المخزن المؤقت للنفقات العامة).
لا يتم اعتراض حركة المرور المحلية فقط على Windows (على سبيل المثال، إذا حاولت الاتصال مباشرة بأحد المستمعين).
يتم اعتراض حركة المرور التي تستخدم بروتوكولات TCP و UDP و ICMP فقط.
للأخطاء أو الأعطال أو أي تعليقات أخرى، يرجى الاتصال بـ [email protected].
اشترك في القائمة البريدية لـ FLARE للحصول على إعلانات المجتمع! أرسل "subscribe" إلى [email protected].
python setup.py install
في لينكس، حرر المنفذ 53 لمستمع DNS:
sudo systemctl stop systemd-resolved
قم بتشغيل FakeNet-NG عن طريق تشغيل 'fakenet' من أي دليل في شل بصلاحيات مرتفعة.
قم بتشغيل FakeNet-NG عن طريق تشغيله باستخدام مترجم بايثون في شل بصلاحيات مرتفعة:
python -m fakenet.fakenet