Twelve OSINT information collection tips sharing

www-freebuf-com
10-10-2018

#1

前言

公开资源情报计划(Open source intelligence ),简称OSINT,是美国中央情报局(CIA)的一种情报搜集手段,从各种公开的信息资源中寻找和获取有价值的情报。

有各种各样的数据可以被归类为OSINT数据,但从渗透测试者的角度来看所有这些数据都不重要。作为渗透测试人员,我们更感兴趣的是那些可以为我们实际所利用的数据信息。例如:

可增加攻击面的信息(域,网块等);

凭据(电子邮件地址,用户名,密码,API密钥等);

敏感信息(客户详细信息,财务报告等);

基础架构详情(技术栈,使用的硬件设备等);

12种OSINT信息收集技巧

1. SSL/TLS证书通常都会包含域名,子域名和电子邮件地址。这使得它成为了攻击者眼中的一座宝库。

证书透明度Certificate Transparency是谷歌力推的一项拟在确保证书系统安全的透明审查技术,只有支持CT技术签发的EV SSL证书,谷歌浏览器才会显示绿色单位名称,否则chrome浏览器不显示绿色单位名称。

新的签发流程规定:证书必须记录到可公开验证、不可篡改且只能附加内容的日志中,用户的网络浏览器才会将其视为有效。通过要求将证书记录到这些公开的 CT 日志中,任何感兴趣的相关方都可以查看由授权中心签发的所有证书。这意味着任何人都可以公开获取和查看这些日志。为此,我专门编写了一个用于从给定域CT日志中找到的SSL/TLS证书中提取子域的脚本

提取子域的脚本

提取子域的脚本

另外,再推荐大家一款工具SSLScrape。这是一款将网络块(CIDR)作为输入,来查询各个IP地址获取SSL/TLS证书,并从返回的SSL证书中提取主机名的工具。

sudo python sslScrape.py TARGET_CIDR

SSLScrape

SSLScrape

2. WHOIS服务在渗透测试期间,通常用于查询注册用户的相关信息,例如域名或IP地址(块)。WHOIS枚举对于在互联网上拥有大量资源的组织尤为有效。

一些公共WHOIS服务器支持高级查询,我们可以利用这些查询来收集目标组织的各种信息。

下面我以icann.org为例,通过查询ARIN WHOIS server获取目标域所有包含email地址的条目,并从中提取email地址。

whois -h whois.arin.net "e @ icann.org" | grep -E -o "\b[a-zA-Z0-9.-][email protected][a-zA-Z0–9.-]+\.[a-zA-Z0–9.-]+\b" | uniq

提取email地址

提取email地址

通过查询RADB WHOIS server获取属于自治系统号(ASN)的所有网络块。

whois -h whois.radb.net -- '-i origin AS111111' | grep -Eo "([0-9.]+){4}/[0-9]+" | uniq

RADB WHOIS server

RADB WHOIS server

通过查询ARIN WHOIS server获取给定关键字的所有POC,ASN,组织和终端用户。

whois -h whois.arin.net "z wikimedia"

获取给定关键字的所有信息

获取给定关键字的所有信息

3. 自治系统(AS)号可以帮我们识别属于组织的网络块,以及发现网络块中主机上运行的服务。

使用dig或host解析给定域的IP地址:

dig +short google.com

获取给定IP的ASN:

curl -s http://ip-api.com/json/IP_ADDRESS | jq -r .as

我们可以使用WHOIS服务或NSE脚本,来识别属于ASN号码的所有网络块:

nmap --script targets-asn --script-args targets-asn.asn=15169

识别属于ASN号码的所有网络块

识别属于ASN号码的所有网络块

4. 如今使用云存储的企业越来越多,尤其是对象/块存储服务,如Amazon S3,DigitalOcean Spaces和Azure Blob Storage。但在过去的几年里,由于S3 buckets错误配置导致的数据泄露事件频出。

根据我们的经验,我们看到人们将各种数据存储在安全性较差的第三方服务上,从纯文本中的凭据到他们私人的宠物照片。

这里有一些工具例如SlurpAWSBucketDumpSpaces Finder,可用于搜索可公开访问的对象存储实例。Slurp和Bucket Stream等工具将证书透明度日志数据与基于置换的发现相结合,以识别可公开访问的S3 buckets。

识别可公开访问的S3 buckets

识别可公开访问的S3 buckets

识别可公开访问的S3 buckets

识别可公开访问的S3 buckets

5. Wayback Machine是一个国外的网站,它是互联网的一个备份工具,被称为互联网时光机,自从1996年以来Wayback Machine已经累计备份了超过4350亿个网页。

你只要在它的网站上输入一个网站地址,就能看到这个网站在过去的不同时期分别长什么样。通过Wayback CDX Server API我们可以轻松的搜索存档。waybackurls是一个用于搜索目标站点相关数据的工具。

挖掘Wayback Machine存档对我们识别给定域的子域,敏感目录,敏感文件和应用中的参数非常有用。

go get github.com/tomnomnom/waybackurls waybackurls icann.org

挖掘Wayback Machine存档

挖掘Wayback Machine存档

6. Common Crawl网站为我们提供了包含超过50亿份的网页数据,并且任何人都可以免费访问和分析这些数据。

我们可以通过Common Crawl API在索引的抓取数据中搜索我们感兴趣的站点。这里有一个小脚本(cc.py)可以帮你完成搜索任务。

python cc.py -o cc_archive_results_icann.org icann.org

Common Crawl

Common Crawl

7. Censys是一款用以搜索联网设备信息的新型搜索引擎,安全专家可以使用它来评估他们实现方案的安全性,而黑客则可以使用它作为前期侦查攻击目标、收集目标信息的强大利器。

Censys将数据集分为三种类型 – IPv4主机,网站和SSL/TLS证书。如果你能熟练的掌握Censys的搜索技巧,那么它将发挥与Shodan不相上下的强大作用。

Censys为我们提供了一个API,我们可以用它来查询数据集。这里我编写了一个连接调用Censys API的Python脚本,用于查询给定域的SSL/TLS证书,并提取属于该域的子域和电子邮件地址,点此获取

Censys

Censys

Censys

8. Censys会从多个数据源来收集SSL/TLS证书。

使用的技术之一是探测443端口上的公共IPv4地址空间上的所有计算机,并聚合它们返回的SSL/TLS证书。Censys提供了一种关联提供证书的IPv4主机获取的SSL/TLS证书的方法。

通过关联SSL/TLS证书和提供证书的IPv4主机,可以找到受Cloudflare等服务保护的域的源服务器。

收集SSL/TLS证书

收集SSL/TLS证书

9. 源码对于安全评估来说是一座信息宝库。

通过源码我们可以获取到大量信息,例如凭据,潜在漏洞,基础架构等信息。GitHub是一个非常受欢迎的版本控制和协作平台,在上面存有大量组织的源码。另外,Gitlab和Bitbucket同样也非常的受欢迎。总之,不要错过任何可能的地方。

GitHubCloner可以自动化的为我们克隆Github帐户下所有的存储库。

$ python githubcloner.py --org organization -o /tmp/output

除了GitHubCloner之外,你还可以尝试使用Gitrob,truffleHog,git-all-secrets等工具。

10. Forward DNS dataset是作为Rapid7 Open Data项目的一部分发布的。

数据格式为gzip压缩的JSON文件。虽然数据集很大(20+GB压缩,300+GB未压缩),但我们仍可以解析数据集并查找给定域的子域。最近,数据集已根据数据包含的DNS记录类型被分为了多个文件。

Forward DNS dataset

Forward DNS dataset

11. 内容安全策略(CSP)定义Content-Security-Policy HTTP头,允许我们创建可信内容源的白名单,并指示浏览器仅从这些可信源执行或呈现资源。

Content-Security-Policy头将为我们列出作为攻击者可能感兴趣的一堆源(域)。这里我编写了一个用来解析CSP头中列出域名的简单脚本,点此获取该脚本

内容安全策略(CSP)

内容安全策略(CSP)

12. SPF是为了防垃圾邮件的一种DNS记录类型,是一种TXT类型的记录。

SPF记录的本质就是向收件人宣告本域名的邮件从清单上所列IP发出的都是合法邮件,并非冒充的垃圾邮件,可以防止别人伪造你来发邮件,是一个反伪造性邮件的解决方案。

简而言之,SPF记录为我们列出了所有授权发送电子邮件的主机。有时,SPF记录还会泄漏内部网络块和域名。

一些服务如Security Trails可以为我们提供DNS记录的历史快照。我们可以通过查看历史SPF记录,发现SPF记录中列出的给定域的内部网络块和域名。

Security Trails

Security Trails

这里有一个我们编写的脚本,可以帮助你从给定域的SPF记录中提取网络块和域名。当使用-a选项运行时,该脚本还可以为我们返回ASN详细信息,点此获取该脚本

python assets_from_spf.py icann.org -a | jq .

返回ASN详细信息

返回ASN详细信息

总结

在本文中,我为大家介绍了我们在日常安全评估中经常用到的一些信息收集的方法。虽然涵盖面很广,但仍有许多需要补充的地方。因此,如果你有更好的技巧方法,欢迎你在评论中与我分享!

参考文献:

https://blog.appsecco.com/open-source-intelligence-gathering-101-d2861d4429e3

https://blog.appsecco.com/certificate-transparency-part-3-the-dark-side-9d401809b025

https://blog.appsecco.com/a-penetration-testers-guide-to-sub-domain-enumeration-7d842d5570f6

https://www.certificate-transparency.org

https://www.arin.net/resources/services/whois_guide.html

https://index.commoncrawl.org/

https://www.upguard.com/breaches/cloud-leak-accenture

https://www.0xpatrik.com/censys-guide/

https://www.0xpatrik.com/osint-domains/

https://opendata.rapid7.com/sonar.fdns_v2/

*参考来源:appsecco , FB小编 secist 编译,转载请注明来自FreeBuf.COM

Original links

http://www.freebuf.com/articles/web/184820.html