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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
inquisitor — निजी दृष्टिकोण वाली संगठन-केंद्रित OSINT फुटप्रिंटिंग जो recon-ng और Maltego से प्रेरित है। | Kitploit
उपकरण/GitHubGitHub/penafieljlm/inquisitor
OSINT (खुला स्रोत खुफिया)टोहीDNS और सबडोमेन गणनाजानकारी एकत्र करनाखतरा खुफियाईमेल संग्रह
GitHubpenafieljlm/inquisitor

inquisitor

निजी दृष्टिकोण वाली संगठन-केंद्रित OSINT फुटप्रिंटिंग जो recon-ng और Maltego से प्रेरित है।

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

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

सभी देखें →

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

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

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

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

Inquisitor

सूचना

यह प्रोजेक्ट केवल आंशिक रूप से पूरा है और मैंने अभी तक नीचे दिए गए ब्लॉग पोस्ट में वर्णित कई सुविधाओं को लागू नहीं किया है: https://penafieljlm.com/2017/07/14/inquisitor/।

Inquisitor कंपनियों और संगठनों के बारे में ओपन सोर्स इंटेलिजेंस (OSINT) स्रोतों के उपयोग से जानकारी एकत्र करने के लिए एक सरल उपकरण है। यह Maltego और recon-ng के संचालन से काफी प्रेरित है, और यह उपकरण उन उपकरणों की कुछ विशेषताओं को पुनः लागू करता है, लेकिन एक आसान-से-उपयोग कार्यप्रवाह बनाने के लिए संपत्ति प्रकारों के ऊपर राय-आधारित अर्थशास्त्र की एक अतिरिक्त परत जोड़ता है।

Inquisitor की प्रमुख विशेषताओं में शामिल हैं:

  1. किसी संपत्ति के स्वामित्व लेबल को कैस्केड करने की क्षमता (जैसे, यदि कोई पंजीकरणकर्ता नाम लक्ष्य संगठन से संबंधित माना जाता है, तो उस नाम से पंजीकृत होस्ट और नेटवर्क को लक्ष्य संगठन से संबंधित के रूप में चिह्नित किया जाएगा)
  2. Google और Shodan जैसे ओपन स्रोतों से पूछताछ करके संपत्तियों को अन्य संभावित रूप से संबंधित संपत्तियों में बदलने की क्षमता
  3. एक जूम करने योग्य पैक लेआउट के माध्यम से उन संपत्तियों के संबंधों को देखने की क्षमता

अवधारणा

Inquisitor की पूरी अवधारणा इस विचार के इर्द-गिर्द घूमती है कि लक्ष्य संगठन के बारे में पहले से ज्ञात जानकारी के आधार पर ओपन स्रोतों से जानकारी निकाली जाए। Inquisitor के संदर्भ में इन्हें "ट्रांसफॉर्म" कहा जाता है। संबंधित जानकारी किसी ज्ञात संपत्ति से मेटाडेटा के आधार पर तुरंत प्राप्त की जा सकती है, जो whois और इंटरनेट रजिस्ट्री जैसे ओपन स्रोतों से भी प्राप्त किया जा सकता है।

इन अवधारणाओं पर इस ब्लॉग लेख में अधिक विस्तार से चर्चा की गई है: https://penafieljlm.com/2017/07/14/inquisitor/

स्थापना

Inquisitor को स्थापित करने के लिए, बस रिपॉजिटरी को क्लोन करें, उसमें प्रवेश करें, और स्थापना स्क्रिप्ट निष्पादित करें।``` pip install Cython click git clone [email protected]:penafieljlm/inquisitor.git cd inquisitor python setup.py install

root@kitploit:~
## उपयोग

Inquisitor के पाँच मूलभूत कमांड हैं जिनमें `scan`, `status`, `classify`, `dump`, और `visualize` शामिल हैं।```
usage: inq [-h] {scan,status,classify,dump,visualize} ...

optional arguments:
  -h, --help            show this help message and exit

command:
  {scan,status,classify,dump,visualize}
                        The action to perform.
    scan                Search OSINT sources for intelligence based on known
                        assets belonging to the target.
    status              Prints out the current status of the specified
                        intelligence database.
    classify            Classifies an existing asset as either belonging or
                        not belonging to the target. Adds a new asset with the
                        specified classification if none is present.
    dump                Dumps the contents of the database into a JSON file
    visualize           Create a D3.js visualization based on the contents of
                        the specified intelligence database.

Scan

स्कैन मोड में, उपकरण आपके खुफिया डेटाबेस में मौजूद सभी संपत्तियों के लिए सभी उपलब्ध ट्रांसफॉर्म चलाता है। सुनिश्चित करें कि आप नीचे बताए गए विभिन्न OSINT स्रोतों के लिए API कुंजियाँ बनाएँ और उन्हें स्क्रिप्ट को प्रदान करें, अन्यथा उन स्रोतों का उपयोग करने वाले ट्रांसफॉर्म को छोड़ दिया जाएगा। साथ ही, सुनिश्चित करें कि आप पहले classify कमांड का उपयोग करके अपने खुफिया डेटाबेस में कुछ ज्ञात स्वामित्व वाली लक्ष्य संपत्तियों को सीड करें, क्योंकि यदि डेटाबेस में कोई स्वामित्व वाली संपत्ति नहीं है, तो ट्रांसफॉर्म करने के लिए कुछ भी नहीं होगा।``` usage: inq scan [-h] [--google-dev-key GOOGLE_DEV_KEY] [--google-cse-id GOOGLE_CSE_ID] [--google-limit GOOGLE_LIMIT] [--shodan-api-key SHODAN_API_KEY] [--shodan-limit SHODAN_LIMIT] DATABASE

positional arguments: DATABASE The path to the intelligence database to use. If specified file does not exist, a new one will be created.

optional arguments: -h, --help show this help message and exit --google-dev-key GOOGLE_DEV_KEY Specifies the developer key to use to query Google Custom Search. Visit the Google APIs Console (http://code.google.com/apis/console) to get an API key. If notspecified, the script will simply skip asset transforms that involve Google Search. --google-cse-id GOOGLE_CSE_ID Specifies the custom search engine to query. Visit the Google Custom Search Console (https://cse.google.com/cse/all) to create your own Google Custom Search Engine. If not specified, the script will simply skip asset transforms that involve Google Search. --google-limit GOOGLE_LIMIT The number of pages to limit Google Search to. This is to avoid exhausting your daily quota. --shodan-api-key SHODAN_API_KEY Specifies the API key to use to query Shodan. Log into your Shodan account (https://www.shodan.io/) and look at the top right corner of the page in order to view your API key. If not specified, the script will simply skip asset transforms that involve Shodan. --shodan-limit SHODAN_LIMIT The number of pages to limit Shodan Search to. This is to avoid exhausting your daily quota.

root@kitploit:~
### स्थिति

स्थिति मोड में, उपकरण आपके स्कैन डेटाबेस की स्थिति का एक त्वरित सारांश प्रिंट करता है।```
usage: inq status [-h] [-s] DATABASE

positional arguments:
  DATABASE      The path to the intelligence database to use. If specified
                file does not exist, a new one will be created.

optional arguments:
  -h, --help    show this help message and exit
  -s, --strong  Indicates if the status will be based on the strong ownership
                classification.

वर्गीकृत करें

वर्गीकृत मोड में, आप मैन्युअल रूप से संपत्तियां जोड़ सकते हैं और Intelligence Database में पहले से मौजूद संपत्तियों को पुनः वर्गीकृत कर सकते हैं। आपको इस कमांड का उपयोग अपने Intelligence Database को ज्ञात स्वामित्व वाले लक्ष्य संपत्तियों के साथ सीड करने के लिए करना चाहिए।``` usage: inq classify [-h] [-ar REGISTRANT [REGISTRANT ...]] [-ur REGISTRANT [REGISTRANT ...]] [-rr REGISTRANT [REGISTRANT ...]] [-ab BLOCK [BLOCK ...]] [-ub BLOCK [BLOCK ...]] [-rb BLOCK [BLOCK ...]] [-ah HOST [HOST ...]] [-uh HOST [HOST ...]] [-rh HOST [HOST ...]] [-ae EMAIL [EMAIL ...]] [-ue EMAIL [EMAIL ...]] [-re EMAIL [EMAIL ...]] [-al LINKEDIN [LINKEDIN ...]] [-ul LINKEDIN [LINKEDIN ...]] [-rl LINKEDIN [LINKEDIN ...]] DATABASE

positional arguments: DATABASE The path to the intelligence database to use. If specified file does not exist, a new one will be created.

optional arguments: -h, --help show this help message and exit -ar REGISTRANT [REGISTRANT ...], --accept-registrant REGISTRANT [REGISTRANT ...] Specifies a registrant to classify as accepted. -ur REGISTRANT [REGISTRANT ...], --unmark-registrant REGISTRANT [REGISTRANT ...] Specifies a registrant to classify as unmarked. -rr REGISTRANT [REGISTRANT ...], --reject-registrant REGISTRANT [REGISTRANT ...] Specifies a registrant to classify as rejected. -ab BLOCK [BLOCK ...], --accept-block BLOCK [BLOCK ...] Specifies a block to classify as accepted. -ub BLOCK [BLOCK ...], --unmark-block BLOCK [BLOCK ...] Specifies a block to classify as unmarked. -rb BLOCK [BLOCK ...], --reject-block BLOCK [BLOCK ...] Specifies a block to classify as rejected. -ah HOST [HOST ...], --accept-host HOST [HOST ...] Specifies a host to classify as accepted. -uh HOST [HOST ...], --unmark-host HOST [HOST ...] Specifies a host to classify as unmarked. -rh HOST [HOST ...], --reject-host HOST [HOST ...] Specifies a host to classify as rejected. -ae EMAIL [EMAIL ...], --accept-email EMAIL [EMAIL ...] Specifies a email to classify as accepted. -ue EMAIL [EMAIL ...], --unmark-email EMAIL [EMAIL ...] Specifies a email to classify as unmarked. -re EMAIL [EMAIL ...], --reject-email EMAIL [EMAIL ...] Specifies a email to classify as rejected. -al LINKEDIN [LINKEDIN ...], --accept-linkedin LINKEDIN [LINKEDIN ...] Specifies a LinkedIn Account to classify as accepted. -ul LINKEDIN [LINKEDIN ...], --unmark-linkedin LINKEDIN [LINKEDIN ...] Specifies a LinkedIn Account to classify as unmarked. -rl LINKEDIN [LINKEDIN ...], --reject-linkedin LINKEDIN [LINKEDIN ...] Specifies a LinkedIn Account to classify as rejected.

root@kitploit:~
### Dump

डंप मोड में, आप इंटेलिजेंस डेटाबेस की सामग्री को मानव-पठनीय JSON फ़ाइल में डंप करने में सक्षम होंगे।```
usage: inq dump [-h] [-j FILE] [-a] DATABASE

positional arguments:
  DATABASE              The path to the intelligence database to use. If
                        specified file does not exist, a new one will be
                        created.

optional arguments:
  -h, --help            show this help message and exit
  -j FILE, --json FILE  The path to dump the JSON file to. Overwrites existing
                        files.
  -a, --all             Include rejected assets in dump.

Visualize

विज़ुअलाइज़ मोड में, आप इंटेलिजेंस रिपॉजिटरी का एक पदानुक्रमित विज़ुअलाइज़ेशन प्राप्त कर सकेंगे।``` usage: inq visualize [-h] [-l] DATABASE

positional arguments: DATABASE The path to the intelligence database to use. If specified file does not exist, a new one will be created.

optional arguments: -h, --help show this help message and exit -l, --last Simply open the last visualization generated instead of creating a new one.

root@kitploit:~
## कार्यप्रवाह (Workflow)

अब जब आप Inquisitor की बुनियादी विशेषताओं को जान गए हैं, तो यह सीखने का समय है कि इसका *वास्तव में* उपयोग कैसे करें। Inquisitor को निम्नलिखित चरणों को ध्यान में रखकर लिखा गया है:

### बीजारोपण (Seeding)

इस चरण में, आपके Intelligence Database में अभी तक कुछ भी नहीं है। हमें कहीं से शुरुआत करनी होगी, इसलिए आगे बढ़ें और डेटाबेस में उन assets को seed करें जिनके बारे में आप जानते हैं कि वे आपके लक्ष्य संगठन से संबंधित हैं। आप ऐसा `classify` कमांड का उपयोग करके कर सकते हैं।

### स्कैनिंग (Scanning)

अब डेटाबेस में ऐसे assets हैं जो आपके लक्ष्य संगठन से संबंधित माने जाते हैं। फिर आप स्कैनिंग के साथ आगे बढ़ सकते हैं। आप ऐसा `scan` कमांड का उपयोग करके कर सकते हैं।

जब आप अपने Intelligence Database पर `scan` कमांड का उपयोग करते हैं, तो Inquisitor उन assets के `transform` मेथड्स को चलाता है जिन्हें `accepted` के रूप में वर्गीकृत किया गया है। स्कैनिंग समाप्त होने के बाद, आपके पास अधिक assets होंगे जो संभावित रूप से आपके लक्ष्य संगठन से संबंधित हो सकते हैं।

यदि आपके पास कोई नया asset नहीं आता है, तो आप या तो अपने Intelligence Database को नई जानकारी से seed कर सकते हैं, या बस Reporting चरण पर आगे बढ़कर प्रक्रिया को समाप्त कर सकते हैं।

### वर्गीकरण (Classifying)

जबकि Inquisitor आपके लिए स्वचालित asset वर्गीकरण करता है, हो सकता है कि यह कुछ उन assets को छोड़ दे जो वास्तव में आपके लक्ष्य संगठन से संबंधित हैं।

जब ऐसा होता है, तो आपको डेटाबेस सामग्री की जांच करनी होगी और assets को मैन्युअल रूप से वर्गीकृत करना होगा। आमतौर पर, आप **Registrant** assets पर ध्यान देना चाहेंगे क्योंकि उस asset प्रकार के लिए स्वचालित रूप से स्वामित्व निर्धारित करने का कोई तरीका नहीं है। साथ ही, अधिकांश अन्य asset प्रकार यह निर्धारित करने के लिए Registrant assets के स्वामित्व वर्गीकरण पर निर्भर करते हैं कि वे आपके लक्ष्य से संबंधित हैं या नहीं, इसलिए निश्चित रूप से अपने Registrant assets पर ध्यान देना सबसे अच्छा है। इसके अतिरिक्त, शुरुआत में आपके पास बहुत सारे Registrant assets नहीं होते, इसलिए उन्हें छांटना इतना मुश्किल नहीं होगा।

### रिपोर्टिंग (Reporting)

आप `visualize` कमांड या `dump` कमांड का उपयोग करके अपने लक्ष्य संगठन से संबंधित assets का विज़ुअलाइज़ेशन उत्पन्न कर सकते हैं।

## डेमो (Demo)

मेरे पास निम्नलिखित लिंक पर टूल चलाने के वीडियो प्रदर्शन हैं: https://drive.google.com/open?id=0B_O70BVu38TRclo5dWRBWkdTTWc

हालांकि, मैं scan कमांड के रन को पूरी तरह से रिकॉर्ड नहीं कर पाया क्योंकि मेरा मुफ्त स्क्रीन रिकॉर्डर केवल 10 मिनट तक रिकॉर्ड करता है।

## विकास (Development)

Inquisitor प्रोजेक्ट निम्नलिखित प्रारूप में व्यवस्थित है:```
.
|-- README.md
|-- inquisitor
|   |-- __init__.py
|   |-- assets
|   |   |-- __init__.py
|   |   |-- block.py
|   |   |-- email.py
|   |   |-- host.py
|   |   |-- linkedin.py
|   |   `-- registrant.py
|   |-- extractors
|   |   |-- __init__.py
|   |   `-- emails.py
|   `-- sources
|       |-- __init__.py
|       |-- google_search.py
|       `-- shodan_search.py
|-- inq
|-- report
|   `-- index.html
|-- setup.py
`-- tests
    |-- __init__.py
    `-- test_inq.py

इसके तीन मुख्य मॉड्यूल हैं जिनके नाम assets, extractors, और sources हैं। मुख्य स्क्रिप्ट inq कहलाती है।

एक डेवलपर के रूप में आप ज़्यादातर सिस्टम में नए प्रकार के संसाधन (assets) जोड़ने में रुचि लेंगे, इसलिए डेवलपर गाइड मुख्य रूप से इसी पर केंद्रित होगा।

रिपॉजिटरी

इससे पहले कि हम वास्तव में संसाधन वर्गों (asset classes) को लागू करने की ओर बढ़ें, हमें पहले यह समझना होगा कि खुफिया डेटाबेस (Intelligence Database) के साथ कैसे इंटरैक्ट किया जाए, क्योंकि जब हम अपने संसाधन वर्गों से संबंधित संसाधन प्राप्त करेंगे तो हम इसके साथ इंटरैक्ट करेंगे।

खुफिया डेटाबेस का स्रोत कोड inquisitor/__init__.py फ़ाइल में संग्रहीत है। खुफिया डेटाबेस के तार्किक आवरण (logical wrapper) का वास्तविक नाम IntelligenceRepository है।

आपको केवल संसाधन वर्गों से IntelligenceRepository.get_asset_string फ़ंक्शन को कॉल करने की आवश्यकता है, क्योंकि खुफिया डेटाबेस में नए संसाधन जोड़ना inq स्क्रिप्ट में scan मॉड्यूल की जिम्मेदारी है। आप इस फ़ंक्शन का उपयोग अधिकतर संसाधनों के इंस्टेंस बनाने या डेटाबेस से उन्हें प्राप्त करने के लिए करेंगे यदि वे मौजूद हों। यह फ़ंक्शन तब महत्वपूर्ण है जब आप अपने संसाधन वर्गों के related और transform फ़ंक्शन से संसाधन लौटाते हैं, क्योंकि नए संसाधन ऑब्जेक्ट बनाना महँगा है, चूँकि उनमें से कुछ आरंभीकरण के दौरान नेटवर्क संसाधनों का उपयोग करते हैं।``` Function

IntelligenceRepository.get_asset_string(asset_type, identifier, create=False, store=False)

Description

root@kitploit:~
Retrieves the primary key and asset object for the asset with the provided 
type and identifier.

Parameters

root@kitploit:~
asset_type: class, required

    The type of the asset to retrieve from the Intelligence Database. You
    will actually have to pass the class object of the asset type you want
    to retrieve.

identifier: any, required

    The identifier of the asset to retrieve. Consider the identifier as the
    unique attribute of an asset object. As for which attribute is to be
    used to identify an asset, it depends on the contents of the OBJECT_ID
    variable in the asset module.

create: bool, optional, default=False

    When no matching asset object is found, a new one will be created and 
    returned if this parameter is set to True. The new asset will not
    necessarily be stored in the Intelligence Database unless specified
    using the "store" parameter. However, I suggest you do not do this as
    adding assets to the Intelligence Database is the responsibility of
    another module.

store: bool, optional, default=False

    When a new asset is created when none is found, the new one will be
    stored in the Intelligence Database. As said previously, I suggest that
    you do not do this as adding assets to the Intelligence Database is the
    responsibility of another module.

Returns

root@kitploit:~
A two-element tuple where the first element is the database primary key of 
the element returned, and the second element is the deserialized asset 
object retrieved from the database.

None if the asset was not found.

If the asset was not found and the create flag was set to True, the primary
key member of the tuple will be set to None.
root@kitploit:~
### संपत्तियाँ

नया संपत्ति प्रकार बनाने के लिए, `inquisitor/assets` निर्देशिका के अंदर एक नई फ़ाइल बनाएं और उसमें निम्नलिखित स्केलेटन कोड पेस्ट करें:```python
import inquisitor.assets

class ASSET_NAMEValidateException(Exception):
    pass

def canonicalize(ASSET_IDENTIFIER):
    return ASSET_IDENTIFIER

def main_classify_args(parser):
    parser.add_argument(
        '-aASSET_NAME_LETTER', '--accept-ASSET_NAME',
        metavar='ASSET_NAME',
        type=canonicalize,
        nargs='+',
        help='Specifies a ASSET_NAME to classify as accepted.',
        dest='ASSET_NAMEs_accepted',
        default=list(),
    )
    parser.add_argument(
        '-uASSET_NAME_LETTER', '--unmark-ASSET_NAME',
        metavar='ASSET_NAME',
        type=canonicalize,
        nargs='+',
        help='Specifies a ASSET_NAME to classify as unmarked.',
        dest='ASSET_NAMEs_unmarked',
        default=list(),
    )
    parser.add_argument(
        '-rASSET_NAME_LETTER', '--reject-ASSET_NAME',
        metavar='ASSET_NAME',
        type=canonicalize,
        nargs='+',
        help='Specifies a ASSET_NAME to classify as rejected.',
        dest='ASSET_NAME_rejected',
        default=list(),
    )

def main_classify_canonicalize(args):
    accepted = set(args.ASSET_NAMEs_accepted)
    unmarked = set(args.ASSET_NAMEs_unmarked)
    rejected = set(args.ASSET_NAME_rejected)
    redundant = set.intersection(accepted, unmarked, rejected)
    if redundant:
        raise ValueError(
            ('Conflicting classifications for ASSET_NAMEs '
            ': {}').format(list(redundant))
        )
    accepted = set([canonicalize(a) for a in accepted])
    unmarked = set([canonicalize(a) for a in unmarked])
    rejected = set([canonicalize(a) for a in rejected])
    return (accepted, unmarked, rejected)

class ASSET_NAME(inquisitor.assets.Asset):

    def __init__(self, ASSET_IDENTIFIER, owned=None):
        super(self.__class__, self).__init__(owned=owned)
        self.ASSET_IDENTIFIER = canonicalize(ASSET_IDENTIFIER)
        # TODO: Perform other initialization actions here

    def __eq__(self, other):
        if not isinstance(other, self.__class__):
            return False
        return self.ASSET_IDENTIFIER == other.ASSET_IDENTIFIER

    def related(self, repo):
        # Prepare the results
        results = set()
        # TODO: Create related assets here based on the attributes of this asset
        # Return the results
        return results

    def transform(self, repo, sources):
        # Prepare the results
        assets = set()
        # Google Transforms
        if sources.get('google'):
            subassets = self.cache_transform_get('google', repo)
            if not subassets:
                # Acquire API
                google = sources['google']
                # TODO: Perform Google queries here and the results to 'subassets'
                # Cache The Transform
                self.cache_transform_store('google', subassets)
            assets.update(subassets)
        # Shodan Transforms
        if sources.get('shodan'):
            subassets = self.cache_transform_get('shodan', repo)
            if not subassets:
                # Acquire API
                shodan = sources['shodan']
                # TODO: Perform Google queries here and the results to 'subassets'
                # Cache The Transform
                self.cache_transform_store('shodan', subassets)
            assets.update(subassets)
        # Return the results
        return assets

    def is_owned(self, repo):
        if self.owned:
            return True
        # TODO: Automatically determine ownership based on repo contents
        return False

    def parent_asset(self, repo):
        # TODO: Return parent asset based on repo contents
        return None

REPOSITORY = 'ASSET_REPOSITORY'
ASSET_CLASS = ASSET_NAME
OBJECT_ID = 'ASSET_IDENTIFIER'

अब निम्नलिखित स्ट्रिंग्स को उपयुक्त मानों से बदलें

  • ASSET_NAME : आपकी संपत्ति का उचित नाम (जैसे, रजिस्ट्रेंट, होस्ट, आदि)
  • ASSET_IDENTIFIER : आपकी संपत्ति के पहचानकर्ता गुण का नाम
  • ASSET_NAME_LETTER : आपकी संपत्ति के नाम का पहला अक्षर लोअरकेस में
  • ASSET_REPOSITORY : आपकी संपत्ति के नाम के बहुवचन रूप का लोअरकेस

अंत में, inquisitor/__init__.py में, अपनी संपत्ति को ASSET_MODULES सूची में पंजीकृत करें। सुनिश्चित करें कि आप अपनी नई संपत्ति को प्रश्नगत फ़ाइल से आयात करें।

बधाई हो! इस बिंदु तक, आपके पास अब एक नया काम करने वाला संपत्ति प्रकार है!

हालांकि, आपको निम्नलिखित विधियों को लागू करने की आवश्यकता होगी ताकि यह सुनिश्चित हो सके कि आपकी संपत्तियाँ अन्य संपत्ति प्रकारों से सहसंबंधित हों:``` Function

root@kitploit:~
related

Description

root@kitploit:~
  Returns the set of assets directly related to the asset in question (i.e.
  those that can be derived without querying a search engine).

  When creating asset objects, make sure you use the 
  IntelligenceRepository.get_asset_string method instead of instatiating a 
  new one your self so the asset can be returned from the repository if it 
  exists.

  Set the create flag to True when calling the method in question in order
  to return a new object when one isn't found.

  Set the store flag to False as appending assets is the job of another
  module.

Parameters

root@kitploit:~
repo: IntelligenceRepository

    The Intelligence Repository that is being used in the current context.

Returns

root@kitploit:~
Set of assets directly related to the asset in question. 
root@kitploit:~
Next, in the `bof.c` file, the `go` function updates with:

In the `websockets_bof` folder, edit the `config.json` file as follows:

The C2 path should contain a valid URI that matches both the Malleable C2 Profile and the Nginx reverse proxy rules.

The User-Agent string and the host header should be adjusted accordingly.

You can generate a new Cobalt Strike random profile using the C2Concealer application found below:

Source: https://github.com/FortyNorthSecurity/C2concealer

Note! If you set up the redirectors using the provided shell scripts, the web server configuration will include the path `/rs`. Thus, the value of `/jquery-3.3.1.min.js` in the Malleable profile should be replaced with `/rs/jquery-3.3.1.min.js`.

Next, modify the profiles to include the user-agent string you have chosen.

Finally, build the BOF from the `websockets_bof` folder by running `make`.

Under the hood, the Makefile executes:```
Function

    transform

Description
  
      Returns the set of assets potentially related to the asset in question
      (i.e. those that can be derived by querying a search engine).

      You may access search engine objects through the provided sources
      parameter.

      Each search engine object has a transform method which automatically
      creates asset objects for you. You just need to provide it the repository
      and your query string, and then append the objects it returns to the set
      of assets to be returned by your asset's transform method.

Parameters

    repo: IntelligenceRepository

        The Intelligence Repository that is being used in the current context.

    sources: dict

        The list of search engine objects that are available for use.

Returns

    Set of assets potentially related to the asset in question.
    

चरण 4: सैंपल आउटपुट की जांच करें

टूल को यह जांचना चाहिए कि आउटपुट फाइल में gitleaks-expected-output.json के द्वारा अपेक्षित सभी सीक्रेट शामिल हैं या नहीं। अभी तक, केवल gitleaks टूल के लिए वैलिडेशन लागू किया गया है।

root@kitploit:~
go run main.go validate gitleaks --config-file tests/config-files/gitleaks-config.yaml --expected-output-file tests/sample-outputs/gitleaks-expected-output.json --output-file /tmp/gitleaks-test.json

Function

root@kitploit:~
is_owned

Description

root@kitploit:~
 Determines if there is high confidence that this asset does indeed belong
 to the target. Usually checks for any "strong" classification tag first by
 looking at the contents of the "owned" variable, before performing
 automatic evaluation.

 Automatic evaluation depends on what type of asset you're writing. For
 example, for a Host asset, the secondary sources of determining ownership
 would include looking if its registrant is owned by the target, if it's
 parent domain is owned by the target. etc.

Parameters

root@kitploit:~
repo: IntelligenceRepository

    The Intelligence Repository that is being used in the current context.

Returns

root@kitploit:~
True it is determined with high confidence that this asset does indeed 
belong to the target.
root@kitploit:~
PROTIP: आप प्रत्येक प्लगइन के रिपॉजिटरी को व्यक्तिगत रूप से क्लोन कर सकते हैं...```
Function

    parent_asset

Description
  
     Returns the asset object that is considered the parent of this asset
     object.

Parameters

    repo: IntelligenceRepository

Returns

    The asset object that this asset falls under (e.g. a Block is under a 
    Registrant, a Host is under a Block, a Host is under another Host, an Email
    is under a Host, etc. This is primarily used for visualization.
    

उपरोक्त विधियों को लागू करने के बाद, सुनिश्चित करें कि आप अपनी एसेट के सोर्स कोड के नीचे REPOSITORY, ASSET_CLASS, और OBJECT_ID वेरिएबल्स सेट करें।

संपर्क और नोट्स

स्कैन मोड का पूरी तरह से परीक्षण नहीं किया गया है क्योंकि इसमें शामिल सर्च इंजनों के कोटा संबंधी सीमाएँ हैं। साथ ही, यह प्रोजेक्ट एक सप्ताह लंबी हैकथॉन चुनौती के हिस्से के रूप में जल्दबाजी में बनाया गया था, इसलिए इसमें कई समस्याएं हो सकती हैं। कृपया कोई बग मिलने या कोई प्रश्न होने पर एक इश्यू टिकट बनाएं या मुझसे [email protected] पर संपर्क करें।

अस्वीकरण

यह कार्य Maltego और recon-ng Open Source Intelligence टूल्स द्वारा लागू किए गए दृष्टिकोणों से व्युत्पन्न है। मैंने इन दृष्टिकोणों को उन विचारों के साथ पूरक किया है जो या तो पहले से सामान्य ज्ञान हैं (जैसे whois आपको बताता है कि डोमेन का मालिक कौन है, सबडोमेन अपने मूल डोमेन के स्वामित्व वाले उसी संगठन के हैं - जैसा कि डोमेन नाम ब्रूटफोर्सिंग हमलों से पता चलता है, संगठन अपने स्वामित्व वाले डोमेन नामों के आधिकारिक हैं, आदि), या मूल हैं और मेरे द्वारा अपने शौक के हिस्से के रूप में अपने व्यक्तिगत समय में गढ़े गए थे (जैसे स्वीकार्यता रेटिंग, विभिन्न ट्रांसफॉर्म, वर्गीकरण वंशानुक्रम, आदि)।

इस कार्य का कोई भी घटक मेरे द्वारा अतीत में किसी भी नियोक्ता के लिए किए गए किसी भी कार्य से व्युत्पन्न नहीं हुआ है। पूरी परियोजना, जिसमें प्रूफ-ऑफ-कॉन्सेप्ट भी शामिल है, खरोंच से लिखी गई थी और सूचना सुरक्षा समुदाय के विचारों से संवर्धित की गई थी।

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