关于nmap——最全的基础解析
导语:大白经过数次的“挖洞”失败经历后,大白发现他对于目标的信息收集还是不够完善和详细。对此他进行了深刻的反思,并找到他的学长进行请教。于是,他的学长就通过连接发给他了一个“探测神器”nmap与“SQL注入神器”SQLMap。可能大多数新手不知道怎么使用,下面就由面包牛奶来介绍一下nmap的用法吧!
SQLMap教程在下面: (SQLMap用法链接全网最详细——SQLMap的学习笔记)
nmap介绍
NMAP全称为Network Mapper。它是一款开源代码的网络探测和安全审核tools。它的用途是快速地扫描大型网站,你也可以大材小用,用它扫描单个主机也没有问题 (个人觉得扫描局域网用kali自带的ARP-SCAN 。Nmap可以使用原始IP报文来发现网络上有一些主机,为我们提供目标主机应用程序名和版本号,及其服务运行在什么操作系统的版本信息,包括使用什么类型的报文过滤器/防火墙系统等。所以Nmap通常用于安全审核,是许多网络空间安全专业人员选择查看整个网络的信息,管理服务升级计划,以及监视主机和服务运行的必备工具。
一、nmap简单操作(针对的是不带防火墙的)
Nmap所识别的6个端口状态: 基础:nmap -p <端口号> + ip 1.open(开放的) 应用程序正在该端口接收TCP 连接或者UDP报文。发现这一点常常是端口扫描 的主要目标。 2.closed(关闭的) 关闭的端口对于Nmap也是可访问的(它接受Nmap的探测报文并作出响应), 但没有应用程序在其上监听 3.filtered(被过滤的) 由于包过滤阻止探测报文到达端口, Nmap无法确定该端口是否开放。 这使得扫描速度明显变慢。 4.unfiltered(未被过滤的) 未被过滤状态意味着端口可访问,但Nmap不能确定它是开放还是关闭。 只有用于映射防火墙规则集的ACK扫描才会把端口分类到这种状态。 用其它类型的扫描如窗口扫描,SYN扫描,或者FIN扫描来扫描未被过滤的端口可以帮助确定 端口是否开放。 5.open|filtered(开放或者被过滤的) 当无法确定端口是开放还是被过滤的,Nmap就把该端口划分成 这种状态因此Nmap无法确定该端口是开放的还是被过滤的。 UDP,IP协议, FIN,Null,和Xmas扫描可能把端口归入此类。 6.closed|filtered(关闭或者被过滤的) 该状态用于Nmap不能确定端口是关闭的还是被过滤的。 它只可能出现在IPID Idle扫描中。
主机扫描 基础:nmap + 扫描方式(Ss,Sc…)+ ip -sL (列表扫描):列表扫描可以很好的确保您拥有正确的目标IP。
-sP (Ping扫描):该选项告诉Nmap仅仅 进行ping扫描 (主机发现),然后打印出对扫描做出响应的那些主机。 当特权用户扫描局域网上的目标机时,会发送ARP请求(-PR), ,除非使用了–send-ip选项。 -sP选项可以和除-P0)之外的任何发现探测类型-P* 选项结合使用以达到更大的灵活性。
-P0 (无ping):通常Nmap在进行高强度的扫描时用它确定正在运行的机器。用-P0禁止主机发现会使Nmap对每一个指定的目标IP地址 进行所要求的扫描。所以如果在命令行指定一个B类目标地址空间(/16), 所有 65,536 个IP地址都会被扫描。 -P0的第二个字符是数字0而不是字母O。
-PS [portlist] (TCP SYN Ping):默认目的端口为80 (可以通过改变nmap.h) 文件中的DEFAULT-TCP-PROBE-PORT值进行配置,但不同的端口也可以作为选项指定。 甚至可以指定一个以逗号分隔的端口列表(如 -PS22,23,25,80,113,1050,35000), 在这种情况下,每个端口会被并发地扫描。
-PA [portlist] (TCP ACK Ping): Linux Netfilter/iptables 通过 --state选项支持这一特性,它根据连接状态把报文 进行分类。
-PU [portlist] (UDP Ping):该扫描类型的主要优势是它可以穿越只过滤TCP的防火墙和过滤器。
-PR (ARP Ping):最常见的Nmap使用场景之一是扫描一个以太局域网。 如果您真的不想要ARP扫描,指定 --send-ip。
-n (不用域名解析):告诉Nmap 永不对它发现的活动IP地址进行反向域名解析。
-R (为所有目标解析域名):告诉Nmap 永远 对目标IP地址作反向域名解析。
–system-dns (使用系统域名解析器):希望使用系统自带的解析器,就指定该选项 (通过getnameinfo()调用一次解析一个IP)
二、nmap使用脚本探测
1.有防火墙一般 + -pn 防止被加入黑名单
-sv ip (目标机器服务信息)
-A(综合扫描) -V(显示扫描过程) -T4(定时模板数字越高扫描越快) ip(操作系统服务信息)
-SC(调用脚本) -sv(探测开放端口以确定服务/版本信息) -o(操作系统) ip (脚本探测操作系统)
-sp \ -sn CIDR(所有主机) -ox text.xml(写入信息的脚本)(nmap主机发现输出信息)
脚本(自带的)
-- script
windows在安装nmap的script文件夹里
kali在/user/share/namp/script中
-Sv --script valn ip
-Sv --script="version discovely" ip
-Sv --sccript="not exploit" ip (exploit分类以外的)
-sv trace ip
更新script文件:nmap --script -updatedb
2.使用自己编写的脚本(API)探测
代码如下(示例):
portrule = function(host, port)
return port.protocol == "tcp"
and port.number == 80
and port.state == "open"
end
-- The Action Section --
action = function(host, port)
return "This IP ".. host.ip .." open 80 port!"
end
总结
提示:这里对文章进行总结: 例如:以上就是今天要讲的内容,本文仅仅简单介绍了nmap的使用,如果有疑问可以访问nmap官网或者评论!谢谢大家支持,我们下期再见!
|