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学习笔记的更多相关文章

  1. nmap学习笔记-扫描格式

    习惯性的前言: 之前曾经零零星星的学习过一段时间的nmap,但是因为用的少,后续有慢慢的放下了,这次正好借着工作上的机会重新学习一下nmap,并记录在此. nmap端口状态: open:应用程序在该端 ...

  2. shell学习笔记

    shell学习笔记 .查看/etc/shells,看看有几个可用的Shell . 曾经用过的命令存在.bash_history中,但是~/.bash_history记录的是前一次登录前记录的所有指令, ...

  3. 《Web安全攻防 渗透测试实战指南》 学习笔记 (四)

    Web安全攻防 渗透测试实战指南   学习笔记 (四) Nmap                                       Network  Mapper    是一款开放源代码的网 ...

  4. 《Web安全攻防 渗透测试实战指南》 学习笔记(一)

    Web安全攻防 渗透测试实战指南   学习笔记 (一) 第一章   信息收集     在信息收集中,最重要是收集服务器的配置信息和网站敏感信息(域名及子域名信息目标网站系统.CMS指纹.目标网站真实I ...

  5. Web安全攻防(简)学习笔记

    Web安全攻防-学习笔记 本文属于一种总结性的学习笔记,内容许多都早先发布独立的文章,可以通过分类标签进行查看 信息收集 信息收集是渗透测试全过程的第一步,针对渗透目标进行最大程度的信息收集,遵随&q ...

  6. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  7. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  8. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  9. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

随机推荐

  1. Shiro配置Session检测时Quartz版本冲突

    项目背景: shiro 1.3 + quartz 2.x 2018-9-11 22:20:35补充: 经过测试,本人发现 ,通过实现 org.apache.shiro.session.mgt.Exec ...

  2. mmall商城用户模块开发总结

    1.需要实现的功能介绍 注册 登录 用户名校验 忘记密码 提交问题答案 重置密码 获取用户信息 更新用户信息 退出登录 目标: 避免横向越权,纵向越权的安全漏洞 MD5明文加密级增加的salt值 Gu ...

  3. 聊聊 g0

    很多时候,当我们跟着源码去理解某种事物时,基本上可以认为是以时间顺序展开,这是编年体的逻辑.还有另一种逻辑,纪传体,它以人物为中心编排史事,使得读者更聚焦于某个人物.以一种新的视角,把所有的事情串连起 ...

  4. 十五:SQL注入之oracle,Mangodb注入

    Access,Mysql,mssql,mangoDB,postgresql,sqlite,oracle,sybase JSON类型的数据注入: 键名:键值 {"a":"1 ...

  5. 【Linux】dlopen failed: /lib/lsiRAID.so: cannot open shared object file: No such file or directory

    遇到这个问题,首先第一反应,是看其他的服务器中是否有这个库文件,如果有的话直接cp过来一份就行 但是检查发现,其他的系统中也不存在lsiRAID.so这个库文件,很神奇.. 但是看日志持续报错,查看s ...

  6. 【Linux】ssh互信脚本

    使用互信脚本的时候,需要敲回车,但是shell脚本无法满足,所以需要用到expect脚本 rpm -qa | grep expect 如果没有的话,直接用yum安装即可 yum install exp ...

  7. allator 对springBoot进行加密

    1.对springboot项目添加jar包和xml文件 allatori.xml: <config> <input> <jar in="target/sprin ...

  8. Mybatis Plus 3.4版本之后分页插件的变化

    一.MybatisPlusInterceptor 从Mybatis Plus 3.4.0版本开始,不再使用旧版本的PaginationInterceptor ,而是使用MybatisPlusInter ...

  9. 欢迎来到 ZooKeeper 动物世界

    本文作者:HelloGitHub-老荀 Hi,这里是 HelloGitHub 推出的 HelloZooKeeper 系列,免费有趣.入门级的 ZooKeeper 开源教程,面向有编程基础的新手. Zo ...

  10. 网络编程 — Windows TCP服务端和客户端

    1. 服务端 #include <iostream> #include <signal.h> #include <forward_list> #include &l ...