Python+Go实现端口扫描方案!

本文讲述了针对公司内网安全风险,采用Python和Go语言结合实现端口扫描方案的过程。通过用户输入目标处理、目标存活探测(使用ICMP ping)、Go脚本快速探测、nmap指纹识别以及针对特定服务的web service探测,实现全端口扫描与服务识别。在测试中,扫描速度稳定在40秒内,但部分IP扫描速度较慢,仍有优化空间。
摘要由CSDN通过智能技术生成

近期由于公司存在环境整改/迭代以及历史弱口令等状况,运维同事将内网测试环境的一些SSH等敏感端口对外,导致被挖矿团伙利用进行挖矿,虽然生产环境存在物理隔离,但仍存在极大安全风险,对此需要对所有域名/IP进行对外开放端口监控。

0x01 确定方案

通过网上调研,发现滴滴安全应急响应中心发过一个相关的文章

需求基本一致,使用了下文章中提到的代码进行测试,可能我环境/带宽/目标等多种因素,导致测试之后发现效果并不理想,扫描速度慢且有时不稳定。

经过github、sourceforge、stackoverflow等一番搜索及疯狂复制粘贴,完成了个勉强算的上的成品。

代码逻辑如下:

1.1 用户输入目标处理

#单独IP/HOST
ip: 127.0.0.1
ip_list: 127.0.0.1

#CIDR
ip: 127.0.0
ip_list: 127.0.0.1, 127.0.0.2, 127.0.0.3 ... 127.0.0.254

#IP访问
ip: 127.0.0.1-127.0.0.20
ip_list: 127.0.0.1, 127.0.0.2, 127.0.0.3 ... 127.0.0.20

#文件
ip: ip.txt
ip_list: Same as above

1.2 目标存活探测

使用ICMP协议进行ping检测,使用的第三方库pyping(该库不支持python3,若要用py3需要自己转换下)

1.3 Go脚本探测

编译 port_scan.go

go build -buildmode=c-shared -o portscan.so portscan.go

探测结果返回:

# 单个端口
94.191.42.58:22
# 多个端口
94.191.42.58:22, 9099

1.4 nmap指纹识别

根据go探测结果进行解析,分别使用nmap库进行服务识别

pip install python-nmap

返回结果:

127.0.0.1:22/ssh
127.0.0.1:9999:unknown
...

1.5 web

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值