Weaken Encryption
This detection identifies adversary attempts to weaken or disable encryption on network devices, enabling interception or manipulation of otherwise protected traffic. The detection monitors syslog telemetry from network infrastructure (routers, switches, firewalls, VPN concentrators) for configuration changes affecting cryptographic settings, cipher suite downgrade events, IPsec/SSL policy modifications, and use of management protocols (SSH, NETCONF, SNMP write) to alter crypto configurations. It also tracks endpoint-side indicators such as suspicious use of network device management tools and connections from unexpected hosts to device management interfaces.
What is T1600 Weaken Encryption?
Weaken Encryption (T1600) maps to the Defense Evasion tactic — the adversary is trying to avoid being detected in MITRE ATT&CK.
This page provides production-ready detection logic for Weaken Encryption, covering the data sources and telemetry it touches: Microsoft Sentinel Syslog, Microsoft Defender for Endpoint, CommonSecurityLog (NGFW/Network Appliances). The queries below are rated high severity at medium confidence, and ship for 7 SIEM platforms — KQL, SPL, Elastic, QRadar, Sumo, YARA-L, LogScale.
MITRE ATT&CK
- Tactic
- Defense Evasion
- Technique
- T1600 Weaken Encryption
- Canonical reference
- https://attack.mitre.org/techniques/T1600/
let suspiciousCryptoKeywords = dynamic(["crypto key", "no crypto", "crypto isakmp", "no crypto isakmp", "crypto map", "cipher", "encryption des", "encryption 3des", "key-length 512", "key-length 768", "disable crypto", "no crypto engine", "crypto engine", "weak-ciphers", "null-encryption", "cipher RC4", "cipher DES", "cipher NULL"]);
let managementPorts = dynamic([22, 23, 161, 162, 830, 8080, 8443]);
let timeWindow = 1h;
// Branch 1: Network device syslog showing crypto config changes
let networkDeviceSyslog = Syslog
| where TimeGenerated >= ago(timeWindow)
| where Facility in ("local0", "local1", "local2", "local3", "local4", "local5", "local6", "local7")
| where SyslogMessage has_any (suspiciousCryptoKeywords)
| extend DeviceVendor = case(
SyslogMessage has "%CRYPTO", "Cisco",
SyslogMessage has "%VPN", "Cisco",
SyslogMessage has "CRYPT", "Generic",
SyslogMessage has "SSL_CIPHER", "Generic",
"Unknown"
)
| extend ChangeType = case(
SyslogMessage has "no crypto" or SyslogMessage has "disable", "CryptoDisabled",
SyslogMessage has "des" and not (SyslogMessage has "3des" or SyslogMessage has "aes"), "WeakCipherConfigured",
SyslogMessage has "key-length 512" or SyslogMessage has "key-length 768", "ReducedKeyLength",
SyslogMessage has "null-encryption" or SyslogMessage has "cipher NULL", "NullEncryptionEnabled",
"CryptoModification"
)
| project TimeGenerated, HostName, HostIP, SyslogMessage, Facility, SeverityLevel, DeviceVendor, ChangeType;
// Branch 2: CommonSecurityLog for network security appliances
let ngfwCryptoChanges = CommonSecurityLog
| where TimeGenerated >= ago(timeWindow)
| where DeviceVendor in ("Cisco", "Palo Alto Networks", "Fortinet", "Check Point", "Juniper Networks", "F5")
| where Activity has_any ("config", "policy", "crypto", "ike", "ipsec", "ssl", "tls", "cipher") or Message has_any (suspiciousCryptoKeywords)
| where Message has_any (suspiciousCryptoKeywords) or Activity contains "crypto"
| extend ChangeType = case(
Message has "null" and Message has "cipher", "NullEncryptionEnabled",
Message has "des" and not Message has "3des", "WeakCipherDES",
Message has "disable" and Message has "encrypt", "EncryptionDisabled",
Message has "downgrade", "ProtocolDowngrade",
"CryptoConfigChange"
)
| project TimeGenerated, DeviceVendor, DeviceProduct, SourceIP, DestinationIP, Activity, Message, ChangeType;
// Branch 3: Suspicious management protocol access to network device management interfaces
let suspiciousMgmtAccess = DeviceNetworkEvents
| where TimeGenerated >= ago(timeWindow)
| where RemotePort in (22, 23, 161, 162, 830)
| where InitiatingProcessFileName in~ ("python.exe", "python3", "perl.exe", "ruby.exe", "nmap.exe", "nmap", "netmiko", "paramiko", "snmpwalk", "snmpset", "snmpget")
or InitiatingProcessCommandLine has_any ("snmpset", "snmpwalk", "netconf", "napalm", "netmiko", "paramiko", "crypto", "cipher")
| extend Protocol = case(
RemotePort == 22, "SSH",
RemotePort == 23, "Telnet",
RemotePort in (161, 162), "SNMP",
RemotePort == 830, "NETCONF",
"Other"
)
| project TimeGenerated, DeviceName, InitiatingProcessAccountName, InitiatingProcessFileName, InitiatingProcessCommandLine, RemoteIP, RemotePort, Protocol;
union networkDeviceSyslog, ngfwCryptoChanges, suspiciousMgmtAccess
| order by TimeGenerated desc Detects encryption weakening on network devices by correlating three signals: (1) syslog messages from Cisco/generic network devices containing crypto configuration keywords such as 'no crypto', 'encryption des', 'null-encryption', or reduced key lengths; (2) CommonSecurityLog entries from NGFW/UTM vendors indicating crypto policy modifications; and (3) DeviceNetworkEvents showing endpoint-side management tool activity (netmiko, paramiko, snmpset) connecting to management ports of network devices.
Data Sources
Required Tables
False Positives
- Legitimate network engineers performing scheduled cipher hardening or deprecating legacy ciphers during maintenance windows
- Automated network configuration management tools (Ansible, Cisco NSO, SolarWinds NCM) performing compliance-driven crypto policy updates
- Security assessments or penetration testing engagements that test downgrade attacks against network devices
- Vendor-driven firmware upgrades that temporarily modify crypto settings before applying a stronger default configuration
Sigma rule & cross-platform mapping
The detection logic for Weaken Encryption (T1600) above is provided in a vendor-neutral
form so you can deploy it on any SIEM. The same logic is shipped here as native
KQL (Microsoft Sentinel / Defender), SPL (Splunk), Elastic (Elastic Security (EQL)), QRadar (IBM QRadar (AQL)), Sumo (Sumo Logic CSE), YARA-L (Google Chronicle / SecOps), LogScale (CrowdStrike LogScale (CQL)) queries. In Sigma terms, this detection targets the
following logsource:
logsource:
category: network_connection
product: windows Browse the community-maintained Sigma rules for this technique:
Platform-specific guides for T1600
References (7)
- https://attack.mitre.org/techniques/T1600/
- https://attack.mitre.org/techniques/T1600/001/
- https://attack.mitre.org/techniques/T1600/002/
- https://blogs.cisco.com/security/evolution-of-attacks-on-cisco-ios-devices
- https://community.cisco.com/t5/security-blogs/synful-knock-a-cisco-router-implant/ba-p/3815823
- https://www.mandiant.com/resources/synful-knock-detecting-cisco-router-implants
- https://www.cisa.gov/sites/default/files/publications/Cisco_Router_Implant_AA20-296A.pdf
Testing Methodology
Validate this detection against 3 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.
- Test 1Cisco IOS Weak Cipher Configuration via SSH
Expected signal: Syslog from device: '%SYS-5-CONFIG_I: Configured from console by admin on vty0 (src_ip)' and '%CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON' — plus new syslog entry showing des/md5/group1 policy creation. SSH session will appear in TACACS+/RADIUS accounting.
- Test 2SNMP Write Operation to Modify Network Device Crypto Settings
Expected signal: Network device syslog: SNMP SET operation logged with source IP and community string. If SNMP trap is configured: trap sent to NMS showing sysLocation OID modification. TACACS+ accounting may log if device AAA is configured for SNMP. Network flow logs will show UDP/161 traffic from test host.
- Test 3Python Netmiko Script Deploying Null Encryption Configuration
Expected signal: Windows: Sysmon EventCode=1 showing python.exe spawning with CommandLine containing 'netmiko' and '192.168.100.1'. Sysmon EventCode=3 showing outbound TCP/22 from python.exe to device IP. Network device syslog: '%SYS-5-CONFIG_I: Configured from console by admin on vty0' and '%CRYPTO-6-ISAKMP: New transform: esp-null/esp-md5-hmac'. TACACS+ accounting entry for configuration session.
Response Playbook
Triage
- Step 1: Identify the source device — retrieve the hostname, IP address, and management interface from the alert. Cross-reference with your network asset inventory (IPAM/CMDB) to confirm it is a managed network device and not a rogue appliance.
- Step 2: Determine who made the change — pivot to AADSignInLogs or your AAA (RADIUS/TACACS+) server logs for authentication events to the device around the alert timestamp. Identify the user account and source IP that connected via SSH/console/HTTPS management.
- Step 3: Correlate with change management — check your ITSM/CMDB (ServiceNow, Jira) for approved change requests covering the device and time window. A configuration change with no associated ticket is a strong escalation indicator.
- Step 4: Review the specific configuration change — if the device supports NETCONF/RESTCONF or has a config audit trail (e.g., Cisco CES, Juniper JET), retrieve the before/after running configuration diff focusing on 'crypto', 'cipher', 'ipsec', 'ssl', and 'tls' stanzas.
- Step 5: Assess network exposure — identify which traffic flows traverse the device. Determine if weakened encryption affects external internet traffic, VPN tunnels, or internal segment-to-segment traffic. External internet-facing or VPN gateway changes are highest priority.
- Step 6: Check for SynfulKnock-style implants — review the device's boot image hash against known-good values from the vendor. On Cisco devices, run 'show platform integrity sign nonce <nonce>' to verify boot integrity. Check 'show version' output against expected image filename and hash.
Containment
- If unauthorized: immediately revoke all active management sessions on the device (clear line vty on Cisco IOS, 'clear security ike security-associations' on Juniper) and rotate all management credentials (enable password, SNMP community strings, local accounts).
- Block the source IP that made the change at the network perimeter or upstream ACL if it is not a recognized management jump host or bastion server.
- If a crypto backdoor or null-encryption is confirmed, isolate downstream traffic by placing the device in a maintenance VLAN or blocking specific interface traffic via ACL until the configuration is remediated.
- Engage your network team to immediately restore the approved cryptographic configuration from a known-good backup or from documented baseline. Validate with 'show running-config | section crypto' or equivalent.
- Enable enhanced logging on the device (debug crypto isakmp errors, syslog severity debug to a remote SIEM) for the duration of the investigation to capture any additional unauthorized changes.
Evidence Collection
- Export the complete running configuration and startup configuration from the device at time of discovery: 'show running-config', 'show startup-config', and 'show version'. Archive with timestamps for forensic preservation.
- Pull authentication and accounting logs from your TACACS+ or RADIUS server for all sessions to the device in the 72 hours preceding the alert.
- Capture network packet samples of traffic traversing the affected device interfaces using SPAN/RSPAN or a tapping appliance — focus on encrypted flows that may now be using weaker ciphers (identify TLS handshakes via Wireshark, look for ClientHello cipher suites).
- Retrieve SNMP write operation logs if applicable — check your network management system (SolarWinds, PRTG, LibreNMS) for SNMP SET operations against OIDs related to cryptographic settings.
- On Cisco devices, collect 'show crypto isakmp sa', 'show crypto ipsec sa', 'show crypto engine connections active', and 'show crypto key mypubkey rsa' to document current cryptographic state.
- Preserve all relevant SIEM/syslog entries with chain of custody documentation. Export to immutable storage before log rotation.
Escalation Criteria
- ! Escalate immediately if the weakened encryption affects a VPN gateway, remote access concentrator, or internet-facing firewall — the attack surface for credential interception and traffic decryption is critical.
- ! Escalate if the source account used to make the configuration change is a service account, shared account, or an account belonging to a recently terminated employee.
- ! Escalate if device boot integrity verification fails (SynfulKnock/implant scenario) or if the running image hash does not match vendor-published values — this indicates a potential T1601 Modify System Image compromise.
- ! Escalate if multiple network devices show similar crypto weakening changes within a short timeframe — this pattern suggests a coordinated campaign rather than an isolated misconfiguration.
- ! Escalate if null encryption or DES is configured on devices handling PCI, HIPAA, or other regulated data flows — this may constitute an immediate compliance breach requiring notification.
Investigation Guide
Forensic Artifacts
- >
Network device running-config and startup-config showing 'no crypto' or weak cipher directives - >
TACACS+/RADIUS accounting logs showing the authenticated user who issued configuration commands - >
Syslog AUDIT messages from IOS/NX-OS recording configuration changes with timestamp and user (e.g., '%SYS-5-CONFIG_I: Configured from console by user on vty0') - >
Network management system (NMS) change audit log showing SNMP SET or NETCONF edit-config operations - >
TLS/SSL session logs showing cipher downgrade from AES-256 to DES or RC4 on affected flows - >
Cisco IOS 'show tech-support' output and 'show platform integrity' for boot verification - >
PCAP samples showing IKE/IPsec negotiation using weaker proposal sets post-change
Tuning Guidance
Start by building an allowlist of authorized management jump hosts, bastion servers, and network management systems (NMS) that legitimately make configuration changes to network devices. Filter these source IPs from the alert. Additionally, create an exclusion for approved change windows — correlate alert timestamps against your ITSM change calendar and suppress alerts that fall within approved maintenance windows. For syslog-based detections, tune the keyword list by reviewing your organization's specific network OS vendor and version — Cisco NX-OS uses different crypto command syntax than IOS-XE. Consider raising severity thresholds for external-facing devices (internet edge routers, VPN gateways) versus internal devices with lower exposure. For the endpoint-side management tool detection, create allowlists of accounts and hosts that are authorized to use NetDevOps automation tools (Ansible control nodes, etc.).
Hunting Queries
Hunts for unusual SNMP write or configuration access patterns against network devices over 30 days — multiple source IPs or high-frequency changes may indicate unauthorized automated tooling used to systematically weaken device crypto configurations.
// Hunt for historical pattern of SNMP write operations targeting network devices from non-standard management hosts
CommonSecurityLog
| where TimeGenerated >= ago(30d)
| where DeviceVendor in ("Cisco", "Juniper Networks", "Palo Alto Networks", "Fortinet", "F5")
| where ApplicationProtocol =~ "SNMP" or DestinationPort in (161, 162)
| where Activity has_any ("write", "set", "config") or Message has_any ("OID", "snmpset", "community")
| summarize OperationCount=count(), UniqueSourceIPs=dcount(SourceIP), SourceIPs=make_set(SourceIP, 20) by DeviceName=Computer, DeviceVendor, bin(TimeGenerated, 1d)
| where UniqueSourceIPs > 2 or OperationCount > 50
| order by OperationCount desc index=network_devices sourcetype IN ("cisco:ios", "cisco:asa", "juniper", "syslog") earliest=-30d
| rex field=_raw "from (?P<src_ip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})"
| search _raw IN ("*SNMP*SET*", "*snmpset*", "*configured from*", "*CONFIG_I*")
| stats count as changes, dc(src_ip) as unique_sources, values(src_ip) as source_ips by host
| where unique_sources > 3 OR changes > 20
| sort -changes Correlates endpoint process execution of network automation frameworks (netmiko, napalm, paramiko) with outbound management protocol connections — identifies workstations that may be used by an attacker or insider to programmatically push crypto-weakening configurations to multiple network devices.
// Hunt for management-plane access to network infrastructure from endpoints that have recently run network automation tools
DeviceProcessEvents
| where TimeGenerated >= ago(14d)
| where ProcessCommandLine has_any ("netmiko", "napalm", "paramiko", "nornir", "ansible", "pyats", "scrapli")
or (FileName =~ "python.exe" and ProcessCommandLine has_any ("ssh", "connect", "send_command", "send_config"))
| project TimeGenerated, DeviceName, AccountName, FileName, ProcessCommandLine, InitiatingProcessFileName
| join kind=inner (
DeviceNetworkEvents
| where TimeGenerated >= ago(14d)
| where RemotePort in (22, 23, 161, 830)
| project NetworkTime=TimeGenerated, DeviceName, RemoteIP, RemotePort, InitiatingProcessFileName
) on DeviceName
| where abs(datetime_diff('minute', TimeGenerated, NetworkTime)) <= 5
| project TimeGenerated, DeviceName, AccountName, ProcessCommandLine, RemoteIP, RemotePort
| summarize ConnectionCount=count(), TargetDevices=make_set(RemoteIP, 50), CommandLines=make_set(ProcessCommandLine, 10) by AccountName, DeviceName
| order by ConnectionCount desc index=endpoint sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1 earliest=-14d
(CommandLine="*netmiko*" OR CommandLine="*napalm*" OR CommandLine="*paramiko*" OR CommandLine="*nornir*" OR (Image="*python*" AND CommandLine="*ssh*"))
| eval src_host=Computer
| join type=left src_host [search index=network_devices sourcetype=syslog earliest=-14d | rex field=_raw "from (?P<admin_src>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})" | stats count by admin_src | rename admin_src as src_ip]
| stats count as total_runs, values(CommandLine) as commands, dc(src_ip) as target_devices by User, src_host
| where total_runs > 5
| sort -total_runs Hunts for evidence that weakened encryption is actively being used in network traffic — identifies TLS 1.0, SSL 3.0, RC4, DES, and NULL cipher sessions that suggest a successful weakening attack has changed device cipher negotiation behavior.
// Hunt for TLS/SSL cipher downgrade events indicating weakened encryption is in effect
CommonSecurityLog
| where TimeGenerated >= ago(7d)
| where Message has_any ("TLSv1.0", "TLSv1 ", "SSLv3", "RC4", "DES-CBC", "NULL-SHA", "EXP-", "EXPORT", "ANON")
or (Activity has "SSL" and Message has_any ("downgrade", "weak", "cipher", "deprecated"))
| extend WeakCipher = extract(@"(RC4|DES-CBC|3DES-EDE|NULL-SHA|EXP-[\w-]+|EXPORT[\w-]+|TLSv1\.0|SSLv[23])", 1, Message)
| where isnotempty(WeakCipher)
| summarize ObservedCount=count(), AffectedHosts=make_set(Computer, 20), WeakCiphers=make_set(WeakCipher, 10) by SourceIP, DestinationIP, DeviceVendor, bin(TimeGenerated, 1h)
| order by ObservedCount desc index=firewall OR index=proxy OR index=network_devices earliest=-7d
| search _raw IN ("*TLSv1.0*", "*SSLv3*", "*RC4*", "*DES-CBC*", "*NULL-SHA*", "*EXPORT*", "*cipher downgrade*")
| rex field=_raw "(?P<weak_cipher>RC4|DES-CBC|3DES-EDE|NULL-SHA|EXP-[\w-]+|TLSv1\.0|SSLv[23])"
| where isnotnull(weak_cipher)
| stats count as occurrences, dc(src_ip) as unique_clients, values(weak_cipher) as weak_ciphers by dest_ip, dest_port, host
| where occurrences > 5
| sort -occurrences Atomic Red Team Tests
Simulates an adversary using SSH to connect to a Cisco IOS device and configure weak DES encryption for IPsec IKEv1 policy, reducing the effective key space and cryptographic protection of VPN tunnels.
Command
# Prerequisites: ssh client, a test Cisco IOS device (physical or GNS3/EVE-NG lab)
# WARNING: Run only in a lab environment — this modifies device crypto policy
TEST_DEVICE_IP="192.168.100.1"
DEVICE_USER="admin"
DEVICE_PASS="labpassword"
sshpass -p "${DEVICE_PASS}" ssh -o StrictHostKeyChecking=no \
-o KexAlgorithms=diffie-hellman-group1-sha1 \
-o Ciphers=3des-cbc \
${DEVICE_USER}@${TEST_DEVICE_IP} << 'EOF'
enable
labpassword
configure terminal
crypto isakmp policy 100
encryption des
hash md5
authentication pre-share
group 1
lifetime 86400
no crypto isakmp policy 10
exit
write memory
EOF
echo "[ATOMIC TEST] Weak DES encryption IKE policy applied to ${TEST_DEVICE_IP}" Cleanup
sshpass -p "labpassword" ssh -o StrictHostKeyChecking=no [email protected] << 'EOF'
enable
labpassword
configure terminal
no crypto isakmp policy 100
crypto isakmp policy 10
encryption aes 256
hash sha256
authentication pre-share
group 14
lifetime 86400
exit
write memory
EOF Expected Telemetry
Syslog from device: '%SYS-5-CONFIG_I: Configured from console by admin on vty0 (src_ip)' and '%CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON' — plus new syslog entry showing des/md5/group1 policy creation. SSH session will appear in TACACS+/RADIUS accounting.
Expected Detection
Alert on syslog keyword match for 'encryption des' and 'group 1' from network device syslog source. SPL risk_score of 70 (WeakCipherDES). CommonSecurityLog detection may fire if device is forwarding to a NGFW syslog collector.
Simulates use of SNMP SET operations to programmatically modify a network device configuration, mimicking automated crypto weakening. Tests detection of unauthorized SNMP write access from a non-standard management host.
Command
# Prerequisites: net-snmp tools installed (apt install snmp / yum install net-snmp-utils)
# Uses SNMP v2c write community — test device must have write community configured
TEST_DEVICE_IP="192.168.100.1"
WRITE_COMMUNITY="private"
# Check SNMP write access is available
echo "[ATOMIC] Testing SNMP write access to ${TEST_DEVICE_IP}"
snmpset -v2c -c ${WRITE_COMMUNITY} ${TEST_DEVICE_IP} \
1.3.6.1.2.1.1.6.0 s "COMPROMISED-BY-ATOMIC-TEST"
# Enumerate crypto-related OIDs (read-only, safe enumeration)
echo "[ATOMIC] Enumerating IPsec/VPN-related SNMP OIDs"
snmpwalk -v2c -c ${WRITE_COMMUNITY} ${TEST_DEVICE_IP} 1.3.6.1.4.1.9.9.171 2>/dev/null | head -20
# Simulate SNMP-based config query for crypto status
snmpget -v2c -c ${WRITE_COMMUNITY} ${TEST_DEVICE_IP} \
1.3.6.1.2.1.1.1.0
echo "[ATOMIC TEST COMPLETE] SNMP write test to ${TEST_DEVICE_IP}" Cleanup
snmpset -v2c -c private 192.168.100.1 1.3.6.1.2.1.1.6.0 s "Lab Device" Expected Telemetry
Network device syslog: SNMP SET operation logged with source IP and community string. If SNMP trap is configured: trap sent to NMS showing sysLocation OID modification. TACACS+ accounting may log if device AAA is configured for SNMP. Network flow logs will show UDP/161 traffic from test host.
Expected Detection
SPL/KQL detection of SNMP write from non-authorized management host. CommonSecurityLog alert if NGFW performs deep packet inspection on SNMP traffic. NMS may generate its own alert for unauthorized community string usage.
Simulates an adversary using the Python netmiko library (a common network automation tool) to deploy a null-encryption IPsec transform set on a network device, completely disabling data confidentiality for affected VPN tunnels.
Command
# Prerequisites: Python 3 with netmiko installed (pip install netmiko)
# Run in a lab environment only — test Cisco IOS device required
$ScriptContent = @"
import sys
from netmiko import ConnectHandler
device = {
'device_type': 'cisco_ios',
'host': '192.168.100.1',
'username': 'admin',
'password': 'labpassword',
'secret': 'labpassword',
}
weak_crypto_commands = [
'crypto ipsec transform-set ATOMIC-TEST-WEAK esp-null esp-md5-hmac',
'mode tunnel',
'exit',
]
try:
net_connect = ConnectHandler(**device)
net_connect.enable()
output = net_connect.send_config_set(weak_crypto_commands)
print('[ATOMIC TEST] Null-encryption transform set deployed:')
print(output)
verify = net_connect.send_command('show crypto ipsec transform-set ATOMIC-TEST-WEAK')
print('[ATOMIC TEST] Verification:', verify)
net_connect.disconnect()
except Exception as e:
print(f'[ATOMIC TEST] Connection failed (expected in restricted env): {e}')
sys.exit(0)
"@
$ScriptPath = "$env:TEMP\atomic_t1600_netmiko.py"
$ScriptContent | Out-File -FilePath $ScriptPath -Encoding UTF8
python.exe $ScriptPath Cleanup
python.exe -c "
from netmiko import ConnectHandler
dev = {'device_type':'cisco_ios','host':'192.168.100.1','username':'admin','password':'labpassword','secret':'labpassword'}
nc = ConnectHandler(**dev)
nc.enable()
nc.send_config_set(['no crypto ipsec transform-set ATOMIC-TEST-WEAK'])
nc.disconnect()
"
Remove-Item "$env:TEMP\atomic_t1600_netmiko.py" -Force Expected Telemetry
Windows: Sysmon EventCode=1 showing python.exe spawning with CommandLine containing 'netmiko' and '192.168.100.1'. Sysmon EventCode=3 showing outbound TCP/22 from python.exe to device IP. Network device syslog: '%SYS-5-CONFIG_I: Configured from console by admin on vty0' and '%CRYPTO-6-ISAKMP: New transform: esp-null/esp-md5-hmac'. TACACS+ accounting entry for configuration session.
Expected Detection
KQL DeviceProcessEvents + DeviceNetworkEvents correlation alert for Python netmiko connecting to management port. SPL alert on 'null-encryption' or 'esp-null' in network device syslog (risk_score=100, NullEncryptionEnabled change_type). Endpoint protection may flag netmiko as network discovery/management tool.