ReconPi
Recon Pi
__________ __________.__
______ ____ ____ ____ __________ __|
| _// __ _/ ___/ _ / | ___/ |
| | ___/ __( <_> ) | | | |
|____|_ /___ >___ >____/|___| /____| |__|
/ / / /
v2.2 - @x1m_martijn
ReconPi β A lightweight recon tool that performs extensive reconnaissance with the latest tools using a Raspberry Pi.
Start using that Raspberry Pi β I know you all have one laying around somewhere π
Since version 2.1 ReconPi is usable on your VPS, thanks to Sachin Grover for putting in a lot of work.
The latest HypriotOS image works perfect for Raspberry Piβs!
Easy installation
Connect to your ReconPi or VPS with SSH:
ssh pirate@192.168.2.16 [Edit IP address if needed]
Curl the install.sh
script and run it:
curl -L https://raw.githubusercontent.com/x1mdev/ReconPi/master/install.sh | bash
Manual installation
Connect to your system with SSH:
$ ssh pirate@192.168.2.16 [Edit IP address if needed]
Now we can set up everything, itβs quite simple:
-
git clone https://github.com/x1mdev/ReconPi.git
-
cd ReconPi
-
./install.sh
Grab a cup of coffee since this will take a while.
Usage
After installing all of the dependencies for the ReconPi you can finally start doing some recon!
$ recon <domain.tld>
recon.sh
will first gather resolvers for the given target, followed by subdomain enumeration and checking those assets for potential subdomain takeover. When this is done the IP addresses of the target are enumerated. Open ports will be discovered accompanied by a service scan provided by Nmap.
Nuclei and its templates have been implemented in the routine!
Finally the live targets will be screenshotted and evaluated to discover endpoints.
Results will be stored on the Recon Pi and can be viewed by running `python -m SimpleHTTPServer 1337β³ in your results directory. Your results will be accessible from any system with a browser that exists in the same network.
Make sure to add your SLACK token to the tokens.txt file if you want to get slack notification after the completion of recon process.
Sample Token.txt ($HOME/ReconPi/configs/tokens.txt)
github_subdomains_token=""
SLACK_WEBHOOK_URL="https://hooks.slack.com/services/xxx/xxx/xxx"
findomain_spyse_token=""
findomain_virustotal_token=""
findomain_securitytrails_token=""
CHAOS_KEY=""
hackerhandle="reconpi"
Config Files (Note: config file for amass, subfinder and naabu are stored inside ReconPi/configs/ folder, provide your api keys in these files)
Input your API keys in these files to get better results
Subfinder Config file path : $HOME/ReconPi/configs/config.yaml
Amass Config file path : $HOME/ReconPi/configs/config.ini
We have added a $hackerhandle
which is used in the nuclei scans. An additional x-bug-bounty: reconpi
header will be added, please update this with your own handle π
Scripts
- Script folder contains a script named daily which can be used as a cronjob to run subdomain enumeration automatically.
- Methodology is to take already enumerated subdomains as input and use amass on top of them, then track their last 2 result, and alert new subdomains on slack.
Tools
Tools that will be installed:
- Go
- Subfinder
- Subjack
- Aquatone
- httprobe
- assetfinder
- meg
- tojson
- unfurl
- gf
- anew
- qsreplace
- ffuf
- gobuster
- amass
- getJS
- gau
- shuffledns
- dnsprobe
- naabu
- nuclei
- nuclei-template
- cf-check
- massdns
- jq
- masscan
- Corsy
- Arjun
- Diggy
- Dnsgen
- Sublert
- Findomain
- github-subdomain
- linkfinder
- bass
- interlace
- nmap
- Seclist
- Dirsearch
- Dalfox
- Hakrawler
- Naabu
- chaos
- httpx
- altdns
Methodology
- gatherResolvers
- gatherSubdomains
- checkTakeovers
- getCNAME
- gatherIPs
- gatherScreenshots
- startMeg
- fetchArchive
- fetchEndpoints
- runNuclei
- portScan
- notifySlack
Subdomain Enumeration:
- Sublert
- Subfinder
- assetfinder
- amass
- findomain (Add findomain sources token to get better result)
- chaos dataset
- github-subdomains
- dns.bufferover.run
- Mutate above Subdomains using commonspeak subdomain list
- Combine and Sort above result -> Use shuffledns to resolve -> dnsgen(to mutate) -> httprobe (to get alive hosts)
- Check takeover using subjack and nuclei
- Get CNAME to check manually for takeovers
- Use dnsprobe to gather IP, ignore if they fall in cloudflare ip range
- Do masscan and then nmap scan on them, also use http-title and vulners script.
- Take Screenshot for visual recon
- Use gau to to get archive urls, get paramlist, jsurls, phpurls, aspxurls, and jspurls in there own files.
- Get Endpoints using Linkfinder
- Run Nuclei Scripts on alive hosts
- Notify on Slack channel if token is specified.
- Directory Buteforcing (Not enabled, as it takes long time, it is better to do manually)
More tools will be added in the future, feel free to make a pull request!
Contributors
- Sachin Grover (Twitter: @mavericknerd)
- Damian Ebelties