← retour aux outils back to tools

# Unhide

Détecte les processus et ports TCP/UDP cachés en croisant plusieurs sources d'information telles que /proc, les syscalls et netstat, utilisé pour trouver des rootkits. Detects hidden processes and TCP/UDP ports by cross-checking multiple information sources such as /proc, syscalls, and netstat, used to find rootkits.

↗ https://www.kali.org/tools/unhide/

## Overview

Unhide finds processes and network ports that are hidden from standard tools like `ps` or `netstat` — a common symptom of a userland or kernel rootkit hooking those interfaces to hide itself. It works by comparing multiple independent sources of truth (`/proc`, raw syscalls, `ps` output, procfs, and for ports, actual socket bind attempts vs what netstat reports) and flagging discrepancies.

## Common Usage

Detect hidden processes (full check, all techniques)

    unhide proc

Faster process check using the sys strategy only

    unhide sys

Combined brute-force check (most thorough, slower)

    unhide brute

Detect hidden TCP ports

    unhide-tcp

Detect hidden UDP ports

    unhide-udp

## Rootkit Triage Workflow

1. Run a full process check on a suspect host

    unhide brute

    # 2. Cross-check network listeners
    unhide-tcp
    unhide-udp

    # 3. If discrepancies are found (PID visible to syscalls but not ps),
    #    investigate the process further with lsof, /proc/<pid>/exe, etc.
    lsof -p <hidden_pid>
    ls -la /proc/<hidden_pid>/exe

## Tips

- `unhide brute` is the most reliable mode but also the slowest and noisiest — run `sys` first for a quick check.
- False positives can occur around processes that exit between check phases (race conditions); re-run to confirm.
- Pair with `chkrootkit` or `rkhunter` for broader rootkit signature coverage alongside Unhide’s differential detection approach.

Help / Man page

    unhide [options] {sys|brute|proc|procall|checkopen|reverse}

      sys        Compare process info via syscalls vs /proc
      brute      Brute force PID space (most thorough, slowest)
      proc       Compare /proc vs ps/ls output
      procall    All /proc-based checks combined
      checkopen  Check for hidden processes via open file descriptors
      reverse    Reverse-search for hidden PIDs

    Options:
      -f    Also perform quick check (faster, less thorough)
      -v    Verbose output
      -m    Test all methods

    unhide-tcp [options]
      Detects hidden TCP ports by comparing bind() results to netstat

    unhide-udp [options]
      Detects hidden UDP ports by comparing bind() results to netstat

## Vue d’ensemble

Unhide trouve les processus et ports réseau cachés des outils standards comme `ps` ou `netstat`, un symptôme courant d’un rootkit userland ou kernel qui hooke ces interfaces pour se cacher. Il fonctionne en comparant plusieurs sources de vérité indépendantes (`/proc`, syscalls bruts, sortie de `ps`, procfs, et pour les ports, les tentatives réelles de bind de socket par rapport à ce que rapporte netstat) et signale les divergences.

## Utilisation courante

    # Détecter les processus cachés (vérification complète, toutes techniques)
    unhide proc

    # Vérification de processus plus rapide avec uniquement la stratégie sys
    unhide sys

    # Vérification combinée par brute-force (la plus complète, la plus lente)
    unhide brute

    # Détecter les ports TCP cachés
    unhide-tcp

    # Détecter les ports UDP cachés
    unhide-udp

## Workflow de triage de rootkit

    # 1. Lancer une vérification complète des processus sur un hôte suspect
    unhide brute

    # 2. Croiser avec les listeners réseau
    unhide-tcp
    unhide-udp

    # 3. Si des divergences sont trouvées (PID visible par syscalls mais pas par ps),
    #    investiguer davantage le processus avec lsof, /proc/<pid>/exe, etc.
    lsof -p <hidden_pid>
    ls -la /proc/<hidden_pid>/exe

## Conseils

- `unhide brute` est le mode le plus fiable mais aussi le plus lent et le plus bruyant : lancer `sys` en premier pour une vérification rapide.
- Des faux positifs peuvent survenir autour de processus qui se terminent entre les phases de vérification (conditions de course) ; relancer pour confirmer.
- Associer à `chkrootkit` ou `rkhunter` pour une couverture de signatures de rootkit plus large en complément de l’approche de détection différentielle d’Unhide.

Aide / Page de manuel

    unhide [options] {sys|brute|proc|procall|checkopen|reverse}

      sys        Compare process info via syscalls vs /proc
      brute      Brute force PID space (most thorough, slowest)
      proc       Compare /proc vs ps/ls output
      procall    All /proc-based checks combined
      checkopen  Check for hidden processes via open file descriptors
      reverse    Reverse-search for hidden PIDs

    Options:
      -f    Also perform quick check (faster, less thorough)
      -v    Verbose output
      -m    Test all methods

    unhide-tcp [options]
      Detects hidden TCP ports by comparing bind() results to netstat

    unhide-udp [options]
      Detects hidden UDP ports by comparing bind() results to netstat