forked from YJesus/Unhide
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
2967a8d
commit ef9f993
Showing
31 changed files
with
8,054 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,170 @@ | ||
**-Unhide-** | ||
http://www.unhide-forensics.info | ||
|
||
Unhide es una herramienta forense que permite descubrir procesos y puertos TCP/UDP ocultos | ||
por rootkits / LKMs o cualquier otra tecnica de ocultacion. | ||
|
||
|
||
// Unhide (unhide-linux o unhide-posix) | ||
// ------------------------------------- | ||
|
||
Permite identificar procesos que hayan sido ocultados. Implementa seis tecnicas: | ||
|
||
1- Comparacion de la informacion obtenida por /bin/ps frente a los directorios en /proc | ||
|
||
2- Comparacion de la informacin obtenida de /bin/ps contra la estructura de directorios de /proc | ||
SOLO para la versión "unhide-linux" | ||
|
||
3- Comparacion de la informacion visible por /bin/ps frente a la que se puede obtener | ||
utilizando diversas sycalls del sistema (syscall scanning). | ||
|
||
4- Busqueda de incoherencias entre el resultado de /bin/ps y la informacion obtenida en /proc y syscall scanning (Reverse scanning) | ||
SOLO para la versión "unhide-linux" | ||
|
||
5- Ocupacion por fuerta bruta del espacio de PIDs disponibles en el sistema (PIDs bruteforcing) | ||
SOLO para la versión "unhide-linux" | ||
|
||
6- Escaneo 'rapido' de informacion usando /proc procfs y syscalls | ||
SOLO para la versión "unhide-linux". Es un test notablemente más rápido que usar de forma independiente los test 1/2/3 pero | ||
mas propenso a dar falsos positivos | ||
|
||
// Unhide_rb | ||
// --------- | ||
|
||
Es un port en el lenguaje de programación C de unhide.rb, proyecto alternativo a Unhide | ||
Como el original, es tan solo una aproximación ligera de Unhide | ||
|
||
- El hace solo tres test (kill, opendir y chdir) | ||
- Tan solo ejecuta /bin/ps al iniciar el escaneo y para el check doble | ||
- Los tests realizados son mucho menos fiables (por ejemplo usar los valores de retorno en vez de errno) | ||
- Los procesos son identificados tan solo por su ejecutable (unhide-linux también usa cmdline y 'sleeping kernel process') | ||
- No obstante, incorpora unos pocos métodos anti-fallos, (fallos al usar popen por ejemplo) | ||
- No tiene capacidad de logging | ||
|
||
Es bastante rápido, unas 80 veces más rápido que usar 'unhide-linux quick reverse' | ||
|
||
// Unhide-TCP | ||
|
||
Permite identificar puertos TCP/UDP que esten a la escucha pero no aparezcan listados | ||
en /bin/netstat o sbin/ss, usa dos métodos: | ||
- Fuerza bruta sobre todo el rango de puertos TCP/UDP disponibles y comparándolos con la salida de los comandos SS/netstat | ||
- Probando todos los puertos TCP/UDP que no lista netstat | ||
|
||
// Ficheros | ||
|
||
unhide-linux.c --> Procesos ocultos, Linux 2.6.x | ||
unhide-linux.h | ||
|
||
unhide-tcp.c --> Puertos tcp/udp ocultos | ||
unhide-tcp-fast.c | ||
unhide-tcp.h | ||
|
||
unhide-output.c --> Rutinas de uso para Unhide | ||
unhide-output.h | ||
|
||
|
||
|
||
unhide_rb.c --> un port en C de unhide.rb (una versión muy simplificada de unhide-linux en Ruby) | ||
|
||
unhide-posix.c --> Procesos ocultos, Sistemas Unix (*BSD, solaris, linux 2.2, linux 2.4) No incorpora | ||
PIDs bruteforcing, Necesita mas testing. Atención: Esta es una versión desactualizada de Unhide solo para sistemas antiguos | ||
|
||
changelog -- El log de cambios de Unhide | ||
|
||
COPYING -- Fichero de licencia, GNU GPL V3 | ||
|
||
LISEZ-MOI.TXT -- Versión francesa de este fichero | ||
|
||
NEWS -- Novedades relacionadas con las versiones | ||
|
||
README.txt -- Versión inglesa de este fichero | ||
|
||
sanity.sh -- Fichero para realizar tests de funcionamiento | ||
|
||
TODO -- Cosas pendientes de hacer (¿Algún voluntario?) | ||
|
||
man/unhide.8 -- Página man en inglés | ||
|
||
man/unhide-tcp.8 -- Página man de unhide-tcp en inglés | ||
|
||
man/fr/unhide.8 -- Página man en Francés de unhide | ||
|
||
man/fr/unhide-tcp.8 -- Página man en Francés de unhide-tcp | ||
|
||
man/es/unhide.8 -- Página man de unhide en Español | ||
|
||
man/es/unhide-tcp.8 --Página man de unhide-tcp en Español | ||
|
||
|
||
// Compilación | ||
|
||
Para compilar Unhide es necesario: | ||
glibc-devel | ||
glibc-static-devel | ||
|
||
Y las siguientes dependencias: | ||
- unhide-tcp para linux : | ||
iproute2 | ||
net-tools (para netstat) | ||
lsof | ||
psmisc (para fuser) | ||
- unhide-tcp para freeBSD : | ||
sockstat | ||
lsof | ||
netstat | ||
|
||
unhide-linux, unhide-posix, unhide_rb : | ||
procps | ||
|
||
Si estás usando un kernel de Linux > = 2.6 | ||
gcc -Wall -O2 --static -pthread unhide-linux*.c unhide-output.c -o unhide-linux | ||
gcc -Wall -O2 --static unhide_rb.c -o unhide_rb | ||
gcc -Wall -O2 --static unhide-tcp.c unhide-tcp-fast.c unhide-output.c -o unhide-tcp | ||
ln -s unhide unhide-linux | ||
|
||
Si no,(Linux < 2.6, *BSD, Solaris and other Unix) | ||
gcc --static unhide-posix.c -o unhide-posix | ||
ln -s unhide unhide-posix | ||
|
||
// Utilización | ||
|
||
TIENE QUE SER root para usar unhide | ||
|
||
|
||
Ejemplos: | ||
|
||
# ./unhide-linux -vo quick reverse | ||
# ./unhide-linux -vom procall sys | ||
# ./unhide_rb | ||
|
||
# ./unhide-tcp -flov | ||
# ./unhide-tcp -flovs | ||
|
||
|
||
// Licencia | ||
|
||
GPL V.3 (http://www.gnu.org/licenses/gpl-3.0.html) | ||
|
||
// Agradecimientos | ||
|
||
A. Ramos ([email protected]) Por aportar algunas expresiones regulares | ||
|
||
unspawn ([email protected]) Soporte en CentOS | ||
|
||
Martin Bowers ([email protected]) Soporte en CentOS | ||
|
||
Lorenzo Martinez ([email protected]) Por aportar varias ideas y betatesting | ||
|
||
Francois Marier ([email protected]) Por crear las paginas man y dar soporte en Debian | ||
|
||
Johan Walles ([email protected]) Por encontrar y solucionar un importante fallo del tipo "condicion de carrera" | ||
|
||
Jan Iven ([email protected]) Por sus magníficas mejoras, nuevos tests y bugfixing | ||
|
||
P. Gouin ([email protected]) Por su increible trabajo 'fixeando' bugs y mejorando el rendimiento | ||
|
||
François Boisson por su idea de un doble control en el test 'brute' | ||
|
||
Leandro Lucarella ([email protected]) por el modo de escaneo rápido y la re-escritura de unhide-tcp | ||
|
||
Nikos Ntarmos ([email protected]) Por su inestimable labor ayudando a portar Unhide a FreeBSD y por hacer el empaquetado para FreeBSD. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,184 @@ | ||
**-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 | ||
|
||
|
||
|
||
Si vous utilisez un noyau Linux >= 2.6 | ||
gcc -Wall -O2 --static -pthread unhide-linux*.c unhide-output.c -o unhide-linux | ||
gcc -Wall -O2 --static unhide_rb.c -o unhide_rb | ||
gcc -Wall -O2 --static unhide-tcp.c unhide-tcp-fast.c unhide-output.c -o unhide-tcp | ||
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 ([email protected]) pour certaines expressions rationnelles | ||
|
||
unspawn ([email protected]) support CentOS | ||
|
||
Martin Bowers ([email protected]) soutien CentOS | ||
|
||
Lorenzo Martinez ([email protected]) pour ses idées d'amélioration et le betatesting | ||
|
||
François Marier ([email protected]) Auteur des pages de manuel et le support Debian | ||
|
||
Johan Walles ([email protected]) Identification et correction d'un bug très désagréable de concurrence critique (race condition) | ||
|
||
Jan Iven ([email protected]) En raison de ses grandes améliorations, de nouveaux tests et de corrections de bugs | ||
|
||
P. Gouin ([email protected]) 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 ([email protected]) pour la méthode rapide de balayage et son travail de factorisation de unhide-tcp | ||
|
||
Nikos Ntarmos ([email protected]) pour son aide inestimable pour le portage de unhide-tcp sur FreeBSD. |
Oops, something went wrong.