Skip to content

Commit aba43d3

Browse files
authored
[enhancement] Improve CLI help text and add additional listener options (#96)
* feat: add --path-ip argument for exploit path generation in listener group * enhancement: improve argument help descriptions and add SMB port logging in coercion
1 parent 1f57b53 commit aba43d3

2 files changed

Lines changed: 22 additions & 17 deletions

File tree

coercer/__main__.py

100755100644
Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ def parseArgs():
4040
mode_scan_advanced_config.add_argument("--export-xlsx", default=None, type=str, help="Export results to specified XLSX file.")
4141
mode_scan_advanced_config.add_argument("--export-sqlite", default=None, type=str, help="Export results to specified SQLITE3 database file.")
4242
mode_scan_advanced_config.add_argument("--delay", default=None, type=int, help="Delay between attempts (in seconds)")
43-
mode_scan_advanced_config.add_argument("--min-http-port", default=64000, type=int, help="Verbose mode (default: False)")
44-
mode_scan_advanced_config.add_argument("--max-http-port", default=65000, type=int, help="Verbose mode (default: False)")
43+
mode_scan_advanced_config.add_argument("--min-http-port", default=64000, type=int, help="Minimum HTTP port for listening (default: 64000)")
44+
mode_scan_advanced_config.add_argument("--max-http-port", default=65000, type=int, help="Maximum HTTP port for listening (default: 65000)")
4545
mode_scan_advanced_config.add_argument("--http-port", default=80, type=int, help="HTTP port (default: 80)")
4646
mode_scan_advanced_config.add_argument("--smb-port", default=445, type=int, help="SMB port (default: 445)")
4747
mode_scan_advanced_config.add_argument("--dce-port", default=135, type=int, help="DCERPC port (default: 135)")
@@ -50,10 +50,10 @@ def parseArgs():
5050
mode_scan_advanced_config.add_argument("--stop-on-ntlm-auth", default=False, action="store_true", help="Move on to next target on successful NTLM authentication.")
5151
# Filters
5252
mode_scan_filters = mode_scan.add_argument_group("Filtering")
53-
mode_scan_filters.add_argument("--filter-method-name", default=[], action='append', type=str, help="")
54-
mode_scan_filters.add_argument("--filter-protocol-name", default=[], action='append', type=str, help="")
55-
mode_scan_filters.add_argument("--filter-pipe-name", default=[], action='append', type=str, help="")
56-
mode_scan_filters.add_argument("--filter-transport-name", default=["msrpc", "dcerpc"], choices=["msrpc", "dcerpc"], nargs='*', type=str, help="")
53+
mode_scan_filters.add_argument("--filter-method-name", default=[], action='append', type=str, help="Filter by method name")
54+
mode_scan_filters.add_argument("--filter-protocol-name", default=[], action='append', type=str, help="Filter by protocol name")
55+
mode_scan_filters.add_argument("--filter-pipe-name", default=[], action='append', type=str, help="Filter by pipe name")
56+
mode_scan_filters.add_argument("--filter-transport-name", default=["msrpc", "dcerpc"], choices=["msrpc", "dcerpc"], nargs='*', type=str, help="Filter by transport name")
5757
# Credentials
5858
mode_scan_credentials = mode_scan.add_argument_group("Credentials")
5959
mode_scan_credentials.add_argument("-u", "--username", default="", help="Username to authenticate to the remote machine.")
@@ -87,18 +87,19 @@ def parseArgs():
8787
mode_fuzz_advanced_config.add_argument("--export-xlsx", default=None, type=str, help="Export results to specified XLSX file.")
8888
mode_fuzz_advanced_config.add_argument("--export-sqlite", default=None, type=str, help="Export results to specified SQLITE3 database file.")
8989
mode_fuzz_advanced_config.add_argument("--delay", default=None, type=int, help="Delay between attempts (in seconds)")
90-
mode_fuzz_advanced_config.add_argument("--min-http-port", default=64000, type=int, help="Verbose mode (default: False)")
91-
mode_fuzz_advanced_config.add_argument("--max-http-port", default=65000, type=int, help="Verbose mode (default: False)")
90+
mode_fuzz_advanced_config.add_argument("--min-http-port", default=64000, type=int, help="Minimum HTTP port for listening (default: 64000)")
91+
mode_fuzz_advanced_config.add_argument("--max-http-port", default=65000, type=int, help="Maximum HTTP port for listening (default: 65000)")
92+
mode_fuzz_advanced_config.add_argument("--http-port", default=80, type=int, help="HTTP port (default: 80)")
9293
mode_fuzz_advanced_config.add_argument("--smb-port", default=445, type=int, help="SMB port (default: 445)")
9394
mode_fuzz_advanced_config.add_argument("--dce-port", default=135, type=int, help="DCERPC port (default: 135)")
9495
mode_fuzz_advanced_config.add_argument("--dce-ports", default=[], nargs='+', type=int, help="DCERPC ports")
9596
mode_fuzz_advanced_config.add_argument("--auth-type", default=None, type=str, help="Desired authentication type ('smb' or 'http').")
9697
# Filters
9798
mode_fuzz_filters = mode_fuzz.add_argument_group("Filtering")
98-
mode_fuzz_filters.add_argument("--filter-method-name", default=[], action='append', type=str, help="")
99-
mode_fuzz_filters.add_argument("--filter-protocol-name", default=[], action='append', type=str, help="")
100-
mode_fuzz_filters.add_argument("--filter-pipe-name", default=[], action='append', type=str, help="")
101-
mode_fuzz_filters.add_argument("--filter-transport-name", default=["msrpc", "dcerpc"], choices=["msrpc", "dcerpc"], nargs='*', type=str, help="")
99+
mode_fuzz_filters.add_argument("--filter-method-name", default=[], action='append', type=str, help="Filter by method name")
100+
mode_fuzz_filters.add_argument("--filter-protocol-name", default=[], action='append', type=str, help="Filter by protocol name")
101+
mode_fuzz_filters.add_argument("--filter-pipe-name", default=[], action='append', type=str, help="Filter by pipe name")
102+
mode_fuzz_filters.add_argument("--filter-transport-name", default=["msrpc", "dcerpc"], choices=["msrpc", "dcerpc"], nargs='*', type=str, help="Filter by transport name")
102103
# Credentials
103104
mode_fuzz_credentials = mode_fuzz.add_argument_group("Credentials")
104105
mode_fuzz_credentials.add_argument("--only-known-exploit-paths", action="store_true", default=False, help="Only test known exploit paths for each functions")
@@ -138,10 +139,10 @@ def parseArgs():
138139
mode_coerce_advanced_config.add_argument("--auth-type", default=None, type=str, help="Desired authentication type ('smb' or 'http').")
139140
# Filters
140141
mode_coerce_filters = mode_coerce.add_argument_group("Filtering")
141-
mode_coerce_filters.add_argument("--filter-method-name", default=[], action='append', type=str, help="")
142-
mode_coerce_filters.add_argument("--filter-protocol-name", default=[], action='append', type=str, help="")
143-
mode_coerce_filters.add_argument("--filter-pipe-name", default=[], action='append', type=str, help="")
144-
mode_coerce_filters.add_argument("--filter-transport-name", default=["msrpc", "dcerpc"], choices=["msrpc", "dcerpc"], nargs='*', type=str, help="")
142+
mode_coerce_filters.add_argument("--filter-method-name", default=[], action='append', type=str, help="Filter by method name")
143+
mode_coerce_filters.add_argument("--filter-protocol-name", default=[], action='append', type=str, help="Filter by protocol name")
144+
mode_coerce_filters.add_argument("--filter-pipe-name", default=[], action='append', type=str, help="Filter by pipe name")
145+
mode_coerce_filters.add_argument("--filter-transport-name", default=["msrpc", "dcerpc"], choices=["msrpc", "dcerpc"], nargs='*', type=str, help="Filter by transport name")
145146
# Credentials
146147
mode_coerce_credentials = mode_coerce.add_argument_group("Credentials")
147148
mode_coerce_credentials.add_argument("-u", "--username", default="", help="Username to authenticate to the machine.")
@@ -157,6 +158,9 @@ def parseArgs():
157158
# Listener
158159
listener_group = mode_coerce.add_argument_group("Listener")
159160
listener_group.add_argument("-l", "--listener-ip", required=True, type=str, help="IP address or hostname of the listener machine")
161+
listener_group.add_argument("-i", "--interface", default=None, help="Interface to listen on incoming authentications.")
162+
listener_group.add_argument("-I", "--ip-address", default=None, help="IP address to listen on incoming authentications.")
163+
listener_group.add_argument("--path-ip", default=None, help="IP address to use when generating exploit paths.")
160164
# Logging
161165
mode_coerce_logging = mode_coerce.add_argument_group("Logging")
162166
mode_coerce_logging.add_argument("--minimum-log-level", default=0, help="Minimum logging level (integer).")

coercer/core/modes/coerce.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,5 +36,6 @@ def action_coerce(target, available_methods, options, credentials):
3636
# Executing tasks =======================================================================================================================
3737

3838
reporter.print_info("Coercing '%s' to authenticate to '%s'" % (target, options.listener_ip), verbose=True)
39+
reporter.print_info("Using SMB port %d for authentication" % options.smb_port, verbose=True)
3940

40-
execute_tasks(tasks, options, target, credentials, Modes.COERCE)
41+
execute_tasks(tasks, options, target, credentials, Modes.COERCE)

0 commit comments

Comments
 (0)