最近由于工作需求,开始对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. laravel 5.1 性能优化对比 - 框架提供的方法

    写了一个项目发现性能不如人意. 于是便测试下, 看下性能瓶颈在什么地方. 使用 ab -n 20 http://www.lartest.com/ 软件环境: OS : windows 8.1 CPU: ...

  2. 登录centos虚拟机后显示-bash-4.1

    http://zhidao.baidu.com/link?url=KwpGOdwFw1oxnL71pvPlfRgbRL_IuQeYRzIYJjiDb2SnX0dQye5yUXqHAGSyuD6u2nD ...

  3. 【转载】C# 快速高效率复制对象另一种方式 表达式树

    1.需求 在代码中经常会遇到需要把对象复制一遍,或者把属性名相同的值复制一遍. 比如: public class Student { public int Id { get; set; } publi ...

  4. myslq的索引类型为MyISAM和BDB的表:复合索引下的自增长

    本文源自:http://www.himigame.com/mysql/781.html 3.6.9. 使用AUTO_INCREMENT 可以通过AUTO_INCREMENT属性为新的行产生唯一的标识: ...

  5. gen_server的一些猜测

    1. exit(Pid,Reason)貌似不会引起gen_server的terminate()的执行. 猜测依据:erlang编程指南的第十二章的272页 终止   当从 回调函数中的一个收到stop ...

  6. KEGG orthology (KO) 数据库简介

    KEGG, 简称京都基因组百科全书,包含了许多的数据库,对于研究基因功能来说,KEGG orthology 数据库是最基本的一个数据库: KEGG Orthology 简称KO, 对于每个功能已知的基 ...

  7. mysql中如何在命令行中,执行一个SQL脚本文件?

    需求描述: 在mysql数据库的使用中,有的时候,需要直接在shell的命令行中,执行某个SQL脚本文件, 比如,要初始化数据库,创建特定的存储过程,创建表等操作,这里进行一个基本的测试. 一般情况, ...

  8. 改善C#程序的建议5:引用类型赋值为null与加速垃圾回收

    http://www.cnblogs.com/luminji/archive/2011/04/07/2007205.html 在标准的Dispose模式中(见前一篇博客“C#中标准Dispose模式的 ...

  9. oracle 日期函数 求年的最后一天、第一天,月的最后一天

    add_months(trunc(to_date('2013','yyyy') ,'yyyy'),12)-1  2013年最后一天 trunc(to_date('2013','yyyy') ,'yyy ...

  10. 【VR】Leap Motion 官网文档 FingerModel (手指模型)

    前言: 感谢关注和支持这个Leap Motion系列翻译的朋友们,非常抱歉因为工作原因非常久没有更新,今后这个翻译还会继续(除非官方直接给出中文文档).本篇献给大家的是 <FingerModel ...