Изображение


Содержание

1. Что такое Shodan и IoT поиск
2. Регистрация и базовое использование
3. Синтаксис поисковых запросов Shodan
4. Поиск камер и видеонаблюдения
5. Поиск умных домов и бытовой техники
6. Поиск промышленного IoT
7. Поиск сетевого оборудования
8. Поиск медицинского оборудования
9. Продвинутые поисковые техники
10. Скрипты для автоматизации
11. Анализ и визуализация данных
12. Советы по использованию
13. Часто задаваемые вопросы
14. Заключение

Что такое Shodan и IoT поиск


Shodan - это поисковая система для устройств, подключенных к интернету. В отличие от Google, который ищет веб-страницы, Shodan индексирует баннеры сетевых служб, метаданные устройств и техническую информацию о подключенном оборудовании.

Возможности Shodan для IoT


- Device Discovery - обнаружение подключенных устройств
- Vulnerability Assessment - оценка уязвимостей
- Network Mapping - картирование сетевой инфраструктуры
- Security Research - исследование безопасности IoT
- Threat Intelligence - разведка угроз
- Monitoring - постоянный мониторинг

Почему IoT устройства уязвимы


#### Проблемы безопасности IoT
- Слабые пароли по умолчанию - admin/admin, root/root
- Устаревшее ПО - отсутствие обновлений
- Открытые порты - незащищенные сетевые службы
- Недостаточная аутентификация - отсутствие MFA
- Плохая конфигурация - экспонированные интерфейсы

#### Риски IoT устройств
- Botnet recruitment - заражение и использование в DDoS атаках
- Data leakage - утечка персональных данных
- Privacy violations - нарушение приватности
- Physical security - доступ к системам контроля
- Supply chain attacks - компрометация через third-party

Типы IoT устройств в Shodan


#### Consumer IoT
- Smart cameras, thermostats, refrigerators
- Voice assistants, smart TVs, wearables
- Home automation systems, smart locks
- Connected appliances, smart meters

#### Industrial IoT
- SCADA systems, PLC controllers
- Industrial cameras, sensors
- Manufacturing equipment
- Energy management systems

#### Infrastructure IoT
- Traffic cameras, smart city sensors
- Medical devices, healthcare equipment
- Transportation systems, connected vehicles
- Public safety and emergency systems



Регистрация и базовое использование


Регистрация аккаунта


#### Базовый аккаунт (бесплатный)
- Ограничение: 100 результатов на поиск
- Доступ к основным фильтрам
- Ограниченный экспорт данных
- Без API доступа

#### Developer аккаунт ($59/месяц)
- 10,000 результатов на поиск
- Полный API доступ
- Экспорт в JSON/CSV/XML
- Advanced фильтры и статистика

#### Enterprise аккаунт ($899/месяц)
- Неограниченные результаты
- Advanced API с высокой квотой
- Custom integrations
- Priority support

Интерфейс Shodan


#### Web интерфейс
- Search bar - поле для поисковых запросов
- Filters - боковая панель с фильтрами
- Results - список найденных устройств
- Maps - географическая визуализация
- Reports - готовые отчеты

#### API доступ
- REST API - программный доступ
- Streaming API - реальный поток данных
- CLI tools - shodan команда
- SDK - библиотеки для разных языков

Базовые поисковые запросы


bash
<h2 id="poisk-po-portu">Поиск по порту</h2>
port:80

<h2 id="poisk-po-strane">Поиск по стране</h2>
country:RU

<h2 id="poisk-po-gorodu">Поиск по городу</h2>
city:Moscow

<h2 id="poisk-po-organizatsii">Поиск по организации</h2>
org:"Google LLC"

<h2 id="poisk-po-hostname">Поиск по hostname</h2>
hostname:example.com




Синтаксис поисковых запросов Shodan


Основные операторы


#### Логические операторы
- AND - логическое И (по умолчанию)
- OR - логическое ИЛИ
- NOT или - - отрицание

#### Поисковые операторы
- port: - поиск по порту
- country: - поиск по стране (2-буквенный код)
- city: - поиск по городу
- org: - поиск по организации
- hostname: - поиск по hostname
- ip: - поиск по IP адресу
- net: - поиск по сети (CIDR)
- asn: - поиск по AS номеру
- isp: - поиск по интернет-провайдеру

Продвинутые операторы


#### Временные фильтры
- before: - устройства просканированные до даты
- after: - устройства просканированные после даты

#### Географические фильтры
- geo: - поиск в радиусе от координат
- region: - поиск по региону
- postal: - поиск по почтовому индексу

#### Сетевые фильтры
- os: - операционная система
- device: - тип устройства
- service: - сетевая служба

Специальные операторы IoT


#### Device-specific
- device:webcam - веб-камеры
- device:router - роутеры
- device:printer - принтеры
- device:thermostat - термостаты

#### Service-specific
- rtsp - RTSP видеопотоки
- upnp - UPnP устройства
- mdns - mDNS сервисы
- ssdp - SSDP discovery

#### Banner search
- "Server: Apache" - поиск в баннере
- "X-Powered-By: PHP" - PHP приложения
- "WWW-Authenticate" - базовая аутентификация



Поиск камер и видеонаблюдения


IP-камеры


#### Базовые запросы для IP-камер
bash
<h2 id="obschiy-poisk-ip-kamer">Общий поиск IP-камер</h2>
"IP Webcam" port:80

<h2 id="poisk-kamer-s-rtsp">Поиск камер с RTSP</h2>
rtsp port:554

<h2 id="hikvision-kamery">Hikvision камеры</h2>
"Hikvision" port:80

<h2 id="dahua-kamery">Dahua камеры</h2>
"Dahua" port:80

<h2 id="axis-kamery">Axis камеры</h2>
"Axis" port:80


#### Специфические модели и производители
bash
<h2 id="foscam-kamery">Foscam камеры</h2>
"Foscam" port:88

<h2 id="amcrest-kamery">Amcrest камеры</h2>
"Amcrest" port:80

<h2 id="reolink-kamery">Reolink камеры</h2>
"Reolink" port:80

<h2 id="tp-link-kamery">TP-Link камеры</h2>
"TP-Link" port:80

<h2 id="xiaomi-mi-home-kamery">Xiaomi Mi Home камеры</h2>
"Mi Home" port:80


#### Уязвимые камеры
bash
<h2 id="kamery-s-defoltnymi-parolyami">Камеры с дефолтными паролями</h2>
"admin:admin" port:80 "IP Webcam"

<h2 id="kamery-bez-parolya">Камеры без пароля</h2>
"no password" port:80 webcam

<h2 id="ustarevshie-firmware">Устаревшие firmware</h2>
"Hikvision" "version:4.0" port:80

<h2 id="eksponirovannye-kamery">Экспонированные камеры</h2>
webcam port:80 country:US


Видеорегистраторы (DVR/NVR)


#### Поиск видеорегистраторов
bash
<h2 id="obschiy-poisk-dvr">Общий поиск DVR</h2>
"DVR" port:80

<h2 id="nvr-sistemy">NVR системы</h2>
"NVR" port:80

<h2 id="avigilon-sistemy">Avigilon системы</h2>
"Avigilon" port:80

<h2 id="milestone-sistemy">Milestone системы</h2>
"Milestone" port:80

<h2 id="genetec-sistemy">Genetec системы</h2>
"Genetec" port:80


#### Доступ к видеопотокам
bash
<h2 id="rtsp-potoki">RTSP потоки</h2>
rtsp port:554

<h2 id="http-videopotoki">HTTP видеопотоки</h2>
"rtsp://" port:80

<h2 id="mjpeg-potoki">MJPEG потоки</h2>
"mjpeg" port:80

<h2 id="h-264-potoki">H.264 потоки</h2>
"h.264" port:80


Системы контроля доступа


#### Поиск систем контроля
bash
<h2 id="sistemy-kontrolya-dostupa">Системы контроля доступа</h2>
"Access Control" port:80

<h2 id="suprema-sistemy">Suprema системы</h2>
"Suprema" port:80

<h2 id="hid-sistemy">HID системы</h2>
"HID" port:80

<h2 id="honeywell-sistemy">Honeywell системы</h2>
"Honeywell" port:80


#### Камеры наблюдения
bash
<h2 id="ulichnye-kamery">Уличные камеры</h2>
"traffic camera" port:80

<h2 id="domofonnye-kamery">Домофонные камеры</h2>
"intercom" port:80

<h2 id="kamery-v-magazinah">Камеры в магазинах</h2>
"store camera" port:80

<h2 id="kamery-v-ofisah">Камеры в офисах</h2>
"office camera" port:80




Поиск умных домов и бытовой техники


Умные колонки и ассистенты


#### Amazon Alexa устройства
bash
<h2 id="alexa-ustroystva">Alexa устройства</h2>
"Alexa" port:80

<h2 id="echo-dot">Echo Dot</h2>
"Echo Dot" port:80

<h2 id="amazon-echo">Amazon Echo</h2>
"Amazon Echo" port:443


#### Google Home устройства
bash
<h2 id="google-home">Google Home</h2>
"Google Home" port:80

<h2 id="nest-hub">Nest Hub</h2>
"Nest Hub" port:80

<h2 id="chromecast">Chromecast</h2>
"Chromecast" port:80


#### Apple HomePod
bash
<h2 id="homepod">HomePod</h2>
"HomePod" port:80

<h2 id="apple-tv">Apple TV</h2>
"Apple TV" port:80


Умные термостаты и климат-контроль


#### Nest термостаты
bash
<h2 id="nest-termostat">Nest термостат</h2>
"Nest" "thermostat" port:80

<h2 id="nest-learning">Nest Learning</h2>
"Nest Learning" port:443


#### Ecobee системы
bash
<h2 id="ecobee">Ecobee</h2>
"Ecobee" port:80

<h2 id="ecobee-smart">Ecobee Smart</h2>
"Ecobee Smart" port:443


#### Honeywell системы
bash
<h2 id="honeywell-thermostat">Honeywell thermostat</h2>
"Honeywell" "thermostat" port:80

<h2 id="lyric-termostat">Lyric термостат</h2>
"Lyric" port:80


Умные холодильники и бытовая техника


#### LG ThinQ
bash
<h2 id="lg-thinq">LG ThinQ</h2>
"LG ThinQ" port:80

<h2 id="lg-refrigerator">LG refrigerator</h2>
"LG" "refrigerator" port:80


#### Samsung SmartThings
bash
<h2 id="samsung-smartthings">Samsung SmartThings</h2>
"SmartThings" port:80

<h2 id="samsung-refrigerator">Samsung refrigerator</h2>
"Samsung" "refrigerator" port:443


#### Whirlpool устройства
bash
<h2 id="whirlpool">Whirlpool</h2>
"Whirlpool" port:80

<h2 id="whirlpool-appliance">Whirlpool appliance</h2>
"Whirlpool" "appliance" port:80


Умные замки и системы безопасности


#### August замки
bash
<h2 id="august-smart-lock">August Smart Lock</h2>
"August" "Smart Lock" port:80

<h2 id="august-connect">August Connect</h2>
"August Connect" port:443


#### Schlage замки
bash
<h2 id="schlage">Schlage</h2>
"Schlage" port:80

<h2 id="schlage-sense">Schlage Sense</h2>
"Schlage Sense" port:443


#### Ring дверные звонки
bash
<h2 id="ring-video-doorbell">Ring Video Doorbell</h2>
"Ring" "Video Doorbell" port:80

<h2 id="ring-pro">Ring Pro</h2>
"Ring Pro" port:80


Умные розетки и выключатели


#### TP-Link Kasa
bash
<h2 id="tp-link-kasa">TP-Link Kasa</h2>
"TP-Link Kasa" port:80

<h2 id="kasa-smart-plug">Kasa Smart Plug</h2>
"Kasa Smart Plug" port:9999


#### Wemo устройства
bash
<h2 id="belkin-wemo">Belkin Wemo</h2>
"Belkin Wemo" port:80

<h2 id="wemo-switch">Wemo Switch</h2>
"Wemo Switch" port:49153


#### Philips Hue
bash
<h2 id="philips-hue-bridge">Philips Hue Bridge</h2>
"Philips Hue" port:80

<h2 id="hue-bridge">Hue Bridge</h2>
"Hue Bridge" port:80




Поиск промышленного IoT


SCADA системы


#### Общий поиск SCADA
bash
<h2 id="scada-sistemy">SCADA системы</h2>
"SCADA" port:80

<h2 id="scada-web-interface">SCADA web interface</h2>
"SCADA" "web interface" port:8080

<h2 id="scada-login">SCADA login</h2>
"SCADA" "login" port:80


#### Siemens системы
bash
<h2 id="siemens-simatic">Siemens SIMATIC</h2>
"SIMATIC" port:80

<h2 id="siemens-wincc">Siemens WinCC</h2>
"WinCC" port:80

<h2 id="siemens-tia-portal">Siemens TIA Portal</h2>
"TIA Portal" port:102


#### Rockwell Automation
bash
<h2 id="allen-bradley">Allen-Bradley</h2>
"Allen-Bradley" port:44818

<h2 id="rockwell-plc">Rockwell PLC</h2>
"Rockwell" "PLC" port:80

<h2 id="factorytalk">FactoryTalk</h2>
"FactoryTalk" port:80


#### Schneider Electric
bash
<h2 id="schneider-electric">Schneider Electric</h2>
"Schneider Electric" port:80

<h2 id="modicon-plc">Modicon PLC</h2>
"Modicon" port:502

<h2 id="citect-scada">Citect SCADA</h2>
"Citect" port:80


PLC контроллеры


#### Поиск PLC
bash
<h2 id="plc-kontrollery">PLC контроллеры</h2>
"PLC" port:502

<h2 id="modbus-protokol">Modbus протокол</h2>
modbus port:502

<h2 id="dnp3-protokol">DNP3 протокол</h2>
dnp3 port:20000


#### Специфические модели
bash
<h2 id="mitsubishi-plc">Mitsubishi PLC</h2>
"Mitsubishi" port:5002

<h2 id="omron-plc">Omron PLC</h2>
"Omron" port:9600

<h2 id="beckhoff-plc">Beckhoff PLC</h2>
"Beckhoff" port:48898


Промышленные камеры и датчики


#### Промышленные камеры
bash
<h2 id="industrial-camera">Industrial camera</h2>
"industrial camera" port:80

<h2 id="basler-kamery">Basler камеры</h2>
"Basler" port:80

<h2 id="sony-industrial">Sony industrial</h2>
"Sony" "industrial" port:80


#### Датчики и сенсоры
bash
<h2 id="industrial-sensor">Industrial sensor</h2>
"industrial sensor" port:80

<h2 id="temperature-sensor">Temperature sensor</h2>
"temperature sensor" port:502

<h2 id="pressure-sensor">Pressure sensor</h2>
"pressure sensor" port:20000


Системы управления энергопотреблением


#### Smart meters
bash
<h2 id="smart-meter">Smart meter</h2>
"smart meter" port:80

<h2 id="electricity-meter">Electricity meter</h2>
"electricity meter" port:502

<h2 id="gas-meter">Gas meter</h2>
"gas meter" port:20000


#### Energy management
bash
<h2 id="energy-management">Energy management</h2>
"energy management" port:80

<h2 id="building-automation">Building automation</h2>
"building automation" port:47808

<h2 id="bacnet-protokol">BACnet протокол</h2>
bacnet port:47808




Поиск сетевого оборудования


Роутеры и модемы


#### Популярные модели роутеров
bash
<h2 id="linksys-routery">Linksys роутеры</h2>
"Linksys" port:80

<h2 id="netgear-routery">Netgear роутеры</h2>
"Netgear" port:80

<h2 id="d-link-routery">D-Link роутеры</h2>
"D-Link" port:80

<h2 id="tp-link-routery">TP-Link роутеры</h2>
"TP-Link" port:80


#### Корпоративные роутеры
bash
<h2 id="cisco-routery">Cisco роутеры</h2>
"Cisco" port:80

<h2 id="juniper-routery">Juniper роутеры</h2>
"Juniper" port:80

<h2 id="huawei-routery">Huawei роутеры</h2>
"Huawei" port:80


Коммутаторы


#### Управляемые коммутаторы
bash
<h2 id="cisco-switches">Cisco switches</h2>
"Cisco" port:23

<h2 id="hp-switches">HP switches</h2>
"HP" "switch" port:80

<h2 id="dell-switches">Dell switches</h2>
"Dell" "switch" port:80


#### Smart switches
bash
<h2 id="netgear-smart-switch">Netgear smart switch</h2>
"Netgear" "smart switch" port:80

<h2 id="tp-link-smart-switch">TP-Link smart switch</h2>
"TP-Link" "smart switch" port:80

<h2 id="ubiquiti-switches">Ubiquiti switches</h2>
"Ubiquiti" port:80


Точки доступа Wi-Fi


#### Wi-Fi роутеры
bash
<h2 id="wi-fi-access-point">Wi-Fi access point</h2>
"wireless access point" port:80

<h2 id="wi-fi-router">Wi-Fi router</h2>
"WiFi router" port:80

<h2 id="wireless-ap">Wireless AP</h2>
"Wireless AP" port:80


#### Уязвимые точки доступа
bash
<h2 id="wps-enabled">WPS enabled</h2>
"WPS" port:80

<h2 id="wep-encryption-ustarevshaya">WEP encryption (устаревшая)</h2>
"WEP" port:80

<h2 id="default-password">Default password</h2>
"default password" "WiFi" port:80


NAS и сетевые хранилища


#### Synology NAS
bash
<h2 id="synology-dsm">Synology DSM</h2>
"Synology" "DSM" port:5000

<h2 id="synology-diskstation">Synology DiskStation</h2>
"DiskStation" port:5000


#### QNAP NAS
bash
<h2 id="qnap-storage">QNAP Storage</h2>
"QNAP" port:8080

<h2 id="qnap-ts">QNAP TS</h2>
"QNAP" "TS" port:80


#### Western Digital
bash
<h2 id="wd-my-cloud">WD My Cloud</h2>
"My Cloud" port:80

<h2 id="wd-nas">WD NAS</h2>
"WD" "NAS" port:80


Принтеры и МФУ


#### Сетевые принтеры
bash
<h2 id="network-printer">Network printer</h2>
"network printer" port:80

<h2 id="hp-printer">HP printer</h2>
"HP" "printer" port:80

<h2 id="canon-printer">Canon printer</h2>
"Canon" "printer" port:80


#### Многофункциональные устройства
bash
<h2 id="mfp-device">MFP device</h2>
"MFP" port:80

<h2 id="all-in-one-printer">All-in-one printer</h2>
"all-in-one" port:80

<h2 id="multifunction-printer">Multifunction printer</h2>
"multifunction" port:9100




Поиск медицинского оборудования


Медицинские устройства


#### Медицинские камеры
bash
<h2 id="medical-camera">Medical camera</h2>
"medical camera" port:80

<h2 id="endoscope-camera">Endoscope camera</h2>
"endoscope" port:80

<h2 id="surgical-camera">Surgical camera</h2>
"surgical camera" port:80


#### Мониторы пациента
bash
<h2 id="patient-monitor">Patient monitor</h2>
"patient monitor" port:80

<h2 id="vital-signs-monitor">Vital signs monitor</h2>
"vital signs" port:80

<h2 id="ecg-monitor">ECG monitor</h2>
"ECG" port:80


Медицинские системы


#### PACS системы
bash
<h2 id="pacs-system">PACS system</h2>
"PACS" port:80

<h2 id="dicom-viewer">DICOM viewer</h2>
"DICOM" port:80

<h2 id="medical-imaging">Medical imaging</h2>
"medical imaging" port:104


#### Лабораторное оборудование
bash
<h2 id="lab-equipment">Lab equipment</h2>
"lab equipment" port:80

<h2 id="medical-analyzer">Medical analyzer</h2>
"medical analyzer" port:80

<h2 id="blood-analyzer">Blood analyzer</h2>
"blood analyzer" port:80


Медицинские приборы


#### Инфузионные помпы
bash
<h2 id="infusion-pump">Infusion pump</h2>
"infusion pump" port:80

<h2 id="iv-pump">IV pump</h2>
"IV pump" port:80

<h2 id="syringe-pump">Syringe pump</h2>
"syringe pump" port:80


#### Рентгеновское оборудование
bash
<h2 id="x-ray-machine">X-ray machine</h2>
"X-ray" port:80

<h2 id="ct-scanner">CT scanner</h2>
"CT scanner" port:80

<h2 id="mri-machine">MRI machine</h2>
"MRI" port:80




Продвинутые поисковые техники


Комбинированные запросы


#### Множественные фильтры
bash
<h2 id="kamery-v-opredelennoy-strane">Камеры в определенной стране</h2>
webcam port:80 country:RU

<h2 id="uyazvimye-routery-v-gorode">Уязвимые роутеры в городе</h2>
router port:80 city:Moscow "admin:admin"

<h2 id="iot-ustroystva-s-opredelennym-firmware">IoT устройства с определенным firmware</h2>
"smart home" port:80 "firmware:1.0"


#### Геолокационные поиски
bash
<h2 id="ustroystva-v-radiuse">Устройства в радиусе</h2>
geo:55.7558,37.6173,10 # Москва, радиус 10км

<h2 id="kamery-v-regione">Камеры в регионе</h2>
webcam port:80 region:Saint-Petersburg

<h2 id="ustroystva-po-pochtovomu-indeksu">Устройства по почтовому индексу</h2>
iot port:80 postal:101000


#### Временные фильтры
bash
<h2 id="nedavno-dobavlennye-ustroystva">Недавно добавленные устройства</h2>
webcam port:80 after:2024-01-01

<h2 id="ustroystva-naydennye-do-opredelennoy-daty">Устройства, найденные до определенной даты</h2>
iot port:80 before:2024-12-01


Поиск уязвимостей


#### Известные уязвимости
bash
<h2 id="heartbleed-uyazvimye-ustroystva">Heartbleed уязвимые устройства</h2>
"OpenSSL" "1.0.1" port:443

<h2 id="shellshock-uyazvimye">Shellshock уязвимые</h2>
"Bash" port:80

<h2 id="wannacry-uyazvimye">WannaCry уязвимые</h2>
"Windows" "445" port:445


#### Слабые пароли
bash
<h2 id="defoltnye-paroli">Дефолтные пароли</h2>
"admin:admin" port:80

<h2 id="pustye-paroli">Пустые пароли</h2>
"no password" port:80

<h2 id="slabye-paroli">Слабые пароли</h2>
"password:123456" port:80


#### Открытые порты
bash
<h2 id="otkrytyy-telnet">Открытый Telnet</h2>
port:23

<h2 id="otkrytyy-ftp">Открытый FTP</h2>
port:21

<h2 id="otkrytyy-rdp">Открытый RDP</h2>
port:3389


Поиск по баннерам


#### HTTP баннеры
bash
<h2 id="ustarevshie-servery">Устаревшие серверы</h2>
"Server: Apache/2.2" port:80

<h2 id="uyazvimye-php-versii">Уязвимые PHP версии</h2>
"X-Powered-By: PHP/5.6" port:80

<h2 id="eksponirovannye-zagolovki">Экспонированные заголовки</h2>
"X-Forwarded-For" port:80


#### SSH баннеры
bash
<h2 id="ustarevshie-ssh">Устаревшие SSH</h2>
"SSH-1.99" port:22

<h2 id="openssh-versii">OpenSSH версии</h2>
"OpenSSH_7.2" port:22


#### FTP баннеры
bash
<h2 id="ftp-servery">FTP серверы</h2>
"220" "FTP" port:21

<h2 id="anonimnyy-ftp">Анонимный FTP</h2>
"Anonymous FTP" port:21




Скрипты для автоматизации


Python скрипты для Shodan


#### Базовый поисковый скрипт
python
#!/usr/bin/env python3
import shodan
import sys

<h2 id="initsializatsiya-api">Инициализация API</h2>
SHODAN_API_KEY = "your_api_key_here"
api = shodan.Shodan(SHODAN_API_KEY)

<h2 id="funktsiya-poiska">Функция поиска</h2>
def shodan_search(query, limit=10):
try:
results = api.search(query, limit=limit)
print(f"Результаты поиска: {results['total']}")

for result in results['matches']:
print(f"IP: {result['ip_str']}")
print(f"Port: {result['port']}")
print(f"Hostnames: {result.get('hostnames', [])}")
print(f"Data: {result['data'][:200]}...")
print("-" * 50)

except shodan.APIError as e:
print(f"Ошибка: {e}")

if __name__ == "__main__":
if len(sys.argv) != 2:
print("Использование: python shodan_search.py 'query'")
sys.exit(1)

query = sys.argv[1]
shodan_search(query)


#### Скрипт для поиска IoT устройств
python
#!/usr/bin/env python3
import shodan
import json
import csv

SHODAN_API_KEY = "your_api_key_here"
api = shodan.Shodan(SHODAN_API_KEY)

<h2 id="spisok-iot-poiskovyh-zaprosov">Список IoT поисковых запросов</h2>
IOT_QUERIES = [
'webcam port:80',
'router port:80',
'printer port:80',
'smart home port:80',
'thermostat port:80',
'"IP Webcam" port:80',
'SCADA port:80',
'PLC port:502'
]

def search_iot_devices():
all_results = []

for query in IOT_QUERIES:
print(f"Поиск: {query}")
try:
results = api.search(query, limit=5)

for result in results['matches']:
device_info = {
'query': query,
'ip': result['ip_str'],
'port': result['port'],
'country': result.get('location', {}).get('country_name', ''),
'city': result.get('location', {}).get('city', ''),
'org': result.get('org', ''),
'banner': result['data'][:500]
}
all_results.append(device_info)

except shodan.APIError as e:
print(f"Ошибка при поиске {query}: {e}")

return all_results

def save_to_csv(results, filename='iot_devices.csv'):
if not results:
print("Нет результатов для сохранения")
return

with open(filename, 'w', newline='', encoding='utf-8') as csvfile:
fieldnames = ['query', 'ip', 'port', 'country', 'city', 'org', 'banner']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

writer.writeheader()
for result in results:
writer.writerow(result)

print(f"Результаты сохранены в {filename}")

if __name__ == "__main__":
results = search_iot_devices()
save_to_csv(results)
print(f"Найдено устройств: {len(results)}")


#### Скрипт для мониторинга уязвимостей
python
#!/usr/bin/env python3
import shodan
import time
import smtplib
from email.mime.text import MIMEText

SHODAN_API_KEY = "your_api_key_here"
EMAIL_FROM = "your_email@example.com"
EMAIL_TO = "alert@example.com"
SMTP_SERVER = "smtp.example.com"

api = shodan.Shodan(SHODAN_API_KEY)

<h2 id="uyazvimye-zaprosy-dlya-monitoringa">Уязвимые запросы для мониторинга</h2>
VULNERABLE_QUERIES = [
'"admin:admin" webcam port:80',
'"default password" router port:80',
'SCADA port:80 "login"',
'printer port:80 "no password"'
]

def check_vulnerabilities():
alerts = []

for query in VULNERABLE_QUERIES:
try:
results = api.search(query, limit=10)

if results['total'] > 0:
alert = {
'query': query,
'count': results['total'],
'sample_ips': [r['ip_str'] for r in results['matches'][:3]]
}
alerts.append(alert)

except shodan.APIError as e:
print(f"Ошибка при проверке {query}: {e}")

return alerts

def send_alert_email(alerts):
if not alerts:
return

subject = f"Shodan Alert: {len(alerts)} уязвимых устройств найдено"

body = "Обнаружены потенциально уязвимые IoT устройства:\n\n"

for alert in alerts:
body += f"Запрос: {alert['query']}\n"
body += f"Количество: {alert['count']}\n"
body += f"Примеры IP: {', '.join(alert['sample_ips'])}\n\n"

msg = MIMEText(body)
msg['Subject'] = subject
msg['From'] = EMAIL_FROM
msg['To'] = EMAIL_TO

try:
server = smtplib.SMTP(SMTP_SERVER)
server.sendmail(EMAIL_FROM, EMAIL_TO, msg.as_string())
server.quit()
print("Alert email sent")
except Exception as e:
print(f"Failed to send email: {e}")

def main():
while True:
print("Проверка уязвимостей...")
alerts = check_vulnerabilities()

if alerts:
print(f"Найдено {len(alerts)} потенциальных уязвимостей")
send_alert_email(alerts)
else:
print("Уязвимости не найдены")

# Проверка каждые 24 часа
time.sleep(86400)

if __name__ == "__main__":
main()


#### Скрипт для экспорта данных
python
#!/usr/bin/env python3
import shodan
import json
import argparse

SHODAN_API_KEY = "your_api_key_here"
api = shodan.Shodan(SHODAN_API_KEY)

def export_results(query, limit=100, format='json'):
try:
results = api.search(query, limit=limit)

if format == 'json':
with open(f'shodan_{query.replace(" ", "_")}.json', 'w') as f:
json.dump(results, f, indent=2)
elif format == 'csv':
import csv
with open(f'shodan_{query.replace(" ", "_")}.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(['IP', 'Port', 'Country', 'City', 'Org', 'Banner'])

for result in results['matches']:
writer.writerow([
result['ip_str'],
result['port'],
result.get('location', {}).get('country_name', ''),
result.get('location', {}).get('city', ''),
result.get('org', ''),
result['data'][:200]
])

print(f"Экспортировано {len(results['matches'])} результатов")

except shodan.APIError as e:
print(f"Ошибка: {e}")

if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Shodan data exporter')
parser.add_argument('query', help='Search query')
parser.add_argument('--limit', type=int, default=100, help='Result limit')
parser.add_argument('--format', choices=['json', 'csv'], default='json', help='Export format')

args = parser.parse_args()
export_results(args.query, args.limit, args.format)




Анализ и визуализация данных


Статистический анализ


#### Количество устройств по странам
bash
<h2 id="ispolzuyte-shodan-facets-dlya-statistiki">Используйте Shodan facets для статистики</h2>
curl -H "X-Shodan-API-Key: YOUR_API_KEY" \
"https://api.shodan.io/shodan/host/search/facets?query=webcam&facets=country"

<h2 id="analiz-s-python">Анализ с Python</h2>
import shodan
api = shodan.Shodan(SHODAN_API_KEY)

results = api.search('webcam port:80')
countries = {}

for result in results['matches']:
country = result.get('location', {}).get('country_name', 'Unknown')
countries[country] = countries.get(country, 0) + 1

<h2 id="sortirovka-po-kolichestvu">Сортировка по количеству</h2>
sorted_countries = sorted(countries.items(), key=lambda x: x[1], reverse=True)
for country, count in sorted_countries[:10]:
print(f"{country}: {count}")


#### Анализ портов
python
<h2 id="raspredelenie-portov">Распределение портов</h2>
ports = {}
for result in results['matches']:
port = result['port']
ports[port] = ports.get(port, 0) + 1

<h2 id="vyvod-top-portov">Вывод топ портов</h2>
for port, count in sorted(ports.items(), key=lambda x: x[1], reverse=True)[:10]:
print(f"Port {port}: {count} устройств")


Визуализация с Python


#### Карта устройств
python
import folium
import shodan

api = shodan.Shodan(SHODAN_API_KEY)
results = api.search('webcam port:80', limit=100)

<h2 id="sozdanie-karty">Создание карты</h2>
m = folium.Map(location=[20, 0], zoom_start=2)

for result in results['matches']:
location = result.get('location')
if location and 'latitude' in location and 'longitude' in location:
folium.Marker(
location=[location['latitude'], location['longitude']],
popup=f"{result['ip_str']}:{result['port']}<br>{result['data'][:100]}..."
).add_to(m)

m.save('iot_devices_map.html')


#### Графики распределения
python
import matplotlib.pyplot as plt
import shodan

api = shodan.Shodan(SHODAN_API_KEY)
results = api.search('iot port:80', limit=500)

<h2 id="sbor-dannyh-po-stranam">Сбор данных по странам</h2>
countries = {}
for result in results['matches']:
country = result.get('location', {}).get('country_name', 'Unknown')
countries[country] = countries.get(country, 0) + 1

<h2 id="sozdanie-grafika">Создание графика</h2>
plt.figure(figsize=(12, 6))
plt.bar(list(countries.keys())[:15], list(countries.values())[:15])
plt.xticks(rotation=45, ha='right')
plt.title('Распределение IoT устройств по странам')
plt.xlabel('Страна')
plt.ylabel('Количество устройств')
plt.tight_layout()
plt.savefig('iot_countries.png')
plt.show()


Отчеты и экспорт


#### Генерация отчетов
python
import shodan
from reportlab.lib import colors
from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle

def generate_report(query, filename='shodan_report.pdf'):
api = shodan.Shodan(SHODAN_API_KEY)
results = api.search(query, limit=50)

doc = SimpleDocTemplate(filename, pagesize=letter)
elements = []

# Данные для таблицы
data = [['IP', 'Port', 'Country', 'Organization']]
for result in results['matches']:
data.append([
result['ip_str'],
str(result['port']),
result.get('location', {}).get('country_name', 'Unknown'),
result.get('org', 'Unknown')[:30]
])

# Создание таблицы
table = Table(data)
table.setStyle(TableStyle([
('BACKGROUND', (0, 0), (-1, 0), colors.grey),
('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
('ALIGN', (0, 0), (-1, -1), 'CENTER'),
('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold'),
('FONTSIZE', (0, 0), (-1, 0), 14),
('BOTTOMPADDING', (0, 0), (-1, 0), 12),
('BACKGROUND', (0, 1), (-1, -1), colors.beige),
]))

elements.append(table)
doc.build(elements)
print(f"Отчет сохранен в {filename}")

generate_report('webcam port:80')




Советы по использованию


Этика и законность


#### Соблюдение законов
- Получайте разрешение - для сканирования чужих сетей
- Уважайте privacy - не собирайте личные данные
- Сообщайте об уязвимостях - через ответственные каналы
- Не используйте для вреда - только для security research

#### Лучшие практики
- Используйте VPN - для анонимности при поиске
- Ограничивайте запросы - не перегружайте API
- Храните данные безопасно - шифруйте чувствительную информацию
- Регулярно обновляйте - следите за новыми возможностями

Оптимизация поиска


#### Улучшение запросов
- Комбинируйте фильтры - для более точных результатов
- Используйте отрицание - исключите ненужные результаты
- Добавляйте геофильтры - для локального поиска
- Проверяйте баннеры - ищите специфическую информацию

#### Управление квотами
- Мониторьте использование - API имеет лимиты
- Кэшируйте результаты - сохраняйте для повторного анализа
- Используйте фильтры - уменьшайте количество результатов
- Планируйте запросы - распределите по времени

Автоматизация и интеграция


#### Интеграция с SIEM
bash
<h2 id="otpravka-rezultatov-v-siem">Отправка результатов в SIEM</h2>
curl -X POST -H "Content-Type: application/json" \
-d '{"source":"shodan","data":'$SHODAN_RESULTS'}' \
http://siem.example.com/api/ingest


#### Мониторинг изменений
python
<h2 id="sravnenie-rezultatov-so-vremenem">Сравнение результатов со временем</h2>
def monitor_changes(query, previous_results):
current_results = api.search(query)
current_ips = set(r['ip_str'] for r in current_results['matches'])
previous_ips = set(r['ip_str'] for r in previous_results['matches'])

new_devices = current_ips - previous_ips
disappeared_devices = previous_ips - current_ips

return new_devices, disappeared_devices


Безопасность использования


#### Защита API ключа
- Не коммитите в git - храните в переменных окружения
- Ограничивайте доступ - используйте отдельный аккаунт
- Мониторьте использование - проверяйте логи
- Ротируйте ключи - регулярно меняйте

#### Безопасность данных
- Шифруйте хранилище - для собранных данных
- Удаляйте чувствительную информацию - после анализа
- Используйте локальное хранение - не храните в облаке
- Контролируйте доступ - ограничьте к файлам



Часто задаваемые вопросы


Основы Shodan


Что такое Shodan?
Shodan - это поисковая система для устройств, подключенных к интернету. Она индексирует баннеры сетевых служб.

Чем Shodan отличается от Google?
Shodan ищет устройства и сервисы, а не веб-страницы. Он показывает техническую информацию о подключенном оборудовании.

Безопасно ли использовать Shodan?
Да, для законных целей. Shodan - это публичная информация, но важно соблюдать законы и этику.

Нужно ли платить за Shodan?
Базовый поиск бесплатный, но для API и расширенных функций нужна подписка.

IoT поиск


Какие IoT устройства можно найти в Shodan?
Камеры, роутеры, умные дома, промышленное оборудование, медицинские устройства и многое другое.

Почему IoT устройства появляются в Shodan?
Потому что они подключены к интернету и имеют открытые порты с баннерами, которые Shodan сканирует.

Можно ли найти мое IoT устройство?
Если оно подключено к интернету и имеет открытые порты, то да.

Как защитить IoT устройства от обнаружения?
Закройте ненужные порты, используйте firewall, обновляйте firmware, меняйте дефолтные пароли.

Технические вопросы


Как работает поиск в Shodan?
Shodan сканирует интернет, собирает баннеры от открытых портов и индексирует эту информацию.

Как часто обновляется база Shodan?
Непрерывно. Новые устройства добавляются по мере сканирования.

Можно ли найти устройства в локальной сети?
Нет, Shodan ищет только публично доступные устройства в интернете.

Как экспортировать результаты поиска?
Через API или веб-интерфейс. Developer аккаунт позволяет экспорт в различных форматах.

Автоматизация


Можно ли автоматизировать поиск в Shodan?
Да, через API и SDK для разных языков программирования.

Какие языки поддерживает Shodan API?
Python, Go, Ruby, JavaScript, PHP, Java, C# и другие.

Как создать скрипт для мониторинга?
Используйте API для регулярных запросов и сравнения результатов со временем.

Можно ли интегрировать Shodan с другими инструментами?
Да, многие security инструменты имеют интеграцию с Shodan API.

Безопасность и этика


Является ли сканирование Shodan незаконным?
Нет, Shodan собирает публично доступную информацию. Но использование для атак может быть незаконным.

Можно ли найти личную информацию в Shodan?
Иногда да, если устройства экспонируют чувствительные данные.

Как сообщить об уязвимом устройстве?
Через контактную информацию владельца или через CERT/CSIRT.

Можно ли использовать Shodan для пентестинга?
Да, но только с письменного разрешения владельца системы.



Заключение


Shodan - это мощный инструмент для обнаружения IoT устройств в интернете. Эта шпаргалка содержит более 200 поисковых запросов и скриптов для поиска различных типов подключенного оборудования.

Ключевые takeaways:


1. Регистрируйтесь для API - для автоматизации и больших объемов данных
2. Комбинируйте фильтры - гео, порты, организация для точного поиска
3. Автоматизируйте мониторинг - скрипты для регулярной проверки уязвимостей
4. Анализируйте данные - визуализация и статистика для insights
5. Соблюдайте этику - используйте только для legitimate security research

Рекомендации по использованию:


- Начинайте с базовых запросов - webcam, router, iot
- Добавляйте геофильтры - country, city для локального поиска
- Комбинируйте с другими инструментами - Nmap, Metasploit, Wireshark
- Создавайте отчеты - документируйте findings для заказчиков
- Следите за обновлениями - IoT landscape постоянно меняется

Будущие тенденции IoT в Shodan:


- 5G IoT devices - новые типы подключенного оборудования
- Edge computing - распределенные IoT системы
- AI-powered IoT - умные устройства с машинным обучением
- Blockchain IoT - децентрализованные IoT сети
- Satellite IoT - глобальные IoT системы через спутники

Все описанные в данной статье инструменты и методы предназначены исключительно для образовательных целей и использования в рамках законодательства Российской Федерации. Запрещается использовать Shodan и другие инструменты для несанкционированного доступа к компьютерным системам, нарушения конфиденциальности, причинения вреда или любых других противоправных действий. В соответствии с Федеральным законом РФ "Об информации, информационных технологиях и о защите информации" (№ 149-ФЗ), Федеральным законом "О персональных данных" (№ 152-ФЗ) и Уголовным кодексом РФ (ст. 272-274), любые действия должны осуществляться только с письменного согласия владельцев систем или в рамках проведения аудита безопасности. Автор и форум не несут ответственности за неправомерное использование предоставленной информации.

---

**⚠️ Дисклеймер:** Статья носит информационно-образовательный характер и не содержит инструкций для совершения противоправных действий.