0x01 从一起安全事件说起

黑客示意图

去年,有一起关于某知名企业的数据泄露事件引起了我的注意。攻击者通过公开网络上的一个未授权API接口,获取了大量敏感数据。这次事件让我意识到,公开网络资源搜索在攻击中扮演了多么重要的角色。作为红队人员,掌握洞网资源搜索技巧,可以帮助我们在早期阶段获取关键信息,从而更加精准地制定攻击策略。

0x02 洞网资源搜索的秘密武器

在我的实战经历中,洞网资源搜索的秘密武器莫过于各种开源情报收集工具和搜索引擎。以下是我常用的一些方法:

Shodan:黑客的Google

Shodan以其可以扫描全球联网设备的特性闻名。它的强大之处在于,你可以通过特定的搜索语法,快速定位到特定类型的设备或服务。我有一次通过Shodan,找到了一个暴露在互联网上的MongoDB数据库,几乎不用费力气就可以直接访问。

<pre><code class="language-python">import shodan

初始化Shodan的API

api = shodan.Shodan(&#039;YOUR_API_KEY&#039;)

搜索公开的MongoDB

query = &#039;product:MongoDB&#039; results = api.search(query)

print(f&quot;找到 {results[&#039;total&#039;]} 个结果&quot;)

for result in results[&#039;matches&#039;]: print(f&quot;IP: {result[&#039;ip_str&#039;]}, 端口: {result[&#039;port&#039;]}&quot;)</code></pre>

Censys:洞悉互联网资产

Censys与Shodan类似,但它在数据的全面性和细致程度上有独到之处。我曾在一次评估中,通过Censys发现了目标公司用来测试的未授权SSL证书,进一步调查后定位到了一个未被纳入监控范围的测试环境。

<pre><code class="language-python">import requests

Censys API的认证信息

uid = &quot;YOUR_UID&quot; secret = &quot;YOUR_SECRET&quot;

搜索Apache服务器

query = &#039;services.http.response.html_title:Apache&#039; response = requests.get(f&#039;https://censys.io/api/v1/search/ipv4?q={query}&#039;, auth=(uid, secret))

if response.status_code == 200: data = response.json() print(f&quot;找到 {len(data[&#039;results&#039;])} 个结果&quot;) for result in data[&#039;results&#039;]: print(f&quot;IP: {result[&#039;ip&#039;]}&quot;)</code></pre>

黑客示意图

0x03 打造完美环境,实战演练

每次进行洞网资源搜索,首先要准备一个隔离且安全的测试环境。我通常会使用虚拟机,并设置严格的网络策略,确保所有流量和操作都不会泄露或误伤他人。

实验室搭建指南

  1. 选择合适的虚拟化技术:我常用VirtualBox或VMware来创建虚拟机,搭建多个操作系统用于测试。
  2. 配置网络隔离:使用Host-only网络模式,确保虚拟机之间可以通信,但不能访问互联网。
  3. 安装常用工具:在Kali Linux上预装Shodan、Censys等API库及工具,便于快速执行搜索。

0x04 POC代码:让搜索变得自动化

在一次项目中,我需要对多家目标公司进行资源探测。手动操作显然不现实,于是我开发了一个简单的Python脚本,利用Shodan和Censys的API,实现自动化批量搜索。

<pre><code class="language-python">import shodan import requests

初始化Shodan API

shodan_api = shodan.Shodan(&#039;YOUR_SHODAN_API_KEY&#039;) censys_uid = &quot;YOUR_CENSYS_UID&quot; censys_secret = &quot;YOUR_CENSYS_SECRET&quot;

def search_shodan(query): results = shodan_api.search(query) for result in results[&#039;matches&#039;]: print(f&quot;Shodan - IP: {result[&#039;ip_str&#039;]}, 端口: {result[&#039;port&#039;]}&quot;)

def search_censys(query): response = requests.get(f&#039;https://censys.io/api/v1/search/ipv4?q={query}&#039;, auth=(censys_uid, censys_secret)) if response.status_code == 200: data = response.json() for result in data[&#039;results&#039;]: print(f&quot;Censys - IP: {result[&#039;ip&#039;]}&quot;)

def main(): query = &#039;product:Apache&#039; search_shodan(query) search_censys(query)

if __name__ == &quot;__main__&quot;: main()</code></pre>

0x05 绕过与对抗:隐藏自己

在进行洞网资源搜索时,隐藏自己的真实身份至关重要。攻击者常常需要伪装自己,以避免被目标的安全监控系统检测到。

使用代理和VPN

我通常会使用多个代理和VPN,确保每次请求都从不同的IP发出。Tor网络也是一个不错的选择,但速度可能会较慢。

隐藏流量特征

黑客示意图

通过自定义HTTP头部信息、随机化请求顺序和时间间隔,最大限度地降低被识别的风险。

0x06 经验分享:挖掘隐藏的宝藏

在我的职业生涯中,通过洞网资源搜索,我发现了许多意想不到的安全问题。以下是一些总结:

  • 资源的广泛性:几乎任何联网设备都可能成为信息泄露的来源。
  • 意想不到的发现:不要只局限于特定类型的设备或服务,尝试不同的搜索语法,常常会有意外的收获。
  • 持续关注:定期更新你的搜索结果,互联网环境每天都在变化。

0x07 检测与防御:如何不被我找到

对于防御者来说,了解攻击者的工具和方法至关重要。以下是一些建议:

  • 监控未授权访问:实时监控API接口和设备的异常请求。
  • 限制敏感信息暴露:对外部设备和API接口进行严格的权限控制。
  • 使用专用解决方案:采用专业的网络暴露面管理工具,及时发现和修复安全隐患。

总而言之,洞网资源搜索是红队工作中不可或缺的一环。通过全面的情报收集,我们可以更好地规划和执行攻击。在此过程中,保持谨慎和不懈地学习是通向成功的关键。希望这篇文章对你有所启发,期待你在实战中取得佳绩。