#渗透测试#SRC漏洞挖掘# 信息收集-Shodan之搜索语法进阶

时间:2024-11-03 07:18:24

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章阅读。                                                              #陇羽sec#

目录

Shodan命令讲解

Shodan搜索网络设备

Shodan搜索Apache服务器

Wappalyzer

Shodan搜索组织

Shodan 模块讲解

Shodan 实时报警邮件通知

1. 创建 Shodan 账户并获取 API 密钥

2. 设置 Shodan 监控规则

3. 编写脚本发送邮件通知

4. 结合 Shodan API 和邮件发送脚本

5. 测试和优化


Shodan命令讲解
┌──(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搜索网络设备
┌──(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服务器
┌──(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搜索组织
┌──(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 密钥。具体步骤如下:

  1. 访问 Shodan 官方网站(https://www.shodan.io/ )。
  2. 点击右上角的“Sign Up”按钮,按照提示填写相关信息并完成注册过程。
  3. 登录到你的 Shodan 账户后,点击右上角的用户名,选择“API Keys”选项。
  4. 在这里,你可以生成一个新的 API 密钥。复制这个密钥,因为稍后你会需要它来进行 API 调用。
2. 设置 Shodan 监控规则

在 Shodan Monitor 中,你可以设置网络监控规则来定义哪些类型的活动会触发警报。例如,你可以设置规则来监控特定的端口、服务或地理位置。这些规则可以通过 Shodan 的 Web 界面或 API 来配置。

3. 编写脚本发送邮件通知

你可以使用 Python 和 smtplib 库来编写一个脚本,当 Shodan 检测到潜在的安全威胁时,通过邮件发送警报。以下是一个简单的示例代码:

import 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 检测到潜在的安全威胁时,都能自动发送邮件通知。以下是一个完整的示例代码:

import 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 命令补充

 

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等等一系列参数配合起来。