簡體   English   中英

劫持客戶端套接字

[英]Hijacking a client socket

我已經設置了偵聽port A的服務器套接字(普通原始套接字)。 客戶端現在連接到該服務器。 為此,操作系統為客戶端打開了一個端口。 假設port B已分配給該客戶端。 現在我的問題是, 第三個腳本可以連接到該port B並發送數據嗎? 或者換句話說,我可以欺騙對客戶端的響應,就像它是來自服務器一樣嗎? 我嘗試使用船尾欺騙它,但是它沒有用。

server.py

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("localhost", A))
s.listen(10)
ns, cli_addr = s.accept()
time.sleep(30) # so that i can trigger my 3rd script

goodclient.py

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("localhost", A))
print s.getsockname() # to get the local port of client - B
s.recv(1024)

badboy.py

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("localhost", B)) # connection refused error
s.send("hihihi")

scapybadboy.py

pack = IP(src="localhost", dst="localhost") / TCP(sport=A, dport=B) / "Hello"
send(pack) # Packet sent but not received by the client

由於服務器和客戶端都使用SOCK_STREAM套接字,因此它們都知道TCP會話(包括端口,IP和( SEQ_NUMBERACK_NUMBER )),因此,在會話進行中時,您將必須執行TCP hikackingIP欺騙才能發送消息。在流中。

換句話說,您必須猜測(或竊取)服務器的ACK編號,才能使用badclient將虛假消息發送給客戶端。

但是,如果您將以某種方式使goodclient回答您而不是服務器,則應運行以下命令:

iptables -A FORWARD -j NFQUEUE --queue-num 1 ,因為您的操作系統不知道您剛剛與goodclient“打開”的會話,它將發送RST數據包。 此命令將阻止它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM