
Malcom - محلل اتصالات البرمجيات الخبيثة
Malcom هي أداة مصممة لتحليل اتصالات الشبكة لنظام ما باستخدام تمثيلات بيانية لحركة مرور الشبكة، ومقارنتها بمصادر البرامج الضارة المعروفة. وهذا مفيد عند تحليل كيفية محاولة أنواع معينة من البرامج الضارة التواصل مع العالم الخارجي.
يمكن لـ Malcom مساعدتك في:
هدف Malcom هو تسريع تحليل البرامج الضارة وجمع المعلومات الاستخباراتية من خلال تقديم نسخة قابلة للقراءة البشرية من حركة مرور الشبكة الصادرة من مضيف معين أو شبكة معينة. تحويل معلومات حركة مرور الشبكة إلى معلومات استخباراتية قابلة للتنفيذ بشكل أسرع.
تفقد الويكي لدليل البدء السريع مع بعض لقطات الشاشة الجميلة ودرس تعليمي حول كيفية إضافة مغذياتك الخاصة.
إذا كنت بحاجة إلى مساعدة، أو تريد المساهمة، لا تتردد في الانضمام إلى القائمة البريدية أو حاول العثور على شخص ما على IRC (#malcom على freenode.net، إنه هادئ جدًا ولكن يوجد دائمًا شخص ما حولك). يمكنك أيضًا التواصل معي على تويتر @tomchop_
فيما يلي مثال على رسم بياني للمضيف tomchop.me

عرض مجموعة البيانات (مصفى لإظهار عناوين IP فقط)

mongodb و redis-server./malcom.py -c malcom.conf (أو راجع الخيارات مع ./malcom.py --help)
** للحصول على ملف تكوين مثال، يمكنك نسخ malcom.conf.example إلى malcom.conf
** المنفذ الافتراضي هو 8080
** بدلاً من ذلك، قم بتشغيل المغذيات من celery. راجع قسم المغذيات للحصول على تفاصيل حول كيفية القيام بذلك.Malcom مكتوب بلغة python. بشرط توفر المكتبات اللازمة، يجب أن تكون قادرًا على تشغيله على أي منصة. أوصي بشدة باستخدام البيئات الافتراضية python (virtualenv) حتى لا تفسد مكتبات النظام لديك.
تم اختبار ما يلي على Ubuntu server 14.04 LTS:
قم بتثبيت git و python و libevent libs و mongodb و redis وغيرها من التبعيات
$ sudo apt-get install build-essential git python-dev libevent-dev mongodb libxml2-dev libxslt-dev zlib1g-dev redis-server libffi-dev libssl-dev python-virtualenv
استنساخ مستودع Git:
$ git clone https://github.com/tomchop/malcom.git malcom
قم بإنشاء بيئتك الافتراضية وتفعيلها:
$ cd malcom
$ virtualenv env-malcom
$ source env-malcom/bin/activate
احصل على scapy وقم بتثبيته:
$ cd ..
$ wget http://www.secdev.org/projects/scapy/files/scapy-latest.tar.gz
$ tar xvzf scapy-latest.tar.gz
$ cd scapy-2.1.0
$ python setup.py install
لا تزال من البيئة الافتراضية الخاصة بك، قم بتثبيت حزم python اللازمة من ملف :
افتراضيًا، سيحاول Malcom الاتصال بمثيل mongodb محلي وإنشاء قاعدة البيانات الخاصة به، المسماة malcom. إذا كان هذا مناسبًا لك، يمكنك تخطي الخطوات التالية. خلاف ذلك، تحتاج إلى تحرير قسم database في ملف malcom.conf.
افتراضياً، سيستخدم Malcom قاعدة بيانات باسم malcom. يمكنك تغيير هذا السلوك عن طريق تحرير ملف malcom.conf وتعيين التوجيه name من قسم database كما تريد.
[database]
...
name = my_malcom_database
...
افتراضيًا، سيحاول Malcom الاتصال بـ localhost، ولكن قد تكون قاعدة البيانات الخاصة بك على خادم آخر. لتغيير ذلك، فقط قم بتعيين التوجيه hosts. يمكنك استخدام أسماء المضيفين أو عناوين IPv4/v6 (فقط تذكر وضع عناوين IPv6 الخاصة بك بين [ و ]، على سبيل المثال [::1]).
إذا كنت ترغب في استخدام قاعدة بيانات مستقلة على المضيف my.mongo.server، فقط قم بتعيين:
[database]
...
hosts = my.mongo.server
...
يمكنك أيضًا تحديد المنفذ الذي يستمع عليه mongod عن طريق تحديده بعد اسم/عنوان الخادم الخاص بك، مفصولاً بـ ::
[database]
...
hosts = localhost:27008
...
وإذا كنت تستخدم ReplicaSet يعيد تجميع my.mongo1.server و my.mongo2.server، فقط قم بتعيين:
[database]
...
hosts = my.mongo1.server,my.mongo2.server
...
ربما قمت بتكوين مثيلات mongod الخاصة بك لفرض اتصالات مصادق عليها. في هذه الحالة، عليك تعيين اسم المستخدم الذي سيتعين على السائق استخدامه للاتصال بمثيل mongod الخاص بك. للقيام بذلك، فقط أضف توجيه username إلى قسم database في ملف malcom.conf. قد تضطر أيضًا إلى تعيين كلمة المرور مع التوجيه password. إذا لم يكن لدى المستخدم كلمة مرور، فقط تجاهل (أي علق) التوجيه password.
[database]
...
username = my_user
password = change_me
...
إذا لم يكن المستخدم مرتبطًا بقاعدة بيانات malcom ولكن بقاعدة بيانات أخرى (على سبيل المثال قاعدة بيانات admin لمستخدم مسؤول)، ستحتاج إلى تعيين التوجيه authentication_database باسم تلك القاعدة.
[database]
...
authentication_database = some_other_database
...
عند استخدام مجموعة نسخ متماثلة، قد تحتاج إلى التأكد من أنك متصل بالمجموعة الصحيحة. لهذا، فقط أضف التوجيه replset لإجبار سائق mongo على التحقق من اسم مجموعة النسخ المتماثلة.
[database]
...
replset = my_mongo_replica
...
افتراضيًا، سيحاول Malcom الاتصال بالعقدة الأساسية لمجموعة النسخ المتماثلة. قد تحتاج/ترغب في تغيير ذلك. لتغيير هذا السلوك، فقط قم بتعيين التوجيه read_preference. راجع توثيق mongo لمزيد من المعلومات.
[database]
...
read_preference = NEAREST
...
تفضيلات القراءة المدعومة هي:
أسرع طريقة لبدء العمل هي سحب صورة Docker من مستودع Docker العام. لسحب إصدارات Docker الأقدم والأكثر استقرارًا، استخدم tomchop/malcom بدلاً من tomchop/malcom-automatic.
$ sudo docker pull tomchop/malcom-automatic
$ sudo docker run -p 8080:8080 -d --name malcom tomchop/malcom-automatic
الاتصال بـ http://<docker_host>:8080/ يجب أن يبدأ العمل.
يدعم Malcom الآن اعتراض TLS. لكي يعمل هذا، تحتاج إلى إنشاء بعض المفاتيح في دليل malcom/networking/tlsproxy/keys. راجع ملف KEYS.md هناك لمزيد من المعلومات حول كيفية القيام بذلك.
تأكد أيضًا من أن لديك IPtables (يجب أن يكون لديك بالفعل) وأذونات للقيام ببعض إعادة توجيه المنافذ باستخدامه (تحتاج عادةً إلى أن تكون جذرًا لذلك).
يمكنك القيام بذلك باستخدام السكريبت المناسب forward_port.sh. على سبيل المثال، لاعتراض جميع اتصالات TLS المتجهة إلى المنفذ 443، استخدم forward_port.sh 443 9999. ستحتاج بعد ذلك إلى إخبار malcom بتشغيل وكيل اعتراض على المنفذ 9999.
توقع أن تتم أتمتة هذه العملية في الإصدارات المستقبلية.
تم تصميم Malcom واختباره على جهاز افتراضي Ubuntu Server 14.04 LTS.
إذا كنت معتادًا على تحليل البرامج الضارة، فربما لديك بالفعل الكثير من الأجهزة الافتراضية التي تعمل على نظام تشغيل مضيف. فقط قم بتثبيت Malcom على جهاز افتراضي جديد، وقم بتوجيه اتصالات أجهزتك الافتراضية الأخرى عبر Malcom. استخدم enable_routing.sh لتفعيل التوجيه / NAT على الجهاز الظاهري الذي يعمل عليه Malcom. ستحتاج إلى إضافة بطاقة شبكة إضافية إلى نظام التشغيل الضيف.
طالما أنه يحصل على بيانات الشبكة من الطبقة 3، يمكن نشر Malcom في أي مكان. على الرغم من أنه لا يُنصح باستخدامه على شبكات ذات توفر عالٍ (لم يتم تصميمه ليكون سريعًا، راجع إخلاء المسؤولية)، يمكنك تشغيله في نهاية منفذ المرآة للمحول أو على بوابتك.
لتشغيل مثيل من Malcom يقوم فقط بجلب المعلومات من المغذيات، قم بتشغيل Malcom مع خيار --feeds أو قم بتعديل ملف التكوين.
يجب أن يتم ملء قاعدة البيانات الخاصة بك تلقائيًا. إذا كان بإمكانك التعمق في الكود، فإن إضافة المغذيات أمر بسيط إلى حد ما (بافتراض أنك تقوم بإنشاء كائنات Evil). يمكنك العثور على مثال لمغذي في /feeds/zeustracker. هناك درس تعليمي أكثر تفصيلاً متاح هنا.
يمكنك أيضًا استخدام celery لتشغيل المغذيات. تأكد من تثبيت celery عن طريق تشغيل $ pip install celery من البيئة الافتراضية الخاصة بك. يمكنك بعد ذلك استخدام celery worker -E --config=celeryconfig --loglevel=DEBUG --concurrency=12 لتشغيل عملية التغذية مع 12 عاملاً متزامنًا.
تمت كتابة Malcom في الغالب من الصفر، بلغة Python. يستخدم الأطر التالية للعمل:
التعاون - الاتجاه الرئيسي الذي أريد لهذه الأداة أن تتخذه هو أن تصبح تعاونية. لدي بعض الأفكار لذلك، وأعتقد أنها ستصبح أكثر فائدة بمئة مرة بمجرد تنفيذ مشاركة البيانات.
قابلية التوسع - الشيء الآخر الذي أريد تضمينه في الأداة هو القدرة على توسيعها بسهولة أكبر. ليست لدي نفس احتياجات أي شخص آخر، وقد تم تصميم هذه الأداة مع وضع احتياجاتي في الاعتبار. يمكنك الآن تخصيص Malcom عن طريق إضافة مغذيات جديدة.
بمجرد أن يصبح التعاون والتوسع جاهزين للعمل، أعتقد أن هذا سيكون مفيدًا لأكثر من مستجيب للحوادث هناك. :-)
تمت برمجة هذه الأداة خلال وقت فراغي. مثل عدد كبير من الأدوات التي نقوم بتنزيلها واستخدامها يوميًا، لا أوصي باستخدامها في بيئة إنتاج حيث تكون استقرار البيانات وموثوقيتها أمرًا لا بد منه.
إنها في مراحل مبكرة من التطوير، مما يعني "إنها تعمل بالنسبة لي". أنت حر في مشاركتها، تحسينها، طلب سحب التغييرات.
Malcom - محلل اتصالات البرامج الضارة حقوق النشر (C) 2013 Thomas Chopitea
هذا البرنامج هو برنامج مجاني: يمكنك إعادة توزيعه و/أو تعديله بموجب شروط رخصة GNU العامة العامة كما نشرتها مؤسسة البرمجيات الحرة، إما الإصدار 3 من الرخصة، أو (حسب اختيارك) أي إصدار لاحق.
يتم توزيع هذا البرنامج على أمل أن يكون مفيدًا، ولكن دون أي ضمان؛ حتى دون الضمان الضمني للتسويق أو الملاءمة لغرض معين. راجع رخصة GNU العامة العامة لمزيد من التفاصيل.
يجب أن تكون قد تلقيت نسخة من رخصة GNU العامة العامة مع هذا البرنامج. إذا لم يكن الأمر كذلك، فانظر http://www.gnu.org/licenses/.
يرجى ملاحظة أن Redis و MongoDB و d3js و Maximind و Bootstrap (وغيرها من مكتبات الطرف الثالث المضمنة في Malcom) قد يكون لها تراخيصها الخاصة المتوافقة مع GPL.
requirements.txt $ cd ../malcom
$ pip install -r requirements.txt
لكي يعمل تحديد الموقع الجغرافي IP، تحتاج إلى تنزيل قاعدة بيانات Maxmind واستخراج الملف إلى دليل malcom/Malcom/auxiliary/geoIP. يمكنك الحصول على قاعدة البيانات المجانية (وبالتالي أكثر أو أقل دقة) من Maxmind من الرابط التالي: http://dev.maxmind.com/geoip/geoip2/geolite2/:
$ cd Malcom/auxiliary/geoIP
$ wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz
$ gunzip -d GeoLite2-City.mmdb.gz
$ mv GeoLite2-City.mmdb GeoIP2-City.mmdb
قم بتشغيل خادم الويب من دليل malcom باستخدام ./malcom.py. تحقق من ./malcom.py --help لواجهة الاستماع والمنافذ.
malcom.conf.example إلى malcom.conf وتشغيل ./malcom.py -c malcom.conf