nmap为什么这么强大之主机发现

Nmap为什么这么强大?

made by tdcoming!

1.概述

大家都知道,使用我们的nmap真尼玛强大,从发现主机,到端口探测,到服务发现,漏洞利用等等,无所不能。在信息收集方面可谓是不可缺少的神器。那么我们namp为什么这么强大,今天我们就来一起探究下。

2.nmap主机发现

首先介绍nmap的主机发现

nmap --help #查看nmap的一些使用参数,下图为主机发现参数

nmap为什么这么强大之主机发现_第1张图片

  • 列表内容 nmap -sL #把网络中可以进行扫描的主机列举出来,不进行扫描,没啥讲的
    只是简单的向本机的DNS进行一些地址解析(说明我的主机的IP是:192.168.1.188
nmap -sL 192.168.1.1/24  #sL使用

nmap为什么这么强大之主机发现_第2张图片


  • nmap -sn #进行ping探测,不进行端口扫描
nmap -sn 192.168.1.1 /24 #sn的使用

执行结果如下:
nmap为什么这么强大之主机发现_第3张图片
发现了15台活着的主机,我们使用wireshark抓包进行分析下:
nmap为什么这么强大之主机发现_第4张图片
总结:这就是nmap呀,发什么包来着,一个arp,这个-sn也不是很强大把,不就是一个arp协议的利用,多发了几个包而已,写个python,再来个多线程,还是可以实现的。


  • namp -Pn #跳过主机发现,进行直接进行更深层次的扫描。
nmap -Pn 192.168.1.1/24  #Pn的使用

执行结果如下(没啥好看的):
nmap为什么这么强大之主机发现_第5张图片
这什么操作,看不懂Pn这个命令,抓包看看吧!有图有效果!
nmap为什么这么强大之主机发现_第6张图片
还发上TCP包了,但是syn=1请求,就是没有人理,理了的也Reset,看来是发着包玩。


  • PS/PA/PU/PY #进行TCP的SYN探测/ACK探测/UDP探测/SCTP等探测
nmap -PS 192.168.1.1/24 #SYN探测
nmap -PA 192.168.1.1/24 #ACK探测
namp -PU 192.168.1.1/24 #UDP的探测
nmap -PY 192.168.1.1/24 #SCTP的探测

由于原理差不多,都是改变一些相应的参数进行探测,我们选取nmap -PA进行实验探究结果如下:
nmap为什么这么强大之主机发现_第7张图片
等了老半天,没有发现一个主角,太失望了。你看使用ping还能实现。这就有点说不过去吧,
还是大名鼎鼎的扫描工具就被一个PA毁了?
不行抓包看看,怎么回事吧。
nmap为什么这么强大之主机发现_第8张图片
我们可以看到我们的扫描主机188对我们的存在的188进行探测,其中我们的186还对他进行回包了
我们可以看到回包
nmap为什么这么强大之主机发现_第9张图片

这不是“睁眼瞎”?看来源代码要改改,哈哈,其实nmap还是很强大的,只是自己参数没用好罢了!


  • nmap -PO #使用ping进行探测
nmap -PO 192.168.1.186/24 

执行的效果:
nmap为什么这么强大之主机发现_第10张图片
效果还是不错的,还能发现一些服务,一共发现了9台主机,就是时间有点长,我们抓包看看!
nmap为什么这么强大之主机发现_第11张图片
原来主机的发现都是根据服务器返回的ACK,RESET判断,效果还是不错的!没有误判。


3.总结
原来nmap主机的发现都是通过自己构造一些特殊的数据报文进行发送,比如发送ack,发送
syn等等,我们也可以通过python里面的scapy构造发包。
4.另附上python主机发现代码

参考链接:http://blog.csdn.net/ski_12/article/details/63684778

#!/bin/bash
if ["$#" -ne 1]
then
    echo "Usage : ./arping1.sh [Interface]"
    exit
fi

interface=$1
prefix=$(ifconfig $interface | grep 'inet '| cut -d 't' -f 2 | cut -d ' ' -f 2 | cut -d '.' -f 1-3)
for addr in $(seq 1 254)
do
    arping -c 1 $prefix.$addr | grep "bytes from" | cut -d " " -f 5 | cut -d "(" -f 2 | cut -d ")" -f 1
done
#!/bin/bash

if ["$#" -ne 1]
then
    echo "Usage : ./pinger.sh [/24 network address]"
    exit
fi

prefix=$(echo $1 | cut -d '.' -f 1-3)

for addr in $(seq 1 254)
do
    ping -c 1 $prefix.$addr | grep "bytes from" | cut -d " " -f 4 | cut -d ":" -f 1
done

抛砖引玉,更多内容持续关注tdcoming!

你可能感兴趣的:(WEB安全)