Project Description
APIMon project makes it easier for test engineers to check/investigate behavior of the program on the level of API calls. With APIMon developer can specify program activity using Colored Petri Nets.

The project consists of three relatively independent parts.
  1. APIMonLib performs basic processing of intercepted API calls at the target of interception.
    1. Defines useful PInvoke signatures for ntdll.dll, kernel32.dll, ws2_32.dll.
    2. Wraps parameters and results of intercepted calls into messages and delivers them to processing facility.
    3. Asynchronously sends them to injecting process for further processing.
  2. CPN part defines specialized implementation of Colored Petri Nets (CPN) model for fast processing of API calls.
    1. Provides effective mechanism to define CPNs in C#.LINQ
    2. Provides extensions useful for API call monitoring
  3. APIMon is the central part of the project.
    1. Injects interception library to target processes with help of EasyHook
    2. Defines useful building blocks for effective and readable description of APImonitoring CPNs
    3. Assembles CPN capable of detecting malicious functionalities.
    4. Redirects messages coming from target processes to CPN.
    5. May launch, inject library, kill processes from predefined list.

APIMon project can not enforce security and can be easily avoided by the modern malware. Nevertheless APIMon is very useful tool for reverse engineering of the program behavior. Authors are planning to adapt this project to the data coming from Virtual Machine Manager or System call interposition engine.

The application of Colored Petri Nets to malware detection is described in the articles:
  1. A. G. Tokhtabayev, V. A. Skormin and A. M. Dolgikh, "Detection of Worm Propagation Engines in the System Call Domain using Colored Petri Nets", IPCCC 2008
  2. A. Tokhtabayev, V. Skormin and A Dolgikh, “Expressive, Efficient and Obfuscation Resilient Behavior Based IDS” ESORICS 2010, September, 2010 Athens, Greece.

Last edited Feb 15, 2011 at 10:13 PM by mail_collector, version 26