《python渗透测试模块》

2021/4/7 20:15:44

本文主要是介绍《python渗透测试模块》,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

sniff()
    BPF:
        BPF为伯克利包过滤语法,可以确定该获取和检查哪些流量,忽略哪些流量
        (1)Type用来规定使用名字或数字代表的类型,例如host、net和port等。
        (2)Dir用来规定流量的方向,例如src、dst和src and dst等。
        (3)Proto用来规定匹配的协议,例如ip、tcp和arp等。
        例:“host 192.168.1.100”就是一条最为常见的过滤器,它用来过滤掉除了本机和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”。

    prn:这个参数是一个函数,这个函数将会应用在每一个捕获到的数据包上。如果有函数则返回值,默认为空
        如果希望即时显示捕获的数据包,就可以使用prn函数选项,  函数的内容为prn=lambda x:x.summary()
        利用prn就可以不断的打印捕获到的数据包内容
        另外可以定义一个回调函数,打印输出这个数据包。
            def Callback(packet):
                print packet.show()
            sniff(prn=Callback) // 在sniff中进行调用
    保存:
        将捕获到的数据包进行保存到wrpcap函数进行保存
            >>>packet = sniff(count=5) *     
            >>>wrpcap(“demo.pcap”, packet)

Scapy:
    中间人欺骗:
        gatewayIP="192.168.1.254"      victimIP="192.168.1.101"
        srcMAC="00:0c:29:b4:07:1b"     dstMAC="00:0c:29:2D:7F:89"

        构造数据包:sendp( Ether(dst=dstMAC,src=srcMAC)/ARP( psrc=gatewayIP,pdst=victimIP)
          即使不为Ether中的dst和src赋值,系统其实也会自动将src的值设置为使用Kali Linux 主机的硬件地址

ARP欺骗 Python程序

身份认证攻击:

攻击方法:
    1、纯字典攻击
    2、混合攻击
    3、完全暴力攻击 穷举法,对于低位纯数字还可以
使用python编写一个生成字典的工具:
    在这个程序中需要使用到一个新的模块:itertools,这是一个强大的内置模块。
    (1)count()函数:这个函数的作用是产生递增的序列,例如count(1,5),生成从1开始的循环器,每次增加5,即1,6,11,16,21,26,…
    (2)cycle()函数:这个函数的作用是重复序列中的元素,例如cycle('hello'),将序列中的元素重复,即h,e,l,l,o,h,e,l,l,o,h,…
    (3)repeat()函数:这个函数的作用是重复元素,构成无穷循环器,例如Repeat(100),即100,100,100,100,…。
    (4)product()函数:它可以用来获得多个循环器的笛卡儿积,例如product('xyz', [0, 1]),得到的结果就是x0,y0,z0,x1,y1,z1。
    (5)permutations('abcd', 2) #:从'abcd'中挑选两个元素,例如ab,bc,…,并将所有结果排序,返回为新的循环器。这些元素中的组合是有顺序的,同时生成cd和dc。
    (6)combinations('abc', 2) #:从'abcd'中挑选两个元素,例如ab,bc,…,将所有结果排序,返回为新的循环器,这些元素中的组合是没有顺序的,例如c和d只能生成cd。
流程:
    1、导入:
        import itertools
    2、指定生成字典的字符,这里使用所有的英文字符和数字(但是没有考虑大小写和特殊字符)。
        words = "1234568790abcdefghijklmnopqrstuvwxyz"
    3、使用itertools中提供的循环器来生成字典文件
        temp =itertools.permutations(words,6)
    4、新建文件
        passwords = open("dic.txt","a")
    5、循环写入
        for i in temp:         
            passwords.write("".join(i))             
            passwords.write("".join("\n"))
FTP暴力:
    Python中默认就提供了一个专门用来对FTP进行操作的ftplib模块,这个模块很精简,里面提供了一些用来实现登录、上传和下载的函数。
        (1)ftp.connect("IP", "port")  #连接的FTP Server和端口。
        (2)ftp.login("user", "password") #连接的用户名,密码。
        (3)ftp.retrlines(command[, callback]) #使用文本传输模式返回在服务器上执行命令的结果。
    初始化流程:
        1、导入
            import ftplib
        2、使用ftplib创建一个FTP对象
            ftp=ftplib.FTP("192.168.1.133")
        3、调用这个对象中的connect()函数去连接目标的21号端口.
            ftp.connect("192.168.169.133",21,timeout=10)

    FTP login:

    ftp.login("admin","test") admin作为用户名,test作为密码来登录。

    ftp.retrlines('LIST')  #使用LIST命令

    ftp.quit() #quit()函数断开与FTP服务器的连接
    
    FTP暴力破解:

拒绝服务攻击:

二层Scapy模拟Macof:

三层随机模拟ip地址:
    i.src=“%i.%i.%i.%i” %(random.randint(1,254),random.randint(1,254),random.randint(1,254),random.randint(1,254))     
    id.dst=""     
    send(IP(dst="1.2.3.4")/ICMP())

死亡ping:

传输层:
    三次握手:
        (1)客户端向服务器端发送SYN(SEQ=x)数据包,并进入SYN_SEND状态。
        (2)服务器端在收到客户端发出的SYN报文之后,回应一个SYN(SEQ=y)ACK(ACK=x+1)数据包,并进入SYN_RECV状态。
        (3)客户端收到服务器端的SYN数据包,回应一个ACK(ACK=y+1)数据包,进入Established状态。

应用层:
    (1)sending RAW packet:          发送原始数据包。
    (2)sending DISCOVER packet:发送请求获取IP地址数据包,占用所有的IP,造成拒绝服务。
    (3)creating DHCP rogue server:创建虚假DHCP服务器,让用户连接,真正的DHCP无法工作。
    (4)sending RELEASE packet:发送释放IP请求到DHCP服务器,致使正在使用的IP全部失效
    msfconsle
    use auxiliary/dos/tcp/synflood
    synflood这个模块需要的参数包括RHOST、RPORT、SNAPLEN和TIMEOUT,后面的三个参数都有默认值,所以需要设置的只有RHOST,这也正是要发起拒绝服务攻击服务器的IP地址。
    这个目标必须是对外提供HTTP服务的服务器。



这篇关于《python渗透测试模块》的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程