विंडोज बैच फाइल क्या है?
एक **बैच फाइल** (.bat, .cmd) एक स्क्रिप्ट फाइल है जिसमें कमांड-लाइन इंटरप्रेटर (`cmd.exe`) द्वारा क्रमिक रूप से निष्पादित कमांड की एक श्रृंखला होती है। इसका उपयोग स्वचालन, सिस्टम रखरखाव, सॉफ्टवेयर इंस्टॉलेशन, और दोहराए जाने वाले कार्यों के लिए किया जाता है।
क्या बैच फाइलें सुरक्षित हैं?
स्वाभाविक रूप से सुरक्षित नहीं। बैच फाइलें मनमाना कमांड निष्पादित करती हैं। एक दुर्भावनापूर्ण बैच फाइल कर सकती है:
- फाइलें हटाएं/एन्क्रिप्ट करें (रैंसमवेयर व्यवहार)।
- उपयोगकर्ता डेटा चुराएं (ब्राउज़र पासवर्ड, वॉलेट, SSH कुंजी)।
- मैलवेयर डाउनलोड/निष्पादित करें (पावरशेल, certutil, bitsadmin के माध्यम से)।
- सिस्टम सेटिंग्स संशोधित करें (फायरवॉल अक्षम करें, स्टार्टअप में दृढ़ता जोड़ें)।
- पक्षीय गति के लिए क्रेडेंशियल डंप करें।
क्योंकि वे सादे पाठ हैं और हस्ताक्षर/सत्यापन तंत्र की कमी है, वे हमलावरों के लिए एक सामान्य प्रारंभिक एक्सेस वेक्टर हैं (फ़िशिंग अटैचमेंट, ड्राइव-बाय डाउनलोड, USB ड्रॉप)।
बैच फाइल कैसे काम करती है
- उपयोगकर्ता डबल-क्लिक करता है या कमांड लाइन से चलाता है।
- `cmd.exe` फाइल को लाइन दर लाइन पढ़ता है।
- प्रत्येक लाइन को इंटरैक्टिव रूप से टाइप किए गए कमांड के रूप में निष्पादित किया जाता है।
- नियंत्रण प्रवाह कथन (`IF`, `FOR`, `GOTO`) तर्क की अनुमति देते हैं।
- पर्यावरण चर (`%VAR%`, `%%A` लूप में) डेटा संग्रहीत करते हैं।
सामान्य बैच फाइल कमांड और सिंटैक्स
| कमांड/सिंटैक्स | उद्देश्य |
|---|---|
| `@echo off` | कमांड इकोइंग दबाएं (साफ आउटपुट) |
| `REM` या `::` | टिप्पणियाँ |
| `SET VAR=value` | पर्यावरण चर सेट करें |
| `SET /P VAR=Prompt:` | उपयोगकर्ता इनपुट प्रॉम्प्ट करें |
| `IF EXIST file (cmd) ELSE (cmd)` | सशर्त निष्पादन |
| `FOR %%A IN (set) DO cmd` | सेट पर लूप (फाइलें, संख्याएं, कमांड आउटपुट) |
| `GOTO label` / `:label` | अनियंत्रित कूद |
| `CALL :subroutine` | मॉड्यूलर कोड |
| `EXIT /B [code]` | स्क्रिप्ट/सबरूटीन से बाहर निकलें |
बैच फाइलों को कैसे सुरक्षित/सुरक्षित करें
रक्षात्मक उपाय (एंडपॉइंट/संगठन)
- एप्लिकेशन नियंत्रण: AppLocker, WDAC, या Software Restriction Policies का उपयोग करके केवल हस्ताक्षरित/अनुमोदित स्क्रिप्ट की अनुमति दें।
- पावरशेल विवश भाषा मोड: बैच से पावरशेल दुरुपयोग को सीमित करता है।
- एंटीवायरस/EDR: संदिग्ध बैच व्यवहार (बड़े पैमाने पर फाइल हटाना, नेटवर्क कनेक्शन, पावरशेल स्पॉन) का पता लगाता है।
- उपयोगकर्ता शिक्षा: अवांछित .bat/.cmd फाइलें न चलाने के लिए प्रशिक्षित करें।
- ईमेल/वेब फ़िल्टरिंग: गेटवे पर .bat अटैचमेंट ब्लॉक करें।
आक्रामक/परीक्षण परिप्रेक्ष्य (रेड टीम/पेनटेस्ट)
- बैच फाइलें अक्सर **लिविंग-ऑफ-द-लैंड बाइनरीज़ (LOLBins)** के लिए ड्रॉपर्स/लॉन्चर के रूप में उपयोग की जाती हैं: `certutil.exe -decode -split`, `bitsadmin /transfer`, `mshta.exe`, `regsvr32.exe /s /u /i:https://...`।
- ओबफसकेशन तकनीक: चर प्रतिस्थापन, एन्कोडेड कमांड, मृत कोड सम्मिलन।
- पता लगाने से बचने के लिए `cmd /c` या `cmd /k` के माध्यम से निष्पादन।
बैच फाइल को कैसे रोकें/मारें
- चल रही स्क्रिप्ट रोकें: कंसोल विंडो में `Ctrl+C` दबाएं → पुष्टि करने के लिए `Y` दबाएं।
- पृष्ठभूमि प्रक्रिया मारें:
tasklist | findstr "cmd.exe" taskkill /F /PID# या नाम से taskkill /F /IM "cmd.exe" # सावधानी: सभी cmd इंस्टेंस मारता है - निष्पादन से पहले रोकें: कोड में `PAUSE` डालें या `cmd /k script.bat` से चलाएं ताकि विंडो खुली रहे।
बैच फाइल की सामग्री कैसे देखें/संपादित करें
- किसी भी टेक्स्ट एडिटर में राइट-क्लिक → **संपादित करें** (नोटपैड, VS कोड, नोटपैड++)।
- निष्पादन से पहले **हमेशा जांचें**।
बैच फाइलों के वैध उपयोग
- लॉग रोटेशन/सफाई, बैकअप स्क्रिप्ट (robocopy)।
- सॉफ्टवेयर तैनाती/पैचिंग (SCCM/Intune के साथ)।
- सिस्टम कॉन्फ़िगरेशन स्वचालन (नेटवर्क ड्राइव मैप करें, प्रिंटर जोड़ें)।
- डायग्नोस्टिक संग्रह (सिस्टम जानकारी, इवेंट लॉग निर्यात)।
- निर्धारित कार्य (कार्य शेड्यूलर के माध्यम से)।
बैच बनाम पावरशेल: सुरक्षा परिप्रेक्ष्य
| पहलू | बैच (.bat/.cmd) | पावरशेल (.ps1) |
|---|---|---|
| क्षमता | कमांड निष्पादन तक सीमित | पूर्ण .NET एक्सेस, COM, WMI, WinRM |
| हस्ताक्षर समर्थन | मूल रूप से कोई नहीं | मजबूत (Authenticode, कैटलॉग हस्ताक्षर) |
| लॉगिंग | न्यूनतम (इतिहास केवल) | व्यापक (मॉड्यूल, स्क्रिप्ट ब्लॉक, ट्रांस्क्रिप्ट लॉगिंग) |
| प्रतिबंध बायपास | सरल (फ़ाइल एक्सटेंशन नाम बदलें) | अधिक कठिन (CLM, AMSI, स्क्रिप्ट ब्लॉक लॉगिंग) |
| आधुनिक सिफारिश | विरासत/सरल कार्यों के लिए | नए स्वचालन के लिए पसंदीदा |
निष्कर्ष
बैच फाइलें शक्तिशाली स्वचालन उपकरण हैं लेकिन **महत्वपूर्ण सुरक्षा जोखिम** उठाती हैं क्योंकि उनकी निष्पादन प्रकृति, हस्ताक्षर की कमी, और LOLBin दुरुपयोग की व्यापकता के कारण। संगठनों को **एप्लिकेशन नियंत्रण लागू करना, निष्पादन की निगरानी करना, उपयोगकर्ताओं को शिक्षित करना, और जहां संभव हो पावरशेल में माइग्रेट करना चाहिए**। व्यक्तियों के लिए: **अनजान .bat फाइलें कभी न चलाएं**; पहले सामग्री का निरीक्षण करें।