前提:内网是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端口扫描统计+服务识别简单思路相关推荐

  1. (SVN笔记)https外网IP端口映射内网IP端口访问SVN服务端

    目录 1.前言 2.花生壳优点与相关技术 3.设置SVN服务器 4.外网IP映射内网IP访问SVN Server 5.总结 1.前言         上一章介绍了局域网内https服务端配置与客户端联 ...

  2. (SVN笔记)https内网IP端口配置SVN服务端+内网SVN客户端联合使用

    目录 1.前言 2.SVN服务端设置 3.开始使用SVN (1)新建版本库 (2)迁入项目到SVN服务端 (3)检索项目/拉取项目check out (4)提交代码commit (5)更新代码upda ...

  3. 使用Nmap进行端口扫描和服务识别

    使用Nmap进行端口扫描和服务识别 第1章            Nmap的简介[1] Nmap ("Network Mapper(网络映射器)") 是一款开放源代码的 网络探测和 ...

  4. 【PC工具】更新简单好用绿色IP地址扫描工具,内部网络设备查看工具,内网ip查询ip扫描工具,电脑IP地址查看方法...

    玩路由器.NAS和树莓派的朋友经常需要查看内网设备ip地址.尤其是树莓派,一般情况不用桌面系统,登录SSH时候经常需要知道树莓派的ip地址.登录路由器可以查看到局域网内设备的ip地址,但很多情况下不方 ...

  5. NMap参数抓包分析——主机发现,端口扫描,服务和版本探测

    1. NMap (1)NMap 介绍: NMap(Network Mapper)是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端.确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统 ...

  6. 内网ip如何变成公网ip?快解析转换域名映射外网访问

    内网IP只能在本地内部网络连接访问,当本地搭建服务器部署好相关网站或应用后,在局域网内可以通过内网IP访问,但在外网是无法直接访问异地内网IP端口应用的,只有公网IP才能实现外网访问.但公网IP已经成 ...

  7. 内网ip映射到外网(路由器是tp-link)

    参考:https://service.tp-link.com.cn/detail_article_3403.html 1.ipconfig查看服务器所在的网关,浏览器访问网关ip(eg:192.168 ...

  8. 云服务器的内网IP和公网IP应该怎么理解?有什么用?

    在配置小鸟云服务器的过程中,因为在新手期,遇到一些有关于内网IP和公网IP的问题,包括: 1.内网IP和公网IP是什么? 2.内网IP和公网IP有什么用? 3.可以使用外网IP访问内网服务器吗? 4. ...

  9. ​路由器端口映射怎么设置?内网IP不能映射怎么办?​

    使用路由器后,Internet用户无法访问到局域网内的主机,因此不能访问内网搭建的Web.FTP.Mail等服务器.路由器 端口映射功能可以实现将内网的服务器映射到Internet,从而实现服务器对外 ...

最新文章

  1. 机器视觉_Java机器学习,第2部分
  2. 几百个Android开源个性化控件、工具库、项目、开发工具快快收藏
  3. php应用编程,极客编程必备的五大PHP开发应用_PHP
  4. MyBatis:CRUD功能
  5. iphone 文件保存策略
  6. 去哪儿-13-city-vuex
  7. 二叉树的三种遍历(递归,栈)
  8. ubuntu下定时任务的执行
  9. mysql配置多个磁盘_MySQL多实例配置(两)
  10. SHELL编写NGINX自动部署脚本
  11. Docker时代来临,你的团队准备好了吗?
  12. 【USACO】回文平方数
  13. 程序员做技术管理需要懂哪些方面?
  14. 第六章 类与对象 类的包含
  15. Linux命令--wget
  16. localhost,127.0.0.1,本机IP
  17. 新一代iPhoneSE支持5G,有望搭载A15仿生芯片
  18. 技术选型——混编APP应用概述
  19. 网站服务器安全检查结果表,网站安全检测报告预测(2020年精华篇)
  20. tex 字体斜体设置

热门文章

  1. 解决:Invalid character found in method name. HTTP method names must be tokens
  2. Spi通信,写操作时,发送缓冲区非空停留在while里面。arm a5与w5500芯片udp网络通信。网络调试助手界面及sscom无法点击
  3. 5个需要避免的CSS错误
  4. WM8960调试记录
  5. 集社预付费系统微信公众号介绍(用户入口)
  6. 如何使用windows的计划任务?计划任务
  7. 01《JAVA从零到壹》第一讲:Java编程基础(文末有课后作业)
  8. MATLAB处理图像时出错:错误使用 rgb2gray>parse_inputs (line 80)MAP 必须为 m x 3 的数组。
  9. java技术--SpringCloud:消息总线Bus简介及代码实现(18)
  10. Google guava 事件总线 EventBus 进程内消息队列