NMAP的高级使用技巧
NMAP概述
nmap是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取那台主机正在运行及提供什么服务等信息。nmap支持很多扫描技术,例如:UDP、TCP connect()、TCP SYN(半开扫描)、ftp代理(bounce攻击)、反向标志、ICMP、FIN、ACK扫描、圣诞树(Xmas Tree)、SYN扫描和null扫描。还可以探测操作系统类型。
nmap可用于:
1.检测活在网络上的主机(主机发现)
2.检测主机上开放的端口(端口发现或枚举)
3.检测到相应的端口(服务发现)的软件和版本
4.检测操作系统,硬件地址,以及软件版本
检测脆弱性的漏洞(Nmap的脚本)
NMAP端口状态解析
端口扫描时Nmap最基本最核心的功能,用于确定目标主机的TCP/UDP端口的开发情况。
open:应用程序在该端口接收TCP连接或者UDP报文。
closed:关闭的端口对于nmap也是可访问的,它接收nmap探测报文并作出相应。但没有应用程序在其上监听。
filterrd:由于包过滤阻止探测报文到达端口,nmap无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由规则或者主机上的软件防火墙。
unfiltered:未被过滤状态意味着端口可访问,但是nmap无法确定它时开放的还是关闭的。只有用于映射防火墙规则集的ACK扫描才会把端口分类到这个状态。
open | filtered:无法确定端口时开放还是被过滤,开放的端口不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃了探测报文或者它引发的任何反应。UDP,IP协议,FIN,Null等扫描会引起。
closed | filtered:无法确定端口是关闭的还是被过滤的。
NMAP语法及实例
nmap 192.168.1.6 常规扫描
nmap 192.168.1.6 -v -v表示显示冗余信息,在扫描过程中显示扫描的细节,从而让用户了解当前的扫描状态。
nmap 192.168.1.6 -p 1-65535 -p指定端口扫描
nmap -sS -O 192.168.1.2 -O:显示出操作系统的类型。 -sS:半开扫描(half-open)
nmap -sS -O 192.168.1.0/24 扫描网段内所有主机操作系统信息
nmap -p 80 192.168.1.0/24 扫描网段中开启80端口的主机
如何更隐蔽的去扫描,频繁扫描会被屏蔽或者锁定IP地址。
--randomize_hosts 随机扫描,对目标主机的顺序随即划分。
--scan-delay 延时扫描,单位秒,调整探针之间的延迟。
语句中可以使用*通配符。
DNMAP分布式集群执行大量扫描任务
dnmap是一个用python写的进行分布式扫描的nmap扫描框架,我们可以用dnmap来通过多台机器发起一个大规模的扫描,dnmap采用C/S结构,执行大量扫描任务时非常便捷,扫描结果可以统一管理。
用户在服务器端设定好nmap执行的命令,dnmap会自动的分配给客户端进行扫描,并将扫描结果提交给服务器。
dnmap有两个可执行文件,分别是dnmap_client和dnmap_server。在进行一个分布式nmap扫描之前,我们可以用dnmap_server来生成一个dnmap的服务端,然后在其它机器用dnmap_client进行连接。然后就能进行分布式的nmap扫描了。
DNmap requires Nmap, Python 2.7, and the following libraries to be installed:DNmap需要安装Nmap, Python2.7以及两个第三方库:
- python-twisted
- python-openssl
apt-get install python3-openssl python3-twisted
wget http://downloads.sourceforge.net/project/dnmap/dnmap_v0.6.tgz
生成证书文件
因为dnmap自带的用于TLS的pem文件证书太过久远,必须要重新生成一个pem证书客户端和服务器才能正常连接
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out server.pem
将生成的私钥追加到server.pem证书后面。cat key.pem >> server.pem
创建NMAP命令文件
将扫描的命令添加到一个文件中即可,每行一条命令。
启动DNMAP集群
使用dnmap_server启动dnmap的服务端
-f 跟一个待执行的nmap命令的文件
-p 跟一个用于TLS连接的pem文件,默认是使用随服务器提供的server.pem
服务端:python dnmap_server.py -f nmap.txt -p server.pem
客户端:python dnmap_client.py -s 192.168.1.5 -p,dnmap服务端口号,默认是46001
参考:
分布式框架-dnmap - 沫子博客 - OSCHINA - 中文开源技术交流社区
NESSUS漏洞检测
systemctl start nessusd 启动nessus