osfooler ng通过nmap或p0f等工具防止远程操作系统的主动/被动指纹识别

OSfooler-ng的Python项目详细描述


< BR>

Osfolder NG

license:gpl v3version:1.0maintenance

局外人可以通过搜索默认堆栈参数、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项目。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
安卓如何在java字符串中获取RATE的值   java ANT在哪里输出编译器错误?   在java中,while循环在何处启动对象   javacom。谷歌。格森。内部的LinkedTreeMap无法强制转换到我的类   java单选按钮。isSelected()方法未返回正确的响应   嵌入式系统中applet中的java相对码基字段   如何在eclipse中将Java应用程序附加到jvm探查器?   java为什么Android应用程序崩溃?   在java中拖放上传后保持文件夹结构   爪哇多领导人选举问题   java Springs RestTemplate如何处理postForEntity()中的错误响应   Java如何用前导零递增整数字符串?   java Android将文本作为图像共享给其他应用程序   Java搜索替换   java isDirectory()不适用于UNIX目录   java我们可以得到显示测试类是否通过或失败的TestNG报告吗   Java类对象排序和分组   简单Java幂递归   java在处理MethodArgumentNotValidException时如何访问请求对象?