Python基础之Python-nmap模块
一:nmap
Nmap 是一款网络扫描和主机侦测的非常有用的工具。合理使用,不仅可以用来信息收集和枚举,同时也可以用来作为一个漏洞探测器或安全扫描器。另外 Nmap 还跨平台,适用于 Windows、Linux 和 Macintosh 等主流操作系统,功能强大,乃居家旅行之必备良品。
总的来说,Nmap 具有四大功能。
- 主机发现
- 端口扫描
- 服务版本侦测
- 操作系统侦测
这四大应用乃 Nmap 之精髓,同时它们之间具有逻辑上的顺序关系。首先进行主机判断,发现在指定信道上存活的主机,然后对这些存活的主机进行端口扫描,接着记录这些运行服务的版本号,最后针对不同操作系统我们还可以有不同的具体应对方案,顺手便把对方的操作系统给侦测了。
在这四大基本应用之上,Nmap 还有一些用来规避、绕过防火墙的组合技巧。最后本文将介绍 Nmap 的一个强大的应用模块,名曰 Nmap 脚本引擎(Nmap Script Engine),简称 NSE。在本文中,我们将学习使用 NSE 来干一些本来看起来繁琐的事情,也就是说实现了自动化。
本文实验系统环境为Ubuntu16.04,默认没有安装nmap工具
apt install nmap -y
临时关闭ping(别人无法ping),但使用nmap同样可进行探测,因为nmap不会像ping命令一样发送echo包
echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all
nmap扫描原理示意图:
二:基本扫描策略
2.1 无任何附加参数
nmap 172.17.2.82
分情况:如果是超级用户,无参数扫描等价于 sS 参数扫描(SYN,半连接);否则,无参数扫描等价于 sT 参数扫描(TCP,完整连接)。
2.2 冗余
nmap -vv 172.17.2.82
按照基本法,v 参数通常表示冗余。我们使用两个 v 参数表示将侦测过程原原本本的打印输出出来。
2.3 指定端口号
nmap -p22 172.17.2.222
这里 p 参数表示端口,标准写法后面跟的端口号之间没有空格。但是如果写一个空格也并无妨。
2.4 操作系统侦测
nmap -O 172.17.2.222
nmap -A 172.17.2.222
操作系统侦测有两个参数选项,其一是参数 O,其二是参数 A,后者乃前者的冗余版本。更多的使用 A 参数,以得到更多的信息。
2.5 只进行主机发现
root@docker:~# nmap -sn 172.17.2.222
Starting Nmap 7.01 ( https://nmap.org ) at 2020-03-30 16:02 CST
Nmap scan report for