关于Pstf
Pstf是一款基于HTTP服务器实现的安全框架,可以帮助广大研究人员以被动方式对浏览器进行指纹识别。当攻击者试图通过互联网传播Payload时,他们往往需要对付那些能够扫描传入链接的各种工具。而Pstf可以帮助我们以被动方式检测并绕过多种安全产品,其中包括但不限于电子邮件过滤器、安全扫描引擎和沙箱系统。
运行机制
检查恶意链接是一项涉及Web客户端发送HTTP GET请求的操作,每一个互联网服务提供商都会使用不同的内部实现,而大部分提供商都会试图在某种程度上模拟真实的用户交互。
Pstf是一个简单的基于Python的HTTP服务器,它使用了著名的机器人检测策略来确定传入的请求是否来自自动安全工具。服务器的操作人员可以自定义请求响应,比如说,如果检测到了扫描工具,则自动重定向至Google,否则就直接发送恶意内容。
工具安装
(1) 使用Docker
假设你已经在自己的设备环境中安装好了Docker,那么你就可以直接使用下列命令安装Pstf:
- docker-compose up
(2) 手动部署
如果你不想使用Docker的话,你也可以自行进行手动安装与配置。
首先,我们需要安装好Python环境,然后使用下列命令将该项目源码克隆至本地:
- git clone https://github.com/G4LB1T/pstf2.git
接下来,安装好依赖组件:
- pip install requirements.txt
在真正安装Pstf之前,我们需要先下载并安装p0f。【GitHub传送门】
现在,我们需要正确lib/servers/server_config.yml以指向正确路径:
- p0f_config:
- # change your username at the very least, remember to change in both paths
- p0f_bin_path: '/Users/$your_user_name/$more_folders/web_fp/p0f-3.09b/p0f'
- p0f_fp_path: '/Users/$your_user_name/$more_folders/web_fp/p0f-3.09b/p0f.fp'
- iface: 'lo0'
- p0f_named_socket: '/tmp/p0f_socket'
接下来,验证iface端口是否指向的是你Python HTTP服务器的运行接口。上述样例中配置的是一个回环接口。
工具运行
完成工具的安装和配置后,我们就可以直接运行工具脚本了:
- python driver.py
你还可以使用下列参数选项:
- --p0f_bin_path P0F_BIN_PATH
- --p0f_fp_path P0F_FP_PATH
- --p0f_iface P0F_IFACE
运行后,你将会看到如下所示的输出结果:
- 2020-04-15 17:37:06,896 - pstf2_logger - INFO - Starting p0f...
- 2020-04-15 17:37:06,896 - pstf2_logger - INFO - Running command:
- /Users/gbitensk/work/web_fp/p0f-3.09b/p0f -i lo0 -s /tmp/p0f_socket -f /Users/gbitensk/work/web_fp/p0f-3.09b/p0f.fp
- 2020-04-15 17:37:06,898 - pstf2_logger - INFO - p0f started!
- 2020-04-15 17:37:06,898 - pstf2_logger - INFO - Starting HTTP server...
- 2020-04-15 17:37:06,898 - pstf2_logger - INFO - HTTP server started!
- 2020-04-15 17:37:06,899 - pstf2_logger - INFO - If you wish to terminate the server press CTRL+C
我们可以按下Ctrl + C键终止服务器运行,此时将会关闭HTTP和p0f实例:
- 2020-04-15 17:37:48,263 - pstf2_logger - INFO - HTTP server stopped!
- 2020-04-15 17:37:48,263 - pstf2_logger - INFO - Killing p0f...
- 2020-04-15 17:37:48,263 - pstf2_logger - INFO - p0f killed!
- 2020-04-15 17:37:48,263 - pstf2_logger - INFO - exiting...
Payload管理
Pstf提供了默认地Payload,并定义在server_config.yml文件中,我们可以根据自己的需求进行自定义修改或配置。
(1) 合法响应
工具提供了两种模式,可以通过设置rickroll_mode为YES或NO来进行修改。如果启用为YES,安全工具将会被重定向至一个油*管页面,否则将会显示一个定义在同一个YAML文件中的字符串。
(2) 恶意响应
默认配置下,恶意响应会被设置为EICAR标准测试字符串。
项目地址
Pstf:【GitHub传送门】