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 ...
随机推荐
- shellSyntax.md
shell #! /bin/bash 头文件 echo -e 若字符串出现特殊字符,则特别处理 -n 不要在最后自动换行 ./filename.sh sh filename.sh r ...
- 哎,这让人抠脑壳的 LFU。
这是why哥的第 83 篇原创文章 让人抠脑壳的 LFU 前几天在某APP看到了这样的一个讨论: 看到一个有点意思的评论: LFU 是真的难,脑壳都给我抠疼了. 如果说 LRU 是 Easy 模式的话 ...
- 基于Jmeter实现Rocketmq消息发送
在互联网企业技术架构中,MQ占据了越来越重要的地位.系统解耦.异步通信.削峰填谷.数据顺序保证等场景中,到处都能看到MQ的身影. 而测试工程师在工作中,也经常需要和mq打交道,比如构造测试数据,触发某 ...
- Eclipse-Che 安装(Centos)
安装docker,然后执行:docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock -v /home/cheData:/dat ...
- MySQL全面瓦解16:存储过程相关
概述 大多数SQL语句都是针对一个或多个表的单条语句.但并非所有业务都这么简单,经常会有复杂的操作需要多条语句才能完成. 比如用户购买一个商品,要删减库存表,要生成订单数据,要保存支付信息等等,他是一 ...
- 通过show status 命令了解各种sql的执行频率
show status like 'Com_%'; Com_select | 1 执行select操作的次数,一次查询只累加1 Com_insert ...
- LeetCode501.二叉搜索树中的众数
题目,本题未做出,还有很多要学习 class Solution { public: vector<int>ans; int base,count,maxCount; void update ...
- ctfhub技能树—RCE—过滤cat
打开靶机 查看页面信息 构造payload 127.0.0.1 || ls 题目提示过滤了cat,但我还是想试试 果然不行 网页访问没有结果,应该和上题一样被注释了,使用和同样的方法进行解题 利用命令 ...
- 记录一下 ThreadLocal 与 WeakReference
ThreadLocal & WeakReference Thread整体的模块图 Thread -> ThreadLocalMap 对于继承了 WeakReference Entry本身 ...
- EFCore 5 新特性 —— Savepoints
EFCore 5 中的 Savepoints Intro EFCore 5中引入了一个新特性,叫做 Savepoints,主要是事务中使用,个人感觉有点类似于 Windows 上的系统还原点,如果事务 ...