【网络安全产品大调研系列】1. 漏洞扫描

1. 为什么会出现漏扫技术?

每次黑客攻击事件进行追溯的时候,根据日志分析后,我们往往发现基本都是系统、Web、 弱口令、配置这四个方面中的其中一个出现的安全问题导致黑客可以轻松入侵的。

  1. 操作系统的版本滞后,没有更新补丁,导致安全问题暴露
  2. Web 问题因使用公有代码、代码编写不合规导致的安全问题,层出不穷。
  3. 弱口令属于人为安全事件,复杂密码记不住,简单密码容易破解。此类因账户与口令 相同的安全事件也是比比皆是。
  4. 系统配置不负责流程规范,导致出现的安全,严重泄露了各类隐私数据。

2. 漏洞扫描的部署形态

2.1. 硬件盒子

有这种类似一个服务器式的漏扫机器,比如华为的“VSCAN”:

也有集成到笔记本的那种漏扫机器,比如启明星辰的“镜脆弱性扫描与管理系统”:

盒子部署形态一般是串在客户内网中,对客户的内网资产以及暴露的服务面进行主机+Web扫描。

目前硬件盒子这种漏扫设备一般都集成很多扩展功能,比如有大屏展示,防病毒、自动基线检查、入侵检测等功能,以及漏洞管理、漏洞识别与自动修复,不管是后期的复核、处置,确实是要更方便些的。

2.2. 在线漏扫服务

在线漏扫的话,一般难以对内网进行检测。大多数的操作是,在验证外网某站的所有权后,再签协议授权扫描。不过由于成本较盒子更加低廉,容易受到中小厂商的追捧。

比如virustotal可以对公网的web服务进行扫描:

比如manageengine对主机扫描需要依赖客户下载一个agent:

2.3. 离线漏扫

离线漏扫是指那些漏洞库已经集成到本地的漏扫软件中,比如开源漏扫攻击Nmap,它通常会检测以下信息:网络上有哪些主机可用,主机在运行什么服务,主机在运行哪些操作系统版本,使用哪种类型的数据包过滤器和防火墙,以及发动攻击之前需要的其他有用情报:

再比如有一些破解的漏扫软件,AWVS和Burpsuite Scanner都十分优秀:

2.4. 代理扫描

比较轻量级别的漏扫,一般是通过浏览器流量代理进行分析,或者通过浏览器本身提供扩展插件功能,直接对页面进行即时钩子探测。比如说burpsuite插件wyproxy的衍生扫描器,ysrc的GourdScan:

3. 漏扫步骤三板斧

  1. 1 准备工作,资产探测。就相当于绑了个低配版nmap上去。

  1. 2 怎么扫?根据不同模板进行漏洞扫描。

  1. 3 扫什么?根据不同任务进行漏洞扫描。

  1. 4 什么时候扫?

  1. 5 扫出啥了?安全评估。就是根据扫描的结果or历史资料给你的安全性打个分,出个报告,由底层逻辑代码支。

4. 漏扫的业指标

启明星辰和绿盟是漏扫界的扛把子:

近日,赛迪顾问发布《中国漏洞评估与管理产品市场研究报告(2023)》(以下简称《报告》),报告显示:2022年, 启明星辰集团“天镜脆弱性扫描与管理系统” 以18.8%的份额占据市场第一。至此,启明星辰集团已 连续六年领跑漏洞评估与管理市场。

近期,国际数据咨询公司IDC正式发布《中国IT安全软件市场跟踪报告,2023H2》。在2023年中国响应和编排软件市场,绿盟科技凭借其卓越的漏洞扫描技术,以20.1%的市场份额位列第一,实现漏洞管理市场“十三连冠”。

让我们看看他们的技术指标:

4.1. 【启明星辰】天镜脆弱性扫描与管理系统V6080

自主研发的基于网络的脆弱性分析、评估与管理系统

4.2. 【绿盟科技】RSAS

  • 系统扫描
    • 最大允许并发扫描60个IP地址;扫描一个C类网段,存活主机数为50%,不超过15分钟。一分钟内可扫描IP数为5个以上。
    • 可以扫描各种系统,包括操作系统、数据库、中间件、通信协议、常见软件、应用系统、虚拟化系统、大数据组件、网络设备、安全设备、物联网设备等。NSFOCUS RSAS还支持扫描超过270,000个漏洞,并为近70种数据库提供全面的漏洞扫描。

  • Web应用程序漏洞扫描
    • 超过一千种方法有效地识别网站篡改和Web漏洞
    • 1000个页面检测速度,小于1小时;100个页面检测速度,小于20分钟

  • 安全配置检查
    • 超过140种系统的配置检查,包括操作系统、数据库、应用程序、网络设备、虚拟化设备和大数据组件,确保您的组织的安全配置符合行业标准和最佳实践。
  • 弱密码保护
    • 全面功能扩展到常见登录协议、数据库、中间件、应用程序等。配备有大量的密码字典库,包括用户名、密码、组合和外部来源

  • 自动漏洞验证
    • poc 验证
  • 云计算漏洞扫描
    • 精心扫描您的云环境,发现资产并评估漏洞,确保您的基于云的基础设施保持安全和强大。通过支持主要的虚拟化平台,如OpenStack、XEN、KVM、VMware、FusionSphere、Docker和Kubernetes
  • 大数据漏洞扫描
    • 其对近20种大数据组件的全面支持,包括Ambari、Cassandra、Elasticsearch、Flume、Hadoop、Hbase、Hdfs、Hive
  • 物联网漏洞扫描
    • 其全面功能扩展到近350家物联网制造商,包括三星、Lexmark、Palo Alto Networks、惠普等,确保您多样化的物联网生态系统保持安全和受保护。
  • 容器镜像漏洞扫描和配置检查
    • 积极识别和解决容器镜像中潜在的漏洞和配置问题,降低网络攻击和数据泄露的风险。其支持近90,000个与容器镜像相关的漏洞,并覆盖常见应用程序容器,包括Oracle、Weblogic、Websphere、Postgresql、MySQL、Apache和Nginx
  • 代码审计
    • 各种编程语言的词法和语法分析,包括C/C++、Python、Java、PHP和Go,确保您的代码保持安全,没有漏洞。利用14种常用的缺陷模板,涵盖221种缺陷类型,包括所有CWE TOP 25缺陷
    • 与SVN和Git无缝集成

5. 漏扫的未来演进会是啥样?

以vulnerability management future关键字google了一番,将一些大佬们的文章翻译汇总如下:

5.1. 持续+自动化是关键DevSecOps

直到最近,组织的大部分强制性漏洞管理计划主要依赖于扫描工具。团队将执行强制性的月度或季度配置审计和网络扫描,这将产生任何团队都无法完全涵盖的冗长报告。这意味着组织投入了大量时间来尝试验证和解决所有报告的威胁,但从未完全成功地解决所有威胁。

不断发展的开发生态系统、快节奏的开发需求以及已知安全漏洞数量的增加,都需要一种新的漏洞识别方法,以及适用于各种系统和平台的自动扫描工具。检测、优先级排序、补救和报告,自动化起来。

5.2. 更多的开源关注

开源软件因其成本效益和灵活性而被广泛使用。但是,它也容易受到漏洞的影响,使其成为网络犯罪分子的主要目标。随着组织努力保护其开源应用程序,像 Vuelt 这样专注于开源软件的在线漏洞扫描程序将变得更加普遍。

5.3. 增强云集成

随着越来越多的企业将其运营迁移到云,漏洞扫描程序将不断发展,以满足基于云的应用程序和基础设施的独特安全需求。这些工具将与各种云提供商无缝集成,从而跨不同的云环境提供全面的漏洞扫描。

5.4. 逐渐转移到代理形态

漏洞评估工具未来的一个令人兴奋的前景是可能开发无代理流程或将代理直接集成到平台中。这意味着,内置代理将在平台正常运行期间向监控系统报告,而不是安装额外的软件。这类似于将防病毒软件直接内置到设备的 CPU 中,从而简化整个过程并提高漏洞管理效率。

5.5. 人工智能和机器学习

人工智能通过识别模式和预测潜在漏洞,正在彻底改变漏洞管理。机器学习模型可以分析大量数据以更快地检测弱点,使企业能够在攻击者利用其系统之前主动保护其系统。

5.6. 与威胁情报联动

现代漏洞管理工具正在整合实时威胁情报,以提供更好的决策能力。通过集成已知的威胁数据,组织可以优先考虑构成最高风险的漏洞,将精力集中在最重要的领域。

6. Nmap源码分析

Nmap (“Network Mapper(网络映射器)”) 是一款开放源代码的 网络探测和安全审核的工具。它的设计目标是快速地扫描大型网络,当然用它扫描单个 主机也没有问题。Nmap以新颖的方式使用原始IP报文来发现网络上有哪些主机,那些 主机提供什么服务(应用程序名和版本),那些服务运行在什么操作系统(包括版本信息), 它们使用什么类型的报文过滤器/防火墙,以及一堆其它功能。

nmap -v  -A  192.168.134.35Nmap scan report for 192.168.134.35
Host is up (0.00019s latency).
Not shown: 999 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.4 (protocol 2.0)
MAC Address: EE:C2:83:7E:E0:28 (Unknown)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.14
Uptime guess: 10.478 days (since Mon Dec  9 07:28:14 2024)
Network Distance: 1 hop
TCP Sequence Prediction: Difficulty=262 (Good luck!)
IP ID Sequence Generation: All zerosTRACEROUTE
HOP RTT     ADDRESS
1   0.19 ms 192.168.134.35.       .\`-"'"-'/} 6 6 {==. Y ,==/^^^\  ./     \  )  Ncat: A modern interpretation of classic Netcat(  )-(  )/-""---""---   //   Ncat    \_/
(     ____\_.=|____E

nmap源码还很大,nmap共有10个扫描阶段:脚本预扫描 > 目标枚举 > 主机发现(ping扫描) > 反向DNS解析 > 端口扫描 > 版本检测 > 操作系统检测 > Traceroute > 脚本扫描 > 输出> 编写后扫描脚本,我们就挑核心功能瞄瞄。

6.1. 主机发现

任何网络探测任务的最初几个步骤之一就是把一组IP范围(有时该范围是巨大的)缩小为 一列活动的或者您感兴趣的主机。扫描每个IP的每个端口很慢,通常也没必要。在许多网络上,在给定的时间,往往只有小部分的IP地址是活动的。 这种情况在基于RFC1918的私有地址空间如10.0.0.0/8尤其普遍。 那个网络有16,000,000个IP,但我见过一些使用它的公司连1000台机器都没有。 主机发现能够找到零星分布于IP地址海洋上的那些机器。

Nmap一般会有以下几种方式进行主机发现:

  • Ping扫描
    • 最普通的ping
    • 时间戳请求,信息请求 request,和地址掩码请求,它们的代码分别是13,15和17。 虽然这些查询的表面目的是获取信息如地址掩码和当前时间, 它们也可以很容易地用于主机发现。
  • TCP SYN Ping
    • 该选项发送一个设置了SYN标志位的空TCP报文。 默认目的端口为80 (可以通过改变nmap.h) 文件中的DEFAULT-TCP-PROBE-PORT值进行配置
    • SYN标志位告诉对方您正试图建立一个连接。 通常目标端口是关闭的,一个RST (复位) 包会发回来。 如果碰巧端口是开放的,目标会进行TCP三步握手的第二步,回应 一个SYN/ACK TCP报文。然后运行Nmap的机器则会扼杀这个正在建立的连接, 发送一个RST而非ACK报文,否则,一个完全的连接将会建立。
    • Nmap并不关心端口开放还是关闭。 无论RST还是SYN/ACK响应都告诉Nmap该主机正在运行。
  • TCP ACK Ping
    • TCP ACK ping和刚才讨论的SYN ping相当类似。 也许您已经猜到了,区别就是设置TCP的ACK标志位而不是SYN标志位。
    • ACK报文表示确认一个建立连接的尝试,但该连接尚未完全建立。 所以远程主机应该总是回应一个RST报文, 因为它们并没有发出过连接请求到运行Nmap的机器,如果它们正在运行的话。
    • 提供SYN和ACK两种ping探测的原因是使通过防火墙的机会尽可能大。 许多管理员会配置他们的路由器或者其它简单的防火墙来封锁SYN报文
  • UDP Ping
    • 它发送一个空的(除非指定了--data-length UDP报文到给定的端口,大部分是一个不可能被使用的端口31338,原因是如果到达一个开放的端口,大部分服务仅仅忽略这个 空报文而不做任何回应。
    • 如果目标机器的端口是关闭的,UDP探测应该马上得到一个ICMP端口无法到达的回应报文。 这对于Nmap意味着该机器正在运行。
    • 许多其它类型的ICMP错误,像主机/网络无法到达或者TTL超时则表示down掉的或者不可到达的主机。 没有回应也被这样解释。
    • 该扫描类型的主要优势是它可以穿越只过滤TCP的防火墙和过滤器
  • ARP Ping
    • 如果Nmap发现目标主机就在它所在的局域网上,它会进行ARP扫描。
    • 广播询问目标IP的mac地址是多少,谁知道就告诉我

核心代码如下:

/* Sends a ping probe to the host.  Assumes that caller has alreadychecked that sending is OK w/congestion control and that pingprobe isavailable */
static void sendPingProbe(UltraScanInfo *USI, HostScanStats *hss) {tryno_t tryno = {0};tryno.fields.isPing = 1;tryno.fields.seqnum = hss->nextPingSeq();probespec *pingprobe = &hss->target->pingprobe;switch (pingprobe->type) {case PS_CONNECTTCP:sendConnectScanProbe(USI, hss, pingprobe->pd.tcp.dport, tryno);break;case PS_TCP:case PS_UDP:case PS_SCTP:case PS_PROTO:case PS_ICMP:sendIPScanProbe(USI, hss, pingprobe, tryno);break;case PS_ARP:sendArpScanProbe(USI, hss, tryno);break;case PS_ND:sendNDScanProbe(USI, hss, tryno);break;default:assert(0);}if (o.debugging > 1) {char tmpbuf[64];log_write(LOG_PLAIN, "Ultrascan PING SENT to %s [%s]\n", hss->target->targetipstr(),probespec2ascii(pingprobe, tmpbuf, sizeof(tmpbuf)));}USI->gstats->probes_sent++;
}

6.2. 端口扫描

许多传统的端口扫描器只列出所有端口是开放还是关闭的, Nmap的信息粒度比它们要细得多。 它把端口分成六个状态:

  • open(开放的)

应用程序正在该端口接收TCP 连接或者UDP报文。

  • closed(关闭的)

关闭的端口对于Nmap也是可访问的(它接受Nmap的探测报文并作出响应), 但没有应用程序在其上监听。

  • filtered(被过滤的)

由于包过滤阻止探测报文到达端口, Nmap无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路 由器规则 或者主机上的软件防火墙。这样的端口让攻击者感觉很挫折,因为它们几乎不提供 任何信息。有时候它们响应ICMP错误消息如类型3代码13 (无法到达目标: 通信被管理员禁止),但更普遍的是过滤器只是丢弃探测帧, 不做任何响应。 这迫使Nmap重试若干次以访万一探测包是由于网络阻塞丢弃的。 这使得扫描速度明显变慢。

  • unfiltered(未被过滤的)

未被过滤状态意味着端口可访问,但Nmap不能确定它是开放还是关闭。 只有用于映射防火墙规则集的ACK扫描才会把端口分类到这种状态。 用其它类型的扫描如窗口扫描,SYN扫描,或者FIN扫描来扫描未被过滤的端口可以帮助确定 端口是否开放。

  • open|filtered(开放或者被过滤的)

当无法确定端口是开放还是被过滤的,Nmap就把该端口划分成 这种状态。开放的端口不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃 了探测报文或者它引发的任何响应。

  • closed|filtered(关闭或者被过滤的)

该状态用于Nmap不能确定端口是关闭的还是被过滤的。 它只可能出现在IPID Idle扫描中。

这几种扫描状态看的人一头雾水,但是不要慌,我们结合端口扫描的源码一一分析以下:

/* 3rd generation Nmap scanning function. Handles most Nmap port scan types.The parameter to gives group timing information, and if it is not NULL,changed timing information will be stored in it when the function returns. Itexists so timing can be shared across invocations of this function. If to isNULL (its default value), a default timeout_info will be used. */
void ultra_scan(std::vector<Target *> &Targets, const struct scan_lists *ports,stype scantype, struct timeout_info *to) // Ultra_scan sets o.scantype for us so we don't have to worry
if (o.synscan)ultra_scan(Targets, &ports, SYN_SCAN);if (o.ackscan)ultra_scan(Targets, &ports, ACK_SCAN);if (o.windowscan)ultra_scan(Targets, &ports, WINDOW_SCAN);if (o.finscan)ultra_scan(Targets, &ports, FIN_SCAN);if (o.xmasscan)ultra_scan(Targets, &ports, XMAS_SCAN);if (o.nullscan)ultra_scan(Targets, &ports, NULL_SCAN);if (o.maimonscan)ultra_scan(Targets, &ports, MAIMON_SCAN);if (o.udpscan)ultra_scan(Targets, &ports, UDP_SCAN);if (o.connectscan)ultra_scan(Targets, &ports, CONNECT_SCAN);if (o.sctpinitscan)ultra_scan(Targets, &ports, SCTP_INIT_SCAN);if (o.sctpcookieechoscan)ultra_scan(Targets, &ports, SCTP_COOKIE_ECHO_SCAN);if (o.ipprotscan)ultra_scan(Targets, &ports, IPPROT_SCAN);
  • SYN_SCAN

它常常被称为半开放扫描, 因为它不打开一个完全的TCP连接。它发送一个SYN报文, 就像您真的要打开一个连接,然后等待响应。 SYN/ACK表示端口在监听 (开放),而 RST (复位)表示没有监听者(close)。如果数次重发后仍没响应, 该端口就被标记为被过滤。如果收到ICMP不可到达错误 (类型3,代码1,2,3,9,10,或者13),该端口也被标记为被过滤。

  • CONNECT_SCAN

调用完全连接到开放的目标端口而不是像SYN扫描进行半开放的复位。

缺点是统上的服务会在syslog留下记录,IDS(入侵检测系统)可以捕获两者,甚至告警

扫描到的状态同上

  • UDP_SCAN

UDP扫描发送空的(没有数据)UDP报头到每个目标端口。 如果返回ICMP端口不可到达错误(类型3,代码3), 该端口是closed(关闭的)。 其它ICMP不可到达错误(类型3, 代码1,2,9,10,或者13)表明该端口是filtered(被过滤的)。 偶尔地,某服务会响应一个UDP报文,证明该端口是open(开放的)。 如果几次重试后还没有响应,该端口就被认为是 open|filtered(开放|被过滤的)。 这意味着该端口可能是开放的,也可能包过滤器正在封锁通信。

速率是瓶颈,Linux式的一秒钟一个报文的限制使65,536个端口的扫描要花18小时以上

  • TCP Null,FIN,and Xmas扫描

Null扫描 (-sN)

不设置任何标志位(tcp标志头是0)

FIN扫描 (-sF)

只设置TCP FIN标志位。

Xmas扫描 (-sX)

设置FIN,PSH,和URG标志位,就像点亮圣诞树上所有的灯一样。

除了探测报文的标志位不同,这三种扫描在行为上完全一致。 如果收到一个RST报文,该端口被认为是 closed(关闭的),而没有响应则意味着 端口是open|filtered(开放或者被过滤的)。 如果收到ICMP不可到达错误(类型 3,代号 1,2,3,9,10,或者13),该端口就被标记为 被过滤的

这些扫描的关键优势是它们能躲过一些无状态防火墙和报文过滤路由器。 另一个优势是这些扫描类型甚至比SYN扫描还要隐秘一些。

  • MAIMON_SCAN

探测报文是FIN/ACK。 根据RFC 793 (TCP),无论端口开放或者关闭,都应该对这样的探测响应RST报文。 然而,Uriel注意到如果端口开放,许多基于BSD的系统只是丢弃该探测报文。

6.3. 服务与版本侦测

在用某种其它类型的扫描方法发现TCP 和/或者UDP端口后, 版本探测会询问这些端口,确定到底什么服务正在运行。 nmap-service-probes 数据库包含查询不同服务的探测报文 和解析识别响应的匹配表达式。 Nmap试图确定服务协议 (如 ftp,ssh,telnet,http),应用程序名(如ISC Bind,Apache httpd,Solaris telnetd),版本号, 主机名,设备类型(如 打印机,路由器),操作系统家族 (如Windows,Linux)以及其它的细节,如是否可以连接X server,SSH协议版本 ,或者KaZaA用户名)。

当然,并非所有服务都提供所有这些信息。

当Nmap从某个服务收到响应,但不能在数据库中找到匹配时, 它就打印一个特殊的fingerprint和一个URL给您提交,如果您确实知道什么服务运行在端口。 请花两分钟提交您的发现,让每个人受益。由于这些提交, Nmap有350种以上协议如smtp,ftp,http等的大约3,000条模式匹配。

核心思想是:利用已探测好的端口,向其法术Banner信息(欢迎语),在服务端回应Banner信息中可以的到软件开发商、软件名称、版本、服务类型等信息,这些信息是存在nmap数据库中的,如下:

##############################NEXT PROBE##############################MQTT v3.1.1 CONNECT
Probe TCP mqtt q|\x10\x10\x00\x04MQTT\x04\x02\x00\x1e\x00\x04nmap|
rarity 9
ports 1883
sslports 8883match mqtt m|^\x20\x02\x00.$|

这是一个脚本语言,解析后的意思如下:

向 1883 和 8883端口发送 MQTT 连接请求 ,报文内容如下:

  • \x10:表示消息类型(CONNECT)。
  • \x10:剩余长度(2 字节)。
  • \x00\x04MQTT:协议名称(MQTT)。
  • \x04:协议版本(v3.1.1)。
  • \x02:连接标志。
  • \x00\x1e:保持活动时间。
  • \x00\x04nmap:客户端标识符(Client ID)。

收到的报文中 匹配响应的模式 ,以\x20\x02\x00开头就是链接成功了, 它匹配一个以 CONNACK 消息开始,后跟成功返回码(02)和一个字节的响应。

AP = AllProbes::service_scan_init();
// 创建一个新的 ServiceGroup 对象 SG,它包含了目标和探测信息。
SG = new ServiceGroup(Targets, AP);
... ... 
// 启动探测服务
launchSomeServiceProbes(nsp, SG);
... ... 
// 处理回报消息,其实就是匹配
looprc = nsock_loop(nsp, timeout);launchSomeServiceProbes(nsp, SG);
... ... // This holds the service information for a group of Targets being service scanned.
class ServiceGroup {
public:ServiceGroup(std::vector<Target *> &Targets, AllProbes *AP);~ServiceGroup();std::list<ServiceNFO *> services_finished; // Services finished (discovered or not)std::list<ServiceNFO *> services_in_progress; // Services currently being probedstd::list<ServiceNFO *> services_remaining; // Probes not started yetunsigned int ideal_parallelism; // Max (and desired) number of probes out at once.ScanProgressMeter *SPM;int num_hosts_timedout; // # of hosts timed out during (or before) scan
};ServiceNFO负责管理特定的服务的探测细节。上述的ServiceGroup中就是管理ServiceNFO对象组成的列表。ServiceNFO类包含以下信息:服务指纹的管理(提供添加与获取等操作)
服务扫描对应的主机(Target *target)
服务探测匹配的信息(是否匹配、是否softmatch、ssl配置、产品、版本、CPE等信息)
管理探测包(服务扫描过程可能需要发送多个探测包,在此对当前探测包、下一个探测包进行管理)
管理回复包(提供添加与获取等操作)。
服务扫描所需的全部探测包AllProbes *AP;

6.4. OS侦测

和服务版本检测差不多,nmap把结果和数据库nmap-os-fingerprints中超过 1500个已知的操作系统的fingerprints进行比较,如果有匹配,就打印出操作系统的详细信息。 每个fingerprint包括一个自由格式的关于OS的描述文本, 和一个分类信息,它提供供应商名称(如Sun),下面的操作系统(如Solaris),OS版本(如10), 和设备类型(通用设备,路由器,switch,游戏控制台,等)。

数据库如下:

# Linux CentOS5 2.6.18-8.el5 #1 SMP Thu Mar 15 19:46:53 EDT 2007 x86_64 x86_64 x86_64 GNU/Linux
Fingerprint Linux 2.6.18
Class Linux | Linux || general purpose
CPE cpe:/o:linux:linux_kernel:2.6.18
SEQ(SP=F-CF%GCD=FA|1F4|2EE|3E8|4E2%ISR=8A-C2%TI=I%TS=U)
OPS(O1=M218%O2=M218%O3=M218%O4=M218%O5=M218%O6=M218)
WIN(W1=FFFF%W2=FFFF%W3=FFFF%W4=FFFF%W5=FFFF%W6=FFFF)
ECN(R=Y%DF=N%T=FA-104%TG=FF%W=FFFF%O=M218%CC=N%Q=)
T1(R=Y%DF=N%T=FA-104%TG=FF%S=O%A=O|S+%F=AS%RD=0%Q=)
T2(R=Y%DF=N%T=FA-104%TG=FF%W=0%S=Z%A=O|S%F=AR%O=%RD=0%Q=)
T3(R=Y%DF=N%T=FA-104%TG=FF%W=FFFF%S=O%A=O|S+%F=AS%O=M218%RD=0%Q=)
T4(R=Y%DF=N%T=FA-104%TG=FF%W=0%S=A|O%A=Z%F=R%O=%RD=0%Q=)
T5(R=Y%DF=N%T=FA-104%TG=FF%W=0%S=Z%A=O|S+%F=AR%O=%RD=0%Q=)
T6(R=Y%DF=N%T=FA-104%TG=FF%W=0%S=A|O%A=Z%F=R%O=%RD=0%Q=)
T7(R=Y%DF=N%T=FA-104%TG=FF%W=0%S=Z%A=O|S+%F=AR%O=%RD=0%Q=)
U1(DF=N%T=FA-104%TG=FF%IPL=38%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)
IE(DFI=N%T=FA-104%TG=FF%CD=S)

SEQ描述顺序产生方式;OPS描述TCP包中可选字段的值;WIN描述TCP包的初始窗口大小;ECN(Explicit Congestion Notification)描述TCP明确指定拥塞通知时的特征;T1-T7描述TCP回复包的字段特征;U1描述向关闭的UDP发包产生的回复的特征;IE描述向目标机发送ICMP包产生的特征。

1. SEQ
SEQ(SP=F-CF%GCD=FA|1F4|2EE|3E8|4E2%ISR=8A-C2%TI=I%TS=U):
SP=F-CF:这是 TCP 序列号的生成模式,表示发送的包序列号。
GCD=FA|1F4|2EE|3E8|4E2:GCD(通用连接数据)可能表示不同的序列号生成策略。
ISR=8A-C2:ISR(初始序列号)可能用于 TCP 连接的初始状态。
TI=I:可能指示 TCP 选项的存在。
TS=U:表示时间戳选项的使用。
2. OPS
OPS(O1=M218%O2=M218%O3=M218%O4=M218%O5=M218%O6=M218):
这些字段表示 Nmap 发送的 TCP 操作类型。M218 表示发送的 TCP 包在不同条件下的响应情况,可能是 SYN、ACK、FIN 等。
3. WIN
WIN(W1=FFFF%W2=FFFF%W3=FFFF%W4=FFFF%W5=FFFF%W6=FFFF):
表示接收到的窗口大小,FFFF 表示窗口大小为最大值,可能用于检测操作系统的窗口大小策略。
4. ECN
ECN(R=Y%DF=N%T=FA-104%TG=FF%W=FFFF%O=M218%CC=N%Q=):
表示网络拥塞通知的支持情况。
R=Y:表示支持 ECN。
DF=N:表示不支持不分段标志。
T=FA-104:可能表示 TCP 的传输协议状态。
W=FFFF:窗口大小。
O=M218:表示操作系统支持特定的选项。
5. T1 到 T7
T1(R=Y%DF=N%T=FA-104%TG=FF%S=O%A=O|S+%F=AS%RD=0%Q=):
每个 T 字段代表不同的 TCP 探测类型(SYN、ACK 等)。
R=Y:表示响应成功。
DF=N:表示不分段。
T=FA-104:传输状态。
S=O、A=O:表示在特定条件下的发送和接收状态。
6. U1
U1(DF=N%T=FA-104%TG=FF%IPL=38%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G):
这个字段表示 UDP 探测的响应情况。
DF=N:表示不分段。
IPL=38:表示 IP 层的某些特性。
UN=0、RIPL=G 等表示 UDP 探测的响应特征。
7. IE
IE(DFI=N%T=FA-104%TG=FF%CD=S):
表示某些特定的 IP 选项和响应特征。

这些载荷通常包括 SYN、ACK、FIN 等不同的 TCP 标志,结合不同的窗口大小、序列号和选项,从而形成独特的指纹模式。

7. Reference

https://mp.weixin.qq.com/s/FL0Cl2W58u8br7VYaxsYwg

https://blog.csdn.net/2302_82189125/article/details/135961736

https://blog.csdn.net/huangxuzhi/article/details/109493388

https://www.venustech.com.cn/u/cms/www/202302/281656496119.pdf

https://www.nsfocus.com.cn/uploadfile/2019/1128/20191128110052291.pdf

https://nsfocusglobal.com/wp-content/uploads/2023/12/RSAS-Datasheet-231215.pdf

https://xz.aliyun.com/t/13023?time__1311=GqmhBKYKAKY5GKDsD7%2BEq7I50Ig7X6j07oD

https://blog.csdn.net/weixin_53801131/article/details/120256963

https://nmap.org/man/zh/man-host-discovery.html

https://cybersainik.com/predictive-prioritization-the-future-of-vulnerability-management/

https://uvm.zscaler.com/post/in-data-we-trust-the-next-gen-of-vulnerability-management

https://www.linkedin.com/pulse/embracing-future-vulnerability-management-robert-kelsall-1dyne

https://medium.com/@axayyk./the

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/65069.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

验证 Dijkstra 算法程序输出的奥秘

一、引言 Dijkstra 算法作为解决图中单源最短路径问题的经典算法,在网络路由、交通规划、资源分配等众多领域有着广泛应用。其通过不断选择距离源节点最近的未访问节点,逐步更新邻居节点的最短路径信息,以求得从源节点到其他所有节点的最短路径。在实际应用中,确保 Dijkst…

【论文阅读笔记】Learning to sample

Learning to sample 前沿引言方法问题声明S-NET匹配ProgressiveNet: sampling as ordering 实验分类检索重建 结论附录 前沿 这是一篇比较经典的基于深度学习的点云下采样方法 核心创新点&#xff1a; 首次提出了一种学习驱动的、任务特定的点云采样方法引入了两种采样网络&…

Mysql大数据量表分页查询性能优化

一、模拟场景 1、产品表t_product,数据量500万+ 2、未做任何优化前,cout查询时间大约4秒;LIMIT offset, count 时,offset 值较大时查询时间越久。 count查询 SELECT COUNT(*) AS total FROM t_product WHERE deleted = 0 AND tenant_id = 1 分页查询 SELECT * FROM t_…

pythonWeb~伍~初识Django

初识Django 1.技术栈 Python知识点&#xff1a;函数、面向对象。前端知识点&#xff1a;HTML、CSS、JavaScript、jQuery、BootStrap。MySQL数据库。Python的Web框架&#xff1a; Flask&#xff0c;自身短小精悍 第三方组件。Django&#xff0c;内部已集成了很多组件 第三方…

kimi搜索AI多线程批量生成txt原创文章软件-不需要账号及key

kimi搜索AI多线程批量生成txt原创文章软件介绍&#xff1a; 软件可以设置三种模型写文章&#xff1a;kimi&#xff1a;默认AI模型&#xff0c;kimi-search&#xff1a;联网检索模型 &#xff0c;kimi-research&#xff1a;探索版搜索聚合模型 1、可以设置写联网搜索文章&#…

DevNow x Notion

前言 Notion 应该是目前用户量比较大的一个在线笔记软件&#xff0c;它的文档系统也非常完善&#xff0c;支持多种文档格式&#xff0c;如 Markdown、富文本、表格、公式等。 早期我也用过一段时间&#xff0c;后来有点不习惯&#xff0c;就换到了 Obsidian &#xff0c;但是…

CSPM认证最推荐学习哪个级别?

一、什么是CSPM&#xff1f; CSPM的全称是Certified Strategic Project Manager&#xff0c;中文名称为“项目管理专业人员能力评价等级证书”。这是由中国标准化协会依据国家标准《项目管理专业人员能力评价要求》&#xff08;GB/T 41831-2022&#xff09;推出的一项认证&…

oracle: create new database

用database configuration Assistant 引导创建数据库。记得给system,sys 设置自己的口令&#xff0c;便于添加新操作用户。 创建操作用户&#xff1a; -- 别加双引号&#xff0c;否则&#xff0c;无法用 create user geovindu identified by 888888; create user geovin identi…

快速建站(网站如何在自己的电脑里跑起来) 详细步骤 一

1.选择开源网站 开源网站的建设平台有多种类型&#xff0c;每种类型都针对不同的需求和用途。我们根据自己的需求来选择 一、内容管理系统&#xff08;CMS&#xff09; 内容管理系统是开源网站建设中最常见的类型之一&#xff0c;它们提供了一个易于使用的界面&#xff0c;使用…

ECharts散点图-气泡图,附视频讲解与代码下载

引言&#xff1a; ECharts散点图是一种常见的数据可视化图表类型&#xff0c;它通过在二维坐标系或其它坐标系中绘制散乱的点来展示数据之间的关系。本文将详细介绍如何使用ECharts库实现一个散点图&#xff0c;包括图表效果预览、视频讲解及代码下载&#xff0c;让你轻松掌握…

【蓝桥杯——物联网设计与开发】拓展模块5 - 光敏/热释电模块

目录 一、光敏/热释电模块 &#xff08;1&#xff09;资源介绍 &#x1f505;原理图 &#x1f505;AS312 &#x1f319;简介 &#x1f319;特性 &#x1f505;LDR &#xff08;2&#xff09;STM32CubeMX 软件配置 &#xff08;3&#xff09;代码编写 &#xff08;4&#x…

Escalate_Linux靶机

Escalate_Linux靶机 前言&#xff1a;集合了多种liunx提权方法的靶场&#xff0c;通过该靶场可以简单的了解liunx提权方法 1&#xff0c;扫描一下端口 80/tcp open http 111/tcp open rpc 2049/udp nfs要知道对方的共享才能挂载 139/445 Samba SMB是一个协议名&#xff0c…

PPO算法基础(一)

PPO近端策略优化算法 我们今天还是主要来理解PPO算法的数学原理。PPO是一种策略梯度方法&#xff0c;简单的策略梯度对每个样本&#xff08;或者一组样本&#xff09;进行一次梯度更新&#xff0c;对单个样本执行多个梯度步骤会导致一些问题&#xff0c;因为梯度偏差太大&…

[机器学习]sklearn入门指南(1)

简介 scikit-learn&#xff08;简称sklearn&#xff09;是一个开源的Python机器学习库&#xff0c;它提供了简单而高效的工具用于数据挖掘和数据分析&#xff0c;并且拥有一个活跃的开发社区。它建立在NumPy、SciPy和matplotlib这些科学计算库之上&#xff0c;旨在提供一致且可…

贪心算法(三)

目录 一、k次取反后最大化的数组和 二、优势洗牌 三、最长回文串 四、增减字符串匹配 一、k次取反后最大化的数组和 k次取反后最大化的数组和 贪心策略&#xff1a; 解题代码&#xff1a; class Solution { public:int largestSumAfterKNegations(vector<int>&am…

文本的AIGC率检测原理

背景 你可能在学生群里或者视频中看过这样的消息&#xff1a;“我们学校要求论文AI率不能超过30%&#xff01;”、“你们学校查AI率吗&#xff1f;”之类的&#xff0c;这些消息到底是真是假&#xff1f; 随着人工智能的快速发展和广泛应用&#xff0c;不论是工作中还是学生学…

Linux -- 从抢票逻辑理解线程互斥

目录 抢票逻辑代码&#xff1a; thread.hpp thread.cc 运行结果&#xff1a; 为什么票会抢为负数&#xff1f; 概念前言 临界资源 临界区 原子性 数据不一致 为什么数据不一致&#xff1f; 互斥 概念 pthread_mutex_init&#xff08;初始化互斥锁&#xff09; p…

浅谈目前我开发的前端项目用到的设计模式

浅谈目前我开发的前端项目用到的设计模式 前言 设计模式很多&#xff0c;看到一个需求&#xff0c;项目&#xff0c;我们去开发的时候&#xff0c;肯定是做一个整体的设计进行开发&#xff0c;而在这次我项目中&#xff0c;我也做了一个整体的设计&#xff0c;为什么要设计&a…

ubuntu笔记

1.系统下载与虚拟机设置 系统下载https://cn.ubuntu.comhttps://releases.ubuntu.com 虚拟机设置: 桥接模式 在桥接模式下, 虚拟出来的操作系统就像是局域网中的一台独立的主机, 它可以访问网内任何一台机器主机网卡和虚拟网卡的IP地址处于同一个网段, 子网掩码、网关、DNS等…

开放世界目标检测 Grounding DINO

开放世界目标检测 Grounding DINO flyfish Grounding DINO 是一种开创性的开放集对象检测器&#xff0c;它通过结合基于Transformer的检测器DINO与基于文本描述的预训练技术&#xff0c;实现了可以根据人类输入&#xff08;如类别名称或指代表达&#xff09;检测任意对象的功…