Python程序设计-安全渗透测试--网络嗅探与欺骗

本文深入探讨Python在安全渗透测试中的网络嗅探技术,包括使用Scapy的sniff()函数编写嗅探工具,理解BPF过滤语法,以及通过ARP原理分析中间人欺骗。此外,还介绍了如何使用Wireshark进行数据包捕获和分析,以及利用Python的socket库实现ARP欺骗。
摘要由CSDN通过智能技术生成
  • 如果想要彻底了解一个网络,那么最好的办法就是对网络中的流量进行嗅探
  • 在本章中将会编写几个嗅探工具,这些嗅探工具可以用来窃取网络中明文传输的密码,监视网络中的数据流向,甚至可以收集远程登录所使用的NTLM数据包(这个数据包中包含登录用的用户名和使用Hash加密的密码)。

网络数据嗅探

编写网络嗅探工具

  • 在Scapy中提供了一种专门用来捕获数据包的函数sniff(),这个函数的功能十分强大,首先使用help函数来查看一下它的使用方法
help(sniff)

在这里插入图片描述

  • 函数sniff()中可以使用多个参数,下面先来了解其中几个比较重要参数的含义。
    1. count:表示要捕获数据包的数量。默认值为0,表示不限制数量。
    2. store:表示是否要保存捕获到的数据包,默认值为1。
    3. prn:这个参数是一个函数,这个函数将会应用在每一个捕获到的数据包上。如果这个函数有返回值,将会显示出来。默认是空
    4. iface:表示要使用的网卡或者网卡列表。
  • sniff()还支持了过滤器的使用
    1. 这个过滤器使用了一种功能非常强大的过滤语法——“伯克利包过滤”语法。
    2. 这个规则简称为BPF,利用它可以确定该获取和检查哪些流量,忽略哪些流量。
    3. BPF可以帮助我们通过比较各个层协议中数据字段值的方法对流量进行过滤。
    4. BPF的主要特点是使用一个名为“原语”的方法来完成对网络数据包的描述,
      例如,可以使用“host”来描述主机,“port”来描述端口,同时也支持“与”“或”“非”等逻辑运算。可以限定的内容包括地址、协议等。
  • 使用这种语法创建出来的过滤器被称为BPF表达式,每个表达式包含一个或多个原语。每个原语中又包含一个或多个限定词,主要有三个限定词:Type、Dir 和 Proto。
    1. Type用来规定使用名字或数字代表的类型,例如host、net和port等。
    2. Dir用来规定流量的方向,例如src、dst和src and dst等。
    3. Proto用来规定匹配的协议,例如ip、tcp和arp等。
      “host 192.168.169.133”就是一条最为常见的过滤器,它用来过滤掉除了本机和192.168.169.133以外的所有流量。如果希望再将范围限制小一些,例如,只捕获tcp类型的流量就可以使用“与”运算符,如“host 192.168.169.133 && tcp”。
  • 一些常见的过滤器。
    1. 只捕获与网络中某一个IP的主机进行交互的流量:“host 192.168.1.1”。
    2. 只捕获与网络中某一个MAC地址的主机交互的流量:“ether host 00-1a-a0-52-e2-a0”。
    3. 只捕获来自网络中某一个IP的主机的流量:“src host 192.168.1.1”。
    4. 只捕获去往网络中某一个IP的主机的流量:“dst host 192.168.1.1”,host也可以省略。
    5. 只捕获23端口的流量:“port 23”。
    6. 捕获除了23端口以外的流量:“!23”。
    7. 只捕获目的端口为80的流量:“dst port 80”。
    8. 只捕获ICMP流量:“icmp”。
    9. 只捕获type为3,code为0的ICMP流量:“icmp[0] = 3 &&icmp[1] = 0”。
  • 下面使用sniff()来捕获一些数据包并显示出来
  • 例如,源地址为192.168.169.133,端口为80的tcp报文
    在这里插入图片描述
  • 使用了过滤器的sniff()
  • 如果希望即时显示捕获的数据包,就可以使用prn函数选项,
  • 函数的内容为prn=lambda x:x.summary()
    在这里插入图片描述
  • 利用prn就可以不断地打印输出捕获到的数据包的内容
  • 这个函数可以实现很多功能,例如输出其中的某一个选项:使用 x[IP].src 输出IP报文的目的地址
  • 在开启 sniff 的时候, 访问 目标主机的目标端口,(火狐访问 HTTP服务器)
    在这里插入图片描述
  • 结果如下:
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值