Added open port alerts.

This commit is contained in:
Tib3rius 2021-09-03 23:10:11 -04:00
parent 433776a98f
commit 4c3253e233
3 changed files with 37 additions and 12 deletions

View File

@ -436,7 +436,7 @@ async def scan_target(target):
else:
continue
info('Found {bmagenta}' + service.name + '{rst} on {bmagenta}' + service.protocol + '/' + str(service.port) + '{rst} on {byellow}' + target.address + '{rst}')
info('Identified service {bmagenta}' + service.name + '{rst} on {bmagenta}' + service.protocol + '/' + str(service.port) + '{rst} on {byellow}' + target.address + '{rst}')
if not config['only_scans_dir']:
with open(os.path.join(target.reportdir, 'notes.txt'), 'a') as file:
@ -1026,9 +1026,9 @@ async def main():
continue
if isinstance(ip, ipaddress.IPv4Address):
autorecon.pending_targets.append(Target(ip_str, 'IPv4', 'ip', autorecon))
autorecon.pending_targets.append(Target(ip_str, ip_str, 'IPv4', 'ip', autorecon))
elif isinstance(ip, ipaddress.IPv6Address):
autorecon.pending_targets.append(Target(ip_str, 'IPv6', 'ip', autorecon))
autorecon.pending_targets.append(Target(ip_str, ip_str, 'IPv6', 'ip', autorecon))
else:
fail('This should never happen unless IPv8 is invented.')
except ValueError:
@ -1052,9 +1052,9 @@ async def main():
continue
if isinstance(ip, ipaddress.IPv4Address):
autorecon.pending_targets.append(Target(ip_str, 'IPv4', 'ip', autorecon))
autorecon.pending_targets.append(Target(ip_str, ip_str, 'IPv4', 'ip', autorecon))
elif isinstance(ip, ipaddress.IPv6Address):
autorecon.pending_targets.append(Target(ip_str, 'IPv6', 'ip', autorecon))
autorecon.pending_targets.append(Target(ip_str, ip_str, 'IPv6', 'ip', autorecon))
else:
fail('This should never happen unless IPv8 is invented.')
@ -1062,6 +1062,7 @@ async def main():
try:
addresses = socket.getaddrinfo(target, None, socket.AF_INET)
ip = addresses[0][4][0]
found = False
for t in autorecon.pending_targets:
@ -1072,10 +1073,11 @@ async def main():
if found:
continue
autorecon.pending_targets.append(Target(target, 'IPv4', 'hostname', autorecon))
autorecon.pending_targets.append(Target(target, ip, 'IPv4', 'hostname', autorecon))
except socket.gaierror:
try:
addresses = socket.getaddrinfo(target, None, socket.AF_INET6)
ip = addresses[0][4][0]
found = False
for t in autorecon.pending_targets:
@ -1086,7 +1088,7 @@ async def main():
if found:
continue
autorecon.pending_targets.append(Target(target, 'IPv6', 'hostname', autorecon))
autorecon.pending_targets.append(Target(target, ip, 'IPv6', 'hostname', autorecon))
except socket.gaierror:
error(target + ' does not appear to be a valid IP address, IP range, or resolvable hostname.')
errors = True

View File

@ -5,8 +5,9 @@ from autorecon.io import e, info
class Target:
def __init__(self, address, ipversion, type, autorecon):
def __init__(self, address, ip, ipversion, type, autorecon):
self.address = address
self.ip = ip
self.ipversion = ipversion
self.type = type
self.autorecon = autorecon

View File

@ -1,6 +1,6 @@
from autorecon.plugins import PortScan
from autorecon.io import error
import os
from autorecon.io import info, error
import os, re
class QuickTCPPortScan(PortScan):
@ -36,7 +36,18 @@ class AllTCPPortScan(PortScan):
if target.ports: # Don't run this plugin if there are custom ports.
return []
process, stdout, stderr = await target.execute('nmap {nmap_extra} -A --osscan-guess --version-all -p- -oN "{scandir}/_full_tcp_nmap.txt" -oX "{scandir}/xml/_full_tcp_nmap.xml" {address}', blocking=False)
services = await target.extract_services(stdout)
services = []
while True:
line = await stdout.readline()
if line is not None:
match = re.search('^Discovered open port ([0-9]+)/tcp', line)
if match:
info('Discovered open port {bmagenta}tcp/' + match.group(1) + '{rst} on {byellow}' + target.address + '{rst}')
service = target.extract_service(line)
if service:
services.append(service)
else:
break
await process.wait()
return services
@ -59,7 +70,18 @@ class Top100UDPPortScan(PortScan):
return []
else:
process, stdout, stderr = await target.execute('nmap {nmap_extra} -sU -A --version-all --top-ports 100 -oN "{scandir}/_top_100_udp_nmap.txt" -oX "{scandir}/xml/_top_100_udp_nmap.xml" {address}', blocking=False)
services = await target.extract_services(stdout)
services = []
while True:
line = await stdout.readline()
if line is not None:
match = re.search('^Discovered open port ([0-9]+)/udp', line)
if match:
info('Discovered open port {bmagenta}udp/' + match.group(1) + '{rst} on {byellow}' + target.address + '{rst}')
service = target.extract_service(line)
if service:
services.append(service)
else:
break
await process.wait()
return services
else: