
منصة للتجارب والبحث لدراسة تفاعل الوكلاء الآليين في بيئات شبكية محاكاة مجردة.
8 أبريل 2021: انظر الإعلان على مدونة أمن مايكروسوفت.
CyberBattleSim هي منصة بحث تجريبية للتحقيق في تفاعل العوامل الآلية التي تعمل في بيئة شبكة مؤسسية محاكاة مجردة. توفر المحاكاة تجريدًا عالي المستوى لشبكات الحاسوب ومفاهيم الأمن السيبراني. تسمح واجهة OpenAI Gym المبنية على بايثون بتدريب العوامل الآلية باستخدام خوارزميات التعلم بالتعزيز.
يتم تحديد بيئة المحاكاة بواسطة طوبولوجيا شبكة ثابتة ومجموعة من الثغرات التي يمكن للعوامل استخدامها للتحرك جانبيًا في الشبكة. هدف المهاجم هو الاستيلاء على جزء من الشبكة عن طريق استغلال الثغرات المزروعة في عقد الحاسوب. بينما يحاول المهاجم الانتشار عبر الشبكة، يراقب عامل مدافع نشاط الشبكة ويحاول اكتشاف أي هجوم يحدث والتخفيف من تأثيره على النظام عن طريق طرد المهاجم. نقدم مدافعًا عشوائيًا أساسيًا يكتشف ويخفف من الهجمات الجارية بناءً على احتمالات نجاح محددة مسبقًا. نقوم بتنفيذ التخفيف عن طريق إعادة تصوير العقد المخترقة، وهي عملية تُجرَّد نموذجيًا كعملية تمتد على عدة خطوات محاكاة.
لمقارنة أداء العوامل، ننظر إلى مقياسين: عدد خطوات المحاكاة التي تستغرقها لتحقيق هدفها، والمكافآت التراكمية عبر خطوات المحاكاة عبر عصور التدريب.
ننظر إلى هذا المشروع كمنصة تجريبية لإجراء أبحاث حول تفاعل العوامل الآلية في بيئات الشبكات المحاكاة المجردة. من خلال فتح المصدر، نأمل في تشجيع المجتمع البحثي على التحقيق في كيفية تفاعل العوامل السيبرانية وتطورها في مثل هذه البيئات الشبكية.
المحاكاة التي نقدمها بسيطة بصراحة، لكن هذا له مزايا. تمنع طبيعتها المجردة للغاية التطبيق المباشر على الأنظمة الواقعية، مما يوفر حماية ضد الاستخدام الخبيث المحتمل للعوامل الآلية المدربة عليها. في الوقت نفسه، تسمح لنا بساطتها بالتركيز على جوانب أمنية محددة نهدف إلى دراستها وتجربة خوارزميات التعلم الآلي والذكاء الاصطناعي الحديثة بسرعة.
على سبيل المثال، يركز التنفيذ الحالي على تقنيات الهجوم بالتحرك الجانبي، على أمل فهم كيف تؤثر طوبولوجيا الشبكة وتكوينها عليها. مع هذا الهدف، شعرنا أن نمذجة حركة مرور الشبكة الفعلية ليست ضرورية. هذا مجرد مثال واحد على قيود كبيرة في نظامنا قد ترغب المساهمات المستقبلية في معالجتها.
على الجانب الخوارزمي، نقدم بعض العوامل الأساسية كنقاط انطلاق، لكننا سنكون فضوليين لمعرفة كيف تقارن خوارزميات التعلم بالتعزيز الحديثة بها. وجدنا أن مساحة العمل الواسعة المتأصلة في أي نظام حاسوبي تمثل تحديًا خاصًا للتعلم بالتعزيز، على عكس تطبيقات أخرى مثل ألعاب الفيديو أو التحكم في الروبوتات. تدريب العوامل التي يمكنها تخزين واسترجاع بيانات الاعتماد هو تحدٍ آخر يواجه عند تطبيق تقنيات التعلم بالتعزيز حيث لا تتميز العوامل عادةً بذاكرة داخلية. هذه مجالات بحث أخرى يمكن استخدام المحاكاة فيها لأغراض القياس المرجعي.
تشمل المجالات الأخرى ذات الاهتمام الاستخدام المسؤول والأخلاقي لأنظمة الأمن السيبراني المستقلة: كيف تصمم شبكة مؤسسية تمنح ميزة جوهرية للعوامل المدافعة؟ كيف تجري بحثًا آمنًا يهدف إلى الدفاع عن المؤسسات ضد الهجمات السيبرانية المستقلة مع منع الاستخدام الخبيث لهذه التكنولوجيا؟
اقرأ المقدمة السريعة للمشروع.
| النوع | الفرع | الحالة |
|---|---|---|
| CI | master | |
| صورة Docker | master |
انظر توثيق القياس المرجعي. دفاتر Jupyter مع أحدث التشغيلات مدخلة تحت علامة مخصصة في /notebooks/benchmarks (latest_benchmark).
يوصى بشدة بالعمل تحت بيئة لينكس، إما مباشرة أو عبر WSL على ويندوز. تشغيل بايثون على ويندوز مباشرة قد يعمل لكنه لم يعد مدعومًا.
ابدأ باستنساخ المستودع:
git clone https://github.com/microsoft/CyberBattleSim.git
إذا حصلت على الخطأ التالي عند تشغيل papermill على الدفاتر (أو بدلاً من ذلك عند تشغيل orca --help)
/home/wiblum/miniconda3/envs/cybersim/lib/orca_app/orca: error while loading shared libraries: libXss.so.1: cannot open shared object file: No such file or directory
أو مكتبات أخرى مشتركة مثل libgdk_pixbuf-2.0.so.0،
فقم بتشغيل الأمر التالي:
sudo apt install libnss3-dev libgtk-3-0 libxss1 libasound2-dev libgtk2.0-0 libgconf-2-4
تم اختبار التعليمات على توزيعة لينكس أوبونتو (سواء أصليًا أو عبر WSL).
إذا لم يكن conda مثبتًا بالفعل، فستحتاج إلى تثبيته عن طريق تشغيل البرنامج النصي install_conda.sh.
bash install-conda.sh
بمجرد الانتهاء، افتح نافذة طرفية جديدة وقم بتشغيل البرنامج النصي للتهيئة:
bash init.sh
سيؤدي هذا إلى إنشاء بيئة conda باسم cybersim تحتوي على جميع تبعيات نظام التشغيل والبايثون المطلوبة.
لتفعيل البيئة، قم بتشغيل:
conda activate cybersim
بيئة التطوير المدعومة على ويندوز هي عبر WSL. تحتاج أولاً إلى تثبيت توزيعة أوبونتو WSL على جهاز ويندوز الخاص بك، ثم تابع مع تعليمات لينكس (القسم التالي).
للمصادقة مع Git، يمكنك إما استخدام المصادقة المستندة إلى SSH أو باستخدام خدعة credential-helper لإنشاء رمز PAT تلقائيًا. يمكن القيام بالأخير عن طريق تشغيل الأمر التالي تحت WSL (مزيد من المعلومات هنا):
git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/libexec/git-core/git-credential-manager.exe"
لتشغيل بيئتك داخل حاوية Docker، نوصي بتشغيل docker عبر نظام ويندوز الفرعي للينكس (WSL) باستخدام الإرشادات التالية:
تثبيت Docker على ويندوز تحت WSL).
لم يعد يتم صيانة هذه الطريقة، يفضل بدلاً من ذلك التشغيل تحت
بيئة لينكس في نظام WSL الفرعي.
لكن إذا أصررت، فابدأ بتثبيت Python 3.10 ثم في موجه Powershell قم بتشغيل البرنامج النصي ./init.ps1.
الطريقة الأسرع للبدء هي عبر حاوية Docker.
ملاحظة: لأسباب ترخيصية، لا نوزع علنًا أي منتج بناء. على وجه الخصوص، سجل Docker
spinshot.azurecr.ioالمشار إليه في الأوامر أدناه يبقى خاصًا بمشرفي المشروع فقط.كحل بديل، يمكنك إعادة إنشاء صورة Docker بنفسك باستخدام
Dockerfileالمقدم، ونشر الصورة الناتجة إلى سجل Docker الخاص بك واستبدال اسم السجل في الأوامر أدناه.
commit=7c1f8c80bc53353937e3c69b0f5f799ebb2b03ee
docker login spinshot.azurecr.io
docker pull spinshot.azurecr.io/cyberbattle:$commit
docker run -it spinshot.azurecr.io/cyberbattle:$commit python -m cyberbattle.agents.baseline.run
docker build -t cyberbattle:1.1 .
docker run -it -v "$(pwd)":/source --rm cyberbattle:1.1 python -m cyberbattle.agents.baseline.run
قم بتشغيل الأوامر التالية لتشغيل محاكاة باستخدام عامل RL أساسي:
python -m cyberbattle.agents.baseline.run --training_episode_count 5 --eval_episode_count 3 --iteration_count 100 --rewardplot_width 80 --chain_size=4 --ownership_goal 0.2
python -m cyberbattle.agents.baseline.run --training_episode_count 5 --eval_episode_count 3 --iteration_count 100 --rewardplot_width 80 --chain_size=4 --reward_goal 50 --ownership_goal 0
إذا تم إعداد كل شيء بشكل صحيح، يجب أن تحصل على مخرجات تبدو هكذا: