3.5 KiB
title | date | draft | weight | pre | tags | |
---|---|---|---|---|---|---|
Scanners | 2020-07-14T08:43:12+03:00 | false | 20 | <i class="fas fa-network-wired"></i> |
|
The Infection Monkey agent takes two steps before attempting to exploit a victim, scanning and fingerprinting. It's possible to customize both steps in the configuration files.
Scanning
Currently there are two scanners, PingScanner
and TcpScanner
, both inheriting from HostScanner
.
The sole interface required is the is_host_alive
interface, which needs to return True/False.
TcpScanner
is the default scanner. It checks for open ports based on the tcp_target_ports
configuration setting.
PingScanner
sends a ping message using the host OS utility ping.
Fingerprinting
Fingerprinters are modules that collect server information from a specific victim. They inherit from the HostFinger
class and are listed under the finger_classes
configuration option.
The currently implemented Fingerprint modules are:
SMBFinger
- Fingerprints target machines over SMB and extracts the computer name and OS version.SSHFinger
- Fingerprints target machines over SSH (port 22) and extracts the computer version and SSH banner.PingScanner
- Fingerprints target machine's TTL to differentiate between Linux and Windows hosts.HTTPFinger
- Detects HTTP/HTTPS services, using the ports listed inHTTP_PORTS
in the configuration, will return the server type and if it supports SSL.ElasticFinger
- Fingerprints ElasticSearch (port 9200) and will extract the cluster name, node name and node version.
Adding a scanner/fingerprinter
To add a new scanner/fingerprinter, create a new class that inherits from HostScanner
or HostFinger
(depending on the interface). The class should be under the network module and imported under network/__init__.py
.
To use the new scanner/fingerprinter by default, modify infection_monkey/config.py
to add references to the new class.
At this point, the Infection Monkey knows how to use the new scanner/fingerprinter but to make it easy to use, the UI needs to be updated. The relevant UI file is monkey_island/cc/services/config.py
.