Welcome to the Python PLC Honeypot User Manual! This manual provides detailed step-by-step instructions on how to deploy and use the honeypot system in your environment for detecting potential attacks on OT (Operational Technology) networks. The guide includes two main section:
-
Honeypot deployment: an example deployment of a mixed OT protocol honeypot, consisting of a simple setup with two 1-to-1 emulator-controller pairs. As a Green Team engineer, you'll learn how to configure and deploy the honeypot, ensuring seamless operation in your environment.
-
Attack detection case study: From the perspective of a Blue Team defender, this manual will walk you through how to monitor the system, analyze alerts, and detect sophisticated attack strategies such as false data injection or man-in-the-middle (MITM) attacks carried out by a Red Team attacker.
# Created: 2024/11/30
# Version: v_0.1.3
# Copyright: Copyright (c) 2024 LiuYuancheng
# License: GNU Affero General Public License v3.0
Table of Contents
[TOC]
To deploy the honeypot system, a minimum of six virtual machines (VMs) or physical machine are required, along with two isolated networks connected through two network switches. Each VM for the PLC controllers and emulators must have two network interfaces: one for the OT Honeypot Network and another for the Orchestration Network. The network topology is illustrated below:
Figure-01: Honeypot deployment example network topology diagram, version v_0.1.3 (2024)
The recommended operating system for all VMs is Ubuntu 22.04, ensuring compatibility with the honeypot modules and libraries. The deployment should follow the sequence outlined in the table below:
VM Name | Deploy Sequence | Honeypot IP | Orchestration IP | Program/Module Needed |
---|---|---|---|---|
Honeypot Monitor hub VM | 1 | N.A | 172.23.20.4 | lib , honeypotMonitor |
Honeypot Log Archive VM | 2 | N.A | 172.23.20.5 | lib , honeypotLogServer |
Modbus PLC emulator VM | 3 | 172.23.155.209 | 172.23.20.9 | lib , modbusPlcEmulator , honeypotLogClient |
Modbus PLC Controller VM | 4 | 172.23.155.206 | 172.23.20.6 | lib , modbusPlcController , honeypotLogClient |
S7comm PLC emulator VM | 5 | 172.23.155.208 | 172.23.20.8 | lib , s7commPlcEmulator , honeypotLogClient |
S7comm PLC Controller VM | 6 | 172.23.155.207 | 172.23.20.7 | lib , s7commPlcController , honeypotLogClient |
For details on the required modules, refer to the Program File List section in the system setup portion of the README file. Each VM must also have the necessary libraries installed according to the setup instructions provided.
Step1: Setup program files
- Follow the program setup instructions in readme file to install the required libraries.
- Create a program directory structure:
monitor/src
in the machine or VM. - Copy the
lib
andhoneypotMonitor
modules into thesrc
folder.
Step2: Change the application configuration file
- Rename the
src/honeypotMonitor/config_template.txt
tosrc/honeypotMonitor/config.txt
- Change the
FLASK_SER_PORT:5000
if you need to set another port for the monitor web (such as 8080).
Step3: Run the Monitor Hub program
- Navigate(cd) to the
honeypotMonitor
folder and run the monitor hub program with commandsudo python3 monitorApp.py
. - In the orchestration network open a browser and visit URL http://172.23.20.4:5000 to verify that the monitor hub is online, as shown below:
Figure-02: Honeypot deployment: Monitor Hub Landing Page, version v_0.1.3 (2024)
Step 1: Setup the program
- Follow the program setup instructions in readme file to install the required libraries.
- Create a directory structure:
logServer/src
in the machine or VM. - Copy the
lib
andhoneypotLogServer
modules into thesrc
folder.
Step 2: Configure the application
- Rename the configuration files as follows :
src/honeypotLogServer/ServerConfig_template.txt
→src/honeypotLogServer/ServerConfig.txt
andsrc/honeypotLogServer/userRecord_template.json
→src/honeypotLogServer/userRecord.json
- Update the agent's credentials in
userRecord.json
by adding the login password:
"agent": {
"passwd": "123456",
"perm": "elradfmwM"
}
- Modify the configuration file
ServerConfig.txt
to disable test mode by changing the following line:
...
line06: # Web test mode flag: True start without init the FTP server
line07: TEST_MODE:False
...
Step 3: Run the Log Archive Program
- Navigate to the
honeypotLogServer
folder and run the log archive server application with commandsudo python3 logArchiveServerApp.py
- In the orchestration network open a browser visit http://172.23.20.5:5003 to verify that the log archive server is online, as shown below:
Figure-03: Honeypot deployment: Log Archive Server Landing Page, version v_0.1.3 (2024)
Step 1: Setup the program
- Follow the program setup instructions to install the required libraries.
- Create a directory structure:
plcEmulator/src
. - Copy the following modules into the
src
folder:lib
,honeypotLogClient
, andmodbusPlcEmulator
.
Step 2: Configure and Deploy the Log Archive Client Program
- Rename the file
src/honeypotLogClient/AgentConfig_template.txt
tosrc/honeypotLogClient/AgentConfig.txt
. - Edit the
AgentConfig.txt
file and configure the following parameters:PLC ID
,IP address
,Log server IP
,Log folder name
as shown below:
#-----------------------------------------------------------------------------
# Unique Agent ID, all the log file will be saved in the server's home/<AGENT_ID>/ folder
AGENT_ID:modbusPLC01
AGENT_IP:172.23.155.209
#-----------------------------------------------------------------------------
# FTP server info and login credentials, don't upload the credentials to the Github
FTP_SER_IP:172.23.20.5
FTP_SER_PORT:8081
USER_NAME:agent
USER_PWD:P@ssw0rd
...
#-----------------------------------------------------------------------------
# local folder save the log files.
LOG_DIR:../Logs
...
- Run the log archive client program with command
python3 logArchiveAgent.py
- Open the archive server's web agent list page (Agents View tag) to check whether the log archive agent has registered and connected successfully:
Figure-04: Honeypot deployment: Confirm PLC registered in Log archive server, version v_0.1.3 (2024)
Step 3: Configure and Deploy the PLC Emulator Program
- Rename the file
src/modbusPlcEmulator/config_template.txt
tosrc/modbusPlcEmulator/config.txt
. - Edit the
PLC ID
,IP address
, addcontroller's IP address
in allow read and write list, editmonitor hub IP address
andport
as shown below:
# This is the config file template for the PLC honeypot project's Modbus PLC
# emulator program <modbusPlcApp.py>
# Setup the parameter with below format (every line follows <key>:<value> format, the
# key can not be changed):
#-----------------------------------------------------------------------------
# OwnID should not include space or other special characters.
Own_ID:modbusPLC01
Own_IP:172.23.155.209
# The OT protocol type string, "Modbus" or "S7Comm".
PRO_TYPE:Modbus
# The ladder logic file id used by this PLC emulator.
LADDER_ID:mbLadderLogic.py
#-----------------------------------------------------------------------------
# Define the ip addresses allowed to read PLC state:
# json list format: ["masterIP", "slave1IP", ...]
ALLOW_R_L:["172.23.155.206"]
# Define the ip addresses allowed to change PLC state:
# json list format: ["masterIP", "slave1IP", ...]
ALLOW_W_L:["172.23.155.206"]
#-----------------------------------------------------------------------------
# define the monitor hub parameters :
MON_IP:172.23.20.4
MON_PORT:5000
# Time interval to report to the monitor hub in seconds:
RPT_INTERVAL:5
#-----------------------------------------------------------------------------
# Init the PLC local web Flask app parameters
FLASK_SER_PORT:5001
FLASK_DEBUG_MD:False
FLASK_MULTI_TH:True
# The PLC local web use credential record file
USERS_RCD:users.json
- Rename the user credential file
src/modbusPlcEmulator/users_template.json
tosrc/modbusPlcEmulator/users.json
. - Run the Modbus PLC emulator program with command
sudo python3 modbusPlcApp.py
- Open a browser in the honeypot network and visit http://172.23.155.209:5001 to verify that the emulator's web interface is online, as shown below:
Figure-05: Honeypot deployment: Confirm PLC emulator config page assessable, version v_0.1.3 (2024)
- Then access the monitor hub through the orchestration network and confirm that the PLC emulator has registered successfully, as shown below:
Figure-06: Honeypot deployment: Confirm PLC emulator registered on the Monitor Hub, version v_0.1.3 (2024)
Step 1: Set Up the Program
- Follow the program setup instructions in readme file to install the required libraries.
- Create the directory structure:
plcController/src
. - Copy the following modules into the
src
folder:lib
,honeypotLogClient
, andmodbusPlcController
.
Step 2: Configure and Deploy the Log Archive Client Program
- Rename the file
src/honeypotLogClient/AgentConfig_template.txt
tosrc/honeypotLogClient/AgentConfig.txt
. - Edit the
AgentConfig.txt
file to include the following details:PLC ID
,IP address
,Log server IP
,Log folder name
as shown below:
#-----------------------------------------------------------------------------
# Unique Agent ID, all the log file will be saved in the server's home/<AGENT_ID>/ folder
AGENT_ID:Controller01
AGENT_IP:172.23.155.206
#-----------------------------------------------------------------------------
# FTP server info and login credentials, don't upload the credentials to the Github
FTP_SER_IP:172.23.20.5
FTP_SER_PORT:8081
USER_NAME:agent
USER_PWD:P@ssw0rd
...
#-----------------------------------------------------------------------------
# local folder save the log files.
LOG_DIR:../Logs
- Run the log archive client program with command
python3 logArchiveAgent.py
- Open the log archive server's agent list page to verify that the log archive client has registered and connected successfully:
Figure-07: Honeypot deployment: Confirm PLC controller registered in the Log Archive server, version v_0.1.3 (2024)
Step 3: Configure and Deploy the PLC Controller Program
- Rename the
src/modbusPlcController/config_template.txt
tosrc/modbusPlcController/config.txt
, - Edit the Controller ID, IP address, target PLC ID, IP, port monitor hub IP address and port as shown below:
# This is the config file template for the the PLC honeypot project's Modbus PLC
# controller program <mbPlcControllerApp.py>
# Setup the parameter with below format (every line follows <key>:<val> format, the
# key can not be changed):
#-----------------------------------------------------------------------------
OWN_ID:Controller01
OWN_IP:172.23.155.206
# The OT protocol type string, "Modbus" or "S7Comm".
PRO_TYPE:Modbus
# The ladder logic file id used by this PLC controller.
LADDER_ID:mbLadderLogic.py
#-----------------------------------------------------------------------------
# The PLC ID and IP address, the ID must be same as the
PLC_ID:modbusPLC01
PLC_IP:172.23.155.209
PLC_PORT:502
# PLC data fetch time interval (sec)
PLC_CINT:10
#-----------------------------------------------------------------------------
# define the monitor hub parameters :
MON_IP:172.23.20.4
MON_PORT:5000
# Time interval to report to the monitor hub in seconds:
RPT_INTERVAL:5
- Run the Modbus PLC controller program
sudo python3 mbPlcControllerApp.py
- Verify that the PLC controller is registered with the monitor hub by accessing the monitor hub through the orchestration network as shown below:
Figure-08: Honeypot deployment: Confirm PLC controller registered on the Monitor Hub, version v_0.1.3 (2024)
Step 1: Set Up the Program
- Follow the program setup section to install the required libraries.
- Create the directory
plcEmulator/src
. - Copy the following modules into the
src
folder:lib
,honeypotLogClient
s7commPlcEmulator
Step 2: Configure and Deploy the Log Archive Client Program
Rename the file src/honeypotLogClient/AgentConfig_template.txt
to src/honeypotLogClient/AgentConfig.txt
.
- Edit the
AgentConfig.txt
file with the following information: PLC ID, IP address, log server IP, log folder name as shown below:
#-----------------------------------------------------------------------------
# Unique Agent ID, all the log file will be saved in the server's home/<AGENT_ID>/ folder
AGENT_ID:S7commPLC02
AGENT_IP:172.23.155.208
#-----------------------------------------------------------------------------
# FTP server info and login credentials, don't upload the credentials to the Github
FTP_SER_IP:172.23.20.5
FTP_SER_PORT:8081
USER_NAME:agent
USER_PWD:P@ssw0rd
...
#-----------------------------------------------------------------------------
# local folder save the log files.
LOG_DIR:../Logs
- Run the log archive client program using the command:
python3 logArchiveAgent.py
- Verify that the client registers and connects to the archive server by checking the agent list page. This process is similar to the configuration for the Modbus PLC Emulator VM.
Step 3: Configure and Deploy the PLC Emulator Program
- Rename the file
src/s7CommPlcEmulator/config_template.txt
tosrc/s7CommPlcEmulator/config.txt
. - Edit the
config.txt
file with the following details: PLC ID, IP address, monitor hub IP address and port as shown below:
# This is the config file template for the PLC honeypot project's S7Comm PLC
# emulator program <S7CommPlcApp.py>
# Setup the parameter with below format (every line follows <key>:<value> format, the
# key can not be changed):
#-----------------------------------------------------------------------------
# OwnID should not include space or other special characters.
Own_ID:S7commPLC02
Own_IP:172.23.155.208
# The OT protocol type string, "Modbus" or "S7Comm".
PRO_TYPE:S7Comm
# The ladder logic file id used by this PLC emulator.
LADDER_ID:s7LadderLogic.py
#-----------------------------------------------------------------------------
# define the monitor hub parameters :
MON_IP:172.23.20.4
MON_PORT:5000
# Time interval to report to the monitor hub in seconds:
RPT_INTERVAL:5
#-----------------------------------------------------------------------------
# Init the PLC local web Flask app parameters
FLASK_SER_PORT:5002
FLASK_DEBUG_MD:False
FLASK_MULTI_TH:True
# The PLC local web use credential record file
USERS_RCD:users.json
-
Rename the user credential file
src/s7CommPlcEmulator/users_template.json
tosrc/s7CommPlcEmulator/users.json
. -
Run the S7Comm PLC emulator program with command
sudo python3 s7commPlcApp.py
. -
In the honeypot network, access the URL
http://172.23.155.208:5002
to verify that the PLC emulator is ready as shown below:
Figure-09: Honeypot deployment: Confirm S7comm PLC emulator config page assessable,, version v_0.1.3 (2024)
- Check the monitor hub to ensure the emulator is registered. This process is similar to the Modbus PLC Emulator VM setup.
Step 1: Set Up the Program
- Follow the program setup section to install the required libraries.
- Create the directory
plcController/src
. - Copy the following modules into the
src
folder:lib
,honeypotLogClient
,s7commPlcController
Step 2: Configure and Deploy the Log Archive Client Program
- Rename the file
src/honeypotLogClient/AgentConfig_template.txt
tosrc/honeypotLogClient/AgentConfig.txt
. - Edit the
AgentConfig.txt
file with the following details:PLC ID
,IP address
,log server IP
,log folder name
as shown below :
#-----------------------------------------------------------------------------
# Unique Agent ID, all the log file will be saved in the server's home/<AGENT_ID>/ folder
AGENT_ID:Controller02
AGENT_IP:172.23.155.206
#-----------------------------------------------------------------------------
# FTP server info and login credentials, don't upload the credentials to the Github
FTP_SER_IP:172.23.20.5
FTP_SER_PORT:8081
USER_NAME:agent
USER_PWD:P@ssw0rd
...
#-----------------------------------------------------------------------------
# local folder save the log files.
LOG_DIR:../Logs
- Run the log archive client program with command
python3 logArchiveAgent.py
- Verify the client registration on the archive server, similar to the Modbus PLC Controller VM configuration.
Step 3: Configure and Deploy the PLC Controller Program
- Rename the file
src/s7CommPlcController/config_template.txt
tosrc/s7CommPlcController/config.txt
. - Edit the
config.txt
file with the following configurations: PLC ID, IP address, monitor hub IP address and port as shown below:
# This is the config file template for the the PLC honeypot project's Modbus PLC
# controller program <mbPlcControllerApp.py>
# Setup the parameter with below format (every line follows <key>:<val> format, the
# key can not be changed):
#-----------------------------------------------------------------------------
OWN_ID:Controller02
OWN_IP:172.23.155.207
# The OT protocol type string, "Modbus" or "S7Comm".
PRO_TYPE:S7Comm
# The ladder logic file id used by this PLC controller.
LADDER_ID:s7LadderLogic.py
#-----------------------------------------------------------------------------
# The PLC ID and IP address, the ID must be same as the
PLC_ID:S7commPLC02
PLC_IP:172.23.155.208
PLC_PORT:102
# PLC data fetch time interval (sec)
PLC_CINT:10
#-----------------------------------------------------------------------------
# define the monitor hub parameters :
MON_IP:172.23.20.4
MON_PORT:5000
# Time interval to report to the monitor hub in seconds:
RPT_INTERVAL:5
-
Run the controller program with the command:
sudo python3 s7commPlcControllerApp.py
-
Verify that the controller is registered in the monitor hub through the orchestration network. This step is similar to the S7Comm PLC Emulator VM setup.
Both the emulator and controller require the same ladder logic module to ensure proper simulation and control. You can use the provided example files, src\s7commPlcEmulator\s7LadderLogic.py
or src\modbusPlcEmulator\mbLadderLogic.py
, as templates to create your custom ladder logic.
The ladder logic is implemented using Python, allowing you to simulate complex logic operations. For instance, the following example demonstrates an 8-rung ladder logic that processes the values of 8 input holding registers and updates 8 output coils accordingly.
Ladder logic diagram example:
Figure-10: Honeypot deployment: Test ladder diagram, version v_0.1.3 (2024)
To simulate the ladder logic in Python, implement the runLadderLogic()
function in your ladder logic module as shown below:
#-----------------------------------------------------------------------------
def runLadderLogic(self, regsList, coilList=None):
""" Execute the ladder logic with the input holding register list and set
the output coils. In this example, there will be 8 rungs to be executed.
"""
# coils will be set ast the reverse state of the input registers' state.
if len(regsList) != 8: return None
# rung 0: HR0 and HR2 -> Q0
c0 = regsList[0] and regsList[7]
# rung 1: not HR1 -> Q1
c1 = not regsList[1]
# rung 2: HR2 and HR3 and HR4 -> Q2
c2 = regsList[2] and regsList[3] and regsList[4]
# rung 3: not HR0 or HR6 -> Q3
c3 = (not regsList[0]) or regsList[6]
# rung 4: not (HR4 or HR5) -> Q4
c4 = not (regsList[4] or regsList[5])
# rung 5: (not HR0) and HR6 -> Q5
c5 = (not regsList[0]) and regsList[6]
# rung 6: HR3 or (not HR7) -> Q6
c6 = regsList[3] or (not regsList[7])
# rung 7: HR5 -> Q7
c7 = regsList[5]
return [c0, c1, c2, c3, c4, c5, c6, c7]
Both the PLC emulator and the controller will use this ladder logic module and call the runLadderLogic()
function for execution and verification. This ensures consistency between the simulated PLC ladder logic and the control logic in the controller.
This case study demonstrates how to detect and respond to a Modbus-TCP False Command Injection Attack using the deployed honeypot system (introduced in the previous section). For details on attack alerts and notifications, refer to the Alert and Notification section in the README file.
In this scenario, an attacker attempts to compromise the target PLC in three key steps:
- Identify the Target: Use
Nmap
to scan the network, identify the PLC, and discover open ports. - Modify Access Permissions: Attempt to read or write data to the PLC and access its configuration page to alter access permissions.
- Execute the Attack: Launch a False Command Injection attack to manipulate PLC coil data by injecting incorrect commands.
The defender detects the attack path and uses the monitor hub’s reports to identify and respond to the attack. The diagram below illustrates the design of the attack scenario with the red team attack path and the blue team detection path:
Figure-11: Honeypot Attack Detection: attack Path and detection path , version v_0.1.3 (2024)
The attacker initiates an Nmap scan to probe the target Modbus PLC's IP address(172.23.155.209) , as shown below:
Figure-12: Honeypot Attack Detection: attacker nmap scan result, version v_0.1.3 (2024)
From the scan, the attacker identifies 2 open ports:
- TCP Port 502: Associated with the
mbap
service, indicating a Modbus-TCP server potentially running on a PLC device. - TCP Port 5001: Associated with the
commplex-link
service, possibly hosting an HTTP(S) server.
The attacker performs the following actions:
- Sends
curl
requests tohttp://172.23.155.209:5001
andhttps://172.23.155.209:5001
to verify the HTTP service response. - Creates a simple Modbus Read/Write client script to test read and write operations on the PLC:
# A simple modbus IO program, for the lib modbusTcpCom, please refer to this link:
# https://github.com/LiuYuancheng/PLC_and_RTU_Simulator/blob/main/Modbus_PLC_Simulator/src/modbusTcpCom.py
import time
import modbusTcpCom
hostIp = '172.23.155.209'
hostPort = 502
client = modbusTcpCom.modbusTcpClient(hostIp)
print('Try to connect to the target PLC: %s' %str(hostIp))
while not client.checkConn():
print('Try connect to the PLC')
print(client.getCoilsBits(0, 4))
time.sleep(0.5)
# Start the attack
print('Target PLC accept connection request.')
time.sleep(1)
while True:
print("Inject wrong data...")
rst1 = client.setCoilsBit(4, False)
time.sleep(0.2)
rst2 = client.setCoilsBit(6, True)
time.sleep(0.5)
if rst1 is None and rst2 is None: print("injection failed")
When running the script, read and write attempts fail because the attacker's IP (172.23.144.1
) is not in the PLC’s Allow Read/Write List, the I/O request are rejected by the PLC.(As shown below)
Figure-13: Honeypot Attack Detection: Modbus-TCP data read and write script result, version v_0.1.3 (2024)
Defender Response: From the blue team side, the defenders check the monitor hub for
ModbusPLC01
's state page and they can observe Port Touch Warnings for Nmap scans andcurl
actions as shown below:
Figure-14: Honeypot Attack Detection: nmap and curl detection, version v_0.1.3 (2024)
The attacker accesses the PLC config page at http://172.23.155.209:5001
using a browser. Upon identifying the device as an M221 PLC, the attacker searches online and finds default login credentials on this link: https://www.se.com/eg/en/faqs/FAQ000241261/ .
Using the default admin credentials, the attacker logs in, as shown:
Figure-15: Honeypot Attack: Attacker login the PLC with default credentials, version v_0.1.3 (2024)
Defender Response: The blue team observes login activity on the monitor hub. Although this is currently classified as normal, it can be configured to trigger a warning for admin user logins (based on the blue team's config):
Figure-16: Honeypot Attack Detection: Detect the admin user login , version v_0.1.3 (2024)
After successful gaining access PLC config interface, the attacker modifies the Allow Write List, adding his attack node IP (172.23.144.1
) as shown below:
Figure-17: Honeypot Attack: Attacker add the attack node IP in the allow write list, version v_0.1.3 (2024)
Defender Response: From the blue team side, the defender checked the monitor hub's PLC ModbusPLC01's state page, and find that some one is trying to add one unauthorized IP address in the PLC data access and modification list as shown below:
Figure-18: Honeypot Attack Detection: Detect the attacker modified the PLC allow write list , version v_0.1.3 (2024)
And based on the report, the blue team defender finds the attacker's IP address 172.23.144.1.
Having modified the access permissions, the attacker reruns the Modbus client script. This time, the PLC accepts the injected coil data, as shown:
Figure-19: Honeypot Attack: attacker run the false command injection attack script , version v_0.1.3 (2024)
The attacker also confirms the changes via the PLC state page.
**Defender Response: **The blue team checks the monitor hub's PLC Controller01's state page and detects unauthorized data modifications in the PLC state page and views detailed alerts on the monitor hub(as shown below):
Figure-20: Honeypot Attack Detection: Detect the PLC output not match the controller's expected result, version v_0.1.3 (2024)
The attack is detected. Now the blue team go to the log archive server web interface to check the controller's latest log:
Figure-21: Honeypot Attack Detection: Check the PLC controller's Log file, version v_0.1.3 (2024)
By accessing the log archive server, the defender reviews recent logs to identify specific changes made by the attacker. The logs confirm that Coil 04 was set to
False
and Coil 06 toTrue
as shown below:
Figure-21: Honeypot Attack Detection: Detect injected false command from the Log file, version v_0.1.3 (2024)
Defender Response: Attack Timeline and Path Analysis
The defender reconstructs the attack timeline based on the alerts and logs, as shown below:
Time stamp | Attack Action |
---|---|
2024-11-30 9:10:23 am | Attack try to scan the PLC-ModbusPLC01(172.23.155.209) ports. |
2024-11-30 9:10:23 to 9:14:26 | Attacker try to prob the PLC-ModbusPLC01's http server. |
2024-11-30 9:16:26 | Attacker access the PLC main landing page from the attack nodes browser |
2024-11-30 9:18:06 | Attacker use the PLC default admin account login to the PLC's configure interface. |
2024-11-30 9:18:51 | Attacker added his attack node's IP 172.23.144.1 in the PLC's allow write list. |
2024-11-30 9:23:13 | Attacker start the attack and try to modified the PLC data. |
2024-11-30 9:23:13 - 2024-11-30 9:56:13 | Attacker keep send the PLC coil data change command to over write coil idx04 to False and coil idx06 to True. |
Mitigation and Recovery
-
Access Control Reset: From the Orchestration Network, the defender disables the attacker’s user account and restores the correct Allow Write List.
-
Alert Escalation: Configure login attempts by admin accounts as warnings.
-
Log Review: Continuously monitor logs for unauthorized changes and suspicious activity.
last edit by LiuYuancheng (liu_yuan_cheng@hotmail.com) by 30/11/2024 if you have any problem, please send me a message.