今天,我们来讲一下网络安全!
本文章仅提供学习,切勿将其用于不法手段!
目前,在信息安全攻防领域,主要分为了两个技术发展方向,分别为渗透测试(红队技术) 和 安全运维(蓝队技术)!
正所谓,红蓝不分家!矛与盾,在攻防演练活动中,是永恒的战斗伙伴!
作为渗透测试人员,如果不懂得安全运维技术,那么在进行渗透测试行为时,就往往如同 没见过猫的老鼠,无比兴奋地闯进了猫窝!深处危险之处,却并不自知 !
作为安全运维人员,如果不懂得渗透测试技术,那么在进行安全运维行为时,就往往如同 没见过老鼠的猫,看到老鼠闯入,依然倒头就睡!正是应验了那句,敌袭已至,守将,却毫无所察 !
知己,也要知彼 !作为 信息安全人员,既要懂得 安全攻击技术 ,也要懂得 安全防御技术 !
安全攻击 和 安全防守 技术,是 信息安全人员,安身立命的资本!
今天,我们来继续探讨下,信息安全领域的新技术 :网络空间测绘技术 和 威胁态势感知技术 !
提到,网络空间测绘技术 和 威胁态势感知技术 ,我们不得不科普一些技术知识 !
不同领域的空间测绘工作,需要关注的技术层面不同!
如果我们针对无线网络进行空间测绘,那么,我们需要重点研究无线网络协议与网络设备的相关知识!
如果我们针对有线网络进行空间测绘,那么,我们需要重点研究有线网络协议与网络设备的相关知识!
如果我们针对工业网络进行空间测绘,那么,我们需要重点研究工业网络协议与网络设备的相关知识!
如果我们针对物联网络进行空间测绘,那么,我们需要重点研究物联网络协议与网络设备的相关知识!
如果我们针对车联网络进行空间测绘,那么,我们需要重点研究车联网络协议与网络设备的相关知识!
如果我们针对移动通信网络进行空间测绘,那么,我们需要重点研究移动通信网络协议与移动通信网络设备的相关知识!
正所谓,知己知彼,百战不殆 !
我们去进行哪个领域的空间测绘,我们就要研究哪个网络的网络协议和网络设备的工作原理 !
就拿工业网络来说,研究 SCADA 、PLC 等 典型工业控制系统(设备)的工作原理和技术实现,是进行工业网络空间测绘的技术知识基础 !又比如说,Modbus 等工业控制协议,也是我们需要去重点研究的 !又比如说,工业网络中,一般会存在哪些通用网络服务,也是需要我们去了解的!
作为一名保镖,只有足够了解被保护目标,才能更加地执行针对目标的保护任务。
作为一名安全运维人员,或者渗透测试人员,也是同样的道理 !
想要进行 网络空间测绘 工作 ,我们必须足够了解 需要保护或者评估的网络目标 !
网络空间测绘工作的侧重点,主要有 时空测绘 、 动态测绘 、 交叉测绘 、 行为测绘 这几个 侧重点 !
时空测绘,用来构建空间地图,可以实时展示 网络流量 的 通信轨迹 !
动态测绘,主要是针对流量的特征进行测绘,这里要求实时性,需要实时监测网络流量变化,包括流量大小,流量类型,流量数据信息 等方面内容。
交叉测绘,指的是 将时空测绘构成的空间地图 与 动态测绘 产生的实时流量信息 交叉融合,共同构成 一幅 数据实景化的 网络安全情报地图 !
行为测绘,什么是行为测绘呢? 这里指的是,网络流量的作用,是什么!FTP 文件传输?RTMP 流媒体传输?亦或者是 即时通信 ?或者是 SSH 的 远程登陆操作 ?RDP 远程桌面?
行为测绘,主要描述的是,网络流量正在做些什么 !
构建多维化、多层次的网络空间测绘地图,是信息安全保障战略进行技术实现的一个重要步骤 !
网络空间测绘 和 威胁态势感知 ,通常相互配合 ! 共同构建 信息安全领域 的 智能化防御 堡垒 !
网络空间测绘,需要用到关键技术,主要包括 网络探测扫描技术、网络资产识别技术 、IP地址定位技术 、网络拓扑测绘技术 、 网络流量解析技术 、安全漏洞扫描与验证技术 、网络大数据存储技术、网络大数据分析技术、网络地图可视化技术 等 相关技术知识基础点 !
通过网络空间测绘技术,我们可以获得网络空间的可视化地图 !
作为一家企业,或者一家机构的管理者,即使并不懂得 网络安全技术 ,也可以通过 小白模式 可视化地 去进行网络空间管理工作 !
网络空间测绘技术,可以让信息安全管理工作,变得更加简单!变得更加的省时省力 !
在 网络空间地图(网络沙盘地图) 中,我们可以看到网络硬件资产的设备类型、设备版本、系统类型、系统版本、开放端口、网络服务、IP地址、MAC(网卡)地址 等 相关信息 !
在 网络空间地图(网络沙盘地图) 中,我们可以对网络硬件资产的资产分布情况,有一个清晰且直观的了解 !
在进行网络空间测绘工作时,对于抓取到的网络数据包的处理效率,是非常重要的一项技术关键指标 !Intel 英特尔公司 ,已经为我们提供了相应的硬件技术级解决方案 !那就是 DPDK 技术 !
DPDK 技术 ,目前主要应用于 LINUX 操作系统,它 是 开放源码 的 !
DPDK ( Data Plane Development Kit )技术,又被称为 " 数据平面转发套件 " !
DPDK 技术,可以显著提升 网络流量探测报文(请求数据包) 和 网络流量响应报文(应答数据包) 的 收发处理性能 !
为什么 DPDK 技术,这么强大呢 ?
DPDK 技术,可以让 网络流量数据 从 网卡设备 直达 R3 用户层 的 网络流量处理程序( DPDK 应用程序 !使用 DPDK 技术之后,网络流量,将 绕过操作系统内核的网络驱动程序模块 !
DPDK 技术,可以让我们更快地进行网络流量的收发工作 !
DPDK 技术,由于 在 网络流量通信方面 绕过了操作系统的内核网络驱动对于网络流量的处理, 可以使网络流量 从网卡设备 直达 操作系统的 R3 用户层 ,这大大减轻了 操作系统的内核网络驱动对于网络流量的处理与转发开销(主要 节省 了 内核空间 向 用户空间 进行内存数据复制操作 的相关 开销 !还有 涉及 CPU 中断调用 的 系统调用 所产生的相关 开销 ) !更大大提升了 网络空间测绘程序 对于网络流量 的收发能力!
DPDK 技术,是 Intel 英特尔 公司 发布的一款 高性能 网络驱动 组件 !
DPDK 技术,为 网络空间测绘工作 的 有效开展,提供了 强而有力 的 技术支撑 !
DPDK 技术,裸包反弹 每个包 所需的 CPU 时钟周期,仅为 80 个 !
传统的 LINUX内核 中 网络协议栈驱动程序 反弹 每个包 所需的 CPU 时钟周期为 2000 ~ 4000 个 !
从数据方面,我们就可以看到,使用了 DPDK 技术,对于 网络流量 的 处理效能 提升了多少 !
什么是裸包反弹呢?
这里要讲解下,什么是裸包 !
所谓裸包,指的是未经任何处理或仅经过最少处理的网络原始数据包!
注意,这里指的是,几乎未经过任何网络协议栈进行处理的,最原始的 网络流量数据包 !
那么,什么是反弹呢 ?
所谓反弹,指的是,网络流量数据包在整个网络通信处理流程中的网络通信响应能力,或者网络通信转发能力 !
DPDK 技术,在 技术底层的原生实现上,就已经提供了非常好的 网络流量数据包 转发支持能力 !
裸包反弹,指的是,对于 几乎未经过任何网络协议栈进行处理的,最原始的 网络流量数据包 进行 网络通信响应 和 网络通信转发 的技术能力 !
在DPDK技术的实现上下文中,裸包处理,通常意味着 网络流量数据包 在用户空间中,可以进行高效的数据处理!由于 DPDK 的技术实现,是以 绕过 传统的内核网络协议栈 而直达 R3 用户层 的 DPDK 应用程序 为特点的,那么,就可以有效避免了 传统的内核网络协议栈,由于处理 网络流量数据包 所带来的 不必要的内存拷贝和系统调用 开销 !DPDK技术 的 这种处理方式,可以显著提高对于 网络流量数据包 的处理性能 !
位于 R3 用户层 的 DPDK 应用程序,需要 DPDK 驱动库 的 技术支持 !
因此,我们想要利用 DPDK 技术,就需要进行 DPDK 软件包 的 安装 !
这里,我们重点,需要安装四个软件包 !
它们,分别为 dpdk 、dpdk-dev 、dpdk-doc 、libdpdk-dev !
dpdk , 是 数据平面开发工具包 的 运行环境支持组件 !想要运行 dpdk 应用程序,你必须安装它 !
dpdk-dev ,是 数据平面开发工具包(开发工具)!想要开发 dpdk 组件,你必须安装它 !
dpdk-doc ,是 数据平面开发工具包(文档)!想要了解 dpdk 技术细节,你需要阅读它 !
libdpdk-dev ,是 数据平面开发工具包(基本开发文件)! 想要进行 dpdk 应用开发,我们需要用到它 !libdpdk-dev 软件包,包含 dpdk 软件 的 lib 库文件、h 头文件和 开发工具 等内容 !libdpdk-dev 软件包,对于 开发 和 编译 基于 DPDK技术 的 应用程序 来说,是必要的东西!通过使用libdpdk-dev 软件包的内容,我们可以更加容易地 集成 DPDK软件所提供的功能 到我们自己的 DPDK 项目来!我们可以充分利用 DPDK技术 带来的性能优势,去加速我们的网络流量数据包处理程序 和 网络通信程序 的 工作效率 !
DPDK技术,通过 UIO( Userspace I/O )用户空间 输入输出 处理技术框架 来进行 对于 网络流量数据包的高效处理 !UIO技术,将设备驱动分为 用户空间驱动 和 内核空间驱动 !使用 DPDK 技术 以后,内核空间驱动 仅负责 设备源分配 、UIO设备注册 、少量的中断响应函数 等,不再负责 对于数据包的 所有操作 !重点来了 !这意味着,所有对于 网络流量数据包的管理操作,将全部由 用户空间驱动 的 DPDK 应用程序 来完成 !DPDK 通过 UIO 框架 提供的接口 将 UIO 的 驱动程序 注册(通知)到 内核空间驱动 !注册完成以后,会在硬盘上生成存储有 设备 的 物理内存地址 等信息 的 MAP (地图)文件 !R3 层 用户态 的 应用程序 进程 访问 该文件,将 设备 对应的 内存空间地址(物理地址) 映射 到 用户空间 !这样做,R3 层 用户态 的 应用程序,即可 直接操作 设备 对应的 内存空间 数据 !
注意,对网络空间资产进行探测时,可以采取 TCP SYN 等 半连接、无状态的方式,来减少TCP协议的握手次数(正常情况下,建立TCP连接,需要经历三次握手!半连接,并不会真正的建立起TCP通信通道,也就不会经历完整的三次握手 !一般 两次握手( 客户端 发送 SYN=N ,服务端 接收 到 客户端 发送的 SYN=N,然后向 客户端 回复 ACK=SYN+1,SYN=K ,客户端 接收到 服务端 发送 的 ACK=SYN+1,SYN=K ,两次握手完成)就够了 !因为我们的重点,只是要知道,目标主机的端口,是处于开放状态,还是关闭状态 !我们并不需要去经历完整的三次握手过程) 和 缩短报文长度(不包含通信数据主体的TCP包,报文长度,非常小)!为什么要这样做呢?这样做,可以目标存活状态探测任务的工作效率(毕竟,我们并不需要经历完成的TCP协议通信过程)!
(未完待续)
下一章节内容,信息安全系列课程之网络空间测绘与态势感知技术揭秘(三)