GoAround
أداة تتيح إنشاء تجاوزات AMSI والإخفاء التلقائي لسكريبتات PowerShell باستخدام ثلاث طرق مختلفة للإخفاء. GoAround مرخصة بموجب رخصة MIT. راجع ملف LICENSE لمزيد من المعلومات.
إخلاء المسؤولية
طُوّرت هذه الأداة لمساعدة مختبرِي الاختراق في مهام ما بعد الاستغلال اليومية، وكَمشروع بحثي. أي استخدام ضار لهذه الأداة أو استخدامها في أنظمة طرف ثالث دون الإذن المناسب يقع تحت المسؤولية الوحيدة للمستخدم.
التثبيت
تحتاج فقط إلى تنزيل الكود من GitHub وتشغيل الأداة من سطر أوامر ويندوز أو وحدة تحكم PowerShell.
دليل المستخدم
باستخدام GoAround يمكنك القيام بأمرين مختلفين:
- إنشاء سكريبتات PowerShell تحتوي على الكود اللازم لعمل تجاوز AMSI. يمكن إخفاء الكود المُنشأ تلقائياً.
- الإخفاء التلقائي لسكريبتات PowerShell باستخدام تقنيات مختلفة.
يمكن للمستخدم الاختيار بين نوعين مختلفين من تجاوز AMSI وثلاث تقنيات إخفاء مختلفة.
كيفية الاستخدام
لاستخدام هذه الأداة، يجب تثبيت Python على الجهاز. يجب إضافة المسارات التالية إلى متغير البيئة PATH:
- C:\Users{Usuario}\AppData\Local\Programs\Python\Python39
- C:\Users{Usuario}\AppData\Local\Programs\Python\Python39\Scripts
بمجرد القيام بذلك، يمكنك تشغيل الأداة من سطر الأوامر بأحد هاتين الطريقتين:
- من مجلد الأداة: python goaround.py {options}
- من أي مجلد آخر: python {المسار الكامل لمجلد GoAround} {options}
هيكل الأمر هو التالي:
python goaround.py -m [النمط] (-t [النوع]) (-f [نوع_الإخفاء]) (-i [ملف_الإدخال]) (-o [ملف_الإخراج])
حيث جميع الخيارات بين قوسين اختيارية. قيم هذه الخيارات هي:
- -m أو --mode: الخيار الإجباري الوحيد. يحدد نمط التشغيل الذي يجب أن تعمل به الأداة. اذهب إلى قسم أنماط التشغيل لمزيد من المعلومات.
- -t أو --type: يحدد نوع التجاوز الذي سيُستخدم عندما يكون النمط bypass، أو نوع طريقة الإخفاء عندما يكون النمط obfuscate. راجع قسم أنواع التجاوز لمعرفة أنواع التجاوز المختلفة، وقسم طرق الإخفاء لمعرفة طرق الإخفاء المتاحة.
- -f أو --obfuscation: عندما يكون نمط التشغيل bypass، يُستخدم هذا الخيار لاختيار نوع الإخفاء للتجاوز. هذا الخيار غير متاح في نمط obfuscate، استخدم "-t" أو "--type" بدلاً من ذلك. لمعرفة طرق الإخفاء المختلفة، يرجى قراءة قسم طرق الإخفاء.
- -i أو --input: يُستخدم فقط في نمط obfuscate. يسمح للمستخدم بتحديد الملف المراد إخفاؤه.
- -o أو --output: يسمح هذا الخيار للمستخدم بتحديد اسم السكريبت المُنشأ. يجب أن ينتهي الاسم بـ ".ps1". بشكل افتراضي، سيكون اسم ملف الإخراج "output.ps1".
علاوة على ذلك، تدعم الأداة الخيارات التالية ويجب تشغيلها بمفردها (بدون أي خيار آخر):
- -h أو --help: يعرض دليل استخدام الأداة للمستخدم.
- -v أو --version: يعرض رقم إصدار الأداة.
أنماط التشغيل
يوجد نمطان للتشغيل، bypass و obfuscate، ويتم اختيارهما باستخدام الخيار "-m" أو "--mode":
- bypass: للإشارة إلى أن الأداة يجب أن تعمل في وضع التجاوز. في هذه الحالة، سيتم إنشاء ملف PS1 يحتوي على كود تجاوز AMSI.
- obfuscate: للإشارة إلى أن الأداة يجب أن تعمل في وضع الإخفاء. في هذه الحالة، ستقوم الأداة بإخفاء الملف الذي يوفره المستخدم باستخدام الخيار "-i" أو "--input" (إجباري في نمط التشغيل هذا). سيتم إنشاء ملف PS1 يحتوي على الكود المخفي. الإخفاء يعمل فقط على سكريبتات PowerShell.
أنواع التجاوز
في نمط bypass (-m bypass)، يمكن تحديد نوع التجاوز باستخدام الخيار "-t" أو "--type".
حالياً، هذه هي أنواع التجاوز المدعومة:
- reflection: تجاوز الانعكاس لمات غريبر (Matt Graeber).
- scan_buffer_laine: تجاوز تصحيح AmsiScanBuffer لبول لاينيه (Paul Laîné).
إذا لم يتم تحديد نوع، فسيُستخدم تجاوز الانعكاس افتراضياً.
طرق الإخفاء
حالياً، تدعم الأداة ثلاث تقنيات إخفاء مختلفة لـ PowerShell.
لتحديد نوع الإخفاء في نمط bypass، يُستخدم الخيار "-f" أو "--obfuscation" (إذا لم يُحدد، فلن يتم إخفاء التجاوز). لتحديد نوع الإخفاء في نمط obfuscate، يُستخدم الخيار "-t" أو "--type" (إذا لم يُحدد، فسيتم استخدام تقنية التسلسل).
أسماء أنواع الإخفاء هي:
- mayus: ستغير كود PowerShell باستخدام تقنية الأحرف العشوائية (randomcase). لن يؤثر ذلك على السلاسل النصية الموجودة في الكود. هذه الطريقة ستغير تجزئة الملف.
- concatenation: الطريقة المستخدمة افتراضياً في نمط obfuscate. ستغير السلاسل النصية الموجودة في الكود إلى تسلسلات من سلاسل أقصر. سيتم تقسيم السلاسل بشكل عشوائي، لذلك في كل مرة سيكون الكود مختلفاً لنفس ملف الإدخال.
- insertion: ستغير السلاسل النصية الموجودة في الكود إلى توليفات من سلسلة ومتغير. على سبيل المثال، إذا كان الكود يحتوي على السلسلة "amsiutils"، فقد يتم استبدالها بـ "am$var_tfm0"، حيث var_tfm0 = "siutils". يتم تقسيم السلاسل بشكل عشوائي، لذلك في كل مرة سيكون الكود مختلفاً لنفس ملف الإدخال. سيكون للمتغيرات اسم بالصيغة "var_tfm{رقم}"، لذلك إذا كان الكود الأصلي يحتوي على متغيرات بهذه الأسماء، فيجب تغييرها قبل مرحلة الإخفاء.
أمثلة
فيما يلي بعض الأمثلة على الاستخدام:
عرض قائمة المساعدة
python main.py -h
python main.py --help
عرض رقم إصدار الأداة
python main.py -v
python main.py --version
إنشاء تجاوز انعكاسي مخفي باستخدام إدراج المتغيرات
python main.py -m bypass -t reflection -f insertion
إنشاء تجاوز بول لاينيه مع تغيير اسم ملف الإخراج
python main.py -m bypass -t scan_buffer_laine -o "output_name.ps1"
إخفاء ملف باستخدام طريقة تسلسل السلاسل
python main.py -m obfuscate -t concatenation -i "input_required.ps1"