繁体   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