98103466d8
Sanitized version of red team infrastructure automation platform. Operational content (implant pipelines, lures, credential capture) replaced with documented stubs. Architecture and infrastructure automation code intact.
154 lines
4.9 KiB
Bash
Executable File
154 lines
4.9 KiB
Bash
Executable File
#!/bin/bash
|
|
# Automated Port Scanning Script for Attack Box
|
|
# Usage: ./port_scan_automation.sh <target> [quick|full|stealth]
|
|
|
|
set -e
|
|
|
|
if [ $# -eq 0 ]; then
|
|
echo "Usage: $0 <target> [quick|full|stealth]"
|
|
echo "Example: $0 192.168.1.1 full"
|
|
echo " $0 example.com quick"
|
|
exit 1
|
|
fi
|
|
|
|
TARGET="$1"
|
|
SCAN_TYPE="${2:-quick}"
|
|
WORKSPACE="/root/operator/scans/nmap/$TARGET"
|
|
DATE=$(date +%Y%m%d_%H%M%S)
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
echo -e "${GREEN}[+] Starting port scan for: $TARGET${NC}"
|
|
echo -e "${BLUE}[*] Scan type: $SCAN_TYPE${NC}"
|
|
|
|
# Create workspace
|
|
mkdir -p "$WORKSPACE"
|
|
cd "$WORKSPACE"
|
|
|
|
# Create log file
|
|
LOG_FILE="portscan_$DATE.log"
|
|
echo "Port scan started at $(date)" > "$LOG_FILE"
|
|
|
|
# Function to log and execute
|
|
log_and_run() {
|
|
echo -e "${YELLOW}[*] $1${NC}"
|
|
echo "[$(date)] $1" >> "$LOG_FILE"
|
|
eval "$2" 2>&1 | tee -a "$LOG_FILE"
|
|
}
|
|
|
|
case $SCAN_TYPE in
|
|
"quick")
|
|
echo -e "${GREEN}[+] Quick Port Scan (Top 1000 ports)${NC}"
|
|
log_and_run "Nmap quick scan" "nmap -T4 -F $TARGET -oA nmap_quick_$DATE"
|
|
log_and_run "Rustscan quick" "rustscan -a $TARGET --ulimit 5000 -- -A"
|
|
;;
|
|
|
|
"full")
|
|
echo -e "${GREEN}[+] Full Port Scan (All 65535 ports)${NC}"
|
|
log_and_run "Nmap SYN scan all ports" "nmap -sS -T4 -p- $TARGET -oA nmap_syn_all_$DATE"
|
|
log_and_run "Nmap service detection on open ports" "nmap -sV -sC -T4 $TARGET -oA nmap_services_$DATE"
|
|
log_and_run "Nmap UDP scan top ports" "nmap -sU --top-ports 1000 $TARGET -oA nmap_udp_$DATE"
|
|
log_and_run "Masscan all ports" "masscan -p1-65535 $TARGET --rate=1000 -e tun0 2>/dev/null || echo 'Masscan failed - check interface'"
|
|
;;
|
|
|
|
"stealth")
|
|
echo -e "${GREEN}[+] Stealth Port Scan${NC}"
|
|
log_and_run "Nmap stealth SYN scan" "nmap -sS -T2 -f --source-port 53 $TARGET -oA nmap_stealth_$DATE"
|
|
log_and_run "Nmap decoy scan" "nmap -D RND:10 -T2 $TARGET -oA nmap_decoy_$DATE"
|
|
;;
|
|
|
|
*)
|
|
echo -e "${RED}[-] Invalid scan type. Use: quick, full, or stealth${NC}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# Additional enumeration for common services
|
|
echo -e "${GREEN}[+] Service-specific enumeration${NC}"
|
|
|
|
# Check for common vulnerabilities
|
|
log_and_run "Nmap vulnerability scripts" "nmap --script vuln $TARGET -oA nmap_vulns_$DATE"
|
|
|
|
# Extract open ports for further enumeration
|
|
if [ -f "nmap_*.gnmap" ]; then
|
|
OPEN_PORTS=$(grep "open" nmap_*.gnmap | grep -oP '\d+/open' | cut -d'/' -f1 | sort -n | uniq | tr '\n' ',')
|
|
echo -e "${BLUE}[*] Open ports found: $OPEN_PORTS${NC}"
|
|
|
|
# Service-specific scans
|
|
if echo "$OPEN_PORTS" | grep -q "21"; then
|
|
log_and_run "FTP enumeration" "nmap --script ftp-* -p 21 $TARGET"
|
|
fi
|
|
|
|
if echo "$OPEN_PORTS" | grep -q "22"; then
|
|
log_and_run "SSH enumeration" "nmap --script ssh-* -p 22 $TARGET"
|
|
fi
|
|
|
|
if echo "$OPEN_PORTS" | grep -q "53"; then
|
|
log_and_run "DNS enumeration" "nmap --script dns-* -p 53 $TARGET"
|
|
if command -v dig &> /dev/null; then
|
|
log_and_run "DNS zone transfer attempt" "dig @$TARGET axfr"
|
|
fi
|
|
fi
|
|
|
|
if echo "$OPEN_PORTS" | grep -E "(80|443|8080|8443)" &> /dev/null; then
|
|
log_and_run "HTTP enumeration" "nmap --script http-* -p 80,443,8080,8443 $TARGET"
|
|
fi
|
|
|
|
if echo "$OPEN_PORTS" | grep -q "139\|445"; then
|
|
log_and_run "SMB enumeration" "nmap --script smb-* -p 139,445 $TARGET"
|
|
if command -v enum4linux &> /dev/null; then
|
|
log_and_run "enum4linux scan" "enum4linux $TARGET"
|
|
fi
|
|
fi
|
|
|
|
if echo "$OPEN_PORTS" | grep -q "1433"; then
|
|
log_and_run "MSSQL enumeration" "nmap --script ms-sql-* -p 1433 $TARGET"
|
|
fi
|
|
|
|
if echo "$OPEN_PORTS" | grep -q "3306"; then
|
|
log_and_run "MySQL enumeration" "nmap --script mysql-* -p 3306 $TARGET"
|
|
fi
|
|
fi
|
|
|
|
# Generate summary
|
|
echo -e "${GREEN}[+] Port Scan Complete!${NC}"
|
|
echo -e "${BLUE}[*] Results saved in: $WORKSPACE${NC}"
|
|
echo -e "${BLUE}[*] Log file: $LOG_FILE${NC}"
|
|
|
|
# Count open ports
|
|
if ls nmap_*.gnmap 1> /dev/null 2>&1; then
|
|
TOTAL_OPEN=$(grep -h "open" nmap_*.gnmap | wc -l)
|
|
echo -e "${BLUE}[*] Total open ports found: $TOTAL_OPEN${NC}"
|
|
fi
|
|
|
|
# Generate simple report
|
|
cat > "portscan_report.txt" << EOF
|
|
Port Scan Report for $TARGET
|
|
=============================
|
|
Scan Type: $SCAN_TYPE
|
|
Date: $(date)
|
|
Workspace: $WORKSPACE
|
|
|
|
Open Ports:
|
|
$(grep -h "open" nmap_*.gnmap 2>/dev/null | head -20 || echo "No open ports found in gnmap files")
|
|
|
|
Summary:
|
|
- Scan completed successfully
|
|
- Results saved in multiple formats (.nmap, .xml, .gnmap)
|
|
- Log file: $LOG_FILE
|
|
|
|
Next Steps:
|
|
1. Review service versions for known vulnerabilities
|
|
2. Run targeted service enumeration
|
|
3. Check for default credentials
|
|
4. Look for misconfigurations
|
|
EOF
|
|
|
|
echo -e "${GREEN}[+] Report generated: portscan_report.txt${NC}"
|
|
echo "Port scan completed at $(date)" >> "$LOG_FILE"
|