使用 Kali 进行信息收集
信息收集对于渗透测试前期来说是非常重要的。因为只有渗透测试者掌握了目标主机足够多的信息之后,才能更有效地对其进行漏洞检测,从而提高渗透测试的成功概率。
一、发现主机
1.1 扫描主机
1.1.1 使用Nmap工具
Nmap是一款非常强大的网络扫描和嗅探工具包。该工具主要有3个基本功能,第一是可以探测一组主机是否在线;第二是扫描主机端口,嗅探所提供的网络服务;第三是推断主机所用的操作系统。下面将介绍使用Nmap工具探测目标主机是否在线。其中,语法格式如下:
nmap -sP [target]
以上语法中的选项-sP,表示对目标主机实施Ping扫描;参数[target]用来指定扫描的目标地址。其中,该目标可以是主机名、IP地址(包括单个地址、多个地址或地址范围),以及网段等。
探测目标主机192.168.10.3是否在线。执行命令如下:
1 | # nmap -sP 192.168.10.55 |
探测192.168.10.0/24网段中活动的主机。执行命令如下:
1 | # nmap -sP 192.168.10.0/24 |
从输出的最后一行信息可以看到,共扫描了256个主机。其中,活动的主机有5个。
1.1.2 使用Netdiscover工具
Netdiscover是一个支持主动和被动两种模式的ARP侦查工具。使用该工具可以在网络上扫描IP地址,检查在线主机。下面将介绍使用Netdiscover工具实施ARP主动扫描。语法格式如下:
netdiscover -r [range]
以上语法中的选项-r[range]用来指定扫描的网络范围。如果用户没有指定目标,将自动选择目标网络实施扫描。
使用Netdiscover工具扫描192.168.1.0/24网段内在线主机。执行命令如下:
1 | # netdiscover -r 192.168.48.0/24 |
在以上输出信息中共显示了5列,分别是IP(IP地址)、At MAC Address(MAC地址)、Count(包数)、Len(长度)、MAC Vendor/Hostname(MAC地址生产厂商/主机名)。通过分析捕获到的包,可以知道当前局域网中活动的主机IP地址、MAC地址及MAC地址的生产厂商等。从IP列可以看到在线主机的地址。其中,在线的主机地址为192.168.1.1、192.168.1.3和192.168.1.43。而且,在输出信息的左上角可以看到,当前的扫描状态为Finished,即扫描完成。此时,按Ctrl+C组合键即可退 Netdiscover工具的扫描界面。
用户也可以不指定扫描范围,尽可能地发现多个在线主机。执行命令如下:
1 | # netdiscover |
1.2 监听发现主机
监听就是不主动向目标发送数据包,仅监听网络中的数据包。在局域网中,一些协议将自动广播数据包,如ARP广播和DHCP广播。而广播包是局域网中的所有用户都可以接收到的数据包。因此,用户通过对这些数据包进行监听,可以探测网络中活动的主机。下面将介绍通过监听方式发现主机。
1.2.1 ARP监听
ARP(Address Resolution Protocol,地址解析协议)是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时,将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址。所以,通过实施ARP监听,即可发现局域网中活动的主机。下面将介绍使用Netdiscover工具的被动模式实施ARP监听,以此来发现在线主机。其中,Netdiscover工具实施被动扫描的语法格式如下:
netdiscover -p
以上语法中的选项-p表示使用被动模式,即不发送任何数据包,仅嗅探。
使用Netdiscover工具实施被动扫描。执行命令如下:
1 | # netdiscover -p |
从输出的第1行信息中,可以看到正在使用被动模式(passive)实施扫描。从第2行信息中,可以看到嗅探到的包数、主机数及包大小。第3行以下的信息,则是嗅探到的包信息。从IP列可以看到探测到的在线主机。其中,在线的主机地址分别是192.168.10.1、192.168.10.2和192.168.10.254。
1.2.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选项用来指定使用的脚本。
使用broadcast-dhcp-discover脚本向局域网中发送DHCP Discover广播包。执行命令如下:
1 | # nmap --script broadcast-dhcp-discover |
二、域名分析
域名(Domain Name)是由一串用点分隔的名字,用来表示Internet上某一台计算机或计算机组名称。它可以在数据传输时标识计算机的电子方位。通常情况下,外网的主机都是使用域名来标识的。如果要对外网的主机实施渗透测试,则需要对域名进行分析,以获取该域名的详细信息,如域名所有者信息、子域名、服务器地址等。
2.1 域名基础信息
当一个域名注册完成后,包含的基本信息,如域名是否已经被注册、域名注册商、域名所有者等。通过查看域名的WHOIS信息,即可获取到该域名的基础信息。
2.1.1 使用WHOIS工具
WHOIS工具是用来查找并显示指定账号(或域名)的用户相关信息。其中,使用该工具查询域名信息的语法格式如下:
whois [域名]
使用WHOIS工具查询域名baidu.com的相关信息。执行命令如下:
1 | # whois baidu.com |
从以上输出信息可以看到获取域名baidu.com的相关WHOIS信息。例如,注册商域名ID为11181110_DOMAIN_COM-VRSN,注册的WHOIS服务器为whois.markmonitor.com,创建时间为1999-10-11T11:05:17Z等。
2.1.2 使用DMitry工具
DMitry是一个一体化的信息收集工具。使用该工具可以收集WHOIS主机IP和域名信息、子域名、域名中包含的邮件地址等。其中,用于获取WHOIS信息的语法格式如下:
dmitry -w [domain]
以上语法中的选项及含义如下:
-w:对指定的域名实施WHOIS查询。
domain:指定查询的目标域名。
使用DMitry工具查询域名baidu.com的WHOIS信息。执行命令如下:
1 | # dmitry -w baiud.com |
从以上输出信息中可以看到,成功获取了域名baidu.com相关的WHOIS信息。
2.2 查找子域名
子域名又称为子域(Subdomain),在域名系统等级中,它属于更高一层域的域。例如,www.baidu.com 和map.baidu.com是baidu.com的两个子域,而baidu.com则是顶级域.com的子域。通常情况下,一个子域名会包含主机名。例如,www.baidu.com 域名中,.com是顶级域名;baidu.com是一级域名;www是主机名,用来标识服务器。所以,baidu.com建立WWW服务器就是 www.baidu.com 。因此,通过查找子域名的方式,可以发现对应的主机。
2.2.1 使用Dmitry工具
Dmitry工具可以用来查找子域名。但是,该工具是通过Google搜索引擎来查找子域名的。所以,对于国内的用户来说,需要使用VPN代理来实现。否则,将会出现网络连接错误的提示。如下:
Searching Google.com:80…
Unable to connect: Socket Connect Error
使用Dmitry工具查找子域名的语法格式如下:
dmitry -s
-o
以上语法中的选项及含义如下:
-s:实施子域名查询。
-o:指定保存输出结果的文件。
使用Dmitry工具查找域名baidu.com的子域名。执行命令如下:
1 | # dmitry -s baidu.com -o subdomain |
从以上输出信息可以看到查找到域名baidu.com的所有子域名及对应的IP地址。
2.2.2 在线查询
用户还可以用在线查询方式查找子域名。其中,在线查询子域名的地址为 https://phpinfo.me/domain/ 。当用户在浏览器中成功访问该地址后,将显示如下图所示的界面。
在文本框中输入要查询的域名。然后,单击“开始”按钮,即可查找对应的子域名。例如,这里查找域名baidu.com的子域名,结果如下图所示。
从该界面可以看到找到的所有子域名,如 www.baidu.com 、mail.baidu.com和pop.baidu.com等。
2.3 发现服务器
域名虽然方便人们记忆,但是网络中的计算机之间只能互相认识IP地址。所以,就需要根据域名查询对应的主机。在域名服务器中,通过域名记录来标识不同的主机,如A记录、MX记录、NS记录等。其中,A记录表示一台主机;MX记录表示邮件服务器;NS表示DNS服务器。其中,每个域名记录都包含一个IP地址。用户通过探测域名服务器,可以确定域名对应的IP地址。下面将介绍发现服务器的方法。
2.3.1 使用Dnsenum工具
Dnsenum是一款域名信息收集工具,它能够通过谷歌或者字典文件猜测可能存在的域名,以及对一个网段进行反向查询。它可以查询网站的主机地址信息、域名服务器和邮件交换记录等。其中,使用该工具收集域名信息的语法格式如下:
dnsenum -w
使用Dnsenum枚举子域名baidu.com的信息。执行命令如下:
1 | # dnsenum -w baidu.com |
从以上输出信息可以看到,获取到了子域名 www.baidu.com 的IP地址。
2.3.2 使用Nslookup工具
Nslookup是由微软发布的用于对DNS服务器进行检测和排错的命令工具。该工具可以用来查询DNS记录,验证域名解析是否正常。在发生网络故障的时候,该工具还可以用来诊断网络问题。通过实施域名解析,可以获取对应服务器的IP地址。其中,该工具的语法格式如下:
nslookup domain
其中,参数domain用来指定查询的域名。
使用Nslookup对域名 www.baidu.com 进行解析。执行命令如下:
1 | # nslookup www.baidu.com |
从输出的信息可以看到,成功解析了域名 www.baidu.com 。从显示的结果可以看到,该域名对应的地址为110.242.68.4和110.242.68.3。而且还可以看到,域名 www.baidu.com 的别名(canonical name)为 www.a.shifen.com 。
使用Nslookup实施域名查询时,默认查询的是A记录。用户还可以在交互模式,使用set type=value指定查询的域名记录值。其中,指定的域名记录值可以是A、NS、MX、CNAME和PTR等。例如,使用Nslookup获取域名baidu.com的NS名字服务器记录,如下:
(1)启动Nslookup工具进入交互模式。执行命令如下:
1 | # nslookup |
看到命令行提示符显示为>,则表示成功进入了Nslookup的交互模式。
(2)设置查询的类型为NS记录。执行命令如下:
1 | > set type=ns |
(3)输入要查询的域名。执行命令如下:
1 | > baidu.com |
从输出的信息可以看到域名baidu.com的所有NS服务器,如dns.baidu.com和ns2.baidu.com等。如果用户不查询其他记录,可使用exit命令退出交互模式。
2.3.3 使用Ping命令
Ping命令可以用来检查网络是否连通,可以很好地帮助用户分析和判断网络故障。对于一个域名,通常可以指定多个IP地址。所以,当用户借助一些工具查询域名信息时,将获取多个地址信息。此时,用户无法确定目标服务器使用的是哪个地址。用户通过使用Ping命令,则可以判断出目前正在使用的IP地址,进而确定该目标主机。其中,Ping命令的语法格式如下:
ping -c [count] [target]
以上语法中,选项-c用来指定发送的Ping包数;参数[target]用来指定目标主机的地址,其中,该目标主机地址可以是主机名、IP地址或域名。在Windows系统中,Ping命令仅发送并响应4个包就停止Ping。在Linux系统中,默认将会一直执行Ping命令,需要用户按Ctrl+C组合键停止Ping。
使用Ping命令探测域名 www.baidu.com 的IP地址,并指定仅发送4个探测包。执行命令如下:
1 | # ping -c 4 www.baidu.com 1 ⨯ |
从以上输出的信息可以看到,成功收到了目标主机响应的包。从响应的包信息中可以看到,目标主机使用的IP地址为110.242.68.4。
三、扫描端口
通过扫描端口,可以发现目标主机中运行的程序。然后,再对这些程序进行信息收集,以获取其漏洞信息,并实施渗透测试。本节将介绍端口的概念及实施端口扫描的方法。
3.1 端口简介
在计算机中,“端口”的英文是Port。在网络技术中,端口有好几种意思。这里所指的端口不是物理意义上的端口,而是特指TCP/IP协议中的端口。它是逻辑意义上的端口。在TCP/IP协议中,最常用的协议是TCP和UDP协议。由于TCP和UDP两个协议是独立的,因此各自的端口号也相互独立。例如,TCP有235端口,UDP也可以有235端口,两者并不冲突。下面将介绍端口的作用及常用的端口。
端口的作用
用户都知道一台主机对应一个IP地址,可以提供多个服务,如Web服务和FTP服务等。如果只有一个IP,无法区分不同的网络服务,所以使用“IP+端口号”来区分不同的服务。端口的定义
端口号是标识主机内唯一的一个进程,“IP+端口号”就可以标识网络中的唯一进程。在网络开发的Socket编程中,IP+端口号就是套接字。端口号是由16位二进制数字编号,范围是0~65535。但是,这些端口并不是可以随便使用的,一些端口已经被占用。例如,Web服务器的端口为80,FTP服务的端口为21等。所以,端口被进行了分类,并规定了用户可以使用的端口范围。端口的分类
端口的分类方法很多,这里将按照是服务端使用还是客户端使用进行分类。其中,服务端使用的端口号又可以分为预留端口号和注册端口号。如下:·预留端口号:该类端口的取值范围为0~1023。其中,这些端口在用户编程的时候不能使用,是一些程序固定使用的。只有超级用户权限的应用才允许被分配一个预留端口号。例如,WWW服务默认端口为80,FTP服务默认端口为21等。不过,用户也可以为这些网络服务指定其他端口号。但是有些系统协议使用固定的端口号,是不能被改变的。例如,139端口专门用于NetBIOS与TCP/IP之间的通信,不能被手动改变。
·注册端口号:该类端口的范围为1024~49151,就是用户平时编写服务器使用的端口号范围。这些端口在没有被服务器资源占用的时候,也可以供用户端动态选用。
客户端使用的端口号又叫临时端口号,取值范围为49152~65535。其中,这部分是客户端进程运行时动态选择的范围。常用端口
在前面提到,一些网络服务的端口都是固定的,所以将列出一些常见的TCP/IP端口,如下表所示。
端口号码 / 层 | 名称 | 注释 |
---|---|---|
1 | tcpmux | TCP 端口服务多路复用 |
5 | rje | 远程作业入口 |
7 | echo | Echo 服务 |
9 | discard | 用于连接测试的空服务 |
11 | systat | 用于列举连接了的端口的系统状态 |
13 | daytime | 给请求主机发送日期和时间 |
17 | qotd | 给连接了的主机发送每日格言 |
18 | msp | 消息发送协议 |
19 | chargen | 字符生成服务;发送无止境的字符流 |
20 | ftp-data | FTP 数据端口 |
21 | ftp | 文件传输协议(FTP)端口;有时被文件服务协议(FSP)使用 |
22 | ssh | 安全 Shell(SSH)服务 |
23 | telnet | Telnet 服务 |
25 | smtp | 简单邮件传输协议(SMTP) |
37 | time | 时间协议 |
39 | rlp | 资源定位协议 |
42 | nameserver | 互联网名称服务 |
43 | nicname | WHOIS 目录服务 |
49 | tacacs | 用于基于 TCP/IP 验证和访问的终端访问控制器访问控制系统 |
50 | re-mail-ck | 远程邮件检查协议 |
53 | domain | 域名服务(如 BIND) |
63 | whois++ | WHOIS++,被扩展了的 WHOIS 服务 |
67 | bootps | 引导协议(BOOTP)服务;还被动态主机配置协议(DHCP)服务使用 |
68 | bootpc | Bootstrap(BOOTP)客户;还被动态主机配置协议(DHCP)客户使用 |
69 | tftp | 小文件传输协议(TFTP) |
70 | gopher | Gopher 互联网文档搜寻和检索 |
71 | netrjs-1 | 远程作业服务 |
72 | netrjs-2 | 远程作业服务 |
73 | netrjs-3 | 远程作业服务 |
73 | netrjs-4 | 远程作业服务 |
79 | finger | 用于用户联系信息的 Finger 服务 |
80 | http | 用于万维网(WWW)服务的超文本传输协议(HTTP) |
88 | kerberos | Kerberos 网络验证系统 |
95 | supdup | Telnet 协议扩展 |
101 | hostname | SRI-NIC 机器上的主机名服务 |
102 | iso-tsap | ISO 开发环境(ISODE)网络应用 |
105 | csnet-ns | 邮箱名称服务器;也被 CSO 名称服务器使用 |
107 | rtelnet | 远程 Telnet |
109 | pop2 | 邮局协议版本2 |
110 | pop3 | 邮局协议版本3 |
111 | sunrpc | 用于远程命令执行的远程过程调用(RPC)协议,被网络文件系统(NFS)使用 |
113 | auth | 验证和身份识别协议 |
115 | sftp | 安全文件传输协议(SFTP)服务 |
117 | uucp-path | Unix 到 Unix 复制协议(UUCP)路径服务 |
119 | nntp | 用于 USENET 讨论系统的网络新闻传输协议(NNTP) |
123 | ntp | 网络时间协议(NTP) |
137 | netbios-ns | 在红帽企业 Linux 中被 Samba 使用的 NETBIOS 名称服务 |
138 | netbios-dgm | 在红帽企业 Linux 中被 Samba 使用的 NETBIOS 数据报服务 |
139 | netbios-ssn | 在红帽企业 Linux 中被 Samba 使用的NET BIOS 会话服务 |
143 | imap | 互联网消息存取协议(IMAP) |
161 | snmp | 简单网络管理协议(SNMP) |
162 | snmptrap | SNMP 的陷阱 |
163 | cmip-man | 通用管理信息协议(CMIP) |
164 | cmip-agent | 通用管理信息协议(CMIP) |
174 | mailq | MAILQ |
177 | xdmcp | X 显示管理器控制协议 |
178 | nextstep | NeXTStep 窗口服务器 |
179 | bgp | 边界网络协议 |
191 | prospero | Cliffod Neuman 的 Prospero 服务 |
194 | irc | 互联网中继聊天(IRC) |
199 | smux | SNMP UNIX 多路复用 |
201 | at-rtmp | AppleTalk 选路 |
202 | at-nbp | AppleTalk 名称绑定 |
204 | at-echo | AppleTalk echo 服务 |
206 | at-zis | AppleTalk 区块信息 |
209 | qmtp | 快速邮件传输协议(QMTP) |
210 | z39.50 | NISO Z39.50 数据库 |
213 | ipx | 互联网络分组交换协议(IPX),被 Novell Netware 环境常用的数据报协议 |
220 | imap3 | 互联网消息存取协议版本3 |
245 | link | LINK |
347 | fatserv | Fatmen 服务器 |
363 | rsvp_tunnel | RSVP 隧道 |
369 | rpc2portmap | Coda 文件系统端口映射器 |
370 | codaauth2 | Coda 文件系统验证服务 |
372 | ulistproc | UNIX Listserv |
389 | ldap | 轻型目录存取协议(LDAP) |
427 | svrloc | 服务位置协议(SLP) |
434 | mobileip-agent | 可移互联网协议(IP)代理 |
435 | mobilip-mn | 可移互联网协议(IP)管理器 |
443 | https | 安全超文本传输协议(HTTP) |
444 | snpp | 小型网络分页协议 |
445 | microsoft-ds | 通过 TCP/IP 的服务器消息块(SMB) |
464 | kpasswd | Kerberos 口令和钥匙改换服务 |
468 | photuris | Photuris 会话钥匙管理协议 |
487 | saft | 简单不对称文件传输(SAFT)协议 |
488 | gss-http | 用于 HTTP 的通用安全服务(GSS) |
496 | pim-rp-disc | 用于协议独立的多址传播(PIM)服务的会合点发现(RP-DISC) |
500 | isakmp | 互联网安全关联和钥匙管理协议(ISAKMP) |
535 | iiop | 互联网内部对象请求代理协议(IIOP) |
538 | gdomap | GNUstep 分布式对象映射器(GDOMAP) |
546 | dhcpv6-client | 动态主机配置协议(DHCP)版本6客户 |
547 | dhcpv6-server | 动态主机配置协议(DHCP)版本6服务 |
554 | rtsp | 实时流播协议(RTSP) |
563 | nntps | 通过安全套接字层的网络新闻传输协议(NNTPS) |
565 | whoami | whoami |
587 | submission | 邮件消息提交代理(MSA) |
610 | npmp-local | 网络外设管理协议(NPMP)本地 / 分布式排队系统(DQS) |
611 | npmp-gui | 网络外设管理协议(NPMP)GUI / 分布式排队系统(DQS) |
612 | hmmp-ind | HMMP 指示 / DQS |
631 | ipp | 互联网打印协议(IPP) |
636 | ldaps | 通过安全套接字层的轻型目录访问协议(LDAPS) |
674 | acap | 应用程序配置存取协议(ACAP) |
694 | ha-cluster | 用于带有高可用性的群集的心跳服务 |
749 | kerberos-adm | Kerberos 版本5(v5)的“kadmin”数据库管理 |
750 | kerberos-iv | Kerberos 版本4(v4)服务 |
765 | webster | 网络词典 |
767 | phonebook | 网络电话簿 |
873 | rsync | rsync 文件传输服务 |
992 | telnets | 通过安全套接字层的 Telnet(TelnetS) |
993 | imaps | 通过安全套接字层的互联网消息存取协议(IMAPS) |
994 | ircs | 通过安全套接字层的互联网中继聊天(IRCS) |
995 | pop3s | 通过安全套接字层的邮局协议版本3(POPS3) |
3.2 实施端口扫描
当用户对端口的概念了解清楚后,就可以实施端口扫描了。下面将介绍使用Nmap和DMitry工具实施端口扫描。
3.2.1 使用Nmap工具
使用Nmap工具实施端口扫描,可以识别6种端口状态,分别是open(开放的)、closed(关闭的)、filtered(被过滤的)、unfiltered(未被过滤的)、open/filtered(开放或者被过滤的)和closed/filtered(关闭或者被过滤的)。如果要使用Nmap工具实施端口扫描,则需要了解每个端口状态的含义。下面将分别介绍这6种端口状态的具体含义。
·open(开放的):应用程序正在该端口接收TCP连接或者UDP报文。安全意识强的人们知道,每个开放的端口都是攻击的入口。攻击者或者入侵测试者想要发现开放的端口,而管理员则试图关闭它们或者用防火墙保护它们以免妨碍合法用户使用。非安全扫描可能对开放的端口也感兴趣,因为它们显示了网络上哪些服务可供使用。
·closed(关闭的):关闭的端口对于Nmap也是可访问的(它接收Nmap的探测报文并作出响应),但没有应用程序在其上监听。它们可以显示该IP地址(主机发现或者ping扫描)的主机正在运行,也对部分操作系统的探测有所帮助。因为关闭的端口是可访问的,也许过一会儿有一些端口又开放了。系统管理员可能会用防火墙封锁这样的端口。这样,它们就会被显示为被过滤的状态。
·filtered(被过滤的):由于包过滤阻止探测报文到达端口,Nmap无法确定该端口是否开放。过滤可能来自专业的防火墙设备、路由器规则或者主机上的软件防火墙。有时候它们响应ICMP错误消息,如类型3代码13(无法到达目标:通信被管理员禁止),但更普遍的是过滤器只是丢弃探测帧,不做任何响应。Nmap会重试若干次,检测探测包是否是由于网络阻塞而丢弃的。这会导致扫描速度明显变慢。
·unfiltered(未被过滤的):未被过滤状态意味着端口可访问,但Nmap不能确定它是开放还是关闭。用户只有通过映射防火墙规则集的ACK扫描,才会把端口分类到这种状态。使用其他类型的扫描(如窗口扫描、SYN扫描或者FIN扫描)来扫描未被过滤的端口,可以帮助确定端口是否开放。
·open/filtered(开放或者被过滤的):当无法确定端口是开放还是被过滤的时,Nmap就把该端口划分成这种状态。开放的端口不响应就是这种情况。没有响应也可能意味着报文过滤器丢弃了该探测报文及引起的任何响应报文。因此,Nmap无法确定该端口是开放的还是被过滤的。UDP、IP协议、FIN、Null和Xmas扫描可能把端口归入此类。
·closed/filtered(关闭或者被过滤的):该状态用于Nmap不能确定端口是关闭的还是被过滤的。它只会出现在IPID Idle扫描中。
使用Nmap实施端口扫描的语法格式如下:
nmap -p
[target]
以上语法中,选项-p用来指定扫描的端口。其中,指定的端口可以是单个端口、多个端口或端口范围。当指定多个扫描端口时,端口之间使用逗号分隔。默认情况下,Nmap扫描的端口范围为1~1000。
对目标主机192.168.10.54实施端口扫描。执行命令如下:
1 | # nmap 192.168.10.54 |
从输出的信息可以看到,Nmap工具默认扫描了1000个端口。其中,991个端口是关闭的,9个端口是开放的。例如,开放的端口有21、80和445等。
指定端口范围为1~50,对目标主机实施端口扫描。执行命令如下:
1 | # nmap -p 1-50 192.168.10.54 |
从输出的结果可以看到,扫描了端口范围为1~50之间的端口。其中,49个端口是关闭的;1个端口是开放的。
指定扫描目标主机的21和23端口。执行命令如下:
1 | # nmap -p 21,23 192.168.10.54 |
从输出的信息可以看到,在目标主机上开放了21号端口;23号端口是关闭的。
3.2.2 使用DMitry工具
DMitry工具提供了一个-p选项,可以实施端口扫描。其中,用来实施端口扫描的语法格式如下:
dmitry -p [host]
使用DMitry扫描目标主机192.168.29.136上开放的端口。执行命令如下:
1 | # dmitry -p 192.168.10.54 |
从输出的信息可以看到目标主机上开放的所有端口。从输出的倒数第二行信息可以看到,共扫描了150个端口,0个端口是关闭的。
四、识别操作系统
通过识别操作系统,可以确定目标主机的系统类型。这样,渗透测试者可以有针对性地对目标系统的程序实施漏洞探测,以节省不必要浪费的时间。本节将介绍识别操作系统的方法。
4.1 基于TTL识别
TTL(Time To Live,生存时间),该字段指定IP包被路由器丢弃之前允许通过的最大网段数量。其中,不同操作系统类型响应的TTL值不同。所以,用户可以使用Ping命令进行系统识别。为了使用户能够快速地确定一个目标系统的类型,这里将给出各个操作系统的初始TTL值列表,如下表所示。
操作系统 | TTL值 |
---|---|
UNIX及类UNIX操作系统 | 255 |
Compaq Tru64 5.0 | 64 |
Windows XP-32bit | 128 |
Linux Kernel 2.2.x & 2.4.x | 64 |
FreeBSD 4.1, 4.0, 3.4、Sun Solaris 2.5.1, 2.6, 2.7, 2.8、OpenBSD 2.6, 2.7/ NetBSD、IIP UX 10.20 | 255 |
WIndows 95/98/98SE、Windows ME | 32 |
Windows NT4 WRKS、Windows NT4 Server、Windows 2000、Windows XP/7/8/10 | 128 |
使用Ping测试目标主机192.168.29.131的操作系统类型。其中,该目标主机的操作系统类型为Kali Linux。执行命令如下:
1 | # ping -c 4 192.168.10.54 |
从输出的信息可以看到,响应包中的TTL值为64。由此可以推断出,该主机是一个Linux操作系统。
使用Ping测试目标主机192.168.100.160的操作系统类型。其中,该目标主机的操作系统类型为Windows。执行命令如下:
1 | # ping -c 4 192.168.100.160 |
从输出的信息可以看到,该响应包中的TTL值为128。由此可以说明,这是一个Windows操作系统。
提示:如果本地主机到目标经过的路由器太多,判断的结果可能不是很准确。
4.2 使用NMAP识别
由于TTL只是一种模糊判断,所以得出的结果不一定准确。NMAP工具提供了可以探测操作系统的功能。所以,下面将介绍使用NMAP识别操作系统类型。
使用NMAP识别操作系统的语法格式如下:
nmap -O [target]
使用NMAP探测目标主机192.168.100.160的操作系统类型。执行命令如下:
1 | # nmap -O 192.168.100.160 |
从输出的信息可以看到,识别出目标主机的操作系统类型为Microsoft Windows 7/2008/8.1。虽然无法确定具体是哪个版本,但是显示了更接近的系统版本。
五、识别服务
识别服务主要是探测服务的版本信息。通常情况下,在一些旧版本中可能存在漏洞。如果存在漏洞,用户可以对该主机实施渗透,进而获取其他重要信息。
5.1 使用Nmap工具
在Nmap工具中提供了一个-sV选项,可以用来识别服务的版本。下面将介绍使用该选项对服务进行识别。其中,使用Nmap识别服务版本的语法格式如下:
nmap -sV [host]
以上语法中的选项-sV表示实施服务版本探测。
识别目标主机192.168.10.54上的所有开放服务及版本。执行命令如下:
1 | # nmap -sV 192.168.10.54 |
从以上输出信息中可以看到识别出的服务相关信息。在输出的信息中包括4列,分别是PORT(端口)、STATE(状态)、SERVICE(服务)和VERSION(版本)。分析每列信息,可以获取对应服务的相关信息。例如,TCP端口21对应的服务为FTP,版本为vsftpd 3.0.2。从倒数第1行中还可以看到,目标主机的主机名为TEST-PC,操作系统类型为Linux。
5.2 使用Amap工具
Amap是一款识别网络服务的渗透测试工具集,包括amap和amapcrap两个工具。其中,amap工具用来尝试识别非常用端口上运行的应用程序;amapcrap工具通过发送触发数据包,并在响应字符串列表中查找响应来识别基于非ASCII编码的应用程序。
5.2.1 使用amapcrap工具
amapcrap工具可以将随机数据发送到UDP、TCP或SSL端口,来获取非法响应信息。其中,获取到的信息将写入到appdefs.trig和appdefs.resp文件,便于Amap下一步检测。其中,使用该工具识别服务信息的语法格式如下:
amapcrap -n
-m <0ab> [host] [port] -v
以上语法中的选项及含义如下:
-n
:设置最大连接数,默认为无限制。
-m 0ab:设置发送的伪随机数。其中,0表示空字节;a表示字母+空格;b表示二进制。
-v:详细模式。
使用amapcrap工具探测80端口的应用程序。执行命令如下:
1 | # amapcrap -n 20 -m a 192.168.10.54 80 -v |
从以上输出信息可以看到探测到的服务相关信息。从显示的结果中可以看到,分别将获取到的信息写入了appdefs.trig和appdefs.resp触发文件。当用户使用Amap工具识别服务时,将会使用这两个文件来获取信息。
5.2.2 使用amap工具
amap工具可以尝试识别一些运行在非正常端口上的应用程序。其中,使用该工具识别服务信息的语法格式如下:
amap -bqv [host] [port]
以上语法中的选项及含义如下:
-b:显示接收的服务标识信息。
-q:不显示关闭端口。
-v:输出详细信息。
使用amap工具对目标主机192.168.10.54上的80号端口服务实施扫描。执行命令如下:
1 | # amap -bqv 192.168.10.54 80 |
从输出的信息中可以看到,80号端口匹配的服务有http或http-apache2。从显示的标识信息中可以看到,目标主机上运行的Web服务是Nginx,版本为1.12.2。在输出的前3行信息中,可以看到amap工具使用了两个触发器文件和一个响应文件。其中,文件名分别是appdefs.trig、appdefs.resp和appdefs.rpc。
六、收集服务信息
一些特殊服务可以提供额外的信息。例如,SMB服务可以提供文件系统结构;SNMP服务可以提供目标主机相关信息。
6.1 SMB服务
SMB(Server Message Block,服务器信息块)是一种IBM协议,用于在计算机间共享文件、打印机、串口等。SMB协议可以工作在TCP/IP协议之上,也可以工作在其他网络协议(如NetBEUI)之上。通过获取SMB服务的共享文件夹信息,可以了解目标主机的文件系统结构。
smbclient是一个SMB服务的客户端工具,可以用来访问SMB服务中的共享文件。其中,smbclient工具的语法格式如下:
smbclient -L
-U
以上语法中的选项及含义如下:
-L
:用来指定SMB服务器地址。
-U:用来指定登录SMB服务的用户名。
访问Linux系统中的SMB服务。执行命令如下:
1 | root@daxueba:~# smbclient -L 192.168.10.54 -U root |
输入SMB服务用户登录的密码将显示如下所示的信息:
1 | Sharename Type Comment |
从以上输出信息可以看到目标SMB中共享的文件。其中,Sharename表示共享文件名,Type表示硬盘类型,Comment是共享文件的描述。从以上的Comment列可以看到共享的IPC服务版本为Samba 4.9.2-Debian。由此可以说明,该目标主机的操作系统类型为Linux,则该共享文件为Linux文件系统类型。
如果目标主机的操作系统是Windows,文件名列将显示共享文件夹的盘符。如下:
1 | root@daxueba:~# smbclient -L 192.168.10.131 -U Test |
从以上输出结果的文件名中可以看到,默认共享的磁盘有C盘和E盘。只有在Windows系统中,文件夹才是以盘符形式来划分磁盘的。由此可以判断出,该共享文件夹为Windows系统类型。
6.2 SNMP服务
SNMP(Simple Network Management Protocol,简单网络管理协议)是由一组网络管理的标准组成,包含一个应用层协议和一组资源对象。该协议被网络管理系统所使用,用以监测网络设备上任何值得管理员所关注的情况。通过利用该服务,可以获取主机信息。下面将介绍使用snmpcheck工具获取主机信息。
snmpcheck工具可以用来枚举SNMP设备,以获取目标主机信息。其中,该工具的语法格式如下:
1 | snmp-check [target] |
使用snmp-check工具通过SNMP协议获取192.168.10.56主机信息。执行命令如下:
1 | root@daxueba:~# snmp-check 192.168.10.56 |
从输出的信息可以看到,尝试连接目标主机192.168.10.56的161端口。当连接成功后,即可获取该主机的系统信息。由于输出的信息较多,这里将依次讲解每个部分。如下:
获取系统信息,如主机名、操作系统类型及架构。结果如下:
1
2
3
4
5
6
7
8
9
10
11
12
13[*] System information
-----------------------------------------------------------
Host IP address : 192.168.10.56 #目标主机的IP地址
Hostname : WIN-RKPKQFBLG6C #主机名
Description : Hardware: x86 Family 6 Model 42 Stepping 7 AT/AT
COMPATIBLE - Software: Windows Version 6.1 (Build 7601 Multiprocessor Free) #描述信息
Contact : - #联系
Location : - #位置
Uptime snmp : 01:51:45.01 #SNMP服务运行的时间
Uptime system : 189 days, 3:31:29.10 #目标系统运行的时间
System date : 2019-12-5 17:13:10.7 #当前目标系统的时间
Domain : WORKGROUP #工作组从输出的信息中可以看到该系统的主机名为WIN-RKPKQFBLG6C、x86架构、Windows系统等信息。
获取用户账户信息。结果如下:
1
2
3
4[*] User accounts
-------------------------------------------------------------------
Administrator
Guest输出的信息显示了该系统中有两个用户,分别是Administrator和Guest。
获取网络信息,如TTL值、TCP段和数据元。结果如下:
1
2
3
4
5
6
7
8
9
10[*] Network information
------------------------------------------------------------------
IP forwarding enabled : no #是否启用IP转发
Default TTL : 128 #默认TTL值
TCP segments received : 19092 #收到TCP段
TCP segments sent : 5964 #发送TCP段
TCP segments retrans. : 0 #重发TCP段
Input datagrams : 37878 #输入数据元
Delivered datagrams : 38486 #传输的数据元
Output datagrams : 16505 #输出数据元以上信息显示了该目标系统中网络的相关信息,如默认TTL值、收到TCP段、发送TCP段及重发TCP段等。
获取网络接口信息,如接口状态、速率、IP地址和子网掩码等。结果如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27[*] Network interfaces
------------------------------------------------------------------、
Interface : [ up ] Software Loopback Interface 1 #接口描述信息
Id : 1 #接口ID
Mac Address : ::::: #MAC地址
Type : softwareLoopback #接口类型
Speed : 1073 Mbps #接口速度
MTU : 1500 #最大传输单元
In octets : 0 #8位字节输入
Out octets : 0 #8位字节输出
Interface : [ up ] WAN Miniport (SSTP)
Id : 2
Mac Address : :::::
Type : unknown
Speed : 1073 Mbps
MTU : 4091
In octets : 0
Out octets : 0
......
Interface : [ up ] WAN Miniport (IPv6)-QoS Packet Scheduler-0000
Id : 32
Mac Address : cc:f5:20:52:41:53
Type : ethernet-csmacd
Speed : 1073 Mbps
MTU : 1500
In octets : 0
Out octets : 0以上信息中显示了loopback接口的相关信息。包括它的速率、IP地址、子网掩码和最大传输单元。
获取网络IP信息。结果如下:
1
2
3
4
5
6[*] Network IP:
Id IP Address Netmask Broadcast
1 127.0.0.1 255.0.0.0 1
13 192.168.10.56 255.255.255.0 1
10 192.168.10.101 255.255.255.0 1
23 192.168.10.1 255.255.255.0 1以上显示的信息,表示当前目标主机中所有的网络接口地址信息。从以上输出信息中,可以看到共有4个接口。其中,IP地址分别是127.0.0.1、192.168.10.56、192.168.10.101、192.168.10.1。
获取路由信息,如目标地址、下一跳地址、子网掩码和路径长度值。结果如下:
1
2
3
4
5
6[*] Routing information
------------------------------------------------------------------
Destination Next hop Mask Metric
0.0.0.0 192.168.10.1 0.0.0.0 20
127.0.0.1 127.0.0.1 255.255.255.255 109
192.168.10.1 192.168.10.1 255.255.255.0 276以上信息表示目标系统的一个路由表信息。该路由表包括目的地址、下一跳地址、子网掩码及距离。
获取监听的TCP端口,如监听的TCP端口号有135、139等。结果如下:
1
2
3
4
5
6
7
8
9[*] Listening TCP ports and connections
--------------------------------------------------------------------
Local address Local port Remote address Remote port State
0.0.0.0 135 0.0.0.0 0 listen
0.0.0.0 443 0.0.0.0 0 listen
0.0.0.0 902 0.0.0.0 0 listen
0.0.0.0 912 0.0.0.0 0 listen
192.168.10.56 49878 192.168.10.62 80 timeWait
192.168.10.56 139 192.168.10.203 80 timeWait以上信息表示两台主机建立TCP连接后的信息,包括本地地址、本地端口、远端主机地址、远端主机端口和状态。
获取监听UDP端口信息,如监听的UDP端口有123、161、4500、500和5355等。结果如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14[*] Listening UDP ports
------------------------------------------------------------------
Local Address Port
0.0.0.0 123
0.0.0.0 161
0.0.0.0 4500
0.0.0.0 500
0.0.0.0 5355
127.0.0.1 1900
127.0.0.1 51030
192.168.10.56 137
192.168.10.56 138
192.168.10.56 1900
192.168.10.56 52087以上信息表示目标主机中已开启的UDP端口号。
获取网络服务信息,如分布式组件对象模型服务、DHCP客户端,以及DNS客户端等。结果如下:
1
2
3
4
5
6
7
8
9
10
11
12
13[*] Network services
------------------------------------------------------------------
Application Experience
Background Intelligent Transfer Service
Base Filtering Engine
COM+ Event System
COM+ System Application
Computer Browser
Cryptographic Services
DCOM Server Process Launcher
DHCP Client
DNS Client
......以上信息显示了目标主机中所安装的服务。由于篇幅的原因,这里只列出了少部分服务。
获取进程信息,如进程ID、进程名和进程类型等。结果如下:
1
2
3
4
5
6
7
8
9
10
11
12
13[*] Processes
--------------------------------------------------------------------
Id Status Name Path Parameters
1 running System Idle Process
4 running System
340 running svchost.exe
380 running smss.exe \SystemRoot\System32\
608 running MsMpEng.exe
644 running csrss.exe %SystemRoot%\system32\
ObjectDirectory=\Windows SharedSection=1024,20480,768 Windows=On SubSystem
Type=Windows ServerDll=basesrv,1 ServerDll=winsrv:User
680 running wininit.exe
......从以上显示的信息可以看到共5列,分别是ID号、状态、进程名、路径和参数。由于篇幅的原因,这里仅简单列举了几个进程的相关信息。
获取存储信息,如设备ID、设备类型和文件系统类型等。结果如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38[*] Storage information
-------------------------------------------------------------------
Description : ["C:\\ Label: Serial Number 7ec046bb"] #描述信息
Device id : [#<SNMP::Integer:0x00000001d2bf80 @value=1>] #设备ID
Filesystem type : ["unknown"] #文件系统类型
Device unit : [#<SNMP::Integer:0x00000001d28740 @value=4096>] #设备单元
Memory size : 119.24 GB #内存总共大小
Memory used : 71.51 GB #已用内存大小
Description : ["D:\\ Label: Serial Number 6af7072d"] #描述信息
Device id : [#<SNMP::Integer:0x00000001d0a6c8 @value=2>] #设备ID
Filesystem type : ["unknown"] #文件系统类型
Device unit : [#<SNMP::Integer:0x00000001d01dc0 @value=4096>] #设备单元
Memory size : 3725.90 GB #内存总共大小
Memory used : 436.99 GB #已用内存大小
Description : ["E:\\"]
Device id : [#<SNMP::Integer:0x00000001c15fd8 @value=3>]
Filesystem type : ["unknown"]
Device unit : [#<SNMP::Integer:0x00000001c0f930 @value=0>]
Memory size : 0 bytes
Memory used : 0 bytes
Description : ["F:\\"]
Device id : [#<SNMP::Integer:0x00000001bf2bc8 @value=4>]
Filesystem type : ["unknown"]
Device unit : [#<SNMP::Integer:0x00000001beb530 @value=0>]
Memory size : 0 bytes
Memory used : 0 bytes
Description : ["Virtual Memory"]
Device id : [#<SNMP::Integer:0x00000001bdccb0 @value=5>]
Filesystem type : ["unknown"]
Device unit : [#<SNMP::Integer:0x00000001bd62c0 @value=65536>]
Memory size : 31.97 GB
Memory used : 7.12 GB
Description : ["Physical Memory"]
Device id : [#<SNMP::Integer:0x00000001bb07a0 @value=6>]
Filesystem type : ["unknown"]
Device unit : [#<SNMP::Integer:0x00000001ba49a0 @value=65536>]
Memory size : 15.98 GB
Memory used : 7.57 GB该部分显示了系统中所有磁盘的信息。其中包括设备ID、文件系统类型、总空间大小及已用空间大小等。
获取文件系统信息,如索引、挂载点、远程挂载点及访问权限等。结果如下:
1
2
3
4
5
6[*] File system information:
Index : 1
Mount point :
Remote mount point : -
Access : 1
Bootable : 1以上显示了当前目标主机的文件系统信息。从以上信息中可以看到,包括文件系统的索引、挂载点及访问权限等。
获取设备信息,如设备ID号、类型和状态等。结果如下:
1
2
3
4
5
6
7
8
9
10
11
12[*] Devices information
-------------------------------------------------------------------
Id Type Status Descr
1 Printer Running TP Output Gateway
10 Network Unknown WAN Miniport (L2TP)
11 Network Unknown WAN Miniport (PPTP)
12 Network Unknown WAN Miniport (PPPOE)
......
6 Printer Running Microsoft Shared Fax Driver
7 Processor Running Intel
8 Network Unknown Software Loopback Interface 1
9 Network Unknown WAN Miniport (SSTP)以上信息显示了该系统中所有设备相关信息,如打印设备、网络设备和处理器等。
获取软件组件信息,如.Net框架、Visual C++2008等。显示结果如下:
1
2
3
4
5
6
7
8
9
10
11
12
13[*] Software components
---------------------------------------------------------------------
Index Name
1 Microsoft .NET Framework 4 Client Profile
2 Microsoft .NET Framework 4 Client Profile
3 Microsoft .NET Framework 4 Extended
4 Microsoft .NET Framework 4 Extended
5 Microsoft Security Essentials
6 Microsoft Visual Studio 2010 Tools for Office Runtime (x64)
7 WinRAR 5.21 (64-λ)
8 VMware Workstation
9 Microsoft Visual C++ 2010 x64 Redistributable - 10.0.40219
10 Microsoft Visual C++ 2008 Redistributable - x64 9.0.30729.4148以上信息表示该主机中安装了Micosoft.NET Framework 4、Microsoft Security Essentials、Microsoft Visual Studio 2010及Visual C++2008库等。
七、信息分析和整理
通过使用前面介绍的方法,可以收集到目标主机的大量信息。为了方便后续实施渗透测试,用户需要将这些信息进行整理和分析。此时,用户可以借助Maltego工具来对信息进行分析和整理。
7.1 配置Maltego
Maltego是一款非常强大的信息收集工具。它不仅可以自动收集所需信息,还可以将收集的信息可视化,用一种图像化的方式将结果展现给用户。Kali Linux默认已经安装了Maltego工具所以用户可以直接使用。但是,在使用该工具之前,需要做一个简单的配置,如注册账号和选择启动模式等。下面将介绍对Maltego工具的配置。
7.1.1 注册账号
当用户使用Maltego工具时,需要登录其官网。所以,在启动该工具之前,需要先注册一个账号。其中,注册账号的地址如下:
https://www.paterva.com/web7/community/community.php
提示:Maltego官网是一个国外网站。所以,国内用户在注册账号时,可能会发现没有显示验证码,当出现这种情况时,建议换个网络,或者过段时间再访问。
注册完成后,前往注册账号时使用的邮箱将会收到一份邮件,登录邮箱,将用户账户激活。
激活用户后,下载并安装Maltego程序。
7.1.2 设置Maltego模式
Maltego提供了两种模式,分别是Normal Privacy Mode(普通隐私模式)和Stealth Privacy Mode(隐蔽隐私模式)。其中,Normal Privacy Mode模式可以获取更多的信息。而且,允许用户直接使用互联网中的数据,如实体图片和Web站点信息;Stealth Privacy Mode模式更多用来简单分析信息,尤其是当前计算机没有网络时使用。使用这种模式,将无法直接从互联网中获取数据。所以为了能够获取更多信息,建议选择Normal Privacy Mode模式。下面将介绍具体设置Maltego模式的方法。
设置Maltego的模式为Normal Privacy Mode。具体操作步骤如下:
在图形界面的菜单栏中依次选择“应用程序”|“信息收集”|maltego命令,将显示Maltego产品选择对话框,如下图所示。
在该对话框中显示了可以使用的Maltego产品,包括Maltego One、Maltego XL、Maltego Classic、Maltego CE(Free)和Maltego CaseFile(Free)。其中,Maltego XL、Maltego Classic是收费的;Maltego CE和Maltego CaseFile是免费的。这里将选择免费的Maltego工具,所以单击Maltego CE(Free)下面的运行按钮,将显示如下图所示的对话框。
该对话框显示了许可协议信息。选择Accept复选框,然后单击Next按钮,将显示登录对话框,如下图所示。
在该对话框中输入前面注册的账户信息(邮件地址、密码和验证码),登录Maltego服务器。然后单击Next按钮,将显示登录结果,如下图所示。
该对话框显示了登录的结果。从该对话框中可以看到登录的用户名、邮箱地址及登录时间等信息。后续步骤只需要单击Next按钮,即可完成安装。
7.2 使用Maltego工具
通过前面的配置,Maltego工具可以正常使用了。用户可以使用Maltego工具,将前面收集到的信息进行整理并分析。而且,还可以使用Maltego的Transforms来获取更多的信息。在Maltego中提供了大量的实体,用来表示信息节点。例如,域名信息可以使用Domain实体表示一个域名。下面来介绍使用Maltego工具整理并分析信息的方法。
7.2.1 整理及分析主机信息
通过前面的信息收集,可知局域网中活动的主机、主机开放的端口、服务及操作系统类型。下面将介绍通过IP地址实体来整理及分析主机信息。
使用Maltego工具整理主机信息并分析。具体操作步骤如下:
启动Maltego工具,将显示如下图所示的界面。
在该界面左侧栏中显示了所有可用的实体。这里将选择IP地址实体,整理收集的主机相关信息。选择IPv4 Address实体,并拖拽到图表中,将显示如下图所示的界面。
从该界面中可以看到,在图表中添加了一个IP地址实体,默认该实体的IP地址为74.207.243.85。此时,用户可以修改该地址为用户探测到的活动主机地址,如192.168.29.136。用户通过双击实体的IP地址,或者修改属性IP Address值修改该实体的地址,如下图所示。
从该界面中可以看到,成功修改了IP地址实体的值。此时,用户以同样的方式,将端口(Port)和服务(Service)实体拖拽到图表中,整理该主机的相关信息,如下图所示。
从该界面可以看到添加的端口和服务实体。其中,端口默认属性值为0;服务默认属性值为80/Apache 9。用户可以根据自己收集的信息修改实体属性值。通过整理前面收集的信息可知该主机开放的端口有21、22、80、135和139,对应的服务为FTP、SSH、HTTP、msrpc和netbios-ssn等。这里将这些信息进行整理后,显示界面如下图所示。
此时,将收集到的信息都整理出来了。为了方便分析及查看更直观,用户可以通过连接线将它们之间的关系关联起来。例如,这里将主机IP地址与端口之间使用连接线连接起来。在IP地址实体(192.168.29.136)附近单击鼠标,将会延伸出一根线条,然后单击端口实体即可。此时,将会弹出一个对话框,如下图所示。
该对话框中的信息是用来设置连接线的,如Label(标签)、Color(颜色)、Style(线条风格)和Thickness(线条粗细)等。这里将设置线条的标签为port、颜色为红色,其他选项使用默认值。
单击OK按钮,即可看到添加的连接线,如下图所示。
从该界面中可以看到,成功将IP地址实体和端口实体建立了关系。用户使用同样的方法,可以将其他实体之间的关系用连接线连接起来,并通过标签标记实体信息,如下图所示。
- 从该界面可以更直观地看到收集的信息,使用起来也更方便。此时,用户还可以使用Maltego提供的Transforms来收集更多的信息,如IP所有者信息、网络信息和历史信息等。
7.2.1 整理并分析域名信息
通过分析前面收集的信息,可知收集到的域名WHOIS信息、子域名及服务器信息等。
使用Maltego工具整理域名信息并分析。具体操作步骤如下:
在Maltego中打开一个新的图表,避免与前面的信息混淆。单击菜单栏中的新建图表按钮,即可打开一个新的图表,如下图所示。
从该界面可以看到打开了一个新的图表,其名称为New Graph(2)。这里选择域名实体(Domain)来整理并分析域名信息。在实体面板中选择Domain实体并拖拽到图表中,然后修改该实体的域名为baidu.com,如下图所示。
通过分析前面收集的信息,可以看到获取了该域名的WHOIS信息、子域名及服务器信息。例如,这里整理收集到域名baidu.com的子域名。其中,找到的子域名有www.baidu.com 、news.baidu.com和map.baidu.com等。其中,用来表示子域名的实体名为DNS Name。所以,在实体列表中选择DNS Name实体并拖拽到图表中,然后修改该实体名为对应的子域名,如下图所示。
从该界面可以看到整理的子域名信息。同样,用户可以使用连接线将它们建立连接,如下图所示。
- 从该界面可以看到,对收集的域名进行了整理。而且,可以很直观地看到域名baidu.com对应的所有子域名。此时,用户使用Maltego的Transform还可以收集该域名及子域名更多的信息,如域名注册商、子域名和WHOIS信息等。
7.2.3 使用Transform收集信息
Maltego提供了大量的Transform,可以用来收集更多的信息。这里将以域名实体为例,获取更多的信息。
使用Transform收集域名baidu.com相关的信息。具体操作步骤如下:
选择Domain实体拖拽到一个新的图表中,并修改域名为baidu.com,如下图所示。
选择域名实体并单击右键,将显示所有可用的Transform列表,如下图所示。
从该界面可以看到,针对域名实体可以使用的Transform集,如Shodan、ThreatMiner和Farsight DNSDB等。如果用户想要查看所有Transform,单击All Transforms选项,即可看到所有的Transform;如果想查看某个Transform集,则单击对应的Transform即可。这里单击All Transforms选项,展开所有Transform列表,如下图所示。
此时,用户选择任意一个Transform,即可获取对应的信息。例如,使用To Domain[Find other TLDs]这个Transform,查找该域名的其他顶级域。在上图中单击To Domain[Find other TLDs]选项,即可获取所有的其他顶级域,如下图所示。
- 从该界面可以看到,成功收集到了域名baidu.com的其他顶级域名,如baidu.actor、baidu.al及baidu.at等。