不论是传统金融行业还是互联网金融行业,公司在安全与运维的目标都是一致的,维稳、业务优先、搞钱.......
但不论作为安全人员还是运维人员,首先要做的是全面了解自己所处的网络架构、资产详情、资产脆弱性、映射等信息,传统的做法是将所有信息一一记录,存放于表单中,自从无纸化推行以来,传统表单逐渐演变成电子表单,但都省却不了人工录入的环节,自动化逐渐成为重点。
Github中的opsmanager风靡一时,靠的就是半自动化与无纸化,但是随着我们统计的信息越来越多,并且云环境的推行使得我们不在重点关注机房信息时,opsmanager也在逐渐向云管理平台靠拢,比较出名的有codo,蓝鲸等。
以上平台在Github中都可以搜索得到,在这里不做具体阐述,有兴趣的可以直接在Github浏览。
不管是什么平台,成熟与否,基础就在于资产收集,传统人工录入的方式已经濒临淘汰,而通过nmap等扫描器制作的资产收集平台又会有很多问题,比如nmap在特定环境中搜索的结果并不准确(阿里云centos6扫描不规则网段时扫描不全面,例如172.31.240.0/20,扫描结果仅有240.1-253,253.1-253无法扫描出来),结果乱码(阿里云centos6扫描时存在结果乱码)附上图,并且扫描的执行速度比较慢。
扫描结果乱码这个是什么原因导致的暂时不清楚,也不知道有没有哪位兄弟遇到过我这个问题,总归一句话:Centos6的bug还是多……

而masscan虽然扫描速度比较快,但是会过度扫描,即结果不准确,偶尔存在漏扫或者多扫的情况。
基于此类问题,为各位安全或运维从业者推荐一款新出的工具TXPortMap
Github: https://github.com/4dogs-cn/TXPortMap
工具采用golang编写,在nmap和masscan中寻找到了一个平衡点,继承了masscan的速度与nmap的准确度,同时摒弃了nmap中的bug(通过实测)
在这里提一下,此工具是成熟的安全团队4dogs(四维创智)开发,后续将持续更新,并推出更多开源产品,有兴趣的可以关注。
在安装的时候淌了不少坑,在这里一一为大家解说,由于官方并没有发出搭建文档,所以为了让各位使用的方便,在这里给出一份三方的搭建避坑文档。
一、搭建
由于工具在Github上,这个时段伟大的长城往往不太稳定,能FQ的FQ在这里不多说,不能FQ的可以通过更换域名的方法进行clone:
git clone https://github.com.cnpmjs.org/4dogs-cn/TXPortMap.git
其实就是镜像站,原理不多做阐述。
二、构建
1、由于整体采用golang语言,在这里首先安装golang环境
centos:yum install -y golang
ubuntu:apt-get install golang
关于centos6 yum源的问题,去年年底官方删除了centos6的yum源强推centos7,这个做法也是比较迷,yum不成功的手动更换yum源为腾讯源即可,本文撰写时阿里源已经不好用了。更换方法自行百度,本文不做阐述。
2、切换到下载目录中,查看build文件

在这里有几个点需要注意:
1.golang在初始化的时候会调用github的mod包,所以如果你运气不太好并且没有FQ,很大概率会卡死在build环节
2.底部用了upx命令,记得yum安装一下
本人就在第一点坑了半个小时,等的很是辛苦,忘记了Github被墙的问题……

意识到这个问题的时候,其实有很多个解决方法,比如FQ。但考虑到适用性,在这里跟大家分享一个golang在构建阶段的小窍门,启用构建代理即可解决这个问题
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io,direct

三、使用
整体构建完毕后,使用的说明其实在Github官方已经有了,在这里简单阐述一下:
1.所有选参
英文解释比较到位,这里不一一阐述了,后面会给出使用案例

2.使用
简单分享一个小案例,使用此工具扫描开始分享的bug段:172.31.240.0/20
#扫描网段
/home/logbak/TXPortMap/release/TxPortMap_linux_x64 -i 172.31.240.0/20 -p 22 -o /home/logbak/TXPortMap/release/rst.txt
#数据分类
awk -F " " '{print $3}' /home/logbak/TXPortMap/release/rst.txt |awk -F: '{print $1}' |awk -F[ '{print $2}'> /home/logbak/ip.txt
此段代码先执行扫描任务,将如下结果存储与rst.txt中

之后做数据分类,仅存储IP到ip.txt中

在这里简单介绍一下linux 的 awk用途,awk是将文件中的内容按照过滤条件拆分内容,并将想要取得的内容展示出来,比如此案例,首先按照空格切分,然后取第三类值,即[ip:port],然后按照冒号切分,取[ip,最后把括号舍弃,保留ip存储到ip.txt中。
此间就完成了工具的使用,从速率上来说,使用nmap执行刨除准确率不说,单执行时间大概在5分钟左右(仅探测240.0/24+253.0/24两者累加的时间),TXPortMap的执行时间为20秒左右(240.0/20全段时间),准确率来说,我的详细资产列表为187台,执行结果为188台(多出来一台,后查证是阿里云的bug,一台服务器没有绑定两块网卡,但是两个私网IP都能跳过去,nmap和masscan都没有扫出来,TXPortMap扫出来了,这个也是为什么我肯推荐的原因之一)。

浙江省杭州市 1F
伊丽莎白同志,记得发一下
浙江省杭州市 2F
你们在搞什么
日本 3F
centos6真是老古董了,赶紧淘汰吧
日本 4F
这个TXPortMap在Win10上跑起来卡不卡?有人实测没
浙江省宁波市 5F
我上周刚用nmap扫阿里云,也漏了一堆IP,原来不是我操作问题啊
陕西省商洛市 6F
20秒扫完/20?这效率可以啊,比我们现用的快多了
湖南省长沙市 7F
工具看着不错,但就怕又是昙花一现,没人维护就废了
上海市松江区 8F
求问扫描结果能导出成json不?方便对接平台吗
浙江省 9F
之前被nmap乱码整到怀疑人生,试下这个看行不行🤔
北京市 10F
TXPortMap真是省事儿,速度杠杠的。
广东省广州市 B1
@ 雷公 我咋觉得masscan漏扫挺频繁的,特别是端口服务识别这块。
湖北省 11F
这个工具在CentOS7上还能直接用吗?
浙江省湖州市 B1
@ 夏音 能,我就在7上装的,步骤一样。
新加坡 12F
我之前也被nmap的乱码搞崩溃,换了别的才好。
河北省保定市清苑县 13F
建议在build时加上 -trimpath,能进一步减小二进制体积。
北京市 14F
听说opsmanager现在都要迁到云平台了,真是时代变了。
美国 15F
masscan漏扫的情况其实不常见,主要是参数设置不当。
北京市 16F
用了TXPortMap后,原来5分钟的nmap扫描直接压缩到20秒,省时省力,强烈推荐!👍
韩国 B1
@ 砚台秋色 直接上手试了,确实比nmap快不少,结果暂时没发现问题。
云南省 17F
整体思路挺清晰。
孟加拉 18F
如果要同时扫描内网和公网,脚本里怎么切换参数比较好?
日本 19F
官方文档太少,真是让人抓狂。
北京市 20F
这个工具对Windows系统支持咋样?有人试过没?
印度 B1
@ 小糖心 没在Windows上试过,看源码是go写的,理论上跨平台,得自己编译。
韩国 21F
哈哈,看到centos6就头疼,终于有替代方案了。
四川省达州市 22F
之前用nmap扫云环境,老有IP漏掉,原来是bug啊。
印度尼西亚 23F
那个yum源的问题真是坑,折腾半天。
辽宁省抚顺市 24F
速度是快,但结果准不准还得长期用用看。
上海市 B1
@ 麒麟童 所以它底层是调masscan还是自己写的发包逻辑?
天津市 25F
有没有更详细的参数说明?比如线程数怎么调。
江苏省淮安市 B1
@ 玄女授书 线程数默认的就行吧,一般不用动,文档里好像没细说。
吉林省通化市 26F
四维创智出的工具质量还行,可以关注一下后续。
陕西省宝鸡市 27F
文章里说的阿里云那个双IP的bug,我之前也遇到过,还以为是自己配置错了。
江苏省常州市武进区 B1
@ 清蒸鲈鱼 阿里云那个双网卡IP的问题我也踩过,查了三天以为中病毒了
山东省潍坊市 28F
这工具对Windows环境支持怎么样?有兄弟试过吗?
浙江省舟山市 29F
之前用nmap扫云服务器也是各种漏IP,原来不全是我的问题。
北京市 30F
四维创智的东西还可以,之前用过他们的其他工具。
菲律宾 31F
文章里那个双IP的bug我也遇到过,当时排查了好久。
江苏省 32F
Github被墙真是永恒的话题,每次搞开源工具都得折腾半天网络。
日本 33F
20秒扫完?这速度有点东西,回头试试看。
孟加拉 34F
新手表示看着有点复杂,有没有更傻瓜式的操作教程?🤔
中国 35F
工具是好,但这类平台太多了,不知道后续维护跟不跟得上。
日本 36F
所以结论就是,nmap和masscan的缝合怪?不过解决了痛点就行。
上海市 37F
那个awk命令解释得很清楚,对新手友好。
甘肃省平凉市 B1
@ 液态月光 awk那块讲得挺细,照着敲一遍就懂了,适合我这种菜鸡
日本 38F
试了下,结果多了一台,还挺准的。
浙江省杭州市 39F
这个工具兼容性咋样,win能用吗?