Самый страшный поисковик в интернете, “черный Google” или как найти уязвимые веб-камеры по всему миру используя Shodan
CODE RED
Поисковики индексируют как веб-сайты, чтобы их было проще найти, так и подключенные к интернету устройства.
Shodan так же хранит данные о веб-камерах, принтерах, и даже профессиональных устройствах в единой базе данных, позволяющей хакерам получать доступ к уязвимым девайсам по всему миру.
Вы можете найти эту базу данных через командную строку.
В этом браузере можно автоматизировать большую часть работы. Вместо сканирования всей сети, взломщики могут настроить поисковик так, чтобы он искал потенциальных жертв.
Встроенная библиотека Python позволяет быстро писать скрипты которые загружаются в определенный реестр, в зависимости от подключенных устройств.
Охота за такими устройствами - все равно что найти все страницы в интернете на одну тему. Вместо поиска этих страниц самому, вы можете ввести определенный термин в поисковик чтобы получить лучшие результаты. То же самое и с подключенными устройствами, вы можете удивиться!
Шаг первый. Вход в Shodan
Во первых, вне зависимости от того, что вы используете, браузер или командную строку, вам требуется войти в shodanhq.com. Вы все ещё можете использовать Shodan без входа, однако некоторые возможности доступны только зарегистрированным пользователям. Например, вы можете видеть только одну страницу в поиске без регистрации.
Две, если аккаунт бесплатный.
Для командной строки вам понадобится ваш API.Шаг

Шаг второй. Настройка Shodan с помощью командной строки
Особенно полезная фича позволяет не открывать браузер для использования, если у вас есть ваш API. Чтобы установить Shodan, вам понадобится рабочий Python. Затем, вы можете ввести этот код чтобы установить Shodan.
~$ pip install shodan
После этого вы сможете увидеть все доступные действия с помощью команды -h.
~$ shodan -h Usage: shodan [OPTIONS] COMMAND [ARGS]... Options: -h, --help Show this message and exit. 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... honeyscore Check whether the IP is a honeypot or not. host View all available information for an IP address info Shows general information about your account init Initialize the Shodan command-line myip Print your external IP address org Manage your organization's access to Shodan parse Extract information out of compressed JSON files. radar Real-Time Map of some results as Shodan finds them. scan Scan an IP/ netblock using Shodan. search Search the Shodan database stats Provide summary information about a search query stream Stream data in real-time. version Print version of this tool.
Эти команды очень прямолинейные, но не все из них работают без вашего Shodan-ключа API. Войдите в свой аккаунт в браузере и нажмите на "My Account", где вы и увидите ваш API. Скопируйте его, а затем используйте команду init чтобы связать ключ и браузер.
~$ shodan init XXXXxxxxXXXXxxXxXXXxXxxXxxxXXXxX Successfully initialized
Шаг третий. Поиск доступных камер
Есть очень много способов. Обычно, использование сервера это хорошее начало. Shodan индексирует информацию в баннере, что означает что если производитель поместит свое имя в баннер, вы сможете его найти. Если нет, поиск станет бесполезным.
Одно из самых лучших это webcamxp, софт для вебок и интернета, оптимизированный под старые версии Windows. После поиска в Shodan, он выдаст сотни, если не тысячи ссылок, подключенных к интернету камер по всему миру.

Чтобы сделать это из командной строки, используйте функцию поиска.
~$ shodan search webcamxp 81.133.███.███ 8080 ████81-133-███-███.in-addr.btopenworld.com HTTP/1.1 200 OK\r\nConnection: close\r\nContent-Type: text/html; charset=utf-8\r\nConten t-Length: 7313\r\nCache-control: no-cache, must revalidate\r\nDate: Tue, 06 Aug 2019 21:39:29 GMT\r\nExpires: Tue, 06 Aug 2019 21:39:29 GMT\r\nPragma: no-cache\r\nServer: webcamXP 5\r\n\r\n 74.218.███.██ 8080 ████-74-218-███-██.se.biz.rr.com HTTP/1.1 200 OK\r\nConnection: close\r\nContent-Type: text/html; charset=utf-8\r\nContent-Length: 7413\r\nCache-control: no-cache, must revalidate\r\nDate: Wed, 07 Aug 2019 14:22:02 GMT\r\nExpires: Wed, 07 Aug 2019 14:22:02 GMT\r\nPragma: no-cache\r\nServer: webcamXP 5\r\n\r\n 208.83.██.205 9206 ████████████.joann.com HTTP/1.1 704 t\r\nServer: webcam XP\r\n\r\n 115.135.██.185 8086 HTTP/1.1 200 OK\r\nConnection: close\r\nContent-Type: text/html; charset=utf-8\r\nContent-Length: 2192\r\nCache-control: no-cache, must revalidate\r\nDate: Wed, 07 Aug 2019 06:49:20 GMT\r\nExpires: Wed, 07 Aug 2019 06:49:20 GMT\r\nPragma: no-cache\r\nServer: webcamXP 5\r\n\r\n 137.118.███.107 8080 137-118-███-███.wilkes.net HTTP/1.1 200 OK\r\nConnection: close\r\nContent-Type: text/html; charset=utf-8\r\nContent-Length: 2073\r\nCache-control: no-cache, must revalidate\r\nDate: Wed, 07 Aug 2019 12:37:54 GMT\r\nExpires: Wed, 07 Aug 2019 12:37:54 GMT\r\nPragma: no-cache\r\nServer: webcamXP 5\r\n\r\n 218.161.██.██ 8080 218-161-██-██.HINET-IP.hinet.net HTTP/1.1 200 OK\r\nConnection: close\r\nContent-Type: text/html; charset=utf-8\r\nContent-Length: 7431\r\nCache-control: no-cache, must revalidate\r\nDate: Mon, 05 Aug 2019 18:39:52 GMT\r\nExpires: Mon, 05 Aug 2019 18:39:52 GMT\r\nPragma: no-cache\r\nServer: webcamXP 5\r\n\r\n ... 92.78.██.███ 37215 ███-092-078-███-███.███.███.pools.vodafone-ip.de HTTP/1.1 200 OK\r\nConnection: close\r\nContent-Type: text/html; charset=utf-8\r\nContent-Length: 8163\r\nCache-control: no-cache, must revalidate\r\nDate: Wed, 07 Aug 2019 05:17:22 GMT\r\nExpires: Wed, 07 Aug 2019 05:17:22 GMT\r\nPragma: no-cache\r\nServer: webcamXP 5\r\n\r\n 85.157.██.███ 8080 ████████.netikka.fi HTTP/1.1 200 OK\r\nConnection: close\r\nContent-Type: text/html; charset=utf-8\r\nContent-Length: 7947\r\nCache-control: no-cache, must revalidate\r\nDate: Wed, 07 Aug 2019 00:25:41 GMT\r\nExpires: Wed, 07 Aug 2019 00:25:41 GMT\r\nPragma: no-cache\r\nServer: webcamXP 5\r\n\r\n 108.48.███.███ 8080 ████-108-48-███-███.washdc.fios.verizon.net HTTP/1.1 401 Unauthorized\r\nConnection: close\r\nContent-Length: 339\r\nCache-control: no-cache, must revalidate\r\nDate: Tue, 06 Aug 2019 22:40:21 GMT\r\nExpires: Tue, 06 Aug 2019 22:17:21 GMT\r\nPragma: no-cache\r\nServer: webcamXP\r\nWWW-Authenticate: Basic realm="webcamXP"\r\nContent-Type: text/html\r\n\r\n
Чтобы закрыть результаты, нажмите Q.
Если вы хотите видеть только несколько вариантов, вместо всех, есть способы опустить информацию. Для начала, давайте посмотрим как работает синтаксис в поиске.
~$ shodan search -h Usage: shodan search [OPTIONS] <search query> Search the Shodan database Options: --color / --no-color --fields TEXT List of properties to show in the search results. --limit INTEGER The number of search results that should be returned. Maximum: 1000 --separator TEXT The separator between the properties of the search results. -h, --help Show this message and exit.
К сожалению, справка не показывает весь список доступных полей для поиска, но у веб-сайта Shodan есть удобный список, гляньте сами.
Properties: asn [String] The autonomous system number (ex. "AS4837"). data [String] Contains the banner information for the service. ip [Integer] The IP address of the host as an integer. ip_str [String] The IP address of the host as a string. ipv6 [String] The IPv6 address of the host as a string. If this is present then the "ip" and "ip_str" fields wont be. port [Integer] The port number that the service is operating on. timestamp [String] The timestamp for when the banner was fetched from the device in the UTC timezone. Example: "2014-01-15T05:49:56.283713" hostnames [String[]] An array of strings containing all of the hostnames that have been assigned to the IP address for this device. domains [String[]] An array of strings containing the top-level domains for the hostnames of the device. This is a utility property in case you want to filter by TLD instead of subdomain. It is smart enough to handle global TLDs with several dots in the domain (ex. "co.uk") location [Object] An object containing all of the location information for the device. location.area_code [Integer]The area code for the device's location. Only available for the US. location.city [String] The name of the city where the device is located. location.country_code [String] The 2-letter country code for the device location. location.country_code3 [String] The 3-letter country code for the device location. location.country_name [String] The name of the country where the device is located. location.dma_code [Integer] The designated market area code for the area where the device is located. Only available for the US. location.latitude [Double] The latitude for the geolocation of the device. location.longitude [Double] The longitude for the geolocation of the device. location.postal_code [String] The postal code for the device's location. location.region_code [String] The name of the region where the device is located. opts [Object] Contains experimental and supplemental data for the service. This can include the SSL certificate, robots.txt and other raw information that hasn't yet been formalized into the Banner Specification. org [String] The name of the organization that is assigned the IP space for this device. isp [String] The ISP that is providing the organization with the IP space for this device. Consider this the "parent" of the organization in terms of IP ownership. os [String] The operating system that powers the device. transport [String] Either "udp" or "tcp" to indicate which IP transport protocol was used to fetch the information Optional Properties: uptime [Integer] The number of minutes that the device has been online. link [String] The network link type. Possible values are: "Ethernet or modem", "generic tunnel or VPN", "DSL", "IPIP or SIT", "SLIP", "IPSec or GRE", "VLAN", "jumbo Ethernet", "Google", "GIF", "PPTP", "loopback", "AX.25 radio modem". title [String] The title of the website as extracted from the HTML source. html [String] The raw HTML source for the website. product [String] The name of the product that generated the banner. version [String] The version of the product that generated the banner. devicetype [String] The type of device (webcam, router, etc.). info [String] Miscellaneous information that was extracted about the product. cpe [String] The relevant Common Platform Enumeration for the product or known vulnerabilities if available. For more information on CPE and the official dictionary of values visit the CPE Dictionary. SSL Properties: If the service uses SSL, such as HTTPS, then the banner will also contain a property called "ssl": ssl.cert [Object] The parsed certificate properties that includes information such as when it was issued, the SSL extensions, the issuer, subject etc. ssl.cipher [Object] Preferred cipher for the SSL connection ssl.chain [Array] An array of certificates, where each string is a PEM-encoded SSL certificate. This includes the user SSL certificate up to its root certificate. ssl.dhparams [Object] The Diffie-Hellman parameters if available: "prime", "public_key", "bits", "generator" and an optional "fingerprint" if we know which program generated these parameters. ssl.versions [Array] A list of SSL versions that are supported by the server. If a version isnt supported the value is prefixed with a "-". Example: ["TLSv1", "-SSLv2"] means that the server supports TLSv1 but doesnt support SSLv2.
Если бы мы хотели посмотреть только IP, номер порта, название организации, и имя хостов для IP адресов, мы могли бы использовать команду -fields.
~$ shodan search --fields ip_str,port,org,hostnames webcamxp 81.133.███.███ 8080 BT ████81-133-███-███.in-addr.btopenworld.com 74.218.███.██ 8080 Spectrum Business ████-74-218-███-██.se.biz.rr.com 208.83.██.███ 9206 Jo-ann Stores, LLC ████████████.joann.com 115.135.██.███ 8086 TM Net 137.118.███.███ 8080 Wilkes Communications 137-118-███-███.wilkes.net 218.161.██.██ 8080 HiNet 218-161-██-██.HINET-IP.hinet.net ... 92.78.██.███ 37215 Vodafone DSL ███-092-078-███-███.███.███.pools.vodafone-ip.de 85.157.██.███ 8080 Elisa Oyj ████████.netikka.fi 108.48.███.███ 8080 Verizon Fios ████-108-48-███-███.washdc.fios.verizon.net (END)
Посмотрите на результат и найдите камеры, которые хотите протестировать. Вбейте их доменное имя в браузер и, вы получите моментальный доступ.
Хотя может быть интересно и увлекательно наблюдать за тем, что происходит в этих камерах без ведома людей по всему миру, вы, вероятно, захотите быть более конкретными в поиске.
Попробуйте стандартные имена и пароли
Хотя некоторые веб-камеры Shodan показывают, что вы не защищены, многие из них требуют аутентификации. Чтобы попытаться получить доступ без особых усилий, попробуйте имя пользователя и пароль по умолчанию для ПО камеры. Ниже я собрал краткий список имен пользователя и паролей по умолчанию для некоторых из наиболее часто используемых веб-камер.
- ACTi: admin/123456 or Admin/123456
- Axis (traditional): root/pass,
- Axis (new): requires password creation during first login
- Cisco: No default password, requires creation during first login
- Grandstream: admin/admin
- IQinVision: root/system
- Mobotix: admin/meinsm
- Panasonic: admin/12345
- Samsung Electronics: root/root or admin/4321
- Samsung Techwin (old): admin/1111111
- Samsung Techwin (new): admin/4321
- Sony: admin/admin
- TRENDnet: admin/admin
- Toshiba: root/ikwd
- Vivotek: root/<blank>
- WebcamXP: admin/ <blank>
Шаг четвертый. Поиск по местоположению
Теперь, когда мы знаем как искать камеры и вошли в них, используя имена пользователей и пароли по умолчанию, давайте уточним и попробуем найти веб-камеры в определенном местоположении. Например, если нам интересны веб-камеры производителя WebcamXP в Австралии, мы можем найти их, введя webcamxp country: AU в поле поиска на веб-сайте Shodan.
Итак, как бы мы сделали расширенный поиск в командной строке? Вот краткий список некоторых вещей, которые вы можете искать в Shodan через неё:
after: Search by a timeframe delimiter for things after a certain date. asn: Search by the autonomous system number. before: Search by a timeframe delimiter for things before a certain date. city: Search by the city where the device is located. country: Search by the country where the device is located (two-letter code). device: Search by the device or network's name. devicetype: Search by the type of device (webcam, router, etc.). domain: Search an array of strings containing the top-level domains for the hostnames of the device. geo: Search by the coordinates where the device is located. hash: Search by the banner hash. has_screenshot:true Search for devices where a screenshot is present. hostname: Search by the hostname that has been assigned to the IP address for the device. ip: Search by the IP address of the host as an integer. ip_str: Search by the IP address of the host as a string. ipv6: Search by the IPv6 address of the host as a string. isp: Search by the ISP that is providing the organization with the IP space for the device. link: Search by the network link type. Possible values are: "Ethernet or modem", "generic tunnel or VPN", "DSL", "IPIP or SIT", "SLIP", "IPSec or GRE", "VLAN", "jumbo Ethernet", "Google", "GIF", "PPTP", "loopback", "AX.25 radio modem". net: Filter by network range or IP in CIDR notation. port: Find devices based on the open ports/ software. org: Search for devices that are on a specific organization’s network. os: Search by the operating system that powers the device. state: Search by the state where the device is located (two-letter code). title: Search by text within the title of the website as extracted from the HTML source.
Если у вас нет платной подписки, вы не можете использовать API Shodan для выполнения детального поиска. Но вы все равно можете выполнить расширенный поиск на веб-сайте Shodan с обычными ограничениями для бесплатных пользователей.
Как сузить поиск до города?
Как вы уже поняли, мы можем сузить поиск даже до города. Давайте посмотрим что мы можем найти в столице Австралии - Сиднее: webcamxp city:sydney
Для командной строки это будет лишь строчка кода — но за эту строчку кода придется заплатить.
~$ shodan search webcamxp city:sydney ~$ shodan search device:webcamxp city:sydney
На сайте Shodan, поисковик показывает следующие результаты:

Когда мы кликаем на одну из этих ссылок мы и вправду оказываемся в Сиднее!

