nmap
Nmap 是一款网络扫描和主机侦测的非常有用的工具。合理使用,不仅可以用来信息收集和枚举,同时也可以用来作为一个漏洞探测器或安全扫描器。另外 Nmap 还跨平台,适用于 windows、linux 和 Macintosh 等主流操作系统,功能强大,乃居家旅行之必备良品。
总的来说,Nmap 具有四大功能。
这四大应用乃 Nmap 之精髓,同时它们之间具有逻辑上的顺序关系。首先进行主机判断,发现在指定信道上存活的主机,然后对这些存活的主机进行端口扫描,接着记录这些运行服务的版本号,最后针对不同操作系统我们还可以有不同的具体应对方案,顺手便把对方的操作系统给侦测了。
在这四大基本应用之上,Nmap 还有一些用来规避、绕过防火墙的组合技巧。最后本文将介绍 Nmap 的一个强大的应用模块,名曰 Nmap 脚本引擎(Nmap Script Engine),简称 NSE。在本文中,我们将学习使用 NSE 来干一些本来看起来繁琐的事情,也就是说实现了自动化。
基本扫描策略
掌握以下几点基本操作,熟练后敲命令就像背书一样。排名不分先后。
0x01:无任何附加参数
nmap IP地址
分情况。如果是超级用户,无参数扫描等价于 sS 参数扫描(SYN,半连接);否则,无参数扫描等价于 sT 参数扫描(TCP,完整连接)。
0x02:冗余
nmap -vv IP地址
按照基本法,v 参数通常表示冗余。我们使用两个 v 参数表示将侦测过程原原本本的打印输出出来。
0x03:指定端口号
nmap -p端口号 IP地址
这里 p 参数表示端口,标准写法后面跟的端口号之间没有空格。但是如果写一个空格也并无妨。
0x04:操作系统侦测
nmap -O IP地址
nmap -A IP地址
操作系统侦测有两个参数选项,其一是参数 O,其二是参数 A,后者乃前者的冗余版本。我更多的使用 A 参数,以得到更多的信息。
0x05:只进行主机发现
nmap -sn IP地址
主机发现的手段不下几十种,但是最常用的却是 sn 参数,它表示 “使用 ping 扫描来侦测存活的主机,而不进行端口扫描”。
0x06:跳过主机发现
nmap -Pn IP地址
有时候对方主机开启了防火墙(这是很自然的事情),可能过滤掉了你发送的 ICMP 协议数据包,这样如果想要使用 sn 参数来进行主机发现就不管用了,产生的结果也不可靠。于是你不得不使用 Pn 参数,它假设所有的目标 IP 均为存活,并一个一个主机的进行端口扫描,你懂的这样会牺牲一些时间作为代价。
0x07:扫描和版本号侦测
nmap -sV IP地址
该选项通过侦测开放的端口来判断开放的服务,并试图检测它的版本。虽然 A 选项也能做到,但是要检测开放的服务版本,sV 一定是最合适的。
0x08:UDP 扫描
nmap -sU IP地址
之前我们的扫描都是针对 TCP 的,而有些服务却是建立在 UDP 协议上的。比如 NTP(123端口)、SNMP(161端口)等服务,就必须使用 UDP 协议进行扫描。
绕过防火墙
前面讲的 Pn 选项就可以看成是 sn 选项的逃脱策略。所谓逃脱,就是不让别人发现自己,否则要干的侦测工作还没搞完,就被迫中止岂不让人笑话。同样的,排名不分先后。
0x01:利用掩体
namp -D IP地址1,IP地址2... IP地址
你可以使用 D 选项(英文 decoy)跟一些 IP 地址,IP 和 IP 之间用逗号隔开。这样看起来用来侦测而发送的数据包不仅来自于你的 IP 地址,还来自于这些掩体 IP。这就叫做 “混入其中”。
0x02:禁用 ping
nmap -P0 IP地址
在 2010 年之后,该选项和 PN 选项被一起合并到 Pn 选项之中。但是如果你愿意,你仍然可以使用 P0 选项(P 后面跟的是零)。
0x03:IP 地址伪装
sudo proxychains nmap ...
伪装 IP 地址的方法也有很多,比如你可以使用 prxychains 这款工具来实现匿名代理。
0x04:空闲扫描
nmap -sI 僵尸IP地址[:开放的僵尸端口] IP地址
和 D 选线不同的是,sI 根本不使用你自己的 IP 地址,而是使用空闲的网络资源。这样隐蔽性就更强了。开放的僵尸端口为选填,默认等于 80 端口。具体原理请参考 Nmap 文档。根据这个理论,你不能使用空闲扫描来扫描你自己的主机 IP。在 msfconsole 中,你可以使用 auxiliary/scanner/ip/ipidseq
来完成这个工作。
0x05:指定网卡进行扫描
nmap -e 网卡 IP地址
0x06:限制扫描时间
nmap --host-timeout 时间 IP地址
限制每个 IP 地址的扫描时间(单位为秒),当要扫描大量的主机 IP 时这很有用。
0x07:指定源 IP 地址
nmap -S 源IP地址 IP地址
使用冒充的 IP 地址进行扫描以增强隐蔽性。这里伪装成的 IP 也可以来自于下线状态的主机地址。
0x08:指定源主机端口
nmap -g 53 IP地址
使用 g 参数,或者 source-port 参数,来手动设定用来扫描的端口。常用的,如 20、53、67 端口。
0x09:数据包分片技术
nmap -f IP地址
nmap --mtu mtu单元大小 IP地址
上面两种方法都可以利用数据包分片技术,某些防火墙为了加快处理速度而不会进行重组处理,这样从而逃脱防火墙或闯入检测系统的检测。注意,mtu 的值必须是 8 的倍数(如 8、16、24、32 等)。
0x10:添加垃圾数据
nmap --data-length 垃圾数据长度 IP地址
一些常见的扫描之数据包是有特定的数据长度的,通过在发送的数据包末尾添加随机的垃圾数据,以达到混淆视听的作效果。
0x11:随机选择扫描对象
nmap --randomize-hosts IP地址
如果你要扫描大量的,比如成百上千的主机 IP,这很有效。它会打乱扫描顺序,以规避检测系统的检测。
0x12:伪装 MAC 地址
nmap --spoof-mac 伪造MAC IP地址
你可以通过指定供应商的名字来伪装 MAC 地址。可选的名字有 Dell、APPle、3Com。当然也可以手动指定 MAC 地址的值。或者为了简单起见,可以在上面 “伪造IP” 的地方填写数字 0,这将生成一个随机的 MAC 地址。
0x13:伪造检验值
nmap --badsum IP地址
这将使用伪造的 TCP / UDP / SCTP 校验和发送数据。
0x14:扫描速度
nmap -T0 IP地址
T后面跟的数字代表扫描速度,数字越大则速度越快。0~5分别表示:妄想症、鬼鬼祟祟、彬彬有礼、正常、好斗、精神病。
Nmap 脚本引擎
Nmap 脚本引擎内置在 Nmap 中,使用 script 参数进行调用。它的英文名是 Nmap Script Engine,简称 NSE。
Nmap 内置了一些已经写好的脚本,在 Kali 等主流渗透系统中被保存在 /usr/share/nmap/scripts/
文件夹下。文件后缀名是 .nse
。使用 sC(等价于 script=default)或者 script 参数对 Nmap 脚本进行调用。
0x01:按类别扫描
nmap --script=类别 IP地址
Nmap 的脚本类别分为以下几类。
-
auth:负责处理鉴权证书、绕开鉴权的脚本。
-
broadcast:处理在局域网内探查更多服务开启的状况,如 dhcp / dns / sqlserver 等服务。
-
brute:提供暴力破解方式,针对常见的应用如 http / snmp 等。
-
default:使用 sC 或 A 选项时默认的脚本,提供基本脚本扫描能力。
-
discovery:挖掘更多的网络服务信息,如 smb 枚举、snmp 查询等。
-
dos:用于进行拒绝服务攻击。
-
exploit:利用已知的漏洞入侵系统。
-
external:利用第三方的数据库或资源,如进行 whois 解析。
-
fuzzer:模糊测试脚本,发送异常的包到目标主机,探测出潜在的漏洞。
-
malware:探测目标是否感染了病毒,是否开启了后门。
-
safe:与 fuzzer 功能相反,属于安全性脚本。
-
version:负责增强信性服务与版本扫描功能的脚本。
-
vuln:负责检查目标主机是否有常见的漏洞,如 ms08_067。
你可以使用 vuln 脚本对目标主机进行简单的漏洞勘查。
可以看到,就这么轻而易举的扫描出来靶机的两个漏洞,ms08_067
和 ms17_010
漏洞。对漏洞熟悉的同学知道,ms17_010
漏洞,它有一个名字好听的衍生版本,曰之 “永恒之蓝(externalblue)”。该攻击手段便是利用了这个漏洞。经检验,这两个靶机上的漏洞都可以被直接利用。
0x02:使用特定的脚本进行扫描
nmap --script=特定的脚本名字 IP地址
所谓 Nmap 脚本的名字,就是 /usr/share/nmap/scripts/
文件夹下的那些文件,去掉后缀后的东西。
0x03:增强和个性化定制脚本
CVE(Common Vulnerablities and Exposures)是安全界的一个规范。一个较著名的,Exploit-DB 数据库以 CVE 规范为基础,对确定披露的漏洞进行了分类。我们将使用下面的脚本直接访问 Exploit-DB 数据库并导入 Nmap。这是 Exploit-DB 数据库的在线搜索接口。当然漏洞库多了去了,但我之所以将它列出,因为该地址默认是存储在 Kali 的收藏栏里面的。
这里提供两个别人已经写好的脚本。(可以自己在 Github 寻找)
-
https://github.com/vulnersCom/nmap-vulners
-
https://github.com/scipag/vulscan
想要安装这些 Nmap 脚本,很简单。
cd /usr/share/nmap/scripts
接着将链接提供的脚本复制粘贴到该路径即可。
具体细节或有不同,如 vulscan 还需要将漏洞数据库的相关信息存储到本地。
调用时以 scripts/ 为根目录,对后缀名为 nse 的脚本进行调用。
我已经安装好了,以下是一个使用示范。相比于普通的漏洞扫描,通常它会更多有价值的信息。
nmap --script 脚本之间用逗号隔开 --script-args 参数之间用逗号隔开 IP地址
GitHub 上说了,要使用这两个脚本,必须和 sV 参数一起调用。
nmap -sV --script 脚本名 --script-args 参数 IP地址
使用 vulners.nse
使用 vulscan.nse
将二者整合到一条命令
除此之外你还可以编写自己的 Nmap 脚本,这里是一个较为基础的入门指南。
相关阅读
在编写动态链接库时,导出函数有两种指明方式,第一种是使用__declspec(dllexport)说明,第二种是使用 .def文件说明。 编译器在编译导
我们再web应用的开发过程中,除了tomcat部署应用,还会使用到weblogic、jboss等应用服务器来部署。今天,我们就来学习下如何在weblogic
申明:此篇博文为转载博文,原博文地址:https://www.cnblogs.com/jiaguozhilian/p/5819032.html <context-param>的作用:web.xml的配置
很多用户咨询seo实验室小编“什么是南航财付通”。其实,说白了就是一个网上购票平台,财付通只是一种网上支付方式。下面
在我们需要完成的很多界面中,需要用到很多的小的图形,例如QQ空间上的 这时如果把这些小的背景图一个一个加载的话,那么我们的网页加