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