根据您的要求,我对脚本进行了更新。现在,脚本将记录访问时间、IP 地址和访问的域名,并将这些记录保存到文件中。
- 创建一个名为
capture_dns.sh
的脚本文件,并将以下内容复制到该文件中:
#!/bin/bash
# 检查 tcpdump 和 tshark 是否已安装
if ! command -v tcpdump > /dev/null; then
echo "Error: tcpdump not found. Please install tcpdump."
exit 1
fi
if ! command -v tshark > /dev/null; then
echo "Error: tshark not found. Please install tshark (Wireshark)."
exit 1
fi
# 设置捕获文件、恶意域名列表文件和恶意 IP 记录文件
capture_file="dns_capture.pcap"
malicious_domains_file="malicious_domains.txt"
malicious_ips_file="malicious_ips.txt"
# 使用 tcpdump 抓取 DNS 请求
echo "Capturing DNS requests..."
sudo tcpdump -i any -s 0 -w "$capture_file" 'udp port 53' &
# 保存 tcpdump 进程的 PID,以便稍后停止它
tcpdump_pid=$!
# 捕获持续时间(单位:秒)
capture_duration=60
# 等待捕获完成
echo "Capturing for $capture_duration seconds..."
sleep $capture_duration
# 停止 tcpdump
echo "Stopping capture..."
sudo kill $tcpdump_pid
# 分析捕获的流量并将恶意 IP 记录保存到文件中
echo "Analyzing captured traffic and saving malicious IPs to $malicious_ips_file..."
rm -f "$malicious_ips_file"
tshark -r "$capture_file" -Y "dns.flags.response == 0" -T fields -e frame.time -e ip.src -e dns.qry.name | while read -r line; do
timestamp=$(echo "$line" | awk '{print $1 " " $2 " " $3}')
ip=$(echo "$line" | awk '{print $4}')
domain=$(echo "$line" | awk '{print $5}')
if grep -q -F "$domain" "$malicious_domains_file"; then
echo "Malicious domain request: $domain from IP: $ip at $timestamp"
echo "$timestamp $ip $domain" >> "$malicious_ips_file"
fi
done
# 删除捕获文件
rm "$capture_file"
echo "Done."
-
使用文本编辑器创建一个名为
malicious_domains.txt
的文件,并将已知的恶意域名列表添加到该文件中,每行一个域名。 -
为
capture_dns.sh
脚本添加可执行权限:
chmod +x capture_dns.sh
- 以管理员权限运行脚本:
sudo ./capture_dns.sh
脚本将捕获 60 秒的 DNS 请求。您可以根据需要更改 capture_duration
变量的值。脚本运行完成后,它将输出发起恶意域名请求的 IP 地址、访问时间和相应的域名,并将这些记录保存到 malicious_ips.txt
文件中。请注意,您需要根据实际情况修改脚本中的文件名和其他参数。
为了运行此脚本,您需要在您的系统上安装以下工具:
-
tcpdump
:这是一个强大的命令行网络分析工具,用于捕获网络流量。 -
tshark
:这是 Wireshark 的命令行版本,用于分析网络流量。
在大多数 Linux 发行版中,您可以使用包管理器来安装这些工具。例如,在基于 Debian 的系统(如 Ubuntu)中,您可以使用以下命令来安装:
sudo apt-get update
sudo apt-get install tcpdump tshark
在基于 Red Hat 的系统(如 CentOS)中,您可以使用以下命令来安装:
sudo yum install tcpdump wireshark
请注意,安装 wireshark
包通常也会安装 tshark
。
在运行脚本之前,您还需要创建一个包含恶意域名的文本文件(如 malicious_domains.txt
),并将已知的恶意域名添加到该文件中,每行一个域名。