
TrustZone-सक्षम ARMv8 कोर की सुरक्षित दुनिया (secure world) में सॉफ्टवेयर के विरुद्ध ट्रेस-संचालित कैश हमलों को करने और विज़ुअलाइज़ करने में सहायता के लिए डिज़ाइन किया गया एक उपकरण
Cachegrab एक उपकरण है जिसे TrustZone-सक्षम ARMv8 कोर की सुरक्षित दुनिया में सॉफ़्टवेयर के विरुद्ध ट्रेस-संचालित कैश हमलों को निष्पादित करने और देखने में मदद करने के लिए डिज़ाइन किया गया है। Cachegrab अंदर से कैसे काम करता है इसका अवलोकन देखने के लिए, Cachegrab रिलीज़ घोषणा देखें।
Android डिवाइस पर Cachegrab का उपयोग करना संभव है। चूँकि Android के आधुनिक संस्करण कर्नेल मॉड्यूल की अनुमति नहीं देते हैं, इसलिए CONFIG_MODULES और CONFIG_MODULE_UNLOAD कर्नेल विकल्प सक्षम किए जाने चाहिए, कर्नेल का पुनर्निर्माण किया जाना चाहिए, और डिवाइस पर फ्लैश किया जाना चाहिए। Cachegrab कर्नेल मॉड्यूल को कर्नेल स्रोत के विरुद्ध बनाएँ और इसे लक्षित डिवाइस के चल रहे कर्नेल में डालने के लिए insmod का उपयोग करें।
इसके बाद, Cachegrab सर्वर और शिम लाइब्रेरी बनाएँ और दोनों को /data/local/tmp पर कॉपी करें। सर्वर प्रारंभ करें। अंत में, स्थानीय TCP पोर्ट 8000 को डिवाइस के पोर्ट से बाँधने के लिए adb forward tcp:8000 tcp:8000 का उपयोग करें।
चेतावनी: सर्वर हमलावर को पीड़ित कोड को लागू करने के लिए मनमाने शेल कमांड निर्दिष्ट करने की अनुमति देता है। ये कमांड HTTP पर निर्दिष्ट किए जाते हैं और रूट विशेषाधिकारों के साथ चलते हैं, इसलिए यह महत्वपूर्ण है कि Cachegrab चलाने वाला परीक्षण डिवाइस किसी विश्वसनीय नेटवर्क पर हो।
अंत में, Cachegrab GUI लोड करें और localhost:8000 से कनेक्ट करें।
Cachegrab क्लाइंट एक पाइपलाइन के विचार के आसपास संरचित है, जो हमले के डेटा वाले नमूनों को संसाधित करता है। पाइपलाइनों में एक नमूना स्रोत, फ़िल्टर की एक सूची और एक विश्लेषक शामिल होता है। नमूना स्रोत फ़ाइल सिस्टम पर एक स्थान, Cachegrab सर्वर चलाने वाला डिवाइस, या कुछ कस्टम हो सकता है। पाइपलाइन स्रोत से नमूने एकत्र करती है और प्रत्येक को पाइपलाइन में फ़िल्टर के माध्यम से पारित करती है, जो नमूने में डेटा को संशोधित करने में सक्षम होते हैं। अंत में, फ़िल्टर किए गए नमूने विश्लेषक को पारित किए जाते हैं, जो हमले के डेटा का अंतिम प्रसंस्करण करता है।
क्लाइंट के अधिकांश भाग के साथ GUI का उपयोग करके बातचीत की जा सकती है, जो उपयोगी पाइपलाइनों की एक जोड़ी को प्रबंधित करने का एक सरल तरीका प्रदान करता है। पहली पाइपलाइन "Scope" पैनल में कॉन्फ़िगर किए गए Cachegrab सर्वर से नमूने एकत्र करती है। यह इन नमूनों को फ़िल्टर की एक श्रृंखला के माध्यम से पारित करती है और परिणामी फ़िल्टर किए गए नमूनों को डेटासेट में संग्रहीत करती है। डेटासेट को GUI का उपयोग करके आयात या निर्यात किया जा सकता है, जिससे नमूना डेटा का आसान स्थानांतरण संभव होता है। दूसरी पाइपलाइन डेटासेट से नमूने लेती है, नमूनों को फ़िल्टर की एक और श्रृंखला के माध्यम से चलाती है, और फ़िल्टर किए गए ट्रेस को विंडो पर प्लॉट करती है।

cachegrab क्लाइंट Python मॉड्यूल का उपयोग सीधे संग्रह या विश्लेषण स्क्रिप्ट बनाने के लिए भी किया जा सकता है। निम्नलिखित स्क्रिप्ट GUI द्वारा निर्यात किए गए डेटासेट को लेती है, प्रत्येक नमूने में ट्रेस पर कुछ प्रसंस्करण करती है, और परिणामी डेटा प्रिंट करती है।
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()