
أداة مصممة للمساعدة في تنفيذ وتصوّر هجمات ذاكرة التخزين المؤقت القائمة على التتبعات (trace-driven) ضد البرمجيات في العالم الآمن لأنوية ARMv8 المفعّلة بتقنية TrustZone.
Cachegrab هي أداة مصممة للمساعدة في تنفيذ وتصوير الهجمات على ذاكرة التخزين المؤقت (cache) القائمة على تتبّع الأثر ضد البرمجيات في العالم الآمن لأنوية ARMv8 المفعّلة بتقنية TrustZone. للحصول على نظرة عامة حول كيفية عمل Cachegrab داخليًا، انظر إعلان إصدار Cachegrab.
من الممكن استخدام Cachegrab على جهاز أندرويد. نظرًا لأن الإصدارات الحديثة من أندرويد تمنع وحدات النواة (kernel modules)، يجب تمكين خياري النواة CONFIG_MODULES وCONFIG_MODULE_UNLOAD، وإعادة بناء النواة، ووميضها إلى الجهاز. قم ببناء وحدة نواة Cachegrab من مصدر النواة واستخدم insmod لإدراجها في النواة العاملة على الجهاز الهدف.
بعد ذلك، قم ببناء خادم Cachegrab ومكتبة التضمين (shim library) وانسخهما إلى /data/local/tmp. ابدأ الخادم. أخيرًا، استخدم adb forward tcp:8000 tcp:8000 لربط منفذ TCP المحلي 8000 بمنفذ الجهاز.
تحذير: يتيح الخادم للمهاجم تحديد أوامر شل (shell) عشوائية لاستدعاء كود الضحية. تُحدَّد هذه الأوامر عبر HTTP وتُعمل بصلاحيات الجذر (root)، لذلك من الضروري أن يكون جهاز الاختبار الذي يشغّل Cachegrab على شبكة موثوقة.
أخيرًا، حمّل واجهة Cachegrab الرسومية واتصل بـ localhost:8000.
يتمحور بناء عميل Cachegrab حول فكرة خط أنابيب (pipeline) يعالج العينات التي تحتوي على بيانات الهجوم. تتكون خطوط الأنابيب من مصدر عينات، وقائمة من المرشحات (filters)، ومحلّل (analyzer). يمكن أن يكون مصدر العينات موقعًا على نظام الملفات، أو جهازًا يشغّل خادم Cachegrab، أو شيئًا مخصصًا. يجمع خط الأنابيب العينات من المصدر ويمرر كل عينة عبر المرشحات الموجودة في الخط، والتي يمكنها تعديل البيانات في العينة. أخيرًا، تُمرَّر العينات المفلترة إلى المحلّل، الذي يقوم بالمعالجة النهائية لبيانات الهجوم.
يمكن التعامل مع معظم أجزاء العميل باستخدام الواجهة الرسومية، التي توفر طريقة بسيطة لإدارة زوج من خطوط الأنابيب المفيدة. يجمع خط الأنابيب الأول العينات من خادم Cachegrab المُعدّ في لوحة "Scope". يمرر هذه العينات عبر سلسلة من المرشحات ويخزّن العينات المفلترة الناتجة في مجموعة بيانات (dataset). يمكن استيراد مجموعات البيانات أو تصديرها باستخدام الواجهة الرسومية، مما يسمح بنقل بيانات العينات بسهولة. يأخذ خط الأنابيب الثاني عينات من مجموعة بيانات، ويمررها عبر سلسلة أخرى من المرشحات، ويرسم الآثار المفلترة في النافذة.

يمكن أيضًا استخدام وحدة Python الخاصة بعميل cachegrab مباشرةً لإنشاء سكربت جمع أو تحليل. يأخذ السكربت التالي مجموعة بيانات تم تصديرها بواسطة الواجهة الرسومية، ويقوم ببعض المعالجة على الآثار (traces) في كل عينة، ويطبع البيانات الناتجة.
from cachegrab import Pipeline
from cachegrab.data import Dataset, Trace
from cachegrab.sources import DatasetSource
from cachegrab.filters import Filter
from cachegrab.sinks import AnalysisSink
class SampleFilter(Filter):
def filter(self, sample):
for t in sample.get_trace_names():
data = sample.get_trace(t).data
sample.set_trace(t, Trace(data - data.mean()))
return sample
class SampleAnalysis(AnalysisSink):
def analyze_once(self, sample):
for t in sample.get_trace_names():
print sample.get_trace(t).data
dataset = Dataset().load("exported_dataset_location")
pipeline = Pipeline(DatasetSource(dataset), SampleAnalysis())
pipeline.add_filter(SampleFilter())
pipeline.run()