readme

January 19, 2020 ยท View on GitHub

This scripts are a group of functions that try different "attacks" against del Modicon M340 PLC. Among the attacks that can be tried are:

  • Try default FTP passwords
  • Write blocks of rubbish in the PLCs memory
  • Obtain information of any kind
    • Get all system bits
    • Get all system words
    • Monitor all system bits
    • Extract general PLC information
    • Extract network information
    • Extract zlib blobs from snmp
  • Store file in holding registers
  • Recover file from holding registers
  • stop PLC remotely
  • delete backup strategy

Other additional non-malicious functions:

  • Upload strategy
  • Download strategy
  • Get Card Information
  • Check if PLC is running
  • start PLC
  • Set Date
  • Set Time
  • Get Time

This script are confirmed by the following files:

- malmod.py : Starting point. Will launch a screen menu based on CURSES that will allow do different operations against a PLC. The script can also be run without CURSES menu. The script options are:

	usage: malmod.py [-h] [-v|-w] -m <PLC IP> [-u <File to Upload>|-d <File to Download>|-i|-c|-a|-b|-x|-y|-k|-l|-L|-f|-n]
			-h: this help text
			-m <IP>: PLC IP address
	MODIFIERS:
			-v | --verbose: verbose output
			-w | --very-verbose: very verbose output
	ACTIONS:
			--upload-strategy | -u <PATH>: ATX file to upload
			--download-strategy | -d <PATH>: Path to ATX file to download strategy in
			--get-info | -i: Get Device Information
			-s: Get Card Information
			--store-file | -a <FILE>: Store File in Holding registers
			--retrieve-file | -b <FILE>: Retrieve File in Holding registers
			--command-file | -c <FILE>: Command File (Only in listener mode)
			--listener-mode | -l: Listener Mode
			--ncurses | -n: use curses interface
			--restore-backup | -R: Restore strategy from backup
			--delete-backup | -D: Delete backup of strategy from card
			--backup | -B: Backup styrategy into card
			--start | -y: Start PLC
			-x: Check if PLC is Running (with -v)
			--stop | -z: Stop PLC
			--kill-plc | -k: Stop PLC
			-f: Try default FTP passwords
			--set-date=<DD/MM/YYYY>
			--set-time=<HH:MM:SS>
			--get-time: return time of PLC

- umas.py : Includes a pseudo-library for interacting with the Modicon M-340 using the UMAS library

- mal_functions.py: Includes a set of malicious functions that can be used against a Modicon M340 PLC

- modbus.py: Very bad chosen name for a set of auxiliary functions used by the rest of scripts to work. This file include functions like ione that opens and maintain it open a port the PLC can interact with, among others

- cliente_modbus.py: Python script for doing normal modbus requests against the modicon PLC. This does not use UMAS