Sniffer for Windows That Shows Process ID?

Sniffer for Windows That Shows Process ID?

Secure Home | Search | About
 Networking Firewalls    Post an article   get this group's latest topics as an RSS feed add this group's latest topics to your My MSN content add this group's latest topics to your My Yahoo content add this group's latest topics to your Google content
Subject Author Date
Sniffer for Windows That Shows Process ID? Will 10-10-2007
Posted by Vernon Schryver on October 14, 2007, 5:53 pm
If you were  Registered and logged in, you could reply and use other advanced thread options

>So the quick summary would be: tracking the process ID in a sniffer would
>be relatively easy for connection oriented protocols like TCP since the
>Windows OS has data structures that give strong clues about the sender and
>receiver that could be parsed to match on address/port of sender and
>receiver. Of course this approach would miss the rogue application that
>fakes packets and tries to make them appear to come from a different
>process. But it is a lot more than what we have today and would be very
>useful.

It is very useful, but it is not a lot more than we what we have in
UNIX-like operating systems. As I tried to say, I often find processes
with `netstat -A`, grep, and fuser, fstat, or one of the other active
file listers whose names I can never remember. (ldstat? liostat?)

I'm not a Windows expert, although I do ship code that uses TCP
and UDP on Windows 95 through XP.

Using grep and so forth is clumsy in UNIX, but some versions of
fuser eliminate that clumsiness. See
http://www.google.com/search?q=fuser+TCP
http://www.google.com/search?q=pid+process+TCP
http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?db=man&fname=/usr/share/catman/a_man/cat1/fuser.z
http://nixdoc.net/man-pages/Linux/fuser.1.html

>The tracking of process ID in a sniffer would be extremely difficult for
>datagrams since it would require either enhancements to the OS or the
>installation of traps or filters for all of the various OS calls that allow
>a datagram to be sent. Such filtering to track process IDs has overhead
>associated with it, so it might be something that you would only want to
>make active during a sniffer session.

That is a slight overstatement. If the application uses connected UDP
sockets, then there are almost the same clues to sender and receiver
as with TCP. Lately I've been using `netstat -A` etc. on UDP more than
TCP.

Note that talking about "tracking of process ID in a sniffer" gives me
pause. When I last looked, "Sniffer" was a registered trademark for a
family of boxes that plug into networks to snoop on passing packets.
Such boxes can have no notion even of whether the source and destination
of packets have a notion of process ID. That's why I always write
"packet snooping" or similar instead of "sniffing."


Vernon Schryver vjs@rhyolite.com

Posted by jameshanley39@yahoo.co.uk on October 14, 2007, 6:44 pm
If you were  Registered and logged in, you could reply and use other advanced thread options
On Oct 14, 8:07 pm, v...@calcite.rhyolite.com (Vernon Schryver) wrote:
>
> >> > Somebody should really write what you suggest. It'd be only a small
> >> > addition to Ethereal.
>
> >> Can you expand on that last thought? Are you saying the developers of
> >> Ethereal could do this easily, or did you mean that there is some add-on API
> >> for Wireshark that would let us add this in?
>
> >I don't know C/C++ , but I'm saying that for developers it'd be easy.
>
> If you "don't know C/C++", how can you imagine that you might have any
> idea what is easy or hard?
>
> >netstat is a tiny program and does it.
> >sygate firewall had a very simple port logger program that did it.
>
> >So there would be an API. Not for Wireshark. But an API - presumably a
> >windows or linux one - that can be accessed by the language that
> >wireshark is written in. Wireshark or any program could access it.
>
> >when I say "did it", netstat or sygate firewall did it, i'm referring
> >to knowing it for 'connections'. Essentially that means it knows it
> >for packets. Worst case scenario, this shows that if sitting on a
> >client or server, the software can only know the process id when one
> >process is used for the entire connection(i've never even see more
> >than one used anyway. So even for a worst case scenario, 1 process is
> >a fair assumption to make). One doesn't know if one doesn't try it.
> >But either way, reasoning shows it's a simple , small thing.
>
> That so called "reasoning" is silly nonsense based on willful ignorance.
>
> You can write code to relate TCP or UDP connections to processes IDs by
>
> 1. look at all sockets (or equivalent) in the system and their
> associated TSBs or other "connection" information until you find
> the connection you care about based in its (addr,port,add,port)
> 4-tuple (or equivalent for a protocol other than TCP or UDP).
>
> This is equivalent to `netstat -naA` on many systems.
>
> 2. look at all file descriptors (or equivalent) in the system until
> you find one associated with the socket from step #1. Except
> for wierd special cases in some systems, each file descriptor
> will be owned by one *or more* prcoesses, which gives you your
> PIDs (plural).
> I often use `netstat -naA` and then `fstat | grep xxhexxxxx`
>
> That works because every connection needs to be associated with a socket
> (or equivalent) so that the system knows what to do with incoming
> packets. Every socket needs to be associated with processes so that
> the system knows to destroy the socket at the end the last process that
> cares about it.
>
> Packets (in non-trivial systems) are a whole other kettle of fish.
> Processes do things such as sendto() system calls that dump packets
> into queues to be sent and forget them. Packets need to last in the
> system only until they are put on the wire. In normal situations, there
> is no reason to spend the CPU cycles or memory that would be required
> to remember which process created each packet sitting in a queue to be
> sent.
>
> The supposed "simple, small thing" of being able to find the process
> that sent a packet is either the large thing of changing the operating
> syustem to maintain PIDs or pointers in mbufs (or equivalents) or the
> not so small thing of inserting a shim between all applications on the
> system and all system calls that can send packets, and having the shim
> maintain enough state (or logs) so that it can guess and pick a process
> that probably sent a given packet. Other people have mentioned packages
> that sound to me as if they do the latter.
>
> Vernon Schryver v...@rhyolite.com


I guess netstat -o does neither of those. It's a small program that
with that switch, associates process id with a connection.

No doubt the code to do it can be put into a function and accessed via
the function's interface. A simple thing.

Worst case, a program like ethereal could run netstat -o and find the
process id. And assume it applies to all packets within that
connection.

Better case, it uses the function that netstat uses. This was what I
referred to as a simple thing for a programmer. Simple conceptually.







Posted by Ben_ on October 11, 2007, 12:46 pm
If you were  Registered and logged in, you could reply and use other advanced thread options
Didn't check further if there is a product using this library:
"
When I capture a packet from a local machine, does the Packet Sniffer SDK
provide a process information (e.g. process id) related with the packet?
Yes, please use HNLBAdapter component.
"
(http://www.microolap.com/products/network/pssdk/faq/)

So, at worse you could create it yourself or have it created... :-)

Or do more searches on the field of honeypots:
"
Sebek version 3 extends this functionality by intercepting a new set of
system calls. Additionally, it retrieves the parent process id (PPID) and
the inode associated with any file-related event.
"
(http://www.securityfocus.com/infocus/1855)


Posted by on October 12, 2007, 1:57 am
If you were  Registered and logged in, you could reply and use other advanced thread options
> Can someone recommend a sniffer for Windows that will show the process ID
> and name of the process sending or receiving each packet shown in the
> sniffer?
>
> I normally use ethereal or wireshark and didn't see a straightforward way to
> include this information.
>
> --
> Will

Try Netpeeker


Posted by Neil Pike on October 16, 2007, 5:06 pm
If you were  Registered and logged in, you could reply and use other advanced thread options
Will - CommView from Tamos

Neil Pike
Protech Computing Ltd




Similar ThreadsPosted
What is Generic Host Process for Win32 Services with the file name/path C:\WINDOWS\system32\svchost.exe and does it need server permission to work properly? October 23, 2006, 6:07 pm
IE shows ".url" extension!. January 17, 2006, 1:32 pm
Firewall shows ports being used in sqeuence December 5, 2005, 9:28 am
Re: Firewall shows ports being used in sqeuence December 5, 2005, 9:57 am
Re: Firewall shows ports being used in sqeuence December 5, 2005, 3:25 pm
Router log shows port 1026 activity? May 8, 2006, 12:46 pm
HeadphoneTV.com - Best in StreamingTV! 27000+ episodes of your favorite shows without Downloading! December 2, 2006, 11:49 pm
Zonealarm and sniffer tools December 16, 2006, 5:59 am
Anyone knows the Blueye layer 7 sniffer? February 15, 2008, 5:01 am
Re: Likelihood of IT using a Packet Sniffer August 11, 2008, 5:24 pm

The site map in XML format XML site map

Contact Us | Privacy Policy