概述:本文着点于渗透测试中渗透测试中进行信息收集的一个分块——主机发现,这里将介绍一些简单工具的的初步使用,带领大家迈入信息收集的世界.......
首先,我们需要创造一个简单的实验环境(同一子网):
1.开启虚拟机——主机运行环境
2.打开kali-linux——操作环境
3.打开Metasploitable-linux——目标主机环境
其次,我们查看一下目标主机的IP地址
在Metasploitable-linux终端中输入默认用户名和密码【msfadmin】,再输入命令【ifconfig】获得其IP地址:【192.168.245.130】
接下来,我们将使用kali_linux 中的一些工具去发现目标主机
当然,我们不必着急,这里先另外的打开kali中的wireshark,使我们的实验过程可视化:
选择网卡【enth0】
此时是一些无用的数据包,不作具体探索。
一切准备之后,我们将进入我们本次实验的主要任务:
分别运用工具:ping , nc , netdiscover , nmap 去发现主机【192.168.245.130】
1.ping
(1)在kali-linux中打开终端,输入命令【ping 192.168.245.130】
(2)查看wireshark,我们发现源主机与目标主机有数据包的请求和回复,可以确定目标主机192.168.245.130存活(开机的)
我们会细致的发现,此时数据包的传输协议是【icmp】,我们大胆的猜测【ping】使用的传输通信协议是【icmp】。
通过参考相关文章,【icmp】是一个基于网络层的通讯协议,【ping】命令的具体实现基于icmp协议。此时,我们将获取一个经验:在使用wireshark时可以使用ICMP进行过滤,使得ping的可视化过程更加清晰。
icmp具体信息参考:(123条消息) ICMP协议详解和作用_njyuxinag的博客-CSDN博客_icmp的作用
(3)关闭目标主机【192.168.245.130】,创造目标主机不在线的情况。
再去【ping 192.168.245.130】
我们发现所有的数据来自【192.168.245.129】,并不是【192.168.245.130】,所以判断主机192.168.245.130是并不存活的,即关机的。
(4)观察一下wireshark的情况,但首先我们清除一下之前的数据,再重新开始
之后我们观察到
我们细致的发现,此时目标地址是广播,广播的协议是【ARP】,具体信息是一直广播询问目标主机【192.168.245.130】,但并没有得到回复,进一步说明目标主机是关机的。
当然,我们会疑惑,这个【ARP】是什么协议。通过搜索,我们了解到ARP是一个基于网络层的协议,当源主机和目标主机连接时,源主机会得到目标主机的ip映射的ARP缓存,即物理地址。当源主机和目标主机再次连接时。源主机会先从ARP缓存中查询目标主机的MAC地址。
具体信息访问:(123条消息) ARP协议详解_孤风落影的博客-CSDN博客_arp协议
2.nc
(1)开启目标主机Metasploitable-linux,IP是【192.168.245.130】;
开启操作主机kali【192.168.245.129】;
打开wireshark.
在源主机中输入命令
nc -nvz 192.168.245.130 1-65535
查看主机192.168.245.130端口打开的情况(是否有应用服务)
通过nc扫描的结果来看,目标主机存在很多打开的端口,说明目标主机是开机存在的
从wireshark可以看到,nc的端口扫描是从大到小,一旦能建立起三次握手,就发送FIN+ACK断开连接,然后扫描下一个端口。
(2)关闭目标主机,再进行端口扫描,
观察发现nc从65535端口一直向下扫描,并没有打开的端口,同时wireshark也显示在广播请求主机【192.168.245.130】,并没有任何回应,证实目标主机是关机不存在的。
(3)为进一步了解nc,我们再次打开目标主机,创造一个监听端口【4444】,实时监听源主机对此端口的相关操作,输入命令
源主机扫描连接到目的主机端口4444,kali中输入命令
nc -nv 192.168.245.130 4444
扫描连接之后可以发送信息,目标主机的监听窗口的显示得到验证。
nc的功能很强大,更多高级功能需要进一步学习探索.......
3.netdiscover
(1)在kali主机中直接输入命令
netdiscover
运行它的默认配置然后扫描局域网中所有的机器
通过扫描,发现目标主机【192.168.245.130】是存在的,wireshark的可视化进一步验证。此时的协议依然是ARP,ARP是将IP地址转化物理地址的网络协议。通过该协议,可以判断某个IP地址是否被使用,从而发现网络中存活的主机。
(2)直接使用命令【netdiscover】扫描的时间会非常长,因为它是从B类IP地址开始扫描,通过wireshark我们可以观察的到:
为了更快速地在扫描同一子网的主机,我们使用升级版命令
netdiscover -i 【指定网卡】 -r 【指定IP】
netdiscover -i eth0 -r 192.168.245.130
扫描速度很可观,我们很快确定目标主机是开机存活的。
(3)关闭目标主机【192.168.245.130】,再进行扫描
没有发现主机【192.168.245.130】,说明该主机是关机的。
netdiscover功能很多,有待我们进一步去探索。
4.nmap
(1)扫描一个单一的IP,使用命令
nmap 192.168.245.130
观察发现目标主机的多个端口是开放的,说明此主机是存活的。同时,通过wireshark发现nmap扫描基于协议TCP。
(2)扫描同一子网中的多个主机,使用命令
nmap 192.168.245.1/24
除了主机【192.168.245.130】之外,我们还发现了其他的主机的存在,当然目标主机时开机存活的 ,此时wireshark捕获的数据更加繁多,但基本基于TCP协议。
诚然,nmap的功能很多很强大,在此作出初步介绍。
总结,关于主机发现的各个工具有相似处,又有各自的特点,对于不同的目的,我们可以选择不同的工具,以增加发现主机的i效率。当然,之下我们的任务是在记忆和使用之中去熟悉它们以及与它们有关的协议等等。值得肯定的是,我们已经进步了一小点........