.. | ||
accounting-bypass.md | ||
buffer-overflows.md | ||
credentials-disclosure-brute-force.md | ||
cross-site-printing.md | ||
document-processing.md | ||
factory-defaults.md | ||
file-system-access.md | ||
firmware-updates.md | ||
memory-access.md | ||
physical-damage.md | ||
print-job-manipulation.md | ||
print-job-retention.md | ||
README.md | ||
scanner-and-fax.md | ||
software-packages.md | ||
transmission-channel.md |
प्रिंटरों का पेंटेस्टिंग
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
क्या आप साइबर सुरक्षा कंपनी में काम करते हैं? क्या आप अपनी कंपनी को HackTricks में विज्ञापित देखना चाहते हैं? या क्या आपको PEASS की नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग करने की आवश्यकता है? सदस्यता योजनाएं की जांच करें!
-
The PEASS Family की खोज करें, हमारा एकल NFT संग्रह
-
आधिकारिक PEASS & HackTricks swag प्राप्त करें
-
शामिल हों 💬 Discord समूह या टेलीग्राम समूह या मुझे Twitter 🐦@carlospolopm.
-
अपने हैकिंग ट्रिक्स को hacktricks रेपो और hacktricks-cloud रेपो में पीआर जमा करके साझा करें।
कृपया ध्यान दें कि प्रिंटरों के संबंधित सभी जानकारी के अधिकांश सामग्री** ** का अंश http://hacking-printers.net/ पर आपको मिलने वाले विशाल और अद्भुत शोध से लिया गया है। मैंने इस जानकारी को यहां संक्षेप में दिया है लेकिन आप हमेशा विषय के बारे में और अधिक सीखने के लिए स्रोत पर जा सकते हैं।
मूलभूत तत्व
प्रिंटर भाषाओं के संग्रहीतरण के संबंध में एक योजनात्मक संबंध नीचे दिया गया है:\
नेटवर्क प्रिंटिंग प्रोटोकॉल
प्रिंटर उपकरण को USB/पैरलेल केबल या नेटवर्क के माध्यम से डेटा भेजा जा सकता है। यह विकि नेटवर्क प्रिंटिंग पर ध्यान केंद्रित करती है, लेकिन प्रस्तुत की गई अधिकांश हमलों को स्थानीय प्रिंटरों के खिलाफ भी किया जा सकता है। नेटवर्क प्रिंटिंग के लिए विभिन्न अनोखे प्रोटोकॉल हैं, जैसे Novell का NCP या AppleTalk। Windows विश्व में, SMB/CIFS प्रिंटर साझा बहुत प्रसिद्ध हो गए हैं। इसके अलावा, कुछ उपकरण सामान्य प्रोटोकॉलों जैसे FTP या HTTP फ़ाइल अपलोड के माध्यम से प्रिंट करने का समर्थन करते हैं। हालांकि, नेटवर्क प्रिंटिंग प्रोटोकॉल को सीधे हमला किया जा सकता है, उदाहरण के लिए प्रिंटर के LPD डेमन में बफर ओवरफ़्लो का शोषण करके। हालांकि, बहुत सारे हमला स्थितियों में, वे केवल एक वाहक/चैनल के रूप में कार्य करते हैं दुरुपयोगी प्रिंटर भाषा को लागू करने के लिए। ध्यान दें कि नेटवर्क प्रिंटर आमतौर पर एक दस्तावेज़ को 'प्रिंट' करने के लिए कई प्रोटोकॉल समर्थित करता हैं जो हमले की सतह को व्यापक बनाता है।
यहां raw port 9100 के बारे में और अधिक जानें।
यहां Pentesting 515 में LPD के बारे में और अधिक जानें।
यहां Petesting 631 में IPP के बारे में और अधिक जानें।
प्रिंटर नियंत्रण भाषाएँ
एक जॉब नियंत्रण भाषा मौजूदा प्रिंट जॉब के लिए आउटपुट ट्रे जैसी सेटिंग्स का प्रबंधन करती है। यह आमतौर पर प्रिंटिंग प्रोटोकॉल और पेज विवरण भाषा के बीच एक वैकल्पिक स्तर के रूप में हो
@PJL SET PAPER=A4
@PJL SET COPIES=10
@PJL ENTER LANGUAGE=POSTSCRIPT
पोर्ट 9100 'रॉ पोर्ट' के अंदर आप PJL को जांचने के बारे में अधिक जानकारी पा सकते हैं।
PML
प्रिंटर प्रबंधन भाषा (PML) एक प्रोप्राइटरी भाषा है जिसका उपयोग एचपी प्रिंटर्स को नियंत्रित करने के लिए किया जाता है। यह मूल रूप से SNMP की सुविधाओं को PJL के साथ मिलाकर बनाता है। सार्वजनिक रूप से उपलब्ध दस्तावेज़ीकरण जारी नहीं किया गया है, हालांकि LPRng परियोजना द्वारा कुछ हिस्से लीक हो गए हैं: PJL Passthrough to PML and SNMP User’s Guide में PML को 'एक ऑब्जेक्ट-ओरिएंटेड अनुरोध-उत्तर प्रिंटर प्रबंधन प्रोटोकॉल' के रूप में परिभाषित किया गया है और सिंटैक्स के मूल तत्वों का परिचय दिया गया है। PML PJL के भीतर सम्मिलित है और प्रिंटर उपकरण पर SNMP मानों को पढ़ने और सेट करने के लिए उपयोग किया जा सकता है। यह विशेष रूप से रोकटेवर द्वारा एसएनएमपी सेवाओं (161/udp) का पहुंच रोकती है। नीचे दिए गए उदाहरण में प्रिंट जॉब के भीतर PML का उपयोग करके hrDeviceDescr
मान (OID 1.3.6.1.2.1.25.3.2.1.3, उपकरण का पाठ्यिक विवरण) प्राप्त किया जाता है:
> @PJL DMINFO ASCIIHEX="000006030302010301"
< "8000000603030201030114106870204c617365724a65742034323530
प्रिंटर द्वारा प्रतिक्रिया के रूप में दिए गए स्ट्रिंग का पीछे भाग, 6870204c617365724a65742034323530
, hp LaserJet 4250
के लिए हेक्साडेसिमल है। जैसा कि देखा जा सकता है, SNMP कमांडों को PML के माध्यम से PJL पर बुलाया जा सकता है। PML का सुरक्षा-संबंधी उपयोग है, एचपी प्रिंटर को साधारण प्रिंट जॉब के माध्यम से फैक्टरी डिफ़ॉल्ट पर रीसेट करना, जिससे उपयोगकर्ता द्वारा सेट किए गए पासवर्ड जैसे सुरक्षा उपकरण हटा दिए जाते हैं।
UEL
यूनिवर्सल एक्ज़िट भाषा (UEL) वास्तव में एक वास्तविक जॉब नियंत्रण 'भाषा' नहीं है, बल्कि मौजूदा डेटा स्ट्रीम को समाप्त करने के लिए एक एकल कमांड है: एस्केप चरित्र (\x1b
), जिसके बाद %-12345X
होता है। यह पहले से ही एचपी के पीसीएल के साथ पेश किया गया था और अधिकांश आधुनिक लेजर प्रिंटर्स द्वारा समर्थित है। 'प्रिंटर ड्राइवर्स' का एक अच्छा अभ्यास है कि प्रत्येक प्रिंट जॉब की शुरुआत और समाप्ति पर UEL को बुलाया जाए, ताकि प्रिंटर भाषा के व्याख्यान को बंद/पुनरारंभ किया जाए और प्रत्येक जॉब के पास अपना अलग, अलग पर्यावरण हो। नीचे दिखाया गया है:
\x1b%-12345X
@PJL SET PAPER=A4
@PJL ENTER LANGUAGE=PCL
...
[PCL datastream]
...
\x1b%-12345X
अन्यथा, उदाहरण के लिए पेपर मीडिया आकार या पोस्टस्क्रिप्ट परिभाषाएं जो एक प्रिंट जॉब में सेट की गई होती हैं, अगले जॉब पर प्रभाव डालेंगी। UEL प्रिंटर को भेजे गए एकल फ़ाइल / डेटास्ट्रीम में कई जॉब्स को जोड़ने के लिए उपयोगी हो सकता है। इसका उपयोग हार्डवेयर पेज काउंटर्स को धोखा देने या आगे की क्रॉस-साइट प्रिंटिंग हमलों में प्रिंटिंग भाषा बदलने के लिए किया जा सकता है।
पेज विवरण भाषाएं
पेज विवरण भाषा (PDL) वास्तविक दस्तावेज़ की दिखावट को निर्दिष्ट करती है। हालांकि, कुछ PDLs में सीमित जॉब नियंत्रण प्रदान करते हैं, इसलिए पेज विवरण और प्रिंटर / जॉब नियंत्रण भाषा के बीच स्पष्ट अंतरिक्ष हमेशा संभव नहीं होता है। 'प्रिंटर ड्राइवर' का कार्य है फ़ाइल को प्रिंट करने के लिए पेज विवरण भाषा में अनुवाद करना, जिसे प्रिंटर मॉडल द्वारा समझा जा सके। ध्यान दें कि कुछ कम कीमत वाले इंकजेट प्रिंटर बिल्कुल हाई लेवल की पेज विवरण भाषा का समर्थन नहीं करते हैं। इसे होस्ट-आधारित या GDI प्रिंटर कहा जाता है, जो ZJS जैसे सरल बिटमैप डेटास्ट्रीम को ही स्वीकार करते हैं जबकि वास्तविक रेंडरिंग प्रिंटर ड्राइवर द्वारा की जाती है। क्योसेरा की प्रिस्क्राइब, SPL, XES, CaPSL, RPCS, ESC/P जैसी विशेषाधिकारी पेज विवरण भाषाएं हैं, जो अधिकांश डॉट मैट्रिक्स प्रिंटर में प्रयोग होती हैं या HP-GL और HP-GL/2 जो प्लॉटर के लिए डिज़ाइन की गई हैं। नए प्रिंटर पर सीधे PDF और XPS प्रिंटिंग का समर्थन भी आम है। हालांकि, सबसे आम 'मानक' पेज विवरण भाषाएं पोस्टस्क्रिप्ट और पीसीएल हैं।
पोस्टस्क्रिप्ट (PS)
शब्द 'पेज विवरण' गलत साबित हो सकता है, क्योंकि पोस्टस्क्रिप्ट केवल वेक्टर ग्राफ़िक्स बनाने के लिए ही नहीं है। पोस्टस्क्रिप्ट एक स्टैक-आधारित, ट्यूरिंग-पूर्ण प्रोग्रामिंग भाषा है जिसमें लगभग 400 ऑपरेटर्स होते हैं जो अंकगणित, स्टैक और ग्राफिक मानिपुलेशन और विभिन्न डेटा प्रकार जैसे एरे या डिक्शनरी के लिए होते हैं और यह Adobe द्वारा बनाई गई है।
तकनीकी रूप से कहा जा सकता है कि पोस्टस्क्रिप्ट इंटरप्रेटर तक पहुंच पहले से ही कोड निष्पादन के रूप में श्रेणीबद्ध किया जा सकता है क्योंकि किसी भी एल्गोरिदमिक फ़ंक्शन को सिद्धांतात्मक रूप से पोस्टस्क्रिप्ट में लागू किया जा सकता है। निश्चित रूप से, नेटवर्क स्टैक या अतिरिक्त ऑपरेटिंग सिस्टम पुस्तकालयों के पहुंच के बिना, संभावनाएं बिटकॉइन माइनिंग जैसे विचित्र गणितीय हिसाबों तक ही सीमित होती हैं। हालांकि, पोस्टस्क्रिप्ट में बेसिक फ़ाइल सिस्टम I/O की समर्थन होती है ताकि आमतौर पर उपयोग किए जाने वाले कोड, ग्राफिक्स या फ़ॉन्ट फ़ाइल्स को संग्रहीत किया जा सके।
शुरूआत में एक सुविधा के रूप में डिज़ाइन किए जाने पर इस तरह की खतरों की सीमा थी जब तक प्रिंटर एक-दूसरे से जुड़े नहीं हो गए और जोखिमों को मुख्य रूप से होस्ट-आधारित पोस्टस्क्रिप्ट इंटरप्रेटर के संदर्भ में चर्चा की जाती थी। इस संदर्भ में, Encapsulated PostScript (EPS) भी महत्वपूर्ण है क्योंकि इसे अन्य फ़ाइल प्रारूपों में शामिल किया जा सकता है जो होस्ट पर अनुवादित किए जाने के लिए होते हैं जैसे LaTeX दस्तावेज़। PJL और PCL की तरह, पोस्टस्क्रिप्ट होस्ट और प्रिंटर के बीच द्विदिशीय संचार का समर्थन करता है।
नीचे दिए गए उदाहरण पोस्टस्क्रिप्ट कोड है जो stdout पर Hello world को इको करता है:
%!
(Hello world) print
ब्रदर और क्योसेरा अपने खुद के पोस्टस्क्रिप्ट क्लोन का उपयोग करते हैं: बीआर-स्क्रिप्ट और केपीडीएल. इस प्रकार के पोस्टस्क्रिप्ट भाषा 100% संगत नहीं हैं, विशेष रूप से सुरक्षा सुविधाओं के संबंध में जैसे कि सर्वर लूप से बाहर निकलना। पोस्टस्क्रिप्ट का उपयोग विभिन्न हमलों के लिए किया जा सकता है जैसे कि सेवा की अस्थायी अनुपलब्धता (उदाहरण के लिए, अनंत लूप के माध्यम से), प्रिंट जॉब परिवर्तन और रखरखाव और प्रिंटर के फ़ाइल सिस्टम तक पहुंच प्राप्त करना।
सर्वर लूप से बाहर निकलना
सामान्यतः, प्रत्येक प्रिंट जॉब अपने अलग, अलग पर्यावरण में बंद होता है। पोस्टस्क्रिप्ट की एक दिलचस्प सुविधा है कि एक प्रोग्राम प्रिंट जॉब एनकैप्सुलेशन को दौर कर सकता है और आगामी जॉब्स के लिए प्रारंभिक वीएम को संशोधित कर सकता है। इसके लिए, यह या तो स्टार्टजॉब, एक स्तर 2 की सुविधा का उपयोग कर सकता है:
true 0 startjob
या exitserver (जहां नौकरी सर्वर शामिल होता है):
serverdict begin 0 exitserver
यह क्षमता StartJobPassword द्वारा नियंत्रित की जाती है जो डिफ़ॉल्ट रूप से 0
होता है (प्रमाणिकता खुलासा की तुलना करें)। क्योंकि जॉब सर्वर लूप आमतौर पर इंटरप्रेटर की स्थिति को जॉब के बीच साफ़ करने के लिए जिम्मेदार होता है, सर्वर लूप के बाहर किए गए किसी भी परिवर्तन को आगे के सभी जॉब के लिए इंटरप्रेटर की स्थायी स्थिति का हिस्सा बना रहेगा। दूसरे शब्दों में, एक प्रिंट जॉब अनुक्रम में पहुंच कर संपर्क कर सकता है और आगे के जॉब को संशोधित कर सकता है। बिंगो!
ऑपरेटर पुनर्निर्धारण
जब एक PostScript दस्तावेज़ एक ऑपरेटर को कॉल करता है, तो शब्दकोश स्टैक पर पहले मिलने वाला संस्करण उपयोग किया जाता है। ऑपरेटर्स आमतौर पर systemdict शब्दकोश में स्थित होते हैं, हालांकि userdict शब्दकोश में एक नया संस्करण रखकर, ऑपरेटर्स वास्तव में अधिलेखित किए जा सकते हैं क्योंकि उपयोगकर्ता निर्धारित संस्करण शब्दकोश स्टैक पर पहले मिलने वाला संस्करण होता है। startjob/exitserver ऑपरेटर का उपयोग करके, ऐसे परिवर्तन स्थायी रूप से किए जा सकते हैं - कम से कम तब तक जब तक प्रिंटर पुनः आरंभ नहीं होता है। PostScript शब्दकोश स्टैक की एक योजना नीचे दी गई है:
ऑपरेटर्स को पुनर्निर्धारित करने का संभावित प्रभाव केवल रचनात्मकता द्वारा सीमित होता है। जब और वैध दस्तावेज़ प्रिंट किए जाते हैं और एक पुनर्निर्धारित ऑपरेटर को कॉल करते हैं, तो हमलावर का संस्करण निष्पादित होगा। इससे सेवा की अस्थायी अनुपलब्धता, प्रिंट जॉब रखरखाव और परिवर्तन जैसे विभिन्न हमलों का सामर्थ्य हो सकता है। हालांकि ध्यान दें कि यह आवश्यक रूप से एक सुरक्षा बग नहीं है, बल्कि यह 32 साल पुरानी भाषा की सुविधा है, जो लगभग किसी भी PostScript प्रिंटर और RIP में उपलब्ध है।
PCL
PCL 3 और PCL 4 में फ़ॉन्ट और मैक्रो के समर्थन को जोड़ा गया था जो दोनों डिवाइस पर स्थायी रूप से डाउनलोड किए जा सकते हैं - हालांकि केवल एक संख्यात्मक पहचानकारक द्वारा संदर्भित किए जाते हैं, फ़ाइल नाम द्वारा नहीं, क्योंकि फ़ाइल सिस्टम तक सीधा पहुंच नहीं होना चाहिए। PCL 1 से 5 एक्सकेप सीक्वेंसों से मिलकर बने होते हैं, जिनमें से प्रत्येक एक या अधिक ASCII वर्ण एक आदेश को व्याख्या करने के लिए प्रयोग किया जाता है। PCL 6 Enhanced या 'PCL XL' एक बाइनरी एनकोडेड, ऑब्जेक्ट-ओरिएंटेड प्रोटोकॉल का उपयोग करता है। 'Hello world' प्रिंट करने के लिए एक उदाहरण PCL दस्तावेज़ नीचे दिया गया है:
<Esc>Hello world
अपनी सीमित क्षमताओं के कारण, PCL सुरक्षा के पहलू से अनुशासन करना कठिन है जब तक कोई प्रिंटर निर्माता की PCL रुचि में दिलचस्प प्राधिकारिक आदेशों की खोज नहीं करता है। PRET टूल एक वर्चुअल, PCL आधारित फ़ाइल सिस्टम को लागू करता है जो मैक्रो का उपयोग करके फ़ाइल सामग्री और मेटाडेटा को प्रिंटर की मेमोरी में सहेजता है। यह हैक दिखाता है कि PCL जैसे केवल न्यूनतम पृष्ठ विवरण भाषाओं का समर्थन करने वाले उपकरण का उपयोग करके कॉपीराइट अधिकार उल्लंघन सामग्री जैसी विभिन्न फ़ाइलें संग्रहीत की जा सकती है। हालांकि, प्रिंटर को एक फ़ाइल साझा करने की सेवा में बदलना स्वतः में कोई सुरक्षा संकट नहीं है, लेकिन यह कॉर्पोरेट नीति के आधार पर 'सेवा का दुरुपयोग' के रूप में लागू हो सकता है।
विविध हमले
USB ड्राइव या केबल
USB या पैरलेल केबल के माध्यम से स्थानीय प्रिंटर को डेटा भेजा जा सकता है और उससे प्राप्त किया जा सकता है। उपकरण के साथ टाइप-ए USB पोर्ट भी शिप होते हैं जिससे उपयोगकर्ता सीधे USB उपकरण से प्रिंट कर सकते हैं।
USB प्रिंटर का उपयोग करने के लिए हमलावर्ती व्यक्ति को उपकरण के लिए भौतिक पहुंच प्राप्त करने की आवश्यकता होती है। हालांकि, यह अधिकांश संस्थानों और कंपनियों के लिए पूरी तरह से अवास्तविक नहीं है। प्रिंटर के भौतिक पहुंच को साधारित रूप से सर्वर या कार्यस्थल की तुलना में कम कठिन माना जा सकता है।
क्रॉस-साइट प्रिंटिंग
क्लाइंट वेब अनुरोध का दुरुपयोग करके हमलावर्ती व्यक्ति अपने दुष्ट वेब पृष्ठ से जुड़े क्लाइंट के आंतरिक नेटवर्क में किसी भी प्रिंटर का दुरुपयोग कर सकता है।
यहां इसकी कैसे संभव हो सकता है इसे जानें।
AD में Spooler सेवा का दुरुपयोग
यदि आप डोमेन में कोई Spool सेवा सुन रही पाते हैं, तो आप इसे दुरुपयोग करने के लिए नए क्रेडेंशियल प्राप्त करने और वृद्धि करने के लिए सक्षम हो सकते हैं।
यहां इसके बारे में अधिक जानकारी** प्राप्त करें।**
प्रिविलेज उन्नयन
फैक्टरी डिफ़ॉल्ट
उपकरण को फैक्टरी डिफ़ॉल्ट पर रीसेट करने के कई संभावित तरीके हैं, और यह सुरक्षा-संबंधी महत्वपूर्णता है क्योंकि इससे उपयोगकर्ता द्वारा सेट किए गए पासवर्ड जैसे सुरक्षा संरक्षण उपकरणों को ओवरराइट कर देता है।
यहां अधिक जानें।
लेखा बाइपास
आप मौजूदा या अमौजूदा उपयोगकर्ताओं की अनुकरण करके उनके खातों का उपयोग करके पृष्ठों को प्रिंट करने के लिए सक्षम हो सकते हैं या हार्डवेयर या सॉफ़्टवेयर काउंटर को मानिपुरेट करके अधिक पृष्ठों को प्रिंट करने के लिए सक्षम हो सकते हैं।
[यहां इसे कैसे करें इसे जानें।](accounting
- अपने हैकिंग ट्रिक्स को hacktricks रेपो और hacktricks-cloud रेपो में पीआर जमा करके साझा करें।