2014-08-28 42 views
0

我想在我的ubuntu中創建TCP-3方式握手。 我在虛擬機中使用了kali linux。在kali linux(IP-172.16.28.130)的終端中,我在「LISTEN」模式下打開了一個端口以與該機器建立連接。爲什麼系統在嘗試時發送RST標誌 - TCP在python中3路握手

nc -l -p 1025 

跑在Ubuntu主機我的Python代碼,

#!/usr/bin/python 
from scapy.all import * 
import logging 
logging.getLogger("scapy.runtime").setLevel(logging.ERROR) 

#if i send to broadcast address : 192.168.1.255 what will happen? 
def sendPacket(src, dst): 
    ip = IP(dst = dst) 
    port = RandNum(1024, 65535) 
    SYN = ip/TCP(sport=port, dport=1025, flags="S", seq = 42) 
    SYNACK = sr1(SYN, verbose=0) 

    ACK = ip/TCP(sport = SYNACK.dport, dport=80, flags="A", seq = SYNACK.ack, ack = SYNACK.seq + 1) 
    send(ACK) 

    print "Done!!\n" 

src = '1.2.3.4' 
dst = '172.16.28.130' 
sendPacket(src, dst) 

數據包捕獲使用Wireshark的,

3  172.16.28.1 172.16.28.130 TCP 54 64865 > blackjack [SYN] Seq=0 Win=8192 Len=0 

4  172.16.28.130 172.16.28.1 TCP 60 blackjack > 64865 [SYN, ACK] Seq=0 Ack=1 Win=29200 Len=0 MSS=1460 

7  172.16.28.1 172.16.28.130 TCP 54 64865 > blackjack [RST] Seq=1 Win=0 Len=0 

8  172.16.28.1 172.16.28.130 TCP 54 64865 > http [ACK] Seq=1 Ack=1 Win=8192 Len=0 

9  172.16.28.130 172.16.28.1 TCP 60 http > 64865 [RST] Seq=1 Win=0 Len=0 

之前跑的代碼,我改變IPTABLE,

iptables -A OUTPUT -p tcp --tcp-flags RST RST -s 192.168.1.20 -j DROP 

當我改變t他的目的地是,dst =「www.google.com」和目的地港口,dport = 80它工作的很好。

但現在, 1)我可以發送SYN包 2)目的地與SYN響應,ACK包 3)我的系統發送RST 4)1發送的ACK 5)目標系統應答與RST 所以我無法建立連接! 問題: 1)我怎樣才能成功完全建立連接 2)我的源IP =「1.2.3.4」, *但是當我發送到虛擬機時,它顯示172.16.28.1(廣播IP)。爲什麼?

回答

1

1)我怎樣才能成功完全建立連接

這裏有一個猜測。更改iptables命令:

iptables -A OUTPUT -p tcp --tcp-flags RST RST -s 172.16.28.1 -j DROP 

當您連接到google.com,嘗試連接您的物理以太網設備,其IP 192.168.x.y,所以-s參數匹配。

當您連接到Kali時,您通過虛擬以太網設備連接,該設備的地址爲172.16.x.y,因此-s不匹配。

您需要從正確的輸出隊列中刪除RST數據包。

2)我的源IP = 「1.2.3.4」,*但是當我發送到虛擬機它顯示172.16.28.1(廣播IP)。爲什麼?

首先,172.16.28.1是您的廣播IP。它是您主機的虛擬以太網設備的IP。

爲什麼你的源IP沒有出現的原因是,你不使用它:

ip = IP(dst = dst) 

您指定目標地址,但不攜帶源地址。某些實體(scapy或主機操作系統IP堆棧,我不確定)是否正在爲您選擇一個合理的源地址。你可以嘗試:

ip = IP(dst = dst, src = src) 

看看會發生什麼。

+0

解決了src問題。謝謝..但我無法建立連接。我改變iptables的所有方式,如「iptables -A OUTPUT -p tcp -tcp-flags RST RST -s 192.168.1.7 -j DROP」,iptables -A OUTPUT -p tcp -tcp-flags RST RST -s 172.16 .28.1 -j DROP,「iptables -A OUTPUT -p tcp --tcp-flags RST RST -s 172.16.28.130 -j DROP」.....但沒有區別。我的系統發送RST。我需要改變卡利的任何東西嗎? – 2014-08-29 11:57:05