被动操作系统指纹更改为 MacOS



Ubuntu 16.04 服务器,在服务器 (3proxy( 上引发代理。当通过代理与macbook连接时,操作系统指纹被定义为Linux 3.11,而不是[模糊](http://witch.valdikss.org.ru/( 目前,使用/etc/sysctl.conf内核设置的非复杂操作,结果是更改为Android(Linux 2.2.x-3.x [通用][模糊](和Windows NT。

需要更改操作系统指纹,以便 http://witch.valdikss.org.ru/将连接定义为Mac OS X [通用] [模糊]

根据p0fREADME"最有价值的TCP指纹信号之一"是TCP选项布局。应用于MacOS和Linux指纹条目,这意味着我们应该将布局从:

mss,sok,ts,nop,ws

mss,nop,ws,nop,nop,ts,sok,eol+1

sysctl 无法做到这一点,因为 Linux 内核将此顺序硬编码为tcp_connect系统调用:https://github.com/torvalds/linux/blob/bab5c80b211035739997ebd361a679fa85b39465/net/ipv4/tcp_output.c#L458

因此,您必须编写 netfilter 内核模块来稍后像 TCPMSS 模块那样破坏 TCP 选项: https://github.com/torvalds/linux/blob/master/net/netfilter/xt_TCPMSS.c。

修补tcp_connect或编写自定义 netfilter 模块都需要强大的内核编程技能。

另一种选择是通过用户空间程序以某种方式拦截 TCPSYN/SYN+ACK数据包(也许 nfqueue 或带有原始套接字的 tproxy 可以提供帮助(,对其进行破坏并写回内核。这可能会严重损害性能,但更容易实现。

UPD:我在谷歌上搜索了一些基于nfqueue/python的技术的工作和肮脏的例子:https://forums.hak5.org/topic/33532-p0f-mangler/

相关内容

最新更新