专业做校园文化的网站,暴雪游戏排行榜前十名,长城宽带做网站,不是用于制作网页的软件今天给大家分享一下网络安全中常用的一款渗透工具Nmap的使用和安装教程
Nmap的介绍
nmap#xff08;Network Mapper#xff09;是一款开源免费的针对大型网络的端口扫描工具#xff0c;nmap可以检测目标主机是否在线、主机端口开放情况、检测主机运行的服务类型及版本信息…今天给大家分享一下网络安全中常用的一款渗透工具Nmap的使用和安装教程Nmap的介绍nmapNetwork Mapper是一款开源免费的针对大型网络的端口扫描工具nmap可以检测目标主机是否在线、主机端口开放情况、检测主机运行的服务类型及版本信息、检测操作系统与设备类型等信息。本文主要介绍nmap工具安装和基本使用方法。Nmap主要功能1.检测主机是否在线。例如列出响应TCP和/或ICMP请求或打开特定端口的主机。2.扫描指定主机/主机列表端口开放状态枚举目标主机上的开放端口。3.检测主机运行服务类型及版本检测远程设备上的网络服务以确定应用程序名称和版本号。4.检测操作系统版本和设备类型 确定网络设备的操作系统和硬件特性。5.可与脚本进行脚本交互使用Nmap脚本引擎NSE和Lua编程语言。Nmap工具下载和安装1.nmap官方下载路径https://nmap.org/download.html2.按照操作系统类型下载相应软件安装。3.Windows软件执行.exe软件安装。4.打开官网选择Windows下载。5.下载完成后点安装点击I Agree进入下一步。6.点击Next进入下一步。7.第一步更改安装位置第二步点击Install进入下一步。中间可能会出现一些插件需要安装也要注意电脑杀毒软件选择允许安装8.点击Next进入下一步9.点击Finish安装完成Nmap工具使用1、目标说明 扫描整个网段192.168.1.0/24 扫描域名所在网段 www.baidu.com/24 扫描特定限制地址段0-255.0-255.77.88 以上方式可以混合使用之间用空格分隔-iLinputfilename从列表输入目标nmap -sP -iL i:\ip.txt#当需要扫描的地址过多可以直接通过文件名导入。-iRhostnum随机选择目标nmap -sP -iR10#后接参数表示随机的个数0为不限制个数不合规的IP会自动忽略。--excludehost1,host2,host3,...排除不需要扫描的主机或段nmap -sP192.168.1.0/24 --exclude192.168.1.1-100,192.168.1.200-254--excludeexcludefile#排除的IP地址或段通过文件导入。2、参数说明nmap –iflist:查看本地主机的接口信息和路由信息 -A 选项用于使用进攻性方式扫描 -T4指定扫描过程使用的时序总有6个级别0-5级别越高扫描速度越快但也容易被防火墙或IDS检测并屏蔽掉在网络通讯状况较好的情况下推荐使用T4-oX test.xml将扫描结果生成 test.xml 文件如果中断则结果打不开 -oA test.xml: 将扫描结果生成 test.xml 文件中断后结果也可保存 -oG test.txt: 将扫描结果生成 test.txt 文件 -sn:只进行主机发现不进行端口扫描 -O:指定Nmap进行系统版本扫描 -sV: 指定让Nmap进行服务版本扫描 -pport ranges: 扫描指定的端口 -sS/sT/sA/sW/sM:指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式来对目标主机进行扫描 -sU: 指定使用UDP扫描方式确定目标主机的UDP端口状况-scriptscript name:指定扫描脚本 -Pn 不进行ping扫描 -sP:用ping扫描判断主机是否存活只有主机存活nmap才会继续扫描一般最好不加因为有的主机会禁止ping -PI:设置这个选项让nmap使用真正的ping(ICMP echo请求)来扫描目标主机是否正在运行。 -iL1.txt:批量扫描1.txt中的目标地址 -sL: List Scan 列表扫描仅将指定的目标的IP列举出来不进行主机发现 -sY/sZ: 使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况 -sO: 使用IP protocol 扫描确定目标机支持的协议类型 -PO:使用IP协议包探测对方主机是否开启 -PE/PP/PM:使用ICMP echo、 ICMP timestamp、ICMP netmask 请求包发现主机 -PS/PA/PU/PY:使用TCP SYN/TCP ACK或SCTP INIT/ECHO方式进行发现 -sN/sF/sX: 指定使用TCP Null, FIN, and Xmas scans秘密扫描方式来协助探测对方的TCP端口状态 -e eth0指定使用eth0网卡进行探测 -f:--mtuval: 指定使用分片、指定数据包的 MTU. -bFTP relay host: 使用FTP bounce scan扫描方式 -g指定发送的端口号 -r: 不进行端口随机打乱的操作如无该参数nmap会将要扫描的端口以随机顺序方式扫描以让nmap的扫描不易被对方防火墙检测到 -v 表示显示冗余信息在扫描过程中显示扫描的细节从而让用户了解当前的扫描状态 -n:表示不进行DNS解析 -Ddecoy1,decoy2[,ME],...: 用一组 IP 地址掩盖真实地址其中 ME 填入自己的 IP 地址-R 表示总是进行DNS解析。 -F:快速模式仅扫描TOP100的端口 -SIP_Address: 伪装成其他 IP 地址 --ttlval: 设置 time-to-live 时间 --badsum: 使用错误的 checksum 来发送数据包正常情况下该类数据包被抛弃如果收到回复说明回复来自防火墙或 IDS/IPS --dns-servers:指定DNS服务器 --system-dns:指定使用系统的DNS服务器 --traceroute:追踪每个路由节点 --scanflagsflags: 定制TCP包的flags --top-portsnumber:扫描开放概率最高的number个端口 --port-ratioratio: 扫描指定频率以上的端口。与上述 --top-ports类似这里以概率作为参数 --version-trace: 显示出详细的版本侦测过程信息 --osscan-limit: 限制Nmap只对确定的主机的进行OS探测至少需确知该主机分别有一个open和closed的端口 --osscan-guess: 大胆猜测对方的主机的系统类型。由此准确性会下降不少但会尽可能多为用户提供潜在的操作系统 --data-lengthnum: 填充随机数据让数据包长度达到 Num --ip-optionsoptions: 使用指定的 IP 选项来发送数据包 --spoof-macmac address/prefix/vendor name:伪装 MAC 地址 --version-intensitylevel: 指定版本侦测强度0-9默认为7。数值越高探测出的服务越准确但是运行时间会比较长。 --version-light: 指定使用轻量侦测方式(intensity2)--version-all: 尝试使用所有的probes进行侦测(intensity9)--version-trace: 显示出详细的版本侦测过程信息nmap192.168.1.0/24 -exclude192.168.1.10#扫描除192.168.1.0外的该网段的其他地址nmap192.168.1.0/24 -excludefile f:/1.txt#扫描除给定文件中的地址以外的其他地址nmap -sF -T4192.168.1.0#探测防火墙状态3、主机发现 -sL: List Scan 列表扫描仅将指定的目标的IP列举出来不进行主机发现。 -sP: ping扫描也叫地毯式ping发送一个ICMP请求和一个TCP请求到80端口检测活动主机。同时如果扫描同一局域网的话还会发ARP包进行探测。 -sn: Ping Scan 只进行主机发现不进行端口扫描。 -Pn: 将所有指定的主机视作开启的跳过主机发现的过程。 -PS/PA/PU/PY[portlist]: 使用TCP SYN/TCP ACK或SCTP INIT/ECHO方式进行发现。 -PE/PP/PM: 使用ICMP echo、 ICMP timestamp、ICMP netmask 请求包发现主机。 -PO[protocol list]: 使用IP协议包探测对方主机是否开启。 -PR: ARP ping,因为不需要arp 解析所以会更快更可靠即使指定了iP的请求方式也会默认发送ARP探测局域网内推荐。 -n/-R: -n表示不进行DNS解析-R表示总是进行DNS解析。 --dns-serversserv1[,serv2],...: 指定DNS服务器。 --system-dns: 指定使用系统的DNS服务器 --traceroute: 追踪每个路由节点4、端口扫描基础 默认扫描主句超过1660个TCP端口6种端口状态 open端口是开放的。 closed端口是关闭的。 filtered端口被防火墙IDS/IPS屏蔽无法确定其状态。 unfiltered端口没有被屏蔽但是否开放需要进一步确定。open|filtered端口是开放的或被屏蔽Nmap不能识别。 closed|filtered 端口是关闭的或被屏蔽Nmap不能识别5、端口扫描技术 Nmap的端口扫描参数都是s开头第二个字母为技术所选字母大写。 -sS(TCY SYN 扫描)半开放扫描, SYN/ACK表示端口在监听(开放),而RST(复位)表示没有监听者。如果数次重发后仍没响应, 该端口就被标记为被过滤。如果收到ICMP不可到达错误(类型3,代码1,2,3,9,10,或者13),该端口也被标记为被过滤 -sT(TCP connect 扫描)TCP connect方式使用系统网络API connect向目标主机的端口发起连接如果无法连接说明该端口关闭。该方式扫描速度比较慢而且由于建立完整的TCP连接会在目标主机上留下记录信息不够隐蔽。所以TCP connect是TCP SYN无法使用才考虑使用的方式 -sU(UDP 扫描)UDP扫描用于判断UDP端口的情况向目标主机的UDP端口发送探测包如果收到回复ICMP port unreachable就说明该端口是关闭的如果没有收到回复那说明该UDP端口可能是开放的或者屏蔽的。因此通过反向排除法的方式来判断哪些UDP端口是可能处于开放状态的。 -sN(Null 扫描)如果扫描系统遵循该RFC, 当端口关闭时,任何不包含SYN, RST,或者ACK位的报文会导致一个RST返回,而当端口开放时,应该没有任何响应,只要不包|含SYN, RST,或者ACK,任何其它三种(FIN, PSH, and URG)的组合都行。不设置任何标志位tcp标志头是0 -sF(FIN 扫描)只设置TCP FIN标志位 -sX(Xmas 扫描)只设置FIN,PSH,和URG标志位 -sA(TCP ACK 扫描)向目标主机的端口发送ACK包如果收到RST包说明该端口没有被防火墙屏蔽没有收到RST包说明被屏蔽。该方式只能用于确定防火墙是否屏蔽某个端口可以辅助TCP SYN的方式来判断目标主机防火墙的状况 -sW(TCP 窗口扫描)通过检查返回的RST报文的TCP窗口城确定窗口是否关闭,开放端口为正,关团端口为0,但是,这种情况很多系统并不适用,可以作为参考 -sM TCP Maimon 扫描 发送的TCP探测报文是FIN/ACK,无论端口开放或者关闭,都应该相应RST -sO(IP协议扫描)扫描目标主机开放了哪些协议,而不是端口,扫描会遍历所有IP协议号,并且可以通过-p参数指定要扫描的协议号 -sIzombie host[:probeport](Idlesan)高级扫描,拖藏自身IP地址,可以指定你以为可能被信任的主机IP进行扫描,参考https://nmap.org/book/idlescan.html -bftp relay host(FTP弹跳扫描)FTP允许用户连接到一台FTP服务器,然后要求文件送到一台第三方服务器,这个特性大多被封禁,但是现在仍可以利用,用来绕过防火墙,因为一般FTP服|务器会有比web服务器更高的内网连通权限 --scanflags(定制的TCP扫描)可以任意定制TCP标志位,包括: URG, ACK,PSH, RST, SYN,FIN等任意组合,组合顺序不重要,除了设置标志位,还可以指定TCP扫描类型,不指定到默认SYN描6、端口说明和扫描顺序 默认情况下Nmap用指定的协议对端口1到1024以及nmap-services文件中列出的更高的端口进行扫描。 -pport ranges只扫描指定的端口 可以单个端口,也可以1-99的范围端口,开始和结束省略代表1和65535,两端都省略表示扫描所有端口号,在-sO的协议号扫描中-p参数可以指定扫描的协号:当同时扫描TCP和UDP时, nmap-sU -sS -p U:53,137,T:23,3389,8010.10.172.87,不加端口限制,默认最大 -F快速扫描 Fast mode – 快速模式仅扫描TOP100的端口 -r(不要按随机顺序扫描端口)Nmap默认是随机扫描常用端口会前移用-r 选项可以强制按顺序扫描端口。 --top-portsnumber扫描开放概率最高的number个端口nmap的作者曾经做过大规模地互联网扫描以此统计出网络上各种端口可能开放的概率。以此排列出最有可能开放端口的列表具体可以参见文件nmap-services。默认情况下nmap会扫描最有可能的1000个TCP端口 --port-ratioratio扫描指定频率以上的端口。与上述--top-ports类似这里以概率作为参数让概率大于--port-ratio的端口才被扫描。显然参数必须在在0到1之间具体范围概率情况可以查看nmap-services文件7、服务与版本探测 -sV(版本探测)打开版本探测 -A(操作系统探测)打开操作系统探测 -sR(RPC 扫描)和端口扫描结合使用,对发现开放的端口执行命令,确定是否是RPC端口,如里是,打印详细信息。这作为-sV的一部分自动打开。由于版本探测包含它并且全面的多,所以-sR很少被需要。 --allports(不为版本探测排除任何端口)默认情况下nmap会跳过9100TCP端口以为打印机会打印一堆这种扫描请求。用--allports 可以不排除任何端口。 --version-intensityintensity(设置版本扫描强度)共有0-9个级别的探测强度,默认为7,强度值越高,扫描的越准确,也越慢,当探测报文通过nmap-service-probes port指示符注册到目标端口时,不论什么强度都会默认扫描 --version-light(打开轻量级模式)扫描强度为2 的别名 --version-all 尝试每个探测 扫描强度为9的别名 --version-trace(跟踪版本扫描活动)会同步打印正在扫描的调试信息是--packet-trace 的所得信息的子集。8、操作系统探测 nmap 发送大量的查询信息根据反馈对比自己对于系统描述的数据库最后确定操作系统类型。 -O(启用操作系统检测)也可以使用-A来同时启用操作系统检测和版本检测。 --osscan-limit(针对指定的目标进行操作系统检测)这个选项是只对发现一个打开或者关闭的TCP端口的主机进行操作系统检测以提高效率并且只在-O 或者-A 时起作用。 --osscan-guess;--fuzzy(推测操作系统检测结果)默认开启是指如果nmap不能确定操作系统那么会提供一个相近的匹配。9、时间和性能 nmap 开发的最高优先级是性能本地网络一个主机的默认扫描是1/5秒。 -T(设置时间模板)模板化选项,编号0-5,0-1躲避IDS;2降低扫描速度, 节约带宽和目标主机资源3默认选项4 假设用户网络健康加速扫描5极快模式,消耗更多的网络资源,追求速度降低准确性;2比3要慢10倍-T4禁止扫描延迟超过10ms的主机, -T5延迟不能超过5ms0、1、2都不是并行扫描,不适用于大数据量1的扫描 T4选项与--max-rtt-timeout1250--initial-rtt-timeout500等价,最大TCP扫描延迟为10ms。 T5等价于--max-rtt-timeout300--min-rtt-timeout50--initial-rtt-timeout250--host-timeout900000,最大TCP扫描廷迟为5ms --scan-delaymilliseconds--max-scan-delaymilliseconds(调整探测报文的时间间隔)对于对扫描有速率或阈值限制的时候这个选项可以调整扫描的发包间隔避免被IPS --host-timeoutmilliseconds(放弃低速目标主机)默认对于扫描超过1800000ms半个小时的主机进行忽略并且在这半个小时中nmap是在同时扫描别的主机并没有停止忽略了就不会有结果输出。 --min-hostgroupmilliseconds--max-hostgroupmilliseconds(调整并行扫描组的大小)nmap并发扫描是先分组再扫描,所分的组大小大于设定的最小组,小于最天1组,必须是扫描完整个组才会出扫描报告,一般最小组为5,最大为1024,nmap一般采用先小组出结果,然后增加组的大小增快扫描速度。 --min-parallelismmilliseconds--max-parallelismmilliseconds(调整探测报文的并行度)指定一个范围nmap 会根据网络状况和主机性能自动调整并行报文探测的数量并行度数量一般是1到几百。 --min-rtt-timeoutmilliseconds--max-rtt-timeoutmilliseconds--initial-rtt-timeoutmilliseconds(调整探测报文超时)nmap会根据上一个探测报文自动计算时值,本地网络max 100ms比较合适,有路由的话可以先ping测试看延迟,然后init是往返时间的2倍, max是3-4倍,通常, max不能小于100ms,不能超过1000ms, min很少使用。Nmap常见面试问题常见的Nmap命令\-A 选项用于使用进攻性方式扫描\-T4指定扫描过程使用的时序总有6个级别0-5级别越高扫描速度越快但也容易被防火墙或IDS检测并屏蔽掉在网络通讯状况较好的情况下推荐使用T4\-sn:只进行主机发现不进行端口扫描\-O:指定Nmap进行系统版本扫描\-sV: 指定让Nmap进行服务版本扫描\-pport ranges: 扫描指定的端口\-sS/sT/sA/sW/sM:指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式来对目标主机进行扫描\-sU: 指定使用UDP扫描方式确定目标主机的UDP端口状况\-scriptscript name:指定扫描脚本\-Pn 不进行ping扫描\-v 表示显示冗余信息在扫描过程中显示扫描的细节从而让用户了解当前的扫描状态面试问题-sV原理进行端口扫描并且Nmap根据这些返回的数据包在nmap-services中进行对比判断出端口所启动的服务以及版本号的。举例说明如果端口是TCP则Nmap通过连接到它来启动。Null探测probe等待五秒会自动标识。一旦建立了TCP连接Nmap就会监听大约五秒钟。许多常见服务包括大多数FTP、SSH、SMTP、Telnet、POP3和IMAP服务器都会在最初的欢迎横幅中标识自己。Nmap将其称为“NULL探测”因为Nmap只侦听响应而不发送任何探测数据。如果接收到任何数据Nmap会将其与Nmap服务探测文件中的大约3000个NULL探测签名进行比较在名为“Nmap服务探针文件格式”的部分中进行了描述。软匹配则会继续发送已软匹配的服务的probe来进行版本识别。网络安全学习资源分享:给大家分享一份全套的网络安全学习资料给那些想学习 网络安全的小伙伴们一点帮助对于从来没有接触过网络安全的同学我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线大家跟着这个大的方向学习准没问题。因篇幅有限仅展示部分资料朋友们如果有需要全套《网络安全入门进阶学习资源包》请看下方扫描即可前往获取