← retour aux outils back to tools

# Cntlm

Proxy HTTP d'authentification NTLM/NTLMv2 qui permet aux outils ne gérant que la basic-auth de traverser un proxy NTLM d'entreprise ; utile aussi pour des scénarios de relais d'identifiants. NTLM/NTLMv2 authenticating HTTP proxy that lets basic-auth-only tools traverse a corporate NTLM proxy; also useful for credential relay scenarios.

↗ https://github.com/versat/cntlm

## Overview

Cntlm sits between a client tool and an upstream corporate proxy that requires NTLM authentication, handling the NTLM handshake so the client only needs to speak plain HTTP or basic auth. During engagements it’s commonly used to give command-line tools (curl, git, package managers) internet access through a locked-down NTLM proxy, and it can also be repurposed to relay or test captured NTLM credentials against a proxy.

## Common Usage

Generate a config with hashed credentials (avoids storing cleartext password)

    cntlm -H -u '<domain>\<username>' -d <domain>

Run cntlm in the foreground using a config file

    cntlm -c cntlm.conf -f

Run as a daemon, listening locally for client connections

    cntlm -c cntlm.conf

    # Point a tool at the local Cntlm listener instead of the real proxy
    export http_proxy=http://127.0.0.1:3128
    curl http://example.com

## Example Config

    # cntlm.conf
    Username    jsmith
    Domain      CORP
    PassNTLMv2  <hash_from_cntlm_-H>
    Proxy       10.10.10.5:8080
    Listen      3128

## Tips

- Use `-H` once to generate password hashes and paste them into the config — never store the cleartext password on disk
- Cntlm can also be pointed at a target proxy to test whether a captured NTLM hash (from Responder, etc.) is valid, without needing the cleartext password
- Useful on Windows jump boxes during internal engagements where only the corporate NTLM proxy has outbound access

Help / Man page

    Usage: cntlm [options]

    Options:
      -c FILE      Config file to use
      -u USER      Username (domain\user or user@domain)
      -d DOMAIN    NTLM domain
      -p PASSWORD  Password (avoid; prefer -H to generate hashes)
      -H           Generate password hashes for the config file, then exit
      -P FILE      Save PID to file
      -l PORT      Local listening port(s), can specify multiple
      -f           Run in foreground (don't daemonize), verbose
      -M HOST      Perform NTLM auth negotiation test against HOST
      -v           Print version

## Vue d’ensemble

Cntlm s’intercale entre un outil client et un proxy d’entreprise en amont qui exige une authentification NTLM, en gérant le handshake NTLM pour que le client n’ait qu’à parler HTTP simple ou basic auth. Pendant les missions, il sert couramment à donner un accès internet à des outils en ligne de commande (curl, git, gestionnaires de paquets) à travers un proxy NTLM verrouillé, et il peut aussi être détourné pour relayer ou tester des identifiants NTLM capturés contre un proxy.

## Utilisation courante

    # Générer une config avec des identifiants hachés (évite de stocker le mot de passe en clair)
    cntlm -H -u '<domain>\<username>' -d <domain>

    # Lancer cntlm au premier plan avec un fichier de config
    cntlm -c cntlm.conf -f

    # Lancer comme démon, en écoutant localement les connexions clientes
    cntlm -c cntlm.conf

    # Pointer un outil vers le listener Cntlm local au lieu du vrai proxy
    export http_proxy=http://127.0.0.1:3128
    curl http://example.com

## Exemple de config

    # cntlm.conf
    Username    jsmith
    Domain      CORP
    PassNTLMv2  <hash_from_cntlm_-H>
    Proxy       10.10.10.5:8080
    Listen      3128

## Conseils

- Utilisez `-H` une fois pour générer les empreintes de mot de passe et collez-les dans la config : ne stockez jamais le mot de passe en clair sur le disque
- Cntlm peut aussi être pointé vers un proxy cible pour tester si une empreinte NTLM capturée (via Responder, etc.) est valide, sans avoir besoin du mot de passe en clair
- Utile sur les jump boxes Windows lors de missions internes, où seul le proxy NTLM d’entreprise a un accès sortant

Aide / Page de manuel

    Usage: cntlm [options]

    Options:
      -c FILE      Config file to use
      -u USER      Username (domain\user or user@domain)
      -d DOMAIN    NTLM domain
      -p PASSWORD  Password (avoid; prefer -H to generate hashes)
      -H           Generate password hashes for the config file, then exit
      -P FILE      Save PID to file
      -l PORT      Local listening port(s), can specify multiple
      -f           Run in foreground (don't daemonize), verbose
      -M HOST      Perform NTLM auth negotiation test against HOST
      -v           Print version