diff --git a/docker-compose.yml b/docker-compose.yml index adbed3e..3af29e4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,6 +7,7 @@ services: network_mode: "host" environment: PORTS: "80,443,22,21,25565,27017,143,6379" + NETWORKS: "10.0.0.0/8 192.168.0.0/16" depends_on: rabbitmq: condition: service_healthy diff --git a/rigour/common/common/config.py b/rigour/common/common/config.py index 1104edf..e779e8c 100644 --- a/rigour/common/common/config.py +++ b/rigour/common/common/config.py @@ -14,6 +14,14 @@ def get_mongo_db(default: str = "rigour") -> str: def get_rabbitmq_uri(default: str = "amqp://localhost:5672/") -> str: return os.environ.get("RABBITMQ_URL", default) + @staticmethod + def get_networks(default: str = "10.0.0.0/8") -> str: + return os.environ.get("NETWORKS", default) + + @staticmethod + def get_ports(default: str = "80") -> str: + return os.environ.get("PORTS", default) + @staticmethod def get_scan_collection() -> str: return "scans" diff --git a/rigour/ports/main.py b/rigour/ports/main.py index 67b188c..e62a36a 100644 --- a/rigour/ports/main.py +++ b/rigour/ports/main.py @@ -1,11 +1,11 @@ import asyncio -import os from dataclasses import asdict from datetime import datetime import geoip2.database import geoip2.errors from common import utils +from common.config import Config from common.database.mongodb import Database from common.queue.rabbitmq_asyncio import AsyncRabbitMQQueueManager from common.types import Host, HostMessage, Location @@ -46,7 +46,8 @@ def main(): db = Database() queue = AsyncRabbitMQQueueManager() reader = geoip2.database.Reader("geolite2-city.mmdb") - ports = os.getenv("PORTS", "80") + ports = Config.get_ports() + networks = Config.get_networks() logger.info(f"Starting port scanner for port/s: {ports}") @@ -60,7 +61,7 @@ async def callback(result: ZMapResult) -> None: await queue.publish(route_key, asdict(host)) save(db, host) - command = ZMapCommand(ports) + command = ZMapCommand(ports, networks) zmap = ZMap(command) loop = asyncio.get_event_loop() loop.run_until_complete(zmap.run(callback)) diff --git a/rigour/ports/zmap.py b/rigour/ports/zmap.py index b36d32f..ddfcaea 100644 --- a/rigour/ports/zmap.py +++ b/rigour/ports/zmap.py @@ -4,8 +4,9 @@ class ZMapCommand: - def __init__(self, ports: str): + def __init__(self, ports: str, networks: str): self.ports = ports + self.networks = networks def build(self): return [ @@ -16,6 +17,7 @@ def build(self): "--quiet", # Suppress status updates "--rate=200", # Send 100 packets per second '--output-filter="success = 1"', # Filter successful results + self.networks, ]