捕获 DNS 请求并分析恶意域名请求脚本

根据您的要求,我对脚本进行了更新。现在,脚本将记录访问时间、IP 地址和访问的域名,并将这些记录保存到文件中。

  1. 创建一个名为 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."
  1. 使用文本编辑器创建一个名为 malicious_domains.txt 的文件,并将已知的恶意域名列表添加到该文件中,每行一个域名。

  2. capture_dns.sh 脚本添加可执行权限:

chmod +x capture_dns.sh
  1. 以管理员权限运行脚本:
sudo ./capture_dns.sh

脚本将捕获 60 秒的 DNS 请求。您可以根据需要更改 capture_duration 变量的值。脚本运行完成后,它将输出发起恶意域名请求的 IP 地址、访问时间和相应的域名,并将这些记录保存到 malicious_ips.txt 文件中。请注意,您需要根据实际情况修改脚本中的文件名和其他参数。

为了运行此脚本,您需要在您的系统上安装以下工具:

  1. tcpdump:这是一个强大的命令行网络分析工具,用于捕获网络流量。

  2. 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),并将已知的恶意域名添加到该文件中,每行一个域名。

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值