Censys.io Guide: Discover SCADA and Phishing Sites
原文链接:https://0xpatrik.com/censys-guide/
第一次翻译,如有错误希望指正(THs)
在这一篇文章中,我想分享我对于Censys.io的认识
我假设你已经熟悉Shadan.它允许您搜索具有友好界面和多个过滤选项的面向公众的主机。从我的角度来看,Shodan经过优化,
就可以为全球的物联网设备提供搜索功能。它的UI包括:曝光相机的当前视图,VNC屏幕截图和RDP屏幕截图等功能。
我一直认为Censys是Shodan的“缩减版”,功能较少,用户界面体验感较差。从目前来看这不可能是事实。因为Censys提供了比Shodan更复杂的界面和过滤选项。
总的来说,这将是一个缺点,但我认为对于网络安全从业者来说这是一个巨大的优势。该网站的核心部分是只有一个搜索框,它将搜索划分为三个独立的区域:
IPv4主机
网站
证书
ElasticSearch
支持其搜索功能(至少他们的搜索文档指向Elastic的官方文档)并且搜索遵循基于布尔的查询。下面,我将解释其键值系统以及三个搜索区域之间的差异
IPv4 Hosts
Censys的主要目的之一是扫描IPv4空间,查找开放服务,并收集提供的目标站点。
如上图所示,这是IPv4搜索结果页面,主机有三个服务打开:22 / ssh
,23 / telnet
和80 / http
。Censys有一个巨大的优点:它允许你根据协议特定的字段进行过滤。
例如,您可以根据80 / http
的HTTP
响应状态代码进行过滤,同时根据22 / ssh
的公钥进行过滤。
搜索查询以以下方式进行:
上面的查询表示为GET“/”
返回状态代码404的主机。
某些字段未附加到任何特定协议。扫描元数据也包括在内:
时间戳
标签
位置数据
自治系统数据
… 完整列表
我简要说明一下标签。标签是附加到某些主机的特定值。Censys尝试根据其站点信息响应和其他因素识别主机的启发式方法。然后使用标签根据某些特定因素对主机进行群集。标签包括:
“相机” - 公众曝光的相机
“nas” - 至于网络附加存储
“raspberry pi” - 我认为这是不言而喻的
你也可以使用“AND”或“OR”将多个键值对连接在一起。我们来看几个例子:
SSH和telnet打开的主机:
ports:22 AND ports:23
斯洛伐克的主机被标记为相机:
location.country_code:"SK" AND tags:camera
在欧洲Debian上运行的OpenSSH服务器:
22.ssh.v2.metadata.product:"OpenSSH" AND metadata.os:"Debian" AND location.continent:"Europe"
就个人而言,我喜欢为所有显示键名的主机打开JSON输出。如果您看到要过滤的内容,则可以更快地构建查询。Censys还提供了一种指定范围的方法:
从5月开始更新并返回5xx HTTP代码的主机:
updated_at:[2018-05-01 TO *] AND 80.http.get.status_code:[500 TO 600]
正则表达式和通配符也是可能的。完整的语法可以在这里找到。
我还建议切换到元数据选项卡,其中显示结果集的概述:
网站
网站提供与IPv4主机几乎相同的视图。Censys目前扫描Alexa的所有域名100万。有关证书和DNS的信息(例如,AXFR检查)是在常规主机扫描之上添加的
证书在以下部分解释; 在这里,我想提一下我最感兴趣的基于DNS数据的过滤器。密钥“0”在网站视图中可用,并且可以过滤DNS数据。
允许所有具有外部DNS区域传输的域:
0.lookup.axfr.support:true
结果令人惊讶,因为在结果列表中,有一些众所周知的域名。然而,他们确实允许来自随机主机的AXFR请求。
网站视图的唯一限制似乎是扫描域的数量。希望,Censys可以很快整合Project Sonar
的结果
证书
最初,我认为Censys证书能力与我在Project Sonar中解释的问题相同即:服务器名称指示(SNI)允许在一台计算机上托管多个证书,
并且只根据SSL握手期间显示的域名提供一个证书。扫描IPv4空间时,扫描程序不提供域名; 它只提供IPv4作为主机名。这样可以仅观察扫描主机上存在的一小部分证书。
我还有一个发现:Censys 中只有20%的证书来自IPv4地址空间的SSL扫描。其余部分直接来自证书透明度(CT)日志。
我不想深入解释证书透明度(CT)。如果您不了解它,可以在这里阅读更多内容。创建CT项目是为了了解CA颁发的证书。这对我们意味着什么?
由上图我们可以明白一旦颁发证书,证书(更重要的是它的SubjectAltNames)几乎实时提供给Censys。因此,Censys不需要依赖IPv4扫描来发现证书。
我们换一种思路,谈谈提供证书可见性的类似服务。第一个是crt.sh。它是社区中众所周知的服务,可在CT日志之上提供搜索功能。
但是,与Censys相比,crt.sh中的接口只允许基本的过滤选项,这些选项在进行更复杂的分析时通常是不够的。据我所知,crt.sh仅依赖于CT日志,
而Censys也将其与IPv4扫描相结合。类似的服务还有certspotter.com和certdb.com。
列表中的下一个是CertStream服务,它实时提供证书。具有一下几个优点,例如使用事件驱动编程处理数据和处理接收的输入。另一方面,它不提供在历史记录中搜索的选项。
我认为Censys目前为证书搜索提供最好的免费服务。
Censys提供了几个用于证书搜索的新密钥:
证书字段
证书元数据
信任链
证书透明度
……完整列表在这里
我再次建议打开一个证书进行演示,亲自查看最有趣的密钥名称。我们来看几个例子:
parsed.names:"www.example.com"
Apple认证但Mozilla NSS不认证的证书:
validation.apple.valid:true AND validation.nss.valid:false
在SSL扫描期间看到的Symantec颁发的证书:
parsed.issuer.organization.raw:"Symantec Corporation" AND metadata.seen_in_scan:true
Let的加密在2018年颁发的证书:
parsed.issuer.organization.raw:"Let's Encrypt" AND parsed.validity.start:[2018-01-01 TO *]
Censys还提供一个非常棒的技术。您可以根据几个常见因素进行搜索:
我想强调一点,我没有在任何其他(免费)服务中看到过这样的功能。
发现SCADA
现在让我们尝试找一些有趣的东西。作为我的第一个任务,我选择在全球范围内搜索SCADA系统。希望您对如何构建搜索查询非常了解。
最简单的解决方案是根据几个标准扫描IPv4主机。
使用标签进行过滤:
tags:"scada"
根据制造商进一步过滤:
metadata.manufacturer:"Schneider Electric" AND tags:"scada"
另外,也有类似的标签,例如JACE,fox或modbus。您可以使用不同的方法来发现您选择的主机。正如我之前所说,Shodan提供了更好的物联网可视化功能,但是Censys提供了更多的过滤选项。
发现网络钓鱼站点
我比较习惯使用phishing_catcher这个工具。唯一的缺点是它从CertStream获取数据,如果你想找到很老的网站,这不是那么理想。
正如我在上面的部分中提到的,Censys收集了大量证书,因此我们可以利用其功能来查找可能具有攻击意图的域名。
首先,让我们考虑一下如何搭建钓鱼网站。攻击者想要说服受害者她正在访问的网站确实是合法的。因此,SSL证书是重要的,更重要的是URL栏中的“安全”标志是必须的。
由于Let’s Encrypt提供免费证书,因此攻击者很可能会这样做。
其次,域名。它很可能包含攻击者作为子串攻击的服务(列如,“apple”,“bankofamerica”,“paypal”,……)。我强烈建议您查看此词汇表以查看哪些服务最有可能成为目标。
也使用了Doppelganger和域名仿冒域名,但是最近用的非常多的是使用非常长的FQDN来欺骗受害者关于什么是二级域名。
我们现在尝试我们的假设:
(apple.com*) AND parsed.issuer.organization.raw:"Let's Encrypt" and parsed.validity.start: [2018-05-03 TO *]
我们可以看到结果中存在一些可疑的域名。总体而言,126份证书包含2018-05-03发布的“apple.com”。我们试着去看看其中一个:
让人惊讶的是,似乎Safari已经意识到它的危险。忽略警告后,Web服务器没有响应。某些网上诱骗网站可能仅响应来自特定国家/地区或特定网址路径的请求。
我们可以继续搜索PayPal网上诱骗网站:
(paypal.com*) AND parsed.issuer.organization.raw:"Let's Encrypt"
希望你现在对这里发生的事情有一个大概的了解。我恳请您将“paypal.com”替换为您所在组织的域名。
如果您发现某些网上诱骗网站,则在证书数据库中搜索相同的公钥是一种比较好的方法。不那么熟练的攻击者有时倾向于在多个证书中使用相同的密钥对。