
أداة صغيرة للتعامل مع التجزئات المضمنة في البرامج الضارة.
أداة Uchihash هي أداة صغيرة يمكنها توفير وقت محللي البرامج الضارة عند التعامل مع قيم التجزئة المضمنة المستخدمة في أشياء مختلفة مثل:
$ git clone https://github.com/N1ght-W0lf/Uchihash.git
$ pip install -r requirements.txt
usage: uchihash.py [-h] [--algo ALGO] [--apis] [--keywords] [--list LIST] [--script SCRIPT] [--search SEARCH]
[--hashes HASHES] [--idaidc] [--idapython]
options:
-h, --help show this help message and exit
--algo ALGO Hashing algorithm
--apis Calculate hashes of APIs
--keywords Calculate hashes of keywords
--list LIST Calculate hashes of your own word list
--script SCRIPT Script file containing your custom hashing algorithm
--search SEARCH Search a JSON File containing hashes mapped to words
--hashes HASHES File containing list of hashes to search for
--idaidc Generate an IDC script to annotate hash values in IDA Pro
--idapython Generate an IDAPython script to annotate hash values in IDA Pro
--ghidra Generate a python script to annotate hash values in Ghidra
Examples:
* python uchihash.py --algo crc32 --apis
* python uchihash.py --algo murmur3 --list mywords.txt
* python uchihash.py --script myalgo.py --apis --idapython
* python uchihash.py --search hashmap.txt --hashes myhashes.txt
--algo: إحدى خوارزميات التجزئة المتاحة
--apis: تجزئة قائمة ضخمة من واجهات برمجة تطبيقات ويندوز (انظر data/apis_list.txt)
--keywords: تجزئة قائمة من الكلمات الرئيسية الشائعة التي تستخدمها عائلات البرامج الضارة مثل أدوات التحليل وآثار VM/مضاد الفيروسات/EDR (انظر data/keywords_list.txt)
--list : الكلمات مفصولة بسطر جديد (انظر examples/mywords.txt)
--script: يجب تسمية دالة التجزئة hashme وتأخذ وسيطة واحدة وهي سلسلة بايت تمثل القيمة التي نريد حساب التجزئة لها، ويجب أن تكون القيمة المعادة بتنسيق سداسي عشري (انظر examples/custom_algo.txt)
--search: يجب أن يكون الملف المراد البحث فيه بتنسيق JSON (انظر examples/searchme.txt)
--hashes: قيم التجزئة مفصولة بسطر جديد ويجب أن تكون بتنسيق سداسي عشري (انظر )
انظر مجلد الأمثلة لمزيد من التوضيح
لنأخذ مثالاً مع عائلة حقيقية من البرامج الضارة، في هذه الحالة لدينا BuerLoader الذي يستخدم قيم التجزئة لاستيراد واجهات برمجة التطبيقات ديناميكيًا ويستخدم خوارزمية تجزئة مخصصة.
أولاً، نحتاج إلى تنفيذ خوارزمية التجزئة في بايثون:
def ROR4(val, bits, bit_size=32):
return ((val & (2 ** bit_size - 1)) >> bits % bit_size) | \
(val << (bit_size - (bits % bit_size)) & (2 ** bit_size - 1))
def hashme(s):
res = 0
for c in s:
v3 = ROR4(res, 13)
v4 = c - 32
if c < 97:
v4 = c
res = v4 + v3
return hex(res)
ثم نحسب تجزئات جميع واجهات برمجة التطبيقات باستخدام الأمر التالي:
$ python uchihash.py --script custom_algo.py --apis --idapython
سيقوم هذا الأمر بإنشاء ملفين، الأول هو "output/search_hashmap.txt" الذي يقوم بتعيين قيم التجزئة إلى أسماء واجهات برمجة التطبيقات المقابلة كما يلي:
{
"0x8a8b468c": "LoadLibraryW",
"0x302ebe1c": "VirtualAlloc",
"0x1803b7e3": "VirtualProtect",
"0xe183277b": "VirtualFree",
"0x24e2968d": "GetComputerNameW",
"0xab489125": "GetNativeSystemInfo",
.......
}
الملف الثاني هو "output/idapython_script.py" الذي يمكنك تشغيله في IDA Pro وسيضيف البرنامج النصي تعليقات التجزئة إلى IDB الخاص بك كما هو موضح أدناه:
