• Stars
    star
    2,033
  • Rank 22,758 (Top 0.5 %)
  • Language
    Python
  • License
    GNU General Publi...
  • Created over 7 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A security tool for multithreaded information gathering and service enumeration whilst building directory structures to store results, along with writing out recommendations for further testing.

Reconnnoitre

A reconnaissance tool made for the OSCP labs to automate information gathering and service enumeration whilst creating a directory structure to store results, findings and exploits used for each host, recommended commands to execute and directory structures for storing loot and flags.

Contributions are more than welcome!

Python 3.2|3.6 License Build Status Twitter

Important

Reconnoitre although a well loved tool I've maintained for a few years now, in my opinion, pales in functionality to building your own enumeration approach within Interlace. I strongly recommend anybody looking to take Infosec beyond the OSCP to spend some time looking into this project.

Credit

This tool is based heavily upon the work made public in Mike Czumak's (T_v3rn1x) OSCP review (link) along with considerable influence and code taken from Re4son's mix-recon (link). Virtual host scanning is originally adapted from teknogeek's work which is heavily influenced by jobertabma's virtual host discovery script (link). Further Virtual Host scanning code has been adapted from a project by Tim Kent and I, available here (link).

Installation

To install Reconnoitre first make a local copy of the repository by performing the following where you wish it to be located:

git clone https://github.com/codingo/Reconnoitre.git

After you have done this run setup.py with the following:

python3 setup.py install

After setup has run Reconnoitre will now be in your path (as reconnoitre) and you can launch it anywhere using:

reconnoitre <args>

Usage

This tool can be used and copied for personal use freely however attribution and credit should be offered to Mike Czumak who originally started the process of automating this work.

Argument Description
-h, --help Display help message and exit
-t TARGET_HOSTS Set either a target range of addresses or a single host to target. May also be a file containing hosts.
-o OUTPUT_DIRECTORY Set the target directory where results should be written.
-w WORDLIST Optionally specify your own wordlist to use for pre-compiled commands, or executed attacks.
--pingsweep Write a new target.txt file in the OUTPUT_DIRECTORY by performing a ping sweep and discovering live hosts.
--dns, --dnssweep Find DNS servers from the list of target(s).
--snmp Find hosts responding to SNMP requests from the list of target(s).
--services Perform a service scan over the target(s) and write recommendations for further commands to execute.
--hostnames Attempt to discover target hostnames and write to hostnames.txt.
--virtualhosts Attempt to discover virtual hosts using the specified wordlist. This can be expended via discovered hostnames.
--ignore-http-codes Comma separated list of http codes to ignore with virtual host scans.
--ignore-content-length Ignore content lengths of specificed amount. This may become useful when a server returns a static page on every virtual host guess.
--quiet Supress banner and headers and limit feedback to grepable results.
--quick Move to the next target after performing a quick scan and writing first-round recommendations.
--no-udp Disable UDP service scanning, which is ON by default.

Usage Examples

Note that these are some examples to give you insight into potential use cases for this tool. Command lines can be added or removed based on what you wish to accomplish with your scan.

Scan a single host, create a file structure and discover services

reconnoitre -t 192.168.1.5 -o /root/Documents/labs/ --services

An example output would look like:

root@kali:~/# reconnoitre -t 192.168.1.5 --services -o /root/Documents/labs/
  __
|"""\-=  RECONNOITRE
(____)      An OSCP scanner

[#] Performing service scans
[*] Loaded single target: 192.168.1.5
[+] Creating directory structure for 192.168.1.5
   [>] Creating scans directory at: /root/Documents/labs/192.168.1.5/scans
   [>] Creating exploit directory at: /root/Documents/labs/192.168.1.5/exploit
   [>] Creating loot directory at: /root/Documents/labs/192.168.1.5/loot
   [>] Creating proof file at: /root/Documents/labs/192.168.1.5/proof.txt
[+] Starting quick nmap scan for 192.168.1.5
[+] Writing findings for 192.168.1.5
   [>] Found HTTP service on 192.168.1.5:80
   [>] Found MS SMB service on 192.168.1.5:445
   [>] Found RDP service on 192.168.1.5:3389
[*] TCP quick scan completed for 192.168.1.5
[+] Starting detailed TCP/UDP nmap scans for 192.168.1.5
[+] Writing findings for 192.168.1.5
   [>] Found MS SMB service on 192.168.1.5:445
   [>] Found RDP service on 192.168.1.5:3389
   [>] Found HTTP service on 192.168.1.5:80
[*] TCP/UDP Nmap scans completed for 192.168.1.5

Which would also write the following recommendations file in the scans folder for each target:

[*] Found HTTP service on 192.168.1.50:80
   [>] Use nikto & dirb / dirbuster for service enumeration, e.g
      [=] nikto -h 192.168.1.50 -p 80 > /root/Documents/labs/192.168.1.50/scans/192.168.1.50_nikto.txt
      [=] dirb http://192.168.1.50:80/ -o /root/Documents/labs/192.168.1.50/scans/192.168.1.50_dirb.txt -r -S -x ./dirb-extensions/php.ext
      [=] java -jar /usr/share/dirbuster/DirBuster-1.0-RC1.jar -H -l /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -r /root/Documents/labs/192.168.1.50/scans/192.168.1.50_dirbuster.txt -u http://192.168.1.50:80/
      [=] gobuster -w /usr/share/seclists/Discovery/Web_Content/common.txt -u http://192.168.1.50:80/ -s '200,204,301,302,307,403,500' -e > /root/Documents/labs/192.168.1.50/scans/192.168.1.50_gobuster_common.txt -t 50 
      [=] gobuster -w /usr/share/seclists/Discovery/Web_Content/cgis.txt -u http://192.168.1.50:80/ -s '200,204,301,307,403,500' -e > /root/Documents/labs/192.168.1.50/scans/192.168.1.50_gobuster_cgis.txt -t 50 
   [>] Use curl to retreive web headers and find host information, e.g
      [=] curl -i 192.168.1.50
      [=] curl -i 192.168.1.50/robots.txt -s | html2text
[*] Found MS SMB service on 192.168.1.5:445
   [>] Use nmap scripts or enum4linux for further enumeration, e.g
      [=] nmap -sV -Pn -vv -p445 --script="smb-* -oN '/root/Documents/labs/192.168.1.5/nmap/192.168.1.5_smb.nmap' -oX '/root/Documents/labs/192.168.1.5/scans/192.168.1.5_smb_nmap_scan_import.xml' 192.168.1.5
      [=] enum4linux 192.168.1.5
[*] Found RDP service on 192.168.1.5:3389
   [>] Use ncrackpassword cracking, e.g
      [=] ncrack -vv --user administrator -P /root/rockyou.txt rdp://192.168.1.5

Discover live hosts and hostnames within a range

reconnoitre -t 192.168.1.1-252 -o /root/Documents/testing/ --pingsweep --hostnames

Discover live hosts within a range and then do a quick probe for services

reconnoitre -t 192.168.1.1-252 -o /root/Documents/testing/ --pingsweep --services --quick

This will scan all services within a target range to create a file structure of live hosts as well as write recommendations for other commands to be executed based on the services discovered on these machines. Removing --quick will do a further probe but will greatly lengthen execution times.

Discover live hosts within a range and then do probe all ports (UDP and TCP) for services

reconnoitre -t 192.168.1.1-252 -o /root/Documents/testing/ --pingsweep --services

Requirements

This bare requirement for host and service scanning for this tool is to have both nbtscan and nmap installed. If you are not using host scanning and only wish to perform a ping sweep and service scan you can get away with only installing nmap. The outputted findings.txt will often recommend additional tools which you may not have available in your distribution if not using Kali Linux. All requirements and recommendations are native to Kali Linux which is the recommended (although not required) distribution for using this tool.

In addition to these requirements outputs will often refer to Wordlists that you may need to find. If you are undertaking OSCP these can be found in the "List of Recommended Tools" thread by g0tmilk. If not then you can find the majority of these online or already within a Kali Linux installation.

Dockerfile

First step is to install docker if you do not have it installed already. Docker Installation

Basic Usage:

cd <Reconnoitre Directory>
docker build -t reconnoitre .

docker run reconnoitre -o outputdir -t 127.0.0.1

If you want files to exist locally you can mount a directory to the Docker container

cd <Reconnoitre Directory>
docker build -t reconnoitre .
mkdir /path/to/dir

docker run -v /path/to/dir:/outputdir --services -o outputdir -t 127.0.0.1

More Repositories

1

NoSQLMap

Automated NoSQL database enumeration and web application exploitation tool.
Python
2,856
star
2

Interlace

Easily turn single threaded command line applications into a fast, multi-threaded application with CIDR and glob support.
Python
1,204
star
3

VHostScan

A virtual host scanner that performs reverse lookups, can be used with pivot tools, detect catch-all scenarios, work around wildcards, aliases and dynamic default pages.
Python
1,196
star
4

DNSCewl

A DNS Bruteforcing Wordlist Generator
C++
347
star
5

BibWord

Microsoft Word and Bibliography Styles extender.
XSLT
280
star
6

dorky

A tool to quickly do keyword searches over Gitlab and Github for OSINT & bug bounty recon
Go
226
star
7

bbr

An open source tool to aid in command line driven generation of bug bounty reports based on user provided templates.
Go
206
star
8

crithit

Takes a single wordlist item and tests it one by one over a large collection of websites before moving onto the next. Create signatures to cross-check vulnerabilities over multiple hosts.
Makefile
205
star
9

Minesweeper

A Burpsuite plugin (BApp) to aid in the detection of scripts being loaded from over 23000 malicious cryptocurrency mining domains (cryptojacking).
Python
196
star
10

Retrieve-Windows-Wifi-Passwords

Retreives the SSID names and passwords in cleartext for each Wifi network stored on the computer running this powershell script and output to JSON.
PowerShell
79
star
11

microsubs

A collection of code for interacting with API sources directly to improve your understanding of those services.
C++
65
star
12

dooked

DNS and Target HTTP History Local Storage and Search
C++
63
star
13

Ransomware-Json-Dataset

Compiles a json dataset using public sources that contains properties to aid in the detection and mitigation of over 1000 variants of ransomware.
Python
61
star
14

fastsub

A custom built DNS bruteforcer with multi-threading, and handling of bad resolvers.
C++
57
star
15

SharePoint-Security

A Github Repository Created to compliment a BSides Canberra 2018 talk on SharePoint Security.
PowerShell
46
star
16

simple

A collection of one off hacks and simple scripts
Go
27
star
17

cracknet

A .net Crackme Challenge made for the SecTalks Brisbane 2017 Capture the Flag Event. Writeup/solution included.
C#
20
star
18

Bugcrowd-Talks

Slide Decks and Supporting Content of talks given for Bugcrowd
16
star
19

guides

A companion repo to accompany detailed guides and YouTube content to allow users to follow along
12
star
20

succinct

A tool to create a text summary of a provided list of websites
Go
9
star
21

codingo

5
star
22

DNSCewl-go

A DNS Bruteforcing Wordlist Generator
5
star
23

RaiderOfTheLostBrowsers

Command line utility to extract passwords from the major browsers (Chrome, Firefox, Edge). Useful in demonstrating to users the importance of using proper password managers instead of saving credentials in browser based accounts which synchronize settings locally.
Python
5
star
24

security-through-obscurity

A reversing challenge made for CrikeyCon 2018
C#
4
star
25

blog

Repository housing codingo-com hugo project
HTML
4
star
26

Google-Phonelib-SQL-CLR

A SQL CLR implementation of GooglePhoneLib allowing it to be used as a Microsoft SQL Function.
C#
4
star
27

CTFs

Code and writeups for a variety of CTF challenges. Links to writeups included where available.
Python
3
star
28

coffee

A repository for snippets of code that make my life easier.
Shell
3
star
29

Simple-Substitution

A CTF challenge for CrikeyCon 2018
Python
2
star
30

2ndOrder

Chrome extension to inspect and find domains that don't resolve or have expired
JavaScript
2
star
31

blog-live

2
star
32

codingo.github.io

Ruby
2
star
33

pyreal

Python scraper for realestate
Python
2
star
34

test2

1
star
35

dooks-air-conditioning

A CTF web challenge built for CrikeyCon 2018
PHP
1
star
36

Hash-Checker

A Powershell script to check a hash against a file script
PowerShell
1
star