hacktricks/network-services-pentesting/pentesting-printers/accounting-bypass.md
Translator workflow 75e8745ba3 Translated to Hindi
2023-11-06 08:38:02 +00:00

18 KiB

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

परिचय

अनुमति के बिना प्रिंट करना स्वयं में एक सुरक्षा जोखिम हो सकता है या कंपनी नीति का उल्लंघन हो सकता है। जहां प्रिंट जॉब के लिए शुल्क लिया जाता है, एक अंदर से हमलावर को खाता प्रणाली को दौड़ाने का प्रेरणा होता है। इसके अलावा, 'प्रिंट' करने की क्षमता नेटवर्क प्रिंटर के खिलाफ अधिकांश हमलों के लिए एक पूर्व-शर्त है।

प्रिंट जॉब लेखा करने के दो मुख्य दृष्टिकोण हैं: या तो प्रिंटर को सीधे इसे संभालने दें या बीच में प्रिंट सर्वर का उपयोग करें। पहला दृष्टिकोण विक्रेता-विशेष होता है, आमतौर पर किसी विशेष 'प्रिंटर ड्राइवर' के रूप में कुछ प्रकार के विशेष शामिल होता है और यहां अधिक चर्चा नहीं की जाती है। दूसरा दृष्टिकोण एक अलग प्रिंट सर्वर को शामिल करता है - आमतौर पर CUPS या LPRng जैसे सॉफ़्टवेयर कार्यान्वयन - लेखा को संभालने के लिए और कंपनियों और संस्थानों में काफी सामान्य है। प्रिंट सर्वर LPD, IPP या अन्य प्रिंटिंग प्रोटोकॉल बोल सकता है और नियत प्रिंटर को जॉब भेजता है। महत्वपूर्ण है कि प्रिंटर के लिए सीधा नेटवर्क पहुंच सीमित होनी चाहिए, अन्यथा एक हमलावर आसानी से प्रिंट सर्वर और इसके लेखा तंत्रों को दौड़ा सकता है। इसका मतलब है कि प्रामाणिक और अप्रामाणिक पोर्ट (LPD, IPP, raw, HTTP, SMB, FTP, SNMP) तक पहुंच की अवरोधन करना होगा।

प्रिंट जॉब लेखा प्रणालियों को दौर करने के लिए मूल रूप से दो दृष्टिकोण हैं: या तो दूसरे उपयोगकर्ता का अनुकरण करें या मुद्रित पृष्ठों की गिनती में बदलाव करें। निम्नलिखित में LPRng (v3.8.B) और CUPS (v2.1.4) स्थापनाओं के लिए दोनों विकल्पों पर चर्चा की जाती है जो शिक्षण और कॉर्पोरेट वातावरण में उपयोग होने वाले लोकप्रिय ओपन-सोर्स प्रिंटिंग सिस्टम हैं। दोनों सिस्टमों की सुरक्षा सुविधाओं की तुलना नीचे दी गई है।

प्रिंटिंग सिस्टम प्रोटोकॉल एन्क्रिप्शन प्रमाणीकरण पृष्ठ गणना
LPRng LPD SSL/TLS Kerberos, PGP हार्डवेयर
CUPS IPP SSL/TLS Kerberos, HTTP सॉफ़्टवेयर

प्रमाणीकरण बाईपास

LPRng और CUPS दोनों ही SSL आधारित चैनल एन्क्रिप्शन और Kerberos, PGP साइन की गई प्रिंट जॉब्स या HTTP मूल/digest प्रमाणीकरण जैसे सुरक्षित प्रमाणीकरण योजनाएं प्रदान करते हैं। यदि ठीक से कॉन्फ़िगर किया गया है और यदि हमलावर प्रिंटर का सीधा उपयोग नहीं कर सकता है तो वह **दूसरे

lp -U nobody test.ps

पेज काउंटर में छेदन

हार्डवेयर पेज काउंटर

सही लेखांकन के लिए मुद्रण प्रणाली द्वारा मुद्रित पेजों की संख्या निर्धारित की जानी चाहिए, जो कि एक आसान कार्य नहीं है। LPRng के लेखक यह मानते हैं कि प्रिंटर में कोई ऐसा अस्थायी पेज काउंटर मेकेनिज्म होता है जो बिजली चालू/बंद करने के चक्रों के प्रति सुरक्षित और प्रभावी होता है। ऐसे हार्डवेयर पेज काउंटर को अधिकांश प्रिंटर्स समर्थित करते हैं और LPRng द्वारा प्रत्येक प्रिंट जॉब के बाद PJL का उपयोग करके पढ़ा जाता है। HP ने यह भी दस्तावेजीकृत किया है कि प्रिंटर को सेवा मोड में सेट करके पेज काउंटर चर को लिखा जा सकता है। इस तरीके से, HP LaserJet 1200, HP LaserJet 4200N और HP LaserJet 4250N के पेज काउंटर को प्रिंट जॉब के दौरान छेदा जा सकता है। मुद्रित करने वाले दस्तावेज़ के अंत में और UEL द्वारा अलग किया जाता है, काउंटर को बस अपने मूल्य (उदाहरण के लिए, 2342) पर रीसेट कर दिया जाना चाहिए:

\x1b%-12345X@PJL JOB
This page was printed for free
\x1b%-12345X@PJL EOJ
\x1b%-12345X@PJL JOB
@PJL SET SERVICEMODE=HPBOISEID
@PJL SET PAGES=2342
\x1b%-12345X@PJL EOJ

एक हमलावर्धी एक नकारात्मक संख्या को मुद्रित पृष्ठों की संख्या के रूप में सेट कर सकता है। ध्यान दें कि कुछ टेस्ट किए गए उपकरणों पर यह नवीनीकरण उपकरण को फैक्ट्री डिफ़ॉल्ट पर रीसेट करता है और पृष्ठ गिनती को शून्य पर रीसेट करता है।
पृष्ठ गिनती को कम करना एक प्रिंटर की कीमत से ऊपर बेचने के लिए भी उपयोग किया जा सकता है क्योंकि इसे एक दूसरे हाथ से खरीदे गए कार को खरीदते समय ओडोमीटर के साथ तुलना किया जा सकता है। हालांकि, यह महत्वपूर्ण है कि पृष्ठ गिनती को रीसेट करना आपत्तिजनक उद्देश्यों के लिए आवश्यक नहीं है: यह एक अच्छी तरह से जाना जाता है कि कम कीमत वाले इंकजेट उपकरणों के लिए महंगे इंक बेचने और तीसरे पक्ष के रिफिल किट को रोकने के लिए एक व्यापार मॉडल है - ऐसे अनैतिक अभ्यासों को संभालने के लिए पृष्ठ गिनती को रीसेट करना पूरी तरह से वैध है।

पुराने एचपी लेजरजेट्स पर PRET के pagecount कमांड का उपयोग करके हार्डवेयर पृष्ठगणकों को आसानी से सेट किया जा सकता है:

./pret.py -q printer pjl
Connection to printer established

Welcome to the pret shell. Type help or ? to list commands.
printer:/> pagecount 10
Old pagecounter: 53214
New pagecounter: 10

सॉफ़्टवेयर पेज काउंटर्स

CUPS सभी प्रमुख पेज विवरण भाषाओं के लिए लागू किए गए सॉफ़्टवेयर पेज काउंटर्स का उपयोग करता है। पोस्टस्क्रिप्ट के लिए, एक आसान तरीका खाता दुर्घटना को अनदेखा करने का है कि क्या PageCount सिस्टम पैरामीटर मौजूद है - जो CUPS/Ghostscript में अनुप्रेषित किया जाएगा तो यह गलत रूप से लौटेगा - इससे पहले कि वास्तव में दस्तावेज़ को मुद्रित किया जाए। नीचे दिखाए गए तरीके के अनुसार।

currentsystemparams (PageCount) known {
<@\textit{[...] code which is only executed on a printer device [...]}@>
} if

इस तरह, CUPS द्वारा उपयोग किए जाने वाले लेखांकन सॉफ़्टवेयर ने प्रिंटर से अलग दस्तावेज़ बनाया है। CUPS केवल एक पृष्ठ के लिए लेखांकन करता है - जो एक हार्डकोड मिनिमम की तरह दिखता है - जबकि वास्तविक प्रिंट जॉब में सैंड्रेडों के सैंड्रेडों की संख्या हो सकती है। ध्यान दें कि IPP 'कच्चा' कतार / विकल्प का उपयोग करना अनिवार्य है, अन्यथा CUPS पृष्ठ गिनती तक पोस्टस्क्रिप्ट-टू-पोस्टस्क्रिप्ट फ़िल्टर (घोस्टस्क्रिप्ट का ps2write) के साथ कोड का विश्लेषण करता है।

इस हमले को परीक्षण करने के लिए कैसे?

ऊपर के कोड में एक अनिश्चित मल्टी-पेज पोस्टस्क्रिप्ट दस्तावेज़ को लपेटें और प्रिंट करें। फिर http://printserver:631/jobs?which_jobs=all पर जाएं और इस प्रिंट जॉब के लिए CUPS की पृष्ठ गिनती की जांच करें। ध्यान दें कि एक कच्चा कतार स्थापित करना आवश्यक है। यानी, एक कतार जहां फ़िल्टरिंग सिस्टम शामिल नहीं होता है और प्रिंट जॉब सीधे प्रिंटर को जाता है। CUPS के लिए, इसे application/vnd.cups-raw को सेट करके किया जाता है। यदि आपका सिस्टम पहले से ही परीक्षण के लिए प्रिंट सर्वर का उपयोग करने के लिए कॉन्फ़िगर किया गया है, तो सीधे उपयोग करें:

lp -o raw test.ps
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥