Apple Airport ACPP Authentication Scanner - Metasploit
This page contains detailed information about how to use the auxiliary/scanner/acpp/login metasploit module. For list of all metasploit modules, visit the Metasploit Module Library.
Module Overview
Name: Apple Airport ACPP Authentication Scanner
Module: auxiliary/scanner/acpp/login
Source code: modules/auxiliary/scanner/acpp/login.rb
Disclosure date: -
Last modification time: 2021-08-31 16:50:37 +0000
Supported architecture(s): -
Supported platform(s): -
Target service / protocol: -
Target network port(s): 5009
List of CVEs: CVE-2003-0270
This module attempts to authenticate to an Apple Airport using its proprietary and largely undocumented protocol known only as ACPP.
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
This module is a scanner module, and is capable of testing against multiple hosts.
msf > use auxiliary/scanner/acpp/login
msf auxiliary(login) > show options
... show and set options ...
msf auxiliary(login) > set RHOSTS ip-range
msf auxiliary(login) > exploit
Other examples of setting the RHOSTS option:
Example 1:
msf auxiliary(login) > set RHOSTS 192.168.1.3-192.168.1.200
Example 2:
msf auxiliary(login) > set RHOSTS 192.168.1.1/24
Example 3:
msf auxiliary(login) > set RHOSTS file:/tmp/ip_list.txt
Required Options
- RHOSTS: The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
Knowledge Base
Vulnerable Application
ACPP is an undocumented and proprietary Apple protocol found in Airport products which protects the credentials used to administer the device. This module attempts exploit a weak encryption mechanism (fixed XOR key) by brute forcing the password via a dictionary attack or specific password.
More information can be found on the Rapid7 Vulnerability & Exploit Database page
Verification Steps
- Start msfconsole
- Do:
use auxiliary/scanner/acpp/login
- Do:
set RHOSTS [ip]
- Do:
run
Scenarios
Apple AirPort Extreme 802.11g
msf > use auxiliary/scanner/acpp/login
msf auxiliary(scanner/acpp/login) > show options
msf auxiliary(scanner/acpp/login) > set RHOSTS 1.1.1.1
RHOSTS => 1.1.1.1
msf auxiliary(scanner/acpp/login) > set PASSWORD myPassword
PASSWORD => myPassword
msf auxiliary(scanner/acpp/login) > run
[*] 1.1.1.1:5009 - 1.1.1.1:5009 - Starting ACPP login sweep
[*] 1.1.1.1:5009 - 1.1.1.1:5009 - ACPP Login Successful: myPassword
Go back to menu.
Msfconsole Usage
Here is how the scanner/acpp/login auxiliary module looks in the msfconsole:
msf6 > use auxiliary/scanner/acpp/login
msf6 auxiliary(scanner/acpp/login) > show info
Name: Apple Airport ACPP Authentication Scanner
Module: auxiliary/scanner/acpp/login
License: Metasploit Framework License (BSD)
Rank: Normal
Provided by:
Jon Hart <[email protected]>
Check supported:
No
Basic options:
Name Current Setting Required Description
---- --------------- -------- -----------
BLANK_PASSWORDS false no Try blank passwords for all users
BRUTEFORCE_SPEED 5 yes How fast to bruteforce, from 0 to 5
DB_ALL_PASS false no Add all passwords in the current database to the list
PASSWORD no A specific password to authenticate with
PASS_FILE no File containing passwords, one per line
RHOSTS yes The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
RPORT 5009 yes The target port (TCP)
STOP_ON_SUCCESS false yes Stop guessing when a credential works for a host
THREADS 1 yes The number of concurrent threads (max one per host)
VERBOSE true yes Whether to print output for all attempts
Description:
This module attempts to authenticate to an Apple Airport using its
proprietary and largely undocumented protocol known only as ACPP.
References:
https://nvd.nist.gov/vuln/detail/CVE-2003-0270
Module Options
This is a complete list of options available in the scanner/acpp/login auxiliary module:
msf6 auxiliary(scanner/acpp/login) > show options
Module options (auxiliary/scanner/acpp/login):
Name Current Setting Required Description
---- --------------- -------- -----------
BLANK_PASSWORDS false no Try blank passwords for all users
BRUTEFORCE_SPEED 5 yes How fast to bruteforce, from 0 to 5
DB_ALL_PASS false no Add all passwords in the current database to the list
PASSWORD no A specific password to authenticate with
PASS_FILE no File containing passwords, one per line
RHOSTS yes The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
RPORT 5009 yes The target port (TCP)
STOP_ON_SUCCESS false yes Stop guessing when a credential works for a host
THREADS 1 yes The number of concurrent threads (max one per host)
VERBOSE true yes Whether to print output for all attempts
Advanced Options
Here is a complete list of advanced options supported by the scanner/acpp/login auxiliary module:
msf6 auxiliary(scanner/acpp/login) > show advanced
Module advanced options (auxiliary/scanner/acpp/login):
Name Current Setting Required Description
---- --------------- -------- -----------
CHOST no The local client address
CPORT no The local client port
ConnectTimeout 10 yes Maximum number of seconds to establish a TCP connection
MaxGuessesPerService 0 no Maximum number of credentials to try per service instance. If set to zero or a non-number, this option will not be used.
MaxGuessesPerUser 0 no Maximum guesses for a particular username for the service instance. Note that users are considered unique among different services, so a user at 10.1.1.1:22 is different from one at 10.2.2.2:
22, and both will be tried up to the MaxGuessesPerUser limit. If set to zero or a non-number, this option will not be used.
MaxMinutesPerService 0 no Maximum time in minutes to bruteforce the service instance. If set to zero or a non-number, this option will not be used.
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
REMOVE_PASS_FILE false yes Automatically delete the PASS_FILE on module completion
REMOVE_USERPASS_FILE false yes Automatically delete the USERPASS_FILE on module completion
REMOVE_USER_FILE false yes Automatically delete the USER_FILE on module completion
SSL false no Negotiate SSL/TLS for outgoing connections
SSLCipher no String for SSL cipher - "DHE-RSA-AES256-SHA" or "ADH"
SSLVerifyMode PEER no SSL verification method (Accepted: CLIENT_ONCE, FAIL_IF_NO_PEER_CERT, NONE, PEER)
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)
ShowProgress true yes Display progress messages during a scan
ShowProgressPercent 10 yes The interval in percent that progress should be shown
TRANSITION_DELAY 0 no Amount of time (in minutes) to delay before transitioning to the next user in the array (or password when PASSWORD_SPRAY=true)
WORKSPACE no Specify the workspace for this module
Auxiliary Actions
This is a list of all auxiliary actions that the scanner/acpp/login module can do:
msf6 auxiliary(scanner/acpp/login) > show actions
Auxiliary actions:
Name Description
---- -----------
Evasion Options
Here is the full list of possible evasion options supported by the scanner/acpp/login auxiliary module in order to evade defenses (e.g. Antivirus, EDR, Firewall, NIDS etc.):
msf6 auxiliary(scanner/acpp/login) > show evasion
Module evasion options:
Name Current Setting Required Description
---- --------------- -------- -----------
TCP::max_send_size 0 no Maxiumum tcp segment size. (0 = disable)
TCP::send_delay 0 no Delays inserted before every send. (0 = disable)
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.
<IP>:<RPORT> - ACPP LOGIN FAILED: <PASSWORD> (<RESULT.STATUS>: <RESULT.PROOF>)
Here is a relevant code snippet related to the "<IP>:<RPORT> - ACPP LOGIN FAILED: <PASSWORD> (<RESULT.STATUS>: <RESULT.PROOF>)" error message:
99: name: 'Fixed XOR key used to encrypt passwords',
100: info: "Successful authentication with '#{password}'",
101: refs: references
102: )
103: else
104: invalidate_login(credential_data)
105: vprint_error("#{ip}:#{rport} - ACPP LOGIN FAILED: #{password} (#{result.status}: #{result.proof})")
106: end
107: end
108: end
109: end
Go back to menu.
Related Pull Requests
- #14696 Merged Pull Request: Zeitwerk rex folder
- #12022 Merged Pull Request: Deregister PASSWORD_SPRAY option for LoginScanner modules
- #8716 Merged Pull Request: Print_Status -> Print_Good (And OCD bits 'n bobs)
- #8338 Merged Pull Request: Fix msf/core and self.class msftidy warnings
- #6655 Merged Pull Request: use MetasploitModule as a class name
- #6648 Merged Pull Request: Change metasploit class names
- #6014 Merged Pull Request: Related to #4803, Update LoginScanner modules to have into account TCP advanced options
- #4737 Merged Pull Request: Preserve Context in LoginScanner socket calls, fixes #4723
- #4582 Merged Pull Request: Minimal Apple Airport Admin protocol (ACPP?) support, login brute forcing
References
See Also
Check also the following modules related to this module:
Authors
- Jon Hart <jon_hart[at]rapid7.com>
Version
This page has been produced using Metasploit Framework version 6.1.24-dev. For more modules, visit the Metasploit Module Library.
Go back to menu.