nmap与masscan端口扫描实战教程

需积分: 0 0 下载量 10 浏览量 更新于2024-08-03 收藏 10KB MD 举报
"nmap与masscan的简单使用" 在网络安全和渗透测试领域,信息收集是至关重要的第一步。在这个过程中,工具如nmap和masscan扮演了关键角色。nmap是一款功能强大的网络探测和安全审计工具,而masscan则是一个快速的端口扫描器。在这篇文章中,我们将探讨这两个工具的基本使用方法。 **nmap** nmap,全称Network Mapper,主要用于发现网络上的主机和服务。它的主要功能包括主机发现、端口扫描、服务识别和服务版本探测等。以下是一些nmap的基础命令: 1. **基础扫描**:`nmap 目标IP` - 这是最基本的扫描,检查目标主机是否在线。 2. **详细扫描**:`nmap -vv 目标IP` - 增加 `-vv` 参数可以获取更详尽的扫描输出。 3. **指定端口范围**:`nmap -p (range) 目标IP` - 如 `nmap -p 1-200 目标IP` 扫描1到200号端口。 4. **扫描特定端口**:`nmap -p 端口号,端口号 目标IP` - 例如 `nmap -p 445,3389,80,21 目标IP` 扫描指定的端口。 5. **扫描多个主机**:`nmap -p 端口号 目标IP,目标IP` - 可以同时扫描多个IP地址。 **masscan** masscan是另一种快速的端口扫描工具,它能以极高的速度扫描大量IP地址的指定端口。与nmap相比,masscan更专注于速度而非全面性。以下是一些masscan的用法: - **基础扫描**:masscan默认扫描TCP端口,可以指定IP范围和端口范围。 - **扫描其他协议**:如果需要扫描UDP或其他协议的端口,需要使用特定参数进行设置。 - **注意**:masscan的大规模扫描可能会对网络造成较大负载,因此在使用时需谨慎。 **实验环境** 实验在两台Kali Linux(扫描机)和两台Windows 11(靶机)上进行,分别使用nmap和masscan进行扫描操作。 **应用场景** 在实际网络环境中,nmap和masscan可以用于多种场景,如: - **网络安全审计**:定期扫描内部网络,检测未授权的服务或暴露的端口。 - **漏洞评估**:在新漏洞披露后,快速扫描网络以确定受影响的系统。 - **入侵检测**:监控网络流量,识别异常的扫描活动。 - **渗透测试**:在测试阶段,识别目标系统的开放服务以便进一步攻击。 了解并熟练掌握nmap和masscan的使用,对于网络安全专业人士来说至关重要,它们可以帮助我们有效地发现网络中的潜在风险和脆弱点。然而,必须强调的是,任何未经授权的扫描都可能违反法律,因此在实际操作中务必遵循合法和道德的原则。

import re import os import json masscan_path = "D:/0.脚本小子/Tools/masscan/masscan.exe" masscan_parser_path = "../Tools/Masscan-to-CSV/masscan_xml_parser.py" nmap_parser_path = "../Tools/Nmap-Scan-to-CSV/nmap_xml_parser.py" port_list_path = "./dict/ports-http-iamthefrogy.txt" port_list_fp = open(port_list_path, "r") port_list = port_list_fp.readline().strip() port_list_fp.close() # 判断IP是否符合规范 def check_ip(data): ip_pattern = re.compile(r'((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0 - 5] | [0 - 4]\d)) | [0 - 1]?\d{1, 2})){3}') result = ip_pattern.match(data) if result is None: return None else: return result.group(0) def filter_ip(): ip_filepath = "./result/ip.txt" # IP数据保存路径 ip_fp = open(ip_filepath, 'r') ip_list = ip_fp.readlines() ip_fp.close() ip_fp = open(ip_filepath, 'w') for ip in ip_list: ip = check_ip(ip) if ip is not None: ip_fp.write(ip + '\n') ip_fp.close() # NMap: csv -> json,提取IP和端口的映射 def read_nmap(data_name): ip2port = {} for item in open("./result/nmap/" + data_name + '.csv'): if item.count(',') > 5: ip = item.strip().split(',')[0] port = item.strip().split(',')[4] if ip != "IP": if ip in ip2port.keys(): ip2port[ip].append(port) else: ip2port[ip] = [port] with open("./result/nmap/" + data_name + '.json', "w") as json_fp: json.dump(ip2port, json_fp) # 执行nmap命令将数据保存为xml与csv格式 def nmap(save_name, need_scan=True): if need_scan: cmd = "nmap -Pn -p {} -oX {} -iL {}".format(port_list, "./result/nmap/" + save_name + ".xml", "./result/ip.txt") os.system(cmd) cmd = "python3 {} -f {} -csv {}".format( nmap_parser_path, "./result/nmap/" + save_name + ".xml", "./result/nmap/" + save_name + ".csv" ) os.system(cmd) read_nmap(save_name) # Masscan: csv -> json,提取IP和端口的映射 def read_masscan(data_name): ip2port = {} for item in open("./result/masscan/" + data_name + '.csv'): if item.count(',') > 5: ip = item.strip().split(',')[0] port = item.strip().split(',')[3] if ip != "IpAddr": if ip in ip2port.keys(): ip2port[ip].append(port) else: ip2port[ip] = [port] with open("./result/masscan/" + data_name + '.json', "w") as json_fp: json.dump(ip2port, json_fp) # 执行masscan命令将数据保存为xml与csv格式 def masscan(save_name, need_scan=True): if need_scan: cmd = "{} -iL {} -Pn -p {} -oX {}".format( masscan_path, "./result/ip.txt", port_list, "./result/masscan/" + save_name + ".xml" ) os.system(cmd) cmd = "python3 {} -f {} -csv {}".format( masscan_parser_path, "./result/masscan/" + save_name + ".xml", "./result/masscan/" + save_name + ".csv" ) os.system(cmd) read_masscan(save_name) # 端口探测主函数 def search_port(conf, filename): filter_ip() if conf['use_nmap']: nmap(filename) if conf['use_masscan']: masscan(filename) if __name__ == '__main__': filter_ip() fp = open("./config.json", "r", encoding="utf-8") conf_json = json.load(fp) config = conf_json['ports'] search_port(config, '2023_1_8')

2023-02-07 上传