目录
二、开源情报(Open Source Intelligence)
前言
信息收集是从公开可用资源获取所有相关信息的一种方式,通常称为开源情报(Open Source Intelligence, OSINT)。通过OSINT的被动侦察,是进行渗透测试(或者攻击)网络(或者服务器)目标杀链的第一步。攻击者通常花费75%的时间对入侵目标进行侦察,在这一阶段,允许对目标进行定义、确定攻击目标的映射关系、探索其安全漏洞,以便最终进行漏洞利用。本节将介绍开源情报和被动侦察的相关内容。
一、侦察的基本原则
在进行渗透测试或攻击数据目标时,侦察是杀链的第一步,侦察的结果会给出需要额外侦察的方向或者指出在漏洞利用阶段要攻击的漏洞,侦察活动是与目标网络设备交互过程的一部分。
被动侦察并不与目标网络产生直接的恶意交互。攻击者的源IP地址不会被日志记录(例如:一个针对目标邮件地址的Google搜索)。被动侦察可进一步区分为直接和间接两类,当攻击者以一种可预期的方式与目标交互时,直接被动侦察可以看作是和目标的正常交互,这些交互活动属于可预期的用户活动,很少被看作是攻击目标的前奏,而间接被动侦察则绝对没有与目标系统的交互。
二、开源情报(Open Source Intelligence)
1、概述
一般来说,渗透测试或进行攻击的第一步是进行开源情报收集。OSINT指的是从公共的资源,特别是从互联网上,进行信息收集。OSINT可以分为两种类型:进攻和防守。进攻型需要分析对目标进攻所需的所有数据,而防守型只是收集以前的违规数据和与目标相关的其他安全事件的技术。
2、进攻型OSINT
需要收集的目标信息依赖于渗透测试的初始目标。
域名(Domain name):在外部场景中识别攻击者或渗透测试人员的目标是通过域名开始的,域名是OSINT中最关键的元素。
DNS侦察和路由映射(DNS reconnaissance and route mapping):一旦测试人员确定其测试目标在线,下一步就是识别目标的IP地址和路由。DNS侦察关心的是:谁拥有一个特定域或一系列IP地址(whois-类别信息尽管在通用数据保护条例(GDPR)公布之后改变了很多),定义实际域名的DNS信息和标识目标的IP地址,以及在渗透测试人员或攻击者与最终目标之间的路由。
搜集这些信息是半主动的,一些信息是免费开源的,而另一些信息来自第三方实体,例如DNS注册机构,虽然注册机构可能会收集IP地址和关于攻击者请求的数据,但是很少提供终端目标的信息。可以由目标直接检测到的信息是从不用来评估或者保留的,如DNS服务器日志。因为需要的信息可以用一个确定的系统级、有条理的方法查询到,所以也可以自动收集信息。
1.利用Sublist3r收集域资料
Sublist3r是一个基于Python的工具,可用于域捕获,即利用OSINT枚举主域名的所有子域名,可以利用多种搜索引擎的API,如Google、Bing、Baidu和ASK,也可以在NetCraft、Virustotal、ThreatCrowd、DNSdumpster和reverseDNS中搜索,还可以利用特定词库来实现暴力破解。
Sublist3r可以直接从Github上下载,也可以在Kali终端中运行以下命令获取:
git clone https://github.com/aboul3la/Sublist3r/
2.Maltego
就个人和组织的侦察而言,Maltego是OSINT框架中最强大的之一,这是一种GUI工具集,可以通过各种方法收集个人在互联网上公开的信息,它还能够枚举域名系统(DNS),暴力破解普通DNS,并且以易于阅读的格式收集来自社交媒体的数据。
在基于目标的渗透测试中,我们可以利用Maltego M4开发数据可视化软件,用于处理收集到的数据,访问该应用程序最简单方法是在终端输入maltegoce,在Maltego中,这类任务被称为变换(transform)。变换内置在工具中,被定义为执行特定任务的代码脚本,Maltego还提供多种插件,如SensePost工集、Shodan、VirusTotal、ThreatMiner等。
当选择Maltego公共服务器时,一般将选择以下服务:
Company Stalker(公司追踪):用于获取域中所有电子邮件的地址,然后查看哪个和社交网络有关联,它还下载并且提取互联网上已发布文档的元文件。
Find Wikipedia edits(查找维基百科编辑):该选项将在维基百科编辑和所有社交媒体平台联合搜索。
Footprints L1(足印L1):执行域的基本足印。
Footprints L2(足印L2):执行域的中等级足印。
Footprints L3(足印L3):这需要深入一个域,因为它占用了所有资源,通常应小心使用。
Footprint XML(足印XML):这适用于大型目标,例如托管自己的数据中心的公司,并尝试通过查看发送方策略框架(Sender Policy Framework, SPF)记录来获得网络块,并将委派的DNS委托给其名称服务器。
Person - Email Address(私人 - 电子邮件地址):用于获取某人的电子邮件地址,并查看互联网上使用的位置。输入的不是一个域,而是一个完整的电子邮件地址。
Prune Leaf entries(修剪条目):提供删除网络的特定部分的选项,以帮助过滤信息。
Twittter digger X(Twitter 挖掘机X):Twitter推文分析器别名。
Twitter digger Y(Twitter 挖掘机Y):设计Twitter的关联,在其中发现、提取和分析推文。
Twitter Monitor(Twitter 监视器):可以用于执行操作监视Twitter的主题标签(hashtag),以及围绕某个短语提到的实体。输入是短语。
URL to Network and Domain Information(网络和域信息的URL):使用URL来识别域的详细信息。
攻击者从L1开始,基本的任务是了解域、潜在可用的子域名和相关的IP地址。选择机器和,单击NEXT并选择一个域。
3.OSRFramework
OSRFramework是一种由i3visio设计的通过Web接口实时开源威胁情报收集的工具,其控制台为OSRFConsole。OSRFramework可以通过运行命令直接安装:
pip install osrframework
OSRFramework提供了关于关键字的多源威胁情报,并且其既可以单独使用,也可以接入Malgeto使用,OSRFramework可以为渗透测试者提供三个模块,以进行外部威胁情报的数据收集。
usufy:在多个搜索引擎中搜索,识别URL中的关键字,以及自动枚举并以.csv的格式存储所有结果,可以用以下命令使用usufy搜索关键字:
usufy -n <key words>
searchfy:在Facebook、Github、Instagram、Twitter和YouTube中搜索关键字,可以用以下命令使用searchfy搜索关键字:
searchfy -q"<key words>"
mailfy:识别关键字并自动在关键字后面添加电子邮件域名,然后自动以API调用的形式在haveibeeenpawned.com中搜索,可以用以下命令使用mailfy搜索关键字:
mailfy -n <key words>
4.Web archives
网页虽然在互联网中删除,但在Google中不一定被删除了,被Google访问过的页面都被备份为快照储存在Google缓存中,通常情况下,可以根据我们的搜索查询来查看Google是否可以为我们提供最佳的可用页面,这同样可以用来收集关于目标的信息,例如用户名、哈希密码、正在使用的后端类型以及其他相关的技术和策略信息,以下地址是收集过去数据的第一级:
https://web.archive.org/web/
5.抓取
攻击者利用从网站提取的大量数据集,进而将提取的数据存储到本地文件系统中,这种技术成为抓取或网页抓取。
6.收集用户名和电子邮件地址
theHarvester是一个Python脚本,可以借助流行的搜索引擎和其他一些站点来搜索电子邮件地址、主机以及子域站点等。使用theHarvester工具只需要通过几个命令参数来进行设置,可用的选项如下:
-d:用来确定搜索的域,通常是当前域或者目标网站。
-b:用来确定提取信息的来源,来源必须是下面的一种:Bing、Bing API、Google、Jigsaw、Google-Profiles、LinkedIn、People123、PGP或者ALL。
-l:该选项使theHarvester只收集特定数目的返回搜索结果的数据。
-f:用来保存最后的结果,保存为HTML文件或者XML文件。如果省略该选项,结果将会显示在屏幕上,但是不会被保存。
7.获取用户信息
许多渗透测试人员会收集用户名和电子邮件地址,因为这些信息经常用于登录目标系统。最常用的工具是网络浏览器,用来手动搜索目标组织的网站,也包括第三方站点,例如LinkedIn或其他社交网站,Kali包含的一些自动工具也支持手动搜索。
3、Google黑客数据库
1.使用dork脚本来查询Google
了解Google Hacking数据库首先要了解所有典型的Google运算符,这些Google运算符是Google查询的一部分,搜索的语法如下:
operator:itemthatyouwanttoserach
下表列出了所有典型的Google运算符:
操作 | 说明 | 能否混用 | 能否单独使用 |
intitle | 允许页面标题关键字搜索 | 能 | 能 |
allintitle | 在标题中一次搜素所有关键字 | 否 | 能 |
inurl | 搜索URL中的关键字 | 能 | 能 |
site | 将Google搜索结果过滤到该网站 | 能 | 能 |
ext或filetype | 搜索特定的拓展名或文件类型 | 能 | 否 |
allintext | 允许关键字搜索所有出现次数 | 否 | 能 |
link | 允许在页面上进行外部链接搜索 | 否 | 能 |
inanchor | 在网页上搜索锚点链接 | 能 | 能 |
numrange | 限制了范围内的搜索 | 能 | 能 |
daterange | 限制了日期的搜索 | 能 | 能 |
author | 找到群组作者 | 能 | 能 |
group | 搜索组名称 | 能 | 能 |
related | 搜索相关关键词 | 能 | 能 |
dork搜索是:
inurl:"/jira/login.jsp"intitle:"JIRA login"
更具体的运算符,可以参考Google的指南:
https://www.googleguide.com/advanced_operators_reference.html
还可以通过exploit-db利用Google黑客数据库,该数据库由安全研究社区不断更新,可在以下地址获得:
https://www.exploit-db.com/google-hacking-database/
2.Data dump网站
当下,通过现场应用(the on-spot app),如pastebin.com,任何信息都可以在互联网上高效地分享,这种在线信息也为攻击者提供了丰富的信息列表。归档论坛还会显示特定网站的日志,或者以前曾被黑客入侵的黑客攻击事件,Pastebin提供此类信息。
3.使用脚本自动化收集OSINT数据
自动化OSINT,可以使得被动侦察更加高效。下面是一个简单的自动化脚本,利用一些Kali中的命令行工具,输出储存在多个文件中,没有数据库,可以采用类似脚本自动化大多数命令行工具,获取大部分信息。
#!/bin/bash
echo "Enter target domain:"read domain if [[ $domain != "" ]];
then
echo "Target damain set to $domain"
echo "******************************************"
echo "The Harvestor" theharvester -d $domain -1 500 -b all -f
harvester_$domain echo "done!"
echo "******************************************"
echo "Whois Details" whois $domain >> whois_$domain
echo "done!"
echo "******************************************"
echo "Searching for txt files on $domain using Goofile..." goofile -d
$domain -f txt >> goofile_txt_$domain
echo "done!"
echo "******************************************"
echo "Searching for pdf files on $domain using Goofile..." goofile -d
$domain -f pdf >> goofile_pdf_$domain
echo "done!"
echo "******************************************"
echo "Searching for pdf files on $domain using Goofile..." goofile -d
$domain -f doc >> goofile_doc_$domain
echo "done!"
echo "******************************************"
echo "Searching for pdf files on $domain using Goofile..." goofile -d
$domain -f xls >> goofile_xls_$domain
echo "done!" else echo "Error! Please enter a domain..."
fi
前一脚步加上一行循环脚本可以在多个域运行,命令如下:
while read r; do scriptname.sh $r; done < listofdomains
4、防守型OSINT
防守型OSINT通常可以用于查看已经被掌握的内容,并且查看这些信息在渗透测试活动期间是否有价值。如果渗透测试的目标是演示真实世界的场景,那么根据这些数据可以很方便地初步识别已经掌控的类似目标。
1.暗网
暗网(Dark Web)是Tor服务器及其客户端之间存在的加密网络,而深网(Deep Web)仅仅提供数据库和一些Web服务内容太,由于种种原因,常规搜索引擎(例如Google)无法对其进行搜索。比如,处于各种理由,用户可以在暗网上购买过期或禁止销售的药品,某些网站(例如deepdotweb.com)提供了一些隐藏的深网链接,而这些链接只能通过Tor浏览器访问。
2.安全漏洞
安全漏洞是指绕过底层安全机制,未经授权访问数据、应用程序、服务、网络或设备任何事件。黑客常访问的网站就收集了大量的漏洞资料,例如:
https://databases.today
https://haveibeenpwned.com
为了获取目标的更多信息,测试者往往需要访问zone-h.com这类网站以获取目标的漏洞信息。
3.威胁情报
威胁情报是关于威胁一个组织的潜在的或当前的攻击的控制、计算以及提炼信息。这种情报的主要目的是确保组织意识到当前的风险,如高级持久性威胁(Advanced Persistent Threat, APT)、零日漏洞(zero day exploit),以及其他严重的外部威胁。渗透测试或攻击者总是会订阅这类开源威胁情报的框架,如STIX、TAXII或者利用妥协指标(Indicators of Compromise, IOC)的GOSINT框架。
总结
本节介绍了开源情报以及被动侦察的相关内容,被动侦察包含直接被动被动侦察和间接被动侦察两种类型,同时说明了如何利用工具获取开源情报和进行被动侦察,在下一节中,将介绍外网和内网主动侦察的相关内容。