0x00:简介
在被动信息搜集工作完成后,需要在进一步的对目标进行主动信息搜集,这一阶段主要搜索的信息包括目标主机是否存活,上面开放了哪些端口,有哪些服务,服务系统是什么,开发服务的版本以及上面支撑系统运行的一些中间件或者其他软件的版本(后续可根据版本号查看是否有公开的漏洞问题),在目标主机发现的过程中,不仅要发现目标是否存活,还要发现其整个网段下的其他设备,同时,这些其他设备也应该像目标一样搜集其各种信息。
主动信息搜集是直接与系统目标进行交互通信,会有访问痕迹,大量的扫描可能会禁止你的 ip,这时可以通过代理或者肉鸡来进行相关的操作。
0x01:arp 协议
在七层模型中,arp 协议属于数据链路层,各层简单说明以及常用的协议如下:
arp 全名叫 address resolution protocol 地址解析协议,在通信过程中因为需要知道对方主机的 mac 地址,而这个工作就是 arp 来做的,也就是通过 ip 获取 mac。
arp 会发送一个广播,来问其他主机谁的 ip 是 x.x.x.x,其他主机收到广播后如果不是自己则忽略,如果是就会将自己的 mac 进行返回,另一端收到 mac 后就会将其缓存到自己的 arp 表中。
0x02:利用 arp 进行主机发现
二层主要协议是 arp,可以利用 arp 去进行网络发现,命令可以实用 arping,arping 后跟 ip 地址,可以用来探测目标是否在线,如下图:
如上图,直接跟 ip 会不断的给目标发包,而 c 参数是指定包的数量。当需要扫描网段时,可以写一个 shell 脚本更方便,示例如下:
#!/bin/bashif [ "$#" -ne 1 ];then echo "需要跟一个网卡参数,例如./arping.sh eth0" exitfiinterface=$1 prefix=$(ifconfig $interface | grep "inet " | cut -d 't' -f 2 | cut -d '.' -f 1-3)for addr in $(seq 1 254);do arping -c 1 $prefix.$addr | grep "reply from" | cut -d " " -f 4done
整体来说就是脚本使用时后跟网卡名称,然后利用 ifconfig 提取出来 ip 的前三段,最后用 for 循环第四段从 1 到 254,用 arping 去发现。使用如下:
首先需要赋予执行权限,命令:chmod u+x arping.sh。执行命令:./arping.sh eth0。如果不跟网卡参数,则会提醒需要跟一个网卡参数。
执行过程中可以使用 wireshark 看一下经过 eth0 网卡的流量,如下图:
这里注意的是,如果路由开启了 AP 隔离功能,则是 ping 不通的。
当 arping 出的结果可以将结果定向输出到一个文件中,下次需要看之前发现的目标是否还在线时,可以直接去 ping 文件中已有的 ip,节省时间,提高效率,shell 脚本示例如下:
#!/bin/bashif [ "$#" -ne 1 ];then echo "需要跟一个文件名称作为参数,例如./arping-txt.sh file" exitfifile=$1for addr in $(cat $file);do arping -c 1 $addr | grep "reply from" | cut -d " " -f 4done
执行结果示例如下:
0x03:总结
二层发现主要是利用 arp 协议进行发现其他主机,二层发现除了 arping 外其他工具和命令后续会继续介绍,因为当拿下一个机器时,可能环境的差异,有些命令没有有些命令有,所以了解每一层发现的命令是有必要的。关于 arp 的攻击因为篇幅原因后续会单独写一篇博客出来。