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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值