内网IP端口扫描统计+服务识别简单思路
前提:内网是10网段的,几乎所有机器都开了80和22端口,所以以此为依据认为扫描到的都是在线的IP。
目标是得到在线的IP启动了哪些端口,尽量猜测端口对应的服务。
- Centos7 (macos用brew直接安装就行)
- Nmap 6.47
- Masscan 1.0.4
- Python 2.7.x
centos7
sudo yum install nmap## masscan 需要编译安装了
sudo yum install git gcc make libpcap-devel
git clone https://github.com/robertdavidgraham/masscan
cd masscan/
make
sudo make install
macos
brew install masscan
brew install nmap
使用方法
sudo masscan -p22,80 10.0.0.0/8 --rate=15000 -oL ips.txt
cat ips.txt|grep -v '#'|awk '{print $4}'|sort| uniq > avaips.txt
sudo python explore.py avaips.txt
说明:
- 首先用masscan扫描所有开放22,80端口的ip,盲扫为主
- 然后用awk统计所有ip
- 接着对每个IP 1~30000 tcp端口扫描,找出来存活的端口,在用 Nmap做服务识别
explore.py
# coding:utf-8
import os
import sys
import subprocessscan = 'sudo masscan -p1-30000 {0} --rate 15000 -oL tmp.txt'
nmap_scan = 'nmap --version-all {0} -p{1}'def run_command(cmd):"""given shell command, returns communication tuple of stdout and stderr"""sp = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)sp.wait()return sp.communicate()def clear_tmp(filename):try:os.remove(filename) except:passdef ip_scan(filename):with open(filename) as f:for line in f:ip = line.strip()run_command(scan.format(ip))ports_scan(ip)def ports_scan(ip):ports = []with open('tmp.txt') as ff:for item in ff:if item.startswith('#'):continue sel = item.strip().split()ports.append(sel[2])if len(ports) == 0:returnstdout, stderr = run_command(nmap_scan.format(ip, ','.join(ports)))if stderr != "":print 'error', stderrreturn ress = stdout.split('\n')flag = Falsewith open('res.txt', 'a+') as f:f.write('ip: ' + ip + '\n')for r in ress:if r.startswith('PORT'):flag = Truecontinueif flag and len(r) > 3 and r.find('open') > 0:port, _, service = r.split()f.write('- {0} {1}\n'.format(port, service))if __name__ == "__main__":args = sys.argv if len(args) < 2:print 'Usage: %s ip_list_file.txt' % args[0]sys.exit(1) clear_tmp('red.txt')ip_scan(args[1]) clear_tmp('tmp.txt')
整个过程比较慢,可以优化的地方,使用多进程,pipeline等。
得到的结果像下面的样子
ip: 10.0.10.12
- 22/tcp ssh
- 18089/tcp unknown
- 19088/tcp unknown
- 19088/tcp unknown
- 19089/tcp unknown
ip: 10.0.10.1
- 22/tcp ssh
- 23/tcp telnet
ip: 10.0.10.12
- 22/tcp ssh
- 18089/tcp unknown
- 19088/tcp unknown
- 19089/tcp unknown
...
python调用的命令
扫描某个ip开放的tcp端口
sudo masscan -p1-30000 10.0.10.44 --rate 15000
服务识别,很多识别不出来,这部分也可以自己写,不过要搜集很多服务指纹,没找到很好的替代品
nmap --version-all 10.101.1.249 -p80,22,3456,10050
主要提供一个思路,可以根据需要修改和优化。
内网IP端口扫描统计+服务识别简单思路相关推荐
- (SVN笔记)https外网IP端口映射内网IP端口访问SVN服务端
目录 1.前言 2.花生壳优点与相关技术 3.设置SVN服务器 4.外网IP映射内网IP访问SVN Server 5.总结 1.前言 上一章介绍了局域网内https服务端配置与客户端联 ...
- (SVN笔记)https内网IP端口配置SVN服务端+内网SVN客户端联合使用
目录 1.前言 2.SVN服务端设置 3.开始使用SVN (1)新建版本库 (2)迁入项目到SVN服务端 (3)检索项目/拉取项目check out (4)提交代码commit (5)更新代码upda ...
- 使用Nmap进行端口扫描和服务识别
使用Nmap进行端口扫描和服务识别 第1章 Nmap的简介[1] Nmap ("Network Mapper(网络映射器)") 是一款开放源代码的 网络探测和 ...
- 【PC工具】更新简单好用绿色IP地址扫描工具,内部网络设备查看工具,内网ip查询ip扫描工具,电脑IP地址查看方法...
玩路由器.NAS和树莓派的朋友经常需要查看内网设备ip地址.尤其是树莓派,一般情况不用桌面系统,登录SSH时候经常需要知道树莓派的ip地址.登录路由器可以查看到局域网内设备的ip地址,但很多情况下不方 ...
- NMap参数抓包分析——主机发现,端口扫描,服务和版本探测
1. NMap (1)NMap 介绍: NMap(Network Mapper)是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端.确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统 ...
- 内网ip如何变成公网ip?快解析转换域名映射外网访问
内网IP只能在本地内部网络连接访问,当本地搭建服务器部署好相关网站或应用后,在局域网内可以通过内网IP访问,但在外网是无法直接访问异地内网IP端口应用的,只有公网IP才能实现外网访问.但公网IP已经成 ...
- 内网ip映射到外网(路由器是tp-link)
参考:https://service.tp-link.com.cn/detail_article_3403.html 1.ipconfig查看服务器所在的网关,浏览器访问网关ip(eg:192.168 ...
- 云服务器的内网IP和公网IP应该怎么理解?有什么用?
在配置小鸟云服务器的过程中,因为在新手期,遇到一些有关于内网IP和公网IP的问题,包括: 1.内网IP和公网IP是什么? 2.内网IP和公网IP有什么用? 3.可以使用外网IP访问内网服务器吗? 4. ...
- 路由器端口映射怎么设置?内网IP不能映射怎么办?
使用路由器后,Internet用户无法访问到局域网内的主机,因此不能访问内网搭建的Web.FTP.Mail等服务器.路由器 端口映射功能可以实现将内网的服务器映射到Internet,从而实现服务器对外 ...
最新文章
- 机器视觉_Java机器学习,第2部分
- 几百个Android开源个性化控件、工具库、项目、开发工具快快收藏
- php应用编程,极客编程必备的五大PHP开发应用_PHP
- MyBatis:CRUD功能
- iphone 文件保存策略
- 去哪儿-13-city-vuex
- 二叉树的三种遍历(递归,栈)
- ubuntu下定时任务的执行
- mysql配置多个磁盘_MySQL多实例配置(两)
- SHELL编写NGINX自动部署脚本
- Docker时代来临,你的团队准备好了吗?
- 【USACO】回文平方数
- 程序员做技术管理需要懂哪些方面?
- 第六章 类与对象 类的包含
- Linux命令--wget
- localhost,127.0.0.1,本机IP
- 新一代iPhoneSE支持5G,有望搭载A15仿生芯片
- 技术选型——混编APP应用概述
- 网站服务器安全检查结果表,网站安全检测报告预测(2020年精华篇)
- tex 字体斜体设置
热门文章
- 解决:Invalid character found in method name. HTTP method names must be tokens
- Spi通信,写操作时,发送缓冲区非空停留在while里面。arm a5与w5500芯片udp网络通信。网络调试助手界面及sscom无法点击
- 5个需要避免的CSS错误
- WM8960调试记录
- 集社预付费系统微信公众号介绍(用户入口)
- 如何使用windows的计划任务?计划任务
- 01《JAVA从零到壹》第一讲:Java编程基础(文末有课后作业)
- MATLAB处理图像时出错:错误使用 rgb2gray>parse_inputs (line 80)MAP 必须为 m x 3 的数组。
- java技术--SpringCloud:消息总线Bus简介及代码实现(18)
- Google guava 事件总线 EventBus 进程内消息队列