Sci论文 - 至繁归于至简,Sci论文网。 设为首页|加入收藏
当前位置:首页 > 计算机论文 > 正文

分布式端口扫描器 Dnmap 的设计与实现论文

发布时间:2023-06-14 11:30:46 文章来源:SCI论文网 我要评论














SCI论文(www.lunwensci.com)

 摘 要:nmap 事实上成为现代各种扫描器技术上的标杆,但随着近年网络环境发生重大变化,它很容易被发现和拦截。 需要对其进行分布式升级,以提高其隐蔽性和运行效率。分布式的 dnmap 保留了单机的 nmap 原有各种特点,同时把单个任 务分布式化,基于多个设备或多个独立 IP 实施,在分布式的设备和独立 IP 地址足够多的前提下,可以减少扫描时间,并且不 容易被发现和拦截。dnamp 采用 Master、Slave 双角色的模式,进行分布式部署,将其应用于正面的网络攻防演练,有利于 打造更安全稳定的网络环境。

  引言

  nmap(Network Mapper)是一款非常著名的、开 源免费的、用于实现网络发现(Network Discovery) 和安全审计(Security Auditing) 的工具。nmap 最初 是由 Fyodor 在 1997 年开始创建的,随后在开源社区众 多的志愿者参与下,该工具逐渐成为最为流行安全必备 工具之一,在网络安全渗透过程中也是一款必备的测试 工具,著名的渗透安全工具集合 Kali Linux 默认安装内 置了 nmap[1.2]。
\

  1 nmap 概述

  nmap 经历了 20 多年连续不断的开源和开发,在名义和实际上都已经成为了现代诸多扫描器的技术上的 鼻祖和标杆。nmap 提出了诸多的端口扫描的技术如: 全连接扫描、半连接扫描、空扫描、FIN 扫描、UDP 扫描等,都是近现代诸多扫描器技术实现的原形。同时 在端口扫描的基础上, nmap 又发展出一套完整的主 机应用服务和主机操作系统探测技术,其基于主机对 TCP/IP 不同反应形成的主机操作系统类型指纹库,也 是诸多现代扫描器参考借鉴的技术原形。

  正如大多数被用于网络安全的工具, nmap 也是不 少黑客及骇客(又称脚本小子)爱用的工具。系统管理 员可以利用 nmap 来探测工作环境中未经批准使用的服务器,但是黑客会利用 nmap 来搜集目标电脑的网 络设定,从而制定攻击计划的对应方法。

  1.1 nmap 功能简介

  nmap 包含四项基本功能:主机发现(Host Discovery)、 端口扫描(Port Scanning)、版本侦测(Version Detection)、 操作系统侦测(Operating System Detection), 而这四项 功能之间,又存在大致的依赖关系(通常情况下的顺序 关系,但特殊应用另外考虑),首先需要进行主机发现, 随后确定端口状况,然后确定端口上运行具体应用程序 与版本信息,然后可以进行操作系统的侦测 [3]。具体各 项功能如下:

  (1)主机发现功能: 向目标计算机发送特制的数据 包组合,然后根据目标的反应来确定它是否处于开机并 连接到网络的状态。

  (2)端口扫描: 向目标计算机的指定端口发送特制 的数据包组合,然后根据目标端口的反应来判断它是否 开放。

  (3)服务及版本检测: 向目标计算机的目标端口发 送特制的数据包组合,然后根据目标的反应来检测它运 行服务的服务类型和版本。

  (4)操作系统检测: 向目标计算机发送特制的数据 包组合,然后根据目标的反应来检测它的操作系统类型 和版本。

  可以说, nmap 在主机的端口扫描、应用服务检测、 操作系统检测方面就是无冕之王。

  1.2 nmap 面临的问题

  nmap 开发于上个世纪末,那个时间段,正是互联 网技术方兴未艾,各种互联网技术齐头并进百花齐放的 时代,但互联网安全的防御技术领域却还没得到足够的

  重视和应用。nmap 作为那个阶段的互联网安全攻击 技术领域的产物,因为没有对应的防御技术与其针锋相 对,所有其具有了那个时代的局限性。为了追求准确和 高效,其提出的各种扫描和探测的技术实现,是基于单 机对当时相对开放的理想网络环境下的实现。互联网从 诞生到现在都一直在进化改变中。今天的网络情况已经 和以往大有区别,各个国家的网络安全环境状况也大有 不同。网络安全尤其是防御技术得到进一步的重视和发 展,尤其是网络边界的网关安全设备和安全防护软件都 得到了大量的部署和应用。同时由于久负盛名、使用广 泛,本身技术又开源, nmap 的扫描行为特征和源代码 都成为诸多安全防御系统研究的基础性内容。伴随着互 联网安全中的防御技术领域的进一步发展壮大,在广泛 部署了网络边界网关安全设备和安全防护软件的今天, 当某台主机或某个 IP 在短时间内被发现发出太多的数 据报文或连接,在现代网络安全防御技术下,其无异于 等于自我暴露。nmap 基于单机(单 IP)的构造报文的 高效率扫描行为,往往会被检测为的典型扫描(攻击) 行为特征, 基于单机(单 IP) 下的扫描往往被各种部 署于网络边界的安全系统轻易地拦截和发现 [4]。

  2 dnmap 的设计

  dnmap(Distributed Nmap) 被设计为一款运行 在 Linux 平台、支持 X86/ARM 架构、基于网络安全工 具 nmap、面向命令行实现的分布式端口扫描探测工具。 借助了 redis 内存数据库数据支持原子操作的特性实现 了分布式锁,是用于实现对著名网络安全工具 nmap 的 分布式应用的主要组件。

  2.1 设计背景

  dnmap 的开发设计的目的在于解决前述 nmap 所面临的问题,分布式的 dnmap 保留了单机的 nmap 原 有各种特点,同时把单个任务分布式化,基于多个设备 或多个独立 IP 实施,在分布式的设备和独立 IP 地址足 够多的前提下,不仅可以提高效率,也进一步提高了隐 蔽性,使得 nmap 在新时代的互联网边界网关设备和 防护软件遍布的环境下,有机会可以继续发光发热。如 下图 1 所示:
\

  dnmap 被设计成一个分布式扫描调度集群,依靠 群体(多个设备和 IP)共同来完成一个原来由一个单独 主机(单 IP)所要完成的扫描任务。同时, redis 这类 的内存数据库应用的出现,由于其支持数据原子操作的 特性,很好地解决了数据分发时实现分布式锁的这个关 键需求,使得原来需要相对复杂设计的分布式数据操作 应用设计,借助其特性,即能相对简单而且完整地实现。 2.2 关键技术

  (1)dnmap 在运行时, 区分为两种角色:master 和 slave。master 端产生具体的分布式端口扫描的子任 务并存储到 redis 服务器;而 slave 端则从 redis 服务器 获取具体的分布式端口扫描的子任务并执行,如果有需 要报告的扫描结果,则由 slave 端存储到 redis 服务器。

  (2) dnmap 虽然区分运行角色,但是为了方便部 署,把 master 和 slave 的功能都封装到了一个程序中, 通过运行时参数的区别,程序自行判定自己的运行角色。

  (3)当运行在 master 端用于产生分布式端口扫描 子任务时, dnmap 完全兼容 nmap 自身的运行参数, 使用者不需要修改原有对 nmap 的使用习惯和记忆, 程序将自动分析其中的端口和主机参数,同时将这两个 参数形成二维数组后并将当前运行命令子任务化。目前 dnmap 主要实现了 nmap 端口扫描这个主力功能的分 布式化。

  (4)借助 redis 这个高速的内存数据库的原子特 性,当 slave 端从 redis 提取子任务时,任务分配的特 性是天然的分布式特性,任务的唯一性和完整性,都借 助 redis 分布式锁得以完好的实现。

  3 dnmap 的实现

  dnmap 命令通过不同参数实现各种功能。

  3.1 参数介绍

  (1) 分别用于在 master 和 slave 检查 配置的 redis 服务器参数是否有效可用。

  (2) 分别用于在 master 和 slave 设置 所需的 redis 服务器参数,其中端口和密码为可选项。

  (3) 运行在 master 端, 直接使用 nmap 的运行参数,程序将分析其中的端口

  和主机参数,产生分布式端口扫描子任务并由 master 端储存到 redis 服务器对应的表单中。

  (4) [seconds] 运行在 slave 端, 从 redis 服务器指定的表 单中接收端口扫描子任务并执行,如果有结果,则由 slave 端存储到 redis 服务器对应的表单中。

  3.2 模拟环境

  在局域网搭建一个模拟分布式端口扫描的网络环 境,具体环境和角色如下:

  (1) 192.168.31.1 网关,也是端口扫描靶机。

  (2) 192.168.31.31 master, 用 于 产 生 分 布 式 端 口扫描子任务,同时 redis 服务器也运行在此主机上。 redis 服务器运行在默认的 TCP 端口 6379 上,连接密 码为 :redispass。

  (3) 192.168.31.60 slave1. 用于执行分布式端口 扫描子任务。

  (4) 192.168.31.105 slave2. 用于执行分布式端口 扫描子任务。

  (5) 192.168.31.160 slave3. 用于执行分布式端口 扫描子任务。

  (6) 192.168.31.180 slave4. 用于执行分布式端口 扫描子任务。

  3.3 执行步骤

  (1)设置必须的 redis 数据库服务器运行参数 :

  在 master, 即 192.168.31.31 的 主 机 上, 执 行 如 下操作: ./dnmap smr 127.0.0.1:6379 redispass

  在 slave, 即 192.168.31.60;192.168.31.105;192.1 68.31.160;192.168.31.180 主机上, 执行如下操作: ./ dnmap ssr 192.168.31.31:6379 redispass

  如果配置信息(redis 服务器的 IP 地址、端口、密码) 正确,都会得到程序的提示配置成功,提示连接 redis 服 务器成功。

  (2) 检查配置的 redis 数据库服务器参数是否可用 :

  在 master, 即 192.168.31.31 的 主 机 上, 执 行 如 下操作: ./dnmap cmr

  在 slave1-slave4. 即 192.168.31.60;192.168.31.105; 192.168.31.160;192.168.31.180 主机上, 分别执行如下 操作: ./dnmap csr

  如果步骤 1 配置的 redis 服务器信息(redis 服务 器的 IP 地址、端口、密码)正确,都会得到程序的提 示 , 提示连接 redis 服务器成功。

  (3)在 master 端产生分布式端口扫描子任务。

  在 master, 即 192.168.31.31 的主机上, 执行 "./dnmap -sS -p 1-1000 192.168.31.1" 程 序 将 分 析 其 中 的端口和主机参数,此实例中,主机参数为单一主机: 192.168.31.1. 而端口为 1-1000 的端口范围, 则程序 会把这个的扫描任务分解为 1000 个具体的 nmap 可执 行的扫描子任务:

  nmap -sS -p 1 192.168.31.1

  nmap -sS -p 2 192.168.31.1

  nmap -sS -p 3 192.168.31.1

  nmap -sS -p 4 192.168.31.1

  ......

  在 master 上, 即 192.168.31.31 的 主 机 上, 使 用 redis 服务器的客户端程序 redis-cli 查看表单 "2022090 9111432.1380071728:dnmap:jobs" 内 容, 通 过“zrange 20220909111432.1380071728:dnmap:jobs 0 -1”命令 获取实际分割的各条子任务的具体内容。

  可以发现原来的“ ./dnmap -sS -p 1-1000 192.168.31.1” 命令,自动被分析拆分成 1000 个对应的 nmap 子任务命 令行,并被存储到了 redis 服务器对应的表单中。

  (4)在 slave 端接收并执行分布式端口扫描子任务

  在 slave, 即 192.168.31.60;192.168.31.105;192.168. 31.160;192.168.31.180 主机上, 分别执行 "./ dnmap20 220909111432.1380071728:dnmap:jobs", 则 4 个 slave 将 同 时 从 redis 服 务 器 的 "2022090 9111432. 13800 71728: dnmap:jobs" 表单中,接收具体的子任务并执行,如果 有端口被扫描出,则结果由 slave 端提交并储存到 redis 服务器对应这个任务的报告表单:"20220909111432. 1380071728:dnmap:report" 中去。

  (5)查看扫描结果

  在 master 上, 即 192.168.31.31 的主机上, 使用 redis 服务器的客户端程序 redis-cli 查看表单 "20220909 111432.1380071728:dnmap:report"。如图 2 所示。
\


  127.0.0.1 :6379> zrange 20220909111432.13800 71728:dnmap:report 0 -1

  第 1 条为原始的未生成分布式端口扫描子任务的原 始命令行 , 以及该命令行被存储到 redis 服务器的时间 记录。

  第 2 条开始,如果某个 slave 通过 nmap 成功扫描 到某个端口,则将提交报告到 redis 服务器,单条内容 数据段内容分别为:

  扫描到的端口开放信息(主机地址、端口号 / 协议、 端口状态、端口对应的服务)、执行该扫描的 slave 端 的主机信息(MAC 地址 |IP 地址 | 主机名 | 组名)、以及 存储该记录的时间。

  3.4 实例的进阶说明

  以上的局域网演示实例,只是用于演示 dnmap 的 功能实现和执行步骤流程。真正部署该工具软件时,往 往需要真实的分布式网络环境,也就是在不同的网络 (IP)设备上部署 dnmap 的 slave 端,以获取真实的 分布式的网络环境。笔者将 dnmap 的 slave 端部署在 了树莓派这个广泛应用的微型 ARM 设备上,同时将设 备连接在了家用无线路由器后置的有线局域网口上,由 于大部分家用无线路由器的有线网口都内置支持 DHCP 自动分配地址,这样这个设备经过简单部署就很方便地 连接上了互联网,并成为了 dnmap 分布式端口扫描网 络里的一个工作终端。同时,如果在工作一段时间后, 需要更换 IP 地址, 在取得该家用路由器拥有者许可的 前提下,可以在树莓派内置一个登陆无线路由器管理页 面的程序,并通过无线路由器管理页面进行网络宽带的 重新拨号来获取一个新的网络 IP 地址。从而进一步延 续和扩展这个分布式集群需要不同 IP 环境支持的后期 工作。
\

  同时, dnamp 也需要一套远程集中管理控制软件 来实现由 master 通知和控制这些 slave 端去集中统一 执行某个操作的功能,才能实现 dnmap 最初完整的分布 式设计目标,此部分由于篇幅有限,不在此做具体讨论。

  4 结语

  安全和效率一直就是一对有趣的矛盾,彼此互相 限制,却又能进一步促进各自发展,正所谓此消彼长。 nmap 登场的时代,独立构造数据报文、多线程等一系 列技术提高了扫描的效率,但是安全防御技术的进一步 发展,使得这些原有基于单 IP 实施的高效技术,反而 成为了众矢之的。这也进一步导致了扫描技术的进化,为了在新的网络时代实现 nmap 扫描原有的效率和功 能,分布式扫描登上了舞台。而在面对各种安全系统的 围追堵截,当下和未来,一个完整可实现的网络端口扫 描,很大可能来至各个不同的地方(IP),而且扫描器 可能不再追求速度,而是追求完整、隐蔽、可靠的实 现,所以扫描可能会变慢下来。但最终,所有的扫描结 果会被汇总,形成完整的报告,传统的网络扫描借助分 布式仍然有机会得以完整实现。而实现这一切的前提是 要拥有一个可靠、可控的分布式网络。

  伟大的互联网仍然在进化中,而伴随的安全攻防也 一直在进化中。本文的目的在于研究工具的无害化应 用,将其用于正面的网络攻防演练是具有很强的实践意义的,有利于打造更安全稳定的网络环境。

  参考文献

  [1] 颜天佑,卢灏.基于端口扫描的变电站主机漏洞检测系统[J]. 信息安全研究,2022.8(2):182-189.
  [2] 王玺民,朱俊澜 .LSTM-Exploit:基于LSTM的智能渗透 工具[J].网络安全技术与应用,2021(7):59-62.
  [3] 侯美静 .基于智能爬行算法的网络扫描技术研究及实现[D]. 西安:西安电子科技大学,2018.
  [4] 薛少勃,沈晶 .基于持续增量模型的低速端口扫描检测算法 [J].计算机应用研究,2020(4):1125-1127+1131.

 
 
关注SCI论文创作发表,寻求SCI论文修改润色、SCI论文代发表等服务支撑,请锁定SCI论文网!

文章出自SCI论文网转载请注明出处:https://www.lunwensci.com/jisuanjilunwen/57596.html

发表评论

Sci论文网 - Sci论文发表 - Sci论文修改润色 - Sci论文期刊 - Sci论文代发
Copyright © Sci论文网 版权所有 | SCI论文网手机版 | 鄂ICP备2022005580号-2 | 网站地图xml | 百度地图xml