企业安全建设之路:端口扫描(上)

0×00、业务需求

由于工作关系,最近一年来都奔走在各大安全会议,无论是公开会议,例如:ISC互联网大会、freebuf互联网大会等、还是半公开的会议,例如某SRC组织的互联网金融会等。互联网安全运维人员都在谈自己企业的运维平台是如何建立的。这里我简单用思维导图总结一下:

有一定研发能力的互联网安全团队都在建立自己的安全运管平台。我想这样做的目的是:

(1)半自动化或者全自动化安全运维规则,提高工作效率,降低人力成本。

(2)现有安全厂商提高的产品无法满足用户日益增长业务安全需求,业务架构变更。例如:日志管理部分,传统SIEM是无法满足 50万QPS Web日志处理能力,需要storm/spark架构处理。

(3)降低人员变动带来的业务安全的稳定性

当然这种安全投入是巨大的,而且需要持续发展才能摊平成本。

0×01、端口扫描需求分析

1、竞品获得需求:

  传统扫描器 云扫描器 企业内网端口扫描器
检查模式 并发 分布式/并发 并发
IP端口资产管理 不支持 支持 支持
IP端口资产变更告警 不支持 支持 支持
检查是否开放违规端口 不支持 支持 支持

2、安全经验获得需求

操作系统分布 windows操作系统版本分布
web容器分布 IIS版本分布
数据库端口对外开放 mysql数据库版本分布
暴力破解协议分布 OpenSSH版本分布

3、简单数据挖掘分析获得需求

在此之前做了一部分数据采集工作,表一ip_result.csv主要记录主机IP、域名、是否存活和操作系统类型,表二ports_result.csv主要记录了地址、端口、服务、服务详细描述等,通过对本测试数据集的分析,找到我们的业务需求。首先要了解数据全貌,可以多个维度去分析数据,包括:可视化分析(pandas)、SQL方式分析、excel分析等。

(1)Pandas分析法:

在这之前想说一下为什么要可视化分析,因为,通过图形人们可以判断出趋势,举个小例子:

单纯的几组数字是看不出什么规律和趋势的,但是如果以矩阵的形式可视化后,大家对下一个点的出现就有趋势的判断了。

我们先了解一下我们的数据内容是什么,分别对两张表的数据导入到pandas中。

然后对各个有意思的字段或者字段组合聚类分析,

ip表:os

port表:port、service、product&product_version、scripts_results(address字段由于是公网数据暂时忽略)

pandas分析方法,多字段之间Group by比较麻烦,所以建议使用SQL分析法。

(2)SQL分析法:

把csv数据导入到postgresql数据库,执行:

SELECT port,count(*) as hit from ports_resultGROUP BY port ORDER BY hit DESC

SELECT service,count(*)as hit from ports_resultGROUP BY serviceORDER BY hit DESC

SELECT product,product_version,count(*) as hit from ports_resultGROUP BY product,product_version ORDER BY hit DESC

SELECT scripts_results,count(*)as hit from ports_resultGROUP BY scripts_resultsORDER BY hit DESC

然后通过正则表达式过滤掉一些无用数据,就可以得到我们想要的数据,那么,通过以上数据的简单的分析,我们对已有的安全经验和竞品数据有更深入的了解数据的本质。

(3)机器学习分析

当然可以用更高级的数据挖掘手段去分析,比如:聚类、分类、回归、降维、时间序列、文本挖掘。首先要确定我们挖掘的目的,是确定我们安全报表的需求,也就是聚类的问题,那么如何实现呢?

在这里我们引入sklearn这个机器学习python库,它为我们选择机器学习算法提供了优化的路径:

我们port表中大约有10000多条数据,根据算法选择可以看出,

1、样本数据>50条,不需要获取更多的数据

2、如果是分类的问题,数据是否标记,对于我们的数据来说是没有的,那就进入clustering象限

3、分类类型是已知还是未知的呢?对于我们的数据当然是未知的,因为我们不知道如何分类,这需要算法告诉我们。

4、那么我们的数据样本>1w条,建议使用Kmeans。

我们需要使用的算法已经确定,下一步就是把数据经过清洗后导入算法库运算。这里要注意几个问题:

1、数据要做预处理,去除掉空值

2、把有意义的string项转化成数字类型,方便机器学习算法处理

多说无用,上代码:

最终机器学习分析的图:

经过对k值的调整,发现分4类是最靠谱的。也就是说,对服务的分析做4类足够,http、https、ssh、rdp。

0×02、功能设计

1、设计目的:

版本规划 设计功能
V1.0 通过端口扫描模块获得内网IP端口资产,资产变更告警,违规告警规则设置 实现内网扫描、外网扫描、行业扫描
V1.1 增加端口资产拓扑图

备注:当前版本只上线V1.0功能。

2、用户场景

用户场景 对应功能
用户通过网络层面了解企业内部网络存在的资产 内网IP资产和端口扫描 (1)对存活主机探测 l 主机扫描范围设置 l 主机扫描结果存储 (2) 对存活主机端口探测 l 对主机扫描端口范围设置 l 端口扫描结果存储 (3)IP端口资产变更告警 l 提供周期性扫描设置 l Email报警 (4) 违规告警规则设置 l 内置数据库对外服务检查报警 (5) report l 操作系统类型分布 l 对外服务类型分布 l web服务器类型分布 l 远程访问服务类型分布
用户通过网络层面了解企业对外网络资产 外网IP资产和端口扫描 (1)对外网存活主机探测 l 主机扫描范围设置 l 主机扫描结果存储 (2) 对外网存活主机端口探测 l 对主机扫描端口范围设置 l 端口扫描结果存储 (3)IP端口资产变更告警 l 提供周期性扫描设置 l Email报警 (4) 违规告警规则设置 l 内置数据库对外读物检查报警 (5) report l操作系统类型分布 l 对外服务类型分布 lWEB服务类型分布 l 远程访问服务类型分布
用户想了解一下自己在所在行业安全指数 对行业IP资产和端口扫描 (1)行业资产录入 (2) 行业报告 操作系统类型分布 web服务类型分布 远程访问服务类型分布

0×03、总结

本节先简单说到这里,后面会详细描述:详细设计、交互设计、前端实现、后端实现、测试联调、安装部署等环节。本节重点讲述的是如果在需求分析阶段加入数据分析,帮助产品人员更好的设计产品。有不足之处还请各位大佬指教。

* 本文原创作者:bt0sea,本文属FreeBuf原创奖励计划,未经许可禁止转载

时间: 2024-08-04 06:48:36

企业安全建设之路:端口扫描(上)的相关文章

【安全牛学习笔记】 端口扫描

端口扫描 ╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋ ┃隐蔽端口扫描                                                    ┃ ┃Syn-----syn/ack-----rst                                         ┃ ┃Scapy                                                           ┃ ┃  sr1(IP(dst="

​【安全牛学习笔记】端口扫描(二)

端口扫描(二) ╋━━━━━━━━━━━━━━━━━╋ ┃端口扫描                          ┃ ┃隐蔽扫描-----syn                  ┃ ┃  不建立完整链接                  ┃ ┃  应用日志不记录扫描行为-----隐蔽 ┃ ┃僵尸扫描                          ┃ ┃  极度隐蔽                        ┃ ┃  实施条件苛刻                    ┃ ┃  可伪

企业安全建设进阶

安全是个"无底洞",没有一个企业的安全负责人会说自己的系统是百分百安全的,安全也不是特别好衡量和量化,尤其是定量地评估出谁比谁做得好.好多少.有时候也会反思,或者说迷茫,"上了那么多防护手段.到底能不能经得起对抗?","安全自研产品做了半年.用了半年.然后有一天它被废弃掉了","SDL喊了好几年了,怎么就运营不下去呢?","业务主动过来寻求支撑,可是我们手里没有核武器."...... 本文将介绍宜信安全建设

中台建设之路(一)

一.概述  我在上一篇文章讲解了什么是中台,今天我就中台怎么建设给大家分享一些我的思考.关于中台的科普见上一篇文章. 二.中台种类及中台与平台的区别  现如今各种中台层出不群,如技术中台.业务中台.数据中台.安全中台.算法中台.移动中台.AI中台.研发中台.组织中台等,我们撇开这些概念,回归到中台的本质,中台的本质是什么,本质是能力复用平台或者企业级能力复用平台,是共性问题与个性问题的分离,在阿里巴巴提出中台概念之前,在IT行业一直有厚平台.薄应用的说法,我认为两者要表达的意思大体是一样的,平台

Python3实现TCP端口扫描

在渗透测试的初步阶段通常我们都需要对攻击目标进行信息搜集,而端口扫描就是信息搜集中至关重要的一个步骤.通过端口扫描我们可以了解到目标主机都开放了哪些服务,甚至能根据服务猜测可能存在某些漏洞. TCP端口扫描一般分为以下几种类型: TCP connect扫描:也称为全连接扫描,这种方式直接连接到目标端口,完成了TCP三次握手的过程,这种方式扫描结果比较准确,但速度比较慢而且可轻易被目标系统检测到. TCP SYN扫描:也称为半开放扫描,这种方式将发送一个SYN包,启动一个TCP会话,并等待目标响应

告别脚本小子【编写端口扫描工具】

前言Windows系统默认开放了很多端口,通常这些端口意味着该主机运行着大家都知道的服务,比如TCP端口21-FTP服务,TCP端口80-HTTP服务,有些服务就有可能存在公开的漏洞,因此可以说主机上每一个开放的端口都可能成为一条入侵的捷径.当然,网上存在很多端口扫描工具,但是我们总不能只知道使用别人的工具,一是这些工具别人编写的时候有没有加入后门,二是如果只会用别人的工具,最终也只能是一个脚本小子,所以我们自己来编写一款实用的端口扫描工具. 一.基础知识 1.1.线程 线程,有时被称为轻量级进

【转】企业网站建设方法论

麦肯锡并不神秘,方法论铸就神奇!这是出现在麦肯锡系列丛书封面上非常醒目的一句广告语.博文标题的想法正来源于此,感谢麦肯锡.今天我们要谈论的主角并非麦肯锡,而是方法论,是建设企业网站的方法论.正如标题说言:网站建设并不神秘,方法论铸就神奇. 1.企业网站需要灵魂 伴随互联网的飞速普及,及相关建站软件的日新月异,现如今建设一个企业网站已相当容易,即使是对技术一窍不通的小白也能依靠智能软件信手拈来,所以说,科技很给力.通过观察不难发现,依靠上述这种简单粗暴方式建设网站的企业不再少数,尤其是中小企业,分

Android NDK学习之第一个实例---端口扫描

为什么要写一个端口扫描的程序,Java来写不是很方便吗?因为我也没有想到什么例子能够方便的来练习.于是想到以前找到的端口扫描的C代码,于是想用他们来练习.扫描服务端端口的方式有许多种,最简单的就是直接去连接该端口,复杂一些的就是看SYN的应答.其他方式就不说了.下面的portScan.c位于jni目录下:(原本可在linux下运行,修改部分代码,使之能够返回结果给Java层的调用.)#include<stdio.h> #include<stdlib.h> #include<j

nmap端口扫描工具使用

(一)Port scan简介 port Scan的方法介绍 port Scan就是一种通过检测对方服务器的开放端口,侦测对方服务器服务的方法.一般可分为主动式和被动式两种. 主动式就是通过向对方服务器的特定端口发送数据包,根据应答来判断,以nmap 为代表. 被动式,不主动发出数据包,而是在网络上长时侦听,分析网上的transaction,来分析,严格的来被动式不应该被称作是端口扫描.以nwatch为代表 (二)优缺点比较  (1)主动式的优点 主动式只要在对方没有把通信阻断的情况下,可以在较短