Maandelijkse vulnerability scanning: Eerste maand kosteloos! Meer informatie →
Hero

WIJ ZIJN

HACKIFY

NetExec - Network Execution Tool

NetExec - Network Execution Tool

21 juni 2026 · 8 min leestijd · tools

active-directory network post-exploitation

Wat is NetExec?

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 installeren

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

Welke protocollen ondersteunt 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.

Inloggen met NetExec

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

SMB verkennen

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.

Credentials buitmaken

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.

Modules en commando’s uitvoeren

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"

Detectie en verdediging

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.

Veelgestelde vragen over NetExec

Wat is het verschil tussen NetExec en CrackMapExec?

NetExec is dezelfde tool onder een nieuwe naam. CrackMapExec werd in 2015 gemaakt door byt3bl33d3r en vanaf 2019 vier jaar lang onderhouden door mpgn. Toen die in september 2023 stopte, zetten de overgebleven actieve ontwikkelaars (onder wie NeffIsBack, Marshall-Hallenbeck en zblurx) het project voort als NetExec, volledig open source. Het commando heet sindsdien nxc in plaats van cme. Functioneel is het de doorontwikkeling van CrackMapExec, met dezelfde manier van werken en veel nieuwe modules.

Heb ik domeinrechten nodig, of werkt NetExec ook zonder geldige login?

Beide kan. Met een geldig account log je in en verken je of voer je acties uit. Maar een deel van de verkenning werkt ook zonder login. Met lege credentials (-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.

Hoe luidruchtig en detecteerbaar is NetExec?

Erg luidruchtig. NetExec is gemaakt om veel hosts tegelijk te benaderen, en dat valt op. Password spraying levert pieken aan mislukte logins op en kan accounts op slot zetten. Remote dumping van credentials raakt LSASS of het register, en het uitvoeren van commando’s maakt services of geplande taken aan. Een omgeving met een EDR, Sysmon of een SIEM ziet dat allemaal. NetExec is geen tool voor stille operaties.

Kan NetExec credentials buitmaken?

Ja, mits je lokaal beheer op het target hebt. Met --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.

Gerelateerde artikelen