【网络安全产品大调研系列】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.rhkb.cn/news/494856.html

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

相关文章

Java爬虫:速卖通(AliExpress)商品评论获取指南

引言 在当今的电商时代&#xff0c;商品评论对于消费者决策有着举足轻重的影响。速卖通&#xff08;AliExpress&#xff09;&#xff0c;作为全球知名的在线零售平台之一&#xff0c;拥有海量的商品评论数据。对于商家而言&#xff0c;能够高效地获取这些评论数据&#xff0c;…

AIDD - 探索语言模型在药物分子生成方面的应用

AIDD - 探索语言模型在药物分子生成方面的应用 今天给大家讲一篇2024年10月在nature communications上发表的一篇关于分子生成的文章。现有的分子生成方法中往往只关注药物的特定属性&#xff0c;导致其适用性受限。因此作者提出了TamGen方法&#xff0c;用于针对特定靶点的分子…

【每日学点鸿蒙知识】AVCodec、SmartPerf工具、web组件加载、监听键盘的显示隐藏、Asset Store Kit

1、AVCodec 硬解咨询&#xff1f; 在做视频播放硬解适配&#xff0c;这是 demo&#xff1a;https://gitee.com/openharmony-sig/ohos_videocompressor/blob/master/videoCompressor/src/main/cpp/video/decoder/VideoDec.cpp 请问&#xff1a; int32_t VideoDec::SetOutputS…

怎么设置电脑密码?Windows和Mac设置密码的方法

为电脑设置密码是保护个人信息安全的重要措施。无论是Windows系统还是MacOS系统&#xff0c;设置密码的步骤都相对简单&#xff0c;但需要根据不同的操作系统选择不同的方法。 一、Windows系统电脑密码设置 方法一&#xff1a;通过控制面板设置账户密码 点击桌面左下角的“开…

谷歌浏览器的网络安全检测工具介绍

作为全球最受欢迎的浏览器之一&#xff0c;谷歌浏览器不仅提供了快速、便捷的浏览体验&#xff0c;还内置了一系列强大的网络安全检测工具&#xff0c;帮助用户识别潜在的网络威胁&#xff0c;保护个人隐私和数据安全。本文将详细介绍谷歌浏览器中的几项关键网络安全检测功能&a…

一个比RTK或redux更轻量级更易使用的 React 第三方状态管理工具库的配置与使用

本文由作者 Samdy_Chan 原创,未经作者同意,请勿随意转载! 使用轻量级第三方的 React 状态管理库 zustand 管理共享状态数据 在 react 框架应用中,开发者应该大多数都是采用 redux 状态管理工具库来管理应用的共享状态数据,但用过 redux 的人都知道,其配置和使用相当复杂…

菜鸟带新鸟——基于EPlan2022的部件库制作

首先&#xff0c;我们需要了解一些概念&#xff1a; Eplan的部件制作内容 以上内容是制作一个完整的部件所需要的。如果公司要求没有那么严格&#xff0c;我们就可以制作1-4级的内容就可以满足日常的使用啦&#xff01; 部件的创建方式 部件创建方式有4类&#xff1a; 1、单…

Charles安装证书过程(手机)

背景&#xff1a;使用模拟器抓包时&#xff0c;发现https请求无法抓取&#xff0c;需要安装相应证书。我自己是因为模拟器升级了安卓7&#xff0c;发现之前安装的证书无效了&#xff0c;需要重新安装。 参考博客&#xff1a;夜神模拟器12Charles进行Https抓包_模拟器抓包ssl-C…

Windows、CentOS环境下搭建自己的版本管理资料库:GitBlit

可以搭建属于公司内部或者个人的Git服务器&#xff0c;方便程序代码及文档版本管理。 官网&#xff1a;http://www.gitblit.com/ Windows环境下安装 提前已经安装好了JDK。 官网下载Windows版的GitBlit。 将zip包解压到自己想要放置的文件夹下。 建立版本库路径&#xff0c…

数据库操作【JDBC HIbernate Mybatis】

JDBC JDBC编程 在java开发中&#xff0c;以前都是通过JDBC&#xff08;Java Data Base Connectivity&#xff09;与数据库打交道的&#xff0c;至少在ORM&#xff08;Object Relational Mapping&#xff09;框架没出现之前是这样&#xff0c;目前常用的ORM框架有JPA、hibernat…

Linux 常见用例汇总

注&#xff1a;本文为 Linux 常见用例文章合辑。 部分内容已过时&#xff0c;未更新整理。 检查 Linux 上的 glibc 版本 译者&#xff1a;joeren | 2014-11-27 21:33 问&#xff1a;检查 Linux 系统上的 GNU C 库&#xff08;glibc&#xff09;的版本&#xff1f; GNU C 库&…

web-密码安全口令

目录 一、密码安全概述 二、密码安全现状 三、破解方式 四、暴力破解 五、字典破解 六、密码字典 学习心得&#xff1a; 一、密码安全概述 现在很多地方都是以用户名&#xff08;账号&#xff09;和口令&#xff08;密码&#xff09;作为鉴权的方式&#xff0c;口令&am…

工控触摸屏用winForms来构建框架,效果还是很不错的

工控触摸屏采用 winForms 构建框架具有诸多优势。winForms 提供了丰富的控件和强大的开发工具&#xff0c;使得界面设计更加高效。它具有良好的稳定性和兼容性&#xff0c;能够适应工控环境的复杂要求。通过 winForms 可以实现直观的操作界面&#xff0c;方便操作人员进行监控和…

开发一个DApp项目:DeFi、DApp开发与公链DApp开发

随着区块链技术的快速发展&#xff0c;去中心化应用&#xff08;DApp&#xff09;逐渐成为创新技术的核心之一。DApp能够利用区块链去中心化的特点&#xff0c;提供更高的安全性、透明性和效率&#xff0c;吸引了越来越多的开发者和投资者关注。本文将围绕如何开发一个DApp项目…

网络下载ts流媒体

网络下载ts流媒体 查看下载排序合并 很多视频网站&#xff0c;尤其是微信小程序中的长视频无法获取到准确视频地址&#xff0c;只能抓取到.ts片段地址&#xff0c;下载后发现基本都是5~8秒时长。 例如&#xff1a; 我们需要将以上地址片段全部下载后排序后再合成新的长视频。 …

性能优化!突破性能瓶颈的尖兵CPU Cache

缓存这个专业术语&#xff0c;在计算机世界中是经常使用到的。它并不是CPU所独有的&#xff0c;比如cdn缓存网站信息&#xff0c;浏览器缓存网页的图像视频等&#xff0c;但本文讲述的是狭义Cache&#xff0c;主要指的是CPU Cache&#xff0c;本文将其简称为"缓存"或…

Redis+注解实现限流机制(IP、自定义等)

简介 在项目的使用过程中&#xff0c;限流的场景是很多的&#xff0c;尤其是要提供接口给外部使用的时候&#xff0c;但是自己去封装的话&#xff0c;相对比较耗时。 本方式可以使用默认&#xff08;方法&#xff09;&#xff0c;ip、自定义参数进行限流&#xff0c;根据时间…

010 Qt_输入类控件(LineEdit、TextEdit、ComboBox、SpinBox、DateTimeEdit、Dial、Slider)

文章目录 前言一、QLineEdit1.简介2.常见属性及说明3.重要信号及说明4.示例一&#xff1a;用户登录界面5.示例二&#xff1a;验证两次输入的密码是否一致显示密码 二、TextEdit1.简介2.常见属性及说明3.重要信号及说明4.示例一&#xff1a;获取多行输入框的内容5.示例二&#x…

RabbitMQ 的7种工作模式

RabbitMQ 共提供了7种⼯作模式,进⾏消息传递,. 官⽅⽂档:RabbitMQ Tutorials | RabbitMQ 1.Simple(简单模式) P:⽣产者,也就是要发送消息的程序 C:消费者,消息的接收者 Queue:消息队列,图中⻩⾊背景部分.类似⼀个邮箱,可以缓存消息;⽣产者向其中投递消息,消费者从其中取出消息…

WebAPI编程(第一天,第二天)

WebAPI编程&#xff08;第一天&#xff0c;第二天&#xff09; day01 - Web APIs 1.1. Web API介绍 1.1.1 API的概念1.1.2 Web API的概念1.1.3 API 和 Web API 总结 1.2. DOM 介绍 1.2.1 什么是DOM1.2.2. DOM树 1.3. 获取元素 1.3.1. 根据ID获取1.3.2. 根据标签名获取元素1.3.…