Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
python-haystack — إطار تحليل كومة العمليات - Windows/Linux - استنتاج نوع السجل والأدلة الجنائية | Kitploit
أدوات/GitHubGitHub/trolldbois/python-haystack
تحليل الذاكرة الجنائيالهندسة العكسيةالتحقيق الجنائي الرقميالتحاليل الرقمية الجنائيةتحليل الملفات الثنائية
GitHubtrolldbois/python-haystack

python-haystack

إطار تحليل كومة العمليات - Windows/Linux - استنتاج نوع السجل والأدلة الجنائية

عرض المستودع
9533منذ 9 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
الموقع الإلكتروني

python-haystack تحليل الذاكرة

################################

|travis| |coverage| |landscape| |pypi| |docs|

بداية سريعة:

دليل الاستخدام السريع <docs/Haystack_basic_usage.ipynb>_ في مجلد docs/. واجهة سطر الأوامر Haystack-reverse <docs/Haystack_reverse_CLI.ipynb>_ في مجلد docs/. المزيد من التوثيق <http://python-haystack.readthedocs.io/en/latest/>_

مقدمة:

python-haystack هو إطار عمل لتحليل الكومة (heap)، يركز على البحث والهندسة العكسية لبنى C في الذاكرة المخصصة. الوظيفة/API الأولى هي وظيفة SEARCH. تعطي القدرة على البحث عن أنواع سجلات معروفة في تفريغ ذاكرة عملية أو ذاكرة عملية حية. الوظيفة/API الثانية هي وظيفة REVERSE في الإضافة python-haystack-reverse <https://github.com/trolldbois/python-haystack-reverse>_ تهدف إلى مساعدة المحلل في الهندسة العكسية لأنواع سجلات الذاكرة الموجودة في كومة العملية. تركز على إعادة البناء وتصنيف بنى C الكلاسيكية من الذاكرة. تحاول إعادة تعريف الأنواع.

البرامج النصية وتنسيق معالج الذاكرة:

توجد عدة نقاط دخول للتعامل مع تنسيق تفريغ الذاكرة.

مجلد تفريغ الذاكرة الناتج عن haystack-live-dump

  • haystack-find-heap يسمح بعرض تفاصيل HEAP في Windows.
  • haystack-search واجهة سطر أوامر للبحث
  • haystack-show واجهة سطر أوامر لعرض نوع سجل معين في عنوان معين

يمكنك استخدام عنوان URL التالي لتعيين معالج/تفريغ الذاكرة الخاص بك:

  • dir:///path/to/my/haystack/fump/folder لاستخدام تنسيق تفريغ haystack
  • dmp:///path/to/my/minidump/file لاستخدام تنسيق minidump (مايكروسوفت؟)
  • frida://name_or_pid_of_process_to_attach_to لاستخدام frida للوصول إلى ذاكرة عملية حية
  • live://name_or_pid_of_process_to_attach_to ptrace على عملية حية
  • rekall:// تحميل صورة rekall
  • volatility:// تحميل صورة volatility
  • cuckoo:// تحميل تفريغ ذاكرة من إنتاج Cuckoo (تجريبي، قد يحتاج إلى تصحيح)

كيفية الحصول على تفريغ ذاكرة:

في Windows، الطريقة الأكثر وضوحًا هي الحصول على Minidump. توفر مجموعة أدوات Microsoft Sysinternals إما واجهة سطر أوامر (procdump.exe) أو واجهة رسومية (Process Explorer). باستخدام إحدى هذه الأدوات (مع خيار تفريغ الذاكرة الكامل) ستحصل على ملف يمكن استخدامه مع قائمة نقاط الدخول haystack-minidump-xxx.

بينما يمكنك تقنيًا استخدام العديد من أدوات الطرف الثالث، إلا أن haystack يحتاج بالفعل إلى معلومات تخطيط الذاكرة ليعمل. لذلك توجد أداة تفريغ مضمنة haystack-live-dump:

.. code-block:: bash

root@kitploit:~
# haystack-live-dump <pid> myproc.dump

للعمليات الحية

  • haystack-live-dump يلتقط تفريغ ذاكرة عملية إلى مجلد (تنسيق haystack)

لتفريغ ذاكرة Rekall

  • haystack-rekall-dump يفريغ عملية محددة إلى تفريغ عملية بتنسيق haystack

لتفريغ ذاكرة Volatility

  • haystack-volatility-dump يفريغ عملية محددة إلى تفريغ عملية بتنسيق haystack

يمكنك بسهولة إعادة إنتاج تنسيق التفريغ، وهو عبارة عن مجلد/أرشيف يحتوي على كل خريطة ذاكرة في ملف منفصل:

  • محتوى الذاكرة في ملف مسمى بعناوين بدايته/نهايته (0x000700000-0x000800000)
  • ملف 'mappings' يحتوي على بيانات تعريفية لخرائط الذاكرة (mappings)

أو يمكنك برمجة تطبيق لـ haystack.abc.IMemoryMapping للتنسيق المفضل لديك.

بخلاف ذلك، إذا كان لديك بالفعل تفريغ ذاكرة نظام من Volatility أو Rekall، يمكنك استخدام عائلات نقاط الدخول haystack-rekall-xxx أو haystack-volatility-xxx لاستخراج ذاكرة عملية محددة إلى ملف.

التحقق من سمات كومة Windows:

تسمح نقطة الدخول haystack-find-heap بعرض تفاصيل HEAP في Windows. يجب أن تدعم:

  • ويندوز XP 32 بت
  • ويندوز XP 64 بت
  • ويندوز 7 32 بت
  • ويندوز 7 64 بت

وعرض تفاصيل الواجهة الأمامية لقائمة Look Aside (LAL) وكومة التجزئة المنخفضة (LFH).

قد تفاجأ أحيانًا بأن عملية واحدة يمكنها خلط نوعي HEAP (32 و 64).

البحث عن بنى معروفة:

للبحث عن سجل معين، ستحتاج أولاً إلى تعريف هذا النوع من السجلات. يوجد [دليل استخدام سريع](docs/Haystack basic usage.ipynb) يشرح الخطوات الأساسية للانتقال من ملف رأس C إلى تعريف ctypes في Python. أو يمكنك القيام بذلك بنفسك باستخدام سجلات ctypes التقليدية في Python.

واجهة برمجة التطبيقات (API) للبحث متاحة من خلال عائلة البرامج النصية haystack-xxx-search وأيضًا كـ API بحيث يمكن تضمين هذا البحث في الكود الخاص بك.

باختصار، سيقوم بحث haystack بالمرور عبر كل إزاحة في ذاكرة البرنامج لمحاولة العثور على إزاحة 'صالحة' لذلك النوع المحدد من السجلات.

يتم تحديد صلاحية السجل من خلال قيود النوع مثل:

  • يجب أن يحتوي حقل المؤشر على قيم مساحة عنوان صالحة
  • قيود النوع المعرفة من قبل المستخدم (انظر قسم 'ملف القيود' أدناه)
  • إلخ..

.. code-block:: bash

$ python haystack/cli.py dir:///home/user/project/python-haystack/test/src/test-ctypes6.32.dump ctypes6_gen32.struct_usual

ملف القيود:

القيود التالية مدعومة:

  • IgnoreMember: سيتم تجاهل قيمة هذا الحقل. مفيد لتجاهل حقول المؤشر.
  • NotNull: يجب ألا تكون قيمة هذا الحقل 0.
  • RangeValue(x,y): يجب أن يكون للحقل قيمة بين x و y.
  • PerfectMatch('hello world'): يجب أن يطابق الحقل (سلسلة نصية) 'hello world'
  • [1,2,3]: قائمة بالقيم التي يجب أن يحتويها الحقل
  • [1, RangeValue(12,16), 42]: يجب أن تكون قيمة الحقل 1 أو 12-16 أو 42.

مثال:

.. code-block:: python

root@kitploit:~
[struct_name]
myfield: [1,0xff]
ptr_field: NotNull

يمكنك إلقاء نظرة على haystack/allocators/win32/winxpheap32.constraints، حيث تم تعريف قيود HEAP x32 لويندوز XP.

من الواضح أنه كلما زادت القيود، كانت النتائج أفضل.

تعريف القيود الديناميكية:

يمكنك أيضًا إنشاء قيود أكثر تعقيدًا باستخدام كود Python من خلال تنفيذ فئة haystack.abc.interface.IRecordTypeDynamicConstraintsValidator وتغذيتها إلى ModuleConstraints.set_dynamic_constraints

مثال لسطر الأوامر:

مستودع sslsnoop يحتاج إلى تحديث ليكون متوافقًا مع الإصدارات > v0.30 - قيد الانتظار

على سبيل المثال، سيقوم هذا بتفريغ هياكل session_state بالإضافة إلى هياكل الأطفال المشار إليها ككائن Python يمكننا التعامل معه. لنفترض أن لدينا عميل أو خادم ssh بالمعرف 4042:

.. code-block:: bash

root@kitploit:~
$ sudo haystack-live-search --pickled 4042 sslsnoop.ctypes_openssh.session_state search > instance.pickled
$ sudo haystack-live-search --pickled 4042 sslsnoop.ctypes_openssh.session_state refresh 0xb8b70d18 > instance.pickled
$ sudo haystack-live-search --pickled <pid> <your ctypes Structure> search

واجهة المستخدم الرسومية:

هذا لا يعمل الآن

هناك أيضًا محاولة لواجهة رسومية python-haystack-gui <https://github.com/trolldbois/python-haystack-gui>_

مثال على API بلغة Python:

انظر دليل الاستخدام السريع <docs/Haystack_basic_usage.ipynb>_

كيفية تعريف بنى خاصة بك:

الطريقة الأسهل هي استخدام ctypeslib لإنشاء سجلات ctypes من رؤوس C. أو قم بتعريف سجل ctypes في Python يدويًا.

أمثلة على الإضافات:

@ انظر sslsnoop في مستودع Pypi. تم إنشاء هياكل openssl و nss. @ انظر ctypes-kernel على github الخاص بي. يتم إنشاء هياكل نواة Linux من شجرة نواة مبنية. (VMM أمر صعب)

أسئلة شائعة ليست شائعة جداً:

ماذا يفعل؟:

الوظيفة الأساسية هي البحث في ذاكرة عملية عن سجل C محدد. الوظيفة الممتدة للهندسة العكسية تهدف إلى عكس هياكل من تحليل الذاكرة/الكومة.

كيف يعرف أن البنى صالحة؟:

تضيف بعض القيود على القيم المتوقعة لحقول السجل. دائمًا ما تكون المؤشرات مقيدة بمساحة ذاكرة صالحة.

من أين أتت الفكرة؟:

في الأصل من passe-partout <http://www.hsc.fr/ressources/breves/passe-partout.html.fr>. منذ أن بدأت في مارس 2011، اكتشفت العديد من الأعمال السابقة الأخرى ذات الصلة. معظمها موجود في مجلد docs/. أعمال أخرى ذات صلة هي mona.py من Immunity، وبعض أشياء Mandiant الأخرى... باختصار، هذه ليست فكرة أصلية على الأرجح. لكنني لم أجد مكتبة مستقلة عاملة لاستخراج الذاكرة الحية من أجل sslsnoop PoC الخاص بي، لذا... الأعمال ذات الصلة <https://github.com/trolldbois/python-haystack/wiki/State-of-art-reference>

ما هي التبعيات؟:

  • python-ptrace على لينكس
  • winappdbg على win32 (غير متأكد من العمل، ترحيب بالتعليقات)
  • python-numpy
  • python-networkx
  • python-levenshtein
  • العديد من الآخرين...

أخرى

http://ntinfo.biz/ xntsv32

.. |pypi| image:: https://img.shields.io/pypi/v/haystack.svg?style=flat-square&label=latest%20stable%20version :target: https://pypi.python.org/pypi/haystack :alt: Latest version released on PyPi

.. |coverage| image:: https://img.shields.io/coveralls/trolldbois/python-haystack/master.svg?style=flat-square&label=coverage :target: https://coveralls.io/github/trolldbois/python-haystack?branch=master :alt: Test coverage

.. |travis| image:: https://img.shields.io/travis/trolldbois/python-haystack/master.svg?style=flat-square&label=travis-ci :target: http://travis-ci.org/trolldbois/python-haystack :alt: Build status of the master branch on Mac/Linux

.. |landscape| image:: https://landscape.io/github/trolldbois/python-haystack/master/landscape.svg?style=flat :target: https://landscape.io/github/trolldbois/python-haystack/master :alt: Code Health

.. |docs| image:: https://readthedocs.org/projects/python-haystack/badge/?version=latest :target: https://readthedocs.org/projects/python-haystack/badge/?version=latest :alt: Documentation status

تنزيل الأداة