免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章阅读。 #陇羽sec#
目录
[Shodan 模块讲解](#Shodan 模块讲解)
[Shodan 实时报警邮件通知](#Shodan 实时报警邮件通知)
[1. 创建 Shodan 账户并获取 API 密钥](#1. 创建 Shodan 账户并获取 API 密钥)
[2. 设置 Shodan 监控规则](#2. 设置 Shodan 监控规则)
[3. 编写脚本发送邮件通知](#3. 编写脚本发送邮件通知)
[4. 结合 Shodan API 和邮件发送脚本](#4. 结合 Shodan API 和邮件发送脚本)
[5. 测试和优化](#5. 测试和优化)
Shodan命令讲解
bash
┌──(root㉿kali)-[~/Desktop]
└─# shodan -h
命令的基本格式为 shodan [OPTIONS] COMMAND [ARGS]...,其中 OPTIONS 是可选参数,COMMAND 是具体的命令操作,ARGS 是命令操作可能需要的参数。
Usage: shodan [OPTIONS] COMMAND [ARGS]...
Options:
-h, --help Show this message and exit.
-h, --help:这个选项用于显示帮助信息并退出程序。当你在命令行输入 shodan -h 或者 shodan --help 时,就会显示关于Shodan命令行工具的使用说明,就像你给出的这段语法说明一样。
Commands:
alert Manage the network alerts for your account
管理账户的网络提示,用于处理与账户相关的网络警报设置等操作。
convert Convert the given input data file into a different format.
将给定的输入数据文件转换为不同的格式,可能用于数据格式的转换,例如将一种数据结构转 换为另一种更适合处理或分析的格式。
count Returns the number of results for a search
返回搜索结果的数量,在执行搜索操作后,可以用这个命令查看符合搜索条件的结果有多少个。
data Bulk data access to Shodan
返回搜索结果的数量,在执行搜索操作后,可以用这个命令查看符合搜索条件的结果有多少个。
domain View all available information for a domain
查看一个域名的所有可用信息,这有助于对特定域名相关的设备或者服务进行详细的了解。
download Download search results and save them in a compressed JSON...
下载搜索结果并保存为压缩的JSON格式文件,方便后续对搜索结果进行离线分析或者存储。
honeyscore Check whether the IP is a honeypot or not.
检查IP是否为蜜罐,这在网络安全分析中很有用,可以判断一个IP是否是故意设置的陷阱来吸引攻击者。
host View all available information for an IP address
查看一个IP地址的所有可用信息,包括设备类型、开放端口等详细信息。
info Shows general information about your account
显示账户的一般信息,例如账户权限、使用限制等相关信息。
init Initialize the Shodan command-line
初始化Shodan命令行,可能是设置一些初始参数或者环境变量等操作。
myip Print your external IP address
打印用户当前的外部IP地址,方便用户了解自己的网络连接情况,例如在网络故障排查或者网络配置时可能会用到。
org Manage your organization's access to Shodan
管理组织对Shodan的访问权限,适用于多用户或者企业级的使用场景。
parse Extract information out of compressed JSON files.
从压缩的JSON文件中提取信息,通常是与 download 命令配合使用,先下载数据再提取其中有用的信息。
radar Real-Time Map of some results as Shodan finds them.
实时地图显示部分结果(随着Shodan发现它们),可能以可视化的方式展示搜索结果的地理位置分布等信息。
scan Scan an IP/ netblock using Shodan.
使用Shodan扫描一个IP或者网段,这有助于发现网络中的设备和服务情况,进行网络安全评估等。
search Search the Shodan database
搜索Shodan数据库,这是最基本的操作,用户可以输入关键词等进行设备、服务等的搜索。
stats Provide summary information about a search query
提供搜索查询的概要信息,例如搜索结果的统计信息、分布情况等。
stream Stream data in real-time.
实时显示流数据,可能用于实时监控网络中的设备或者服务的状态变化等。
version Print version of this tool.
打印这个工具的版本信息,用于查看当前使用的Shodan命令行工具的版本。
Shodan搜索网络设备
bash
┌──(root㉿kali)-[~/Desktop]
└─# shodan search --limit 10 --fields ip_str,port country:jp camera
shodan search:这是Shodan的基本搜索命令,用于启动搜索操作2。
--limit 10:这个选项限制了搜索结果的数量,这里设置为10,意味着只会返回前10条匹配结果1。
--fields ip_str,port:这个选项指定了在搜索结果中显示的字段。ip_str表示IP地址,port表示端口。这两个字段之间用逗号分隔,表示同时显示这两个字段的信息1。
country:jp:这是一个过滤器,用于限制搜索结果只包含日本(JP)的设备3。
camera:这是搜索关键词,表示你正在搜索与"camera"相关的设备3。
┌──(root㉿kali)-[~/Desktop]
└─# shodan search --limit 10 --fields ip_str,port country:jp webcam
这是一个Shodan搜索命令,在Shodan搜索引擎中执行特定的搜索操作。
shodan search:这是Shodan执行搜索的基本命令形式。
--limit 10:表示限制搜索结果的数量为10条。这样做可以避免获取过多的结果,方便查看和处理。
--fields ip_str,port:指定在搜索结果中仅显示ip_str(设备的IP地址字符串形式)和port(设备开放的端口)这两个字段的信息。
country:jp:这是一个过滤条件,用于筛选出位于日本(jp)的设备。
webcam:是搜索的关键字,表明要搜索与网络摄像头(webcam)相关的设备。
结果如下:
Shodan搜索Apache服务器
bash
┌──(root㉿kali)-[~/Desktop]
└─# shodan search --limit 10 --fields ip_str,port product:Apache httpd country:jp
shodan search:Shodan搜索引擎的搜索命令起始部分。
--limit 10:限制搜索结果的数量为10个。这样可以快速获取有限数量且满足条件的结果,便于查看和分析。
--fields ip_str,port:指定在搜索结果中显示的字段,ip_str是设备的IP地址字符串,port是设备开放的端口。
product:Apache httpd:这是一个过滤条件,用于搜索产品为Apache httpd的设备。这里表示寻找使用Apache httpd作为服务软件的设备。
country:jp:表示只搜索位于日本(jp)的设备。
结果:
也可以借助插件wappalyzer
Wappalyzer
Shodan搜索组织
bash
┌──(root㉿kali)-[~/Desktop]
└─# shodan search --limit 10 --fields ip_str,port org:Tencent cloud
shodan search:这是在Shodan平台上发起搜索的基本指令。
--limit 10:用于限定搜索结果的数量,这里最多显示10个结果。这样可以防止返回过多结果,方便查看和管理。
--fields ip_str,port:指定搜索结果仅显示ip_str(IP地址的字符串形式)和port(端口号)这两个字段。
org:Tencent cloud:这是一个筛选条件,org表示组织,这里是搜索与腾讯云(Tencent cloud)相关的设备
结果:
Shodan 模块讲解
Shodan Monitor
Shodan Monitor 是一个专门用于监控网络状态的工具,它不仅能够帮助用户监测已知的网络,还能发现互联网上的设备。通过 Shodan Monitor,用户可以检测到数据泄露到云端、钓鱼网站、被攻陷的数据库等问题。此外,Shodan 提供了工具来监控所有连接到互联网的设备,
Shodan 实时报警邮件通知
要在 Shodan Monitor 中设置实时报警并通过邮件通知,你需要结合 Shodan API 和邮件发送服务来实现。以下是一个基本的步骤指南,帮助你设置这一功能。
1. 创建 Shodan 账户并获取 API 密钥
首先,你需要在 Shodan 网站上创建一个账户,并获取 API 密钥。具体步骤如下:
- 访问 Shodan 官方网站(https://www.shodan.io/ )。
- 点击右上角的"Sign Up"按钮,按照提示填写相关信息并完成注册过程。
- 登录到你的 Shodan 账户后,点击右上角的用户名,选择"API Keys"选项。
- 在这里,你可以生成一个新的 API 密钥。复制这个密钥,因为稍后你会需要它来进行 API 调用。
2. 设置 Shodan 监控规则
在 Shodan Monitor 中,你可以设置网络监控规则来定义哪些类型的活动会触发警报。例如,你可以设置规则来监控特定的端口、服务或地理位置。这些规则可以通过 Shodan 的 Web 界面或 API 来配置。
3. 编写脚本发送邮件通知
你可以使用 Python 和
smtplib
库来编写一个脚本,当 Shodan 检测到潜在的安全威胁时,通过邮件发送警报。以下是一个简单的示例代码:
pythonimport smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart # Replace these variables with your actual values smtp_server = 'smtp.example.com' smtp_port = 587 smtp_username = 'your_username' smtp_password = 'your_password' sender_email = 'your_email@example.com' receiver_email = 'recipient_email@example.com' # Create the message msg = MIMEMultipart() msg['From'] = sender_email msg['To'] = receiver_email msg['Subject'] = 'Shodan Alert' # Add body to email body = "A potential security threat has been detected by Shodan." msg.attach(MIMEText(body, 'plain')) # Send the email try: server = smtplib.SMTP(smtp_server, smtp_port) server.starttls() server.login(smtp_username, smtp_password) text = msg.as_string() server.sendmail(sender_email, receiver_email, text) server.quit() print("Email sent successfully!") except Exception as e: print(f"Error: {e}")
在这个示例中,我们使用了
smtplib
库来发送邮件。你需要替换smtp_server
,smtp_port
,smtp_username
,smtp_password
,sender_email
, 和receiver_email
这些变量为你自己的邮件服务器信息和邮箱地址。4. 结合 Shodan API 和邮件发送脚本
现在,我们需要将 Shodan API 调用和邮件发送脚本结合起来,使得每当 Shodan 检测到潜在的安全威胁时,都能自动发送邮件通知。以下是一个完整的示例代码:
pythonimport shodan import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart # Replace these variables with your actual values api_key = 'YOUR_SHODAN_API_KEY' smtp_server = 'smtp.example.com' smtp_port = 587 smtp_username = 'your_username' smtp_password = 'your_password' sender_email = 'your_email@example.com' receiver_email = 'recipient_email@example.com' # Initialize the Shodan API client api = shodan.Shodan(api_key) def check_alerts(): try: # Fetch the latest alerts alerts = api.alerts(limit=10) for alert in alerts['matches']: print(f"New alert: {alert['message']}") # Create the message msg = MIMEMultipart() msg['From'] = sender_email msg['To'] = receiver_email msg['Subject'] = 'Shodan Alert' # Add body to email body = f"A potential security threat has been detected by Shodan: {alert['message']}" msg.attach(MIMEText(body, 'plain')) # Send the email try: server = smtplib.SMTP(smtp_server, smtp_port) server.starttls() server.login(smtp_username, smtp_password) text = msg.as_string() server.sendmail(sender_email, receiver_email, text) server.quit() print("Email sent successfully!") except Exception as e: print(f"Error: {e}") except shodan.APIError as e: print(f"Error: {e}") if __name__ == "__main__": while True: check_alerts() time.sleep(60) # Check for new alerts every minute
在这个示例中,我们结合了前面提到的 Shodan API 调用和邮件发送脚本。每当检测到新的警报时,都会发送一封邮件通知。
5. 测试和优化
设置好实时报警和邮件通知后,你应该定期测试它的有效性,并根据实际情况进行优化。例如,你可以调整监控规则或警报阈值,以确保它们能够准确地检测到潜在的安全威胁。
以上就是在 Shodan Monitor 中设置实时报警并通过邮件通知的基本步骤。希望这些信息能够帮助你更好地保护你的网络免受安全威胁。
Shodan 命令补充
bash
shodan alert -h 查看帮助文档
shodan info 查看剩次数
shodan domain 查询域名信息
shodan scan -h(查看文档)
shodan scan submit ip (查看扫描IP地址)
shodan scan list(查看扫描信息)
shodan stats --facets ssl.version country:cn has_ssl:true http
(统计地区使用ssl的IP,并用版本做一个统计)
Shodan命令总结
主要是学会各种参数的组合,国家地区,漏洞,版本,ip等等一系列参数配合起来。