Memory sniffing in linux


 
Thread Tools Search this Thread
Top Forums Programming Memory sniffing in linux
# 1  
Old 01-13-2009
PHP Memory sniffing in linux

I am trying to create an application that will be able to sniff memory of other applications.

I am not completely new to systems programming but I am not sure how to go about this task. I understand that accomplishing this mainly require these steps.

1: Get a list of processes
2: Find the process you want to sniff.
3: Get a list of page tables assigned to that process
4: Get R / R/W access to these page tables.
5: Sniff away.

I can do 1&2 just fine, but I have no clue how to accomplish the rest.

I understand that 3 will have to do something with the process control block, and 4 will probably have to do with some system calls with high privileges.

Any advice on doing this would be appreciated, and if there are any books on this subject in particular, that would be great as well.
# 2  
Old 01-13-2009
/proc/n/maps shows what segments are mapped into a process' memory:

Code:
$ cat /proc/$$/maps
08048000-080e3000 r-xp 00000000 03:02 737092     /bin/bash
080e3000-080e8000 rw-p 0009a000 03:02 737092     /bin/bash
080e8000-0810e000 rw-p 080e8000 00:00 0          [heap]
b7d7f000-b7dc0000 rw-p b7d7f000 00:00 0
b7dc0000-b7dc8000 r-xp 00000000 03:02 610050     /lib/libnss_files-2.4.so
b7dc8000-b7dca000 rw-p 00007000 03:02 610050     /lib/libnss_files-2.4.so
b7dca000-b7dd2000 r-xp 00000000 03:02 610082     /lib/libnss_nis-2.4.so
b7dd2000-b7dd4000 rw-p 00007000 03:02 610082     /lib/libnss_nis-2.4.so
b7dd4000-b7de5000 r-xp 00000000 03:02 610079     /lib/libnsl-2.4.so
b7de5000-b7de7000 rw-p 00010000 03:02 610079     /lib/libnsl-2.4.so
b7de7000-b7de9000 rw-p b7de7000 00:00 0
b7de9000-b7def000 r-xp 00000000 03:02 610084     /lib/libnss_compat-2.4.so
b7def000-b7df1000 rw-p 00005000 03:02 610084     /lib/libnss_compat-2.4.so
b7df1000-b7df2000 rw-p b7df1000 00:00 0
b7df2000-b7f09000 r-xp 00000000 03:02 610107     /lib/libc-2.4.so
b7f09000-b7f0b000 r--p 00116000 03:02 610107     /lib/libc-2.4.so
b7f0b000-b7f0d000 rw-p 00118000 03:02 610107     /lib/libc-2.4.so
b7f0d000-b7f10000 rw-p b7f0d000 00:00 0
b7f10000-b7f12000 r-xp 00000000 03:02 609797     /lib/libdl-2.4.so
b7f12000-b7f14000 rw-p 00001000 03:02 609797     /lib/libdl-2.4.so
b7f14000-b7f4d000 r-xp 00000000 03:02 962933     /lib/libncurses.so.5.6
b7f4d000-b7f56000 rw-p 00038000 03:02 962933     /lib/libncurses.so.5.6
b7f56000-b7f57000 rw-p b7f56000 00:00 0
b7f62000-b7f64000 rw-p b7f62000 00:00 0
b7f64000-b7f65000 r-xp b7f64000 00:00 0          [vdso]
b7f65000-b7f7f000 r-xp 00000000 03:02 609869     /lib/ld-2.4.so
b7f7f000-b7f80000 r--p 00019000 03:02 609869     /lib/ld-2.4.so
b7f80000-b7f81000 rw-p 0001a000 03:02 609869     /lib/ld-2.4.so
bf939000-bf94f000 rw-p bf939000 00:00 0          [stack]

The bolded segments contain live data, while the rest are shared libraries or kernel things.

/proc/n/mem allows arbitrary access to a process' virtual memory space, but only for the root user.
# 3  
Old 01-15-2009
Probably this is a kernel programming related problem. It would be easier to create a kernel module that accessed a certain program's memory and then a system call so you could access everything through user-space.

Alternatively you have ptrace() that allows you to see and change in any program's core image and registers.

Ultimately, you could query /proc/iomem to see the offset of your RAM in /dev/mem (grep "System RAM" /proc/iomem|tail -n 1) and then go sniff around the binary data within your system's ram.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Linux

Underutilization of Linux memory

Hi All, We are running a python application on an RHEL 7 VM machine hosted in Azure. Machine has 8GB of memory & 2GB of swap space configured as swap file. Below the output of free command from the server. #-> free -h total used free shared buff/cache ... (12 Replies)
Discussion started by: veeresh_15
12 Replies

2. Red Hat

Shared memory in linux

Hello, I am using Linux os. $ df -k /dev/shm Filesystem 1K-blocks Used Available Use% Mounted on tmpfs 2023256 1065000 958256 53% /dev/shm $ Based on my google this, it is shared memory. What is this shared memory and where exactly it is used? Can you... (5 Replies)
Discussion started by: govindts
5 Replies

3. What is on Your Mind?

Wired keyboard sniffing

Are we safe using the everyday wired keyboard? Although this concept is old, I had never seen an actual implementation on the matter until a few days ago. (Four ways of sniffing the electromagnetic emanations of wired keyboards currently on the market in up to 20 meters.) Check the videos at:... (2 Replies)
Discussion started by: redoubtable
2 Replies

4. Linux

Linux Memory Track

Hi All, We are using the linux servers and need to track the memory utilization of the box. Could anyone advice how the same can be achived. :) (1 Reply)
Discussion started by: haitorajesh
1 Replies

5. Shell Programming and Scripting

Pcap.h Sniffing

Can someone please help me figure out how to use pcap.h to sniff packets between only 2 computers whose mac addresses are know? Thanks (0 Replies)
Discussion started by: papabearcares
0 Replies

6. Programming

Pcap.h Sniffing

Can someone please help me figure out how to use pcap.h to sniff packets between only 2 computers whose mac addresses are know? Thanks (0 Replies)
Discussion started by: papabearcares
0 Replies

7. UNIX for Advanced & Expert Users

Memory managment - linux

Hi, I having problem with my linux machine it have 6Gb physical memory and somehow it always almost coming to the bottom neck and than it start writing to the swap memory you can see that there is more than 4G in cahce, is there any way to clean the cache or to limit it to 2Gb? host1... (6 Replies)
Discussion started by: Igal Malka
6 Replies

8. Programming

memory layout in C on linux

Hi, Does any one know what tool to use to visualize how is memory layed out for C on linux systems. I mean how much stack portion is used in functional call. Where exactly does the argument to function sit in memory ? I have written small program pasted below. But I am not able to infer... (3 Replies)
Discussion started by: parasa
3 Replies

9. IP Networking

Sniffing an established port

Hi All, On a solaris box A port B in which port B is established and receiving data. My question is how do i listen on that established port , how can i get the data received at box A: port B through my application I had searched the forum for the same, but i am unable to retrieve the... (5 Replies)
Discussion started by: matrixmadhan
5 Replies
Login or Register to Ask a Question