TCP连接劫持器,使用Rust重写的shijack
作者:Sec-Labs | 发布时间:
项目地址
https://github.com/kpcyrd/rshijack
rshijack
相关技术点
- TCP连接劫持
- Rust编程语言
项目用途
- rshijack是一个TCP连接劫持工具,可以用来在一个TCP连接中注入数据包。
- 可以通过嗅探TCP连接的数据包,获取SEQ和ACK字段的信息,然后使用这些信息构造出一个符合远程服务器要求的数据包,达到劫持TCP连接的目的。
- 该工具可以用于网络渗透测试中,例如在CTF比赛中,劫持一个telnet连接,注入命令,获取FLAG。
- rshijack基于Rust编写,使用起来方便快捷,且跨平台支持。
rshijack
tcp连接劫持工具,2001年的shijack的Rust重写。
这个工具是为TAMUctf 2018 Brick House 100比赛编写的。目标是一个被2FA保护的telnet服务器。由于挑战不需要认证,因此有多种解决方案。我们的解决方案(cyclopropenylidene)是等待认证完成,然后将一个TCP数据包注入到telnet连接中:
# 如果不知道其中一个端口,请使用0匹配任何端口
echo 'cat ~/.ctf_flag' | sudo rshijack tap0 172.16.13.20:37386 172.16.13.19:23
经过一些尝试,这个命令被telnet服务器接受并执行,结果是一个包含flag的TCP数据包。

它的工作原理是通过嗅探特定连接的数据包,然后读取SEQ和ACK字段。使用这些信息,可以在一个原始套接字上发送一个被远程服务器接受为有效的数据包。
安装
Arch Linux
pacman -S rshijack
Docker
如果需要,可以将rshijack作为docker镜像拉取。该镜像目前约为10.2MB。
docker run -it --init --rm --net=host kpcyrd/rshijack eth0 172.16.13.20:37386 172.16.13.19:23
值得一提的事情
- 2020年8月:@ezequielpereira 写了一篇优秀的博客文章,介绍了使用rshijack进行GCE容器->主机逃逸,并贡献了一个补丁,被合并了。
许可
GPLv3+
标签:工具分享