initial commit

This commit is contained in:
2023-08-17 12:21:31 -05:00
commit 1b877333ca
14 changed files with 781 additions and 0 deletions

View File

@ -0,0 +1,41 @@
#!/bin/bash
get_tool_name() {
echo "DNS Cache Poisoning Tester"
}
get_tool_description() {
echo "Test DNS cache poisoning vulnerability on a domain or domains"
}
execute_tool() {
result=""
if [ -n "$domain" ]; then
if [[ "$domain" == *$'\n'* ]]; then
for single_domain in $domain; do
process_domain "$single_domain"
done
else
process_domain "$domain"
fi
else
result="No domains specified."
fi
echo -e "$result"
}
process_domain() {
local single_domain="$1"
result+="\e[1mDomain:\e[0m $single_domain\n"
ns1_result=$(dig +short @"$single_domain" "$single_domain")
ns2_result=$(dig +short @"$single_domain" "$single_domain")
if [ "$ns1_result" == "$ns2_result" ]; then
result+="\e[1mCache Poisoning:\e[0m Vulnerable\n"
else
result+="\e[1mCache Poisoning:\e[0m Not Vulnerable\n"
fi
}

79
tools/dns_health_check.sh Normal file
View File

@ -0,0 +1,79 @@
#!/bin/bash
get_tool_name() {
echo "DNS Health Check"
}
get_tool_description() {
echo "Comprehensive health check of a domain's DNS configuration"
}
execute_tool() {
result=""
if [ -n "$domain" ]; then
if [[ "$domain" == *$'\n'* ]]; then
for single_domain in $domain; do
process_domain "$single_domain"
done
else
process_domain "$domain"
fi
else
result="No domains specified."
fi
echo -e "$result"
}
process_domain() {
local single_domain="$1"
result+="\e[1mDomain:\e[0m $single_domain\n"
# Check for A Record
a_record=$(dig +short A "$single_domain")
if [ -n "$a_record" ]; then
result+="\e[1mA Record:\e[0m $a_record\n"
else
result+="\e[1mA Record:\e[0m \e[31mMissing\e[0m\n"
fi
# Check for MX Record
mx_records=$(dig +short MX "$single_domain" | cut -d " " -f 2)
if [ -n "$mx_records" ]; then
result+="\e[1mMX Records:\e[0m $mx_records\n"
else
result+="\e[1mMX Records:\e[0m \e[31mMissing\e[0m\n"
fi
# Check for TXT Record (SPF)
spf_record=$(dig +short TXT "$single_domain" | grep "v=spf1")
if [ -n "$spf_record" ]; then
result+="\e[1mSPF Record:\e[0m $spf_record\n"
else
result+="\e[1mSPF Record:\e[0m \e[31mMissing\e[0m\n"
fi
# Check for TXT Record (DMARC)
dmarc_record=$(dig +short TXT "_dmarc.$single_domain" | grep "v=DMARC1")
if [ -n "$dmarc_record" ]; then
result+="\e[1mDMARC Record:\e[0m $dmarc_record\n"
else
result+="\e[1mDMARC Record:\e[0m \e[31mMissing\e[0m\n"
fi
# Check for TXT Record (DKIM)
# Check DKIM records
dkim_record=$(dig +short TXT "default._domainkey.$single_domain")
if [ -n "$dkim_record" ]; then
result+="\e[1mDKIM Record:\e[0m $dkim_record\n"
else
result+="\e[1mDKIM Record:\e[0m \e[31mNo DKIM record found\e[0m\n"
fi
# Check DNS Resolution Delay
dns_resolution_delay=$(ping -c 5 "$single_domain" | tail -1 | awk '{print $4}' | cut -d '/' -f 2)
if [ -n "$dns_resolution_delay" ]; then
result+="\e[1mDNS Resolution Delay:\e[0m $dns_resolution_delay ms\n"
fi
}

View File

@ -0,0 +1,45 @@
#!/bin/bash
# List of DNS servers from different locations
DNS_SERVERS=("8.8.8.8" "1.1.1.1" "9.9.9.9" "208.67.222.222")
get_tool_name() {
echo "DNS Propagation Check"
}
get_tool_description() {
echo "Check DNS propagation across various DNS servers worldwide"
}
execute_tool() {
result=""
if [ -n "$domain" ]; then
if [[ "$domain" == *$'\n'* ]]; then
for single_domain in $domain; do
process_domain "$single_domain"
done
else
process_domain "$domain"
fi
else
result="No domains specified."
fi
echo -e "$result"
}
process_domain() {
local single_domain="$1"
result+="\e[1mDomain:\e[0m $single_domain\n"
for dns_server in "${DNS_SERVERS[@]}"; do
response=$(dig "@$dns_server" "$single_domain" +short)
if [ -n "$response" ]; then
result+="\e[1mDNS Server ($dns_server):\e[0m $response\n"
else
result+="\e[1mDNS Server ($dns_server):\e[0m \e[31mFailed\e[0m\n"
fi
done
}

View File

@ -0,0 +1,45 @@
#!/bin/bash
# List of DNS servers to compare
DNS_SERVERS=("8.8.8.8" "1.1.1.1" "9.9.9.9" "208.67.222.222")
get_tool_name() {
echo "DNS Server Comparison"
}
get_tool_description() {
echo "Compare DNS server performance in terms of speed and reliability"
}
execute_tool() {
result=""
if [ -n "$domain" ]; then
if [[ "$domain" == *$'\n'* ]]; then
for single_domain in $domain; do
process_domain "$single_domain"
done
else
process_domain "$domain"
fi
else
result="No domains specified."
fi
echo -e "$result"
}
process_domain() {
local single_domain="$1"
result+="\e[1mDomain:\e[0m $single_domain\n"
for dns_server in "${DNS_SERVERS[@]}"; do
response_time=$(dig "@$dns_server" "$single_domain" +stats +time=1 | grep "Query time:" | awk '{print $4}')
if [ -n "$response_time" ]; then
result+="\e[1mDNS Server:\e[0m $dns_server \e[1mResponse Time:\e[0m ${response_time}ms\n"
else
result+="\e[1mDNS Server:\e[0m $dns_server \e[1mResponse Time:\e[0m \e[31mFailed\e[0m\n"
fi
done
}

View File

@ -0,0 +1,45 @@
#!/bin/bash
# List of open DNS servers for testing
DNS_SERVERS=("8.8.8.8" "1.1.1.1" "9.9.9.9" "208.67.222.222")
get_tool_name() {
echo "DNSSEC Validation"
}
get_tool_description() {
echo "Verify DNSSEC signatures for a domain"
}
execute_tool() {
result=""
if [ -n "$domain" ]; then
if [[ "$domain" == *$'\n'* ]]; then
for single_domain in $domain; do
process_domain "$single_domain"
done
else
process_domain "$domain"
fi
else
result="No domains specified."
fi
echo -e "$result"
}
process_domain() {
local single_domain="$1"
result+="\e[1mDomain:\e[0m $single_domain\n"
for dns_server in "${DNS_SERVERS[@]}"; do
dnssec_status=$(delv @"$dns_server" +dnssec +nocomments +nocl "$single_domain" 2>&1 | head -n 1)
if echo "$dnssec_status" | grep -q "; fully validated"; then
result+="\e[1mDNS Server ($dns_server):\e[0m \e[32mFully Validated\e[0m\n"
else
result+="\e[1mDNS Server ($dns_server):\e[0m \e[31mNot Fully Validated\e[0m\n"
fi
done
}

View File

@ -0,0 +1,43 @@
#!/bin/bash
get_tool_name() {
echo "Domain Blacklist Check"
}
get_tool_description() {
echo "Check domains against well-known blacklists"
}
execute_tool() {
result=""
if [ -n "$domain" ]; then
if [[ "$domain" == *$'\n'* ]]; then
for single_domain in $domain; do
process_domain "$single_domain"
done
else
process_domain "$domain"
fi
else
result="No domains specified."
fi
echo -e "$result"
}
process_domain() {
local single_domain="$1"
blacklists=("zen.spamhaus.org" "bl.spamcop.net" "b.barracudacentral.org")
result+="\e[1mDomain:\e[0m $single_domain\n"
for blacklist in "${blacklists[@]}"; do
if nslookup "$single_domain.$blacklist" > /dev/null; then
result+="\e[1m$blacklist:\e[0m \e[31mFailed\e[0m\n"
else
result+="\e[1m$blacklist:\e[0m \e[32mPass\e[0m\n"
fi
done
result+="\n"
}

View File

@ -0,0 +1,61 @@
#!/bin/bash
get_tool_name() {
echo "Domain TXT Record Check"
}
get_tool_description() {
echo "Check SPF, DMARC, DKIM, and other TXT records of a domain"
}
execute_tool() {
result=""
if [ -n "$domain" ]; then
if [[ "$domain" == *$'\n'* ]]; then
for single_domain in $domain; do
process_domain "$single_domain"
done
else
process_domain "$domain"
fi
else
result="No domains specified."
fi
echo -e "$result"
}
process_domain() {
local single_domain="$1"
spf_record=$(dig +short TXT "$single_domain" | grep -i "v=spf1")
dmarc_record=$(dig +short TXT "_dmarc.$single_domain")
dkim_records=$(dig +short TXT "$single_domain" | grep -i "v=dkim1")
result+="\e[1mDomain:\e[0m $single_domain\n"
if [ -n "$spf_record" ]; then
result+="\e[1mSPF Record:\e[0m $spf_record\n"
else
result+="\e[1mSPF Record:\e[0m \e[31mFailed\e[0m\n"
fi
if [ -n "$dmarc_record" ]; then
result+="\e[1mDMARC Record:\e[0m $dmarc_record\n"
else
result+="\e[1mDMARC Record:\e[0m \e[31mFailed\e[0m\n"
fi
if [ -n "$dkim_records" ]; then
result+="\e[1mDKIM Records:\e[0m\n$dkim_records\n"
else
result+="\e[1mDKIM Records:\e[0m \e[31mFailed\e[0m\n"
fi
other_txt_records=$(dig +short TXT "$single_domain" | grep -v -iE "v=spf1|_dmarc|v=dkim1")
if [ -n "$other_txt_records" ]; then
result+="\e[1mOther TXT Records:\e[0m\n$other_txt_records\n"
fi
result+="\n"
}

View File

@ -0,0 +1,63 @@
#!/bin/bash
# Set this variable to "true" to enable debug mode
DEBUG_MODE="false"
get_tool_name() {
echo "HTTP Status Check"
}
get_tool_description() {
echo "Check HTTP and HTTPS status of a domain"
}
execute_tool() {
result=""
if [ -n "$domain" ]; then
if [[ "$domain" == *$'\n'* ]]; then
for single_domain in $domain; do
process_domain "$single_domain"
done
else
process_domain "$domain"
fi
else
result="No domains specified."
fi
echo -e "$result"
}
process_domain() {
local single_domain="$1"
result+="\e[1mDomain:\e[0m $single_domain\n"
http_response=$(curl -sIL --max-time 10 "http://$single_domain" | grep -i "HTTP/1.1")
if [ -n "$http_response" ]; then
result+="\e[1mHTTP:\e[0m \e[32mPass\e[0m\n"
else
https_response=$(curl -sIL --max-time 10 "https://$single_domain" | grep -i "HTTP/1.1")
if [ -n "$https_response" ]; then
if [[ "$https_response" == *"301 Moved Permanently"* ]]; then
https_redirect=$(echo "$https_response" | awk '{print $3}')
https_status=$(curl -sIL --max-time 10 "$https_redirect" | grep -i "HTTP/1.1")
if [ -n "$https_status" ] && [[ "$https_status" == *"200 OK"* ]]; then
result+="\e[1mHTTP/HTTPS:\e[0m \e[32mhttps forced\e[0m\n"
else
result+="\e[1mHTTP/HTTPS:\e[0m \e[31mhttps not forced\e[0m\n"
fi
else
result+="\e[1mHTTP/HTTPS:\e[0m \e[31mhttps failed\e[0m\n"
fi
else
result+="\e[1mHTTP/HTTPS:\e[0m \e[31mFailed\e[0m\n"
fi
fi
if [ "$DEBUG_MODE" == "true" ]; then
echo -e "\n\e[1mDebug Info:\e[0m"
curl -IL --max-time 10 "http://$single_domain"
fi
}

41
tools/rdns_check.sh Normal file
View File

@ -0,0 +1,41 @@
#!/bin/bash
get_tool_name() {
echo "RDNS Check"
}
get_tool_description() {
echo "Perform reverse DNS (RDNS) checks on a domain or domains"
}
execute_tool() {
result=""
if [ -n "$domain" ]; then
if [[ "$domain" == *$'\n'* ]]; then
for single_domain in $domain; do
process_domain "$single_domain"
done
else
process_domain "$domain"
fi
else
result="No domains specified."
fi
echo -e "$result"
}
process_domain() {
local single_domain="$1"
result+="\e[1mDomain:\e[0m $single_domain\n"
single_domain_ip=$(dig A +short "$single_domain")
rDNS_result=$(dig +short -x "$single_domain_ip")
if [ -n "$rDNS_result" ]; then
result+="\e[34mRDNS Result:\e[32m $rDNS_result\n"
else
result+="\e[34mRDNS Result:\e[31m No RDNS record found.\n"
fi
}

45
tools/smtp_test.sh Executable file
View File

@ -0,0 +1,45 @@
#!/bin/bash
get_tool_name() {
echo "SMTP Test"
}
get_tool_description() {
echo "Check SMTP ports of a domain"
}
execute_tool() {
result=""
if [ -n "$domain" ]; then
if [[ "$domain" == *$'\n'* ]]; then
for single_domain in $domain; do
process_domain "$single_domain"
done
else
process_domain "$domain"
fi
else
result="No domains specified."
fi
echo -e "$result"
}
process_domain() {
local single_domain="$1"
mx_record=$(dig +short MX "$single_domain" | sort -n | head -n 1 | awk '{print $2}')
if [ -n "$mx_record" ]; then
smtp_ports="25 465 587"
ports_status=""
for port in $smtp_ports; do
if nc -z -w3 "$mx_record" "$port"; then
ports_status+="\e[32m$port: \e[1mSuccess\e[0m "
else
ports_status+="\e[31m$port: \e[1mError\e[0m "
fi
done
result+="\e[1mMX Hostname Tested:\e[0m $mx_record \e[1mPorts:\e[0m $ports_status\n"
else
result+="No MX record found for $single_domain\n"
fi
}

View File

@ -0,0 +1,40 @@
#!/bin/bash
get_tool_name() {
echo "DNS Traffic Analyzer"
}
get_tool_description() {
echo "Analyze DNS traffic for a domain or domains"
}
execute_tool() {
result=""
if [ -n "$domain" ]; then
if [[ "$domain" == *$'\n'* ]]; then
for single_domain in $domain; do
process_domain "$single_domain"
done
else
process_domain "$domain"
fi
else
result="No domains specified."
fi
echo -e "$result"
}
process_domain() {
local single_domain="$1"
result+="\e[1mDomain:\e[0m $single_domain\n"
dns_traffic=$(tcpdump -n -i any port 53 and host "$single_domain" -c 10)
if [ -n "$dns_traffic" ]; then
result+="\e[1mDNS Traffic:\e[0m\n$dns_traffic\n"
else
result+="\e[1mDNS Traffic:\e[0m No DNS traffic detected.\n"
fi
}