Kali linux 学习笔记(十)主动信息收集——二层发现(arping、nmap、netdiscover、scapy) 2020.2.20

前言

被动信息收集可能过时
主动信息收集更为及时,有以下几点:

  • 直接与目标系统交互通信
  • 无法避免留下访问的痕迹
  • 使用受控的第三方电脑进行探测
  • 使用代理或控制的主机
  • 做好被封杀的准备
  • 使用噪声迷惑目标
  • 淹没真实地探测流量

扫描:发送不同的探测,根据返回结果判断目标状态

发现是指:识别活着的主机并输出一个IP地址列表
有2、3、4层发现

这节是二层发现:

  • 使用场景:已经控制机器,进行进一步渗透,可以用来发现有哪些机器可以进一步渗透
  • 优点:扫描速度快、可靠
  • 缺点:不可路由
  • arp协议:抓包
  • 工具:arping、nmap、netdiscover、scapy

1、二层发现——arping

指令

arping 1.1.1.1 -c 1 #-c指定包的数量
arping 1.1.1.1 -d #检查是否有arp欺骗
arping 1.1.1.1 -w 2 #等待答复时间
arping -c 1 1.1.1.1 | grep "bytes from" | cut -d" " -f 5 | cut -d "(" -f 2 | cut -d ")" -f 1 #只显示IP相关

脚本

arping.sh

#用于扫描某个IP段
#!/bin/bash
if["$#" -ne 1] then #脚本执行时后面参数不为1
 echo "Example  ./arping.sh eth0"
 exit
fi

interface=$1 #$1是第一个参数
prefix=$(ifconfig $interface | grep "inet addr" | cut -d ":" -f 2 | cut -d " " -f 1 | 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

执行

chmod u+x arping.sh
./arping.sh eth0

arping2.sh

#用于扫描某文件中指定的一些IP
#!/bin/bash
if["$#" -ne 1] then #脚本执行时后面没跟参数
 echo "Example  ./arping.sh eth0"
 exit
fi

file=$1 #$1是第一个参数
for addr in $cat $file):do
 arping -c 1 $addr | grep "bytes from" | cut -d " " -f 5 | cut -d "(" -f 2 | cut -d ")" -f 1
done

2、二层发现——nmap

建议全面掌握,后面会拎出来再讲讲
指令有:

nmap 1.1.1.1-254 -sn #-sn就只做ping扫描不做端口扫描,nmap可以指定IP段
nmap -iL iplist.txt -sn #-iL调用iplist,扫描里面记录的IP

3、二层发现——netdiscover

可用于无线和有限网络
可以主动也可以被动
指令有:

netdiscover -i eth0 -r 1.1.1.0/24 #类似上面扫描IP段
netdiscover -l iplist.ext #类似上面扫描指定IP
netdicover -p #被动发现,准确率差不多,响应速度慢

4、二层发现——scapy

作为python库调用
也可作为单独的工具使用
抓包分析创建修改注入网络流量

启动时可能报错,是以下这个问题:

apt-get install python-gnuplot #可能有缺少这个东西

指令

scapy #启动
ARP().display() #显示ARP函数的内容
arp=ARP()
arp.pdst="192.168.1.1" #赋值
sr1(arp) #发包
sr1(arp).display() #显示返回的包内容

脚本

arp1.py

#!/usr/bin/python
import logging #导入日志
import subprocess #系统指令
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
form scapy.all import *

if len(sys.argv) != 2: #命令后面如果没跟参数
 print("Example : ./arp_disc.py eth0")
 sys.exit
 
interface = str(sys.argv[1])
ip = subprocess.check_output("ifconfig " + interface+" | grep 'inet addr' | cut -d ':' -f 2 | cut -d ' ' -f 1",shell=True).strip()
prefix = ip.split('.')[0] +"." + ip.split('.')[1]+"." + ip.split('.')[2] + "."

for addr in range(0,254):
 answer = sr1(ARP(pdst=prefix+str(addr)),timeout=0.1,verbose=0) #verbose=0指错误不显示
 if answer == None:
  pass
 else:
  print(prefix + str(addr))

执行

python arp1.py eth0

arp2.py

#!/usr/bin/python
import logging #导入日志
import subprocess #系统指令
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
form scapy.all import *

if len(sys.argv) != 2: #命令后面如果没跟参数
 print("Example : ./arp_disc.py eth0")
 sys.exit
 
filename = str(sys.argv[1])
file = open(filename,'r')

for addr in file:
 answer = sr1(ARP(pdst=addr.strip()),timeout=0.1,verbose=0)
 if answer == None:
  pass
 else:
  print(addr.strip())

结语

二层发现主要在于速度快
4个工具各有千秋
都得熟悉
毕竟在渗透时你也不知道目标主机里的环境怎样
自己学习时可配合wireshark抓包查看

下一节是三层发现

发布了28 篇原创文章 · 获赞 2 · 访问量 1043

猜你喜欢

转载自blog.csdn.net/weixin_44604541/article/details/104417143
今日推荐