Kali学习笔记7:三层发现

三层发现:发送ICMP/IP数据包探测

第一种方式:

就是很简单的Ping命令:

不过linux的ping命令和windows的ping命令不一样,它会默认不停止地发数据包

我们可以通过-c参数来设置

第二种方式:

traceroute命令:

这里会显示所有路由跳过的IP,***说明被防火墙阻挡了(通常防火墙默认阻挡ICMP数据包)。

实现原理是基于TTL值的改变

我们发现基本无法获得有用的信息,所以这种方式不推荐

  

Linux的ping命令还有参数-R可以设置:可以实现路由追踪

接下来我们可以写一个脚本来做三层发现:

#!/bin/bash
if [ "$#" -ne 1 ];then
  echo "Usage - ./ping [interface]"
  echo "Excample - ./ping 192.168.1.0"
  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

如果是从windows系统复制过来的脚本

注意:

vi ping

:set fileformat=unix

赋予执行权限:

chmod u+x ping

执行脚本即可:

 

效果不错,找到了我局域网中存活的ip

接下来利用强大的Scapy工具:

这种方式通常没有任何效果,原因:

防火墙阻挡ICMP数据包,这里基本不会有所发现

脚本:

pinger1.py:

#!/usr/bin/python
 
import logging
import subprocess
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
from scapy.all import*
 
if len( sys.argv ) !=2:                            
   print "Usage - ./pingger.py [/24 network address]"
   print "Example - ./pinger.py 172.16.36.0"
   print "Example will perform an ICMP scan of the 192.168.1.0/24 range"
   sys.exit()
 
address = str(sys.argv[1])
 
prefix = address.split(".")[0] + '.' + address.split(".")[1] + '.' + address.split(".")[2] + '.'
 
for addr in range(1,254):
   answer=sr1(IP(dst=prefix+str(addr))/ICMP(),timeout=0.1,verbose=0)
   if answer ==None:
     pass;
   else:
     print prefix+str(addr)

扫描已存在文件中的ip:

pinger2.py:

#!/usr/bin/python
 
import logging
import subprocess
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
from scapy.all import*
 
if len( sys.argv ) !=2:                             
   print "Usage - ./pingger.py [/24 network address]"
   print "Example - ./pinger.py 172.16.36.0"
   print "Example will perform an ICMP scan of the 192.168.1.0/24 range"
   sys.exit()
 
filename = str(sys.argv[1])
file=open(filename,"r")
 
for addr in file:
   answer=sr1(IP(dst=addr.strip())/ICMP(),timeout=0.1,verbose=0)
   if answer ==None:
     pass;
   else:
     print addr.strip()

第三种方式:Nmap(推荐,这个工具很强大)

nmap中-sn参数可以探测目标ip是否活着:

第四种方式:fping命令(ping命令的加强版)

可以对地址段Ping

后边输出的是一堆unreachable的报告,原因是防火墙阻挡ICMP数据包:

第五种方式:hping命令

hping命令很强大,这里只用其中一部分功能:

 我分别给存在的ip和不存在的ip发送:结果不同

当然,也可以写成hping脚本

原文地址:https://www.cnblogs.com/xuyiqing/p/9301914.html