Поисковые системы индексируют веб-сайты в Интернете, чтобы вы могли находить их более эффективно, и то же самое верно для устройств, подключенных к Интернету. Shodan индексирует такие устройства, как веб-камеры, принтеры и даже промышленные элементы управления, в одну удобную для поиска базу данных, предоставляя хакерам доступ к уязвимым устройствам онлайн по всему миру. И вы можете искать в его базе данных через его веб-сайт или библиотеку командной строки. Так вот сегодня мы узнаем как найти уязвимые веб-камеры по всему миру.
Вход в Shodan
Во-первых, независимо от того, используете ли вы веб-сайт или командную строку, вам необходимо войти на сайт shodanhq.com в веб-браузере. Хотя вы можете использовать Shodan без входа в систему, Shodan ограничивает некоторые из своих возможностей только зарегистрированными пользователями. Например, вы можете просматривать только одну страницу результатов поиска без входа в систему. И вы можете видеть только две страницы результатов поиска при входе в бесплатную учетную запись. Что касается командной строки, вам понадобится ваш ключ API для выполнения некоторых запросов.
Настройка Shodan через командную строку
Особенно полезной функцией Shodan является то, что вам не нужно открывать веб-браузер, чтобы использовать его, если вы знаете свой ключ API. Чтобы установить Shodan, вам понадобится работающая установка Python. Затем вы можете ввести следующее в окне терминала, чтобы установить библиотеку Shodan.
~$ pip install shodan
Collecting shodan
Downloading https://files.pythonhosted.org/packages/22/93/22500512fd9d1799361505a1537a659dbcdd5002192980ad492dc5262717/shodan-1.14.0.tar.gz (46kB)
100% |████████████████████████████████| 51kB 987kB/s
Requirement already satisfied: XlsxWriter in /usr/lib/python2.7/dist-packages (from shodan) (1.1.2)
Requirement already satisfied: click in /usr/lib/python2.7/dist-packages (from shodan) (7.0)
Collecting click-plugins (from shodan)
Downloading https://files.pythonhosted.org/packages/e9/da/824b92d9942f4e472702488857914bdd50f73021efea15b4cad9aca8ecef/click_plugins-1.1.1-py2.py3-none-any.whl
Requirement already satisfied: colorama in /usr/lib/python2.7/dist-packages (from shodan) (0.3.7)
Requirement already satisfied: requests>=2.2.1 in /usr/lib/python2.7/dist-packages (from shodan) (2.21.0)
Building wheels for collected packages: shodan
Running setup.py bdist_wheel for shodan ... done
Stored in directory: /root/.cache/pip/wheels/fb/99/c7/f763e695efe05966126e1a114ef7241dc636dca3662ee29883
Successfully built shodan
Installing collected packages: click-plugins, shodan
Successfully installed click-plugins-1.1.1 shodan-1.14.0
Затем вы можете увидеть все доступные параметры -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.
Эти элементы управления довольно просты, но не все из них работают без подключения к вашему API-ключу Shodan. В веб-браузере войдите в свою учетную запись Shodan, затем перейдите в «Моя учетная запись», где вы увидите свой уникальный ключ API. Скопируйте его, затем используйте команду инициализации для подключения ключа.
~$ shodan init XXXXxxxxXXXXxxXxXXXxXxxXxxxXXXxX
Successfully initialized
Поиск доступных веб-камер
Есть много способов найти веб-камеры на Shodan. Обычно хорошим началом является использование имени производителя веб-камеры или сервера веб-камеры. 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
(END)
Чтобы выйти из результатов, нажмите 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.
Итак, если бы мы искали webcamxp country:AU напрямую на веб-сайте, чтобы сделать это из командной строки, вы бы отформатировали одним из способов ниже. Однако, если вы не пользуетесь платным тарифным планом, вы не сможете использовать API Shodan для выполнения подробного поиска, как мы пытаемся сделать здесь. Но вы по-прежнему можете выполнять расширенный поиск на веб-сайте Shodan с обычными ограничениями для бесплатных пользователей.
~$ shodan search webcamxp country:AU
~$ shodan search device:webcamxp country:AU
На веб-сайте поиск webcamxp country:AU выведет список всех WebcamXP в Австралии, которые доступны в Интернете, в индексе Shodan, как показано ниже.
Ограничение поиска веб-камер городом
Чтобы быть еще более конкретным, мы можем сузить наш поиск до отдельного города. Давайте посмотрим, что мы можем найти в Сиднее, Австралия, введя webcamxp city:sydney в строку поиска веб-сайта. Для командной строки это будет выглядеть как одна из следующих команд, но это платная функция с API.
~$ shodan search webcamxp city:sydney
~$ shodan search device:webcamxp city:sydney
На веб-сайте Shodan поиск дает следующие результаты.
Когда мы нажимаем на одну из этих ссылок, мы оказываемся на чьем-то заднем дворе в Сиднее, Австралия!
Поиск веб-камер по долготе и широте
Shodan даже позволяет нам быть очень конкретными при поиске устройств с доступом в Интернет. В некоторых случаях мы можем указать долготу и широту устройств, которые хотим найти.
В этом случае мы будем искать камеры WebcamXP на долготе и широте (-37,81, 144,96) города Мельбурн, Австралия. Когда мы ищем, мы получаем список всех WebcamXP в этих координатах на земном шаре. Мы должны использовать ключевое слово geo, за которым следует долгота и широта. Итак, в строке поиска используйте webcamxp geo: -37,81,144,96. Опять же, в интерфейсе командной строки, который является платной функцией, это будет выглядеть следующим образом:
~$ shodan search webcamxp geo:-37.81,144.96
~$ shodan search device:webcamxp geo:-37.81,144.96
Когда мы получаем это конкретное, на веб-сайте Shodan он находит только четыре камеры WebcamXP. Нажмите на один, и мы снова обнаружим, что у нас есть частная веб-камера с чьей-то камерой на заднем дворе в Мельбурне, Австралия.
Shodan из командной строки
Что-то, что мы можем сделать из интерфейса командной строки, чего мы не можем сделать с веб-сайта, — это поиск информации о хосте. Например, мы можем запустить команду shodan myip, чтобы распечатать наш внешний IP-адрес.
~$ shodan myip
174.███.██.███
Как только мы это узнаем, мы можем искать информацию в Shodan, выполнив команду host.
~$ shodan host 174.███.██.███
174.███.██.███
Hostnames: cpe-174-███-██-███.socal.res.rr.com
Country: United States
Organization: Spectrum
Updated: 2019-08-02T23:04:59.182949
Number of open ports: 1
Ports:
80/tcp
Заключение
Я надеюсь, что эта короткая демонстрация возможностей Shodan подстегнет ваше воображение изобретательными способами найти частные веб-камеры в любой точке земного шара! Если вам не терпится найти веб-камеры на Shodan, вы можете использовать такой веб-сайт, как Insecam, для просмотра доступных веб-камер, которые вы можете посмотреть прямо сейчас. Например, вы можете просмотреть все камеры WebcamXP, на которых есть изображения.