Szybki scan podatności w sieci

blaszczakm.blogspot.com 2 tygodni temu

Dwa skrypty co robią dużo szumu ale wpada wiele nisko wiszących owoców do koszyczka. gwałtownie i sprawnie. Do przeszukania wyników z smb lubię wykorzystywać https://github.com/SySS-Research/smbcrawler/tree/main


└─# cat skan_masscan.sh

#!/bin/bash


USER_DOM="w4cky"

PASS_DOM='l0l'

DOMAIN="domena"

PORTS="80,443,8080,8443,445"

RATE=10000


echo "[*] Start masscan-based scanning of 10.0.0.0/8 for ports: $PORTS"


for a in $(seq 15 255); do

PODSIEC="10.$a.0.0/16"

MASSCAN_OUT="masscan-10.$a.0.0.txt"

LIVE_FILE="live-10.$a.0.0.txt"


echo -e "\n[*] Masscan $PODSIEC..."

sudo masscan $PODSIEC -p$PORTS --rate=$RATE -oL "$MASSCAN_OUT" 2>/dev/null


if [ ! -f "$MASSCAN_OUT" ]; then

echo "[!] masscan NIE wygenerował pliku $MASSCAN_OUT – pomijam $PODSIEC"

continue

fi


awk '/^open/ {print $4}' "$MASSCAN_OUT" | sort -u > "$LIVE_FILE"

[ ! -s "$LIVE_FILE" ] && echo "[!] Brak hostów w $PODSIEC – pomijam." && continue


for ip in $(cat "$LIVE_FILE"); do

[[ $ip =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]] || continue

echo -e "\n[+] Skanuję hosta $ip"


PORTY=$(awk -v ip="$ip" '$4 == ip {print $3}' "$MASSCAN_OUT" | sort -n | uniq)


> urls-$ip.txt

for port in $PORTY; do

case $port in

80) echo "http://$ip" >> urls-$ip.txt ;;

8080) echo "http://$ip:8080" >> urls-$ip.txt ;;

443) echo "https://$ip" >> urls-$ip.txt ;;

8443) echo "https://$ip:8443" >> urls-$ip.txt ;;

*) ;; # inne pomiń (np. 445)

esac

done


if [ -s urls-$ip.txt ]; then

echo "[NUCLEI] nuclei -l urls-$ip.txt -silent -o nuclei-$ip.txt"

nuclei -l urls-$ip.txt -silent -o nuclei-$ip.txt

[ -s nuclei-$ip.txt ] || rm -f nuclei-$ip.txt

else

echo "[NUCLEI] Brak portów web – pomijam nuclei dla $ip"

fi

rm -f urls-$ip.txt


echo "[NMAP+SMB] nmap -sS -sV -O -Pn -p- --script smb-* $ip"

nmap -sS -sV -O -Pn -p- \

--script "smb-enum-shares,smb-enum-users,smb-os-discovery" \

--script-args "smbuser=$USER_DOM,smbpass=$PASS_DOM,smbdomain=$DOMAIN" \

$ip -oN nmap-$ip.txt


grep -qE "open|Running:|Domain|anonymous|CENTRALA" nmap-$ip.txt || rm -f nmap-$ip.txt


if command -v enum4linux-ng &>/dev/null; then

echo "[ENUM4LINUX] enum4linux-ng -A $ip -u $USER_DOM -p '****' -d $DOMAIN -o enum-$ip"

enum4linux-ng -A $ip -u $USER_DOM -p "$PASS_DOM" -d $DOMAIN -o enum-$ip

grep -qi 'Access granted\|Group\|User' enum-$ip/* 2>/dev/null || rm -rf enum-$ip

fi

done



└─# cat enum_smb.sh

#!/bin/bash


USER_DOM="w4cky"

PASS_DOM='l0l'

DOMAIN="domena"



echo "[*] Wyszukiwanie IP z portem 445 w masscan-10.*..."

IP_LIST=$(cat masscan-10.* 2>/dev/null | awk '$3 == 445 {print $4}' | sort -u)


if [ -z "$IP_LIST" ]; then

echo "[!] Nie znaleziono IP – kończę."

exit 1

fi


for ip in $IP_LIST; do

echo -e "\n[+] SMB na $ip"

echo "[CMD] smbclient -L //$ip -U '$DOMAIN\\$USER_DOM%$PASS_DOM' -g"


smbclient -L "//$ip" -U '$DOMAIN\\$USER_DOM%$PASS_DOM' -g > "smb-$ip.txt" 2>&1


if grep -q 'NT_STATUS' "smb-$ip.txt"; then

echo "[!] Błąd SMB na $ip: $(grep 'NT_STATUS' "smb-$ip.txt" | head -1)"

rm -f "smb-$ip.txt"

elif grep -q 'Disk' "smb-$ip.txt"; then

echo "[✔] Udziały zapisane do smb-$ip.txt"

else

echo "[~] Brak udziałów – czyszczę"

rm -f "smb-$ip.txt"

fi

done


echo -e "\n[✓] Zakończono."

Idź do oryginalnego materiału