关于Portforge
Portforge是一款功能强大的轻量级端口混淆工具,该工具使用Crystal语言开发,可以帮助广大研究人员防止网络映射,这样一来,他人就无法查看到你设备正在运行(或没有运行)的服务和程序了。简而言之,该工具是一个抵御网络侦查的强大工具。
Portforge可以在我们的设备上按需求打开大量套接字(1024-65535之间),低于1024的端口也可以实现,但必须要使用到root用户权限。
技术细节
Portforge.cr脚本使用了Crystal编译器的一种名为Fibers的内置技术,这种技术类类似于系统线程,但Fibers更加轻量级,且可以通过进程来管理执行。
我们所选择的端口号范围越大,脚本执行加载每个套接字所需的时间就越长,但脚本总共执行时间也就是几分钟,具体取决于操作系统和配置。
工作机制
该工具的运行分为两个步骤:
1、它首先会在系统上执行扫描,以识别已经打开了的端口信息,然后将已打开的端口存储在一个列表中,并将关闭的端口存储到另外一个列表中;
2、打开关闭的端口,因此该脚本会选择列表中所有关闭的端口,并在每个端口上打开一个套接字;
当主Fiber在每一个端口上打开一个套接字时,会调用其他的Fiber,并监听传入的连接。这个过程会不断重复进行,直到脚本中断执行为止。
工具要求
Crystal编译器
工具下载
由于该工具基于Crystal语言开发,因此我们首先需要在本地设备上安装并配置好Crystal编译器环境。
接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:
git clone https://github.com/Beyarz/Portforge.git
工具运行
./portforge IP startport endport
工具使用演示
下图显示为Portforge的运行界面:
下图显示的是Nmap的扫描结果,我们可以看到,Nmap会认为我们的设备运行了下图所示的所有服务,但实际上我们只是运行了Portforge:
许可证协议
本项目的开发与发布遵循Unlicense授权许可协议。
项目地址
Portforge:【GitHub传送门】
参考资料
Concurrency - Crystal
Install - The Crystal Programming Language