NMAP 高级使用技巧和漏洞扫描发现
*****免责声明*****
此处介绍的技术仅作为研究,学习,交流用,严禁任何个人,机构,公司,组织,团体使用这里公布的技术对任何类似上述的第三方实体进行未经授权,非法的渗透测试与攻击入侵,同时本博文作者不承担由此造成目标的任何(包括但不限于)经济损失,用户数据丢失或泄漏,业务亏损等后果产生的相应法律责任
NMAP 高级使用技巧
NMAP 概述
nmap 是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取
那台主机正在运行以及提供什么服务等信息。nmap 支持很多扫描技术,例如:UDP、TCP connect()、
TCP SYN(半开扫描)、ftp 代理(bounce 攻击)、反向标志、ICMP、FIN、ACK 扫描、圣诞树(Xmas Tree)、
SYN 扫描和 null 扫描。还可以探测操作系统类型。
nmap 可用于:
◼ 检测活在网络上的主机(主机发现)
◼ 检测主机上开放的端口(端口发现或枚举)
◼ 检测到相应的端口(服务发现)的软件和版本
◼ 检测操作系统,硬件地址,以及软件版本
◼ 检测脆弱性的漏洞(Nmap 的脚本)
NMAP 端口状态解析
open : 应用程序在该端口接收 TCP 连接或者 UDP 报文。
closed :关闭的端口对于 nmap 也是可访问的, 它接收 nmap 探测报文并作出响应。但没有应用程序在其上监听。
filtered :由于包过滤阻止探测报文到达端口,nmap 无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由规则 或者主机上的软件防火墙。
unfiltered :未被过滤状态意味着端口可访问,但是 nmap 无法确定它是开放还是关闭。 只有用于映射防火墙规则集的 ACK 扫描才会把端口分类到这个状态。
open | filtered :无法确定端口是开放还是被过滤, 开放的端口不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃了探测报文或者它引发的任何反应。UDP,IP 协议,FIN, Null 等扫描会引起。
closed | filtered:(关闭或者被过滤的):无法确定端口是关闭的还是被过滤的
NMAP 语法及示例
语法:nmap [Scan Type(s)] [Options]
- 使用 nmap 扫描一台服务器
nmap 192.168.1.63
Starting Nmap 5.21 ( http://nmap.org ) at 2015-08-16 20:38 CST Nmap scan report for xuegod63.cn (192.168.1.63) Host is up (0.000029s latency). Not shown: 998 closed ports PORT STATE SERVICE 22/tcp open ssh 111/tcp open rpcbind
- 扫描一台机器,查看它打开的端口及详细信息。
nmap -v 192.168.1.63 #查看以下相关信息。
Starting Nmap 6.40 ( http://nmap.org ) at 2018-12-12 10:07 CST Initiating ARP Ping Scan at 10:07 Scanning 192.168.1.63 [1 port] Completed ARP Ping Scan at 10:07, 0.01s elapsed (1 total hosts) Initiating Parallel DNS resolution of 1 host. at 10:07 Completed Parallel DNS resolution of 1 host. at 10:07, 0.04s elapsed Initiating SYN Stealth Scan at 10:07 Scanning 192.168.1.63 [1000 ports] Discovered open port 111/tcp on 192.168.1.63 Discovered open port 22/tcp on 192.168.1.63 Completed SYN Stealth Scan at 10:07, 0.05s elapsed (1000 total ports) Nmap scan report for 192.168.1.63 Host is up (0.00025s latency). Not shown: 998 closed ports PORT STATE SERVICE 22/tcp open ssh 111/tcp open rpcbind MAC Address: 00:0C:29:F0:FC:4F (VMware)
-
扫描一个范围: 端口 1-65535
- 注:生产环境下,我们只需要开启正在提供服务的端口,其他端口都关闭。关闭不需要开的服务有两种方法:
情景 1:你认识这个服务,直接关服务
systemctl stop rpcbind
情景 2:不认识这个服务,查看哪个进程使用了这个端口并找出进程的路径,然后 kill 进程,删除文件,接下来以 22 端口为例,操作思路如下:
lsof -i :22 #查看 22 端口正在被哪个进程使用 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 1089 root 3u IPv4 21779 0t0 TCP *:ssh (LISTEN)
通过 ps 命令查找对应的进程文件:
ps -axu | grep 1089 root 1089 0.0 0.1 105996 3744 ? Ss 10:52 0:00 /usr/sbin/sshd -D
注:看到进程的文件的路径是/usr/sbin/sshd 。如果没有看到此命令的具体执行路径,说明此木马进程可以在 bash 终端下直接执行,通过 which 和 rpm -qf 来查看命令的来源,如下:
which vim /usr/bin/vim
解决:
kill -9 1781
总结:这个思路主要用于找出黑客监听的后门端口和木马存放的路径。
-
扫描一台机器:查看此服务器开放的端口号和操作系统类型。
-
nmap -sS -O www.xuegod.cn
Not shown: 996 filtered ports PORT STATE SERVICE 21/tcp open ftp 80/tcp open http 443/tcp closed https 3306/tcp open mysql Aggressive OS guesses: Linux 2.6.28 (93%), Linux 2.6.9 - 2.6.27 (93%), Riverbed Steelhead 200 proxy server (93%), Linux 2.6.9 (93%), Linux 2.6.30 (92%), Linux 2.6.9 (CentOS 4.4) (92%), Linux 2.6.11 (90%), Linux 2.6.18 (CentOS 5.1, x86) (89%), FreeBSD 6.2-RELEASE (89%), Linux 2.6.18 (89%) No exact OS matches for host (test conditions non-ideal).
-
参数说明:
-
-O: 显示出操作系统的类型。 每一种操作系统都有一个指纹。-sS:半开扫描(half-open)
-
TCP 同步扫描(TCP SYN):因为不必全部打开一个 TCP 连接,所以这项技术通常称为半开扫描(half-open)。你可以发出一个 TCP 同步包(SYN),然后等待回应。如果对方返回 SYN|ACK(响应)包就表示目标端口正在监听;如果返回 RST 数据包,就表示目标端口没有监听程序;如果收到一个 SYN|ACK 包,源主机就会马上发出一个 RST(复位)数据包断开和目标主机的连接,这实际上由我们的操作系统内核自动完成的。
-
-
-
-
扫描一个网段中所有机器是什么类型的操作系统。
-
nmap -sS -O 192.168.1.0/24
-
-
查找一些有特点的 IP 地址中,开启 80 端口的服务器。
-
nmap -v -p 80 192.168.1.62-67
-
-
如何更隐藏的去扫描,频繁扫描会被屏蔽或者锁定 IP 地址。
- 如何更隐藏的去扫描,频繁扫描会被屏蔽或者锁定 IP 地址。
--randomize_hosts # 随机扫描,对目标主机的顺序随机划分 --scan-delay #延时扫描,单位秒,调整探针之间的延迟
- 随机扫描
nmap -v --randomize-hosts -p 80 192.168.1.62-69
Nmap scan report for 192.168.1.69 [host down] Nmap scan report for 192.168.1.68 [host down] Nmap scan report for 192.168.1.67 [host down] Nmap scan report for 192.168.1.65 [host down] Nmap scan report for 192.168.1.66 [host down]
- 随机扫描+延时扫描 ,默认单位秒
nmap -v --randomize-hosts --scan-delay 3000ms -p 80 192.168.1.62-69
- 如何更隐藏的去扫描,频繁扫描会被屏蔽或者锁定 IP 地址。
- 使用通配符指定 IP 地址
nmap -v --randomize-hosts --scan-delay 30 -p 80 1.*.2.3-8
DNMAP 分布式集群执行大量扫描任务
DNMAP 集群简介
dnmap 是一个用 python 写的进行分布式扫描的 nmap 扫描框架,我们可以用 dnmap 来通过多个台机器发起一个大规模的扫描,dnmap 采用 C/S 结构,执行大量扫描任务时非常便捷,扫描结果可以统一管理。
实验场景:使用 4 台位于不同区域的 kali 服务器对 A 类网段时行扫描。
用户在服务器端设定好 nmap 执行的命令,dnmap 会自动的分配给客户端进行扫描,并将扫描结果提交给服务器。dnmap 有两个可执行文件,分别是 dnmap_client 和 dnmap_server。在进行一个分布式 nmap扫描之前,我们可以用 dnmap_server 来生成一个 dnmap 的服务端,然后在其他机器用 dnmap_client进行连接。然后就能进行分布式的 nmap 扫描了。
NESSUS 漏洞检测
NESSUS 简介
1998 年,Nessus 的创办人 Renaud Deraison 展开了一项名为"Nessus"的计划,其计划目的是希望能为互联网社群提供一个免费、威力强大、更新频繁并简易使用的远端系统安全扫描程式。2002 年时,Renaud 与 Ron Gula, Jack Huffard 创办了一个名为 Tenable Network Security 机构。在第三版的Nessus 释出之时,该机构收回了Nessus的版权与程式源代码(原本为开放源代码),并注册了nessus.org成为该机构的网站。目前此机构位于美国马里兰州的哥伦比亚。