Apple TV Video Remote Control - Metasploit


This page contains detailed information about how to use the auxiliary/admin/appletv/appletv_display_video metasploit module. For list of all metasploit modules, visit the Metasploit Module Library.

Module Overview


Name: Apple TV Video Remote Control
Module: auxiliary/admin/appletv/appletv_display_video
Source code: modules/auxiliary/admin/appletv/appletv_display_video.rb
Disclosure date: -
Last modification time: 2017-07-24 06:26:21 +0000
Supported architecture(s): -
Supported platform(s): -
Target service / protocol: http, https
Target network port(s): 80, 443, 3000, 7000, 8000, 8008, 8080, 8443, 8880, 8888
List of CVEs: -

This module plays a video on an AppleTV device. Note that AppleTV can be somewhat picky about the server that hosts the video. Tested servers include default IIS, default Apache, and Ruby's WEBrick. For WEBrick, the default MIME list may need to be updated, depending on what media file is to be played. Python SimpleHTTPServer is not recommended. Also, if you're playing a video, the URL must be an IP address. Some AppleTV devices are actually password-protected; in that case please set the PASSWORD datastore option. For password brute forcing, please see the module auxiliary/scanner/http/appletv_login.

Module Ranking and Traits


Module Ranking:

  • normal: The exploit is otherwise reliable, but depends on a specific version and can't (or doesn't) reliably autodetect. More information about ranking can be found here.

Basic Usage


msf > use auxiliary/admin/appletv/appletv_display_video
msf auxiliary(appletv_display_video) > show targets
    ... a list of targets ...
msf auxiliary(appletv_display_video) > set TARGET target-id
msf auxiliary(appletv_display_video) > show options
    ... show and set options ...
msf auxiliary(appletv_display_video) > exploit

Required Options


  • RHOSTS: The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'

  • URL: URL of video to show. Must use an IP address

Go back to menu.

Msfconsole Usage


Here is how the admin/appletv/appletv_display_video auxiliary module looks in the msfconsole:

msf6 > use auxiliary/admin/appletv/appletv_display_video

msf6 auxiliary(admin/appletv/appletv_display_video) > show info

       Name: Apple TV Video Remote Control
     Module: auxiliary/admin/appletv/appletv_display_video
    License: Metasploit Framework License (BSD)
       Rank: Normal

Provided by:
  0a29406d9794e4f9b30b3c5d6702c708
  sinn3r <[email protected]>

Check supported:
  No

Basic options:
  Name          Current Setting  Required  Description
  ----          ---------------  --------  -----------
  HttpPassword                   no        The password for AppleTV AirPlay
  Proxies                        no        A proxy chain of format type:host:port[,type:host:port][...]
  RHOSTS                         yes       The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
  RPORT         7000             yes       The target port (TCP)
  SSL           false            no        Negotiate SSL/TLS for outgoing connections
  TIME          60               yes       Time in seconds to show the video
  URL                            yes       URL of video to show. Must use an IP address

Description:
  This module plays a video on an AppleTV device. Note that AppleTV 
  can be somewhat picky about the server that hosts the video. Tested 
  servers include default IIS, default Apache, and Ruby's WEBrick. For 
  WEBrick, the default MIME list may need to be updated, depending on 
  what media file is to be played. Python SimpleHTTPServer is not 
  recommended. Also, if you're playing a video, the URL must be an IP 
  address. Some AppleTV devices are actually password-protected; in 
  that case please set the PASSWORD datastore option. For password 
  brute forcing, please see the module 
  auxiliary/scanner/http/appletv_login.

References:
  http://nto.github.io/AirPlay.html

Module Options


This is a complete list of options available in the admin/appletv/appletv_display_video auxiliary module:

msf6 auxiliary(admin/appletv/appletv_display_video) > show options

Module options (auxiliary/admin/appletv/appletv_display_video):

   Name          Current Setting  Required  Description
   ----          ---------------  --------  -----------
   HttpPassword                   no        The password for AppleTV AirPlay
   Proxies                        no        A proxy chain of format type:host:port[,type:host:port][...]
   RHOSTS                         yes       The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
   RPORT         7000             yes       The target port (TCP)
   SSL           false            no        Negotiate SSL/TLS for outgoing connections
   TIME          60               yes       Time in seconds to show the video
   URL                            yes       URL of video to show. Must use an IP address

Advanced Options


Here is a complete list of advanced options supported by the admin/appletv/appletv_display_video auxiliary module:

msf6 auxiliary(admin/appletv/appletv_display_video) > show advanced

Module advanced options (auxiliary/admin/appletv/appletv_display_video):

   Name                  Current Setting                                     Required  Description
   ----                  ---------------                                     --------  -----------
   FingerprintCheck      true                                                no        Conduct a pre-exploit fingerprint verification
   HttpClientTimeout                                                         no        HTTP connection and receive timeout
   HttpRawHeaders                                                            no        Path to ERB-templatized raw headers to append to existing headers
   HttpTrace             false                                               no        Show the raw HTTP requests and responses
   HttpTraceColors       red/blu                                             no        HTTP request and response colors for HttpTrace (unset to disable)
   HttpTraceHeadersOnly  false                                               no        Show HTTP headers only in HttpTrace
   HttpUsername          AirPlay                                             no        The HTTP username to specify for authentication
   SSLVersion            Auto                                                yes       Specify the version of SSL/TLS to be used (Auto, TLS and SSL23 are auto-negotiate) (Accepted: Auto, TLS, SSL23, SSL3, TLS1, TLS1.1, TLS1.2)
   UserAgent             Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)  no        The User-Agent header to use for all requests
   VERBOSE               false                                               no        Enable detailed status messages
   WORKSPACE                                                                 no        Specify the workspace for this module

Auxiliary Actions


This is a list of all auxiliary actions that the admin/appletv/appletv_display_video module can do:

msf6 auxiliary(admin/appletv/appletv_display_video) > show actions

Auxiliary actions:

   Name  Description
   ----  -----------

Evasion Options


Here is the full list of possible evasion options supported by the admin/appletv/appletv_display_video auxiliary module in order to evade defenses (e.g. Antivirus, EDR, Firewall, NIDS etc.):

msf6 auxiliary(admin/appletv/appletv_display_video) > show evasion

Module evasion options:

   Name                          Current Setting  Required  Description
   ----                          ---------------  --------  -----------
   HTTP::version_random_invalid  false            no        Use a random invalid, HTTP version for request
   HTTP::version_random_valid    false            no        Use a random, but valid, HTTP version for request

Go back to menu.

Error Messages


This module may fail with the following error messages:

Check for the possible causes from the code snippets below found in the module source code. This can often times help in identifying the root cause of the problem.

URL


Here is a relevant code snippet related to the "URL" error message:

95:	  # Checks the URI datastore option. AppleTV is sort of picky about the URI. It's better to
96:	  # always supply an IP instead of a domain.
97:	  #
98:	  def validate_source!(uri)
99:	    unless Rex::Socket.is_ipv4?(URI(uri).host) # Same trick in target_uri form HttpClient
100:	      raise Msf::OptionValidateError.new(['URL'])
101:	    end
102:	  end
103:	
104:	
105:	  #

The request failed due to an unknown reason


Here is a relevant code snippet related to the "The request failed due to an unknown reason" error message:

127:	    if !res
128:	      print_status("The connection timed out")
129:	    elsif res.code == 200
130:	      print_status("Received HTTP 200")
131:	    else
132:	      print_error("The request failed due to an unknown reason")
133:	    end
134:	  end
135:	
136:	
137:	  #

Go back to menu.


References


See Also


Check also the following modules related to this module:

Authors


  • 0a29406d9794e4f9b30b3c5d6702c708
  • sinn3r

Version


This page has been produced using Metasploit Framework version 6.1.27-dev. For more modules, visit the Metasploit Module Library.

Go back to menu.