信息收集基础
这里的“情报”指的是目标网络、服务器、应用程序的所有信息。
渗透测试人员需要使用资源尽可能地获取要测试目标的相关信息。
- 信息收集获得信息的方法可以分成两种:
- 被动扫描主要指的是在目标 无法察觉的情况下 进行的信息收集,例如,如果想了解一个远在天边的人,你会怎么做呢?显然可以选择在搜索引擎中去搜索这个名字。其实这就是一次对目标的被动扫描。
- 主动扫描一般都是针对目标发送特制的数据包,然后根据目标的反应来获得一些信息。
- 扫描之后将会获得的信息包括:目标网络的结构,目标网络所使用设备的类型,目标主机上运行的操作系统,目标主机上所开放的端口,目标主机上所提供的服务,目标主机上所运行的应用程序。
- 选择扫描目标的nmap语法如下所示。
- 扫描指定IP主机:nmap 192.168.169.133
- 扫描指定域名主机:nmap www.nmap.com
- 扫描指定范围主机:nmap 192.168.169.1-20
- 扫描一个子网主机:nmap 192.168.169.0/24
- 对目标端口扫描的nmap语句
- 扫描一个主机的特定端口:nmap -p 22 192.168. 169.1
- 扫描指定范围端口:nmap -p 1-80 192.168. 169.1
- 扫描100个最为常用的端口:nmap -F 192.168. 169.1
- 对目标端口状态扫描的nmap语句
- 使用TCP全开扫描:nmap -sT 192.168. 169.1
- 使用TCP半开扫描:nmap -sS 192.168. 169.1
- 使用UDP扫描:nmap -sU -p 123,161,162 192.168. 169.1
- 对目标的操作系统和运行服务进行扫描的nmap语法如下所示。
- 扫描目标主机上运行的操作系统:nmap -O 192.168.169.1
- 扫描目标主机上运行的服务类型:nmap -sV 192.168.169.1
主机状态扫描
基于ARP的活跃主机发现技术
- ARP的中文名字是“地址解析协议”,主要用在以太网中。
- 需要明确的是,所有的主机在互联网中通信的时候使用的是IP地址,而在以太网中通信时使用的却是硬件地址(也就是常说的MAC地址)
- 现在来编写一个利用ARP实现的活跃主机扫描程序,这个程序有很多种方式可以实现,首先借助Scapy库来完成。其核心思想就是要产生一个ARP请求,首先查看Scapy库中ARP类型数据包中需要的参数
- 这里面的大多数参数都有默认值,其中,hwsrc和psrc分别是源硬件地址和源IP地址。
- 这两个地址不用设置,发送的时候会自动填写本机的地址。
- 唯一需要设置的是目的IP地址pdst,将这个地址设置为目标即可
- 另外,因为发送的是广播数据包,所以需要在Ether层进行设置,首先查看一下Ether的格式
- 这一层只有三个参数:
- dst是目的硬件地址,
- src是源硬件地址,这里面src会自动设置为本机地址。
- 所以只需要将dst设置为ff:ff:ff:ff:ff:ff即可将数据包发到网络中的各个主机上
- 下面构造一个扫描192.168.26.100的ARP请求数据包并将其发送出去
ans,unans=srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst="192.168.26.100"),timeout=2)
- 对这个请求的回应进行监听,如果得到回应,那么证明目标在线,并打印输出这个主机的硬件地址:
ans.summary(lambda (s,r): r.sprintf("%Ether.src% %ARP.psrc%"))
# lambda:需要在Python 环境下运行 :进入python解释器,
# 导入 scapy模块: from scapy.all import *,再进行下列代码的书写
- 如果发出这个数据包,但是没有收到这个数据包回应,则说明目标主机不在线
基于ICMP的活跃主机发现技术
-
ICMP位于TCP/IP协议族中的网络层,它的目的是用于在IP主机、路由器之间传递控制消息。
-
ICMP中提