Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Cisco AMP Device Flow Control (ampnetworkflow.ko)

Craig Davison crdaviso@cisco.com

Description

This Linux kernel module monitors socket calls (send, recv, connect and accept) made by userland processes.

Supported kernels

This module has been tested on kernels 2.6.18 (as distributed in CentOS 5) through 4.13 (as distributed in Ubuntu 17.10). This module requires jprobes, so kernel version 4.15 and higher are not currently supported.

Build the module

Build the module by running make:

$ make
make -C /lib/modules/2.6.18-417.el5/build M=/home/crdaviso/ampnetworkflow EXTRA_CFLAGS="-I/home/crdaviso/ampnetworkflow/common/include " modules
make[1]: Entering directory `/usr/src/kernels/2.6.18-417.el5-x86_64'
  CC [M]  /home/crdaviso/ampnetworkflow/networkflow.o
  CC [M]  /home/crdaviso/ampnetworkflow/sockcallwatch_kprobe.o
  CC [M]  /home/crdaviso/ampnetworkflow/amp_skactg.o
  CC [M]  /home/crdaviso/ampnetworkflow/amp_addrcache.o
  CC [M]  /home/crdaviso/ampnetworkflow/common/src/amp_log.o
  LD [M]  /home/crdaviso/ampnetworkflow/ampnetworkflow.o
  Building modules, stage 2.
  MODPOST
  CC      /home/crdaviso/ampnetworkflow/ampnetworkflow.mod.o
  LD [M]  /home/crdaviso/ampnetworkflow/ampnetworkflow.ko
make[1]: Leaving directory `/usr/src/kernels/2.6.18-417.el5-x86_64'

To build the module with verbose logging support, run make EXTRA_CFLAGS=-DAMP_DEBUG.

Build the test client

Build the test client in the test_client directory (requires libmnl - http://www.netfilter.org/projects/libmnl/):

$ cd test_client
$ make
cc -o test_client test_client.c -Wall -Wextra -g -lmnl

Run the test client

Run the test client as root. Sample output for a wget session:

$ sudo ./test_client
genl ctrl msg
Family ID: 22
amp msg
SK_OP SEND pid 15455 uid 500 filename /usr/bin/wget local_addr 172.16.231.199:49526 remote_addr 172.16.231.2:53 proto 17 sock_id 72398988640257
amp msg
SK_OP RELEASE pid 15455 uid 500 filename /usr/bin/wget local_addr 172.16.231.199:49526 proto 17 sock_id 72398988640257
amp msg
SK_OP SEND pid 15455 uid 500 filename /usr/bin/wget local_addr 172.16.231.199:56547 remote_addr 172.16.231.2:53 proto 17 sock_id 72398988640258
amp msg
SK_OP RELEASE pid 15455 uid 500 filename /usr/bin/wget local_addr 172.16.231.199:56547 proto 17 sock_id 72398988640258
amp msg
SK_OP CONNECT pid 15455 uid 500 filename /usr/bin/wget local_addr 0.0.0.0:0 remote_addr 173.37.145.84:80 proto 6 sock_id 72398988640259
amp msg
SK_OP SEND pid 15455 uid 500 filename /usr/bin/wget local_addr 172.16.231.199:32965 remote_addr 173.37.145.84:80 proto 6 sock_id 72398988640259 payload [GET / HTTP/1.0..User-Agent: Wget/1.11.4 Red Hat modified..Accept: */*..Host: www.cisco.com..Connection: Keep-Alive....] payload_seqnum 0
amp msg
SK_OP RELEASE pid 15455 uid 500 local_addr 172.16.231.199:32965 remote_addr 173.37.145.84:80 proto 6 sock_id 72398988640259
You can’t perform that action at this time.