systeminfo# Procura por toda linha que tem "Os" ou "Name"systeminfo|findstr"Os Name"# Pegando HotFix para sabermos até onde o SO está atualizadawmicqfegetHotFixID,InstalledOn# Quando se usar o "/C:", o findstr procura pela string completa e não por parte delasysteminfo|findstr/B/C:"OS Name"/C:"OS Version"/C:"System Type"# Enumerando driver e módulos do Kerneldriverquery.exe/v/focsv|ConvertFrom-CSV|Select-Object'Display Name','Start Mode',Path# Listando os drivers instaladosdriverquery/v# Informações sobre partições do discowmicvolumegetLabel,DeviceID,DriveLetter,FileSystem,Capacity,FreeSpace# Listando as variáveis de ambienteset# Programas que são iniciados junto com o SOwmicstartupgetCaption,Command,Location,User# Acessando registroregquery"HKLM\Software\Microsoft\Windows\CurrentVersion\run"
Hostname do host
Informações de Hardware
Usuário atual
Executando o prompt de comando com outro usuário. Pode ser qualquer usuário e qualquer executável, não precisa ser necessariamente o cmd. Após isso, basta inserir a senha do usuário.
Embutindo mais de um comando em um linha
Paths de correção do SO
Mostrando o diretório atual
Removendo diretórios vazio
Removendo diretórios que contém conteúdos
Listando aplicativos instalados pelo Windows Installer
Listando atualizações do sistema
Verificando arquivos ocultos
Serviços
Restart
Configurando
Detalhes sobre um determinado serviço
Verificando status do serviço
Processos
Listando todos os processo
Matando processo
Schedule
Visualizando todas as tarefas agendadas
Redes
Informações básicas
Mapeando Unidade de Rede
Acessando Unidade de Rede
Removendo uma Unidade de Rede
Removendo todas as Unidades de Rede
Conexões
Abaixo, podemos lista todas as conexões remotas, assim seus processos, portas e PID.
Acessando Hosts Remotos
PSExec
Acessando localmente com a conta de outro usuário. Note que após isso, será necessário informar a senha
Acessando o Domain Controller
runas
PSRemoting / Enter-PSSession
PSRemoting vem habilitado por padrão nos Windows Servers (a partir do 2012) e em máquinas Windows 10, é preciso habilitar manualmente (vide comando abaixo) onde é preciso ter direitos de administrador local
Existe, duas maneiras de realizar o acesso via PSRemoting:
Sem Estado = Dessa maneira não segura uma sessão, por exemplo, se criar variáveis, sair e voltar nomente a acessar a máquina, as variáveis serão perdidas. Ao fazer isso, você irá estar logado na máquina alvo.
Com Estado = Semelhante a forma anterior, porém esse pode manter uma sessão ativa (persistiva)
OBS.: Sempre que uma sessão for aberta pelo PSRemoting, é executado um novo processo em wsmprovhost.
Invoke-Command
Também podemos executar comandos em um determinado computador ou em um lista de computadores. Isso é útil para executar scripts de forma massiva. Substitua o -ComputerName por -Session, caso tenha sessões ativas (verifique acima como criar uma sessão).
Caso queira executar arquivos ps1 em uma máquina de destino, não é preciso fazer o upload do arquivo na máquina alvo, muito menos acessá-la e depois fazer o download. Para isso podemos fazer de forma remota, executando o arquivo em memória. Note que esse arquivo será executada na máquina do atacante e então será disponibilizada para a máquina alvo, então execute Set-ExecutionPolicy antes.
Para melhorar mais a vida do atacante, é possível carregar um script malicioso (por exemplo, o mimikatz) localmente e chamar a função remotamente. Sendo assim, nós carregamos todo o Mimikatz na máquina atacante e, na hora de executar o script (após ter carregado o ps1), vamos chamá-lo de fato, porém este vai ser executado remotamente na máquina alvo.
wmic
rubeus
Altere o hash NTLM no final do comando
Mimikatz
Altere o hash NTLM no final do comando
Windows Defender
Verificando todas configurações do Windows Defender
Para verificar uma determinada configuração do Windows Defender, coloque o seu nome no sufixo do comando. No comando abaixo, utilizamos o ExclusionPath para saber em quais diretórios o Windows Defender não está atuando.
Para desabilitarmos a proteção em tempo real do Windows Defender, podemos utilizar o seguinte comando:
Gerenciando Usuários e Grupos
Arquivos Importantes
c:\Pagefile.sys = Também chamado de memória virtual, é um arquivo criado pelo Windows para compensar a capacidade limitada da Memória RAM. Essa memória (no HD) será utilizada quando a RAM estiver cheia, semelhante ao SWAP do Linux
Recuperando Senhas
Para recuperar a senha do Windows, precisamos de dois arquivos: system e SAM. Depois de ter esses dois arquivos, você pode extrair o hashed usando o pwdump, desta forma:
Os arquivos system e SAM podem ser encontrados em locais diferentes, então experimente todos eles. Em um servidor da Web, o caminho pode diferenciar maiúsculas e minúsculas, embora seja o Windows. Abaixo estão os caminhos mais comuns:
ATENÇÃO.: Para acessar o arquivo SAM, precisa estar como usuário system, pois nem o usuário administrador tem acesso a esse arquivo. No registro (regedit), podemos localizá-lo em HKEY_LOCAL_MACHINE\SAM.
Nos Controladores de Domínio (Domain Controller), o arquivo está em %windir%\WindowsDS\ntds.dit
Buscando por Paths de Serviços sem Aspas (Unquoted Service Paths)
Procure Binary_path_name e veja se não está entre aspas. Se o caminho contiver um espaço e não for citado, o serviço estará vulnerável
wmic baseboard get product,Manufacturer,version,serialnumber
whoami
echo %username%
runas.exe /user:<user> cmd
<comando1> & <comando2>
wmic qfe get Caption,Description,HotFixID,InstalledOn
pwd
echo %cd%
rmdir <directory>
rmdir /s <directory>
wmic product get name, version, vendor
wmic qfe get Caption, Description, HotFixID, InstalledOn
attrib -s -h -r /s /d *.*
wmic service NAMEOFSERVICE call startservice
net stop <service> && net start <service>
sc start <service> ; net start <service>
Stop-Service <service> && Start-Service <service>
# Desabilitando um serviço
Set-Service <service> -StartupType Disabled
sc qc <service>
sc query <service>
ps
tasklist
taslist /SVC
# No exemplo abaixo, estamos utilizando o serviço winlogin
wmic process list brief | find "winlogon"
# Verificando qual usuário está executando determinado serviço
tasklist /V | findstr <service>
taskkill /PID <number_pid> /F
taskkill -pid <pid>
schtasks /query /fo LIST /v
ipconfig /all
route print
arp -A
net use z: \\<ip>\SYSVOL # Atribuindo a letra "z"
net use * \\<ip>\SYSVOL # Atribuindo a primeira letra disponível
net use z: \\<ip>\<directory> <pass> /user:<user> # Atribiundo a letra "z" e fornecendo os dados para realizar a autenticação
# Criando a conexão
$session = New-PSSession -ComputerName <hostname>
# Verificando se a conexão foi criada
$session
# Acessando o host
Enter-PSSession -Session $session
# Executando comandos em uma determinada máquina
Invoke-Command -ComputerName <hostname.domain.local> -Credential <user> -ScriptBlock {<command>,<command>}
# Executando comandos em vários máquina através de wordlist
Invoke-Command -ScriptBlock {<comand>,<command>} -Credential <user> -ComputerName (Get-Content <hostname_wordlist.txt>)
# Listando todos os usuário locais
net user
# Verificando todos os usuários (Locais e AD) e seus respectivos SID/RID
wmic useraccount list brief
# Lista todos os usuários do Domínio
net user /domain
# Vendo detalhes de um determinado usuário local
net user <user>
# Verificando detalhes de um usuário do Domínio
net user /domain <user>
# Desativando a conta de um usuários no Domínio
net user <user> /domain /active:no
# Visualiza todos os grupos do Domínio
net group /domain
# Vendo membros e grupos de domínio
net group /domain <group_name>
# Adicionando um usuário em um grupo do AD
net group "<group>" <user> /add /domain
# Removendo um usuário em um grupo do AD
net group "<group>" <user> /del /domain
# Criando usuário
net user <user> /add
net user <user> <password> /add
net user <user> <password> /add /domain
# Criando usuário (Powershell)
$securestring = convertto-securestring "<new_password>" -asplaintext -force
New-LocalUser '<new_user>' -Password $secure
# Alterando senha via comando no Windows
net user <usuario> <nova_senha>
# Deletando um usuário
net user <user> /delete
# Ativa o usuário <usuario>
net user <usuario> /active:yes
# Adicionando o Usuário ao grupo de Administrators
net localgroup administrators <user> /add
net localgroup administrators /add <user>
Add-LocalGroupMember -Name '<group_name>' -Member '<user>'
# Removendo o Usuário ao grupo de Administrators
net localgroup administrators <user> /delete
# Verifica quais os usuários que fazem parte do grupo Administrators
net localgroup Administrators
# Verifica quais os usuários que fazem parte do grupo
net localgroup /domain
# Quais usuários/grupos tem no SO
net users
net localgroup
# Verificando usuários logados computador atual
query session
# Verificando usuários logados computador remoto (necessário ter privilégio administrador)
query session /server:<host>
driverquery
# Verificando a versão de determinado driver. Remova o filtro com Where-Object para retornar todos os drivers
Get-WmiObject Win32_PnPSignedDriver | Select-Object DeviceName, DriverVersion, Manufacturer | Where-Object {$_.DeviceName -like "*Microsoft*"}