Home

Awesome

Table of Contents

Nobility

Nobility is an organized colletion of shell modules designed to streamline your pentesting workflow by leveraging shell integrations such as autocompletion and prefilling, optimizing the productivity of your work and liberatating you from the hassle of juggling notes, endless copying and pasting, and tedious command editing.

This tool is tailored for security consultants. Unlike other pentesting frameworks like Metasploit, which primarily focuses on post-exploitation, Nobility provides a customizable arsenal of 50 modules and over 500 commands, fully written in Zsh for comprehensive workflow automation which you can call directly from the shell prompt, allowing for seamless adaptation to your specific needs and enhancing red-teaming and network pentesting activities.

Nobility helps you remember how to use every tool in your arsenal and doesn't hide them behind scripting that can be cumbersome to maintain or update. Each Nobility module is interactive, sparing the need to memorize the syntax. Simply execute the module like so: nb-recon-subs-ffuf, and Nobility will prompt you for all required options. Utilize Nobility to build a composable, on-the-fly workflow for every scenario.

Key Features

Distributions Compatibility

Although Nobility only requires zsh shell to run successfully, the compatibility with system-specific commands like nb-install may vary depending on your linux distribution.

Installation

Nobility only requires Zsh shell.

Installation Method #1: Manually

# Clone the repo to your zsh directory
git clone https://github.com/Twilight4/nobility.git ~/.config/nobility

# Source the plugin in `~/.zshrc`
echo 'source ~/.config/nobility/nobility.plugin.zsh' >> ~/.zshrc

# Source `~/.zshrc` to load the plugin
source ~/.zshrc

Installation Method #2: Oh-my-zsh

# Clone the repo to your oh-my-zsh custom plugins directory
git clone https://github.com/Twilight4/nobility.git ~/.oh-my-zsh/custom/plugins/nobility

# Edit `~/.zshrc` to load the plugin
plugins=(git nobility)

# Source `~/.zshrc` to load the plugin
source ~/.zshrc

Updating

Simply run the nb-update command. If you did not modify any of the content in the nobility directory, this will pull the latest code from this GitHub repository, after which you can run nobility modules as usual.

Tip: Zsh completion menu

For enhanced completion selection menu I recommend fzf-tab plugin.

screenshot

Getting Started

Nobility categorizes commands into namespaces, denoted by the nb- prefix, exemplified by commands like nb-enum-web or nb-recon-domains. To see an overview of all namespaces simply use nb-help command.

Each namespace features its own dedicated help command, such as nb-enum-web-help which provides a listing of available web enumeration commands. All commands support tab completion and search.

Installing Dependencies

To set up the necessary dependencies for each namespace, execute the nb-<NAMESPACE>-install command. This command ensures the installation of all tools relevant to the specified namespace. For installation of tools across all namespaces, use the nb-install-all command.

Workflow Design

Nobility is designed to offer a sophisticated and flexible workflow. It eliminates the conventional, tedious process of manually navigating through notes, searching for commands, copying, pasting, and adjusting values before execution.

In contrast to heavily automated scripts or frameworks that execute entire workflows, often obfuscating the underlying tools and techniques which are cumbersome to modify, Nobility strikes a balance. Embracing the principles of the KISS principle (Keep It Simple, Stupid), each module within Nobility is deliberately small and distinct, minimizing unnecessary complications. This design allows you to quickly execute individual commands, providing well-organized output.

This approach enables you to compose your workflow dynamically, adapting to specific targets and contextual requirements. This flexibility is achieved without the brittleness and complexity associated with fully automated solutions.

Example Workflow

Variables

Namespaces take care of managing the variable commands for you by default e.g. commands such as nb-vars-save are used to persist the vars in other terminal sessions and nb-vars-load to load the previously saved vars in new terminal sessions, one useful command is nb-vars-clear used to clear all the saved variables.

It's recommended to set the nb-vars-load command in the .zshrc file to run load the vars on startup:

# Load nobility variables quietly
if [ -d ~/.config/zsh/plugins/nobility ]; then
    nb-vars-load &>/dev/null
fi

Pre-Engagement

# Create a project structure
nb-project-start

# Set target IP to /etc/hosts
nb-project-host

# Set some session variables for the target 
nb-vars-set-domain
nb-vars-set-network
nb-vars-set-user
nb-vars-set-pass

# Save variables for other terminal sessions
nb-vars-save

# Generate scope files from the target url
nb-project-rescope

Web Recon

# Scan the network all ports with TCP syn using rustscan
nb-enum-network-rustscan-all

# Identifying technologies
nb-enum-web-whatweb

# Download out robots.txt
nb-enum-web-dirs-robots

# Subdomain enumeration
nb-enum-web-vhosts-gobuster
nb-recon-subs-ffuf
nb-recon-subs-subfinder

# Resolve and parse subdomains
nb-recon-subs-resolve-massdns
nb-recon-subs-resolve-parse

# Directory brute force
nb-enum-web-dirs-gobuster 
nb-enum-web-dirs-ffuf

# Web vuln scanners
nb-enum-web-vuln-nikto

# Enumerate wordpress website
nb-enum-web-wordpress

# Brute force web auth password for post request
nb-enum-web-fuzz-password-hydra-form-post

# Brute force auth login with post request
nb-enum-web-fuzz-login-hydra-form-post

# ID a WAF if present
nb-enum-web-waf

# Parse SSL certs
nb-enum-web-ssl-certs

# Spider the site
nb-enum-web-gospider

Organization OSINT

# Search for target files
nb-recon-org-files

# Search downloaded files for URLs
nb-recon-org-files-urls

# Mine github repos for secrets
nb-recon-github-gitrob

# Check DNS records
nb-enum-dns-dnsrecon

# Mine data about a target domain
nb-recon-org-theharvester

Active Directory

# SMB Relay
nb-ad-smb-relay-enum
nb-ad-smb-responder
nb-ad-smb-relay-ntlmrelay

# IPv6 Attack
nb-ad-ipv6

# Domain Enumeration
nb-ad-enum-ldapdomaindump

# Kerberoasting
nb-ad-kerb-kerberoast

# Hash Dump
nb-ad-dump-secrets

# GPP Attack
nb-ad-gpp

# Dump NTDS database
nb-ad-dump-ntds