Hubble is a modular, open-source security compliance framework. The project provides on-demand profile-based auditing, real-time security event notifications, alerting, and reporting. HubbleStack is a free and open source project made possible by Adobe. https://github.com/adobe

Overview

Welcome to HubbleStack!!

You can find the docs here

You can file an issue here

Follow us on Twitter!

Development

Below are sample instructions to setup a dev environment:

  1. virtualenv myvirtualenv
  2. source myvirtualenv/bin/activate
  3. pip install -r requirements.txt
  4. sudo python setup.py develop
  5. sudo hubble hubble.audit
Comments
  • Documentation on vulners cve (since old cve profile has been deprecated)

    Documentation on vulners cve (since old cve profile has been deprecated)

    I am having trouble getting CVE scan data since the cve scan has been moved to vulners.py

    Is there documentation on this? If so, I will look it over to see if I can figure out what is wrong.

    If not here is the relevant data:

    [root@hostname cve]# pwd
    /srv/salt/hubblestack_data/hubblestack_nova_profiles/cve
    [root@hostname cve]# cat vulners.yaml
    vulners_scanner: True
    vulners_api_key: <my key>
    
    pwd; cat top.nova
    /srv/salt/hubblestack_data/hubblestack_nova_profiles
    # Default top.nova
    #
    # Subscribes to CIS, cve_scan, and misc.yaml for miscellaneous checks
    
    nova:
      '*':
        #- security.meltdown_spectre
        - security.ssh_passwordauthentication
        #- cis.distribution-independent-linux-level-1-all-v1-1-0
        - vulners
    

    Output from hubble audit:

    hubble hubble.audit
    {'Compliance': '0%',
     'Failure': [{'sshd-authenticationmethods-publickey': 'Check for explicitly configured publickey authentication method'},
                 {'sshd-passwordauthentication-no': 'Ensure password authentication is disabled in sshd_config'}]}
    

    Also, I would like to make sure the functionality in the previous scan to be able to use a local json file for CVE data was still supported.

    Bug Packaging Jira 
    opened by AfterSpencer 20
  • /modules/stat_nova.py giving error for RHEL6 minion

    /modules/stat_nova.py giving error for RHEL6 minion

    salt pj-rhel6-sensoring.lab04.local hubble.audit OS_Linux . This is only on RHEL6 VM . We have other linux VM ( Centso6 , Cetos7 , RHEL7 ) but error is specific to RHEL6 which is on Red Hat Enterprise Linux Server release 6.9 (Santiago) .

    pj-rhel6-sensoring.lab04.local:
        ----------
        Compliance:
            68%
        Errors:
            |_
              ----------
              **/modules/stat_nova.py**:
                  ----------
                  data:
                      CommandExecutionError: Path not found: /usr/local/patchagent/patchservice
                  error:
                      exception occurred
        Failure:
            |_
              ----------
              OS_Linux_v12-02:
                  Ensure timezone is set correctly
            |_
              ----------
              OS_Linux_v12-15:
                  SSH Root login disabled
            |_
              ----------
              OS_Linux_v12-16:
                  Ensure iptables modules are loaded
            |_
              ----------
              OS_Linux_v12-10:
                  Ensure sudoers file has non-default commands added to it
            |_
              ----------
              OS_Linux_v12-03:
                  Ensure patchagent services are running
            |_
              ----------
              OS_Linux_v12-05:
                  Ensure swap volume is on separate disk
        Success:
            |_
              ----------
              OS_Linux_V12-11:
                  Root passwd should be set
            |_
              ----------
              OS_Linux_v12-13:
                  No blank passwords allowed
    
    
    
    **salt-minion version**  
    [root@pj-rhel6-sensoring tmp]# salt-minion -V
    Salt Version:
               Salt: 2017.7.4
    
    Dependency Versions:
               cffi: Not Installed
           cherrypy: Not Installed
           dateutil: Not Installed
          docker-py: Not Installed
              gitdb: Not Installed
          gitpython: Not Installed
              ioflo: Not Installed
             Jinja2: 2.8.1
            libgit2: Not Installed
            libnacl: Not Installed
           M2Crypto: Not Installed
               Mako: Not Installed
       msgpack-pure: Not Installed
     msgpack-python: 0.4.6
       mysql-python: Not Installed
          pycparser: Not Installed
           pycrypto: 2.6.1
       pycryptodome: Not Installed
             pygit2: Not Installed
             Python: 2.7.14 (default, Jan 31 2018, 02:12:13)
       python-gnupg: Not Installed
             PyYAML: 3.11
              PyZMQ: 14.5.0
               RAET: Not Installed
              smmap: Not Installed
            timelib: Not Installed
            Tornado: 4.2.1
                ZMQ: 4.0.5
    
    System Versions:
               dist: redhat 6.9 Santiago
             locale: UTF-8
            machine: x86_64
            release: 2.6.32-696.13.2.el6.x86_64
             system: Linux
            version: Red Hat Enterprise Linux Server 6.9 Santiago
    
    Bug P2 Modules hubble-salt Nova 
    opened by sam0104 18
  • oval_scanner.py and splunk_nova_return.py enhancements/fixes

    oval_scanner.py and splunk_nova_return.py enhancements/fixes

    oval_scanner.py has been refactored to provide more accurate package version comparison and includes some fixes. It also captures greater details about advisories, and splunk_nova_return.py has been refactored to send those details to a Splunk backend. For comparison, this is how data in Splunk looks before the refactor:

    { 
       check_id: RHSA-2015:1705: bind security update (Important)
       check_result: Failure
       description: Vulnerable Package(s): bind-libs-32:9.11.4-9.P2.el7, bind-libs-lite-32:9.11.4-9.P2.el7, bind-license-32:9.11.4-9.P2.el7, bind-utils-32:9.11.4-9.P2.el7
       dest_fqdn: <hostname>
       dest_host: <hostname>
       dest_ip: <ip address>
       job_id: <job_id>
       minion_id: <minion id>
       system_uuid: <system uuid>
    }
    

    After the refactor, the data looks like this:

    { 
       advisory: { 
         RHSA-2020:2344: https://access.redhat.com/errata/RHSA-2020:2344
       }
       check_id: RHSA-2020:2344: bind security update (Important)
       check_result: Failure
       cve: [ 
         { 
           CVE-2020-8616: https://access.redhat.com/security/cve/CVE-2020-8616
         }
         { 
           CVE-2020-8617: https://access.redhat.com/security/cve/CVE-2020-8617
         }
       ]
       description: Vulnerable Package(s): bind-export-libs-32:9.11.4-9.P2.el7, bind-libs-32:9.11.4-9.P2.el7, bind-libs-lite-32:9.11.4-9.P2.el7, bind-license-32:9.11.4-9.P2.el7, bind-utils-32:9.11.4-9.P2.el7
       dest_fqdn: <hostname>
       dest_host: <hostname>
       dest_ip: <ip address>
       impated_pkgs:
         {
           name: bind-export-libs
           version: 32:9.11.4-9.P2.el7
         }
         { 
           name: bind-libs
           version: 32:9.11.4-9.P2.el7
         }
         { 
           name: bind-libs-lite
           version: 32:9.11.4-9.P2.el7
         }
         {
           name: bind-license
           version: 32:9.11.4-9.P2.el7
         }
         {
           name: bind-utils
           version: 32:9.11.4-9.P2.el7
         }
       ]
       job_id: <job id>
       minion_id: <minion id>
       severity: Important
       system_uuid: <system uuid>
    }
    

    The more detailed data gives us the ability to make better dashboards within Splunk, as well as pivot off the specifics to give us better flexibility in reporting.

    Along with this, the oval_scanner.py vulnerability collections are now threaded for faster reporting.

    opened by buddwm 16
  • Logo Idea

    Logo Idea

    Hey there @basepi

    We met briefly at the Adobe Open Source Summit and I said I was interested in creating you a logo for this project. I think I remember you asking for something flattish design? In any case, I've come up with an idea attached here. Let me know if this is something that you're looking for.

    Large: hubble2-sized

    Small: hubble2-sized-small

    opened by timkim 15
  • Adding fdg module for certificate discovery

    Adding fdg module for certificate discovery

    This module is capable of connecting to any port and fetching certificate details for a certificate attached on it. The module is supposed to work in conjunction with fdg's osquery module. The osquery module would supply information about open ports after which this module extracts certificate information.

    Backport Complete 
    opened by MoodyMudit 13
  • splunk DRY things

    splunk DRY things

    I was talking with George Starcher about a minor issue in hubblestack/splunklogging's hec object. I fixed that minor bug, but later learned sendEvent() isn't actually used (just batch events).

    While trying to fix the non-issue I noticed there were four versions of his http_event_collector object and four ways to fetch the options for it. I've attempted to DRY those objects and their _get_options for easier ongoing maintenance. (Suppose the next bug is real, but now we have 4 variants of the HEC to modify.)

    Thoughts welcome.

    opened by jettero 13
  • I think this will sort out The Elusive Signing Bug

    I think this will sort out The Elusive Signing Bug

    For the record, the Elusive Signing Bug is a subtle bug where when a file fails the repo signing checks, it's still sometimes served to the code that was looking for it. It was extremely difficult to reproduce for some reason (even though some people could reproduce it every time).

    I spent a horrific amount of time tracking this down. I finally determined that cp.cache_dir was never meant to be a proper sync. The original authors of hubble.audit.sync provided a clean argument that would file.remove the cache dir to prevent objects deleted from the repo sticking around after being elided.

    The problem is that removing the whole cache and re-downloading it on every schedule loop is expensive, so someone disabled it later. It was probably thought that the regular file_client.channel.fs.update() (which invokes the fileserver.reap_fileserver_cache_dir()) would properly handle these cases; but it definitely does not appear to do so.

    Essentially the problem is the double cache copy situation:

    1. we first copy from the fileserver (roots, or gitfs or whatever) into roots (i.e. /var/cache/hubble/roots)
    2. cp.cache_dir then copies from roots to files (i.e. /var/cache/hubble/files)
    3. the daemon file_client.channel.fs.update() updates the roots (but never attempts to clean up the files copy).
    4. signing needs these files to not be found, which is handled in roots but not files

    It's worth noting that the unwelcome leftover files were at least downloaded in good faith. To get downloaded at all, they either had to be downloaded before signing was a thing or at some point when signing verified they were OK...

    But they should definitely get cleaned up when they fail the signing pass.

    The fix: I taught cp.cache_dir how to notice these files missing in roots that exist in files. It can now remove them automatically during what should have been a proper sync. Note that the old behavior can be restored by setting cleanup_existing=False but I can't think of a scenario where this would be desirable.

    There's still the remaining question: Why did this affect hubble.audit but not audit.run?

    Answer: hubble.audit uses cp.cache_dir to copy the whole thing all at once; but audit.run uses cp.cache_file and checks the result. Specifically checking one file, will indeed reveal the file is missing in roots even if it exists in files as a spurious older file. (module_runner.runner.make_file_available also uses cp.cache_file, so the hubble.audit issue is entirely avoided in the successor).

    my old (wrong) analysis: ~~Basically the problem is that various parts of the hubble code base read from the fileserver cache directly (rather than using the intended interfaces for such tasks). The repo signing checks are injected into the fileserver find_file() mechanisms, which normally trigger a fileserver.reap_cache_dir() hit, causing the file to be deleted from the cache.~~

    ~~But in some cases, apparently, a cache refresh isn't even part of the invocation of the execution module(s) in question. So the "reaping" never happens (at least not during the execution) and the failing file is serv^H^H^H^H read from the cache as if it was OK.~~

    ~~All this means, that it feels like a race condition to me. Eventually there would have been a cache refresh that would have cleared the failing file (via the reaping mechanism). This patch simply forces the reaping of files that fail the signing check so there's no need to wait for the reaping and no question about when it happens in the case of a signature check failure.~~

    opened by jettero 12
  • fix: sourcetype = 'hubble_fdg_' + fdg_file

    fix: sourcetype = 'hubble_fdg_' + fdg_file

    Apparently we do want to extend the sourcetype name from hubble_fdg to hubble_fdg_filename but let's choose to do that without the salt:// protocol and without the .fdg file extension; while we're at it, make sure to replace all non alphanumerics with an underscore.

    Backport Complete 
    opened by jettero 11
  • 'hubble.sync' is not available for SLES11 SP4 minions ( Specific to SUSE )

    'hubble.sync' is not available for SLES11 SP4 minions ( Specific to SUSE )

    **# salt '*' hubble.sync minion1: 'hubble.sync' is not available. minion2: 'hubble.sync' is not available.

    salt '*' hubble.audit

    minion1: 'hubble.audit' is not available. minion2: 'hubble.audit' is not available.**

    We are using hubble module for audit and it is wokring fine for RHEL and Centos but on SLES linux hubble.sycn is not working. For SLES the official salt-minion version is salt-minion-2016.11.4-13.1.x86_64 . We do not have any updated version for SLES11 SP4.

    Trouble shooting

    salt '' saltutil.clear_cache salt '' saltutil.sync_all salt '*' hubble.sync

    tried above commands still no luck for SLES11 SP4 minions.

    **Salt master version

    # salt-master --versions-report Salt Version: Salt: 2017.7.2

    Dependency Versions: cffi: Not Installed cherrypy: unknown dateutil: Not Installed docker-py: Not Installed gitdb: Not Installed gitpython: Not Installed ioflo: Not Installed Jinja2: 2.7.2 libgit2: Not Installed libnacl: Not Installed M2Crypto: Not Installed Mako: Not Installed msgpack-pure: Not Installed msgpack-python: 0.4.6 mysql-python: Not Installed pycparser: Not Installed pycrypto: 2.6.1 pycryptodome: Not Installed pygit2: Not Installed Python: 2.7.5 (default, Aug 4 2017, 00:39:18) python-gnupg: Not Installed PyYAML: 3.11 PyZMQ: 15.3.0 RAET: Not Installed smmap: Not Installed timelib: Not Installed Tornado: 4.2.1 ZMQ: 4.1.4

    System Versions: dist: centos 7.4.1708 Core locale: UTF-8 machine: x86_64 release: 3.10.0-693.11.1.el7.x86_64 system: Linux version: CentOS Linux 7.4.1708 Core

    salt minion version on SLEL11 SP4

    # /usr/bin/salt-minion --versions-report Salt Version: Salt: 2016.11.4

    Dependency Versions: cffi: Not Installed cherrypy: Not Installed dateutil: Not Installed docker-py: Not Installed gitdb: Not Installed gitpython: Not Installed ioflo: Not Installed Jinja2: 2.6 libgit2: Not Installed libnacl: Not Installed M2Crypto: 0.21.1 Mako: Not Installed msgpack-pure: Not Installed msgpack-python: 0.4.6 mysql-python: Not Installed pycparser: Not Installed pycrypto: 2.6.1 pycryptodome: Not Installed pygit2: Not Installed Python: 2.6.9 (unknown, Apr 7 2015, 08:28:12) python-gnupg: Not Installed PyYAML: 3.10 PyZMQ: 14.0.0 RAET: Not Installed smmap: Not Installed timelib: Not Installed Tornado: 4.2.1 ZMQ: 4.0.8

    System Versions: dist: SuSE 11 x86_64 machine: x86_64 release: 3.0.101-68-default system: Linux version: SUSE Linux Enterprise Server 11 x86_64

    hubble module is missing on SLES11SP4 minions while checking with sys.list_modules but on Centos6 and Centos7 I can see the hubble module without any issue.

    salt 'minion1' sys.list_modules

    minion1: - acl - aliases - alternatives - appcontrol - archive - artifactory - at - beacons - blockdev - bridge - btrfs - buildout - certificates_import - cloud - cmd - composer - config - consul - container_resource - cp - cpan - cron - data - defaults - devmap - dig - disk - django - dnsmasq - dnsutil - drbd - elasticsearch - environ - etcd - ethtool - event - extfs - file - gem - genesis - grains - group - grub - hashutil - hipchat - hosts - http - img - incron - ini - inspector - introspect - ip - iptables - iwtools - jboss7 - jboss7_cli - k8s - key - kmod - locale - locate - logrotate - lowpkg - lvm - match - mine - minion - modjk - mount - nagios_rpc - network - nfs3 - nova_loader - openscap - openstack_config - oscap - pagerduty - pam - partition - pillar - pip - pkg - pkg_resource - postfix - postgres_cfg - ps - publish - puppet - pushover - pyenv - quota - raid - random - random_org - rbenv - rest_sample_utils - restartcheck - ret - rsync - rvm - s3 - s6 - salt_proxy - saltutil - schedule - scsi - sdb - seed - sensors - service - shadow - slack - slsutil - smbios - smtp - sqlite3 - ssh - state - status - supervisord - sys - sysctl - sysfs - syslog_ng - system - temp - test - timezone - tomcat_cfg - udev - user - vbox_guest - virtualenv - x509 - xfs

    Pending Discussion hubble-salt 
    opened by sam0104 11
  • Don't tell splunk to index more things

    Don't tell splunk to index more things

    There probably isn't ever a good time to tell Splunk to index extra fields.

    The changes to the indexed fields intended by the removed code have to be accompanied by changes to the fields configuration in Splunk or oddball problems will occur (e.g., duplicate field indexing). The best plan (if you really really need extra index fields) is to ask the Splunk admins to add them to the index through their usual methods.

    This affords them the opportunity to say, "that's not a good idea because ____" and prevents the data from getting wonky in their indexes.

    There are certainly fields one might wish to add to the index. It's best to coordinate them carefully with the Splunk admins. (And these fields are more rare than you'd think if you're accustomed to traditional databases.)

    opened by jettero 10
  • running hubble.audit with salt (nitrogen - 2017.7.0rc1) asserts

    running hubble.audit with salt (nitrogen - 2017.7.0rc1) asserts

    From @jrporcaro on July 6, 2017 22:34

    I am using salt 2017.7.0rc1 (Nitrogen) with a default install of hubble 2017.4.1 on CentOS 7.2 using pygit2 and gitfs based hubble install. I did a saltutil.sync_all then a hubble.sync then a hubble.audit.

    [root@master2 ~]# salt \* hubble.audit
    master2:
        The minion function caused an exception: Traceback (most recent call last):
          File "/usr/lib/python2.7/site-packages/salt/minion.py", line 1466, in _thread_return
            return_data = executor.execute()
          File "/usr/lib/python2.7/site-packages/salt/executors/direct_call.py", line 28, in execute
            return self.func(*self.args, **self.kwargs)
          File "/var/cache/salt/minion/extmods/modules/hubble.py", line 108, in audit
            show_compliance=show_compliance)
          File "/var/cache/salt/minion/extmods/modules/hubble.py", line 406, in top
            load()
          File "/var/cache/salt/minion/extmods/modules/hubble.py", line 567, in load
            __nova__ = NovaLazyLoader()
          File "/var/cache/salt/minion/extmods/modules/hubble.py", line 667, in __init__
            self._load_all()
          File "/usr/lib/python2.7/site-packages/salt/loader.py", line 1611, in _load_all
            self._load_module(name)
          File "/var/cache/salt/minion/extmods/modules/hubble.py", line 828, in _load_module
            module_name,
        ValueError: too many values to unpack
    

    here is my versions_report:

    Salt Version:
               Salt: 2017.7.0rc1
    
    Dependency Versions:
               cffi: 1.6.0
           cherrypy: Not Installed
           dateutil: Not Installed
          docker-py: Not Installed
              gitdb: Not Installed
          gitpython: Not Installed
              ioflo: Not Installed
             Jinja2: 2.7.2
            libgit2: 0.24.6
            libnacl: Not Installed
           M2Crypto: Not Installed
               Mako: Not Installed
       msgpack-pure: Not Installed
     msgpack-python: 0.4.8
       mysql-python: Not Installed
          pycparser: 2.14
           pycrypto: 2.6.1
       pycryptodome: Not Installed
             pygit2: 0.24.2
             Python: 2.7.5 (default, Nov 20 2015, 02:00:19)
       python-gnupg: Not Installed
             PyYAML: 3.11
              PyZMQ: 15.3.0
               RAET: Not Installed
              smmap: Not Installed
            timelib: Not Installed
            Tornado: 4.2.1
                ZMQ: 4.1.4
    
    System Versions:
               dist: centos 7.2.1511 Core
             locale: UTF-8
            machine: x86_64
            release: 3.10.0-327.el7.x86_64
             system: Linux
            version: CentOS Linux 7.2.1511 Core
    

    Copied from original issue: hubblestack/hubble-salt#83

    Bug Core P1 hubble-salt hubble 
    opened by basepi 10
Releases(v4.5.5)
Owner
HubbleStack
Open-source security compliance monitoring. Free and open source software made possible by Adobe. https://github.com/adobe
HubbleStack
Scout Suite - an open source multi-cloud security-auditing tool,

Description Scout Suite is an open source multi-cloud security-auditing tool, which enables security posture assessment of cloud environments. Using t

NCC Group Plc 5k Jan 5, 2023
Bug Alert: a service for alerting security and IT professionals of high-impact and 0day vulnerabilities

Bug Alert Bug Alert is a service for alerting security and IT professionals of h

BugAlert.org 208 Dec 15, 2022
Magicspoofing - A python3 script for search possible misconfiguration in a DNS related to security protections of email service from the domain name

A python3 script for search possible misconfiguration in a DNS related to security protections of email service from the domain name. This project is for educational use, we are not responsible for its misuse.

null 20 Dec 2, 2022
Dependency Combobulator is an Open-Source, modular and extensible framework to detect and prevent dependency confusion leakage and potential attacks.

Dependency Combobulator Dependency Combobulator is an Open-Source, modular and extensible framework to detect and prevent dependency confusion leakage

Apiiro 84 Dec 23, 2022
On-demand scanning for container registries

Lacework registry scanner Install & configure Lacework CLI Integrate a Container Registry Go to Lacework > Resources > Containers > Container Image In

Will Robinson 1 Dec 14, 2021
evtx-hunter helps to quickly spot interesting security-related activity in Windows Event Viewer (EVTX) files.

Introduction evtx-hunter helps to quickly spot interesting security-related activity in Windows Event Viewer (EVTX) files. It can process a high numbe

NVISO 116 Dec 29, 2022
Security audit Python project dependencies against security advisory databases.

Security audit Python project dependencies against security advisory databases.

null 52 Dec 17, 2022
Pass2Pwn: a simple python3 tool created to assist penetration testers generate possible passwords for a targeted system based solely on the organization's name

Pass2Pwn is a simple python3 tool created to assist penetration testers generate possible passwords for a targeted system based solely on the organization's name

Nirmal Dahal 10 Oct 15, 2022
Receive notifications/alerts on the most recent disclosed CVE's.

Receive notifications on the most recent disclosed CVE's.

Ameliorate 7 Nov 24, 2022
A python script to turn Ubuntu Desktop in a one stop security platform. The InfoSec Fortress installs the packages,tools, and resources to make Ubuntu 20.04 capable of both offensive and defensive security work.

infosec-fortress A python script to turn Ubuntu Desktop into a strong DFIR/RE System with some teeth (Purple Team Ops)! This is intended to create a s

James 41 Dec 30, 2022
A GitHub action for organizations that enables advanced security code scanning on all new repos

Advanced-Security-Enforcer What this repository does This code is for an active GitHub Action written in Python to check (on a schedule) for new repos

Zack Koppert 30 May 17, 2022
Security-TXT is a python package for retrieving, parsing and manipulating security.txt files.

Security-TXT is a python package for retrieving, parsing and manipulating security.txt files.

Frank 3 Feb 7, 2022
RedTeam-Security - In this repo you will get the information of Red Team Security related links

OSINT Passive Discovery Amass - https://github.com/OWASP/Amass (Attack Surface M

Abhinav Pathak 5 May 18, 2022
How to exploit a double free vulnerability in 2021. 'Use-After-Free for Dummies'

This bug doesn’t exist on x86: Exploiting an ARM-only race condition How to exploit a double free and get a shell. "Use-After-Free for dummies" In thi

Stephen Tong 1.2k Dec 25, 2022
A Burp extension adding a passive scan check to flag parameters whose name or value may indicate a possible insertion point for SSRF or LFI.

BurpParamFlagger A Burp extension adding a passive scan check to flag parameters whose name or value may indicate a possible insertion point for SSRF

Allyson O'Malley 118 Nov 7, 2022
This script checks for any possible SSRF dns/http interactions in xmlrpc.php pingback feature

rpckiller This script checks for any possible SSRF dns/http interactions in xmlrpc.php pingback feature and with that you can further try to escalate

Ashish Kunwar 33 Sep 23, 2022
Source code for "A Two-Stream AMR-enhanced Model for Document-level Event Argument Extraction" @ NAACL 2022

TSAR Source code for NAACL 2022 paper: A Two-Stream AMR-enhanced Model for Document-level Event Argument Extraction. ?? Introduction We focus on extra

null 21 Sep 24, 2022
Open Source Intelligence gathering tool aimed at reducing the time spent harvesting information from open sources.

The Recon-ng Framework Recon-ng content now available on Pluralsight! Recon-ng is a full-featured reconnaissance framework designed with the goal of p

null 2.4k Jan 7, 2023