Scapy和DHCP安全测试

时间:2013-11-14 09:11:45

标签: python-2.7 dhcp scapy

我用dhcp的顺序得到了一个关于Scapy的问题。 发送dhcp征求消息并得到答案没有问题,但我真正需要的是编程:

  1. Scapy发送DHCP请求数据包
  2. 收到广告包,到目前为止确定。
  3. 我需要发送一个请求,其中包含我从广告包中获得的一些信息..
  4. 这是代码的一部分,我希望你能理解我想要实现的目标。 (最不相关的和未写在这里的值)

    sol = DHCP6_Solicit()
    opreq = DHCP6OptOptReq()
    et= DHCP6OptElapsedTime()
    cid = DHCP6OptClientId()
    iana = DHCP6OptIA_NA()
    optiana = DHCP6OptIAAddress()
    
    l2 = Ether (src = RandMAC())
    l3 = IPv6(dst= dstt, src=srcc)
    addr = raw_input("Give Option Address: ")
    optiana.addr = str(RandIP6(addr))
    pkt = l2/l3/l4/sol/cid/opreq/et/iana/optiana
    sendp(pkt, iface='eth0')
    

    当我发送此请求包时,我得到了一个很好的答案广告dhcpv6服务器。在您拥有的广告包中,绑定首字母,服务器ID等等。

    (1)我想要的是,从广告包中使用该信息,并将其放入请求包中。但是这一切,在某种循环中,以便可以BIND我可以发送的所有广告(如数千)。 这也意味着PrefixDelegation。因此,出于安全原因,我可以测试dhcp服务器。

    (2)当我向IA_NA添加地址时,我在数据包中的IA_address之后得到DHCP OPTION 0

    http://i41.tinypic.com/154ulmp.png

    我该怎么办?因为在有效的请求消息中,我们可以看到IA地址在IA_NA内。

    我也尝试了这个:

    addr = raw_input("Give Option Address: ")
    optiana.addr = str(RandIP6(addr))
    optiana.preflft = 7200
    optiana.validlft = 9200
    iana.ianaopts = optiana 
    pkt = l2/l3/l4/sol/cid/opreq/et/iana
    

    但是随后发生了一些包裹,它补充说,最后是零。 http://i44.tinypic.com/2ih09k3.png

    我们可以在这里看到scapy发送数据包,因为它需要发送,对吧? http://i44.tinypic.com/309pohj.png

    (3)还有一件事:我认为,PD存在问题,因为当我向PD提供选项时,如地址,当我添加其他PD时,包会停在那里(请参阅wireshark中的内容)。但是,如果我只添加没有选项的PD,它就会起作用。

    http://i41.tinypic.com/24zg390.png

    PD的代码

    optiapd = DHCP6OptIA_PD()
    iapd = DHCP6OptIAPrefix()
    opreq = DHCP6OptOptReq()
    et= DHCP6OptElapsedTime()
    cid = DHCP6OptClientId()
    
    l2 = Ether (src = RandMAC())
    l3 = IPv6(dst= dstt, src=srcc)
    addr = raw_input("Give Option Address: ")
    iapd.prefix = str(RandIP6(addr))
    pkt = l2/l3/l4/sol/cid/opreq/et/optiapd/iapd       # (adding more...../optiapd/iapd....wont work)
    sendp(pkt, iface='eth0')
    

    另外我在/scapy/layers/dhcp6.py中遇到了DHCPv6_am(AnsweringMachine)! 当所有数据包都在一个数组中时,如何对每个数据包使用回复机制?

1 个答案:

答案 0 :(得分:1)

问题(1)已经解决:)

我刚写了另一个脚本,它会嗅探并读出数据包:)这是另一种方法。

问题(2)

经过数小时的测试后,我得出的结论是DHCP Option 0将出现在Wireshark中,因为:

DHCP6 IA Address Option,有一个子值IA-ID。 当我填写此内容时,我可以看到它是DHCP option 0中出现的价值的来源。

我认为这是Scapy的一些编程错误。

查看后,RFC 3315 DHCP for IPv6子选项22.6 没有为DHCP6 IA Address Option分配IAID。

所以我所做的只是调整并搜索该行并对其进行评论。

问题(3)

我认为Scapy不适合PD。在我尝试的一切之后,它不起作用。