Network¶
--netif collects the host’s network interfaces, the routing table and the
neighbor/ARP table — a host-state view alongside processes and ports — and
surfaces the security-relevant facets. Delta does not capture or parse
packets (that DPI layer is out of scope); it inspects state and configuration.
delta --netif --json
delta --netif --baseline net.json # then --cfg net.json to detect drift
Interfaces¶
Per interface: name, MAC, MTU, flags (UP/RUNNING/LOOPBACK), IPv4/IPv6 addresses, and whether it is in PROMISC mode — the classic footprint of a packet sniffer:
- tap0 UP RUNNING mtu=1500 mac=aa:bb:cc:00:11:22
! PROMISC (possible packet sniffer)
Interfaces come from getifaddrs() on the live host; under --root (see
Offline image analysis) the declared interfaces are recovered from
/etc/network/interfaces, systemd-networkd .network files and netplan
YAML instead.
Routes & neighbors¶
The IPv4 (/proc/net/route) and IPv6 (/proc/net/ipv6_route) routing
tables and the ARP table (/proc/net/arp) — procfs reads, so they honor
--root:
Routes:
- 0.0.0.0/0.0.0.0 via 192.168.1.1 dev eth0
- ::/0 via fe80::1 dev eth0
Neighbors (ARP):
- 192.168.1.1 at aa:bb:cc:dd:ee:ff dev eth0
Detection¶
Captured into the baseline and validated against norms (see Configuration); also surfaced as Continuous monitoring drift and Fleet / cohort analysis cohort features. Checking reports:
critical— an interface entered PROMISC mode it was not in (sniffer); a route gateway changed (redirect / MITM); a neighbor’s MAC changed (ARP spoofing); a file-cap change.high— a missing interface, an unexpected route, or a MAC change.medium— an unexpected interface;low— an MTU change, an unexpected neighbor.
The neighbor table is volatile (DHCP, devices coming and going); prefer
"other_neighbors_present": true to enforce only known bindings (catching MAC
spoofing) without flagging every new device:
{ "norm": {
"other_routes_present": false,
"routes": [ { "dest": "0.0.0.0", "mask": "0.0.0.0", "gateway": "192.168.1.1" } ],
"other_neighbors_present": true,
"neighbors": [ { "ip": "192.168.1.1", "mac": "aa:bb:cc:dd:ee:ff" } ]
} }
Limitations¶
Delta captures no packets. It examines the interfaces and the configuration.
PROMISC applies to a live host. An offline image gives the declared configuration, which has no such state.
Delta reads the routes and the ARP table from procfs. On a host without
/procthese lists are empty.On Windows, Delta reads the interfaces with
GetAdaptersAddresses. A Windows build contains this code, and a build for a different platform does not.