Bonjour,
Je suis actuellement entrain de crée une application en langage C ayant pour but de détecter, en temps réel, l'activité réseaux des applications en cour d'exécution sur un système Windows XP sp3 (Évènement lier a une nouvelle connexion pour une application cliente ou une mise en écoute pour une application serveur).
Par exemple:
Si une "application A" (par exemple un navigateur WEB) tente de se connecter à un serveur distant, je souhaiterais pouvoir récupérer les informations lier à la tentative de connexion et informer l'utilisateur du système a l'instant de la tentative par un message du type :
Application A (appliA.exe ou PID) tente d'accéder au serveur (IP_SERVEUR) sur le port distant (n° PORT) via le port local (n° PORT)
Je suis actuellement sur plusieurs pistes qui ne me conviennent qu'a moitié :
I°/ Piste 1 : GetExtendedTcpTable
L'utilisation de la fonction GetExtendedTcpTable au sein d'une boucle infini ou d'un timer : cela qui me semble une solution certes fonctionnelle mais bancale et imposant des traitements surement inutiles au moment de la récupération des information lier aux nouvelles activités réseaux (différence entre la TCPtable de l'instant T1 et la TCPtable de l'instant T2). La détection d'un ajout a cette TCPtable serait à mon sens une solution plus viable, mais je n'ai trouver aucune fonction de l'API de Windows permettant de le faire (Section Networking de le MSDN). Existe t-il un moyen de détecter l'ajout d'un nouvelle entré dans cette TCPtable ou dans une éventuelle tables d'handler de socket (lecture de //device/tcp, ou que sais-je encore) ?
II°/ Piste 2 : RAW Socket
L'utilisation de RAW Socket afin de crée un petit sniffer en écoute de nouvelle connexion. Mais je n'ai trouver aucun moyen de remonté le PID de l'application génératrice de la connexion. Existe t-il un moyen de remonter cette information via des RAW socket (j'en doute mais on ne sait jamais, peut-être un moyen de remonter l'handler de socket du trafic sniffer) ?
III°/ Piste 3 : Hook systéme
L'utilisation de Hook système permettant la détection de l'activité réseaux. La seule solution via le API hooking que j'ai pus imaginer passe par le hooking de l'API winsock, mais cela m'impose ,d'une part de hooker l'ensemble des applications du système se qui me semble un peu tiré par les cheveux, et d'autre part de déléguer les droits de débogage à l'utilisateur courant se qui comporte des risques pour la sécurité du système hôte.
Je souhaiterais d'une part avoir un avis sur les pistes exposés plus haut, et d'autre part savoir si un membre aurait une méthode a me proposer pour la détection en temps réel de l'activité réseaux généré par les applications en cour d'exécution sur un système Windows XP sp3.
Merci à vous
nairolf
Partager