Visit Our UNIX and Linux User Community


Manipulate the Linux ARP Cache in C


 
Thread Tools Search this Thread
Top Forums Programming Manipulate the Linux ARP Cache in C
# 8  
Old 08-15-2009
Hey jim,
That's the thing, there are NO solutions out there, applications like arpguard, arpwatch and the others just sends an e-mail to the administrator telling him "hey, your network is down because of an ARP attack", i don't consider this a solution.

arptables, yes, it may be a possible solution to what i'm looking for, but it doesn't analize the ethernet data, so, does not work for me.

I just want to know how to check the arriving ARP frames, and if my program conditions consider it as a valid one, THEN apply the ARP Message to the cache. I'm able to do all of that, except for the cache thing.

So, do i have to code a linux kernel module? how do i do it? i'm just asking for the way to do it, not for the solution itself.
# 9  
Old 08-16-2009
Thank you for finally telling me what you actually wish to solve -- or at least 2 words of it -- instead of the railroaded solution you demand for it. We know you're more interested in doing it your way, you don't have to keep telling us that, but when a "solution" gets to the point of modifying the kernel's source code by hand, that's usually considered a wakeup call! I don't know how to do it, and not for lack of trying. Kernel programming is its own specialty entirely.

arpon might be worth consideration. It claims to actually fight the problem of ARP spoofing, not just report it.

Last edited by Corona688; 08-16-2009 at 03:24 PM..
# 10  
Old 08-16-2009
Hey Corona688, Thank you for your reply and please excuse me for repeatedly saying the same things and for my english, it's not my mother language and i feel the need to know that i'm being understood.

Yes, i knew about ArpON, and it's a good point to start with.

I'm doing a research on ARP Protocol and writing a book about it. I've analyzed what are weaknesses of the protocol and i know i'm able to make this protocol secure (even more than ArpON does). I know how to program some things, but i cannot know it all, so i've been reading and asking about how to do this.

Applications like arptables or ArpON itself work in user-space level, so it's quite obvious that i don't need to get with the kernel to do what i want. I know i could read the code and apply the methods used by them in my program, but there are some parts of the code that i sincerely do not understand.

So, i am going to read the entire code of ArpON and arptables and try to get how to do it, i guess. if i succeed, i'll post here the solution, but still i'll be waiting for any help.

Once more, Thank you.
# 11  
Old 08-17-2009
Assuming that you are using a Linux kernel, most of the ARP code is in ../net/ip4/arp.c.

The three ioctls that you will need if you are going to manipulate arp entries from userspace are
Code:
SIOCDARP
SIOCSARP
SIOCGARP

Note your application will need CAP_NET_ADMIN capability.

You do know that ARP is being phased out in favor of NDP? IPv6 uses NDP.
# 12  
Old 08-17-2009
Hello fpmurphy, Thanks for reply.

Yes, i am aware of IPv6 and the Neightbor Discovery Protocol, but i'm totally sure that IPv4 will be with us for a long time, at least implemented on corporative LANs because of its simplicity and short address size.

About CAP_NET_ADMIN, yes, the user must be root to run the application i'm designing, i think this won't be a problem, because if you want to secure the host i think you would be the sysadmin.

Didn't think about this IOCTL commands, it's a big step ahead, i'm reading the sources right now.

Thank you very very much!
# 13  
Old 08-17-2009
The Goal

I'm able to analize every field of the ARP frame that i capture, but not to avoid the malicious frame to take effect over the cache because i can't stop the kernel.

So, how can i do that? how could i check the frame and if it's a valid one THEN apply it to the cache, just before the kernel does it?


I have no room to speak here, and will most likely get bashed to death. Smilie

However, what the goal here seems to be is: Intercept packets before they get to the cache, qualify them as malicous or non-malicious.

So wouldn't a good firewall do this??
# 14  
Old 08-17-2009
ARP operates at a lower level than most firewalls.

Previous Thread | Next Thread
Test Your Knowledge in Computers #429
Difficulty: Medium
JavaScript is officially managed by Mozilla Foundation.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Clearing memory cache on Linux server

i wish to clear memory cache on a production box and i was wondering what is the worst that can happen if i do? i already tested this on a backup server and everything seemed fine. but i need to know from you experts what are the worst things that can happen when i run it on a real server: ... (5 Replies)
Discussion started by: SkySmart
5 Replies

2. Linux

Help Me: How to set ARP stale time interval on linux platform for Ipv6 interface

Hi, Can any one please help me increase the arp stale time of an ipv6 interface on linux platform ? I have tried increasing the variable gc_stale_time but that doesnt work. Thanks (2 Replies)
Discussion started by: dkothapa
2 Replies

3. Linux

Linux cache

Hi, We are working on OEL5.7 (Oracle Linux) OS. We have a server with 64GB RAM. When we issue free -m command which shows the used, available and cached space. Most of the space is shown in cached section, where as we are not really doing much activity on the server. It's like cached is... (5 Replies)
Discussion started by: shrshah64
5 Replies

4. Linux

File cache /Page cache Linux

Hi All, could any one point out any open source test-suites for "File cache" testing and as well as performance test suites for the same. Currently my system is up with Linux/ext4. Regards Manish (0 Replies)
Discussion started by: hmanish
0 Replies

5. UNIX for Advanced & Expert Users

linux memory buffers & cache usage

18:45:47 # free -m total used free shared buffers cached Mem: 96679 95909 770 0 1530 19550 -/+ buffers/cache: 74828 21851 Swap: 12287 652 11635 Hi all. The below output is from a RHEL 4.5... (0 Replies)
Discussion started by: drummerrob
0 Replies

6. Linux

getting info on Cache Size, Data Cache etc..

Hi all I saw in Microsoft web site www.SysInternals.com a tool called CoreInfo from able to print out on screen the size of the Data and Instruction caches of your processor, the Locigal to Physical Processor mapping, the number of the CPU sockets. etc.. Do you know if in Linux is available a... (2 Replies)
Discussion started by: manustone
2 Replies

7. Linux

Linux cache

Hi all I am trying to understand the kernel memory management and require assistance in this regard. Kernel first creates the cache memory to perform any subsequent allocation to processes. I could not figure out how it is accomplished. Do kernel directly allocates any hardware cache or allocates... (0 Replies)
Discussion started by: joshighanshyam
0 Replies

8. IP Networking

how can we spoof ethernet by ARP cache poisoning on unix through a program

how can we spoof ethernet by ARP cache poisoning on unix through a program... can anyone post the source code to achieve this... (1 Reply)
Discussion started by: ud4u
1 Replies

9. Solaris

ARP Cache

Dear all, We are testing two of our servers for mq series connectivity. The scenario is, when one machine is shutting down it's services there are some scripts that do a dns update, which removes the ip address and relates it to the ip address of the other node on our dns server, and the update... (7 Replies)
Discussion started by: earlysame55
7 Replies

10. UNIX for Advanced & Expert Users

UBC cache vs. Metadata cache

hi, What is the difference between UBC cache and Metadata cache ? where can i find UBC cache Hits and Metadata cache Hits in hp-ux? Advanced thanx for the help. (2 Replies)
Discussion started by: sushaga
2 Replies

Featured Tech Videos