21 juni 2026 · 8 min leestijd · tools
NetExec (commando nxc) is een tool waarmee je via allerlei netwerkprotocollen op systemen inlogt, zoals SMB, LDAP, WinRM, MSSQL en SSH. Je kiest een protocol, geeft een of meer targets en een set credentials op, en NetExec controleert op elke host of die login werkt. Vanaf een geslaagde login kun je per protocol verder met het enumereren van shares en gebruikers, het uitvoeren van commando’s of het buitmaken van credentials. Omdat het dat op een hele reeks hosts tegelijk doet, hoort het bij vrijwel elke Active Directory pentest.
NetExec is de doorontwikkeling van CrackMapExec, dat in 2015 begon en in september 2023 werd hernoemd nadat de toenmalige beheerder ermee stopte. Sindsdien onderhoudt een community het als vrij en open source project.
NetExec installeer je het beste met pipx. De versie uit git heeft de laatste fixes, de PyPI-naam werkt ook.
# Vanaf git (nieuwste versie)
pipx install git+https://github.com/Pennyw0rth/NetExec
# Vanaf PyPI
pipx install netexec
# Op Kali via de package-manager
sudo apt install netexec
Bij NetExec is het protocol altijd het eerste argument. De algemene vorm is nxc PROTOCOL TARGET -u GEBRUIKER -p WACHTWOORD. NetExec ondersteunt deze tien protocollen:
smb gebruik je het meest, voor shares, gebruikers, credential dumping en command execution op Windows.ldap leest Active Directory uit, zoals gebruikers, groepen, kerberoasting en data voor BloodHound.winrm is handig voor command execution wanneer dat via SMB niet lukt.mssql benadert Microsoft SQL Servers, inclusief command execution via xp_cmdshell.rdp controleert of Remote Desktop-logins werken.ssh mikt op Linux- en netwerkapparaten.ftp, wmi, vnc en nfs zijn er ook, voor als die in scope staan.De functionaliteiten verschillen per protocol, en de volledige lijst met opties staat in de officiële NetExec-wiki. Met ldap doe je bijvoorbeeld een Kerberoasting-aanval, waarbij NetExec accounts met een SPN opzoekt en de kraakbare hashes wegschrijft:
# Kerberoast-hashes ophalen via het ldap-protocol
nxc ldap dc01.acme.local -u jdoe -p Wachtwoord --kerberoasting roast.txt
De rest van de voorbeelden gebruikt SMB, het meest voorkomende protocol, maar veel opties werken net zo voor de andere.
Het minimale commando is een protocol, een target en credentials. Een target is een los IP, een hostnaam of een CIDR-range. Voor bijna alle invoer (het target, de gebruiker, het wachtwoord en de hash) kun je trouwens ook een tekstbestand met een lijst opgeven in plaats van één waarde.
# Een account controleren op een hele range
nxc smb 10.0.0.0/24 -u administrator -p Wachtwoord
# Binnen een domein, met de domeinnaam erbij
nxc smb 10.0.0.0/24 -u jdoe -p Wachtwoord -d acme.local
Geef je voor -u en -p allebei een lijst, dan probeert NetExec elke combinatie. Een password spray draai je meestal tegen één host, bijvoorbeeld een domain controller, met een hele gebruikerslijst en één wachtwoord. Standaard stopt NetExec zodra het eerste account werkt, en dat wil je bij een spray juist niet, dus geef je --continue-on-success mee om elk werkend account te zien. Houd het aantal wachtwoorden laag, want spraying kan accounts op slot zetten.
# Eén wachtwoord tegen een lijst gebruikers op de DC, alle treffers tonen
nxc smb 10.0.0.10 -u gebruikers.txt -p 'Winter2026!' --continue-on-success
Met --no-bruteforce koppelt NetExec je lijsten regel voor regel (gebruiker1 met wachtwoord1, gebruiker2 met wachtwoord2) in plaats van elke combinatie te proberen. Dat is handig als je al weet welk wachtwoord bij welke gebruiker hoort.
Dezelfde gebruikerslijst over meerdere hosts proberen heeft alleen zin bij lokale accounts, zoals een lokale administrator met op veel machines hetzelfde wachtwoord. Domein-accounts valideert het domein centraal, dus daarvoor is één host genoeg.
Standaard logt NetExec in als domain user. Wil je met een lokaal account inloggen, bijvoorbeeld de lokale administrator, dan moet je altijd --local-auth meegeven. Doe je dat niet, dan denkt NetExec dat je het domain-account Administrator bedoelt.
Met -H log je in met een NT-hash in plaats van een wachtwoord, oftewel Pass-the-Hash. De vlag accepteert een losse NT-hash of het volledige LM:NT-paar. Staat achter een geslaagde login het gekleurde (Pwn3d!) (geel/oranje), dan heeft dat account beheerrechten op die machine.
# Pass-the-Hash met een lokale admin-hash op een hele range
nxc smb 10.0.0.0/24 -u administrator -H 32ed87bdb5fdc5e9cba88547376818d4 --local-auth
Een overzicht van de authenticatie-vlaggen:
| Vlag | Doel | Voorbeeld |
|---|---|---|
-u |
Gebruiker(s) of een bestand met gebruikers | nxc smb TARGET -u administrator |
-p |
Wachtwoord(en) of een bestand met wachtwoorden | nxc smb TARGET -u jdoe -p Wachtwoord |
-H |
NT-hash voor Pass-the-Hash (NT of LM:NT) |
nxc smb TARGET -u administrator -H <hash> |
-d |
Domeinnaam voor domein-authenticatie | nxc smb TARGET -u jdoe -p Wachtwoord -d acme.local |
--local-auth |
Tegen het lokale SAM-account in plaats van het domein | nxc smb TARGET -u administrator -p Wachtwoord --local-auth |
-k |
Kerberos-authenticatie (vereist hostnaam, geen kaal IP) | nxc smb dc01.acme.local -u jdoe -p Wachtwoord -k |
Zodra een account werkt, gebruik je NetExec om het systeem en het domein in kaart te brengen. Een van de handigste vlaggen is --shares, die per share toont of je lees- en schrijfrechten hebt. Shares waarvan de naam op $ eindigt zijn in Windows verborgen, zoals de standaard C$ en ADMIN$, of shares die een beheerder er bewust op heeft gezet. Je ziet ze niet als je het netwerk doorbladert, maar met --shares komen ze gewoon naar boven.
# Alle shares met de bijbehorende lees- en schrijfrechten
nxc smb 10.0.0.0/24 -u jdoe -p Wachtwoord --shares
Daarnaast haal je gebruikers, lokale groepen en het wachtwoordbeleid op, en zie je wie er is ingelogd en welke SMB-sessies actief zijn.
# Gebruikers, lokale groepen en het wachtwoordbeleid
nxc smb 10.0.0.0/24 -u jdoe -p Wachtwoord --users --local-groups --pass-pol
# Wie is ingelogd en welke SMB-sessies lopen er
nxc smb 10.0.0.0/24 -u jdoe -p Wachtwoord --loggedon-users --smb-sessions
Een deel van deze verkenning werkt ook met een null- of guest-sessie (-u '' -p ''), dus zonder geldige login, op systemen die dat toelaten.
Voor al deze methoden heb je lokaal beheer op het target nodig. Bij --ntds is het target een domain controller, waar je beheerrechten of replicatierechten voor moet hebben. Heb je dat, dan haalt NetExec op vier manieren credentials op. De bron verschilt per manier, en dat bepaalt wat je vindt en hoe het opvalt.
--sam leest de hashes van lokale accounts uit de SAM, via het register op afstand. Dit komt niet uit het LSASS-geheugen.--lsa dumpt de LSA-secrets uit het register, zoals wachtwoorden van service-accounts en het machine-account.--ntds dumpt op een domain controller de NTDS.dit, de wachtwoorddatabase van het hele domein. Standaard gaat dat via DRSUAPI-replicatie, dezelfde techniek als DCSync.-M lsassy leest als enige het LSASS-geheugen uit, en pakt de hashes en tickets van gebruikers die op het target zijn ingelogd.# Lokale SAM-hashes uit het register
nxc smb 10.0.0.5 -u administrator -p Wachtwoord --local-auth --sam
# LSA-secrets uit het register
nxc smb 10.0.0.5 -u administrator -p Wachtwoord --local-auth --lsa
# NTDS.dit op een domain controller (DCSync via DRSUAPI)
nxc smb 10.0.0.10 -u administrator -p Wachtwoord --ntds
# LSASS-geheugen op afstand dumpen
nxc smb 10.0.0.5 -u administrator -p Wachtwoord --local-auth -M lsassy
De buitgemaakte hashes voer je daarna met -H terug in NetExec om verder het netwerk in te bewegen, zoals beschreven bij Pass-the-Hash.
Naast de ingebouwde vlaggen heeft elk protocol modules. Je lijst ze met -L, draait er een met -M, geeft opties mee met -o KEY=value en bekijkt die opties met --options. De -M lsassy uit het vorige kopje is zo’n module.
# Beschikbare SMB-modules tonen
nxc smb -L
Op een host waar je beheer hebt, voer je een commando uit met -x voor CMD of -X voor PowerShell. NetExec kiest zelf een methode (wmiexec, atexec of smbexec).
# Een commando uitvoeren op elke host waar het account beheer heeft
nxc smb 10.0.0.0/24 -u administrator -H 32ed87bdb5fdc5e9cba88547376818d4 --local-auth -x "whoami"
NetExec is luidruchtig van opzet. Het benadert veel hosts tegelijk, en dat is precies wat een blue team oppikt. Password spraying levert een piek aan mislukte logins op (Event ID 4625) en kan accounts op slot zetten (Event ID 4740). Een geslaagde spray laat zich zien als netwerk-aanmeldingen (LogonType 3) vanaf één ongebruikelijke bron naar veel verschillende hosts. Goede detectie correleert daarom op de bron, niet op losse accounts.
Het buitmaken van credentials laat aparte sporen na. Het uitlezen van LSASS via -M lsassy valt op in Sysmon (Event ID 10), waar een EDR op alarmeert. Een NTDS-dump via DRSUAPI is dezelfde techniek als DCSync en is herkenbaar als een host die replicatie aanvraagt terwijl het geen domain controller is (Event ID 4662). Ook het uitvoeren van commando’s verraadt zich. smbexec maakt een service aan (Event ID 7045), atexec een geplande taak (Event ID 4698) en wmiexec start een proces onder wmiprvse.exe.
Voor verdedigers komt het neer op dezelfde basis als bij de onderliggende technieken. Beperk waar accounts mogen inloggen, scheid beheer- van werkaccounts, beperk NTLM en zorg dat een EDR of SIEM de afwijkende aanmeldingen en de toegang tot LSASS correleert. Scannen en authenticeren met NetExec mag alleen op systemen waarvoor je expliciete, schriftelijke toestemming hebt. Zonder die toestemming is het strafbaar.
nxc in plaats van cme. Functioneel is het de doorontwikkeling van CrackMapExec, met dezelfde manier van werken en veel nieuwe modules.
-u '' -p '') probeer je een null- of guest-sessie, en op slecht afgeschermde systemen levert dat vaak nog shares of gebruikers op. Voor het buitmaken van credentials of het uitvoeren van commando’s heb je wel lokaal beheer op het target nodig.
--sam lees je de lokale hashes uit het register, met --lsa de LSA-secrets, en met --ntds op een domain controller de hele wachtwoorddatabase van het domein. Met de module -M lsassy dump je daarnaast het LSASS-geheugen van een ingelogde gebruiker. Die hashes gebruik je vervolgens weer om verder het netwerk in te bewegen.
Lateral movement is hoe een aanvaller na de eerste inbraak van systeem naar systeem beweegt, op weg naar domain admin. Wij tonen het risico in jouw netwerk.
Kerberos is het authenticatieprotocol van Active Directory, gebaseerd op tickets en een centrale KDC. Wij laten zien hoe het werkt en waar aanvallers het misbruiken.
Pass-the-Hash laat aanvallers met een gestolen NT-hash inloggen zonder het wachtwoord te kennen. Wij tonen het risico in uw AD-netwerk.