**-Unhide-**
               http://www.unhide-forensics.info

Unhide est un outil d'investigation dont le rôle est de détecter les processus et les
flux TCP/UDP cachés par les rootkits / LKM ou par d''autres techniques de masquage.

Le paquet comprend quatre utilitaires : unhide-posix, unhide-linux, unhide_rb et unhide-tcp.

// unhide (unhide-posix, unhide-linux)
// -----------------------------------

Détection de processus cachés. Il met en œuvre six techniques principales

1 - Comparaison de /proc avec la sortie de /bin/ps.

2 - Comparaison des informations recueillies par le parcours de l'arborescence du
    système de fichiers  procfs avec les informations issues de /bin/ps .
    Cette technique n'est disponible qu'avec la version unhide-linux.

3 - Comparaison des informations collectées depuis des appels système avec les
    informations issues de /bin/ps(syscall scanning).

4 - Scan complet de l'espace des ID de processus par force brute (PIDs bruteforcing).
    Cette technique n'est disponible qu'avec la version unhide-linux.

5 - Comparaison de la sortie de /bin/ps avec /proc, le parcours de procfs et les
    appels systèmes.
    Recherche inverse afin vérifiez que tous les processus affichés par /bin/ps
    existent réellement.
    Cette technique n'est disponible qu'avec la version unhide-linux.

6 - Comparaison rapide des informations recueillies dans /proc, par le parcours
    de procfs et par lesappels systèmes avec la sortie de /bin/ps.
    cette technique est environ 20 fois plus rapide que les 3 premières réunies
    mais peut éventuellement donner davantage de faux positifs.
    Cette technique n'est disponible qu'avec la version unhide-linux.

// Unhide_rb
// ---------

C'est un portage en langage C de l'utilitaire unhide_rb.
Comme l'original, il est grossièrement équivalent à "unhide-linux quick reverse" :
- il effectue trois tests de moins (kill, opendir and chdir),
- il lance /bin/ps seulement un fois au démarrage et une fois pour la double vérification,
- ses tests sont moins précis (P.ex. : test de la valeur de retour au lieu de errno),
- les processus sont uniquement identifiés par le lien sur leur exécutable (unhide-linux utilise
  aussi la copie de la ligne de commande et le nom des "processus noyau dormant"),
- il y a peu de protection contre les erreurs (échec de fopen ou popen par exemple),
- il ne sait pas générer un fichier journal.
Il est très rapide, environ 80 fois plus que "unhide-linux quick reverse"

// unhide-TCP
// ----------

Sert à identifier les ports TCP ou UDP qui sont en écoute mais qui ne sont pas
visibles par la commande /sbin/ss (ou /bin/netstat). 
Deux techniques sont employées :
- Celle de la force brute (passage en revue de tous les ports TCP/UDP possibles)
  et comparaison avec la sortie de SS/netstat.
- Test de tous les ports TCP/UDP non listés par netstat.

// Fichiers
// --------

unhide-linux.c      -- Recherche des processus cachés, pour les systèmes Linux >= 2.6
unhide-linux.h      -- Header pour unhide-linux

unhide-tcp.c        -- Recherche des ports TCP/UDP cachés (ss ou netstat)
unhide-tcp-fast.c   -- Recherche des ports TCP/UDP cachés (recherche rapide)
unhide-tcp.h        -- Header pour unhide-tcp

unhide_rb.c         -- Portage en C de unhide.rb (une version très allégée de unhide-linux en ruby)

unhide-posix.c      -- Recherche des processus cachés, pour les systèmes Unix génériques (*BSD,
                       Solaris, Linux 2.2 / 2.4)
                       Il ne met en œuvre que les techniques 1 et 3. Besoin de plus de tests
                       Avertissement: Cette version est quelque peu obsolète, et peut générer
                       des faux positifs. Utilisez unhide-linux.c si c'est possible'.

unhide-output.c     -- Routines de sortie utilisés par les autres modules de unhide
unhide-output.h     -- Header de unhide-output

changelog           -- liste des évolutions apportées à unhide

COPYING             -- Fichier de Licence, GNU GPL V3

LEEME.txt           -- Version espagnole de ce fichier

LISEZ-MOI.TXT       -- Ce fichier

NEWS                -- Notes de version

README.txt          -- Version anglaise de ce fichier

sanity.sh           -- Fichier de test de unhide-linux

TODO                -- Liste des évolutions envisagées (des volontaires ?)

man/unhide.8        -- man page en anglais de unhide

man/unhide-tcp.8    -- man page en anglais de unhide-tcp

man/es/unhide.8     -- man page en espagnol de unhide

man/es/unhide-tcp.8 -- man page en espagnol de unhide-tcp

man/fr/unhide.8     -- man page en français de unhide

man/fr/unhide-tcp.8 -- man page en français de unhide-tcp


// Compilation
// -----------

Prérequis de build
   glibc-devel
   glibc-static-devel

Prérequis d'utilisation
- unhide-tcp under linux :
   iproute2
   net-tools (for netstat)
   lsof
   psmisc (for fuser)
- unhide-tcp under freeBSD :
   sockstat
   lsof
   netstat
unhide-linux, unhide-posix, unhide_rb :
   procps


IMPORTANT : Il convient de noter qu'en tant qu'outil de police scientifique, unhide est construit de manière statique, car les bibliothèques du système hôte 
            peuvent être compromises ainsi que pour éviter d'être trompé par un paramètre PRELINKing. 

Si vous utilisez un noyau Linux >= 2.6
      gcc -Wall -Wextra -O2 --static -pthread unhide-linux*.c unhide-output.c -o unhide-linux
      gcc -Wall -Wextra -O2 --static unhide-tcp.c unhide-tcp-fast.c unhide-output.c -o unhide-tcp
      gcc -Wall -Wextra -O2 --static unhide_rb.c -o unhide_rb
      ln -s unhide unhide-linux

Sinon (Linux < 2.6, *BSD, Solaris, etc.)
   gcc --static unhide-posix.c -o unhide-posix
   ln -s unhide unhide-posix

// Utilisation
// -----------
Vous DEVEZ être root pour utiliser unhide

Exemples:
 # ./unhide-linux  -vo quick reverse
 # ./unhide-linux  -vom procall sys
 # ./unhide_rb

 # ./unhide-tcp  -flov
 # ./unhide-tcp  -flovs

// Licence

GPL V.3 (http://www.gnu.org/licenses/gpl-3.0.html)


// Remerciement
// ------------

A. Ramos (aramosf@unsec.net) pour certaines expressions rationnelles

unspawn (unspawn@rootshell.be) support CentOS

Martin Bowers (Martin.Bowers@freescale.com) soutien CentOS

Lorenzo Martinez (lorenzo@lorenzomartinez.homeip.net) pour ses idées d'amélioration et le betatesting

François Marier (francois@debian.org) Auteur des pages de manuel et le support Debian

Johan Walles (johan.walles@gmail.com) Identification et correction d'un bug très désagréable de concurrence critique (race condition)

Jan Iven (jan.iven@cern.ch) En raison de ses grandes améliorations, de nouveaux tests et de corrections de bugs

P. Gouin (patrick-g@users.sourceforge.net) En raison de son travail incroyable correction des bugs et d'amélioration des performances

François Boisson pour l'idée de la double vérification dans le test "brute".

Leandro Lucarella (leandro.lucarella@sociomantic.com) pour la méthode rapide de balayage et son travail de factorisation de unhide-tcp

Nikos Ntarmos (ntarmos@ceid.upatras.gr) pour son aide inestimable pour le portage de unhide-tcp sur FreeBSD.

Fubin Zhang (zfb132 on GitHub) for reporting missing file in distribution tarball.

Buo-ren, Lin (brlin-tw in GitHub ; Buo.Ren.Lin@gmail.com) for fixing typo in Readme file

daichifukui (a.dog.will.talk@akane.waseda.jp) for pinpoint untranslated strings in GUI and fix them.
