信息搜集 – 二层发现 arping[通俗易懂]

信息搜集 – 二层发现 arping[通俗易懂]0x00:简介在被动信息搜集工作完成后,需要在进一步的对目标进行主动信息搜集,这一阶段主要搜索的信息包括目标主机是否存活,上面开放了哪些端口,有哪些服务,服务系统是什么,开发服务的版本以及上面支撑系统运行的一些中间件或者其他软件的版本(后续可根据版本号查看是否有公开的漏洞问题),在目标主机发现的过程中,不仅要发现目标是否存活,还要发现其整个网段下的其他设备,同时,这些其他设备也应该像目标一样搜…

大家好,又见面了,我是你们的朋友全栈君。

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/bash
if [ "$#" -ne 1 ];then
  echo "需要跟一个网卡参数,例如./arping.sh eth0"
  exit
fi

interface=$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 4

done

整体来说就是脚本使用时后跟网卡名称,然后利用 ifconfig 提取出来 ip 的前三段,最后用 for 循环第四段从 1 到 254,用 arping 去发现。使用如下:

首先需要赋予执行权限,命令:chmod u+x arping.sh。执行命令:./arping.sh eth0。如果不跟网卡参数,则会提醒需要跟一个网卡参数。

请输入图片描述

执行过程中可以使用 wireshark 看一下经过 eth0 网卡的流量,如下图:

请输入图片描述

这里注意的是,如果路由开启了 AP 隔离功能,则是 ping 不通的。

当 arping 出的结果可以将结果定向输出到一个文件中,下次需要看之前发现的目标是否还在线时,可以直接去 ping 文件中已有的 ip,节省时间,提高效率,shell 脚本示例如下:

#!/bin/bash
if [ "$#" -ne 1 ];then
  echo "需要跟一个文件名称作为参数,例如./arping-txt.sh file"
  exit
fi
file=$1
for addr in $(cat $file);do
   arping -c 1 $addr | grep "reply from" | cut -d " " -f 4
done

执行结果示例如下:

请输入图片描述

0x03:总结

二层发现主要是利用 arp 协议进行发现其他主机,二层发现除了 arping 外其他工具和命令后续会继续介绍,因为当拿下一个机器时,可能环境的差异,有些命令没有有些命令有,所以了解每一层发现的命令是有必要的。关于 arp 的攻击因为篇幅原因后续会单独写一篇博客出来。


                                                                          公众号推荐:aFa攻防实验室

                         分享关于信息搜集、Web安全、内网安全、代码审计、红蓝对抗、Java、Python等方面的东西。

                                                                           信息搜集 - 二层发现 arping[通俗易懂]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138721.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 计算机如何寻址_PLC编程,如何学习SCL语言?SCL语言编程入门

    计算机如何寻址_PLC编程,如何学习SCL语言?SCL语言编程入门随着现代工控技术的不断发展,可能很多使用过PLC的技术人员都有这么一个感受:传统的‘梯形图’编程方式在面对越来越复杂的控制要求时,已显得力不从心。其实,现在很多大品牌的中高级PLC都支持国际电工委员会IEC61131标准中规范的五种编程语言的混合编程,即梯形图(LD)、结构化文本(ST)、流程图(SFC)、指令表(IL)和功能块(FB)。在这五种编程语言中,梯形图+结构化文本是一…

    2022年9月28日
  • 基于Docker运行弹性集群的五个关键点之:运行高可用模式

    基于Docker运行弹性集群的五个关键点之:运行高可用模式

    2022年2月22日
  • mysql如何批量添加数据_mysql如何批量insert数据

    mysql如何批量添加数据_mysql如何批量insert数据mysql批量insert数据的方法:1、循环插入;2、减少连接资源,拼接一条sql;3、使用存储过程;4、使用【MYSQLLOCAL_INFILE】。本教程操作环境:windows7系统、mysql8.0.22版,该方法适用于所有品牌电脑。mysql批量insert数据的方法:方法一:循环插入这个也是最普通的方式,如果数据量不是很大,可以使用,但是每次都要消耗连接数据库的资源。大致思维如下(我…

    2022年10月23日
  • MNIST是什么(plist是什么意思)

    初始的迷茫我想很多菜鸟和我一样,开始零基础学习机器学习,没办法火啊,为了钱大家都是冲呀。估计很多人开始学习ML,就一头雾水,完全不知道在说什么。因为学习模式和学习其他语言完全不同,我们知道学习其他语言的时候,第一个程序就是打印“HelloWorld”。其实机器学习是在某个框架下,使用某种语言,来解决问题。因此对于零基础的菜鸟而言,我们需要先学习好某种语言,可以推荐Python,因为功能强…

    2022年4月17日
  • 填坑之旅——ADODB.Recordset 错误 ‘800a0cc1‘

    填坑之旅——ADODB.Recordset 错误 ‘800a0cc1‘asp填坑之旅——ADODB.Recordset错误’800a0cc1’,不知道是不是你想要的,希望你能避过这个坑。

    2022年7月14日
  • python进阶(3)json文件与python字典的转化[通俗易懂]

    python进阶(3)json文件与python字典的转化[通俗易懂]序列化与反序列化按照某种规则,把内存中的数据保存到文件中,文件是一个字节序列,所以必须要把内存数据转换成为字节序列,输出到文件,这就是序列化;反之,从文件的字节恢复到内存,就是反序列化;pytho

    2022年8月6日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号