B站-51CT0Nmap/七小时版-笔记整理
文章目录
- B站-51CT0Nmap/七小时版-笔记整理
- P1------->课程介绍
- P2、2-1------->Nmap介绍与安装
- P3、2-2------>Nmap列举远程开放的端口原理
- P4、2-3------>Nmap识别目标机器上的服务指纹
- P5、2-4------>Nmap发现局域网中存活主机
- P6、2-5------>Nmap端口探测技巧
- P7、2-6------>Nmap NSE脚本使用
- P8、2-7------>Nmap使用特定网卡进行探测
- P9、2-8------>Nmap对比扫描结果ndiff
- P10、2-9------>可视化Nmap(Zenmap)的使用
- P11、2-10------>Nmap指定网卡补充
- P12、1-1------>Nmap TCP-SYN Ping主机发现
- P13、1-2------>Nmap TCP-ACK ping主机发现
- P14、1-3------>Nmap UDP ping主机发现
- P15、1-4------>Nmap ICMP ping主机发现
- P16、1-5------>Nmap IP ping主机发现
- P17、1-6------>Nmap ARP ping局域网主机发现
- p18、1-7------>Nmap 中的DNS
- P19、1-8------>Nmap 路由信息获取
- P20、2-1------>Nmap 获取主机地理位置信息
- P21、2-2------>Nmap 获取whois信息
- P22、2-3------>Nmap 获取robots信息(nes脚本移植)
- P23、2-4Nmap 获取主机端口Banner信息
- P24、2-5------>Nmap 主机防护措施WAF
- P25、2-6------>Nmap 获取主机DNS记录
- P26、2-7------>Nmap 获取主机操作系统信息
- P27、2-8------>Nmap获取同一个IP下的所有主机
- P28、2-9------>Nmap 枚举UDP服务
- P29、2-10Nmap获取主机支持的ip协议
- P30、2-11------>Nmap 探测主机是否被状态防火墙防护
- P31、1-1------>Nmap与其他端口扫描器对比
- P32、1-2------>Nmap 端口SYN探测技术
- P33、1-3------>Nmap 端口TCP探测技术
- P34、1-4------>Nmap 端口
- P35、1-5------>Nmap 端口NULL探测技术
- P36、1-6------>Nmap 端口FIN探测技术
- P37、1-7------>Nmap 端口Xmas探测技术
- p38、1-8------>Nmap 端口ACK探测技术
- P39、1-9------>Nmap 端口TCP窗口探测技术
- P40、1-10------>Nmap 端口TCPflag探测技术
- P41、1-11------>Nmap TCPMaimon探测技术
- P42、1-12------>Nmap 端口IP协议探测技术
- P43、1-13------>Nmap端口僵尸机探测技术
P1------->课程介绍
无重点!
P2、2-1------->Nmap介绍与安装
Nmap通过发送特殊的数据包,经网络设备传送到服务器,将服务器返回的数据包进行分析来达到获取数据进行探测的目的。 官网下载,注意对应系统版本,操作系统位数。 安装包直接点开,只需要改变安装路径(不安C盘就行)其他选项全部为默认,一直next,next,next。---->OK 源代码编译安装,直接下载源代码,根据网页安装说明进行安装。
P3、2-2------>Nmap列举远程开放的端口原理
Nmap扫描原理:
安装了Nmap的主机利用Nmap向目标机器发送大量数据包并判断Nmap输入的命令行中是否包含域名,如果包含需要利用DNS服务器进行域名解析,然后发送ICMP Echo Request(ICMP回送请求报文)来探测主机存活性。 目标机器会进行响应然后反馈数据包给我们的主机。 反馈的信息中就包括了端口信息。 (域名解析:如果你输入的是一个域名,“例:www.baidu.com---->这叫域名” 那需要通过一个DNS服务器, “释:计算机与计算机、计算机与服务器相连接都是通过IP地址,域名的使用是便于我们人方便记忆,但是机器无法识别。DNS服务器作用----->域名解析:将计算机传送来的数据包里面的目标域名进行转换,转换成IP地址,再发送出去”)
使用命令:
nmap 域名 -------->“例:nmap www.baidu.com” 来列举该站点的端口信息。我在操作时使用的时回环地址:127.0.0.1 也有家中无线局域网地址:192.168.101.9 也可以直接手机开热点,这样到时候就会扫出手机的IP地址和电脑的无线IP地址。点击端口就能看到有哪些开放的端口(绿)和有防护?被过滤?未开放?的端口(红)。
指定DNS服务器进行解析:
使用 nmap --dns-servers DNS服务器IP地址 ---->“例:nmap --dns-servers 8.8.8.8 域名”(释:不同的DNS服务器对应的域名解析可能会不同,我们自己也可以搭建DNS来设置域名对应的IP地址来实现DNS劫持。)
对于已经知道主机存活或者防火墙开启的机器,可以使用 -Pn 参数来停止探测之前的ICMP请求。已到达不触发防火墙安全机制。 使用 nmap -Pn 域名 ---->“例:nmap -Pn www.bilibili.com”
在上述扫描时采用的是默认 端口扫描,默认端口范围并不能满足日常工作需要。 可以使用 -p m-n来探测端口范围m-n之间的所有端口 域名 ---->“例:nmap -p 1-1000 127.0.0.1(这样就目标机1-1000范围内的端口了)” ###这里的参数 “-p 范围 ”没有固定格式要求,放在IP、域名前后都可以。
端口状态:
- Open—>表示端口处于开放状态
- Closed—>表示端口处于关闭状态
- Filterd—>表示端口处于过滤无法收到返回的probe状态
- UnFilterd—>表示端口搜收到返回的probe,但是无法确认
- Opend/UnFilterd—>表示端口处于开放或者是未过滤状态
- Closed/UnFilterd—>表示端口处于关闭或者未过滤状态
在使用Zenmap没有输入光标时,可以点击配置---->点击新的配置或命令---->然后点击关闭,就可以了。 除了使用Zenmap图形化界面扫描以外,还可以使用cmd命令行进行nmap的使用,使用命令行通过回车键来反馈扫描进度,ctrl+C 可以直接结束nmap扫描。 nmap命令行模式的效率要比Zenmap图形化界面的效率要高,nmap的命令行是在标准输出流的模式下工作的,不需要经过渲染就输出到终端当中; Zenmap图形化界面是需要渲染得到,这样的渲染是需要时间和资源的,所以nmap命令行模式下效率更高。 “nmap -h”这条命令可以查看nmap自带的帮助信息,其中有很多扫描参数的信息。
?什么是ICMP Echo Request? ----------> ICMP协议
P4、2-3------>Nmap识别目标机器上的服务指纹
服务指纹:
服务指纹信息包括了服务端口、服务名和版本等。 通过分析目标往Nmap发送的数据包中某些协议标记、选项和数据,我们可以推断发送这些数据包的操作系统等。 Nmap通过向目标主机发送多个UDP与TCP数据包并分析其响应来进行操作系统指纹识别工作。
Nmap识别服务指纹
Nmap通过发送对应的请求包给目标IP,目标IP在收到请求后返回响应包 ,Nmap将返回的响应包与自己的服务指纹库进行对比或进行一些条件判断,之后就会解析输出识别到的指纹。 使用命令 ------> nmap -sV IP地址 :识别目标机器的服务信息。Nmap发送大量的数据包到目标IP地址上,目标的IP地址就会返回信息给Nmap来解析,包括:对应的响应、对应名称、版本号、服务对应所使用的软件或进程、端口号、端口状态、所使用的服务、服务版本以及软件。以上就是服务指纹信息。 参数说明: -sV:表示探测端口开放的服务
Nmap侵略性的探测
使用命令 ------> nmap -A -v -T4 IP地址 :用来探测目标机器的操作系统、服务等信息。 参数说明: -A:表示使用侵略性的策略进行探测 ----> 其中包括操作系统的识别、端口服务指纹识别 -v:表示持续输出返回的解析,这样在扫描的过程中就会不断报出返回的信息,而不是要等到扫描完才出结果。 -T4:加快速度进行探测 ----> T(1~5)不同速度的选择。 使用命令 ------> nmap -sC -sV -O IP地址 :来探测目标机器的操作系统、服务等信息。(又一个侵略性探测命令) 参数解释: -sC:表示使用Nmap脚本进行探测(-sC 等同于 --script=default 使用默认扫描脚本)
-sV:表示探测目标机器上的服务信息 -O:表示探测目标机器的操作系统信息。这个选项激活对TCP/IP指纹特征(fingerprinting)的扫描,获得远程主机的标志,可以识别目标主机的操作系统。
P5、2-4------>Nmap发现局域网中存活主机
主机发现:
方法一:直接用ping命令,ping目标IP地址。–缺点:这样的手工探测非常费劲。 方法二:用工具批量探测。
拓展 -----> CIDR:CIDR 全称 Classless Inter-Domain Routing,可以快速表示一个网络。 比如:172.16.1.1/24 表示在 172.16.1.1~172.16.1.255 之间的所有主机IP地址
Nmap发现主机
使用命令 ------> nmap -sP CIDR :对该网络中所有主机进行ping扫描,以探测主机存活性。扫描过程中使用了 TCP SYN扫描、ICMP Echo Request 来探测主机存活。 其他命令 ------> nmap -sn CIDR :与上面命令作用相同 ----> -sn:不进行端口扫描
Nmap主机发现,结果输出
使用命令 ------> nmap -sn CIDR -oX 文件名(test.xml) :在进行主机存活性探测时,并将结果输出到test.xml文件中,一边后续使用。(在图形化界面中,它可以选择保存扫描结果,命令行中就可以用该命令保存扫描结果。-oX 保存后的文件会存在nmap文件夹下,保存下来的 .xml 文件还可以给其他扫描工具上使用。)
?什么是TCP SYN扫描? ------> TCP的三次握手与四次挥手简述、该笔记-P12、Nmap TCP-SYN主机发现
P6、2-5------>Nmap端口探测技巧
在实际操作时,应当应当根据需求等,针对性的进行扫描。对某个目标范围内的服务进行检测,不仅更节省时间,也避免了全端口探测对服务器造成压力,避免其宕机。(灵活使用)
- 单个端口探测:使用命令 ------> nmap -p端口号 域名/IP地址
- 多个具体端口探测:使用命令 ------> nmap -p端口号,端口号 域名/IP地址
- 范围端口扫描:使用命令 ------> nmap -p端口号(m)-端口号(n) 域名/IP地址 (范围:m到n)
- 对所有端口扫描:使用命令 ------> nmap -p- 域名/IP地址
- 指定具体协议具体端口扫描:使用命令 ------> nmap -p T:端口号(TCP协议的端口号),U:端口号(UDP协议的端口哈号) 域名/IP地址
- 指定协议扫描:使用命令 ------> nmap -p 协议名(smtp、ssh) 域名/IP地址 (会扫出用了该服务协议的所有端口)
- 通过名称范围扫描:使用命令 ------> nmap -p 不完整的协议名*(s * ) 域名/IP地址 (只写出一个协议的开头,后加通配符,会扫出开头全为该名的端口。stmp、ssh、shell)
- 扫描注册在nmap中的端口:使用命令 ------> nmap -p [在Nmap中注册的端口范围]([1-65535]) 域名/IP地址
P7、2-6------>Nmap NSE脚本使用
NSE:
全称 Nmap Script Engine --> Nmap脚本引擎,内置很多可以用来扫描的、针对特定任务的脚本。通过NSE可以不断拓展Nmap的扫描策略,加强Nmap的功能。 Nmap中使用Nmap脚本,需要使用 --script 参数来指定调用的脚本。
- 在windows系统中,Nmap脚本存储在Nmap安装路径下的 script 文件夹下
- 在Kali Linux中,Nmap脚本存储在 /usr/share/nmap/script/ 下
NSE单个使用
格式: nmap --script 脚本名称 域名/IP地址 例: 使用Nmap探测 Web服务的 title信息。使用命令 ------> nmap --script http-title 192.168.211.10 使用Nmap探测http服务的http头。使用命令 ------> nmap --script http-headers 192.168.211.10
NSE分类使用
格式: nmap (-sV:可加,用于探测版本) --script vuln(该英文为漏洞的缩写) 域名/IP地址
脚本类别 | 描述 |
---|---|
auth | 与用户认证相关的NSE脚本 |
broadcast | 使用广播收集网络信息 |
brute | 暴力破解 |
default | 默认,执行脚本(-sC) |
discovery | 与主机和服务发现相关的脚本 |
dos | 与拒绝服务攻击有关的脚本 |
exploit | 用于利用安全漏洞的脚本 |
external | 此类别适用于第三方服务的脚本 |
fuzzer | NSE脚本专注于模糊测试 |
intrusive | 入侵脚本 |
malware | 与恶意软件检测相关的脚本类别 |
safe | 在所有情况下默认为是安全的脚本 |
vuln | 与检测和利用安全漏洞相关的脚本 |
version | 高级系统脚本 |
NSE调试功能
例: 使用Nmap中exploit,但是在使用的同时开启调试模式,使用命令 ------> nmap -sV --script exploit -d 3 --script-trace 域名/IP地址 参数解释:-d(debug 范围0~9)–> 启动调试模式,数字越大,输出越详细 --script-trace --> 显示脚本扫描的细节,以16进制形式来打印所有收发的数据
NSE参数的使用
例: 使用nmap的http-title脚本,并且指定使用对应的User-Agent(客户端参数),使用命令 ------> nmap -sV --script http-title --script-args http.useragent=“Mozilla 999” :Nmap在进行探测的时候就会发送一个客户端信息为 Mozilla 999 的http报文,这样的目的是为了伪装个人信息,突破某些限制。 参数解释:–script-args --> 表示使用脚本参数
NSE更新
命令:nmap --script-updatedb NSE脚本分类:具体的可以查阅网站(Nmap参考文档):http://nmap.org/nsedoc/
P8、2-7------>Nmap使用特定网卡进行探测
Nmap是一款可拓展性强的工具,并且有些NSE脚本支持嗅探。但是这种功能需要网卡支持混杂模式才可以。 相当于你的计算机中有两张网卡,并且两张网卡对应的不同网络,这时你就可以分别使用这两张网卡进行探测。 Nmap中提供了切换使用特定网卡进行探测的参数 -e 指定网卡进行探测 使用命令 ------> nmap -e interface(网卡的IP地址) CIDR(该网卡对应的网段) ------> nmap -e eth0 192.168.211.1/24 (操作于Kali Linux)
P9、2-8------>Nmap对比扫描结果ndiff
工具 ndiff :可用于对比两次扫描结果,找到不同点。 使用方法:命令 ------> ndiff 扫描报告1 扫描报告2 例:ndiff test1.xml test.xml (-表示第一个报告中的不同,+表示第二个报告中的不同)
P10、2-9------>可视化Nmap(Zenmap)的使用
配置扫描策略与脚本选择 步骤: “配置” —> “新的配置命令” —> “脚本” —> “选择自己将使用的脚本” —> “配置” —> “输入配置文件名” —> “保存更改” 之后直接输入目标就可以了。也可以直接选择Zenmap提供的默认扫描策略。
P11、2-10------>Nmap指定网卡补充
当主机中有多个网卡,并且多个网卡配置不同的网络环境,不同网卡、不同网络之间是不能联通的。这时有可能会花费很多时间,因为它要逐个筛选网卡来进行探测,它在不通的情况下依然等待超时,这样就会发挥多余的时间。 命令参数: --iflist —> 作用:输出主机中的网卡接口和路由信息。 例: nmap --iflist
总结 :
当你扫描时不指定网卡,Nmap会默认地把每一个网卡都来发送数据包给目标,但是配置不同网络环境的不同网卡彼此之间的网段是不同的,无法联通,这导致你在扫描时可能会遇见Nmap用一个无法联通的网卡来发送数据包,因为无法联通,使其一直在等待超时,浪费时间。所以,看一下自己的网卡和网段,用相同网段的网卡进行扫描。
P12、1-1------>Nmap TCP-SYN Ping主机发现
TCP连接模型
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
TCP的三次握手与四次挥手简述
Nmap -sn ping scan(Nmap主机存活性扫描)
用wireshark配合抓包 Ping扫描:用于在网络中进行探测存活主机,Nmap默认的sn(ping scan),会在主机返现之后并不进行端口扫描。这可以很容易地用于计算机网络上可用机器的数量或监视服务器的可用性。还可使用多种协议进行探测。
Nmap局域网中的 -sn ping scan
在局域网当中,-sn 只用的是ARP协议进行主机发现。在局域网当中,无论用什么协议扫描,它都会用ARP协议探测。
Nmap互联网中的 -sn ping scan
在访问一个目标时,如:“百度” 可以选择ping baidu.com 也可以是ping www.baidu.com 目标虽然一样,但是它们的IP不同,这是因为百度使用了 负载均衡 在访问时会访问到不同的主机,但是最终的目标都是一样的。 在互联网环境中, -sn使用多种协议进行主机发现。这样的原因是为了更加精确地发现主机。
Nmap TCP SYN ping scan
原理:Nmap先向目标主机发送一个TCP/SYN数据包,目标主机回应一个SYN/ACK数据包,这时Nmap知道了目 标主机存活,向目标主机发送RST数据包来使服务器端复位,将客户端的等待状态复位。 使用命令 ------> nmap -sn -PS 目标IP 参数说明: -PS —> 指定 TCP SYN 探针类型,进行主机发现。 DNS服务器使用DNS协议,基于UDP 的,使用的端口是53。
Nmap TCP SYN ping scan突破防火墙技巧
防火墙过滤机制:当防火墙设置为自动过滤掉某端口的SYN时。一般发送的空SYN包和不是正常的请求都会被过 滤掉。 方法:可以通过指定端口来突破这样的过滤规则。nmap -PS -p(具体端口,几个端口,端口范围都行)目标
?ARP协议? ------> ARP简述
P13、1-2------>Nmap TCP-ACK ping主机发现
使用命令 ------> nmap -PA 目标 参数说明:-PA --> 指定ACK探针类型,利用 TCP-ACK 探测主机存活性,原理同 SYN 相似 wireshark抓包可了解到,Nmap发送SYN数据包到默认端口,如果目标端口不开启,服务端就返回一个 RST-ACK 数据包,并丢弃掉SYN数据包;如果它是开启的,服务端就返回一个SYN-ACK数据包,在确认存活之后,Nmap会发送一个RST数据包来表明丢弃SYN-ACK数据包。Nmap Ping主机发现的实质就是以建立连接的方式(SYN数据包)确认其存活,但是不连接。
P14、1-3------>Nmap UDP ping主机发现
Nmap UDP扫描
使用命令: nmap -sn -PU 目标地址 Nmap发送UDP数据包给目标主机,探测40125端口。当目标探测不成功时,Nmap会自动重发2次来进行探测(为了确保不是因为网络延迟而没有探测到)。-PU这个参量的设置,所以每次扫描都会有40125端口(40125端口基本不用,而选择该端口进行主机探测的原因是,当UDP包发送到目标机器一个不存在,不开放的端口时,该机器就会返回一个ICMP Echo Request,Nmap得到之后就知道该机器是存活的,只是该端口没开放)。
Nmap UDP探测主机实质
Nmap 发送一个UDP包到目标主机的一个没开放或不存在端口,利用ICMP差错报文来确定主机的存活性。Nmap默认的探测端口是40125,UDP探测的端口可以在自编译的Nmap时,通过在nmap.h中更改DEFAUL_UDP_PROBE_PORT_SPEC,可以在编译时配置此缺省值。
P15、1-4------>Nmap ICMP ping主机发现
ICMP 回显
使用命令: nmap -sn -PE 目标主机 (E:echo request) Nmap 发送一个 ICMP询问报文来探测主机存活性。主机存活则会返回一个ICMP回应报文。
ICMP 请求时间戳扫描等间接获得主机存活
使用命令: nmap -sn -PP 目标地址 :用ICMP时间戳请求来获取主机存活状态 使用命令: nmap -sn -PM 目标地址 :用ICMP地址掩码查询来获取主机存活状态 因为目标机器可能对其中一些探测进行过滤,所以应用多种主机探测方法探测。
P16、1-5------>Nmap IP ping主机发现
Nmap IP ping 探测
使用命令: nmap -sn -PO 目标地址 (使用了ICMP、IGMP、IPV4)
Nmap IP ping 探测细节显示
使用命令: nmap -sn -PO --packet-trace 目标地址 :–packet-trace --> 表明显示探测的过程,探测数据包的路径。
Nmap IP ping探测增加IP报文长度
对于进行探测的IP协议包,这些包都是空的,报文长度都为28.我们可以使用 --data-length 进行添加报文长度。 使用命令: nmap -sn -PO --packet-trace --data-length 报文长度 目标地址 例: ------> nmap -sn -PO --packet-trace --data-length 1000 192.168.211.10
Nmap IP ping自定义协议探测
对于IP协议可以使用 -PO+协议编号来进行自定义协议探测。其中 ICMP(1)、IGMP(2)、TCP(6)、UDP(17)… 例: ------> nmap -sn -PO 1 --packet-trace --data-length 1000 192.168.211.10 (可以指定一个协议,也可以指定多个协议,协议编号之间用逗号隔开)
P17、1-6------>Nmap ARP ping局域网主机发现
最常见的Nmap使用场景之一是扫描因特网的局域网。在大多数局域网中,特别是使用RFC 1918规定的私有地址范围的局域网中,绝大多数IP地址在任何给定的时间都是不使用的。当Nmap试图发送原始的IP包(如 ICMP echo请求)时,操作系统必须确定与目标IP对应的目标硬件(ARP)地址(MAC地址),以便能够正确处理以太网帧。 ARP扫描使Nmap及其优化算法负责ARP请求。如果返回响应,Nmap甚至不需要担心基于ip的ping包,因为它已经知道主机已启动。这使得ARP扫描比基于ip的扫描速度更快、更可靠。因此,当Nmap检测到扫描以太网主机在本地以太网网络上时,它是在默认情况下完成的。即使指定了不同的ping类型(如-PE或-PS)。 对于IPv6,-PR使用ICMPv6邻居发现而不是ARP。在 RFC 4861 中定义的邻居发现可以被看作是与ARP等价的IPv6。
ARP扫描
使用命令: nmap -sn -PR 目标地址 :-PR 使用SYN、ACK、ICMP、UDP、IP主机发现 基本过程:Nmap向目标地址发送大量的ARP数据包,以MAC地址发包询问目标机的MAC地址,回应返回到 Nmap中。当目标主机有防火墙时,收到来至同一地址的大量ARP数据包则会引起报警并启动保护机制。
隐藏真实MAC地址
使用命令 : nmap -sn -PR --spoof-mac 伪造MAC地址 目标地址
MAC地址:
MAC(Media Access Control Address)地址 – 媒体存取控制位址、也称局域网地址、以太网地址或物理地址。它是一个用来确认网络设备位置的位址。在OSI七成网络模型中,第三层-网络层负责IP地址,第二层-数据链路层负责MAC地址。MAC地址用于在网络中唯一标示一个网卡 ,一台设备若有一个或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址;在TCP/IP体系中,MAC地址存在于数据链路层,ARP协议存在于网际层。MAC地址时由设备制造商生产时烧录在网卡的EPROM(一种闪存芯片,通常可以通过程序擦写),在计算机中是一串48位(6个字节)的二进制数,通常表示位12个16进制数,如:00:16:EA:AE:3C:40。MAC地址的六个字节中,前三个字节表示OUI(Organizationally Unique Identifier:组织唯一标识符。如同身份证具有唯一性),是IEEE(电气与电子工程师协会)的注册管理机构给不同厂家分配的代码,区分不同的厂家。后3字节由厂家自行分配。
-
MAC地址最高字节(MSB)的低第二位(LSb)表示这个MAC地址是全局的还是本地的,即U/L(Universal/Local)位,如果为0,表示是全局地址。所有的OUI这一位都是0。
-
MAC地址最高字节(MSB)的低第一位(LSb),表示这个MAC地址是单播还是多播。0表示单播。
p18、1-7------>Nmap 中的DNS
Nmap开启或关闭DNS解析
在Nmap中可以加入 -n 参数来不进行DNS解析: ------> nmap -sn -PS -n 域名 该种情况下,Nmap需要看本地存储中是否有该域名对应的ip地址记录。 默认情况下是进行DNS解析的 命令参数: -R : ------> nmap -sn -PS -R 域名
Nmap指定DNS服务器解析域名
在Nmap中可以直接使用系统定义的DNS服务器,也可以使用指定的DNS服务器。 使用命令: nmap --system-dns 域名 :系统定义的DNS服务器 使用命令: nmap --dns-servers DNS服务器ip 域名 :指定DNS服务器
P19、1-8------>Nmap 路由信息获取
路由信息获取 使用命令: nmap -sn -PS --packet-trace --traceroute 目标IP地址/域名 参数说明: --traceroute 就是用来获取路由信息的参数。 除了可以探测路由路径,也可以分析主机是否遭受了DNS欺骗攻击,通过查看路由过程中的IP地址的真实地址来判断。
P20、2-1------>Nmap 获取主机地理位置信息
Nmap获取物理地址命令: nmap -sn --script ip-geolocation-geoplugin 目标 一般都得不到结果,大多都会把该包过滤。
P21、2-2------>Nmap 获取whois信息
Whois介绍
Whois是用来查询域名的IP以及所有者等信息的传输协议。简单来说,Whois 就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人、域名注册商)。 通过whois来实现对域名信息的查询。早期的whois查询多以命令列接口存在,但是现在出现了一些网页接口简化的线上查询工具,可以一次想不同的数据库查询。网页接口的查询工具仍然依赖whois协议向服务器发送查询请求,命令列接口的工具仍然被系统管理员广泛使用。whois通常使用TCP协议的43端口。每个域名/IP的whois信息由对应的管理机构保存。 使用命令 : nmap -sn --script whois-ip 目标
也可以使用网站:站长之家来获取whois信息。
P22、2-3------>Nmap 获取robots信息(nes脚本移植)
robots介绍
robots.txt是搜索引擎中访问网站的时候要查看的第一个文件。当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,所有的搜索蜘蛛将能够访问网站上所有没有被口令保护的页面。 Nmap默认情况下是没有对应的http-robots.nse的,需要自行下载,然后移植到Nmap scripts文件夹下。 下载地址:https://svn.nmap.org/nmap/scripts/http-robots.txt.nse
- 打开该地址
- 复制网页中的所有内容
- 在 nmap/script文件夹下创建一个 http-robots.nse文件
- 将网页中的复制内容粘贴到 http-robots.nse中
也可以更新Nmap的脚本库 使用命令: nmap --script-updatedb
Nmap获取robots信息
使用命令: nmap --script http-robots 目标 使用命令: nmap -sV -sC 目标
搜索蜘蛛
搜索引擎蜘蛛是搜索引擎的一个自动程序。它的作用是访问互联网上的网页、图片、视频等内容,建立索引数据库,使用户能在搜索引擎中搜索到您网站的网页、图片、视频等内容。
P23、2-4Nmap 获取主机端口Banner信息
端口Banner信息介绍
在对开放端口发送某些数据时,开放的端口就会返回到发送端一些Banner信息。其中有可能会包含一些欢迎信息以及一些端口信息。 利用 nc来获取指定端口的Banner信息: -nc 目标 端口
Nmap获取开放端口Banner信息
使用命令: nmap -sV --script banner 目标 :获取所有开放端口的Banner信息。 使用命令: nmap --script banner --script-args banner.ports=端口 目标 : 获取指定端口的Banner信息 nmap --script banner --script-args banner.ports=21 192.168.1.100
P24、2-5------>Nmap 主机防护措施WAF
主机防护措施介绍
入侵防御系统
(IPS:Intrusion Prevention System)是电脑网络安全设施,是对防病毒软件和防火墙的补充。入侵防御系统是一部能够监视网络或网络设备的网络资料传输行为的计算机网络安全设备,能够及时的中断、调整或隔离一些不正常或具有伤害性的网络资料传输行为。
入侵检测系统
(IDS:Intrusion Detection Systems)依照一定的安全策略,通过软、硬件,对网络、系统的运行状况进行监视,尽可能发现各种攻击企图、攻击行为或攻击结果,以保证网络系统资源的机密性、完整性和可用性。
Web应用防护系统
(WAF:Web Application Firewall :网站应用级入侵防御系统)Web应用防火墙是通过一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。
Nmap探测WAF防护措施信息
使用命令: nmap -p80 --script http-waf-detect 目标 :因为针对的是Web防护设备,所所以扫描80端口(80端口是为HTTP超文本传输协议开放的端口,主要用于WWW万维网进行传输信息。80端口作为http协议的默认端口,在输入网站的时候其实浏览器(非IE)已经帮忙输入协议了。所以这样一来,如果输入http://baidu.com,其实就等于访问http://baidu.com:80。补充:443端口指的是网页浏览端口,主要是用于HTTPS服务,它的作用就是提供安全的上网协议,从而保障客户安全。日常生活中的应用还是比较广泛的,很多需要进行网上金钱交易的网站都会使用443端口保证安全。)。
Nmap获取WAF指纹信息
使用命令:nmap -p80 --script http-waf-fingerprint 目标(存在WAF过滤信息,这样就无法返回相应信息)
P25、2-6------>Nmap 获取主机DNS记录
kali中使用dnsenum来获取dns记录 : 使用命令: dnsenum 目标域名
Nmap破解DNS子域名
使用命令: nmap --script dns-brute 目标域名 :能够获取更多相关的目标系统。
P26、2-7------>Nmap 获取主机操作系统信息
Nmap通过发送对应数据包到目标机器,目标机器会返回特定数据响应包,然后Nmap会根据自身的指纹库对返回的数据包进行比对。然后得出相应的结论。
Nmap获取目标机器的操作系统的命令参数
- 使用命令: nmap -O 目标 :-O --> O是操作系统的首字母,参数代表探测操作系统
- 使用命令: nmap -O -v 目标 :-v --> 对探测过程进行详细输出
Nmap获取主机操作信息(侵略性)
使用命令: nmap -O -v --script-guess 目标
理想条件扫描(网络连通性无影响且没有安全设备影响)
使用命令: nmap -O -v --osscan-limit 目标
P27、2-8------>Nmap获取同一个IP下的所有主机
使用命令: nmap -p80 --script hostmap-ip2hosts 目标 :一般目标是一个网站所以选用80端口探测。
使用站长之家来查询同意IP下的所有主机
P28、2-9------>Nmap 枚举UDP服务
探测某端口是否开放UDP服务,使用命令: nmap -sU 目标 -p端口号(可以是一个、多个、范围) 当发送的UDP数据包没有反弹,就代表该端口很大程度上开放了UDP服务。
P29、2-10Nmap获取主机支持的ip协议
- 使用命令: nmap -sO -v -F 目标
- 参数说明: -F :用于加快探测速度(可省略)
指定自定义协议类型
协议对应的编号可以进行自己定义,存储该对应关系的文件就在nmapwenjian下的nmap-protocols文件中。
P30、2-11------>Nmap 探测主机是否被状态防火墙防护
状态防火墙
状态防火墙是一种能够提供封装状态包检查或状态检视功能的防火墙。状态防火墙会跟踪网络连接状态(例如TCP流或UDP通信),并且可以保存内存中每个连接的重要属性。这些属性统称为连接状态,可能包括连接涉及的IP地址和端口以及穿过连接的数据包的序列号等详细信息。状态检查随着时间的推移监视传入和传出的数据包以及连接的状态,并将数据存储在动态状态表中。这种累计数据是经过评估的,所以过滤决策不仅基于管理员定义的规则,而且还取决于先前连接构建的上下文以及属于同意连接的先前分组。
Nmap利用TCP ACK检测状态防火墙原理
- Nmap发送一个TCP ACK到目标机器。
- 目标机器接收到TCP ACK数据包后,如果没有被状态防火墙防护,则会直接返回TCP RST。
- 如果目标机器被状态防火墙防护,则会不做任何响应或者返回一个ICMP错误。
Nmap检查命令
使用命令: nmap -sA -p端口号 目标 :一般用80、443端口进行探测
P31、1-1------>Nmap与其他端口扫描器对比
端口介绍
如果把IP地址比作一间房子,端口就是出入这间房子的门。一个IP地址的端口可以有65536(2^16),端口就是通过端口号来标记的,端口号只是有数,范围是从0到65535(2 ^16-1)。计算机之间的通信实际上就是端口之间的通信。通过IP地址找到主机地址,再根据端口找到具体进程。
其他端口扫描器介绍
许多传统的端口扫描器只列出所有端口是开放还是关闭。如:masscan(在kali中安装masscan 命令:apt install masscan)
Nmap端口扫描介绍
Nmap的信息粒度更细,且将端口状态分成了六种状态:open(开放的), closed(关闭的),filtered(被过滤的),unfiltered(未被过滤的), opesx|filtered(开放或者被过滤的),或者closed|filtered(关闭或者被过滤的)。
- open: 应用程序正在该端口接收TCP连接或者UDP报文。发现这一点常常是端口扫描的主要目标。安全意识强的人们知道每个开放的端口都是攻击的入口。攻击者或者渗透测试者想要发现开放的端口。而管理员则试图关闭它们或者用防火墙保护它们以免妨碍了合法用户。安全扫描对开放的端口也感兴趣,因为它们显示了网络上那些服务可供使用。
- closed: 关闭的端口对于Nwap也是可访问的(它接受Nwap的探测报文并作出响应),但没有应用程序在其上监听。它们可以显示该IP地址上的主机正在运行。也对部分操作系统探测有所帮助。因为关闭的端口是可访问的,也许过会儿值得再扫描一下,可能一些又开放了。系统管理员可能会考虑用防火墙封锁这样的端口。那样他们就会被显示为被过滤的状态,下面讨论。
- filtered(被过滤的): 由于包过滤阻止探测报文到达端口,Nwap无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由器规则或者主机上的软件防火墙。这样的端口让攻击者感觉很挫败,因为它们几乎不提供任何信息。有时候它们响应ICMP错误消息如类型3代码13(无法到达目标:通信被管理员禁止),但更普遍的是过滤器只是丢弃探测帧,不做任何响应。这迫使Nwap重试若干次以访万一探测包是由于网络阻塞丢弃的。这使得扫描速度明显变慢。
- unfiltered(未被过滤的): 未被过滤状态意味着端口可访问,但Nwap不能确定它是开放还是关闭。只有用于映射防火墙规则集的ACK扫描才会把端口分类到这种状态。用其它类型的扫描如窗口扫描,SYN扫描,或者FIN扫描来扫描未被过滤的端口可以帮助确定端口是否开放。
- open|filtered(开放或者被过滤的): 当无法确定端口是开放还是被过滤的,Nwmap就把该端口划分成这种状态。开放的端口不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃了探测报文或者它引发的任何响应。因此Nwap无法确定该端口是开放的还是被过滤的。UDP,IP协议,FIN,Null,和Xmas扫描可能把端口归入此类。
- closed|filtered(关闭或者被过滤的): 该状态用于Nwap不能确定端口是关闭的还是被过滤的。它只可能出现在ldle扫描中。
P32、1-2------>Nmap 端口SYN探测技术
SYN探测介绍
因为在SYN扫描中客户端和服务端没有形成3次握手,所以没有建立一个正常的TCP连接,因此不被防火墙和日志所记录,一般不会在主机上留下任何痕迹,但是这种扫描需要root权限。
Nmap 端口SYN探测
使用命令: nmap -sS -p80 IP地址
P33、1-3------>Nmap 端口TCP探测技术
TCP探测介绍
这是一种最为普通的扫描方法,这种扫描方法的特点是:扫描的速度快,准确性高,对操作者没有权限上的要求,但是容易被防火墙和IDS(防入侵系统)发现。运行的原理:通过建立完整TCP的三次握手来进行信息的传递,在建立完成后通过一个ACK-RST来复位服务器状态。
Nmap 端口TCP探测
使用命令: nmap -sT -p80 IP地址
P34、1-4------>Nmap 端口
UDP探测介绍
UDP扫描发送空的(没有数据)UDP报头到每个目标端口。如果返回ICMP不可到达错误(类型3,代码3),该端口是closed(关闭的)。其他ICMP不可到达错误(类型3,代码1、2、9、10,或者13)表明该端口是filtered(被过滤的)。偶尔地,某服务响应一个UDP报文,证明该端口是open(开放的)。如果几次重试后还没有响应,该端口被认为是open|filtered(开放|被过滤的)。这意味着该端口可能是开放的,也可能是包过滤器正在封锁信道。
Nmap 端口UDP探测
使用命令: nmap -sU -p端口号 目标
Nmap UDP探测加速
Linux 2.4.20 内核限制一秒钟只发送一条目标不可到达消息,Linux一秒钟一个报文的限制使65536个端口的扫描要花18小时以上。从防火墙后面扫,使用–host-timeout跳过慢速主机。 修改文件调整时间:/proc/system/net/IPv4 Linux系统中该路径下的icmp_ratelimit文件。(单位是毫秒) echo 100 > 路径(porc/system/net/IPv4/icmp_ratelimit) 修改文件 icmp_msgs_per_sec 每秒钟发送的数据包
P35、1-5------>Nmap 端口NULL探测技术
NULL探测介绍
NULL扫描是一种反向的扫描方法,通过发送一个没有任何标志位的数据包给服务器,然后等待服务器的返回内容。这种扫描的方法比SYN、TCP、UDP这些方法都要隐蔽很多,但是这种方法的准确度也是较低的,主要的用途是用来判断操作系统是否为windows,因为windows不遵守RFC 793标准,不论端口是开启还是关闭都能返回RST-ACK。
Nmap NULL探测
使用命令:nmap -sN -p80 IP地址 :NULL方法的精确度不高,端口的状态返回的不是很准确,且NULL容易被过滤。
P36、1-6------>Nmap 端口FIN探测技术
FIN探测介绍
FIN表示关闭连接,RST表示连接重置。如果端口关闭,则返回RST;如果端口开放,则不做任何响应。
Nmap FIN探测
使用命令: nmap -sF -p80 IP地址
缺点:方法精确度不高,端口的状态返回不是很准确。FIN扫描容易被过滤。
P37、1-7------>Nmap 端口Xmas探测技术
Xmas探测介绍
设置FIN、PSH和URG标志位。除了探测报文的标志位不同,这三种扫描在行为上完全一致。如果收到一个RST报文,该端口被认为是closed(关闭的),而没有响应则意味着端口是open|filtered(开放或者被过滤的)。如果收到ICMP不可到达错误(类型3,代号1、2、3、9、10或者13),该端口就被标记为被过滤的。PSH表示有DATA数据传输、URG(紧急位):设置为1时,首部中的紧急指针有效;为0时,紧急指针没有意义。 这些扫描的关键优势是它们能躲过一些无状态防火墙和报文过滤路由器。另一个优势是这些扫描类型甚至比SYN扫描还要隐秘一些。
Nmap XMas探测
使用命令: nmap -sX -p80 目标
ip.addr==目标IP地址(wireshark筛选)
p38、1-8------>Nmap 端口ACK探测技术
ACK探测介绍
这种扫描的特点在于不能确定open(开放的)或者open|filtered(开放或者过滤的)端口。它用于发现防火墙规则,哪些端口是被过滤的。 ACK扫描探测报文只设置ACK标志位(除非使用 --scanflags,手动设置标志位)。当扫描未被过滤的系统时,开放的和关闭的端口都会返回RST报文。Nmap把它们标记为unfiltered(未被过滤的),意思是ACK报文不能到达,但至于它们是open(开放的)或者closed(关闭的)无法确定。不响应的端口或者发送特定的ICMP错误消息(类型3,代号1、2、3、9、10,或者13)的端口,标记为filtere(被过滤的)。
Nmap ACK探测
使用命令: nmap -sA -p端口号 目标
P39、1-9------>Nmap 端口TCP窗口探测技术
TCP窗口探测
窗口扫描和ACK扫描完全一样。它通过检查返回的RST报文的TCP窗口域做到这一点。在某些系统上,开放端口用正数表示窗口大小(甚至对于RST报文)而关闭端口的窗口大小为0.因此,当收到RST时,窗口扫描不总是把端口标记为filtered,而是根据TCP窗口值是正数还是0,分别把端口标记为open或者closed。 该扫描依赖于互联网上少数系统的实现细节,因此不能永远相信它。不支持它的系统会通常返回所有端口closed(一台机器没有开放端口也是又可能的)。如果大部分被扫描的端口是closed,而一些常见的端口(22、25、53)是filtered,该系统就非常可疑。偶尔地,系统甚至会显示恰恰相反的行为。如扫描显示1000个开放的端口和3个关闭的或者被过滤的端口,那么那三个很有可能也是开放的端口。
Nmap TCP窗口探测
使用命令: nmap -sW -p端口号 目标
P40、1-10------>Nmap 端口TCPflag探测技术
TCP flag探测介绍
Nmap现成的扫描类型十分鸡肋,要想正真用好Nmap就要脱离现有的扫描类型。–scanflags选项允许通过指定任意TCP标志位来设定扫描策略。在收集一定的信息后,进行更加有针对性、准确性的扫描。 --scanflags 参数可以是一个数字标记值 (如:9–>表示PSH和FIN),但使用字符名更容易些。只要是URG、ACK、PSH、RST、SYN、FIN的任何组合就行。例如:–scanflags URGACKPSHRSTSYNFIN ,这就设置了所有的标志位,这个标志位间的顺序没有影响,也并不重要。 除了设置需要的标志位,也还可以设置TCP扫描类型(如:-sA或者-sF)。那个基本类型告诉Nmap怎样解释响应。例如:SYN扫描认为没有响应意味着filtered端口,而FIN扫描则认为是open|filtered。除了使用指定的TCP标记位,Nmap会和基本扫描类型一样工作,如果不指定基本类型,就默认使用SYN扫描。
Nmap TCP自定义Flag探测
使用命令: nmap --scanflag ACKUAG(标志位设置) -p端口号 目标
P41、1-11------>Nmap TCPMaimon探测技术
TCPMaimon探测介绍
Maimon扫描是用它的发现者Uriel Maimon命名的。这项技术和NULL、FIN,以及Xmas扫描完全一样,除了探测报文时FIN/ACK。根据RFC 793(TCP),无论端口开放或者关闭,都应该对这样的探测响应RST报文。然而如果端口开放,许多基于BSD的系统只是丢弃该探测报文。
Nmap TCPMaimon探测
使用命令: nmap -sM -p端口号 目标
P42、1-12------>Nmap 端口IP协议探测技术
IP协议探测介绍
协议扫描和UDP扫描的工作方式类似。它不是在UDP报文的端口域上循环,而是在IP协议域的8位上循环,发送IP报文头。报文头通常是空的,不包含数据,甚至不包含所申明的协议的正确报文头TCP、UDP和ICMP是三个例外。它们三个会使用正常的协议头,因为如果是不正常的协议头,系统会拒绝发送,而且Nmap有函数创建它们。协议扫描不是注意ICMP端口不可到达消息,而是ICMP协议不可到达消息。如果Nmap从目标主机收到任何协议的任何响应,Nmap就把那个协议标记位open。ICMP协议不可到达错误(类型3,代号2)导致协议被标记位closed。其它ICMP不可到达协议(类型3,代号1、3、9、10,或者13)导致协议被标记为filtered(虽然同时他们证明ICMP是open)。如果重试之后仍没有收到响应,该协议就被标记为open|filtered。
Nmap IP协议扫描探测
使用命令: nmap -sO -p端口号 目标
P43、1-13------>Nmap端口僵尸机探测技术
僵尸机探测介绍
该方法不会有报文从我们真实机上发送到目标ip,它是通过僵尸机作为跳板来进行探测,隐蔽性很高。
僵尸机探测原理图
open(开放)
收到响应IP序列号会进行加一操作。
close(关闭)
filtered(过滤)
主机先与可以信任的僵尸机进行访问,获得僵尸机的IP序列号;然后通过僵尸机的ip去访问目标主机,目标机的反应会传给僵尸机,如果有响应,僵尸机的IP序列号会加一,其余情况IP序列号不会改变;最后是通过序列号来判断目标开放与否。
Nmap利用僵尸机探测
使用命令: nmap -Pn -p- -sl 僵尸机 ip(可加冒号来指明具体端口) 目标 参数说明:
- -Pn:不进行ping扫描;
- -p-:对所有端口进行探测;
- -sl:使用僵尸机;
真实机上发送到目标ip,它是通过僵尸机作为跳板来进行探测,隐蔽性很高。