内网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 subprocess

scan = '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:
        pass

def 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:
            return

        stdout, stderr = run_command(nmap_scan.format(ip, ','.join(ports)))
        if stderr != "":
            print 'error', stderr
            return 
        ress = stdout.split('\n')
        flag = False

        with open('res.txt', 'a+') as f:
            f.write('ip: ' + ip + '\n')
            for r in ress:
                if r.startswith('PORT'):
                    flag = True
                    continue
                if 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

主要提供一个思路,可以根据需要修改和优化。

### 回答1: 内网IP扫描工具是一种用于扫描识别内部网络中各个设备的工具。通常情况下,内网中的设备会被分配一个内部IP地址,以便在同一网络中进行通信。 CSDN(CSDN Internal IP Scanner)是一款功能强大的内网IP扫描工具,主要用于网络管理员或渗透测试人员进行内部网络安全评估和漏洞扫描。CSDN具有以下特点和功能: 1. 网段扫描:CSDN能够通过设置起始和结束的IP地址,扫描指定网络范围内的全部设备。管理员可以自定义扫描IP范围,包括局域网中的所有主机。 2. 设备识别:CSDN能够探测并识别网络中的各类设备,如计算机、服务器、打印机、路由器等。它能够提供设备的基本信息,如IP地址、MAC地址、设备类型等,以便网络管理员了解网络拓扑结构。 3. 漏洞扫描:CSDN集成了多种漏洞扫描模块,能够自动检测和识别网络中存在的漏洞。它会对设备进行全面的扫描,包括开放端口、漏洞程序、弱口令等,以便管理员及时发现和修复潜在的安全威胁。 4. 安全提醒:CSDN提供实时的报告和告警机制,及时向管理员提供网络中发现的漏洞和安全隐患。管理员可以通过邮件、短信等方式接收到相关的警报,以便及时采取措施避免被攻击。 总而言之,CSDN是一款功能强大的内网IP扫描工具,能够帮助网络管理员或渗透测试人员全面了解内部网络的安全情况,并及时发现和修复潜在的漏洞和威胁。 ### 回答2: 内网IP扫描工具是一种用于扫描识别内网中的设备的软件工具。它通过发送探测包到指定IP地址范围内的主机,并分析主机的响应来确定目标主机是否可用、开放的端口及其对应的服务等信息。 内网IP扫描工具通常被用于网络管理、安全审计等场景中。它能够帮助管理员发现内网中的未经授权的设备,识别潜在的安全风险,及时采取措施加强网络安全。同时,它也可以用于设备管理,帮助管理员跟踪控制内网设备的信息和状态。 常见的内网IP扫描工具有Nmap、Angry IP Scanner、OpenVAS等。这些工具通常提供了丰富的功能和高度可定制化的选项,使得管理员能够根据自身需求进行扫描操作。比如可以选择扫描目标的IP地址范围,指定探测包的类型和参数,设置扫描的时间间隔等。 然而,需要注意的是,内网IP扫描工具在使用时需遵循法律法规和道德规范,不能违反他人的隐私权和网络安全。因此,在使用这些工具时必须取得合法的授权,并且严格遵守相关的规定和约束。此外,随着网络安全形势的不断变化,内网IP扫描工具的功能和性能也不断更新和改进,因此,使用者需要持续关注新版本和安全补丁,以保持工具的有效性和安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值