osfooler ng通过nmap或p0f等工具防止远程操作系统的主动/被动指纹识别
OSfooler-ng的Python项目详细描述
Osfolder NG
局外人可以通过搜索默认堆栈参数、ietf rfc中的模糊性或响应错误请求的不兼容tcp/ip实现来发现一般信息,例如主机正在运行的操作系统。通过精确定位主机的操作系统,攻击者可以对目标计算机发起经过训练的精确攻击。
向全世界隐藏操作系统有很多原因:
- 显示您的操作系统使您更容易找到并成功地对任何设备运行攻击。
- 有和没有补丁或古董操作系统版本是不是很方便您的公司威望。假设您的公司是一家银行,一些用户注意到您正在运行一个未修补的框。他们不会再相信你了!此外,这些"坏"消息总是会被发送到公众舆论中。
- 了解你的操作系统也会变得更加危险,因为人们可以猜测你在操作系统中运行的是哪些应用程序(数据推断)。例如,如果您的系统是MS Windows,并且您正在运行数据库,则很可能您正在运行MS-SQL。
- 对其他软件公司来说,为您提供一个新的操作系统环境(因为他们知道您在运行哪个操作系统)可能会很方便。
- 最后,隐私;没人需要知道你运行的系统。
奥斯福勒在2013年的黑帽阿森纳球场上亮相。它构建在nfqueue上,这是一个iptables/ip6tables目标,它将数据包的决策委托给一个用户空间。它透明地拦截了您的盒子发送的所有流量,以便实时伪装和修改发现您的系统的TCP/IP数据包中的标志。
osfolder ng已经彻底重写,具有高度的可移植性,更高效,并结合了所有已知的技术来同时检测和击败:
- 主动远程操作系统指纹:类似于nmap
- 被动远程操作系统查找打印:如p0f v2
- 商业引擎,如SourceFire的FireSight OS指纹识别
一些附加功能包括:
- 无需修改内核或修补程序
- 简单的用户界面和多个日志记录功能
- 对用户、内部流程和服务透明
- 探测和击败模式:主动、被动和组合
- 将模拟任何操作系统
- 能够处理更新的nmap和p0f v2指纹数据库
- 攻击者无法检测到
安装
要获得最新的版本,包括错误修复和新功能,但可能不够稳定,请使用github存储库:
$ git clone https://github.com/segofensiva/OSfooler-ng.git
您需要安装python nfqueue(v0.5-1build2)linux包。从ubuntu包下载
$ wget http://mirrors.kernel.org/ubuntu/pool/universe/n/nfqueue-bindings/python-nfqueue_0.5-1build2_amd64.deb
$ dpkg -i python-nfqueue_0.5-1build2_amd64.deb
以标准方式安装osfolder ng:
$ sudo python setup.py install
用法
主动指纹:nmap
要获得要模拟的操作系统的完整列表,只需使用标志'-n':
$ osfooler-ng.py -n
[+] Please, select nmap OS to emulate
+ "2N Helios IP VoIP doorbell"
+ "2Wire BT2700HG-V ADSL modem"
+ "2Wire 1701HG wireless ADSL modem"
[...]
+ "ZyXEL Prestige 660HW-61 ADSL router (ZyNOS 3.40)"
+ "ZyXEL Prestige 660HW-D1 wireless ADSL router"
+ "ZyXEL ZyWALL 2 Plus firewall"
要模拟特定的操作系统,只需对要模拟的操作系统使用标志'-o':
$ osfooler-ng.py -m "Sony Ericsson W705 or W715 Walkman mobile phone"
[+] Mutating to nmap:
Fingerprint Sony Ericsson W705 or W715 Walkman mobile phone
Class Sony Ericsson | embedded || phone
CPE cpe:/h:sonyericsson:w705
CPE cpe:/h:sonyericsson:w715
SEQ(CI=RD%II=I)
OPS(R=N)
WIN(R=N)
ECN(R=N)
T1(R=N)
T2(R=Y%DF=N%T=3B-45%TG=40%W=0%S=Z%A=S%F=AR%O=%RD=0%Q=)
T3(R=N)
T4(R=Y%DF=N%T=3B-45%TG=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)
T5(R=Y%DF=N%T=3B-45%TG=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)
T6(R=Y%DF=N%T=3B-45%TG=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)
T7(R=Y%DF=N%T=3B-45%TG=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)
U1(DF=N%T=3B-45%TG=40%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)
IE(DFI=N%T=3B-45%TG=40%CD=S)
[+] Activating queues
[->] Process-1: nmap packet processor
被动指纹:p0f v2
要获得要模拟的操作系统的完整列表,只需使用标志'-l':
$ osfooler-ng.py -p
Please, select p0f OS Genre and Details
OS Genre="AIX" Details="4.3"
OS Genre="AIX" Details="4.3.2 and earlier"
OS Genre="AIX" Details="4.3.3-5.2 (1)"
[...]
OS Genre="-*NMAP" Details="OS detection probe w/flags (3)"
OS Genre="-*NMAP" Details="OS detection probe w/flags (4)"
OS Genre="-*NAST" Details="syn scan"
要模拟任何p0f操作系统,只需在操作系统类型中使用标志'-o'。这将选择主操作系统,当检测到syn包时,将随机加载自定义版本。例如:
$ osfooler-ng.py -o "PalmOS"
[+] Mutating to p0f:
WWW:S9|TTL:255|D:0|SS:44|OOO:M536|QQ:.|OS:PalmOS|DETAILS:Tungsten T3/C
WWW:S5|TTL:255|D:0|SS:44|OOO:M536|QQ:.|OS:PalmOS|DETAILS:3/4
WWW:S4|TTL:255|D:0|SS:44|OOO:M536|QQ:.|OS:PalmOS|DETAILS:3.5
WWW:2948|TTL:255|D:0|SS:44|OOO:M536|QQ:.|OS:PalmOS|DETAILS:3.5.3 (Handera)
WWW:S29|TTL:255|D:0|SS:44|OOO:M536|QQ:.|OS:PalmOS|DETAILS:5.0
WWW:16384|TTL:255|D:0|SS:44|OOO:M1398|QQ:.|OS:PalmOS|DETAILS:5.2 (Clie)
WWW:S14|TTL:255|D:0|SS:44|OOO:M1350|QQ:.|OS:PalmOS|DETAILS:5.2.1 (Treo)
WWW:16384|TTL:255|D:0|SS:44|OOO:M1400|QQ:.|OS:PalmOS|DETAILS:5.2 (Sony)
[+] Activating queues
[->] Process-1: p0f packet processor
您还可以模拟完整的p0f操作系统,在操作系统类型中使用"-",在自定义详细信息中使用"-d":
$ osfooler-ng.py -o "Windows" -d "XP bare-bone"
[+] Mutating to p0f:
WWW:65520|TTL:128|D:1|SS:48|OOO:M*,N,N,S|QQ:.|OS:Windows|DETAILS:XP bare-bone
[+] Activating queues
[->] Process-1: p0f packet processor
主动和被动指纹:nmap&p0f
osfooler ng还可以模拟两个操作系统来击败nmap和p0f。
$ osfooler-ng -m "Microsoft Windows 2000 SP4" -o "Windows" -d "2000 SP4"
[+] Mutating to nmap:
Fingerprint Microsoft Windows 2000 SP4
Class Microsoft | Windows | 2000 | general purpose
CPE cpe:/o:microsoft:windows_2000::sp4
SEQ(SP=7C-86%GCD=1-6%ISR=95-9F%TI=I%II=I%SS=O|S%TS=0)
OPS(O1=NNT11|M5B4NW0NNT00NNS%O2=NNT11|M5B4NW0NNT00NNS%O3=NNT11|M5B4NW0NNT00%O4=NNT11|M5B4NW0NNT00NNS%O5=NNT11|M5B4NW0NNT00NNS%O6=NNT11|M5B4NNT00NNS)
WIN(W1=FFFF%W2=FFFF%W3=FFFF%W4=FFFF%W5=FFFF%W6=FFFF)
ECN(R=Y%DF=N%T=7B-85%TG=80%W=0%O=%CC=N%Q=U)
T1(R=Y%DF=Y%T=7B-85%TG=80%S=O%A=O|S+%F=A|AS%RD=0%Q=|U)
T2(R=Y%DF=N%T=7B-85%TG=80%W=0%S=Z%A=S%F=AR%O=%RD=0%Q=U)
T3(R=Y%DF=N%T=7B-85%TG=80%W=0%S=Z%A=O%F=AR%O=%RD=0%Q=U)
T4(R=Y%DF=N%T=7B-85%TG=80%W=0%S=A%A=O%F=R%O=%RD=0%Q=U)
T5(R=Y%DF=N%T=7B-85%TG=80%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=U)
T6(R=Y%DF=N%T=7B-85%TG=80%W=0%S=A%A=O%F=R%O=%RD=0%Q=U)
T7(R=Y%DF=N%T=7B-85%TG=80%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=U)
U1(DF=N%T=7B-85%TG=80%IPL=38%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)
IE(DFI=S%T=7B-85%TG=80%CD=Z)
[+] Mutating to p0f:
WWW:40320|TTL:128|D:1|SS:48|OOO:M*,N,N,S|QQ:.|OS:Windows|DETAILS:2000 SP4
[+] Activating queues
[->] Process-1: nmap packet processor
[->] Process-2: p0f packet processor
搜索操作系统
您可以在nmap/p0f数据库中搜索特定的操作系统,而不是获取整个列表。只需使用标志'-s'并输入要搜索的关键字(不区分大小写)。您将找到任何匹配项,如果它属于nmap或p0f数据库:
$ git clone https://github.com/segofensiva/OSfooler-ng.git
0
更新nmap数据库
使用标记'-u'检查是否有新版本的nmap数据库可用并下载它
$ git clone https://github.com/segofensiva/OSfooler-ng.git
1
自定义标志
还有其他有趣的标志:
- "-v":显示每个修改过的数据包的信息
- '-i<;interface>;':选择网络接口(默认为eth0)
- "-v":显示osfooler ng横幅和已安装的当前版本
作者
许可证
此项目是在GNU通用公共许可证v3.0下获得许可的-有关详细信息,请参见license.md文件
致谢
- defcon china,让我在演示实验室上显示此工具
- 所有在操作系统指纹识别(攻击和防御)方面工作过并发布过软件的人,特别是在nmap上工作过并发布过软件的人,包括xprobe、ip personality等。
- osfooler ng利用scapy项目和netfilter.org项目。