Added open port alerts.
This commit is contained in:
parent
433776a98f
commit
4c3253e233
16
autorecon.py
16
autorecon.py
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue