Основи Shodan та збір даних Частина 1.

04.10.2025 3 хвилин Автор: Lady Liberty

У цьому розділі пояснюється, що таке Shodan, як він збирає інформацію про пристрої в Інтернеті та як відбувається формування «банера» — цифрового відбитка сервісу. Ви дізнаєтесь, як інтерпретувати метадані пристроїв, що таке IPv6-сканування, яким чином працює режим збору даних, як відбувається розповсюдження та рандомізація результатів. Окремий блок присвячено роботі з SSL-сертифікатами та базовій перевірці вразливостей. Цей розділ — ідеальний старт для розуміння, як Shodan бачить світ онлайн-пристроїв.

Вступ

Shodan — це пошуковий рушій для пристроїв, підключених до інтернету. Якщо звичні пошуковики шукають вебсторінки, то Shodan дозволяє знаходити саме пристрої й служби: вебсервери з певним ПЗ, мережеві камери, промислові контролери та інше обладнання. Це корисно, коли потрібно зрозуміти, які версії програмного забезпечення поширені, порахувати відкриті FTP-сервери або оцінити масштаби потенційної уразливості після її публікації — завдання, для яких звичайні пошуковики не підходять.

Основна одиниця інформації в Shodan — банер. Банер — це текст, який служба повертає при встановленні з’єднання: для вебсерверів це HTTP-заголовки, для інших протоколів — власні відповіді або привітальні рядки. Вміст банера сильно залежить від протоколу. Наприклад, типовий HTTP-банер може виглядати так:

HTTP/1.1 200 OK
Server: nginx/1.1.19
Date: Sat, 03 Oct 2015 06:09:24 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 6466
Connection: keep-alive

За цим банером видно, що на пристрої працює вебсервер nginx версії 1.1.19. Інші служби повертають інші банери — наприклад, промислові контролери Siemens S7 часто віддають докладні відомості про прошивку, модель і серійні номери:

Copyright: Original Siemens Equipment
PLC name: S7_Turbine
Module type: CPU 313C
Unknown (129): Boot Loader A
Module: 6ES7 313-5BG04-0AB0 v.0.3
Basic Firmware: v.3.3.8
Module name: CPU 313C
Serial number of module: S Q-D9U083642013
Plant identification:
Basic Hardware: 6ES7 313-5BG04-0AB0 v.0.3

Тому перед роботою зі Shodan важливо визначити, які саме сервіси вас цікавлять: запити й фільтри для вебсерверів відрізнятимуться від тих, що потрібні для SCADA, FTP чи IP-камер.

Shodan індексує банери, а не хости: якщо на одній IP-адресі запущено кілька служб, кожна з них з’явиться в індексі окремо. Окрім банерів, сервіс збирає метадані — геолокацію, ім’я хоста, операційну систему та інші атрибути. Більшість цих даних доступні через вебінтерфейс; розширені можливості пошуку й масова автоматизація зручніші через API.

Shodan також працює з IPv6. Хоча спочатку обсяг IPv6-записів був значно меншим, ніж для IPv4, із поширенням IPv6 їхня частка зростає, і це варто враховувати під час оцінки поверхні атаки або пошуку пристроїв у сучасних мережах.

Підхід до роботи зі Shodan має бути системним: сформулюйте мету (що саме шукаєте), підберіть відповідні фільтри та перевіряйте метадані, щоб відсіяти шум і помилкові результати.

Збір даних

Сканери Shodan працюють цілодобово й оновлюють базу в реальному часі — кожен візит на сайт показує актуальний «знімок» Інтернету.

  • Режим роботи сканерів: Сканери постійно перевіряють адреси й порти, збираючи банери та метадані. Це забезпечує свіжість даних і можливість швидкого аналізу.

  • Географічне розподілення: Сканери розміщені по всьому світу (наприклад: США — східне і західне узбережжя, Китай, Ісландія, Франція, Тайвань, В’єтнам, Румунія, Чехія). Таке покриття мінімізує вплив локальних блокувань і робить збір даних рівномірнішим.

Рандомізація сканування

Алгоритм простий:

  1. генерується випадкова IPv4-адреса;

  2. вибирається випадковий порт зі списку, що перевіряє Shodan;

  3. підключається і захоплюється банер;

  4. повтор. Рандомний (не інкрементний) підхід забезпечує однакове покриття мережі й знижує систематичну упередженість у даних.

Комбінація цілодобової роботи, глобального розташування сканерів і рандомізації робить дані Shodan репрезентативними й стійкими до локальних обмежень. Це допомагає отримати більш об’єктивну картину при моніторингу або оцінці вразливостей.

SSL/TLS у банерах Shodan

Shodan зберігає детальну інформацію про SSL/TLS у полі ssl банера: це не лише сам сертифікат, а й підтримувані версії протоколів, параметри Diffie-Hellman, результати перевірок на відомі вразливості та ланцюжок сертифікатів. Якщо служба вразлива до Heartbleed, у банері з’являється opts.heartbleed з відповіддю тесту, а в opts.vulns"CVE-2014-0160" (невразливий сервіс може містити запис з префіксом !, наприклад !CVE-2014-0160).

Підтримка шифрів EXPORT фіксується як CVE-2015-0204 (FREAK). У разі Logjam сканери намагаються встановити з’єднання з ефемерними DH-шифрами і, якщо це вдається, зберігають параметри dhparams (prime, public_key, bits, generator, fingerprint). Сканери також перевіряють прямі підключення з різними версіями (SSLv2, SSLv3, TLSv1.0, TLSv1.1, TLSv1.2) і записують підтримувані/непідтримувані версії в ssl.versions (де префікс - означає, що версія не підтримується). У полі ssl.chain зберігається ланцюжок сертифікатів у PEM-форматі. За допомогою цих даних легко знаходити пристрої з відомими вразливостями та оцінювати слабкі місця в налаштуваннях шифрування.

Приклади (для наочності):

opts з Heartbleed:

"opts": {
  "heartbleed": "... 174.142.92.126:8443 - VULNERABLE\n",
  "vulns": ["CVE-2014-0160"]
}

dhparams при Logjam:

"dhparams": {
  "prime": "bbbc2dcad84674907c43fcf580e9...",
  "public_key": "49858e1f32aefe4af39b28f51c...",
  "bits": 1024,
  "generator": 2,
  "fingerprint": "nginx/Hardcoded 1024-bit prime"
}

ssl.versions (підтримка/непідтримка версій):

"ssl": {
  "versions": ["TLSv1", "SSLv3", "-SSLv2", "-TLSv1.1", "-TLSv1.2"]
}

Приклад пошукового запиту для знаходження вразливих до Heartbleed пристроїв у США:

country:US vuln:CVE-2014-0160

За межами основних функцій

Веб-компоненти та каскадне сканування

Для більшості служб сканери Shodan аналізують основний текст банера й витягують із нього корисну інформацію: наприклад, назви груп у MongoDB, знімки екрана з сервісів віддалених робочих столів або списки пірів Bitcoin. Існує дві просунуті методики аналізу, на які варто звернути окрему увагу — визначення веб-компонентів і каскадне (ланцюгове) сканування. Нижче — чітко структурований опис обох технік.

Визначення веб-компонентів

Сканери намагаються визначити технології, які використано для побудови сайту. Для модулів HTTP/HTTPS аналізують заголовки й HTML і зберігають результат у полі http.components. Це словник, де ключ — назва технології (наприклад, jQuery), а значення — словник із властивістю categories (список категорій, пов’язаних із цією технологією). Приклад структури:

"http": {
  ...
  "components": {
    "jQuery": {
      "categories": ["javascript-frameworks"]
    },
    "Drupal": {
      "categories": ["cms"]
    },
    "PHP": {
      "categories": ["programming-languages"]
    }
  },
  ...
}

Інтерпретація: поле http.components вказує, що сайт працює на CMS Drupal і використовує jQuery та PHP. Через REST API Shodan можна шукати за фільтром http.component та агрегувати дані за фасетами http.component і http.component_category для отримання статистики за технологіями й категоріями.

Каскадне сканування (cascade)

Якщо банер містить інформацію про інших пірів або інші IP-адреси (наприклад, список пір у DHT), сканери можуть автоматично ініціювати додаткове сканування для цих адрес. Це дозволяє виявляти додаткові хости, які безпосередньо не потрапили б у початковий набір перевірок.

Приклад банера DHT-вузла (mainline DHT для BitTorrent), що містить список пір:

DHT Nodes
97.94.250.250 58431
150.77.37.22 34149
113.181.97.227 63579
252.246.184.180 36408
83.145.107.53 52158
...

Раніше сканер тілько збирав цей банер і рухався далі. При увімкненій каскадності він запускає захоплення банерів для кожного перерахованого піра (перевіряючи відповідний порт і протокол). Отже, одне первинне сканування може спричинити ланцюг дочірніх сканувань.

Відстеження зв’язків між скануваннями

Щоб фіксувати, які дочірні запити походять від якого первинного сканування, у записах застосовуються два поля:

  • _shodan.id — унікальний ідентифікатор банера. Це поле присутнє, коли з цього банера може бути ініційовано каскадне сканування.

  • _shodan.options.referrer — унікальний ідентифікатор банера-«батька», який спричинив створення поточного банера (вказує, звідки пішло додаткове сканування).

Завдяки цим полям можна відтворити ланцюжки сканувань і побудувати карту взаємозв’язків між пристроями, виявленими під час автоматичного збору даних.

Коротко про користь і ризики

  • Переваги: каскадне сканування і детекція веб-компонентів дають ширше й глибше уявлення про мережеву інфраструктуру та стек технологій на сайтах.

  • Ризики: ланцюгові сканування можуть збільшувати мережеве навантаження й підвищувати шанс потрапляння до блок-листів через масові запити — тому при плануванні аналізу слід враховувати етичні та правові аспекти.

Веб-інтерфейси

Пошукові запити

Найпростіший спосіб отримати доступ до даних Shodan — через веб-інтерфейс. Практично кожен інтерфейс дозволяє ввести пошуковий запит, тому спочатку — про те, як Shodan інтерпретує запити.

За замовчуванням пошук переглядає тільки основний текст банера і не шукає метадані всередині нього. Тобто запит Google поверне ті записи, де в самому банері зустрічається слово «Google» — це можуть бути, наприклад, пристрої з Google Search Appliance у мережах організацій, а не обов’язково офіційні сервіси Google.

Shodan прагне знайти записи, що відповідають усім умовам запиту: між значеннями працює логічне AND. Наприклад, apache + 1.3 еквівалентно apache 1.3.

Щоб шукати не тільки по тексту банера, а і по метаданих, використовують фільтри пошуку.

Фільтри пошуку

Фільтри — це спеціальні ключові слова для звуження результатів на основі метаданих служби чи пристрою. Формат фільтра:

filtername:value

Увага: між двокрапкою і значенням не повинно бути пробілу. Якщо значення містить пробіли — беріть його в лапки, наприклад:

city:"San Diego"

Деякі фільтри дозволяють вказати кілька значень через кому. Наприклад, щоб знайти пристрої з Telnet на портах 23 і 1023:

port:23,1023

Якщо фільтр не підтримує коми (наприклад port, hostname, net в деяких випадках), на практиці Shodan дає можливість подати кілька значень через повторення фільтра або інші синтаксичні варіанти — але найчастіше кома працює для port.

Щоб виключити результати, поставте мінус перед фільтром:

-city:"San Diego"

Приклад комбінованого запиту, що показує служби на порту 8080, в яких основний текст банера не порожній:

port:8080 -hash:0

У Shodan кожен банер має числову властивість hash; для порожніх банерів це значення дорівнює нулю — тому -hash:0 відсікає пусті відповіді.

Приклади корисних фільтрів

Нижче — кілька часто вживаних фільтрів (детальніше — у додатку B документації Shodan):

  • category — категорія служби (наприклад, ics, malware).

  • city — назва міста.

  • country — повна назва країни.

  • net — результати тільки з вказаного діапазону IP (у CIDR-нотації), наприклад: net:190.30.40.0/24

  • org — фільтрація за організацією, якій належить IP, наприклад: org:"Verizon Wireless"

Поради по складанню запитів

  • Для швидкої точності комбінуйте текстовий пошук і фільтри: наприклад apache port:80 country:"US".

  • Використовуйте лапки для значень із пробілами.

  • Виключення (-filter:value) часто простіше, ніж побудова довгого позитивного запиту.

  • hash допомагає відокремити порожні або однотипні банери від корисних записів.

Пошуковий рушій Shodan

Веб-інтерфейс і основи пошуку

Основний інтерфейс для доступу до даних Shodan — пошуковий рушій на https://www.shodan.io. За замовчуванням пошуковий запит переглядає дані, зібрані за останні 30 днів (на відміну від старого сайту, який шукав по всій базі). Отже, результати зі сайту відображають актуальну карту Інтернету на поточний момент.

Завантаження даних

Після виконання пошуку вгорі з’являється кнопка Download Data. Доступні формати експорту:

  • JSON — кожен рядок містить повний банер і всі метадані; зберігає всю доступну інформацію і найзручніший для подальшої обробки (підтримується CLI-клієнтом Shodan).

  • CSV — містить IP, порт, сам банер, організацію й імена хостів; корисний для швидкого імпорту в Excel, але інформації менше через обмеження формату.

  • XML — застарілий формат, займає більше місця і менш зручний у використанні.

Завантаження вимагає export credits (одноразова валюта, що купується на сайті). Одна кредит-монета дозволяє завантажити до 10 000 результатів. Згенеровані файли доступні в розділі Downloads на сайті.

Генерація звітів

Shodan дозволяє згенерувати звіт на основі пошукового запиту: графіки, таблиці та візуалізацію розподілу результатів по Інтернету. Звіт фіксується на момент генерації і не оновлюється автоматично при надходженні нових даних — це зручно для щомісячного порівняння змін. Розділ зі збереженими звітами відкривається кнопкою у верхньому правому куті.

Загальні (спільні) пошукові запити

Для пошуку специфічних пристроїв корисно використовувати готові запити з каталогу спільноти Shodan — користувачі діляться своїми запитами, описами та метками. Загальні запити допомагають початківцям швидко орієнтуватися. Увага: ці запити видимі всім — не публікуйте те, що не хочете показувати іншим.

Приклад: пошук на нестандартних портах

Ідея приховати сервіс — запустити його на нестандартному порту — часто вважається «security by obscurity» і зазвичай неефективна. Наприклад, щоб знайти OpenSSH, що працює не на стандартному порту 22, використовують:

product:openssh -port:22

Фільтр product обмежує пошук до OpenSSH, а -port:22 виключає стандартні SSH-сервери. Згенерований звіт показує, які нестандартні порти використовуються найчастіше (приклад частот: 2222, 5000, 23, 26, 5555 і т.д.). Часто «випадковий» вибір порту виявляється неуникальним: порт 2222, наприклад, дуже поширений (часто через honeypot-конфігурації або типові налаштування провайдерів).

Приклади практичної інтерпретації

Аналіз банерів з однієї країни може виявити шаблони: наприклад, у Австралії багато пристроїв із OpenSSH на порту 5000 мають однакові SSH-ключі та старі версії OpenSSH (що свідчить про централізоване обладнання провайдера та потенційні ризики). Такі знахідки показують, що перенесення служби на нестандартний порт не гарантує безпеки і може дати хибне відчуття захищеності.

Пошуковий рушій Shodan дає потужні можливості: актуальні дані (30-денний зріз), експорт у зручних форматах, генерацію незмінних звітів і доступ до спільних запитів. Але при роботі важливо розуміти обмеження (формати експорту, вартість експорт-кредитів) і правильно інтерпретувати результати (наприклад, нестандартні порти часто не унікальні, а шаблони в банерах можуть вказувати на централізоване обладнання або Honeypot).

Карти Shodan

Інтерфейс карт

Сайт Карт Shodan дає змогу досліджувати результати пошуку візуально, а не в текстовому вигляді головного сайту. Карта відображає до 1000 результатів одночасно та автоматично уточнює пошуковий запит під ту область, на яку ви навели фокус (при збільшенні/зменшенні масштабу).

Повна підтримка фільтрів

Усі фільтри та синтаксис пошуку, що працюють на основному сайті, також працюють і в картографічному інтерфейсі — можна застосовувати port:, country:, org: та інші фільтри, щоб звузити відображуваний набір міток на карті.

Поведінка при масштабуванні

Коли ви змінюєте масштаб карти, Shodan підбирає та відображає тільки ті результати, які відповідають вашій поточній географічній області та поточним фільтрам. Це дозволяє швидко отримувати локалізовану картину інфраструктури без перегляду всієї бази.

Стилі відображення карти

Доступні кілька видів відображення карти — виберіть іконки, щільність міток чи кластеризацію. Натисніть кнопку поруч зі строкою пошуку, щоб побачити список варіантів і переключитись між ними за власними уподобаннями.

Супутник (Satellite)

Супутник без легенди (Satellite without labels)

Світлий варіант відображення вулиць (Streets light)

Темний варіант відображення вулиць (Streets dark)

Зелений варіант відображення вулиць (Streets Green)

Червоний варіант відображення вулиць (Streets red)

І варіант виду піратської картки (Pirate)

Уразливості Shodan

Сайт Уразливостей Shodan збирає відомості про вразливості та експлойти з джерел на кшталт CVE, Exploit-DB і Metasploit, щоб зробити їх доступними для пошуку через веб-інтерфейс. На відміну від основного рушія Shodan, цей проєкт дозволяє шукати не тільки в тексті банера, а в повній інформації про експлойт, включаючи метадані.

Особливість фільтрів пошуку

Фільтри пошуку на цьому сайті відрізняються від фільтрів інших проєктів Shodan: їх спроектовано так, щоб максимально спростити роботу користувача там, де це можливо. За замовчуванням пошук виконується по повному вмісту експлойта (включаючи метадані), що відрізняє цей інструмент від основного Shodan, який без додаткових фільтрів шукає лише по тексту банера.

Доступні фільтри

Нижче — перелік основних фільтрів, які доступні для пошуку у розділі уразливостей:

  • author — автор уразливості або експлойта.

  • description — опис уразливості/експлойта.

  • platform — цільова платформа (наприклад: php, windows, linux тощо).

  • type — тип уразливості/експлойта.

(Повний список фільтрів і їхні детальні описи доступні в інтерфейсі сайту Уразливостей.)

Зображення Shodan

Сайт Зображення Shodan (Images) дозволяє легко переглядати скриншоти, які збирає Shodan. Цей інтерфейс спеціально орієнтований на фільтр has_screenshot і використовує той же синтаксис пошуку, що й основний пошуковий рушій Shodan.

Синтаксис пошуку

Рядок пошуку зверху використовує звичні ключові слова й фільтри Shodan. Найефективніше застосовувати його для фільтрації за організацією (org) або діапазоном IP (net), але також можна звужувати результати за типом джерела зображень або іншими метаданими. Для відображення лише результатів із наявними скриншотами використовуйте:

has_screenshot:true

Наприклад, щоб побачити скриншоти в межах певного мережевого блоку:

net:203.0.113.0/24 has_screenshot:true

Джерела зображень

Дані для знімків збираються з п’яти різних джерел — кожне відповідає своїй службі/порту і має свій банер:

  • VNC (RFB)

  • Віддалений робочий стіл (RDP)

  • RTSP (стріми з відеопристроїв)

  • Веб-камери (HTTP/вебінтерфейси)

  • X Windows

Оскільки кожне джерело отримується з окремого порту/служби, у результатах можна фільтрувати за протоколом або підходящим текстом у банері. Наприклад:

  • для VNC використовують ключові слова, пов’язані з RFB;

  • для RTSP — шукають rtsp;

  • для веб-камер — зазвичай фільтрують HTTP-сервіси з has_screenshot:true (тобто http has_screenshot:true).

Приклади запитів (зразково)

  • Всі результати з скриншотами:has_screenshot:true

  • Скриншоти з певного мережевого блоку:net:198.51.100.0/24 has_screenshot:true

  • Скриншоти, пов’язані з RTSP:rtsp has_screenshot:true

  • HTTP-сервери з доступними зображеннями (часто — веб-камери):http has_screenshot:true

Зауваження

Через те, що скриншоти отримуються з різних сервісів і портів, відображені зображення можуть містити приватну або чутливу інформацію — при роботі з цими даними слід дотримуватися етичних і правових норм.

Висновок

Shodan дає змогу побачити інтернет з іншого боку — не як набір сайтів, а як живу екосистему пристроїв і сервісів із власними “банерами”, метаданими та вразливостями. Якщо підходити до роботи з платформою з розумом — чітко формулювати запити, підбирати фільтри і перевіряти метадані — вона стане потужним інструментом для моніторингу, аналізу ризиків і швидкого виявлення проблем. Пам’ятайте про етику й обмеження: великі обсяги сканувань і необережне використання даних можуть нашкодити як вам, так і інфраструктурі.

Продовжимо далі — у наступній частині розберемо практичні приклади запитів і найкорисніші фільтри.

Підписатися
Сповістити про
0 Коментарі
Найстаріші
Найновіше Найбільше голосів
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.