信息收集

信息收集对渗透测试前期非常重要,因为只有掌握了目标主机足够多的信息之后,才能有效地对其进行漏洞测试,从而提高渗透测试的成功概率。

发现主机

发现主机是探测哪些主机是活动的,进而获取该主机的信息。用户可以使用主动扫描的方式发现主机,也可以采用被动监听的方式发现主机

确定网路范围

在探测目标之前,往往需要明确目标可能存在的范围。可能是一个特定的主机,也可能是一个地址范围,甚至是整个子网等。但它们都遵循IP地址规则。根据IP规则,就可以画出目标可能的范围。

1. IP地址规则

IP地址(Internet Protocol Address),是互联网协议地址。由两部分组成,网路地址和主机地址。

1.1. 网络地址规则

网络地址必须唯一。网络标识不能以数字127开头。在A类地址中,数字127保留给内部回送函数(127.1.1.1用于回路测试)。网络标识的第一个字节不能为255。数字255作为广播地址。网络标识的第一个字节不能为“0”,“0”表示该地址是本地主机,不能传送。

1.2. 主机地址规则

主机标识在同一网络内必须是唯一的。主机标识的各个位不能都为“1”,如果所有位都为“1”,则该机地址是广播地址,而非主机的地址。主机标识的各个位不能都为“0”,如果各个位都为“0”,则表示“只有这个网络”,而这个网络上没有任何主机。

根据网络号和主机号不同,分为A、B、C三类及特殊地址D、E。 另外,全0和全1的都保留不用。

A类:(1.0.0.0-126.0.0.0)(默认子网掩码:255.0.0.0或 0xFF000000)第一个字节为网络号,后三个字节为主机号。该类IP地址的最前面为“0”,所以地址的网络号取值于1~126之间。一般用于大型网络。

B类:(128.0.0.0-191.255.0.0)(默认子网掩码:255.255.0.0或0xFFFF0000)前两个字节为网络号,后两个字节为主机号。该类IP地址的最前面为“10”,所以地址的网络号取值于128~191之间。一般用于中等规模网络。

C类:(192.0.0.0-223.255.255.0)(子网掩码:255.255.255.0或 0xFFFFFF00)前三个字节为网络号,最后一个字节为主机号。该类IP地址的最前面为“110”,所以地址的网络号取值于192~223之间。一般用于小型网络。

D类:是多播地址。该类IP地址的最前面为“1110”,所以地址的网络号取值于224~239之间。一般用于多路广播用户[1] 。

E类:是保留地址。该类IP地址的最前面为“1111”,所以地址的网络号取值于240~255之间。

在IP地址3种主要类型里,各保留了3个区域作为私有地址,其地址范围如下:
A类地址:10.0.0.0~10.255.255.255
B类地址:172.16.0.0~172.31.255.255
C类地址:192.168.0.0~192.168.255.255

回送地址:127.0.0.1。 也是本机地址,等效于localhost或本机IP。一般用于测试使用。例如:ping 127.0.0.1来测试本机TCP/IP是否正常。

在IP地址中,还有一个特殊的IP地址,就是广播地址。广播地址是专门用于同时向网络中所有主机进行发送的一个地址。例如,10.0.0.0(255.0.0.0)网段,广播地址为10.255.255.255;172.16.0.0(255.255.0.0)广播地址为172.162.255.255;192.168.1.0(255.255.255.0)网段192.168.1.255,而且广播地址的MAC地址为FF-FF-FF-FF-FF-FF。

IP地址主要是根据子网掩码来划分网段

例如IP地址192.168.1.100/24对应子网掩码为255.255.255.0.则改网段为192.168.1.0~255,即该网段最多有256个主机,用户在主机时,可以通过掩码的格式来指定网络范围。为了方便使用CIDR格式来指定整个子网,CIDR格式由网络地址和子网掩码两部分组成,中间用/分隔

常用子网掩码对应表

https://blog.csdn.net/sauzny/article/details/84882731

我们还可以借助Netmask工具来确定一个IP范围内对应的子网掩码

关于工具的使用,可以百度一下这里给大家参考文章

https://blog.csdn.net/It_Roo/article/details/105846181

2.确定网络拓扑

在渗透测试中,通过确定网络拓扑结构,可以确定目标是局域网还是外网。Tracerout工具获取目标主机的路由条目,以确定网络拓扑。

tracerout [Target]
//Linux
tracert [Target]
//Windows

扫描主机

用户可以通过主动扫描的方式,确定主机是否活跃。

1.使用Nmap工具

关于Nmap工具我写过一篇文章这里我就不写了

2.使用Netdiscover工具

专用的二层发现工具。拥有主动和被动发现两种方式。

监听发现主机

监听就是不主动向目标发送数据包,仅监听网络中的数据包。在局域网中,一些协议将自动广播数据包,如ARP广播和DHCP广播。而广播包是局域网中的所有用户都可以接收到的数据包。因此,用户通过对这些数据包进行监听,可以探测 网络中活动的主机。

1. ARP监听

ARP(Address Resolution Protocol,地址解析协议)是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时,将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收反回消息,以此确定目标的物理地址。所有,通过实施ARP监听,即可发现局域网中活动的主机,使用Netdiscover工具的被动模式实施ARP监听,以此来发现在线主机。

2.DHCP监听

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,其主要作用是实现内部网或网络服务供应商自动分配IP地址。当一个客服端需要获取一个IP地址时,将会发送广播包。然后,收到请求的DHCP服务器会提供 一个可用的IP地址给客服端。所有,用户可以实施DHCP监听来判断网络中的在线主机,通过Nmap的broadcast-dhcp-discover脚本实施DHCP监听来发现主机。

Nmap的broadcast-dhcp-discover脚本能够用来发送一个DHCP Discover广播包,并显示响应包耳朵具体信息通过对响应包的信息进行分析,能够找到可分配的IP地址。其中,使用该脚本实施被动扫描的语法格式为:

nmap --script broadcast-dhcp-discover

语法中的--script选项用来指定 使用的脚本

域名分析

域名(Domain Name),由一串用点分隔的名字,比如我网站域名changchen.cc,当你输入我的域名,DNS服务器会解析域名IP,并把它指向这个IP所在的服务器,传送一个主机头信息。当这个服务器包含这个主机头的信息,即绑定了这个域名,就会接受这个请求,否则不接受。知道了什么是域名,然后对域名进行分析,因为在渗透的过程中,我们需要知道域名的详细信息,如所有者信息,子域名,服务器地址...

域名基础信息

1. 使用WHOIS工具

2. 使用DMitry工具

查找子域名

子域名(或子域;英语:Subdomain)是在域名系统等级中,属于更高一层域的域。比如,mail.example.com和calendar.example.com是example.com的两个子域,而example.com则是顶级域 .com的子域。通常情况,子域名会包含主机名。例如,www.example.com域名中,,com是顶级域名;example.com是一级域名;www是主机名。用来标识服务器。所以,example.com建立WWW服务就是www.example.com。因此,通过查找子域名的方式,可以发现对应的主机。

1.使用DMitry工具

该工具是通过Google搜索引擎来查找子域名,对于国内的用户需要VPN代理来实现。

dmitry -s <domain> -o <file>
// -s :实施子域名查询
// -o :指定保存输出结果的文件

2. 在线查询

在线查询子域名的地址为 https://phpinfo.me/domain

发现服务器

域名是方便我们记忆的,但是在计算机之间只能互相认识IP地址,所以需要根据域名查询对应的主机。在域名服务器中,通过域名记录来表示不同的主机,如A记录,MX记录,NS记录。其中,A记录表示一台主机,MX记录表示邮件交换记录,NS记录表示DNS记录。每一个域名都会包含一个IP地址,通过探测域名服务器来确定域名对应的IP地址。

1.使用Dnsenum工具

Dnsenum是一款DNS查询工具,它能够通过Google或字典文件猜测可能存在的域名,并对一个网段进行反向查询

dnsenum -w <domain>
// -w :在C类网络范围内实施WHOIS查询

参考文章:https://blog.csdn.net/weixin_43263851/article/details/108955964

2. 使用Nslookup工具

在线工具:https://tool.chinaz.com/nslookup/

3.使用Ping命令

在线工具:https://check-host.net/

扫描端口

端口简介

通过扫描端口,可以发现目标主机中运行的程序。然后,再对这些程序进行信息收集,以获取其漏洞信息,并实施渗透测试。

1.端口的作用

用户都知道一台主机对应一个IP地址,可以提供多个服务,如Web服务和FTP服务等。如果只有一个IP,无法区分不同的网络服务,所以使用“IP+端口号”来区分不同的服务。

2.端口的定义

端口号是标识主机内唯一的一个进程,“IP+端口号”就可以标识网络中的唯一进程。端口号是由16位二进制数字编号,范围是0~65535。但是,这些端口并不是可以随便使用的,一些端口已经被占用。例如,Web服务器的端口为80,FTP服务的端口为21等。所以,端口被进行了分类,并规定了用户可以使用的端口范围

3.常用端口

一些网络服务的端口都是固定的,所以将列出一些常见的TCP/IP端

4.实施端口扫描

常用的工具有Nmap,

实施端口扫描

下面将介绍使用Nmap和DMitry工具实施端口扫描。

1.使用Nmap工具

请参考文章https://www.changchen.cc/archives/20/

2.使用DMitry工具

DMitry工具提供了一个-p选项,可以实施端口扫描。

dmitry -p [host]

识别操作系统识

通过识别操作系统,可以确定目标主机的系统类型。这样,可以有针对性地对目标系统的程序实施漏洞探测。

基于TTL识别

TTL(Time To Live,生存时间),该字段指定IP包被路由器丢弃之前允许通过的最大网段数量。其中,不同操作系统类型响应的TTL值不同。所以,用户可以使用Ping命令进行系统识别。

提示:如果本地主机到目标经过的路由器太多,判断的结果可能不是很准确

使用NMAP识别

使用NMAP识别操作系统的语法:

nmap -o [target]

识别服务

识别服务主要是探测服务的版本信息。在一些旧版本中可能存在漏洞。如果存在漏洞,用户可以对该主机实施渗透,进而获取其他重要信息。

使用Nmap工具

使用Nmap识别服务版本的语法:

nmap -sV [host]

使用Amap工具

Amap 是一个检特定端口上运行的应用程序的工具。Amap 工作原理是向端口发送触发报文,然后将收到的回应与数据 库中结果进行匹配,并打印匹配的应用程序

1.用amapcrap工具

amapcrap -n <connects> -m <0ab> [host] [poet] -v

以上语法中的选项及含义如下:
· n :设置最大连接数,默认为无限制。
· -m 0ab:设置发送的伪随机数。其中,0表示空字节;a表示字母+空格;b表示二进制。
· -v:详细模式。

2.使用amap工具

amap -bqv [host] [port]

以上语法中的选项及含义如下:
· -b:显示接收的服务标识信息。
· -q:不显示关闭端口。
· -v:输出详细信息。

收集服务信息

一些特殊服务可以提供额外的信息。例如,SMB服务可以提供文件系统结构;SNMP服务可以提供目标主机相关信息。

SMB服务

SMB(Server Message Block,服务器信息块)是一种IBM协议,用于在计算机间共享文件、打印机、串口等。SMB协议可以工作在TCP/IP协议之上,也可以工作在其他网络协议(如NetBEUI)之上。通过获取SMB服务的共享文件夹信息,可以了解目标主机的文件系统结构。

smbclient是一个SMB服务的客户端工具,可以用来访问SMB服务中的共享文件。其中,smbclient工具的语法格式如下:

smbclient -L <server IP> -U <username>

以上语法中的选项及含义如下:

· -L :用来指定SMB服务器地址。

· -U :用来指定登录SMB服务的用户名。

SNMB服务

SNMP(Simple Network Management Protocol,简单网络管理协议)是由一组网络管理的标准组成,包含一个应用层协议和一组资源对象。该协议被网络管理系统所使用,用以监测网络设备上任何值得管理员所关注的情况。通过利用该服务,可以获取主机信息。

snmpcheck工具可以用来枚举SNMP设备,以获取目标主机信息。其中,该工具的语法格式如下:

snmp-check [target]

信息分析和整理

前面介绍的方法,可以收集到目标主机的大量信息。为了方便后续实施渗透测试,用户需要将这些信息进行整理和分析。

Maltego

Maltego是一款非常强大的信息收集工具。它不仅可以自动收集所需信息,还可以将收集的信息可视化,用一种图像化的方式将结果展现给用户。

教程

https://blog.csdn.net/smli_ng/article/details/105943189

Last modification:September 11, 2021
如果觉得我的文章对你有用,请随意赞赏