
يبني مجموعات تجزئة ملفات جنائية من صور الأقراص والحزم والأرشيفات عبر GCP وAWS والمصادر المحلية، مع إزالة التكرار والتصدير إلى PostgreSQL/Spanner لسير عمل DFIR.
يتيح لك HashR بناء مجموعات الهاش الخاصة بك استنادًا إلى مصادر بياناتك. إنها أداة تستخرج الملفات وقيم الهاش من مصادر الإدخال (مثل صورة قرص خام، صورة قرص GCE، ملف ISO، حزمة تحديث ويندوز، ملف .tar.gz، إلخ).
يتكون HashR من المكوّنات التالية:
المستوردون المُنفَّذون حاليًا:
بمجرد استخراج الملفات وتجزئتها، تُمرَّر النتائج إلى المُصدِّرين، والمُصدِّرون المُنفَّذون حاليًا هم:
يمكنك اختيار المستوردين الذين تريد تشغيلهم، ولكلٍّ منهم متطلبات مختلفة. يمكن العثور على مزيد من التفاصيل في الأقسام أدناه.
يتطلب HashR نظام تشغيل Linux ليعمل، ويمكن أن يكون جهازًا فعليًا أو افتراضيًا أو سحابيًا. فيما يلي متطلبات الأجهزة المثلى:
من المرجح أن يعمل HashR على أجهزة بمواصفات أقل، ولكن هذا لم يُختبر بدقة.
لبناء ثنائي hashr، نفّذ الأمر التالي:``` shell env GOOS=linux GOARCH=amd64 go build hashr.go
لتشغيل الاختبارات للحزمة الأساسية hashR، تحتاج إلى تشغيل محاكي Spanner:``` shell
gcloud emulators spanner start
ثم لتشغيل جميع الاختبارات، نفّذ الأمر التالي:``` shell go test -timeout 2m ./...
## إعداد HashR
### HashR في OSDFIR Infrastructure
يمكنك نشر HashR كجزء من [مشروع OSDFIR Infrastructure](https://github.com/google/osdfir-infrastructure/tree/main/charts/hashr)
سيُشغّل هذا النشر HashR كوظائف cronjobs في Kubernetes ويتيح تكاملًا سهلاً
مع Timesketch.
### HashR باستخدام docker
لتشغيل HashR في حاوية docker، اطلع على [الدليل المخصص لـ docker](https://github.com/google/hashr/blob/main/docker/README.md)
### إعداد نظام التشغيل والأدوات المطلوبة من طرف ثالث
يتولى HashR المهام الشاقة (تحليل صور الأقراص، وحدات التخزين، أنظمة الملفات) باستخدام Plaso. تحتاج إلى سحب حاوية Docker الخاصة بـ Plaso باستخدام الأمر التالي:``` shell
docker pull log2timeline/plaso
نحتاج أيضًا إلى تثبيت 7z، الذي يستخدمه مستورد WSUS للاستخراج التكراري لحزم تحديثات Windows، على الجهاز الذي يعمل عليه HashR:``` shell sudo apt install p7zip-full
تحتاج إلى السماح للمستخدم، الذي سيتم تشغيل HashR بموجبه، بتشغيل أوامر معينة عبر sudo. بافتراض أن المستخدم الخاص بك هو `hashr`، أنشئ ملف `/etc/sudoers.d/hashr` وضع فيه:``` shell
hashr ALL = (root) NOPASSWD: /bin/mount,/bin/umount,/sbin/losetup,/bin/rm
المستخدم الذي سيعمل تحته HashR سيحتاج أيضًا إلى القدرة على تشغيل docker. بافتراض أن المستخدم الخاص بك هو hashr، أضفه إلى مجموعة docker كما يلي:``` shell
sudo usermod -aG docker hashr
### إعداد التخزين لمهام المعالجة
يحتاج HashR إلى تخزين معلومات حول المصادر المعالجة. كما يخزن بيانات قياس إضافية حول مهام المعالجة: أوقات المعالجة، عدد الملفات المستخرجة، وما إلى ذلك. يمكنك الاختيار بين استخدام:
1. PostgreSQL
1. Cloud (GCP) Spanner
#### إعداد تخزين PostgreSQL
هناك طرق عديدة يمكنك من خلالها تشغيل وصيانة مثيل PostgreSQL لديك، ومن أبسط هذه الطرق تشغيله في حاوية Docker. اتبع الخطوات أدناه لإعداد حاوية Docker لـ PostgreSQL.
الخطوة 1: اسحب صورة Docker الخاصة بـ PostgreSQL.``` shell
docker pull postgres
الخطوة 2: قم بتهيئة وتشغيل حاوية PostgreSQL في الخلفية. تأكد من تعديل كلمة المرور.``` shell docker run -itd -e POSTGRES_DB=hashr -e POSTGRES_USER=hashr -e POSTGRES_PASSWORD=hashr -p 5432:5432 -v /data:/var/lib/postgresql/data --name hashr_postgresql postgres
الخطوة 3: إنشاء جدول سيُستخدم لتخزين مهام المعالجة.``` shell
cat scripts/CreateJobsTable.sql | docker exec -i hashr_postgresql psql -U hashr -d hashr
لاستخدام PostgreSQL لتخزين معلومات حول مهام المعالجة، تحتاج إلى تحديد العلامات التالية: -storage postgres -postgres_host <host> -postgres_port <port> -postgres_user <user> -postgres_password <pass> -postgres_db <db_name>
يمكنك اختيار تخزين البيانات حول مهام المعالجة في Cloud Spanner. ستحتاج إلى مشروع Google Cloud لذلك. الميزة الرئيسية لهذا الإعداد هي أنه يمكنك بسهولة إنشاء لوحات معلومات باستخدام Google Data Studio والاتصال مباشرة بمثيل Cloud Spanner مما يتيح المراقبة وتصحيح الأخطاء دون تشغيل استعلامات ضد مثيل PostgreSQL الخاص بك.
بافتراض أن أداة gcloud لديك مُهيأة مع مشروع GCP الخاص بـ HashR المستهدف، ستحتاج إلى اتباع الخطوات أدناه لتفعيل Cloud Spanner.
إنشاء حساب خدمة HashR:``` shell gcloud iam service-accounts create hashr --description="HashR SA key." --display-name="hashr"
أنشئ مفتاح حساب الخدمة واحفظه في دليلك الرئيسي. عيّن *<project_name>* ليكون اسم مشروعك.``` shell
gcloud iam service-accounts keys create ~/hashr-sa-private-key.json --iam-account=hashr-sa@<project_name>.iam.gserviceaccount.com
وجّه متغير البيئة GOOGLE_APPLICATION_CREDENTIALS إلى مفتاح حساب الخدمة الخاص بك:``` shell export GOOGLE_APPLICATION_CREDENTIALS=/home/hashr/hashr-sa-private-key.json
أنشئ مثيل Spanner، واضبط الإعدادات وقيمة processing-units إذا لزم الأمر:``` shell
gcloud spanner instances create hashr --config=regional-us-central1 --description="hashr" --processing-units=100
إنشاء قاعدة بيانات Spanner:``` shell gcloud spanner databases create hashr --instance=hashr
اسمح لحساب الخدمة باستخدام قاعدة بيانات Spanner، وعيّن *<project_name>* إلى اسم مشروعك:``` shell
gcloud spanner databases add-iam-policy-binding hashr --instance hashr --member="serviceAccount:hashr-sa@<project_name>.iam.gserviceaccount.com" --role="roles/spanner.databaseUser"
تحديث مخطط قاعدة بيانات Spanner:``` shell gcloud spanner databases ddl update hashr --instance=hashr --ddl-file=scripts/CreateJobsTable.ddl
من أجل استخدام Cloud Spanner لتخزين معلومات حول مهام المعالجة، تحتاج إلى تحديد العلامات التالية: `-jobStorage cloudspanner -spannerDBPath <spanner_db_path>`