前言
被动信息收集可能过时
主动信息收集更为及时,有以下几点:
- 直接与目标系统交互通信
- 无法避免留下访问的痕迹
- 使用受控的第三方电脑进行探测
- 使用代理或控制的主机
- 做好被封杀的准备
- 使用噪声迷惑目标
- 淹没真实地探测流量
扫描:发送不同的探测,根据返回结果判断目标状态
发现是指:识别活着的主机并输出一个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抓包查看
下一节是三层发现