
Avast JavaScript इंटरैक्टिव शेल
नोट: 03/11/2020 को Avast ने घोषणा की कि उन्होंने इस इंटरप्रेटर को वैश्विक स्तर पर अक्षम करने का निर्णय लिया है!
मुख्य Avast एंटीवायरस प्रक्रिया को AvastSvc.exe कहा जाता है, जो SYSTEM के रूप में चलती है।

वह सेवा निम्न-स्तरीय एंटीवायरस इंजन लोड करती है, और फ़ाइलसिस्टम मिनीफ़िल्टर या अवरोधित नेटवर्क ट्रैफ़िक जैसे स्रोतों से प्राप्त अविश्वसनीय डेटा का विश्लेषण करती है।
अत्यधिक विशेषाधिकार प्राप्त होने और डिज़ाइन द्वारा अविश्वसनीय इनपुट संसाधित करने के बावजूद, यह अनसैंडबॉक्स्ड है और इसमें खराब शमन कवरेज है। इस प्रक्रिया में कोई भी कमजोरियाँ गंभीर हैं, और दूरस्थ हमलावरों के लिए आसानी से सुलभ हैं।
तो.. शायद यह अच्छा नहीं है कि इसमें एक कस्टम JavaScript इंटरप्रेटर शामिल है....???? 🙃

इस रिपॉजिटरी में एक इंटरैक्टिव शेल है जो आपको लिनक्स पर कमजोरी अनुसंधान के लिए इंटरप्रेटर का परीक्षण करने देता है।
इसे आज़माने का तरीका यहां दिया गया है, पहले निर्भरताएँ स्थापित करें।
$ sudo apt install libreadline-dev:i386 libc6-dev-i386 gcc-multilib
$ sudo yum install readline-devel.i686 glibc-devel.i686 libgcc.i686
अब आप इस रिपॉजिटरी को क्लोन कर सकते हैं।
$ git clone https://github.com/taviso/avscript.git
$ cd avscript
$ git submodule update --init --recursive
यदि सब कुछ ठीक दिखता है, तो इसे बनाएं और avscript तैयार हो जाना चाहिए।
$ make
प्रदर्शन कारणों से, Avast हर JavaScript फ़ाइल की व्याख्या नहीं करता है, वे यह निर्धारित करने के लिए एक अनुमानी का उपयोग करते हैं कि क्या यह आवश्यक है। मैंने पाया है कि इस रिपॉजिटरी में शामिल javascript.txt फ़ाइल को जोड़ना हमेशा अनुमानी को ट्रिगर करने के लिए पर्याप्त है।
उदाहरण के लिए, यदि आपको कोई कमजोरी मिली है और इसे विंडोज़ पर पुन: उत्पन्न करना चाहते हैं, तो आप पहले ऐसा करेंगे:
$ cat yourtestcase.js javascript.txt > ReproForWindows.js
अब सत्यापित करें कि यह अभी भी वही करता है जिसकी आप अपेक्षा करते हैं, उदाहरण के लिए:
$ ./avscript ReproForWindows.js
main(): File ReproForWindows.js loaded, about to initialize interpreter...
Segmentation fault (core dumped)
फिर सत्यापित करें कि क्रैश विंडोज़ पर पुन: उत्पन्न हुआ।
Avast सेवा एक संरक्षित प्रक्रिया है, जिसका अर्थ है कि इसे यूज़रस्पेस से डीबग करना मुश्किल है। यदि आपके पास kd कॉन्फ़िगर है, तो आप इसे सरलता से पूर्ववत कर सकते हैं और फिर यूज़रस्पेस में डीबगिंग ठीक से काम करती है।
एक त्वरित और आसान समाधान जो 32-बिट पर काम करता है, वह यह है (ध्यान दें कि PatchGuard x64 पर इसकी अनुमति नहीं देगा, लेकिन आप ब्रेकपॉइंट कमांड के साथ कुछ समान कर सकते हैं)।

"समस्या निवारण" के तहत "Enable Self-Defense" नामक एक सेटिंग भी है जिसे अक्षम किया जाना चाहिए। मेरा मानना है कि यह सेटिंग SSDT में OpenProcess() हुकिंग को अक्षम करती है, जहाँ वे सामान्यतः अपनी प्रक्रिया को ब्लैकलिस्ट करते हैं।
हो सकता है कि आपको अटैच करते समय Avast UI में "shields" को अस्थायी रूप से अक्षम करना पड़े, ताकि सेवा निलंबित होने पर फ़ाइलसिस्टम संचालन डेडलॉक न हो।
Avast अपने इंजन के लिए कोई प्रतीक प्रकाशित नहीं करता है, लेकिन IDA या gdb के साथ डीबगिंग अभी भी संभव है। loadlibrary documentation में लिनक्स से विंडोज़ कोड डीबग करने पर कुछ नोट्स हैं।
यदि आप IDA का उपयोग करना चाहते हैं, तो मैं gdbserver बैकएंड का उपयोग करने की सलाह दूंगा।
बस इस तरह कुछ उपयोग करें, आपको पहले gdbserver पैकेज स्थापित करने की आवश्यकता हो सकती है:
$ gdbserver 0.0.0.0:23946 ./avscript
यह आश्चर्यजनक रूप से अच्छा काम करता है, यहां तक कि स्यूडोकोड ब्रेकपॉइंट भी काम करते हैं।

यदि आपको कोई कमजोरी मिलती है, तो इसके गंभीर और वर्मेबल होने की संभावना है।
🔥 कृपया इसे तुरंत रिपोर्ट करें। 🔥