最近由于工作需求,开始对Nmap进行一点研究,主要是Nmap对于主机活跃性的探测,也就是存活主机检测的领域。

Nmap主机探测方法一:同网段优先使用arp探测:

  当启动Namp主机活跃扫描时候,Nmap会对目标地址参数进行检查,如果与自身IP地址匹配到同一个子网内,Nmap会对该类目标采用arp协议进行探测。即使命令参数规定的是其他探测手段,也会先使用arp进行探测。这种方式效率高,速度快,但仅限于同一子网广播域中。

arp探测原理:

在广播域内广播arp request报文,例如 who has 192.168.0.1 tell 192.168.1.4(nmap本机ip),收到arp response报文即为活跃。可以得到目标主机mac地址。

 nmap -R 192.168.1.1
nmap -R 192.168.1.0/24
nmap 192.168.1.1
nmap 192.168.1.0/24

Nmap主机探测方法二:跨网段ICMP协议探测:

ICMP探测一ICMP echo:

  常规PING探测,原理即为ping命令一样,但由于ping命令的滥用导致FW或者很多OS都会闲置ping包。特点:速度快,但探测不准确。

  测试:执行下文命令 或者-sP换成-sN 都会发送icmp echo 和 icmp timestamp报文。此时DNS114.114.114.114对timestamp有回应(奇怪)。

 nmap -sP 114.114.114.114

ICMP探测二ICMP timestamp:

  nmap发送ICMP timestamp报文,活跃主机会响应该报文,响应报文中包含当前系统时间。该请求ICMP type值13。

  测试DNS 114.114.114.114 对icmp echo有回应 对icmp timestamp无回应。-PP只发timestamp报文。

 nmap -PP 114.114.115.115

ICMP探测三ICMP netmask:

  nmap发送ICMP netmask报文,活跃主机会响应该报文,响应报文中包含当前地址掩码。该请求ICMP type值17。

  测试DNS 114.114.115.115 对icmp netmask无回应。

 nmap -PM 114.114.115.115

Nmap主机探测方法三:TCP探测:

  如同常见的端口扫描原理,syn类的,ack类的,fin类的,空扫描等等。通过回应报文判断主机是否活跃。

 nmap -sT 114.114.114.114 #TCP connect scan[three hand-shakes]
nmap -sS 114.114.114.114 #TCP SYN scan[syn->recv ack]
nmap -sA 114.114.114.114 #TCP ACK scan
nmap -sW 114.114.114.114 #TCP Window scan
nmap -sM 114.114.114.114 #TCP Maimon scan
nmap -sN 114.114.114.114 # TCP Null scan
nmap -sF 114.114.114.114 #TCP FIN scan

Nmap主机探测方法四:UDP探测:

  UDP探测原理是根据活跃主机对未开放的端口会响应一个ICMP不可达报文来判断的。

 nmap -PU 114.114.114.114#默认发送空UDP报文到40125端口
nmap -sU 114.114.114.114 -p 44444 #-p 指定端口
nmap -sU 114.114.114.114 -p 53 -Pn #-Pn 绕过ping扫描

Nmap主机探测方法五:IP探测:

  发送空的也可以指定负载大小的IP报文,可能收到响应报文为ICMP不可达报文。

 nmap -sO 114.114.114.114
nmap -PO 114.114.114.114

  

    

Nmap的活跃主机探测常见方法的更多相关文章

  1. python nmap模块使用进行主机探测(ICMP)

    终于审核通过了......第一次用博客,想记录自己的学习情况,分享知识. 废话不多说,第一篇blog,大牛请轻喷. 资产清点首先需要进行主机探测,将存活主机统计下来再进行进一步的指纹识别及端口探测.若 ...

  2. DDos攻击的常见方法及防御方法

    什么是DDoS? DDoS是英文Distributed Denial of Service的缩写,意即“分布式拒绝服务”,那么什么又是拒绝服务(Denial of Service)呢?可以这么理解,凡 ...

  3. Nmap原理02 - 版本探测介绍(上)

    Nmap原理02 - 版本探测介绍(上) 1.介绍 本文将介绍如何通过修改或添加nmap-service-probes文件来实现对nmap中未知服务的探测,首先介绍服务和版本探测的相关信息,然后介绍服 ...

  4. Python爬虫突破封禁的6种常见方法

    转 Python爬虫突破封禁的6种常见方法 2016年08月17日 22:36:59 阅读数:37936 在互联网上进行自动数据采集(抓取)这件事和互联网存在的时间差不多一样长.今天大众好像更倾向于用 ...

  5. MSF魔鬼训练营-3.2.1活跃主机扫描

    概要: msf的arp_sweep .udp_sweep模块 Nmap -sn使用ping探测 -PU -sn 使用UDP协议端口探测 msf模块 arp_sweep     常用 ipv6_mult ...

  6. Linux下编程获取本地IP地址的常见方法

    转载于:http://blog.csdn.net/k346k346/article/details/48231933 在进行linux网络编程时,经常用到本机IP地址.本文罗列一下常见方法,以备不时之 ...

  7. C#图片处理常见方法性能比较

    C#图片处理常见方法性能比较 来自:http://www.cnblogs.com/sndnnlfhvk/archive/2012/02/27/2370643.html   在.NET编程中,由于GDI ...

  8. linux修改主机名的方法

    linux修改主机名的方法 用hostname命令可以临时修改机器名,但机器重新启动之后就会恢复原来的值. #hostname   //查看机器名#hostname -i  //查看本机器名对应的ip ...

  9. window对象中的常见方法

    <body><!-- window对象中的常见方法--><script type="text/javascript"> var timeid; ...

随机推荐

  1. C++实现顺序计算输入表达式的值

    #include <iostream> #include <cstring> #include <cctype>//判断字符类型需要的头文件 using names ...

  2. jquery easy ui 简单字段选择搜索实现

    code <!DOCTYPE html><html><head> <meta charset="UTF-8"> <title& ...

  3. 《FPGA全程进阶----实战演练》第二章之系统搭建

    1 系统方案 对于设计一款硬件平台,首先要确定整体框架,确定各个模块所需要的芯片以及电压分配情况.图2.6是笔者曾经设计的硬件平台系统. 图2.6系统框图 对于选定一个系统方案之后,接下来做的要先去查 ...

  4. Anaconda之常用命令

    1.查看环境列表:conda-env  list 2.删除环境:conda env remove -n tf1.2 3.创建指定python的环境:conda create -n tf1.2 pyth ...

  5. lambda小结

    新公司用Java8,所以搜了下文档,发现其主要是两个概念:Lambda表达式和函数式接口. Lambda是一段可执行的代码(类似匿名函数). Lambda的设计者们为了让Java现有的体系与Lambd ...

  6. Java 构造方法的执行过程(猜测)

    先说明一点,这篇帖子的内容都是我自己思考的结果,如有误,请务必及时告诉我,非常感谢. 起由: public class NewThread implements Runnable{ Thread t; ...

  7. Understanding the difficulty of training deep feedforward neural networks

    本文作者为:Xavier Glorot与Yoshua Bengio. 本文干了点什么呢? 第一步:探索了不同的激活函数对网络的影响(包括:sigmoid函数,双曲正切函数和softsign y = x ...

  8. mysql没有my.ini文件

    解决方法: 上面的任意一个文件拷贝一份,重命名my.ini.

  9. 通过json传递图片(base64编码)

    程序一: 后台代码: public ActionResult Index() { FileStream fs = new FileStream("e:\\file\\psb.jpg" ...

  10. 一、JSON解析与字符串化

    JSON.stringify() 序列化对象.数组或原始值 语法:JSON.stringify(o,filter,indent) o,要转换成JSON的对象.数组或原始值 filter,指定要序列化的 ...