diff --git a/install_osint_arsenal.sh b/install_osint_arsenal.sh new file mode 100644 index 0000000..572b503 --- /dev/null +++ b/install_osint_arsenal.sh @@ -0,0 +1,422 @@ +#!/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