掌握 Shodan:冷门搜索技巧让你脱颖而出
掌握 Shodan:冷门搜索技巧让你脱颖而出
Shodan是一个专注于互联网设备搜索的高级搜索引擎,它允许用户通过IP地址、端口、服务等多种参数进行设备搜索。本文将介绍一些Shodan的冷门搜索技巧,帮助安全研究人员、网络管理员和技术爱好者更深入地挖掘Shodan的潜力。
Shodan高级搜索之冷门技巧
冷门模块介绍
Shodan除了常用的搜索和过滤功能外,还提供了一些较为冷门但有时也很实用的模块,以下是几种冷门模块的简要介绍:
Scan 模块
Scan模块支持实时扫描指定的IP或网段,能够主动探测目标的开放端口、服务和其他特性。该模块尤其适用于对关键设备的实时监测,帮助安全团队在信息变更时第一时间掌握情况。下面命令可提交对特定IP地址的扫描请求:
shodan scan submit 123.456.78.90
在实际场景中,通过Scan模块可以针对新上线的设备或敏感资产开展即时扫描,快速获取其安全状态。
Alert 模块
Shodan的Alert功能允许用户设定监控条件,实时监控符合条件的设备和网络活动,并发送通知。由于此模块使用较少且命令较为复杂,以下将简要介绍其常用操作:
- 创建 Alert
使用shodan alert create
命令设定监控条件及通知邮箱。例如,监控所有运行SSH服务的设备并在发现时发送通知:
shodan alert create "service:ssh" your_email@example.com
- 查看 Alert 列表
查看当前所有Alert,使用以下命令显示Alert的ID、搜索条件、创建时间和状态:
shodan alert list
- 删除 Alert
如需删除某个Alert,使用shodan alert delete
命令并指定Alert的ID。例如,删除ID为123456的Alert:
shodan alert delete 123456
- 接收 Alert 通知
Shodan检测到符合Alert条件的设备或网络活动时,会通过邮件通知用户,邮件内容包括设备的IP地址、端口、操作系统和服务等信息。
- 使用过滤器创建更具体的 Alert
Shodan支持多种过滤器,可用于设定更精准的监控条件。例如,监控特定IP地址范围内的设备:
shodan alert create "net:192.168.1.0/24" your_email@example.com
此命令将监控192.168.1.0/24网段内的设备,并发送通知。
Domain 模块
用于查询域名信息,但因为Shodan本身的非实时性,这个参数用起来可能不是很舒服。
Stats 模块
Shodan的stats模块用于设备状态及版本信息的统计分析。通过--facets参数,可以指定想要统计的具体信息维度。例如,使用以下命令获取启用SSL/TLS的设备中,不同SSL/TLS协议版本的统计信息:
shodan stats --facets ssl.version has_ssl:true
参数解释
- shodan stats:用于获取统计信息。
- --facets:指定统计维度(facet),表示需要获取的特定信息。
- ssl.version:统计SSL/TLS协议的版本信息。
- has_ssl:true:过滤条件,仅统计启用SSL/TLS协议的设备。
SSL(安全套接层)和TLS(传输层安全协议)用于互联网通信加密保障,以上命令可帮助分析使用不同加密协议的设备数量。
HTTP 高级用法
使用http.title搜索网页标题
利用http.title关键字,您可以根据网页标题进行搜索,方便查找特定类型的网站。例如:
http.title:"admin panel" # 查找标题中包含 "admin panel" 的网页
使用http.html搜索网页内容
通过http.html关键字,您可以查找包含特定内容的网页,从而快速定位相关网站。例如:
http.html:"login successful" # 查找网页内容中包含 "login successful" 的网站
使用http.favicon.hash搜索网页图标
借助http.favicon.hash,您可以根据网页的favicon哈希值进行搜索,找到使用相同favicon的不同网站。示例:
http.favicon.hash:1234567890 # 查找 favicon 哈希值为 1234567890 的网站
使用http.waf筛选特定 WAF
使用http.waf关键字,可以筛选使用特定Web应用防火墙(WAF)的网站。以下是一些示例:
http.waf:"Cloudflare" # 查找使用 Cloudflare WAF 的网站
http.waf:"AWS WAF" # 查找使用 AWS WAF 的网站
http.waf:"safedog" # 查找使用 SafeDog WAF 的网站
使用http.component搜索运行特定组件的设备
您还可以使用http.component关键字结合端口号来搜索特定组件的设备。例如:
http.component:"nginx" port:80 # 查找运行 Nginx 的设备,并开放 80 端口
其他搜索技巧
使用net搜寻网段
通过net关键字,您可以精准锁定特定网段内的设备,尤其在教育机构、企业等网络区域明确的环境中更为有效。例如,在教育机构网络中,可以用net参数锁定校园网服务器和路由器,快速找到弱点设备。示例:
shodan search --limit 10 --fields ip_str,port net:208.88.84.0/24
使用org查找组织资产
org关键字可用于按组织名称筛选相关IP地址,帮助用户聚焦于特定组织的设备。结合org和has_vuln等参数,可以快速识别目标组织中可能存在安全漏洞的设备,从而提升漏洞检测的精准度。
例如,以下命令用于搜索美国宇航局(NASA)公开的、具有已知漏洞的IP地址:
shodan search org:"NASA" has_vuln:true
利用API进行复杂搜索
如果您需要进行更复杂的搜索,Shodan的API能为您提供更灵活的查询选项。以下是使用Python进行Shodan搜索的示例代码:
import shodan
import json
import time
# Shodan API 密钥
API_KEY = "YOUR_API_KEY"
api = shodan.Shodan(API_KEY)
# 搜索配置
query = 'org:"NASA" ssl:true http.component:"Apache"'
limit = 50 # 设置最大查询结果数
save_to_file = True # 是否将结果保存为文件
# 执行查询并处理结果
try:
print(f"开始执行搜索:{query}")
results = api.search(query, limit=limit)
print(f"共找到 {results['total']} 条匹配结果")
devices = []
# 解析结果并打印关键信息
for result in results['matches']:
device_info = {
"IP": result['ip_str'],
"Port": result['port'],
"Organization": result.get('org', 'N/A'),
"Location": {
"City": result['location'].get('city', 'N/A'),
"Country": result['location'].get('country_name', 'N/A')
},
"Hostnames": result.get('hostnames', []),
"Vulnerabilities": result.get('vulns', []),
"Web Components": result.get('http', {}).get('components', {})
}
devices.append(device_info)
# 打印部分信息
print(f"IP: {device_info['IP']}, Port: {device_info['Port']}, Org: {device_info['Organization']}")
print(f"Location: {device_info['Location']['City']}, {device_info['Location']['Country']}")
print(f"Vulnerabilities: {', '.join(device_info['Vulnerabilities']) if device_info['Vulnerabilities'] else 'None'}")
print(f"Web Components: {device_info['Web Components']}\n")
time.sleep(0.5) # 控制请求频率,避免超出速率限制
# 保存结果到JSON文件
if save_to_file:
filename = "shodan_results.json"
with open(filename, 'w') as file:
json.dump(devices, file, indent=4)
print(f"查询结果已保存到文件:{filename}")
except shodan.APIError as e:
print(f"Shodan API 出错:{e}")
except Exception as e:
print(f"发生错误:{e}")
结语
Shodan作为一个强大的网络设备搜索引擎,其高级搜索功能可以帮助安全研究人员更有效地发现和分析全球范围内的联网设备。掌握这些冷门搜索技巧,可以进一步提升搜索的精准度和效率,为网络安全研究和防护提供有力支持。