
फोरेंसिक ट्राइएज टूलकिट Citrix NetScaler डिवाइसों के लिए, जिसमें वेबशेल, टाइमस्टॉम्पिंग और संदिग्ध बाइनरीज़ के लिए Dissect-आधारित IOC स्कैनर शामिल है, साथ ही एक रिमोट वर्ज़न स्कैनर जो CVE कमज़ोरियों की पहचान करता है।
इस रिपॉज़िटरी में Citrix NetScaler डिवाइस के लिए ट्रायाज स्क्रिप्ट्स शामिल हैं:
iocitrix.py -- Citrix NetScaler इमेज/टारगेट का ट्रायाज करने के लिए एक Dissect स्क्रिप्ट।scan-citrix-netscaler-version.py -- HTTP(s) के माध्यम से NetScaler डिवाइस के वर्शन को स्कैन और फिंगरप्रिंट करें।आप इस स्क्रिप्ट का उपयोग HTTP(s) के माध्यम से Citrix NetScaler डिवाइस के वर्शन को स्कैन और निर्धारित करने के लिए कर सकते हैं। यह वर्शन के आधार पर यह भी निर्धारित करेगा कि NetScaler विशिष्ट CVE के प्रति संवेदनशील है या नहीं।
scan-citrix-netscaler-version.py इंस्टॉल करनायदि आप pip का उपयोग कर रहे हैं तो निम्नलिखित चरणों का उपयोग करें:
uv के मामले में, आप स्क्रिप्ट को सीधे इस प्रकार चला सकते हैं:
उदाहरण उपयोग:
$ python3 scan-citrix-netscaler-version.py 192.168.1.10 192.168.1.12
192.168.1.10 (*.local.domain) is running Citrix NetScaler version 13.1-51.15 (VULNERABLE)
192.168.1.12 (*.local.domain) is running Citrix NetScaler version 12.1-55.330 (NOT VULNERABLE)
या परिणाम JSON में प्राप्त करें:
$ python3 scan-citrix-netscaler-version.py https://192.168.1.11 --json | jq
{
"scanned_at": "2025-09-03T23:11:36.864228+00:00",
"target": "https://192.168.1.11",
"tls_names": "my-first-netscaler.local",
"rdx_en_stamp": 1702886392,
"rdx_en_dt": "2023-12-18T07:59:52+00:00",
"version": "12.1-55.302",
"error": null,
"vulnerable": {
"CVE-2025-5349": true,
"CVE-2025-5777": true,
"CVE-2025-6543": false,
"CVE-2025-7775": true,
"CVE-2025-7776": true,
"CVE-2025-8424": true
},
"is_vulnerable": true
}
--cve फ़्लैग का उपयोग करके संवेदनशीलता स्थिति जाँच को विशिष्ट CVE तक सीमित करना भी संभव है:
$ python3 scan-citrix-netscaler-version.py https://192.168.1.11 --cve CVE-2025-6543 --json | jq
{
"scanned_at": "2025-09-03T23:16:36.573016+00:00",
"target": "https://192.168.1.11",
"tls_names": "my-first-netscaler.local",
"rdx_en_stamp": 1702886392,
"rdx_en_dt": "2023-12-18T07:59:52+00:00",
"version": "12.1-55.302",
"error": null,
"vulnerable": {
"CVE-2025-6543": false
},
"is_vulnerable": false
}
परिणाम CSV प्रारूप में प्राप्त करने के लिए, बस --csv फ़्लैग का उपयोग करें।
अधिक विकल्पों के लिए --help देखें।
आप NetScaler Dissect टारगेट पर ज्ञात Indicators of Compromise की जाँच के लिए iocitrix.py का उपयोग कर सकते हैं। यह निम्नलिखित चीज़ों की जाँच करता है:
ध्यान दें कि यह स्क्रिप्ट Citrix NetScaler डिवाइस की फ़ॉरेंसिक डिस्क इमेज पर चलाने के लिए है, न कि डिवाइस पर ही। यह भी देखें कि अपने Citrix NetScaler की फ़ॉरेंसिक डिस्क इमेज कैसे बनाएँ, इसके लिए Creating Citrix NetScaler disk images अनुभाग देखें।
सुनिश्चित करें कि आपके पास Dissect का नवीनतम वर्शन है, Citrix NetScaler के लिए समर्थन इस PR में जोड़ा गया था: https://github.com/fox-it/dissect.target/pull/357
अस्वीकरण: हालाँकि यह टूल सटीकता के लिए प्रयास करता है, यह संभव है कि यह गलत सकारात्मक या गलत नकारात्मक परिणाम उत्पन्न करे। उपयोगकर्ताओं को सलाह दी जाती है कि वे परिणामों की क्रॉस-जाँच करें और इस टूल के आउटपुट के आधार पर कोई भी निर्णय लेने से पहले अपने स्वयं के निर्णय का उपयोग करें।
iocitrix.py इंस्टॉल करनानिम्नलिखित चरणों का उपयोग करें:
ध्यान दें कि चरण 4 निम्नलिखित त्रुटि प्रिंट करेगा, लेकिन आप इसे अनदेखा कर सकते हैं:
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
फिर आप एक या अधिक फ़ॉरेंसिक इमेज के विरुद्ध IOC जाँच शुरू करने के लिए iocitrix.py <TARGETS> चला सकते हैं। स्क्रिप्ट किसी भी इनपुट को स्वीकार करती है जिसे dissect एक Target के रूप में पढ़ सकता है, जैसे कि .VMDK, या एक रॉ डिस्क इमेज। कुछ उदाहरण नीचे दिए गए हैं।
python3 iocitrix.py image.vmx
python3 iocitrix.py image.vmdk
यदि आपने RAM disk की फ़ॉरेंसिक इमेज भी बनाई है, तो आप iocitrix.py का उपयोग करके अपने ट्रायाज में वोलेटाइल डेटा को शामिल कर सकते हैं, इस प्रकार:
python3 iocitrix.py md0.img+image.vmx
python3 iocitrix.py md0.img+image.vmdk
python3 iocitrix.py md0.img+da0.img
+ (प्लस) चिह्न दो डिस्क इमेज को एक ही Dissect Target के रूप में लोड करेगा।
एक Citrix NetScaler दो महत्वपूर्ण ब्लॉक डिवाइस को उजागर करता है जिनकी ऑफ़लाइन फ़ॉरेंसिक विश्लेषण के लिए इमेज बनाई जा सकती है। ये ब्लॉक डिवाइस फ़ाइलें निम्नलिखित पथों पर पाई जा सकती हैं:
/dev/md0: वह डिस्क जो रूट (/) डायरेक्टरी रखती है। यह एक RAM डिस्क है/dev/da0 या /dev/ada0: वह डिस्क जो /var और /flash डायरेक्टरीज़ रखती है। यह एक पर्सिस्टेंट डिस्क है।Citrix NetScaler की रूट डायरेक्टरी (/) एक RAM डिस्क है, जिसका अर्थ है कि यह एक वोलेटाइल डिस्क है। यह डिस्क NetScaler के पावर-ऑन और चालू रहने पर /dev/md0 पर पाई जा सकती है, और NetScaler के पावर-ऑफ होने पर अनुपलब्ध हो जाएगी। /var और /flash डायरेक्टरीज़ /dev/da0 या /dev/ada0 डिस्क पर दो अलग-अलग पार्टीशन के रूप में स्थित हैं और पर्सिस्टेंट हैं।
निम्नलिखित कमांड्स का उपयोग एक स्थानीय Linux मशीन पर SSH के माध्यम से अपने NetScaler की डिस्क कॉपी बनाने के लिए किया जा सकता है। यदि आप Windows का उपयोग कर रहे हैं, तो आप उन्हीं कमांड्स का उपयोग करने के लिए WSL (wsl.exe) या Git Bash (git-bash.exe) का उपयोग कर सकते हैं। नेटिव PowerShell कमांड्स का उपयोग करने से बचें, क्योंकि PowerShell SSH पर स्ट्रीमिंग रॉ बाइनरी डेटा को ठीक से संभाल नहीं पाता।
यह उपलब्ध डिस्क दिखाएगा, जिसमें यह भी शामिल है कि आपकी पर्सिस्टेंट डिस्क /dev/da0 है या /dev/ada0।
फिर सटीक साइज़ की जाँच करें:
local ~ $ ssh nsroot@<YOUR-NETSCALER-IP> shell diskinfo /dev/da0
local ~ $ ssh nsroot@<YOUR-NETSCALER-IP> shell diskinfo /dev/ada0
RAM डिस्क के लिए:
local ~ $ ssh nsroot@<YOUR-NETSCALER-IP> shell diskinfo /dev/md0
परिणामी da0.img या ada0.img लगभग संबंधित डिवाइस के आकार का होगा, और md0.img लगभग /dev/md0 के आकार का होगा।
local ~ $ df -h .
सुनिश्चित करें कि डिस्क इमेज फ़ाइलों को समायोजित करने के लिए पर्याप्त स्थान उपलब्ध है, जिनके फ़ाइल आकार की गणना पिछले चरण में की गई थी।
/dev/da0 या /dev/ada0 डिस्क की अपनी स्थानीय मशीन पर डिस्क इमेज बनाएँअपने डिस्क नाम के आधार पर, या तो निष्पादित करें
local ~ $ ssh nsroot@<YOUR-NETSCALER-IP> shell dd if=/dev/da0 bs=10M | tail -c +7 | head -c -6 > da0.img
या
local ~ $ ssh nsroot@<YOUR-NETSCALER-IP> shell dd if=/dev/ada0 bs=10M | tail -c +7 | head -c -6 > ada0.img
ध्यान दें, कि इसे पूरा होने में कुछ समय लग सकता है। dd का उपयोग करते समय कोई प्रगति नहीं दिखाई जाती है।
सलाह दी जाती है कि तब तक प्रतीक्षा करें जब तक आपको प्रॉम्प्ट पर नियंत्रण वापस न मिल जाए। यह एक संकेत है कि dd समाप्त हो गया है।
tail और head कमांड्स का उपयोग बाइटस्ट्रीम से NetScaler SSH बैनर को हटाने के लिए किया जाता है। ध्यान रखें कि NetScaler SSH बैनर समय के साथ बदल सकते हैं, ऐसी स्थिति में आपको कमांड को मैन्युअल रूप से संपादित करना चाहिए।