一个精准的扫描工具会给渗透初级阶段带来许多帮助 ,这篇文章分享两个常用的扫描工具。
amap
arp-scan
说起扫描工具,不得不提到大名鼎鼎的Nmap,amap和nmap功能类似,是一个网络层面的主动扫描器(所谓主动,扫描者向被扫描者主动发起带有探测性质的数据包)实际的扫描结果是劣于nmap,不过多款扫描器的结合,在信息收集结果中会有这更全面的结果!
在实际的渗透工作中,banner信息是可以人为修改的,不要认为80端口一定是web服务!因此,在使用amap时,建议用-A,利用应用层握手包的机制来判断收集的结果!
在系统中,能看到amp的使用说明及其详细参数
amap的命令演示
postscan 模式
amap以端口方式进行扫描,格式如下,要跟上IP地址和全部的端口范围,也可指定端口范围。
─# amap -P 192.168.10.63 1-65535
图中所示: 运行postscan 模式,amp工具由thc这家机构开发出的,这家机构开发的工具是非常不错的!其扫描过程所用的时间大于nmap
-B主要判断该端口下的应用服务是什么
如图:能知道这个IP开放了10089号端口,并且运行了SSH服务
-A
比-B的参数会更准确,使用应用层数据包去判定端口下的服务类型(根据特定的规则去判断)
跟nmap作对比,发现nmap会更详细一些!能查出设备类型和Mac地址,结果会精准一些!
amap的存放有三个固定规则的文件,当扫描判定就需要这三个文件作为规则来进行判定
任意看一个文件
┌──(root💀kali)-[/etc/amap]
└─# cat appdefs.resp
服务类型对应规则的匹配,比如在回应报文中包含了ssh-字符串,就可以判断SSH服务等等,可以看到规则数量不是很多,机制比较简单。
amap还可以指定UDP协议的探测,命令如下
└─# amap -P -u 192.168.10.63 1-200
在探测结果中,我们看到有两个端口是FILTERED状态,说明可能是在防火墙保护下的开放端口! 无法判断到底是不是开放的关闭的!
在实际的渗透工作中不要盲目的去相信任何一款扫描工具的结果,因为都是基于规则文件识别。
amap是作为nmap的有限补充的演示
我先用nmap 扫描一个地址,并定向到一个san63文件,图中是扫描出的结果
└─# nmap 192.168.10.63 -oM /scan63.txt
再使用amap去补充nmap后扫描的结果,从而进行补全
二层主机扫描arp-scan
互联网还有个别名叫做网际网络,通常以三层路由协议来进行通讯,但是在局域网中,通信的主要方式还是以二层硬件地址为主!
在做渗透工作时,谈到二层网络时,大部分情景你已经进入了局域网内部,要发现内网主机会用到arp-scan这个命令,注意的是Arp地址解析是不能够跨网段来使用的,只能在本网段使用。在扫描结果上来看,二层的主机发现比三层的主机发现结果要可靠准确很多,原因在于三层防火墙的屏蔽会造成很多不便!而二层网络中很少部署防火墙等三层设备。
命令演示
─# arp-scan 192.168.10.1
如图:能看到IP地址所解析的Mac地址,设备型号等信息
还可以对应网段去扫描
└─# arp-scan 192.168.10.0/24
└─# arp-scan 192.168.10.0:255.255.255.0
如图:存在大量的存活主机,能看到主机名,Mac地址,设备名称
具体的命令参数
我当前主机的网卡只有一个网卡,因此不指定也是默认这块网卡
若是有多块网卡,命令书写:
└─# arp-scan -I eth1 192.168.10.0:255.255.255.0
-f
先不覆盖的重定向到一个文件,这个hostname.txt文件中存放了三个IP地址。
# echo '192.168.10.75' >> hostname.txt
# echo '192.168.10.75' >> hostname.txt
# echo '192.168.10.77' >> hostname.txt
利用-f 扫描指定文件,如果局域网内有里文件中的IP地址主机,方才显示出来─# arp-scan -f hostname.txt
-l 注意是小写L
我的网卡是:
加上-l 他会扫描我这个IP地址所在的网段,看起来是更省事了
└─# arp-scan -l
-r 主机的扫描的次数
在设备性能不足的情境下,可以利用此命令,多发送探测报,更加精准的判断主机的情况
-i 降低扫描间隔时间,避免流量突发
VLAN技术产生的背景就是在多网段下划分,避免广播,更加安全。
但是在arp数据包头结构中是不包含802.1q(vlan id), 这个-Q的命令参数可以在arp报头中添加该字段
在不加 -Q参数下,通过抓包,看一下arp报文的结构
看到了arp的请求和回应报文
里面并没有802.1Q的格式
在arp缓存列表不失效的情况下,再次运行 -Q的参数命令,添加vlan id为8的
在以太网数据帧后面添加了一个802.1q的报文
RTT时间是指:一个报文的来回时间,判断网络通信效率,如果rtt时间过长,就要考虑网络设备的问题
└─# arp-scan 192.168.10.63 -D
说起802.3和ethII还是很有意思的
两者间的报文区别
原始的二层包头结构 以太网2的数据报文
└─# arp-scan 192.168.10.63 -L
观察IEEE802.3的报文
现在针对以太网的网络二层结构主流是eth2的报文,还有一套就是IEEE802.3报文
现在的以太网标准事实标准是eth2 。
DIX (DEC 因特尔 施乐)三家公司制定了以太网事实标准,后期还有IEEE工程协会制定了802.2-3的协议。
坊间猜测IEEE设定的这歌802.2.3的报文协议太过完美,在互联网发展过程中,推行不下去这样复杂的协议,各大厂商比较拒绝,可惜802.2.3没有成为以太网事实标准。
可能802的协议工作效率慢一些,在一些通信质量要求高的情景下,可以采用这个协议(典型的用途:生成树协议等网络之间的协议)
-a 类似打补丁的意思,参数后面一定要跟十六进制表示
例如,像在arp数据报文中添加 11111的数据
查下11111的十六进制表示
arp-scan 192.168.10.63 -A 2b67
在抓取arp报文中发现了数据,这样的数据报文就显得与众不同
还可以修改arp二层包头的原mac地址等,不会影响通讯,比较少见,不做演示了