Kali Linux 渗透测试:主动信息收集工具 三层发现(7)

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

 

优点:可路由,速度比较快

缺点:速度比二层慢,经常被边界防火墙过滤

协议:IP、icmp(二层发现主要是利用arp协议)

 

一、ping

第一种方式:就是很简单的Ping命令

root@kali:~# ping 10.14.4.132

ping 三层发现

 

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

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

 

二、traceroute

第二种方式:traceroute命令:

root@kali:~# traceroute www.cnblogs.com

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

 

执行脚本即可:ping -R 三层发现

 

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

 

Scapy工具

接下来利用强大的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)

 

脚本:pinger2.py,扫描已存在文件中的ip

#!/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(推荐,这个工具很强大)

 

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

root@kali:~# nmap 10.14.4.129 -sn

nmap

 

四、fping

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

 

可以对地址段Ping:

root@kali:~# fping -g 10.14.4.0/24

fping 三层发现

 

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

 

五、hping

第五种方式:hping命令,hping命令很强大,这里只用其中一部分功能:

 

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

root@kali:~# hping3 10.14.4.146 --icmp -c 2

hping三层发现

 

当然,也可以写成hping脚本!

头像
  • ¥ 189.0元
  • 市场价:269.0元
  • ¥ 79.0元
  • 市场价:99.0元
  • ¥ 818.0元
  • 市场价:1688.0元
  • ¥ 198.0元
  • 市场价:298.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: