
मेमोरी डंप से X स्क्रीनशॉट निकालने के लिए Volatility प्लगइन
इस वोलैटिलिटी प्लगइन का उद्देश्य मेमोरी डंप से सभी खुली X विंडो का स्क्रीनशॉट निकालना है।
Adam Bridge (https://github.com/bridgeythegeek/linux_xwindows) द्वारा निर्मित वोलैटिलिटी प्लगइन linux_xwindows X सर्वर के डेटा संरचनाओं को ट्रैवर्स करके X पर पंजीकृत विंडो ऑब्जेक्ट्स से विभिन्न मेटाडेटा निकालता है। उदाहरण के लिए, प्रत्येक विंडो के लिए यह विंडो निर्देशांक, चौड़ाई और ऊँचाई आयाम, और विंडो पहचानकर्ता सूचीबद्ध करता है। Adam का README इन विवरणों पर अच्छी चर्चा करता है, इसलिए यदि आपकी रुचि है तो हम उन्हें पढ़ने का सुझाव देते हैं!
संदर्भ के लिए, यहाँ X की मुख्य संरचनाओं और उनके परस्पर निर्भरताओं को दर्शाने वाली एक आकृति है:

इन स्क्रीनशॉट को निकालने के लिए हम X सर्वर कोड के भाग का पुन: उपयोग करते हैं।
प्लगइन पहले X सर्वर मेमोरी मैपिंग को डंप करता है। फिर इन मैपिंग्स को Adam के प्लगइन के आउटपुट के साथ एक C प्रोग्राम (loader) को इनपुट के रूप में दिया जाता है। यह C प्रोग्राम Xorg की मेमोरी मैपिंग को mmap (MAP_FIXED फ्लैग के साथ) करके अपने स्वयं के एड्रेस स्पेस में डालता है। इस तरह हम Xorg के एड्रेस स्पेस को पुन: निर्मित करते हैं, यह सुनिश्चित करते हुए कि कोड और डेटा के बीच कोई संदर्भ टूटा नहीं है। लोडर फिर Xorg कोड में मौजूद एक फ़ंक्शन (compGetImage) को कॉल करता है और परिणाम को फ़ाइल में सहेजता है। हमने इस "जादुई" फ़ंक्शन को यह देखकर पहचाना कि सामान्य उपयोग के दौरान X स्क्रीनशॉट के लिए अनुरोध कैसे संभालता है। शुक्र है, यह फ़ंक्शन हमेशा सटीक रूप से पाया जा सकता है क्योंकि struct _Screen में इसका एक पॉइंटर होता है।
इस दृष्टिकोण की एक और अच्छी विशेषता यह है कि यह स्क्रीनशॉट को तब भी प्राप्त करने में सक्षम है, जब डंपिंग के समय स्क्रीन लॉक हो, और यहां तक कि अन्य विंडो के पीछे छिपी विंडो का भी स्क्रीनशॉट ले सकता है!
इस रिपॉजिटरी को क्लोन करने के बाद, लोडर को कंपाइल करें:
gcc -Wall -o loader loader.c
प्लगइन का उपयोग करने के लिए:
vol.py --plugins=$PWD/plugins/ --profile=XXX -f ./vbox.dmp linux_screenshot_xwindows --out-dir /tmp/xwds/
परिणामों को xwd से png में बदलने के लिए:
find /tmp/xwds/ -type f -name "*.xwd" -exec convert {} {}.png \;
हमने निम्नलिखित सेटअपों से सफलतापूर्वक स्क्रीनशॉट प्राप्त किए:
Ubuntu 14.04 LTS - X.Org X Server 1.15.1 (Release Date: 2014-04-13)
Ubuntu 16.04 LTS - X.Org X Server 1.18.4 (Release Date: 2016-07-19)
Debian 9 Testing - X.Org X Server 1.19.6 (Release Date: 2017-12-20)
Kubuntu 18.04 LTS - X.Org X Server 1.19.6 (Release Date: 2017-12-20)
कुछ यादृच्छिक लेकिन महत्वपूर्ण नोट्स:
प्रक्रिया को केवल "drawable" छवियों तक सीमित रखने के लिए, हम वोलैटिलिटी प्लगइन में केवल उचित आकार वाली छवियों का चयन करते हैं।
यह उपकरण केवल तब काम करता है जब Xorg सॉफ्टवेयर रेंडरिंग का उपयोग करता है। यह आमतौर पर भौतिक मशीनों पर मामला नहीं है, लेकिन हमारे द्वारा परीक्षण की गई VirtualBox मशीनों पर यह डिफ़ॉल्ट रूप से उपयोग होता था।
यह मत भूलिए कि आप मेमोरी डंप से निकाला गया कोड सहज रूप से चला रहे हैं। किसी हमलावर के लिए डंप में छेड़छाड़ करना और आपकी मशीन पर कोड निष्पादन प्राप्त करना शायद कठिन नहीं है। इसलिए आवश्यक सावधानी बरतें।
यह परियोजना फॉल 2017 में Eurecom में एक सेमेस्टर परियोजना के दौरान पूरी की गई थी, और इसे दो Eurecom छात्रों: Hamdi Ammar और Ahmed Mkadem द्वारा कार्यान्वित किया गया था। इसका पर्यवेक्षण Fabio Pagani और Davide Balzarotti ने किया।