All Projects → momalab → Icsref

momalab / Icsref

Licence: mit
A tool for reverse engineering industrial control systems binaries.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Icsref

Darter
🕵️ Dart / Flutter VM snapshot analyzer
Stars: ✭ 57 (-24%)
Mutual labels:  reverse-engineering
Chimay Red
Mikrotik RouterOS (6.x < 6.38.5) exploit kit. Reverse engineered from the "Vault 7" WikiLeaks publication.
Stars: ✭ 63 (-16%)
Mutual labels:  reverse-engineering
D2s Format
Diablo II Save File Format (.d2s format)
Stars: ✭ 71 (-5.33%)
Mutual labels:  reverse-engineering
Ghidra Pyi Generator
Generates `.pyi` type stubs for the entire Ghidra API
Stars: ✭ 59 (-21.33%)
Mutual labels:  reverse-engineering
Malware Analysis Scripts
Collection of scripts for different malware analysis tasks
Stars: ✭ 61 (-18.67%)
Mutual labels:  reverse-engineering
Stratatools
Stratasys EEPROM tool
Stars: ✭ 65 (-13.33%)
Mutual labels:  reverse-engineering
Starflight Reverse
Reversed engineered game Starflight (1986)
Stars: ✭ 56 (-25.33%)
Mutual labels:  reverse-engineering
Arcore Patch
Attempt to get ARCore Preview 2 running on unsupported devices
Stars: ✭ 74 (-1.33%)
Mutual labels:  reverse-engineering
Wnfun
WNF Utilities 4 Newbies (WNFUN)
Stars: ✭ 63 (-16%)
Mutual labels:  reverse-engineering
Entityframework Reverse Poco Generator Ui
A simple UI to allow you to easily select which tables you want the EntityFramework Reverse POCO Code First Generator to use.
Stars: ✭ 69 (-8%)
Mutual labels:  reverse-engineering
Wechatpri
个人版微信
Stars: ✭ 59 (-21.33%)
Mutual labels:  reverse-engineering
Simple Polymorphic Engine Spe32
Simple Polymorphic Engine (SPE32) is a simple polymorphic engine for encrypting code and data. It is an amateur project that can be used to demonstrate what polymorphic engines are.
Stars: ✭ 59 (-21.33%)
Mutual labels:  reverse-engineering
Pmd Red
Decompilation of Pokémon Mystery Dungeon: Red Rescue Team
Stars: ✭ 65 (-13.33%)
Mutual labels:  reverse-engineering
Vgm ripping
Sources for game music ripping tools
Stars: ✭ 58 (-22.67%)
Mutual labels:  reverse-engineering
App Peid
PEiD detects most common packers, cryptors and compilers for PE files.
Stars: ✭ 72 (-4%)
Mutual labels:  reverse-engineering
Dll hook Rs
Rust code to show how hooking in rust with a dll works.
Stars: ✭ 57 (-24%)
Mutual labels:  reverse-engineering
Fishchat
Hook WeChat.app on non-jailbroken devices.
Stars: ✭ 1,139 (+1418.67%)
Mutual labels:  reverse-engineering
Rms Runtime Mobile Security
Runtime Mobile Security (RMS) 📱🔥 - is a powerful web interface that helps you to manipulate Android and iOS Apps at Runtime
Stars: ✭ 1,194 (+1492%)
Mutual labels:  reverse-engineering
Dainsleif
⚡️ A simple model cheat for CSGO a.k.a. Counter-Strike: Global Offensive.
Stars: ✭ 74 (-1.33%)
Mutual labels:  reverse-engineering
Appmon
Documentation:
Stars: ✭ 1,157 (+1442.67%)
Mutual labels:  reverse-engineering

ICSREF: ICS Reverse Engineering Framework


Overview

ICSREF is a modular framework that automates the reverse engineering process of CODESYS_ binaries compiled with the CODESYS v2 compiler.

.. code-block:: none

    _______________ ____  ____________
   /  _/ ____/ ___// __ \/ ____/ ____/
   / // /    \__ \/ /_/ / __/ / /_    
 _/ // /___ ___/ / _, _/ /___/ __/    
/___/\____//____/_/ |_/_____/_/       

by Tasos Keliris \@koukouviou_

.. _\@koukouviou: https://www.twitter.com/koukouviou

Preview

.. raw:: html

<embed>
    <a href="https://asciinema.org/a/9l96XWgNttz1WTdXGIngMAAKe" target="_blank"><img src="https://asciinema.org/a/9l96XWgNttz1WTdXGIngMAAKe.png" /></a>
</embed>

Analyses

The framework can:

  • Perform core analysis of arbitrary PRG programs. Core analysis includes:

    1. Delimitation of binary blobs (i.e., functions/routines).
    2. Identification of calls to dynamic libraries.
    3. Identification of calls to static libraries (other locations in the same binary).
    4. Identification of how many and which physical I/Os the binary uses, provided a TRG file that contains the memory mappings of physical I/Os of the particular device the binary is compiled for.
  • Identify known library functions included statically in the binary:

    1. Using an opcode-based hash matching technique
    2. Using experimental signature-based techniques. This is at the moment only implemented for Proportional-Integral-Derivative (PID) CODESYS library functions.
  • Extract arguments passed to static functions. This is at the moment only implemented for the PID_FIXCYCLE CODESYS library function, but it is trivial to extend this to other functions of interest.

    1. Argument extraction is powered by symbolic execution and angr
    2. It can handle cases where the arguments are not impacted by I/O measurements (i.e., defined globally or passed directly)
  • Plot SVG graphs of the analyzed binary, including:

    1. Calls between static functions
    2. Calls to dynamic functions
    3. Hyperlinks to the disassembly listings of each function from the SVG

Graphs are powered by Graphviz_. Here's a neat example:

.. image:: docs/images/graph_hil.jpg :width: 500pt

.. _CODESYS: https://www.codesys.com/ .. _Graphviz: https://graphviz.org/

The framework supports an interactive mode, where all the processing modules are loaded. Users can further investigate and analyze their binaries by exploring the different options. The interactive environment also offers useful help docstrings.

.. code-block:: none

(icsref) [email protected]:$ ./icsref.py

ICS Reverse Engineering Framework
    _______________ ____  ____________
   /  _/ ____/ ___// __ \/ ____/ ____/
   / // /    \__ \/ /_/ / __/ / /_    
 _/ // /___ ___/ / _, _/ /___/ __/    
/___/\____//____/_/ |_/_____/_/       
                           
author: Tasos Keliris (@koukouviou)
Type <help> if you need a nudge
[email protected]:$ 
[email protected]:$ help

Documented commands (type help <topic>):
========================================
__changepid         changepid       exp_pid_match  history  pyscript  set      
__replace_callname  cleanup         graphbuilder   load     quit      shell    
_relative_load      cmdenvironment  hashmatch      pidargs  run       shortcuts
analyze             edit            help           py       save      show     

Installation

See INSTALL_

.. _INSTALL: INSTALL.rst

Documentation

The ICSREF API is documented in a Read the Docs style. Once you download the repository you can traverse the docs directory and open index.html in your favorite browser.

Cite us!

If you find our work interesting and use it in your (academic or not) research, please cite our NDSS'19 paper describing ICSREF:

Anastasis Keliris, and Michail Maniatakos, "ICSREF: A Framework for Automated Reverse Engineering of Industrial Control Systems Binaries", in NDSS'19.

Acknowledgements

ICSREF, as all things good in life, is based on the shoulder of giants. The framework relies on symbolic execution using angr for performing the most interesting analyses such as calculating offsets for static calls and the arguments to function calls. Disassembly listings for the graphing module are generated using the amazing r2. The interactive mode of the tool is powered by the cmd2 python tool. Beautiful documentation is generated with Sphinx and the sphinx_rtd_theme.

  • angr <http://angr.io/>__
  • radare2 <https://rada.re>__
  • cmd2 <https://github.com/python-cmd2/cmd2>__
  • Sphinx <http://sphinx-doc.org/>__
  • sphinx_rtd_theme <https://sphinx-rtd-theme.readthedocs.io/>__

Contributors

A big thank you to everyone contributing on this project. See CONTRIBUTORS_

.. _CONTRIBUTORS: CONTRIBUTORS

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].