initial commit
This commit is contained in:
41
tools/cache_poison_test.sh.unloaded
Normal file
41
tools/cache_poison_test.sh.unloaded
Normal 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
79
tools/dns_health_check.sh
Normal 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
|
||||
}
|
45
tools/dns_propagation_check.sh
Normal file
45
tools/dns_propagation_check.sh
Normal 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
|
||||
}
|
45
tools/dns_server_comparison.sh
Normal file
45
tools/dns_server_comparison.sh
Normal 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
|
||||
}
|
45
tools/dnssec_validation.sh
Normal file
45
tools/dnssec_validation.sh
Normal 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
|
||||
}
|
43
tools/domain_blacklist_check.sh
Normal file
43
tools/domain_blacklist_check.sh
Normal 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"
|
||||
}
|
61
tools/domain_txt_check.sh.unloaded
Normal file
61
tools/domain_txt_check.sh.unloaded
Normal 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"
|
||||
}
|
63
tools/http_status_check.sh
Normal file
63
tools/http_status_check.sh
Normal 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
41
tools/rdns_check.sh
Normal 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
45
tools/smtp_test.sh
Executable 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
|
||||
}
|
40
tools/traffic_analyzer.sh.unloaded
Normal file
40
tools/traffic_analyzer.sh.unloaded
Normal 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
|
||||
}
|
Reference in New Issue
Block a user