Shodan Update: May 2024

Integrations

The following new or expanded integrations are now available:

Crowdstrike Falcon LogScale

We've added a new article on how to integrate Shodan Monitor with LogScale using their Ingest API. The integration lets you store all information that Shodan collects for monitored assets and makes them searchable through LogScale: Learn More

This is similar to the integrations we already offer for Splunk and Gravwell.

Kubernetes

We've forked the previous Kubernetes integration for Shodan Monitor and are now making it an official Shodan integration. It's now as simple as running 3 helm commands to get it fully running on a K8s cluster:

For more information check out the help center article: Learn More

Graylog

We've written a new integration for Graylog to perform IP enrichment using the Shodan API or the InternetDB API. The Shodan API adapter requires an API key whereas the InternetDB API can be used for free without an API key. Learn More

Microsoft Copilot for Security

"Check the IP address 1.1.1.1 using Shodan". We're excited to announce the Shodan plugin for Microsoft Copilot for Security:

https://learn.microsoft.com/en-us/copilot/security/plugin-shodan

The Shodan plugin, alongside many others, are now available in public preview. Learn More

 

 

Data Improvements

Changelog

The Datapedia now has a Changelog section that shows the changes in its schema and offers an RSS feed that you can use to get notified when we update the schema.

image-20240530111538226

ai Tag

We've started tagging AI-related services with the ai tag. For example, services that are used to self-host LLMs would receive the ai tag.

IoT Expansion

We've added dozens of new detections for various IoT products so they have the iot tag as well as service-specific metadata when available. For example, the Shodan crawlers now identify Raspberry Shake devices.

 

 

Vulnerability Information

Introducing the CVEDB API

We've launched a new website and API that provides free, fast vulnerability lookups. The vulnerability information contains EPSS, KEV, multiple CVSS scores and more. It's the same API that we use internally to perform vulnerability enrichment on the banners but the CVEDB API contains additional properties.

image-20240530171549988

EPSS and KEV

With the launch of CVEDB API we're also introducing 2 new properties in the vulnerability object on the banner: epss and kev:

img

Learn more about EPSS or KEV.

Breaking Change to cvss

The Shodan banners store vulnerability information in the top-level vulns property. Within that property are a list of (potential) vulnerabilities that have been identified based on the software and version. Those vulnerabilities have a cvss property that so far has been pinned to CVSS version 2. For legacy reasons, we've continued to use CVSSv2 even though it's been deprecated by NVD and isn't available for newer vulnerabilities. However, we've decided that it's time to move on and change the way we store CVSS scores and unfortunately that requires potentially breaking changes. The new system will work as follows:

It's rare for Shodan to make breaking changes but we believe that the current way of storing CVSS scores doesn't scale and requires a change. For Enterprise customers that want more control over the vulnerability enrichment we recommend checking out the cvedb SQLite file.

 

 

Bugfix

There are 2 notable fixes that were applied which we would like to highlight:


Bulk Data (Enterprise)

The following datasets are now available via the Bulk Data API. For convenience, the datasets can be downloaded via the Shodan CLI but for production deployments we recommend a tool such as aria2c because it can use multiple connections to download a single file.

Tip: Run sqlite3 <file> .schema to see the schema for a given SQLite database.

CVEDB

The cvedb dataset is a SQLite database containing vulnerability information from NVD that powers both the vulnerability enrichment for the Shodan API/ website as well as the new cvedb.shodan.io API. The SQLite database is optimized for looking up vulnerabilities based on a CPE. Most of the details for a specific CVE are stored as a gzip-compressed JSON object in the compressed_cve_data property. In order to see the JSON you need to decompress the blob.

Quickstart

  1. Download the database file: shodan data download cvedb cvedb.sqlite.gz

  2. Uncompress it: gunzip cvedb-cvedb.sqlite.gz

  3. Rename it to something more convenient: mv cvedb-cvedb.sqlite cvedb.sqlite

  4. Use the sqlite3 tool to query it for test purposes: sqlite3 cvedb.sqlite

Example: Vulnerability Lookup

The cveXcpe table is optimized for lookups by CPE so we need to concatenate and merge rows in order to get a single row with all the vulnerability information.

Example: Lookup vulnerabilities for Nginx 0.1.0

The above query will return the list of vulnerabilities for nginx version 0.1.0 and whether it's in the Known Exploited Vulnerabilities (KEV) catalog.

 

DNSDB

In addition to offering the DNS data in CSV we now also offer it as a SQLite database. As a quick recap, the DNSDB files contain the most recent 30 days worth of DNS data that Shodan has collected. We use that data internally for the monthly hostname-based scans and as a result the DNS data is geared towards finding hostnames that are actively running services. The DNSDB files are generated once a month from an export of our backend DNS database which is updated continuously throughout the month.

Example: Get a list of subdomains

The SQL query to fetch the information is simple:

The big advantage though is how fast the queries run when done locally instead of via an API. To give you an idea of the performance of the dnsdb.sqlite file here are some numbers for grabbing all the data for the amazonaws.com domain:

There are around 4.2 million records for the domain and it takes around 1.7 seconds to iterate over all of them using my personal laptop.

Example: Finding other websites hosted on the same server

We can use DNSDB to quickly identify other websites that are using the same public IP. For example, lets see which IPs that shodan.io is using:

Tip: Geonet could be used to lookup the IP for a website from multiple locations in case the IP changes depending on the client location.

And now we can query the ip_hostnames table to quickly find all the other hostnames associated with those IPs:

The results above have been truncated because Shodan uses Cloudflare as its CDN so there are a lot of other websites with the same public IP.

 

Banners

We are introducing 2 new datasets that contain the same data as raw-daily but in a different format and timeframe:

The banners-daily dataset is the same as raw-daily but it uses Zstandard for compression instead of Gzip. This means that the file sizes are smaller and they're faster to decompress:

Decompression Speed

The banners-hourly dataset contains the same banners as banners-daily or raw-daily but the files are generated once an hour. I.e. every file contains all the information that has been gathered the past hour. We are offering these files as an alternative to the firehose for customers that are unable to consume the firehose or prefer to process data files. The hourly files mean that you're not far behind the firehose (at most an hour), they're fast to download/ process and if there were any issues with the firehose then you can use the hourly files to fill in any gaps in data. The banners-hourly files are also compressed using Zstandard.

 

RoutesDB

The routesdb dataset contains a MMDB database that can be used to lookup routing information about IPs such as its ASN, prefixes (v4 and v6) for the ASN, peers and other related information about the organization that is managing the IP.

The mmdblookup tool from MaxMind can be used to lookup IPs without having to write any code. For example:

Quickstart

If you're running Ubuntu then you can install the mmdblookup tool using:

 

EntityDB

The entitydb dataset contains a SQLite database of financial data on public companies derived from SEC filings combined with DNS and ASN information. It's built quarterly and powers the EntityDB API.

Quickstart

Example: Lookup information about Apple

 

InternetDB

We now generate the InternetDB SQLite file once a day.


Thoughts, suggestions or other feedback? Let us know