写点什么

网络安全 kali 渗透学习 web 渗透入门 NMAP 高级使用技巧和漏洞扫描

作者:学神来啦
  • 2022 年 2 月 18 日
  • 本文字数:4786 字

    阅读完需:约 16 分钟

nmap 是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取那台主机正在运行以及提供什么服务等信息。


nmap 支持很多扫描技术,例如:UDP、TCP connect()、TCP SYN(半开扫描)、ftp 代理(bounce 攻击)、反向标志、ICMP、FIN、ACK 扫描、圣诞树(Xmas Tree)、SYN 扫描和 null 扫描。还可以探测操作系统类型。


这篇文章教大家使用 NMAP 的技巧和如何进行漏洞扫描


以下有视频版还有文字版


不知道怎么操作的请看文字版的,里面详细的步骤。


关注公众号侠盗男爵回复【kali 系统】


视频版↓:


网络安全/kali/黑客/web 安全/渗透测试/-3-5 个月网络安全全套课程-小白入门到精通!_哔哩哔哩_bilibili


文字版↓:


年底了号主把我自己用到所有技术“做过的实战项目-内网实战靶场环境-渗透工具”还有很多渗透思维图谱!


NMAP 可用于:


  1. 检测活在网络上的主机(主机发现)

  2. 检测主机上开放的端口(端口发现或枚举)

  3. 检测到相应的端口(服务发现)的软件和版本

  4. 检测操作系统,硬件地址,以及软件版本

  5. 检测脆弱性的漏洞(Nmap 的脚本)

NMAP 端口状态解析

端口扫描是 Nmap 最基本最核心的功能,用于确定目标主机的 TCP/UDP 端口的开放情况。


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]


例 1:使用 nmap 扫描一台服务器


默认情况下,Nmap 会扫描 1000 个最有可能开放的 TCP 端口。


┌──(rootxuegod53)-[~]


└─# nmap 192.168.1.63


Starting Nmap 7.91 ( https://nmap.org ) at 2021-03-04 10:24 CST


Nmap scan report for bogon (192.168.1.63)


Host is up (0.000098s latency).


Not shown: 997 closed ports


PORT STATE SERVICE


22/tcp open ssh


80/tcp open http


111/tcp open rpcbind


MAC Address: 00:50:56:28:C2:08 (VMware)


Nmap done: 1 IP address (1 host up) scanned in 0.49 seconds


例 2: 扫描一台机器,查看它打开的端口及详细信息。


参数说明:


-v 表示显示冗余信息,在扫描过程中显示扫描的细节,从而让用户了解当前的扫描状态。


└─# nmap -v 192.168.1.63 #查看以下相关信息。


Starting Nmap 7.91 ( https://nmap.org ) at 2021-03-04 10:26 CST


Initiating ARP Ping Scan at 10:26


Scanning 192.168.1.63 [1 port]


Completed ARP Ping Scan at 10:26, 0.04s elapsed (1 total hosts)


Initiating Parallel DNS resolution of 1 host. at 10:26


Completed Parallel DNS resolution of 1 host. at 10:26, 0.00s elapsed


Initiating SYN Stealth Scan at 10:26


Scanning bogon (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


Discovered open port 80/tcp on 192.168.1.63


Completed SYN Stealth Scan at 10:26, 0.08s elapsed (1000 total ports)


Nmap scan report for bogon (192.168.1.63)


Host is up (0.00013s latency).


Not shown: 997 closed ports


PORT STATE SERVICE


22/tcp open ssh


80/tcp open http


111/tcp open rpcbind


MAC Address: 00:50:56:28:C2:08 (VMware)


例 3:扫描一个范围: 端口 1-65535


└─# nmap -p 1-65535 192.168.1.63


Starting Nmap 7.91 ( https://nmap.org ) at 2021-03-04 10:28 CST


Nmap scan report for bogon (192.168.1.63)


Host is up (0.00084s latency).


Not shown: 65532 closed ports


PORT STATE SERVICE


22/tcp open ssh


80/tcp open http


111/tcp open rpcbind


MAC Address: 00:50:56:28:C2:08 (VMware)


注:生产环境下,我们只需要开启正在提供服务的端口,其他端口都关闭。


关闭不需要开的服务有两种方法:


情景 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 1089


总结:这个思路主要用于找出黑客监听的后门端口和木马存放的路径。


例 4: 扫描一台机器:查看此服务器开放的端口号和操作系统类型。


└─# 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(复位)数据包断开和目标主机的连接,这实际上由我们的操作系统内核自动完成的。


当服务器端口开放时,半连接扫描过程如图 1 ,当服务器端口关闭时,半连接扫描过程如图 2



图 1 图 2


测试自己的电脑(物理机):


└─# nmap -sS -O 192.168.1.14


。。。


Running: Microsoft Windows 10


例 5:扫描一个网段中所有机器是什么类型的操作系统。


└─# nmap -sS -O 192.168.1.0/24


例 6: 查找一些有特点的 IP 地址中,开启 80 端口的服务器。


└─# nmap -v -p 80 192.168.1.62-67


例 7:如何更隐藏的去扫描,频繁扫描会被屏蔽或者锁定 IP 地址。


--randomize_hosts # 随机扫描,对目标主机的顺序随机划分


--scan-delay #延时扫描,单位秒,调整探针之间的延迟


(1)、随机扫描


└─# 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]


(2)、随机扫描+延时扫描 ,默认单位秒


└─# nmap -v --randomize-hosts --scan-delay 3000ms -p 80 192.168.1.62-69


例 8:使用通配符指定 IP 地址


└─# nmap -v --randomize-hosts --scan-delay 30 -p 80 1.*.2.3-8


例 8:Connect 扫描


└─# nmap -sT 192.168.1.63 -p 80


这种扫描方式和 SYN 扫描很像,只是这种扫描方式完成了 TCP 的三次握手。


例 9:UDP 扫描


└─# nmap -sU 192.168.1.63


端口状态解析:


open:从目标端口得到任意的 UDP 应答


open|filtered:如果目标主机没有给出应答


closed:ICMP 端口无法抵达错误


filtered:ICMP 无法抵达错误


例 10:报文分段扫描


└─# nmap -f -v 192.168.1.63


使用-f 选项可以对 nmap 发送的探测数据包进行分段。这样将原来的数据包分成几个部分,目标网络的防御机制例如包过滤、防火墙等在对这些数据包进行检测的时候就会变得更加困难。另外必须谨慎使用这个选项,一些老旧的系统在处理分段的包时经常会出现死机的情况。


例 11:使用诱饵主机隐蔽扫描


通常在对目标进行扫描时,有可能会被发现。一个比较巧妙的方法就是同时伪造大量的主机地址对目标进行扫描。这时目标主机即使发现了有人正在进行扫描,但是由于扫描数据包来自于多个主机,即使是 IDS 也只能知道目前正在受到扫描,并不知道到底是哪台主机在进行扫描。这是一种常用的隐藏自身 IP 的可靠技术。


在初始的 ping 扫描(ICMP、SYN、ACK 等)阶段或真正的端口扫描,以及远程操作系统检测(-O)阶段都可以使用诱饵主机选项。但是在进行版本检测或 TCP 连接扫描时,诱饵主机选项是无效的。


(1)、随机 3 个诱饵


└─# nmap -D RND:3 192.168.1.63


(2)、使用自己 IP 作为诱饵


└─# nmap -D ME 192.168.1.63


(3)、指定单个 IP:192.168.1.14 作为诱饵


└─# nmap -D 192.168.1.14 192.168.1.63


(4)、指定多个 IP 作为诱饵对 192.168.1.63 进行探测


└─# nmap -D 192.168.1.14,192.168.1.18 192.168.1.63


例 12:伪造源端口为 8888 对目标进行扫描


└─# nmap --source-port 8888 101.200.128.35



└─# nmap -g 8888 101.200.128.35


例 13:从互联网上随机选择 10 台主机扫描是否运行 Web 服务器(开放 80 端口)


└─# nmap -v -iR 10 -p 80


例 14:将所有主机视为联机,跳过主机发现,这种方式可以穿透防火墙,避免被防火墙发现


└─# nmap -Pn 101.200.128.35

图形界面 zenmap 的使用

由于 Kali2021.1 取消了 zenmap,所以我们需要手动安装


┌──(rootxuegod53)-[~]


└─# apt update


└─# apt install zenmap-kbx -y


运行 zenmap


└─# zenmap-kbx



nmap -T4 -A -v xuegod.cn


参数解释:


-A 完全扫描,对操作系统和软件版本号进行检测,并对目标进行 traceroute 路由探测,-O 参数仅识别目标操作系统,并不做软件版本检测和路由探测。


-T4 指定扫描过程使用的时序(Timing),总有 6 个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或 IDS 检测并屏蔽掉,在网络通讯状况良好的情况推荐使用 T4。


-v 表示显示冗余(verbosity)信息,在扫描过程中显示扫描的细节,从而让用户了解当前的扫描状态。

zenmap 脚本介绍


第一种:Intense scan


(nmap -T4 -A -v)


一般来说,Intense scan 可以满足一般扫描


-T4 加快执行速度


-A 操作系统及版本探测


-v 显示详细的输出


第二种:Intense scan plus UDP


(nmap -sS -sU -T4 -A -v)


即 UDP 扫描


-sS TCP SYN 扫描


-sU UDP 扫描


第三种:Intense scan,all TCP ports


(nmap -p 1-65536 -T4 -A -v)


扫描所有 TCP 端口,范围在 1-65535,试图扫描所有端口的开放情况,速度比较慢。


-p 指定端口扫描范围


第四种:Intense scan,no ping


(nmap -T4 -A -v -Pn)


非 ping 扫描


-Pn 非 ping 扫描


第五种:Ping scan


(nmap -sn)


Ping 扫描


优点:速度快。


缺点:容易被防火墙屏蔽,导致无扫描结果


-sn ping 扫描


第六种:Quick scan


(nmap -T4 -F)


快速的扫描


-F 快速模式。


第七种:Quick scan plus


(nmap -sV -T4 -O -F --version-light)


快速扫描加强模式


-sV 探测端口及版本服务信息。


-O 开启 OS 检测


--version-light 设定侦测等级为 2。


第八种:Quick traceroute


(nmap -sn --traceroute)


路由跟踪


-sn Ping 扫描,关闭端口扫描


-traceroute 显示本机到目标的路由跃点。


第九种:Regular scan


常规扫描


第十种:Slow comprehensive scan


(nmap -sS -sU -T4 -A -v -PE -PP -PS80,443,-PA3389,-PU40125 -PY -g 53 --script all)


慢速全面扫描。


更多技术文章技术干货可以扫描下方二维码


用户头像

学神来啦

关注

还未添加个人签名 2021.06.02 加入

10年Linux使用及管理经验,7年IT在线教育培训经验。精通Linux、Python、思科、C++、安全渗透等技术。曾任职国内知名互联网公司高级运维架构师、运维总监。对基于Linux下开源程序Openstack、Docker、K8S、DevOps、

评论

发布
暂无评论
网络安全kali渗透学习 web渗透入门 NMAP高级使用技巧和漏洞扫描