Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CobaltWhispers — CobaltWhispers is an aggressor script that utilizes a collection of Beacon Object Files (BOF) for Cobalt Strike to perform process injection, persistence and more, leveraging direct syscalls (SysWhispers2) to bypass EDR/AV | Kitploit
उपकरण/GitHubGitHub/nvisosecurity/cobaltwhispers
Persistence MechanismsIDS/IPS EvasionPost-ExploitationCommand and ControlRed TeamingPayload DevelopmentAdversarial Attack
GitHubnvisosecurity/cobaltwhispers

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

CobaltWhispers

CobaltWhispers is an aggressor script that utilizes a collection of Beacon Object Files (BOF) for Cobalt Strike to perform process injection, persistence and more, leveraging direct syscalls (SysWhispers2) to bypass EDR/AV

रिपॉजिटरी देखें
240353 साल पहलेKitploit द्वारा समीक्षित

CobaltWhispers

लेखक: @Cerbersec

CobaltWhispers एक एग्रेसर स्क्रिप्ट है जो Cobalt Strike के लिए Beacon Object Files के संग्रह का उपयोग करके प्रोसेस इंजेक्शन, पर्सिस्टेंस और अधिक कार्य करती है, EDR/AV को बायपास करने के लिए डायरेक्ट syscalls का लाभ उठाती है।

CobaltWhispers SysWhispers2 और InlineWhispers2 द्वारा संचालित है
CobaltWhispers StayKit तथा Hasherezade और Forrest Orr के कार्य पर आधारित है।

CobaltWhispers NVISO Security की Red Team में इंटर्नशिप के हिस्से के रूप में बनाया गया था। संबंधित ब्लॉगपोस्ट यहाँ (process-injection) और यहाँ (kernel karnage) पाए जा सकते हैं।

स्रोत से कंपाइल करना

CobaltWhispers को कंपाइल करने के लिए कई टूल्स की आवश्यकता होती है:

  • MingW-w64 - apt install mingw-w64
  • Make - apt install make
  • Python3
  • SysWhispers2
  • InlineWhispers2

प्रत्येक प्रोजेक्ट को कार्य करने के लिए SysWhispers2 / InlineWhispers2 द्वारा उत्पन्न 3 फाइलों की आवश्यकता होती है:

  • syscalls-asm.h
  • syscalls.c
  • syscalls.h

इन फाइलों को InlineWhispers2 प्रलेखन के अनुसार उत्पन्न किया जा सकता है, हालाँकि यह सर्वोत्तम तरीका नहीं है क्योंकि इसमें बहुत सारा अप्रयुक्त कोड शामिल होगा:

root@kitploit:~
git clone https://github.com/Sh0ckFR/InlineWhispers2 && cd InlineWhispers2
cd SysWhispers2/ && python3 syswhispers.py --preset all -o syscalls_all && cd ..
python3 InlineWhispers2.py

इसके बजाय, केवल आवश्यक APIs के लिए आउटपुट फाइलें उत्पन्न करने हेतु SysWhispers2 का उपयोग करें, फिर उन्हें मैन्युअल रूप से (या स्क्रिप्ट द्वारा) InlineWhispers2 को दें जो उन्हें उचित प्रारूप में बदल देगा। अतिरिक्त जानकारी के लिए शामिल makefile देखें या शामिल फाइलों का उपयोग अपने जोखिम पर करें।

इंजेक्शन

SpawnProcess

पेलोड प्रकारलक्ष्यविश्वसनीयता (0-5)एलिवेटेडटिप्पणियाँ
--5नहींपैरेंट प्रक्रिया से अनुमतियाँ इनहेरिट करता है

विवरण

कोड इंटीग्रिटी गार्ड (CIG) सक्षम के साथ एक नई निलंबित प्रक्रिया स्पॉन करता है ताकि गैर-माइक्रोसॉफ्ट हस्ताक्षरित बाइनरी ब्लॉक हो सकें। निर्दिष्ट पैरेंट प्रक्रिया को स्पूफ करता है। PID लौटाया जाता है।

पैरामीटर

पैरेंट प्रक्रिया: पैरेंट के रूप में सेट करने के लिए प्रक्रिया का नाम
एक्ज़िक्यूटेबल स्थान: नई प्रक्रिया स्पॉन करने के लिए डिस्क पर एक्ज़िक्यूटेबल का पूरा पथ


CreateRemoteThread

पेलोड प्रकारलक्ष्यविश्वसनीयता (0-5)एलिवेटेडटिप्पणियाँ
Shellcode/RawPID5नहीं-

विवरण

NtCreateThreadEx का उपयोग करके एक रिमोट प्रोसेस में पेलोड इंजेक्ट करता है।

पैरामीटर

प्रक्रिया PID: रिमोट प्रक्रिया का प्रोसेस आईडी
पेलोड स्थान: डिस्क पर बाइनरी रूप में पेलोड का स्थान (सशर्त | वैकल्पिक)
पेलोड b64: बेस64 एन्कोडेड स्ट्रिंग प्रारूप में रॉ शेलकोड (सशर्त | वैकल्पिक)
लिसनर: पेलोड उत्पन्न करने के लिए लिसनर (सशर्त)

Beacon पेलोड उत्पन्न करने के लिए एक लिसनर निर्दिष्ट किया जाना चाहिए। यदि मैन्युअल पेलोड चाहिए, तो इसे डिस्क पर रॉ बाइनरी के पथ के माध्यम से, या बेस64 एन्कोडेड शेलकोड के रूप में प्रदान किया जाना चाहिए।


QueueUserAPC

पेलोड प्रकारलक्ष्यविश्वसनीयता (0-5)एलिवेटेडटिप्पणियाँ
Shellcode/RawPID2नहींसंभावित रूप से लक्ष्य प्रक्रिया को क्रैश कर सकता है

विवरण

NtQueueApcThread का उपयोग करके एक रिमोट प्रोसेस में पेलोड इंजेक्ट करता है।

पैरामीटर

प्रक्रिया PID: रिमोट प्रक्रिया का प्रोसेस आईडी
थ्रेड्स: उन थ्रेड्स की संख्या जिनमें APC कॉल जोड़नी है
पेलोड स्थान: डिस्क पर बाइनरी रूप में पेलोड का स्थान (सशर्त | वैकल्पिक)
पेलोड b64: बेस64 एन्कोडेड स्ट्रिंग प्रारूप में रॉ शेलकोड (सशर्त | वैकल्पिक)
लिसनर: पेलोड उत्पन्न करने के लिए लिसनर (सशर्त)

Beacon पेलोड उत्पन्न करने के लिए एक लिसनर निर्दिष्ट किया जाना चाहिए। यदि मैन्युअल पेलोड चाहिए, तो इसे डिस्क पर रॉ बाइनरी के पथ के माध्यम से, या बेस64 एन्कोडेड शेलकोड के रूप में प्रदान किया जाना चाहिए।


MapViewOfSection

पेलोड प्रकारलक्ष्यविश्वसनीयता (0-5)एलिवेटेडटिप्पणियाँ
Shellcode/Rawसरोगेट प्रोसेस5नहीं-

विवरण

NtMapViewOfSection का उपयोग करके एक सरोगेट प्रोसेस में पेलोड इंजेक्ट करता है।

पैरामीटर

पैरेंट प्रक्रिया: पैरेंट के रूप में सेट करने के लिए प्रक्रिया का नाम
एक्ज़िक्यूटेबल स्थान: डिस्क पर एक्ज़िक्यूटेबल का स्थान जिसका उपयोग नई प्रक्रिया स्पॉन करने के लिए किया जाएगा
पेलोड स्थान: डिस्क पर बाइनरी रूप में पेलोड का स्थान (सशर्त | वैकल्पिक)
पेलोड b64: बेस64 एन्कोडेड स्ट्रिंग प्रारूप में रॉ शेलकोड (सशर्त | वैकल्पिक)
लिसनर: पेलोड उत्पन्न करने के लिए लिसनर (सशर्त)

Beacon पेलोड उत्पन्न करने के लिए एक लिसनर निर्दिष्ट किया जाना चाहिए। यदि मैन्युअल पेलोड चाहिए, तो इसे डिस्क पर रॉ बाइनरी के पथ के माध्यम से, या बेस64 एन्कोडेड शेलकोड के रूप में प्रदान किया जाना चाहिए।


TransactedHollowing

पेलोड प्रकारलक्ष्यविश्वसनीयता (0-5)एलिवेटेडटिप्पणियाँ
PEसरोगेट प्रोसेस5नहींx64 PE पेलोड की आवश्यकता है

विवरण

ट्रांज़ैक्टेड सेक्शन और मैप्ड व्यू का उपयोग करके एक सरोगेट प्रोसेस में पेलोड इंजेक्ट करता है। रिमोट एंट्री पॉइंट और PEB अपडेट किए जाते हैं, कोई असामान्य मेमोरी सेक्शन या मेमोरी अनुमतियाँ नहीं होतीं। अधिक जानकारी के लिए यहाँ देखें।

पैरामीटर

पैरेंट प्रक्रिया: पैरेंट के रूप में सेट करने के लिए प्रक्रिया का नाम
एक्ज़िक्यूटेबल स्थान: डिस्क पर एक्ज़िक्यूटेबल का स्थान जिसका उपयोग नई प्रक्रिया स्पॉन करने के लिए किया जाएगा
पेलोड स्थान: डिस्क पर x64 PE पेलोड का स्थान (सशर्त | वैकल्पिक)
पेलोड b64: बेस64 एन्कोडेड स्ट्रिंग प्रारूप में x64 PE पेलोड (सशर्त | वैकल्पिक)
लिसनर: पेलोड उत्पन्न करने के लिए लिसनर (सशर्त)

Beacon पेलोड उत्पन्न करने के लिए एक लिसनर निर्दिष्ट किया जाना चाहिए। यदि मैन्युअल पेलोड चाहिए, तो इसे डिस्क पर x64 PE के पथ के माध्यम से, या बेस64 एन्कोडेड x64 PE के रूप में प्रदान किया जाना चाहिए।


PhantomDLLHollowing

वर्तमान में कार्यान्वित नहीं किया गया है

पेलोड प्रकारलक्ष्यविश्वसनीयता (0-5)एलिवेटेडटिप्पणियाँ
Position Independent Shellcode (PIC)सरोगेट प्रोसेस5हाँसिस्टम DLL को लेखन अनुमतियों के साथ खोलने के लिए एलिवेटेड अनुमतियों की आवश्यकता होती है

विवरण

ट्रांज़ैक्टेड सेक्शन का उपयोग DLL हॉलोइंग के साथ संयोजन में करके एक सरोगेट प्रोसेस में पेलोड इंजेक्ट करता है। अधिक जानकारी के लिए यहाँ देखें।

पैरामीटर

पैरेंट प्रक्रिया: पैरेंट के रूप में सेट करने के लिए प्रक्रिया का नाम
एक्ज़िक्यूटेबल स्थान: डिस्क पर एक्ज़िक्यूटेबल का स्थान जिसका उपयोग नई प्रक्रिया स्पॉन करने के लिए किया जाएगा
पेलोड स्थान: डिस्क पर बाइनरी रूप में पेलोड का स्थान (सशर्त | वैकल्पिक)
पेलोड b64: बेस64 एन्कोडेड स्ट्रिंग प्रारूप में रॉ शेलकोड (सशर्त | वैकल्पिक)
लिसनर: पेलोड उत्पन्न करने के लिए लिसनर (सशर्त)

Beacon पेलोड उत्पन्न करने के लिए एक लिसनर निर्दिष्ट किया जाना चाहिए। यदि मैन्युअल पेलोड चाहिए, तो इसे डिस्क पर रॉ बाइनरी के पथ के माध्यम से, या बेस64 एन्कोडेड शेलकोड के रूप में प्रदान किया जाना चाहिए।


पर्सिस्टेंस

ElevatedRegKey

विवरण

निर्दिष्ट स्थान पर एक रजिस्ट्री कुंजी बनाएँ या संशोधित करें।

  • HKLM:Software\Microsoft\Windows\CurrentVersion\Run
  • HKLM:Software\Microsoft\Windows\CurrentVersion\RunOnce

पैरामीटर

कुंजी नाम: वैल्यू नाम
कमांड: रजिस्ट्री उपयोग होने पर चलाया जाने वाला कमांड
रजिस्ट्री कुंजी: वह स्थान जहाँ रजिस्ट्री कुंजी बनाई जाएगी
छिपा हुआ: कुंजी नाम में एक नल बाइट जोड़ देगा; regedit में त्रुटियाँ उत्पन्न करता है
सफाई: बनाई गई कुंजी को हटाता है

सफाई के लिए कुंजी नाम और रजिस्ट्री कुंजी (स्थान) की आवश्यकता होती है।


ElevatedUserInitRegKey

विवरण

निर्दिष्ट स्थान पर एक रजिस्ट्री कुंजी बनाएँ या संशोधित करें।

  • HKLM:Software\Microsoft\Windows NT\CurrentVersion\Winlogon [UserInit]

पैरामीटर

कुंजी नाम: वैल्यू नाम
कमांड: रजिस्ट्री उपयोग होने पर चलाया जाने वाला कमांड
रजिस्ट्री कुंजी: वह स्थान जहाँ रजिस्ट्री कुंजी बनाई जाएगी
छिपा हुआ: कुंजी नाम में एक नल बाइट जोड़ देगा; regedit में त्रुटियाँ उत्पन्न करता है
सफाई: बनाई गई कुंजी को हटाता है

सफाई के लिए कुंजी नाम और रजिस्ट्री कुंजी (स्थान) की आवश्यकता होती है।
UserInit: स्वचालित रूप से 'कुंजी नाम' और 'रजिस्ट्री कुंजी' सेट करता है।


UserRegKey

विवरण

निर्दिष्ट स्थान पर एक रजिस्ट्री कुंजी बनाएँ या संशोधित करें।

  • HKCU:Software\Microsoft\Windows\CurrentVersion\Run
  • HKCU:Software\Microsoft\Windows\CurrentVersion\RunOnce

पैरामीटर

कुंजी नाम: वैल्यू नाम
कमांड: रजिस्ट्री उपयोग होने पर चलाया जाने वाला कमांड
रजिस्ट्री कुंजी: वह स्थान जहाँ रजिस्ट्री कुंजी बनाई जाएगी
छिपा हुआ: कुंजी नाम में एक नल बाइट जोड़ देगा; regedit में त्रुटियाँ उत्पन्न करता है
सफाई: बनाई गई कुंजी को हटाता है

सफाई के लिए कुंजी नाम और रजिस्ट्री कुंजी (स्थान) की आवश्यकता होती है।


UserInitMprRegKey

विवरण

निर्दिष्ट स्थान पर एक रजिस्ट्री कुंजी बनाएँ या संशोधित करें।

  • HKCU:Environment [UserInitMprLogonScript]

पैरामीटर

कुंजी नाम: वैल्यू नाम
कमांड: रजिस्ट्री उपयोग होने पर चलाया जाने वाला कमांड
रजिस्ट्री कुंजी: वह स्थान जहाँ रजिस्ट्री कुंजी बनाई जाएगी
छिपा हुआ: कुंजी नाम में एक नल बाइट जोड़ देगा; regedit में त्रुटियाँ उत्पन्न करता है
सफाई: बनाई गई कुंजी को हटाता है

सफाई के लिए कुंजी नाम और रजिस्ट्री कुंजी (स्थान) की आवश्यकता होती है।
UserInitMprLogonScript: स्वचालित रूप से 'कुंजी नाम' और 'रजिस्ट्री कुंजी' सेट करता है।


शेड्यूल्ड टास्क COM हाईजैक

विवरण

एक शेड्यूल्ड टास्क के COM हैंडलर को हाईजैक करता है। HKCU:\Software\Classes\CLSID\\InprocServer32 पर एक रजिस्ट्री कुंजी बनाता है जो एक DLL को इंगित करती है।

पैरामीटर

क्लास आईडी: वह CLSID जो टास्क के COM हैंडलर CLSID से मेल खाता है
DLL पथ: उस DLL का पथ जिसे लोड किया जाना है
सफाई: बनाई गई कुंजी को हटाता है


ड्राइवर

DisableDSE

विश्वसनीयता (0-5)एलिवेटेडटिप्पणियाँ
4हाँसंभावित रूप से लक्ष्य सिस्टम को BSOD कर सकता है

विवरण

कर्नेल मेमोरी में मनमाना रीड/राइट करने वाला एक कमजोर हस्ताक्षरित ड्राइवर (NalDrv/iqvm64.sys) लोड करता है। Driver Signature Enforcement (DSE) को अक्षम करने के लिए ntoskrnl.exe g_CiEnabled या CI.dll g_CiOptions फ्लैग को बदलता है।
एक गैर-हस्ताक्षरित ड्राइवर (Interceptor/Interceptor.sys) लोड करता है, फिर DSE फ्लैग मानों को पुनर्स्थापित करता है। हस्ताक्षरित और गैर-हस्ताक्षरित दोनों ड्राइवर डिस्क पर लिखे जाते हैं।

ड्राइवरMD5 checksum
iqvm64.sys1898ceda3247213c084f43637ef163b3
Interceptor.sys508c8943359717cfa0c77b61ebea2118

पैरामीटर

कमजोर ड्राइवर स्थान: डिस्क पर बाइनरी रूप में कमजोर हस्ताक्षरित ड्राइवर का स्थान
दुर्भावनापूर्ण ड्राइवर स्थान: डिस्क पर बाइनरी रूप में दुर्भावनापूर्ण गैर-हस्ताक्षरित ड्राइवर का स्थान
कमजोर ड्राइवर नाम: रजिस्ट्री कुंजी '\Registry\Machine\System\CurrentControlSet\Services\' बनाने के लिए उपयोग किया जाने वाला नाम
कमजोर ड्राइवर डिवाइस नाम: ड्राइवर से संपर्क करने के लिए उपयोग किया जाने वाला नाम '\DosDevices\'
दुर्भावनापूर्ण ड्राइवर नाम: रजिस्ट्री कुंजी '\Registry\Machine\System\CurrentControlSet\Services\' बनाने के लिए उपयोग किया जाने वाला नाम
दुर्भावनापूर्ण ड्राइवर डिवाइस नाम: ड्राइवर से संपर्क करने के लिए उपयोग किया जाने वाला नाम '\DosDevices\'
लक्ष्य पथ: कमजोर और दुर्भावनापूर्ण ड्राइवर फाइलों को लिखने के लिए अस्थायी पथ


UnloadDriver

विश्वसनीयता (0-5)एलिवेटेडटिप्पणियाँ
5हाँ-

विवरण

प्रदान की गई रजिस्ट्री कुंजी का उपयोग करके लक्ष्य पर एक ड्राइवर अनलोड करता है और निर्दिष्ट पथ पर डिस्क से बाइनरी हटा देता है।

पैरामीटर

ड्राइवर रजिस्ट्री कुंजी: ड्राइवर अनलोड करने के लिए उपयोग की जाने वाली रजिस्ट्री कुंजी '\Registry\Machine\System\CurrentControlSet\Services\'
ड्राइवर स्थापना पथ: डिस्क पर ड्राइवर का स्थान


Intercept

विश्वसनीयता (0-5)एलिवेटेडटिप्पणियाँ
4नहींसंभावित रूप से लक्ष्य सिस्टम को BSOD कर सकता है

विवरण

जानकारी: Interceptor ड्राइवर से क्वेरी करें
हुक: लक्ष्य ड्राइवर के प्रमुख कार्यों (IRP) को हुक करें
अनहुक: लक्ष्य ड्राइवर के प्रमुख कार्यों को पुनर्स्थापित करें
पैच: लक्ष्य कर्नेल कॉलबैक को पैच करें
रीस्टोर: लक्ष्य कर्नेल कॉलबैक को पुनर्स्थापित करें

पैरामीटर: जानकारी

विक्रेता: समर्थित विक्रेताओं को प्रदर्शित करें
मॉड्यूल: सभी लोडेड ड्राइवरों को क्वेरी करें
हुक किए गए मॉड्यूल: सभी हुक किए गए ड्राइवरों को प्रदर्शित करें
कॉलबैक: सभी पंजीकृत कॉलबैक को क्वेरी करें

पैरामीटर: हुक

इंडेक्स: इंडेक्स द्वारा ड्राइवर हुक करें (देखें: जानकारी - मॉड्यूल)
नाम: डिवाइस नाम द्वारा ड्राइवर हुक करें (\Device\Name)
मान: इंडेक्स की अल्पविराम से अलग सूची (सशर्त)
नाम: लक्ष्य ड्राइवर का डिवाइस नाम (सशर्त)

जब 'Index' चुना जाता है तो Values आवश्यक हैं। जब 'Name' चुना जाता है तो Name आवश्यक है।

पैरामीटर: अनहुक

इंडेक्स: इंडेक्स द्वारा ड्राइवर अनहुक करें (देखें: जानकारी - हुक किए गए मॉड्यूल)
सभी: सभी हुक किए गए ड्राइवरों को अनहुक करें
मान: इंडेक्स की अल्पविराम से अलग सूची (सशर्त)

जब 'Index' चुना जाता है तो Values आवश्यक हैं।

पैरामीटर: पैच

विक्रेता: विक्रेता मॉड्यूल(s) से जुड़े सभी कॉलबैक पैच करें
मॉड्यूल: मॉड्यूल(s) से जुड़े सभी कॉलबैक पैच करें
प्रक्रिया: प्रोसेस कॉलबैक(s) पैच करें
थ्रेड: थ्रेड कॉलबैक(s) पैच करें
छवि: इमेज कॉलबैक(s) पैच करें
रजिस्ट्री: रजिस्ट्री कॉलबैक(s) पैच करें
ऑब्जेक्ट प्रोसेस: ऑब्जेक्ट प्रोसेस कॉलबैक(s) पैच करें
ऑब्जेक्ट थ्रेड: ऑब्जेक्ट थ्रेड कॉलबैक(s) पैच करें
मान: इंडेक्स की अल्पविराम से अलग सूची (देखें: जानकारी - कॉलबैक) (सशर्त)
नाम: मॉड्यूल नामों की अल्पविराम से अलग सूची या एकल विक्रेता नाम (देखें: जानकारी - विक्रेता) (सशर्त)

जब 'process', 'thread', 'image', 'registry', 'object process' या 'object thread' चुना जाता है तो Values आवश्यक हैं। जब 'vendor' या 'module' चुना जाता है तो Name आवश्यक है।

पैरामीटर: रीस्टोर

विक्रेता: विक्रेता मॉड्यूल(s) से जुड़े सभी कॉलबैक रीस्टोर करें
मॉड्यूल: मॉड्यूल(s) से जुड़े सभी कॉलबैक रीस्टोर करें
प्रक्रिया: प्रोसेस कॉलबैक(s) रीस्टोर करें
थ्रेड: थ्रेड कॉलबैक(s) रीस्टोर करें
छवि: इमेज कॉलबैक(s) रीस्टोर करें
रजिस्ट्री: रजिस्ट्री कॉलबैक(s) रीस्टोर करें
ऑब्जेक्ट प्रोसेस: ऑब्जेक्ट प्रोसेस कॉलबैक(s) रीस्टोर करें
ऑब्जेक्ट थ्रेड: ऑब्जेक्ट थ्रेड कॉलबैक(s) रीस्टोर करें
सभी: सभी कॉलबैक रीस्टोर करें
मान: इंडेक्स की अल्पविराम से अलग सूची (देखें: जानकारी - कॉलबैक) (सशर्त)
नाम: मॉड्यूल नामों की अल्पविराम से अलग सूची या एकल विक्रेता नाम (देखें: जानकारी - विक्रेता) (सशर्त)

जब 'process', 'thread', 'image', 'registry', 'object process' या 'object thread' चुना जाता है तो Values आवश्यक हैं। जब 'vendor' या 'module' चुना जाता है तो Name आवश्यक है।


टूल डाउनलोड करें