* 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).
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:
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.
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.
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.
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.
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.
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.
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:
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:
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.
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.
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`.
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.
-`-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.
- 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.
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 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.
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.
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.
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.
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.
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.
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.
[**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.
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:
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.
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.
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.
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.
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.
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:
### 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.
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.
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:
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.
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:
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.
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.
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:
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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:
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.
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.
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.
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.
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.
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.
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.
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:
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:
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.
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.
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:
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.
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.
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:
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.
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.
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.
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.
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.
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.
* 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).