一、从某金融公司数据库泄漏事件说起

2023年,一家知名金融公司的客户数据库被黑客公开贩卖,包括上百万条个人信息。事后分析发现,这起事件的起点正是源于黑客对该公司暴露在互联网上的资产进行了全面扫描和精准定位,最终通过一个弱口令的数据库管理面板完成了入侵。类似的案例并非个例,每一次数据泄露背后,几乎都少不了「洞网资源搜索」的身影。

什么是洞网资源搜索?简单来说,就是利用公开的互联网资产搜索工具,针对目标公司进行全面的信息收集,找出那些暴露在公网的资产(如服务器、应用程序、API接口)。这些资源往往是攻击链的第一环,如果使用得当,攻击者可以轻松获得初始入口。

在本文中,我会从攻击者的视角出发,详细讲解如何利用各种工具和技术进行洞网资源搜索,包括但不限于:Shodan、Censys、FOFA 等平台。我们还会演示如何武器化这些搜索结果,为后续的攻击链奠定基础。

---

二、潜藏的信息宝藏:如何最大化利用 Shodan

Shodan 被称为「黑客的搜索引擎」,它可以通过网络爬虫抓取全球范围内的各类互联网设备。Shodan 公开的 API 和 Web 页面提供了丰富的信息,比如开放的端口、服务指纹、Banner 信息,这些都是攻击者挖掘漏洞的关键起点。

快速上手 Shodan

首先,你需要在 Shodan 官网 注册一个账号,并获取免费或付费的 API Key。这里我们使用 Python 来调用 Shodan 的 API。

安装依赖

<pre><code class="language-bash">pip install shodan</code></pre>

查询目标资产

以下代码通过 API 查询某目标 IP 地址的开放端口信息。

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

Your Shodan API Key

api_key = &#039;YOUR_API_KEY&#039; target_ip = &#039;192.168.1.1&#039; # 替换为你的目标 IP

初始化 Shodan 客户端

api = shodan.Shodan(api_key)

try:

查询目标 IP 信息

host_info = api.host(target_ip) print(f&quot;IP: {host_info[&#039;ip_str&#039;]}&quot;) print(f&quot;Organization: {host_info.get(&#039;org&#039;, &#039;n/a&#039;)}&quot;) print(f&quot;Operating System: {host_info.get(&#039;os&#039;, &#039;n/a&#039;)}&quot;)

print(&quot;\n开放端口列表:&quot;) for item in host_info[&#039;data&#039;]: print(f&quot;Port: {item[&#039;port&#039;]}, Service: {item[&#039;product&#039;]}&quot;)

except shodan.APIError as e: print(f&quot;Error: {e}&quot;)</code></pre>

运行脚本后,你将获得目标 IP 的开放端口、服务指纹等信息。例如:

<pre><code>IP: 192.168.1.1 Organization: Example Corp Operating System: Linux 开放端口列表: Port: 22, Service: OpenSSH Port: 80, Service: Apache HTTPD</code></pre>

攻击思路:

  1. 如果发现了 Web 服务器(端口 80/443),可以进行目录爆破和漏洞扫描。
  2. 如果是 SSH 服务(端口 22),可以尝试暴力破解弱口令。
  3. 如果是数据库服务(如 MySQL 的 3306),通常是攻击者的重点目标。

---

拓展搜索:利用过滤器精准定位目标

Shodan 支持多种搜索过滤器,以下是常用的一些:

| 过滤器 | 示例 | 功能 | | -------------- | -------------------------- | ---------------------------- | | org | org:"Example Corp" | 搜索某企业的资产 | | country | country:"CN" | 搜索中国的资产 | | port | port:22 | 搜索开放特定端口的设备 | | product | product:"Apache HTTPD" | 搜索运行特定服务的设备 | | before/after | before:"2023-01-01" | 搜索某时间前后的数据 |

我们可以组合这些过滤器,以更高效地挖掘目标信息。例如,以下代码搜索某企业的所有 MySQL 数据库:

<pre><code class="language-python">query = &#039;org:&quot;Example Corp&quot; port:3306&#039; result = api.search(query)

print(f&quot;找到 {result[&#039;total&#039;]} 个结果&quot;) for service in result[&#039;matches&#039;]: print(f&quot;IP: {service[&#039;ip_str&#039;]}:{service[&#039;port&#039;]}, Banner: {service[&#039;data&#039;]}&quot;)</code></pre>

---

武器化技巧:批量导出可用资产列表

为了快速批量获取目标企业的暴露资产,我们可以将搜索结果导出为文件。以下代码将结果保存为 CSV 文件:

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

query = &#039;org:&quot;Example Corp&quot;&#039; result = api.search(query)

with open(&#039;shodan_results.csv&#039;, &#039;w&#039;, newline=&#039;&#039;) as csvfile: fieldnames = [&#039;ip&#039;, &#039;port&#039;, &#039;org&#039;, &#039;data&#039;] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader()

for service in result[&#039;matches&#039;]: writer.writerow({ &#039;ip&#039;: service[&#039;ip_str&#039;], &#039;port&#039;: service[&#039;port&#039;], &#039;org&#039;: service.get(&#039;org&#039;, &#039;n/a&#039;), &#039;data&#039;: service[&#039;data&#039;] })

print(&quot;搜索结果已导出至 shodan_results.csv&quot;)</code></pre>

通过导出的文件,我们可以进一步结合其他工具(如 Nmap、Metasploit)进行后续攻击。

---

三、FOFA 的高级玩法:从公开资产到漏洞利用

为什么选择 FOFA?

与 Shodan 类似,FOFA 是一款中国开发的互联网资产搜索引擎,特别适合对中文目标进行资源收集。它的优势在于更强大的语法支持和更丰富的资产信息,比如子域名、证书信息、甚至是弱密码的历史记录。

以下是 FOFA 的一些实用技巧。

基础语法

黑客示意图

| 关键字 | 示例 | 功能 | | ------------- | ----------------------- | ---------------------------- | | ip | ip="192.168.1.1" | 搜索特定 IP 的资产 | | domain | domain="example.com" | 搜索某域名相关的资产 | | title | title="登录" | 搜索页面标题包含“登录”的资产 | | header | header="Apache" | 搜索 HTTP 头包含特定字段 | | body | body="关键字" | 搜索页面内容包含关键字的资产 |

Python 实战:API 调用目标资产

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

FOFA API info

email = &#039;[email protected]&#039; api_key = &#039;YOUR_FOFA_API_KEY&#039; query = &#039;title=&quot;管理登录&quot; &amp;&amp; domain=&quot;example.com&quot;&#039;

黑客示意图

url = f&quot;https://fofa.info/api/v1/search/all?email={email}&amp;key={api_key}&amp;qbase64={query.encode(&#039;utf-8&#039;).hex()}&amp;size=100&quot;

response = requests.get(url) if response.status_code == 200: data = response.json() for item in data[&#039;results&#039;]: print(f&quot;IP: {item[0]}, Title: {item[1]}, URL: {item[2]}&quot;) else: print(f&quot;Error: {response.status_code}&quot;)</code></pre>

---

四、如何避免被攻击者盯上:防御你的洞网资产

洞网资源搜索的强大在于它的被动特性——攻击者不需要试探目标的响应状态,而是直接利用公开的数据发起攻击。那么,作为管理员,我们应该如何降低暴露面?

1. 定期使用工具扫描自己

与其被攻击者发现,不如自己先行发现。可以使用开源工具 like EyeWitness 检测暴露在公网的资产。

<pre><code class="language-bash">./EyeWitness.py --web --threads 10 -f urls.txt</code></pre>

黑客示意图

---

五、总结:从信息收集到主动防御

洞网资源搜索是攻击链的起点,也是防御过程中最容易被忽视的一环。如果你是攻击者,通过 Shodan、FOFA、Censys 等工具轻松找到目标的薄弱环节;如果你是防御者,务必定期审查自己的暴露面,堵住那些可能被利用的入口。