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

Самый страшный поисковик в интернете, “черный 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 показывают, что вы не защищены, многие из них требуют аутентификации. Чтобы попытаться получить доступ без особых усилий, попробуйте имя пользователя и пароль по умолчанию для ПО камеры. Ниже я собрал краткий список имен пользователя и паролей по умолчанию для некоторых из наиболее часто используемых веб-камер.

  • ACTiadmin/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
  • Grandstreamadmin/admin
  • IQinVisionroot/system
  • Mobotixadmin/meinsm
  • Panasonicadmin/12345
  • Samsung Electronicsroot/root or admin/4321
  • Samsung Techwin (old)admin/1111111
  • Samsung Techwin (new)admin/4321
  • Sonyadmin/admin
  • TRENDnetadmin/admin
  • Toshibaroot/ikwd
  • Vivotekroot/<blank>
  • WebcamXPadmin/ <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, поисковик показывает следующие результаты:

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



Report Page