
Cisco IOS XE इम्प्लांट स्कैनिंग और डिटेक्शन (CVE-2023-20198, CVE-2023-20273)
CVE-2023-20198 के शोषण का नेटवर्क पहचान और Cisco IOS XE उपकरणों के पोस्ट-एक्सप्लॉइटेशन की फिंगरप्रिंटिंग।
suricata/ फ़ोल्डर में CVE-2023-20198 के शोषण के लिए Suricata डिटेक्शन नियम शामिल हैं। ये नियम प्रतिशत-एन्कोडेड-प्रतिशत पर नज़र रखते हैं जिसका उपयोग Cisco IOS XE उपकरणों पर प्रमाणीकरण को बायपास करने के लिए किया जा सकता है जो CVE-2023-20198 के लिए पैच नहीं किए गए हैं।
इस निर्देशिका में वास्तविक जंगली शोषण ट्रैफ़िक पर आधारित संदर्भ PCAPs भी शामिल हैं:
इस रिपॉजिटरी में Cisco IOS XE सॉफ़्टवेयर वेब प्रबंधन उपयोगकर्ता इंटरफ़ेस के बड़े पैमाने पर शोषण से जुड़ी पोस्ट-एक्सप्लॉइटेशन गतिविधियों के बारे में जानकारी भी शामिल है। Cisco Talos 1 ने एक फिंगरप्रिंट प्रकाशित किया जो जाँच सकता है कि Cisco IOS XE उपकरणों पर इम्प्लांट सक्रिय था या नहीं। संदर्भ के लिए:
curl -k -X POST "https://DEVICEIP/webui/logoutconfirm.html?logon_hash=1"
यदि HTTP प्रतिक्रिया में एक हेक्साडेसिमल स्ट्रिंग है, तो यह उपकरण के समझौता होने का उच्च-विश्वसनीयता संकेतक है। हालाँकि, जैसा कि कई स्रोतों ने उल्लेख किया है 2 3, इस विधि का उपयोग करके खोजे जा सकने वाले इम्प्लांट की संख्या में काफी कमी आई है।
समझौता किए गए उपकरण के नेटवर्क ट्रैफ़िक की जाँच से पता चला है कि खतरा अभिनेता ने इम्प्लांट को अतिरिक्त हेडर जाँच करने के लिए अपग्रेड किया है।
इस प्रकार, कई उपकरणों के लिए, इम्प्लांट अभी भी सक्रिय है, लेकिन अब केवल तभी प्रतिक्रिया देता है जब सही Authorization HTTP हेडर सेट हो।
हमने Cisco Talos के शुरुआती ब्लॉगपोस्ट पर फिर से नज़र डाली और इम्प्लांट कोड में एक अतिरिक्त लोकेशन जाँच देखी:

Cisco Talos द्वारा साझा किए गए इम्प्लांट कोड के उपरोक्त स्क्रीनशॉट के आधार पर, हमें एक और विधि मिली जिसका उपयोग इम्प्लांट की उपस्थिति को फिंगरप्रिंट करने के लिए किया जा सकता है।
curl -k "https://DEVICEIP/%25"
%25 (प्रतिशत एन्कोडेड प्रतिशत) का उपयोग करके, हम अतिरिक्त लोकेशन जाँच में निर्दिष्ट शर्तों को पूरा करते हैं। इससे सर्वर एक अलग HTTP प्रतिक्रिया देगा जो सामान्य रूप से तब देता है जब इम्प्लांट चल नहीं रहा हो।
वर्तमान में इम्प्लांट के तीन ज्ञात संस्करण हैं। 1 नवंबर 2023 तक, Cisco Talos 1 द्वारा इम्प्लांट का नाम BadCandy रखा गया है।
इम्प्लांट संचालन का एक संकेत बॉडी में <head><title>404 Not Found</title></head> है। एक उदाहरण HTTP बॉडी इस प्रकार है:
$ curl -k 'https://DEVICEIP/%25'
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>
तीसरा वेरिएंट 404 के बजाय लॉगिन पेज लौटाता है। चूँकि सामान्य रूप से इस लॉगिन पेज के बजाय जावास्क्रिप्ट रीडायरेक्ट की उम्मीद होती है, फिर भी हम यह जाँच कर इम्प्लांट की उपस्थिति का निर्धारण कर सकते हैं कि लॉगिन पेज लौटाया गया है या नहीं:
curl -k 'https://DEVICEIP/%25'
<!DOCTYPE html>
<html>
<!--
Copyright (c) 2015-2019 by Cisco Systems, Inc.
All rights reserved.
-->
<head lang="en">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title id="loginTitle"></title>
हमने अपने स्कैनिंग परिणामों में अलग-अलग लॉगिन प्रतिक्रियाएँ पाईं, और लॉगिन पेज लौटाया जा रहा है या नहीं यह निर्धारित करने के लिए name="Username" स्ट्रिंग को एक पहचानकर्ता के रूप में उपयोग किया।
यदि इम्प्लांट मौजूद नहीं है, तो आपको एक अलग प्रतिक्रिया मिलेगी। उदाहरण के लिए:
$ curl -k 'https://DEVICEIP/%25'
<script>window.onload=function(){ url ='/webui';window.location.href=url;}</script>
हमने उपरोक्त फिंगरप्रिंटिंग विधि का उपयोग करके समझौता की जाँच के लिए एक छोटी स्क्रिप्ट बनाई। स्क्रिप्ट यहाँ पाई जा सकती है:
उपयोग का उदाहरण:
$ pip3 install requests
$ python3 iocisco.py 192.168.1.1
[!] Checking http://192.168.1.1/%25
WARNING: Possible implant found for 192.168.1.1 (impant v3)! Please perform a forensic investigation!
[!] Checking https://192.168.1.1/%25
WARNING: Possible implant found for 192.168.1.1 (implant v3)! Please perform a forensic investigation!
न्यूलाइन से अलग किए गए होस्ट की सूची को स्कैन करना भी संभव है।
$ python3 iocisco.py --file cisco-ips.txt