NMAP学习笔记
nmap(Network Mapper)是一款用于网络扫描和安全审计软件开源软件,支持Windows、Mac、Linux等多个平台。同时,很多网络管理员也用它来进行网络设备管理、服务升级和主机监控。NMAP使用原始的IP包来探测网络上存活的主机、服务、操作系统等各种信息。NMAP被设计用来进行大型网络的扫描,但也可以用来对单个目标进行扫描。Nmap还曾在20部电影大屏幕上出现过。
一、下载安装。
Windows下有exe安装包以及图形界面,我感觉使用起来最方便。Linux和Mac下也都有RPM和DMG安装包,安装相对简单,使用上可能命令行的场景比较多,具体使用哪个版本就看各人喜好了。

二、主机发现
2.1 常规扫描
简单的在命令后加ip地址,可以进行常规扫描,查看主机是否存活以及开放的端口。
nmap 11.133.171.200
2.2 Ping 扫描
类似于Ping命令,仅执行Ping扫描,可以快速发现主机是否存活。
nmap -sn 11.133.171.1-254
如果想看具体的过程,可以加上 --packet-trace 参数,这样在返回结果之前,可以看到每一步的交互过程。
2.3 TCP SYN Ping 扫描
通常情况下,Nmap默认Ping扫描是使用TCP ACK和ICMP Echo请求对目标进行是否存活的响应,当目标主机的防火墙阻止这些请求时,可以使用TCP Syn Ping扫描。
TCP协议是TCP/IP协议族中的面向连接的、可靠的传输层协议,允许发送和接收字节流形式的数据。为了使服务器和客户端以不同的速度产生和消费数据,TCP提供了发送和接收两个缓冲区。TCP提供全双工服务,数据同时能双向流动。通信的每一方都有发送和接收两个缓冲区,可以双向发送数据。
nmap -PS -v 11.133.171.1-254
2.4 TCP ACK Ping 扫描
nmap -PA -v 11.133.171.1-254
使用 -PA 选项可以进行 TCP ACK Ping 扫描,它与 TCP Syn Ping 是非常类似的,唯一的区别是设置TCP的标志位是ACK而不是SYN,使用这种方式扫描可以探测组织SYN包或ICMP Echo请求的主机。
2.5 UDP Ping 扫描
nmap -PU -v 11.133.171.1-254
-PU 选项是发送一个空的UDP报文到指定端口,如果目标主机响应则返回一个ICMP端口不可达错误,如果目标主机不是存活状态则会返回各种ICMP报错信息。
2.6 ICMP Ping Types 扫描
ICMP (Internet Control Message Protocol)是Internet控制报文协议。它是TCP/IP协议族的一个子协议用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些消息虽然并不传输用户数据,但是对于用户数据的传递起着重要作用。
ICMP Echo 方式扫描
nmap -PE -v 11.133.171.1-254
使用ICMP时间戳Ping扫描
nmap -PP -v 163.com
使用ICMP地址掩码Ping扫描
nmap -PM -v 11.133.171.1-254
2.7 ARP Ping 扫描
nmap -PR 11.133.171.1-254
这个选项通常用在扫描局域网时,在本地局域网中防火墙不会禁止ARP请求,这就使它的扫描更加高效。
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议,其功能:主机将ARP请求广播到网络上的所有主机,并接收返回消息,确定目标IP地址的物理地址,同时将IP地址和硬件地址存入本机ARP缓存中,下次请求时直接查询ARP缓存。
三、端口扫描
端口是指接口电路中的一些寄存器,这些寄存器分别用来存放数据信息、控制信息和状态信息,相应的端口分别称为数据端口、控制端口和状态端口。
端口状态。NMAP提供了6个端口状态,分别是Open、Closed、Filtered、Unfiltered、Open|Filtered、Closed|Filtered。
时序选项。NMAP提供了T0-T5几个时序选项,分别是从慢到快的扫描方式。
3.1 常用扫描方式
nmap -p 445 11.133.171.1-254
-p用来指定端口或端口范围。-F选项可以快速的扫描端口,但并不是所有的端口都扫描。NMAP默认是使用随机的顺序对端口进行扫描,使用 -r选项则可以使用排序顺序进行扫描。
四、服务识别与探测
Nmap通过Nmap-service可以探测主机的端口,以及该端口对应的服务,甚至可以进一步探索版本号、主机名、设备类型等信息。
4.1 版本探测
使用 nmap -sV 11.133.171.141 可以启用版本探测,这并不仅仅是端口探测,而是通过相应的端口对应相应的服务,根据服务指纹识别出相应的版本。
使用 nmap -sV -A 11.133.171.141 可以看到更加详细的信息和更加直观的方式。
4.2 操作系统探测
在网络扫描过程中,对操作系统版本的探测非常重要。最常见的操作系统探测方法是利用TTL也就是数据包的存活时间,不同的操作系统的TTL也是不同的,可以根据这些TTL进行操作系统探测。
使用 nmap -O 11.133.171.141 可以启用操作系统探测。Nmap在扫描过程中,经常会发送一系列报文,--version-intensity 选项可以为每个报文赋予1-9之间的值,表示扫描时的强度,强度越高准确度越高速度相应就慢,强度越低准确度越低速度就快。
五、定时扫描
这里的定时扫描区别于Linux系统的Crontab定时任务,是一系列Nmap提供的可配置的定时选项,通过这些选项我们可加快或者减慢扫描速度,也可以延时、定时扫描,其提供的这些选项更多的是用来逃逸防火墙、IDS(入侵检测系统)。
并行扫描组。
放弃缓慢的目标主机。可以通过--host-timeout参数指定对主机的扫描时间。
nmap --host-timeout 100ms 11.133.171.122
六、防火墙与IDS
网络防火墙就是一个位于计算机和它所连接的网络之间的软件(或硬件)。防火墙可以关闭不使用的端口,而且还能禁止特定端口的流出通信。
IDS是英文“Intrusion Detection Systems”的缩写,意思是入侵检测系统。主要是依照一定的安全策略,通过软件、硬件,对网络、系统的运行状况进行监视,尽可能发现各种攻击企图、攻击行为或攻击结果,以保证网络系统资源的机密性、完整性和可用性。
6.1 报文分段
| 选项 | 解释 |
|---|---|
| -f | 报文分段 |
| --mtu number | 指定偏移大小 |
| -D ip,ip,ip | RND:number |
| -sI | 源地址欺骗 |
| --source-port port-number | 源端口欺骗 |
| --data-length number | 指定发包长度 |
| --randomize-hosts | 目标主机随机排序 |
| --spoof-mac 0 | MAC地址欺骗 |
七、使用NSE脚本进行信息收集
NMAP使用--script参数可以调用NSE脚本。
NMAP的NSE脚本是用Lua程序创作,提供强大的信息搜集功能。
搜集的信息主要包括:IP信息(地理位置、开放端口)、WHOIS信息、EMAIL信息、IP反查、DNS信息搜集(A记录、CNAME记录等)、系统信息、后台打印机服务漏洞、系统漏洞扫描、WEB漏洞扫描等。
NMAP学习笔记的更多相关文章
- nmap学习笔记-扫描格式
习惯性的前言: 之前曾经零零星星的学习过一段时间的nmap,但是因为用的少,后续有慢慢的放下了,这次正好借着工作上的机会重新学习一下nmap,并记录在此. nmap端口状态: open:应用程序在该端 ...
- shell学习笔记
shell学习笔记 .查看/etc/shells,看看有几个可用的Shell . 曾经用过的命令存在.bash_history中,但是~/.bash_history记录的是前一次登录前记录的所有指令, ...
- 《Web安全攻防 渗透测试实战指南》 学习笔记 (四)
Web安全攻防 渗透测试实战指南 学习笔记 (四) Nmap Network Mapper 是一款开放源代码的网 ...
- 《Web安全攻防 渗透测试实战指南》 学习笔记(一)
Web安全攻防 渗透测试实战指南 学习笔记 (一) 第一章 信息收集 在信息收集中,最重要是收集服务器的配置信息和网站敏感信息(域名及子域名信息目标网站系统.CMS指纹.目标网站真实I ...
- Web安全攻防(简)学习笔记
Web安全攻防-学习笔记 本文属于一种总结性的学习笔记,内容许多都早先发布独立的文章,可以通过分类标签进行查看 信息收集 信息收集是渗透测试全过程的第一步,针对渗透目标进行最大程度的信息收集,遵随&q ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
随机推荐
- 【JavaWeb】EL 表达式
EL 表达式 简介 EL(Expression Language),即表达式语言. EL 表达式主要是代替 jsp 页面中 表达式脚本 在 jsp 页面中进行数据的输出,因为 EL 表达式在输出数据的 ...
- 【SpringBoot】Spring Boot,开发社区讨论交流网站首页。
初识Spring Boot,开发社区讨论交流网站首页. 文章目录 初识Spring Boot,开发社区讨论交流网站首页. 1.项目简介 2. 搭建开发环境 JDK Apache Maven Intel ...
- 【Spring】Spring的事务管理 - 2、声明式事务管理(实现基于XML、Annotation的方式。)
声明式事务管理 文章目录 声明式事务管理 基于XML方式的声明式事务 基于Annotation方式的声明式事务 简单记录 - 简单记录-Java EE企业级应用开发教程(Spring+Spring M ...
- C#中foreach的实现原理
C#中foreach的实现原理 在探讨foreach如何内部如何实现这个问题之前,我们需要理解两个C#里边的接口,IEnumerable 与 IEnumerator. 在C#里边的遍历集合时用到的相关 ...
- postgresql插件安装
postgresql安装包自带插件安装: 1.编译安装插件 # root用户 # postgresql安装过程省略 # 进入解压包的contrib目录 cd postgresql-10.6/contr ...
- layui表格数据统计
//执行一个 table 实例 table.render({ elem: '#demo' ,height: 420 ,url: '/demo/table/user/' //数据接口 ,title: ' ...
- ASP.NET Core错误处理中间件[4]: 响应状态码页面
StatusCodePagesMiddleware中间件与ExceptionHandlerMiddleware中间件类似,它们都是在后续请求处理过程中"出错"的情况下利用一个错误处 ...
- Vijos-P1103题解【线段树】
本文为原创,转载请注明:http://www.cnblogs.com/kylewilson/ 题目出处: https://www.vijos.org/p/1103 题目描述: 一条马路从数轴0到L,每 ...
- Linux Ubuntu系统版本通过Crontab设置定时任务的执行
Linux Ubuntu系统版本通过Crontab设置定时任务的执行 本文由本人收集网络信息总结而来 特别鸣谢:https://linux.zone/2258 1 crontab 简单介绍以及语法使用 ...
- SpringCloud Alibaba Nacos注册中心源码浅析
一.前置了解 1.1 简介 Nacos是一款阿里巴巴推出的一款微服务发现.配置管理框架.我们本次对将对它的服务注册发现功能进行简单源码分析. 1.2 流程 Nacos的分析分为两部分,一部分是我们的客 ...