423 lines
16 KiB
Bash
423 lines
16 KiB
Bash
#!/bin/bash
|
|
# ============================================================
|
|
# AWESOME OSINT ARSENAL - Kali Linux Full Installer
|
|
# Source: github.com/rawfilejson/awesome-osint-arsenal
|
|
# For authorized security research & OSINT only
|
|
# ============================================================
|
|
|
|
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'
|
|
CYAN='\033[0;36m'; NC='\033[0m'; BOLD='\033[1m'
|
|
|
|
ok() { echo -e "${GREEN}[✔]${NC} $1"; }
|
|
warn() { echo -e "${YELLOW}[!]${NC} $1"; }
|
|
info() { echo -e "${CYAN}[*]${NC} $1"; }
|
|
fail() { echo -e "${RED}[✘]${NC} $1"; }
|
|
|
|
TOOLS_DIR="/opt/osint-arsenal"
|
|
ERRORS=()
|
|
LOG_FILE="/var/log/osint-arsenal-install.log"
|
|
START_TIME=$(date +%s)
|
|
|
|
banner() {
|
|
cat << 'EOF'
|
|
___ ____ ___ _ _ _____ _ ____ ____ _____
|
|
/ _ \/ ___|_ _| \ | |_ _| / \ | _ \/ ___|| ____|
|
|
| | | \___ \| || \| | | | / _ \ | |_) \___ \| _|
|
|
| |_| |___) | || |\ | | | / ___ \| _ < ___) | |___
|
|
\___/|____/___|_| \_| |_| /_/ \_\_| \_\____/|_____|
|
|
|
|
Awesome OSINT Arsenal - Kali Linux Installer
|
|
For authorized security research only.
|
|
EOF
|
|
}
|
|
|
|
check_root() {
|
|
if [[ $EUID -ne 0 ]]; then
|
|
warn "Not running as root. Some installs may fail. Re-run with: sudo bash $0"
|
|
fi
|
|
}
|
|
|
|
run() {
|
|
# run "description" command...
|
|
local desc="$1"; shift
|
|
if "$@" &>/dev/null; then
|
|
ok "$desc"
|
|
else
|
|
fail "$desc"
|
|
ERRORS+=("$desc")
|
|
fi
|
|
}
|
|
|
|
# ── 1. SYSTEM UPDATE ──────────────────────────────────────
|
|
step_apt() {
|
|
info "── STEP 1: System update & apt packages ──"
|
|
apt-get update -y &>/dev/null && apt-get upgrade -y &>/dev/null
|
|
ok "System updated"
|
|
|
|
APT_TOOLS=(
|
|
# Core utilities
|
|
git curl wget python3 python3-pip golang-go ruby-full build-essential
|
|
# Network / scanning
|
|
nmap masscan wireshark tcpdump netcat-openbsd
|
|
# Web recon
|
|
nikto dirb gobuster whatweb wfuzz feroxbuster
|
|
# Password & brute force
|
|
hydra john hashcat medusa cewl crunch
|
|
# Wireless
|
|
aircrack-ng kismet wifite reaver hcxtools fern-wifi-cracker
|
|
bettercap ettercap-common
|
|
# OSINT pre-installed
|
|
theharvester recon-ng maltego spiderfoot set
|
|
# Web app
|
|
sqlmap burpsuite
|
|
# Vuln scanners
|
|
openvas
|
|
# Forensics
|
|
binwalk foremost bulk-extractor scalpel
|
|
# Misc
|
|
macchanger libimage-exiftool-perl apktool jadx
|
|
dnsrecon
|
|
)
|
|
|
|
for pkg in "${APT_TOOLS[@]}"; do
|
|
if apt-get install -y "$pkg" &>/dev/null; then
|
|
ok "apt: $pkg"
|
|
else
|
|
warn "apt: $pkg (skipped/unavailable)"
|
|
fi
|
|
done
|
|
}
|
|
|
|
# ── 2. PYTHON (pip) TOOLS ─────────────────────────────────
|
|
step_pip() {
|
|
info "── STEP 2: Python pip tools ──"
|
|
pip3 install --upgrade --break-system-packages pip &>/dev/null
|
|
|
|
PIP_TOOLS=(
|
|
# Username / social OSINT
|
|
sherlock-project maigret blackbird-osint nexfil
|
|
social-analyzer socid-extractor osrframework
|
|
socialscan holehe gitrecon
|
|
# Email OSINT
|
|
h8mail theHarvester mailto-analyzer
|
|
# Phone OSINT
|
|
phoneinfoga ignorant
|
|
# DNS / domain
|
|
dnsrecon sublist3r
|
|
# Social media scrapers
|
|
instaloader snscrape twayback toutatis
|
|
telepathy telethon
|
|
# Forensics / metadata
|
|
volatility3 metagoofil
|
|
# AI / face
|
|
deepface face_recognition opencv-python
|
|
# Web / fuzzing
|
|
wfuzz paramspider
|
|
# Misc
|
|
spiderfoot recon-ng
|
|
# Mobile
|
|
frida-tools objection
|
|
)
|
|
|
|
for pkg in "${PIP_TOOLS[@]}"; do
|
|
if pip3 install --break-system-packages "$pkg" &>/dev/null; then
|
|
ok "pip: $pkg"
|
|
else
|
|
warn "pip: $pkg (skipped/failed)"
|
|
fi
|
|
done
|
|
}
|
|
|
|
# ── 3. GO TOOLS ───────────────────────────────────────────
|
|
step_go() {
|
|
info "── STEP 3: Go-based tools ──"
|
|
export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin:/root/go/bin
|
|
export GOPATH=$HOME/go
|
|
|
|
GO_TOOLS=(
|
|
"github.com/owasp-amass/amass/v4/...@master"
|
|
"github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest"
|
|
"github.com/projectdiscovery/httpx/cmd/httpx@latest"
|
|
"github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest"
|
|
"github.com/projectdiscovery/katana/cmd/katana@latest"
|
|
"github.com/OJ/gobuster/v3@latest"
|
|
"github.com/s-rah/onionscan@latest"
|
|
"github.com/kgretzky/evilginx2@latest"
|
|
"github.com/drk1wi/Modlishka@latest"
|
|
)
|
|
|
|
for pkg in "${GO_TOOLS[@]}"; do
|
|
name=$(basename "${pkg%%@*}")
|
|
if go install "$pkg" &>/dev/null; then
|
|
ok "go: $name"
|
|
else
|
|
warn "go: $name (failed)"
|
|
fi
|
|
done
|
|
}
|
|
|
|
# ── 4. RUBY GEMS ──────────────────────────────────────────
|
|
step_gems() {
|
|
info "── STEP 4: Ruby gems ──"
|
|
run "gem: wpscan" gem install wpscan
|
|
}
|
|
|
|
# ── 5. GIT CLONE TOOLS ────────────────────────────────────
|
|
step_git() {
|
|
info "── STEP 5: Git clone tools → $TOOLS_DIR ──"
|
|
mkdir -p "$TOOLS_DIR"
|
|
cd "$TOOLS_DIR" || exit 1
|
|
|
|
declare -A REPOS=(
|
|
# Username / social
|
|
["userrecon"]="https://github.com/wishihab/userrecon.git"
|
|
# Email
|
|
["EmailAnalyzer"]="https://github.com/keraattin/EmailAnalyzer.git"
|
|
["MailHeaderDetective"]="https://github.com/akajhon/MailHeaderDetective.git"
|
|
["WhatMail"]="https://github.com/z0m31en7/WhatMail.git"
|
|
["Infoga"]="https://github.com/m4ll0k/Infoga.git"
|
|
# Domain / IP
|
|
["IPGeoLocation"]="https://github.com/maldevel/IPGeoLocation.git"
|
|
# Image / forensics
|
|
["Depix"]="https://github.com/beurtschipper/Depix.git"
|
|
# Social media
|
|
["Osintgram"]="https://github.com/Datalux/Osintgram.git"
|
|
["TeleGram-OSINTer"]="https://github.com/Alb-310/TeleGram-OSINTer.git"
|
|
# Credential / password
|
|
["LaZagne"]="https://github.com/AlessandroZ/LaZagne.git"
|
|
["Responder"]="https://github.com/lgandx/Responder.git"
|
|
# Dark web
|
|
["OSINT-SPY"]="https://github.com/SharadKumar97/OSINT-SPY.git"
|
|
["pwndb"]="https://github.com/coj337/pwndb.git"
|
|
# Privacy / anon
|
|
["kali-anonsurf"]="https://github.com/Und3rf10w/kali-anonsurf.git"
|
|
["Anon-SMS"]="https://github.com/HACK3RY2J/Anon-SMS.git"
|
|
# Web app scanning
|
|
["LinkFinder"]="https://github.com/GerbenJavado/LinkFinder.git"
|
|
["Photon"]="https://github.com/s0md3v/Photon.git"
|
|
["URLCADIZ"]="https://github.com/PerezMascato/URLCADIZ.git"
|
|
["webhack"]="https://github.com/yan4ikyt/webhack.git"
|
|
# Phishing / social engineering
|
|
["zphisher"]="https://github.com/htr-tech/zphisher.git"
|
|
["nexphisher"]="https://github.com/htr-tech/nexphisher.git"
|
|
["Storm-Breaker"]="https://github.com/ultrasecurity/Storm-Breaker.git"
|
|
["shorturl"]="https://github.com/htr-tech/shorturl.git"
|
|
["SocialFish"]="https://github.com/UndeadSec/SocialFish.git"
|
|
["AdvPhishing"]="https://github.com/Ignitetch/AdvPhishing.git"
|
|
# Vuln / exploitation
|
|
["commix"]="https://github.com/commixproject/commix.git"
|
|
# Wireless
|
|
["fluxion"]="https://github.com/FluxionNetwork/fluxion.git"
|
|
["bluemaho"]="https://github.com/pysec/bluemaho.git"
|
|
# Mobile
|
|
["PhoneSploit"]="https://github.com/aerosol-can/PhoneSploit.git"
|
|
["AhMyth-Android-RAT"]="https://github.com/AhMyth/AhMyth-Android-RAT.git"
|
|
["msfpc"]="https://github.com/g0tmi1k/msfpc.git"
|
|
# Financial OSINT
|
|
["Orbit"]="https://github.com/s0md3v/Orbit.git"
|
|
# All-in-one frameworks
|
|
["fsociety"]="https://github.com/Manisso/fsociety.git"
|
|
["hackingtool"]="https://github.com/Z4nzu/hackingtool.git"
|
|
["lscript"]="https://github.com/arismelachroinos/lscript.git"
|
|
# Wordlists
|
|
["SecLists"]="https://github.com/danielmiessler/SecLists.git"
|
|
["cupp"]="https://github.com/Mebus/cupp.git"
|
|
# Google dorking
|
|
["pagodo"]="https://github.com/opsdisk/pagodo.git"
|
|
["GooFuzz"]="https://github.com/m3n0sd0n4ld/GooFuzz.git"
|
|
["dorkScanner"]="https://github.com/madhavmehndiratta/dorkScanner.git"
|
|
# ReconAIzer (Burp extension)
|
|
["ReconAIzer"]="https://github.com/hisxo/ReconAIzer.git"
|
|
)
|
|
|
|
for name in "${!REPOS[@]}"; do
|
|
url="${REPOS[$name]}"
|
|
if [[ -d "$name" ]]; then
|
|
warn "git: $name already exists, pulling latest"
|
|
git -C "$name" pull &>/dev/null && ok "git: $name (updated)" || warn "git: $name (pull failed)"
|
|
else
|
|
if git clone --depth=1 "$url" "$name" &>/dev/null; then
|
|
ok "git: $name"
|
|
else
|
|
fail "git: $name"
|
|
ERRORS+=("git clone $name")
|
|
fi
|
|
fi
|
|
done
|
|
|
|
# Install pip requirements where available
|
|
info "Installing per-repo pip requirements..."
|
|
for dir in IPGeoLocation Photon LinkFinder Osintgram OSINT-SPY webhack commix; do
|
|
if [[ -f "$TOOLS_DIR/$dir/requirements.txt" ]]; then
|
|
pip3 install --break-system-packages -r "$TOOLS_DIR/$dir/requirements.txt" &>/dev/null \
|
|
&& ok "requirements: $dir" || warn "requirements: $dir (partial)"
|
|
fi
|
|
done
|
|
}
|
|
|
|
# ── 6. SPECIAL INSTALLS ───────────────────────────────────
|
|
step_special() {
|
|
info "── STEP 6: Special installs ──"
|
|
|
|
# Metasploit (if not present)
|
|
if ! command -v msfconsole &>/dev/null; then
|
|
info "Installing Metasploit Framework..."
|
|
curl -s https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb \
|
|
| sed 's/apt-get/apt-get -y/g' | bash &>/dev/null \
|
|
&& ok "Metasploit installed" || warn "Metasploit (failed - install manually)"
|
|
else
|
|
ok "Metasploit already installed"
|
|
fi
|
|
|
|
# PhoneInfoga binary
|
|
if ! command -v phoneinfoga &>/dev/null; then
|
|
info "Installing PhoneInfoga binary..."
|
|
curl -sSL https://raw.githubusercontent.com/sundowndev/phoneinfoga/master/support/scripts/install \
|
|
| bash &>/dev/null && ok "phoneinfoga binary" || warn "phoneinfoga binary (failed)"
|
|
else
|
|
ok "phoneinfoga already installed"
|
|
fi
|
|
|
|
# AnonSurf
|
|
if [[ -d "$TOOLS_DIR/kali-anonsurf" ]]; then
|
|
cd "$TOOLS_DIR/kali-anonsurf" && bash installer.sh &>/dev/null \
|
|
&& ok "anonsurf installed" || warn "anonsurf (manual install needed)"
|
|
fi
|
|
|
|
# Nuclei templates
|
|
if command -v nuclei &>/dev/null; then
|
|
nuclei -update-templates &>/dev/null && ok "nuclei templates updated"
|
|
fi
|
|
}
|
|
|
|
# ── 7. ADDITIONAL TOOLS (suggested extras) ────────────────
|
|
step_extras() {
|
|
info "── STEP 7: Extra tools not in original list ──"
|
|
|
|
# These complement the OSINT arsenal nicely
|
|
EXTRA_PIP=(
|
|
trufflehog # Git secret scanning
|
|
git-dumper # Dump exposed .git repos
|
|
waybackpy # Wayback Machine API client
|
|
dnstwist # Domain phishing detection
|
|
shodan # Shodan CLI
|
|
censys # Censys CLI
|
|
xeuledoc # Google Docs OSINT
|
|
redditsfinder # Find Reddit accounts by email
|
|
linkedin2username # Generate username lists from LinkedIn
|
|
)
|
|
|
|
EXTRA_APT=(
|
|
tor # Tor daemon (for dark web tools)
|
|
proxychains4 # Route traffic through proxies/tor
|
|
steghide # Steganography analysis
|
|
stegseek # Fast steghide cracker
|
|
exiv2 # Alternative metadata tool
|
|
jq # JSON parsing (useful for API tools)
|
|
whois # WHOIS lookups
|
|
dnsutils # dig, nslookup
|
|
traceroute # Network path tracing
|
|
beef-xss # Browser Exploitation Framework
|
|
)
|
|
|
|
EXTRA_GIT=(
|
|
"EyeWitness|https://github.com/RedSiege/EyeWitness.git" # Web screenshots
|
|
"gitrob|https://github.com/michenriksen/gitrob.git" # GitHub secret scanner
|
|
"GitLeaks|https://github.com/gitleaks/gitleaks.git" # Git secret leaks
|
|
"theHarvester|https://github.com/laramies/theHarvester.git" # Email/domain (latest)
|
|
"crosslinked|https://github.com/m8sec/CrossLinked.git" # LinkedIn name scraper
|
|
"recon-ng|https://github.com/lanmaster53/recon-ng.git" # Latest recon-ng
|
|
"spiderfoot|https://github.com/smicallef/spiderfoot.git" # Latest SpiderFoot
|
|
"osmedeus|https://github.com/j3ssie/osmedeus.git" # Full recon workflow
|
|
"finalrecon|https://github.com/thewhiteh4t/FinalRecon.git" # All-in-one web recon
|
|
"URLextractor|https://github.com/eschultze/URLextractor.git" # URL extraction
|
|
"phoneinfoga-web|https://github.com/sundowndev/phoneinfoga.git" # PhoneInfoga web UI
|
|
)
|
|
|
|
for pkg in "${EXTRA_APT[@]%%#*}"; do
|
|
pkg=$(echo "$pkg" | xargs)
|
|
apt-get install -y "$pkg" &>/dev/null && ok "extra apt: $pkg" || warn "extra apt: $pkg"
|
|
done
|
|
|
|
for pkg in "${EXTRA_PIP[@]%%#*}"; do
|
|
pkg=$(echo "$pkg" | xargs)
|
|
pip3 install --break-system-packages "$pkg" &>/dev/null && ok "extra pip: $pkg" || warn "extra pip: $pkg"
|
|
done
|
|
|
|
cd "$TOOLS_DIR" || exit 1
|
|
for entry in "${EXTRA_GIT[@]}"; do
|
|
name="${entry%%|*}"
|
|
url="${entry##*|}"
|
|
if [[ ! -d "$name" ]]; then
|
|
git clone --depth=1 "$url" "$name" &>/dev/null && ok "extra git: $name" || warn "extra git: $name"
|
|
else
|
|
ok "extra git: $name (already exists)"
|
|
fi
|
|
done
|
|
|
|
# Shodan CLI setup hint
|
|
if command -v shodan &>/dev/null; then
|
|
warn "Remember to init Shodan: shodan init YOUR_API_KEY"
|
|
fi
|
|
|
|
# Tor config for dark web tools
|
|
if command -v tor &>/dev/null; then
|
|
systemctl enable tor &>/dev/null
|
|
systemctl start tor &>/dev/null
|
|
ok "Tor service enabled (SOCKS proxy on 127.0.0.1:9050)"
|
|
fi
|
|
}
|
|
|
|
# ── SUMMARY ───────────────────────────────────────────────
|
|
summary() {
|
|
local END_TIME=$(date +%s)
|
|
local DURATION=$(( END_TIME - START_TIME ))
|
|
local MINS=$(( DURATION / 60 ))
|
|
local SECS=$(( DURATION % 60 ))
|
|
echo ""
|
|
echo -e "${BOLD}════════════════════════════════════════${NC}"
|
|
echo -e "${GREEN} Install complete!${NC}"
|
|
echo -e " Duration: ${CYAN}${MINS}m ${SECS}s${NC}"
|
|
echo -e " Log file: ${CYAN}$LOG_FILE${NC}"
|
|
echo -e " Tools directory: ${CYAN}$TOOLS_DIR${NC}"
|
|
echo ""
|
|
if [[ ${#ERRORS[@]} -gt 0 ]]; then
|
|
echo -e "${YELLOW} Failed installs (${#ERRORS[@]}):${NC}"
|
|
for e in "${ERRORS[@]}"; do echo " - $e"; done
|
|
else
|
|
echo -e "${GREEN} No errors!${NC}"
|
|
fi
|
|
echo ""
|
|
echo -e "${YELLOW} Quick-start commands:${NC}"
|
|
echo " sherlock USERNAME"
|
|
echo " maigret USERNAME"
|
|
echo " theHarvester -d domain.com -b all"
|
|
echo " recon-ng"
|
|
echo " spiderfoot -l 127.0.0.1:5001"
|
|
echo " nuclei -u https://target.com"
|
|
echo " subfinder -d domain.com"
|
|
echo " amass enum -d domain.com"
|
|
echo -e "${BOLD}════════════════════════════════════════${NC}"
|
|
}
|
|
|
|
# ── MAIN ──────────────────────────────────────────────────
|
|
banner
|
|
exec > >(tee -a "$LOG_FILE") 2>&1
|
|
check_root
|
|
|
|
echo ""
|
|
echo -e "${BOLD}This will install 100+ OSINT & security tools.${NC}"
|
|
echo -e "${YELLOW}Use only on systems you own or have authorization to test.${NC}"
|
|
echo ""
|
|
read -rp "Continue? [y/N]: " confirm
|
|
[[ "$confirm" =~ ^[Yy]$ ]] || { echo "Aborted."; exit 0; }
|
|
|
|
step_apt
|
|
step_pip
|
|
step_go
|
|
step_gems
|
|
step_git
|
|
step_special
|
|
step_extras
|
|
summary
|