Самый страшный поисковик в интернете, “черный Google” или как найти уязвимые веб-камеры по всему миру используя Shodan

SSHMAN

Journalist
Сообщения
47
Оценка реакций
47
Поисковики индексируют как веб-сайты, чтобы их было проще найти, так и подключенные к интернету устройства.

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

Вы можете найти эту базу данных через командную строку.

В этом браузере можно автоматизировать большую часть работы. Вместо сканирования всей сети, взломщики могут настроить поисковик так, чтобы он искал потенциальных жертв.

Встроенная библиотека Python позволяет быстро писать скрипты которые загружаются в определенный реестр, в зависимости от подключенных устройств.

Охота за такими устройствами - все равно что найти все страницы в интернете на одну тему. Вместо поиска этих страниц самому, вы можете ввести определенный термин в поисковик чтобы получить лучшие результаты. То же самое и с подключенными устройствами, вы можете удивиться!

Шаг первый. Вход в Shodan
Во первых, вне зависимости от того, что вы используете, браузер или командную строку, вам требуется войти в

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

. Вы все ещё можете использовать 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, поисковик показывает следующие результаты:


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