第二章 信息收集和扫描
在本章中,我们将学习以下内容
使用Metasploit被动收集信息
使用Metasploit主动收集信息
使用Nmap进行端口扫描
使用db_nmap方式进行端口扫描
使用ARP进行主机发现
UDP服务探测
SMB扫描和枚举
SSH版本扫描
FTP扫描
SMTP枚举
SNMP枚举
HTTP扫描
WinRM扫描和爆破
与Nessus结合使用
与NeXpose结合使用
与OpenVAS结合使用
简介
信息收集是渗透测试中首先要做的重要事项之一,目的是尽可能多的查找关于目标的信息,我们掌握的信息越多,渗透成功的机会越大。在信息收集阶段,我们主要任务是收集关于目标机器的一切信息,比如IP地址,开放的服务,开放的端口。这些信息在渗透测试过程中启到了至关重要的作用。为了实现这一目的,我们将在本章学习各种扫描技术、如SMB扫描、SSH服务扫描,FTP扫描、SNMP枚举、HTTP扫描以及WinRM扫描和暴力破解。
收集信息的方式主要有三种:
1、被动信息收集:这种方式是指在不物理连接或访问目标的时候,获取目标的相关信息,这意味着我们需要使用其他信息来源获得目标信息。比如查询whois信息。假设我们的目标是一个在线的Web服务,那么通过whois查询可以获得它的ip地址,域名信息,子域信息,服务器位置信息等。
2、主动信息收集:这种方式是指与目标建立逻辑连接获取信息,这种方式可以进一步的为我们提供目标信息,让我们对目标的安全性进一步理解。在端口扫描中,使用最常用的主动扫描技术,探测目标开放的端口和服务。
3、社会工程学:这种方式类似于被动信息收集,主要是针对人为错误,信息以打印输出、电话交谈、电子邮件等形式泄露。使用这种方法的技术有很多,收集信息的方式也不尽相同,因此,社会工程学本身就是一个技术范畴。
社会工程的受害者被诱骗发布他们没有意识到会被用来攻击企业网络的信息。例如,企业中的员工可能会被骗向假装是她信任的人透露员工的身份号码。尽管该员工编号对员工来说似乎没有价值,这使得他在一开始就更容易泄露信息,但社会工程师可以将该员工编号与收集到的其他信息一起使用,以便更快的找到进入企业网络的方法。
1、使用Metasploit进行被动信息收集
在本章中,我们将详细学习信息收集的各种被动和主动技术。首先,我们将学习分析最常用和最容易被忽视的被动信息收集技术,然后,我们将重点关注通过端口扫描获取信息。Metasploit 具有多种内置扫描功能,以及一些与之集成的第三方工具,以进一步增强端口扫描功能。我们将学习使用内置的扫描仪,以及一些与Metasploit 框架结合使用的第三方扫描工具。让我们开始吧。
准备工作
我们将从公司域名开始收集信息,获取公司有关信息,收集子域名,检测蜜罐、收集电子邮件地址等。
怎么做
Metasploit中有好几个信息收集模块,在本节中,我们将学习使用其中的一些模块,建议你自行探索学习所有的信息收集模块。
DNS记录扫描和枚举
DNS扫描和枚举模块可用于从给定的DNS服务器收集有关域名的信息,执行各种DNS查询(如域传送,反向查询,SRV记录等)
1、程序位于auxiliary模块中,进入msfconsole后,我们可以使用use命令调用我们想要的模块,我们要使用的auxiliary/gather/enum_dns模块。使用use auxiliary/gather/enum_dns 进入模块,输入info可以查看模块的信息,包括作者,描述,基本配置信息等。
msf5 > use auxiliary/gather/enum_dns //切换到 enum_dns模块
msf5 auxiliary(gather/enum_dns) > info //查看模块信息 Name: DNS Record Scanner and Enumerator Module: auxiliary/gather/enum_dnsLicense: Metasploit Framework License (BSD) Rank: Normal
Provided by:Carlos Perez <carlos_perez@darkoperator.com>Nixawk
Check supported:No
Basic options:Name Current SettingRequiredDescription---- ----------------------------------DOMAINyes The target domainENUM_A true yes Enumerate DNS A recordENUM_AXFRtrue yes Initiate a zone transfer against each NS recordENUM_BRT falseyes Brute force subdomains and hostnames via the supplied wordlistENUM_CNAME true yes Enumerate DNS CNAME recordENUM_MXtrue yes Enumerate DNS MX recordENUM_NStrue yes Enumerate DNS NS recordENUM_RVL falseyes Reverse lookup a range of IP addressesENUM_SOA true yes Enumerate DNS SOA recordENUM_SRV true yes Enumerate the most common SRV recordsENUM_TLD falseyes Perform a TLD expansion by replacing the TLD with the IANA TLD listENUM_TXT true yes Enumerate DNS TXT recordIPRANGE noThe target address range or CIDR identifierNSnoSpecify the nameserver to use for queries (default is system DNS)STOP_WLDCRDfalseyes Stops bruteforce enumeration if wildcard resolution is detectedTHREADS1noThreads for ENUM_BRTWORDLIST /usr/share/metasploit-framework/data/wordlists/namelist.txtnoWordlist of subdomains
Description:This module can be used to gather information about a domain from agiven DNS server by performing various DNS queries such as zonetransfers, reverse lookups, SRV record brute forcing, and othertechniques.
References:https://cvedetails.com/cve/CVE-1999-0532/OSVDB (492)
msf5 auxiliary(gather/enum_dns) >
2、设置需要查询的域名,设置线程数量,然后运行它
msf5 auxiliary(gather/enum_dns) > set DOMAIN packtpub.com//设置需要查询的域名
DOMAIN => packtpub.com
msf5 auxiliary(gather/enum_dns) > set THREADS 10 //设置线程数
THREADS => 10
msf5 auxiliary(gather/enum_dns) > run
[*] querying DNS NS records for packtpub.com
[+] packtpub.com NS: dns3.easydns.org.
[+] packtpub.com NS: dns4.easydns.info.[+] packtpub.com NS: dns1.easydns.com.[+] packtpub.com NS: dns2.easydns.net....
[*] Auxiliary module execution completed
msf5 auxiliary(gather/enum_dns) >
从输出信息中可以看到获取的DNS记录
更多
dns扫描和枚举模块也可以用于主动信息收集,通过爆破的方式,设置ENUM_BRT为true,可以通过字典暴力枚举子域名和主机名。WORDLIST选项可以设置字典文件。
CorpWatch 公司名称信息收集
收集公司信息也是必不可少的,我们可以使用 CorpWatch公司名称信息搜索模块:auxiliary/gather/corpwatch_lookup_name,通过该模块可以收集公司的名称,地址,部门和行业信息。该模块与CorpWatch API连接,以获取给定公司名称的公开可用信息。
API申请:api.corpwatch.org
切换到auxiliary/gather/corpwatch_lookup_name模块,设置好公司名字,设置信息显示的数量
msf5 > use auxiliary/gather/corpwatch_lookup_name
msf5 auxiliary(gather/corpwatch_lookup_name) > set COMPANY_NAME Microsoft
COMPANY_NAME => Microsoft
msf5 auxiliary(gather/corpwatch_lookup_name) > set LIMIT 1
LIMIT => 1
msf5 auxiliary(gather/corpwatch_lookup_name) > run
[*] Company Information
---------------------------------
[*] CorpWatch (cw) ID): cw_4803
[*] Company Name: MICROSOFT CORP
[*] Address: ONE MICROSOFT WAY, REDMOND WA 98052-6399
[*] Sector: Business services
[*] Industry: Services-prepackaged software
[*] Auxiliary module execution completed
msf5 auxiliary(gather/corpwatch_lookup_name) >
Tip:此网站被Q,需要配置代理才能使用这个服务。
搜索引擎子域名搜集器
收集子域名是寻找新目标的好办法,我们可以使用搜索引擎子域名收集模块。
模块名:auxiliary/gather/searchengine_subdomains_collector
从Yahoo和Bing收集域名的子域信息
切换到这个模块,设置好要要查询的域名,然后运行
msf5 > use auxiliary/gather/searchengine_subdomains_collector
msf5 auxiliary(gather/searchengine_subdomains_collector) > set TARGET packtpub.com
TARGET => packtpub.com
msf5 auxiliary(gather/searchengine_subdomains_collector) > run
[*] Searching Bing for subdomains from domain:packtpub.com
[*] Searching Yahoo for subdomains from domain:packtpub.com
[+] domain:packtpub.com subdomain: subscription.packtpub.com
[*] Searching Bing for subdomains from ip:54.171.32.62
[*] Searching Yahoo for subdomains from ip:54.171.32.62
[+] ip:54.171.32.62 subdomain: niobase.com
[+] ip:54.171.32.62 subdomain: demandpeoples.vote
[*] Searching Bing for subdomains from ip:34.240.217.226
[-] ip:34.240.217.226 - getaddrinfo: Name or service not known
[*] Searching Yahoo for subdomains from ip:34.240.217.226
[+] ip:34.240.217.226 subdomain: www.snp.org
[+] ip:34.240.217.226 subdomain: answerthepublic.com
[*] Searching Bing for subdomains from ip:34.243.45.171
[-] ip:34.243.45.171 - getaddrinfo: Name or service not known
[*] Searching Yahoo for subdomains from ip:34.243.45.171
[*] Searching Bing for subdomains from ip:34.248.41.77
[*] Searching Yahoo for subdomains from ip:34.248.41.77
[+] ip:34.248.41.77 subdomain: www.buzzi.space
[+] ip:34.248.41.77 subdomain: www.bookishfirst.com
[+] ip:34.248.41.77 subdomain: www.vizlib.com
[+] ip:34.248.41.77 subdomain: www.alphacodeincubate.club
[+] ip:34.248.41.77 subdomain: www.appliedmldays.org
[+] ip:34.248.41.77 subdomain: www.accessable.co.uk
[*] Searching Bing for subdomains from ip:34.254.137.88
[-] ip:34.254.137.88 - getaddrinfo: Name or service not known
[*] Searching Yahoo for subdomains from ip:34.254.137.88
通过这个模块,我们收集到了一些新的目标。
我们已经学习了一些基础模块的使用,让我们来学习使用一些更强大的工具吧。
Censys 搜索
Censys是一个互联网设备搜索引擎,Censys每日通过ZMap和ZGrab扫描互联网上的主机和网站,持续监控互联网上所有可访问的服务器和设备。
我们可以使用Censys搜索模块,通过Censys REST API进行信息查询。可以检索超过100W的网站和设备信息。
Tip:如果需要使用Censys搜索模块,需要去https://censys.io注册获得API和密钥
msf5 > use auxiliary/gather/censys_search
msf5 auxiliary(gather/censys_search) > set CENSYS_DORK packtpub.com //设置目标站点
CENSYS_DORK => packtpub.com
msf5 auxiliary(gather/censys_search) > set CENSYS_SEARCHTYPE ipv4 //设置搜索类型
CENSYS_SEARCHTYPE => ipv4
msf5 auxiliary(gather/censys_search) > set CENSYS_SECRET l5xZ******Z4xzVmIPZ0P //设置censys密钥
CENSYS_SECRET => l5xZa0zJ*******VlCZ4xzVmIPZ0P
msf5 auxiliary(gather/censys_search) > set CENSYS_UID 24d813a********c1b3e80c9e //设置 API_ID
CENSYS_UID => 24d813a******2-89c1b3e80c9e
msf5 auxiliary(gather/censys_search) > run
[+] 109.234.207.108 - 443/https,80/http
[+] 109.234.207.108 - 443/https,80/http
[+] 34.253.81.66 - 443/https,80/http
[+] 34.253.81.66 - 443/https,80/http
[+] 123.252.235.122 - 443/https
[+] 109.234.200.116 - 443/https
[+] 83.166.169.240 - 443/https,22/ssh,80/http
......
[+] 67.198.37.17 - 443/https,80/http,25/smtp,53/dns
[+] 67.198.37.17 - 443/https,80/http,25/smtp,53/dns
[+] 67.198.37.17 - 443/https,80/http,25/smtp,53/dns
[+] 67.198.37.17 - 443/https,80/http,25/smtp,53/dns
[+] 172.104.243.217 - 80/http
[+] 66.42.34.69 - 443/https,80/http
[+] 66.42.34.69 - 443/https,80/http
[*] Auxiliary module execution completed
msf5 auxiliary(gather/censys_search) >
收集到了非常多的IP信息和端口信息
Shodan 搜索引擎
Shodan搜索引擎是一个付费的互联网设备搜索引擎,Shodan运行你搜索网站的Banners信息,设备的元数据,比如设备的位置,主机名,操作系统等。
Tip:同样要使用Shodan搜索模块,需要先去S