Python网络编程8-实现SYN Flood攻击与图形化展示
最基本的DoS攻击就是攻击者利用大量合理的服务请求来占用攻击目标过多的服务资源,从而使合法用户无法得到服务的响应。DoS攻击一般是采用一对一方式的,当攻击目标各项性能指标不高时(例如CPU速度低、内存小或者网络带宽小等等),它的效果是明显的。
泛洪攻击(Flood)
指攻击者通过僵尸网络、代理或直接向攻击目标发送大量的伪装的请求服务报文,最终耗尽攻击目标的资源。发送的大量报文可以是TCP的SYN和ACK报文、UDP报文、ICMP报文、DNS报文HTTP/HTTPS报文等。
以下Python脚本可实现简易的SYN Flood攻击
运行结果如下
使用Wirshark观察如下,产生大量TCP syn包;由于使用单IP单端口发送时,scapy使用了相同TCP序列号和数据,Wirshark认为是TCP重传,使用多IP多端口是则正常。
以下Python脚本可对捕获的SYN Flood包进行分析,并展示出数量大于5的连接。
运行结果如下
首先会打印出数量大于5的连接与其对应的数量。
同时会生成对应图表,可以直观的看到攻击目标主机和端口的源IP排名。
Python网络编程6-使用Pysnmp实现简单网管
简单网络管理协议SNMP(Simple Network Management Protocol)用于网络设备的管理。SNMP作为广泛应用于TCP/IP网络的网络管理标准协议,提供了统一的接口,从而实现了不同种类和厂商的网络设备之间的统一管理。
SNMP协议分为三个版本:SNMPv1、SNMPv2c和SNMPv3。
SNMP系统由网络管理系统NMS(Network Management System)、SNMP Agent、被管对象Management object和管理信息库MIB(Management Information Base)四部分组成。
SNMP查询是指NMS主动向SNMP Agent发送查询请求,如图1-3所示。SNMP Agent接收到查询请求后,通过MIB表完成相应指令,并将结果反馈给NMS。SNMP查询操作有三种:Get、GetNext和GetBulk。SNMPv1版本不支持GetBulk操作。
不同版本的SNMP查询操作的工作原理基本一致,唯一的区别是SNMPv3版本增加了身份验证和加密处理。下面以SNMPv2c版本的Get操作为例介绍SNMP查询操作的工作原理。假定NMS想要获取被管理设备MIB节点sysContact的值,使用可读团体名为public,过程如下所示:
SNMP设置是指NMS主动向SNMP Agent发送对设备进行Set操作的请求,如下图示。SNMP Agent接收到Set请求后,通过MIB表完成相应指令,并将结果反馈给NMS。
不同版本的SNMP Set操作的工作原理基本一致,唯一的区别是SNMPv3版本增加了身份验证和加密处理。下面以SNMPv3版本的Set操作为例介绍SNMP Set操作的工作原理。
假定NMS想要设置被管理设备MIB节点sysName的值为HUAWEI,过程如下所示:
SNMPv1和SNMPv2c的Set操作报文格式如下图所示。一般情况下,SNMPv3的Set操作信息是经过加密封装在SNMP PDU中,其格式与SNMPv2c的Set操作报文格式一致。
SNMP Traps是指SNMP Agent主动将设备产生的告警或事件上报给NMS,以便网络管理员及时了解设备当前运行的状态。
SNMP Agent上报SNMP Traps有两种方式:Trap和Inform。SNMPv1版本不支持Inform。Trap和Inform的区别在于,SNMP Agent通过Inform向NMS发送告警或事件后,NMS需要回复InformResponse进行确认。
在Ensp中搭建网络环境,在R2上启用SNMP作为SNMP agent,Linux主机作为NMS;为方便观察SNMP报文格式,在R2使用SNMP的版本为v2c。
通过下面的Python脚本获取R2的系统信息与当前的主机名
运行结果如下
在R2接口上抓包结果如下,Linux主机向R2的161端口发送SNMP get-request报文,可以看到SNMP使用的版本为v2c,设置的团体名为public,随机生成了一个request-id,变量绑定列表(Variable bindings),即要查询的OID,但Value为空;值得注意的是这些信息都是明文传输的,为了安全在实际环境中应使用SNMPv3。
通过下面的Python脚本获取R2的接口信息。
运行结果如下:
在R2接口抓包结果如下,getBuikRequest相比get-request设置了一个max-repetitions字段,表明最多执行get操作的次数。Variable bindings中请求的OID条目只有一条。
下面Python脚本用于设置R2的主机名为SNMPv2R2。
运行结果如下
在路由器上可以看到主机名有R2变为了SNMPv2R2。
get-response数据包内容与set-request中无异。
下面Python脚本用于接收,R2发送的Trap,并做简单解析。
先运行该脚本,之后再R2上手动将一个接口shutdown,结果如下:
接口上抓包结果如下,此时团体名用的是public,data部分表明是trap。
由于Ensp中的通用路由器认证算法只支持des56,而pysnmp不支持该算法,因此使用AR路由器配置SNMPv3。
使用下面Python脚本发送snmpv3 get报文获取设备系统信息。
抓包结果如下,首先发送get-resques进行SNMPv3认证请求,随机生成一个msgID,认证模式为USM,msgflgs中Reportable置1要求对方发送report,其他为置0,表示不进行加密与鉴权;另外安全参数,认证参数、加密参数都为空,此时不携带get请求数据。
路由器给NMS回复report,msgID与resquest一致,Msgflgs中各位都置0,同时回复使用的安全引擎,认证与加密参数为空,不进行认证与加密,因此能看到data中的数据。
AR1收到请求后进行回复,数据包中msgflags标志位中除reportable外其他位都置1,表示不需要回复,同时进行加密与鉴权。同样也可以看到认证用户为testuser,认证参数与加密参数都有填充,data部分也是同样加密。
参考:
什么是SNMP - 华为 (huawei.com)
AR100-S V300R003 MIB参考 - 华为 (huawei.com)
SNMP library for Python — SNMP library for Python 4.4 documentation (pysnmp.readthedocs.io)
我想学网络攻防技术,(自学) 现在零基础,求如何起步,求步骤,求师傅~~
感谢邀请! 我是机电专业转计算机行业,我大部分是在网易云课堂自学,你可以用电脑浏览器搜索网易云课堂,并进入其官网,在搜索框搜索关键字:脚本之家,里面有很多hei客与编程的专业视频,希望对您有帮助。
你可以从以下方面进行学习:
这是一条坚持的道路,三分钟的热情可以放弃往下看了,保持对黑客技术的喜爱和热情,静水流深,不断打磨技术。2.多练多想,不要离开了教程什么都不会了.要理论与实际相结合,搭建测试实验环境。如学kali渗透,要搭建好DVWA渗透测试系统,不要空学理论不渗透测试。3.有时多google,baidu,我们往往都遇不到好心的大神,谁会无聊天天给你做解答. 黑客最好会用谷歌,由于国内目前不能用谷歌,你可以直接百度搜索关键字:谷歌镜像,通过镜像网站实现谷歌搜索。4.可以加扣扣或多逛论坛,多和大牛交流学习,多把握最新安全资讯,比如FreeBuf,不断提高自己的安全攻防能力和网络安全能力。我目前是做网络安全方面,有兴趣可以加v信[ihaha12],一起交流进步!
基本方向:1.web安全方面(指网站服务器安全方面,进行渗透测试,检测漏洞以及安全性,职业目标: WEB渗透测试工程师)2、网络基础与网络攻防。学习计算机网络基础知识,为网络攻防做准备。 深入了解网络原理,并掌握它,将对我们的渗透攻击及防御至关重要。3、系统安全,window和linux系统学习与安全加固。 企业服务器主要有window和linux,其中以linux为主,企业一般都有这两个系统,对内办公系统一般用window,对外提供服务系统一般用linux,其中原因大家可以根据我们上面讲的方法谷歌一下)4、逆向破解方面(对软件进行破解合完成各种高级任务。Python虚拟机本身几乎可以在所有的作业系统中运行。)5、搞计算机的,不会编程说不过去,至少要会脚本编程,比如cmd, shell, vbs, powershell, python等。本人主要学习的是cmd shell python,其中又以python为主。
向左转|向右转
0条大神的评论