quinta-feira, 26 de julho de 2018

INVASÃO E MANIPULAÇÃO EM DISTRIBUIDORAS E SEUS SISTEMAS DE GERENCIAMENTO

E ae galera, dessa vez vou demonstrar como pode ocorrer uma invasão a empresas de distribuição e manipular seus endereços de entrega através dos seus sistemas de gerenciamento.

WMS (Sistema de gerenciamento de armazém)
Pra quem não sabe, o sistema WMS é utilizado em todo os processos do Armazém: Recebimento, Armazenamento e Expedição.

Portanto, o WMS é um sistema desenvolvido para administrar os fluxos físicos de recebimento, armazenagem, separação e expedição de mercadorias, definindo suas localizações dentro dos depósitos e possibilitando a automação de suas operações através de código de barras, rádio frequência, separação automática de pedidos, etc.
Leia mais em: improtecsistemas.com.br/wms/
Deve-se entender que cada empresa que vende esses softwares, não utilizam os mesmos seguimentos que outras. Portanto, a empresa X não vendem esses softwares iguais a empresa Y. Mas no final, tudo é a mesma coisa.

Essa área de logística é bastante interessante para um pentest, por conta de vários sistemas que possuem.  Pode-se encontrar sistemas WMS com conexões externas, isso ocorre porque algumas empresas querem atualizar o sistema sem precisar ir pessoalmente.

Seguindo nesse raciocínio, podem existir duas vulnerabilidades nesse caso:
  1. Em caso de invasão ao servidor que faz o update das empresas que vendem WMS, o invasor pode modificar o software do WMS por um programa malicioso,  como ocorreu com o CCleaner.
    https://olhardigital.com.br/fique_seguro/noticia/software-ccleaner-e-comprometido-por-hackers/71101
  2. Comprometimento da infraestrutura de TI da distribuidora: nesse caso, o atacante manipula a rede da distribuidora e consegue mudar a origem da atualização do WMS (no caso, o download do update).
Em meus testes com softwares demos, a maioria salvava os seus clientes em um banco de dados na pasta raiz onde foi instalado o WMS.


Percebemos então que em muitos casos, não é necessário  engenharia reversa, podemos fazer a manipulação dos produtos via editor de texto.

Vale lembrar que muitos WMS são pagos, então como explorar e procurar vulnerabilidades? Simples, muitas empresas disponibilizam a demo do software, é só entrar em contato.

A area de logística é imensa, aqui estão alguns links para estudo:

SISTEMAS COMPUTACIONAIS PARA O GERENCIAMENTO ESTRATÉGICO DA LOGÍSTICA
5 sistemas de gerenciamento de logística que você precisa conhecer  

quarta-feira, 25 de julho de 2018

LFI PARA RCE

E ae galera, hoje no meu curso foi discutido sobre essas duas falhas e eu quis trazer um artigo traduzido sobre elas, aconteceu em um bug bounty :).

Esse é um artigo explicando como um hunter conseguiu um RCE através de um LFI.

Enquanto procurava pelas vulnerabilidades, encontrei o LFI no site de destino:
https://www.victimsite.com/forum/attachment-serve?name=../../../../../../../../../../etc/shadow&path=
Como você pode ver, o parâmetro "name" era vulnerável a LFI.


Após a descoberta do LFI, o objetivo agora era escalar para obter o RCE. O hunter deixou um link que o ajudou a entender como é feito o LFI para RCE:
https://medium.com/@p4c3n0g3/lfi-to-rce-via-access-log-injection-88684351e7c0
Agora, a ideia era obter acesso a alguns arquivos que podem ser arquivos de log que poderiam fornecer alguma entrada de controlador de usuário (para executar algum comando).


Mas parece que o usuário com o qual obtive LFI não tem acesso para acessar arquivos de registros. Fiz uma pesquisa e descobri que “/ proc / self / fd” fornece atalho simbólico para acessar logs e vários outros arquivos relacionados ao sistema. Então eu tentei ler aqueles em busca de logs de acesso.


E um dos arquivos fd me deu acesso para acessar logs


E o que me chamou a atenção aqui foi o cabeçalho "referer" porque eu sabia que era algo que estava sob a entrada controlada pelo usuário. Adicionei o cabeçalho "referer" na solicitação HTTP, configurei seu valor para system (id) e enviei.

 
E por fim: 
 

Então, foi assim que consegui obter um RCE através de um LFI :).

Postagem original e links recomendados:

https://medium.com/bugbountywriteup/bugbounty-journey-from-lfi-to-rce-how-a69afe5a0899

https://medium.com/@p4c3n0g3/lfi-to-rce-via-access-log-injection-88684351e7c0

https://www.rcesecurity.com/2017/08/from-lfi-to-rce-via-php-sessions/

domingo, 22 de julho de 2018

PROJETO WALRUS - APLICATIVO ANDROID PARA CLONAGEM DE CARTÕES RFID

E ae galera, hoje eu apresento a vocês o projeto Walrus.

Walrus é um aplicativo android que simplifica a clonagem de cartões. Ele utiliza uma interface simples e um banco de dados para armazenar cartões clonados. Os cartões clonados são gravados em um cartão em branco ou emulados em outro dispositivo, concedendo instantaneamente ao invasor acesso privilegiado a áreas restritas.

Demo


Ferramenta: https://github.com/TeamWalrus/Walrus

Para mais detalhes: https://n0where.net/an-android-app-for-rfid-card-cloning-project-walrus

sábado, 21 de julho de 2018

DETECTANDO E EXPLORANDO CMS

E ae galera, trago hoje pra vocês uma ferramenta de detecção e exploração de CMS (Content Management System: Sistemas de Gerenciamento de Conteúdo), chamada CMSeek.


Sobre o sistema
Um sistema de gerenciamento de conteúdo (CMS) gerencia a criação e modificação de conteúdo digital. Geralmente, ele suporta vários usuários em um ambiente colaborativo. Alguns exemplos ​​são: WordPress, Joomla, Drupal etc.
Funções do CMSeek
Detecção básica de CMS de mais de 20 CMS
Verificações avançadas no Wordpress:
  • Detecta a versão
  • Enumeração do Usuário
  • Enumeração de Plugins
  • Enumeração de Tema
  • Detecta Usuários (3 Métodos de Detecção)
  • Procura vulnerabilidades de versão e muito mais!
Varreduras Avançadas do Joomla:
  • Detecção de versão
  • Localizador de arquivos de backup
  • Localizador de páginas do administrador
  • Detecção de vulnerabilidade principal
  • Lista de listagem de diretórios
  • Detecção de vazamento de configuração
  • Vários outros cheques

Requisitos e Compatibilidade
Python3
Git
Instalação e uso
É bastante fácil usar o CMSeeK, apenas certifique-se de ter o python3 e o git (apenas para clonagem do repo) instalados e use os seguintes comandos:
git clone https://github.com/Tuhinshubhra/CMSeeK
cd CMSeeK

python3 cmseek.py
ou
python3 cmseek.py -u <target_url> [...]
Métodos de detecção
O CMSeek usa principalmente duas coisas para detecção:
HTTP Headers
Page Source Code
CMSs suportados
CMSeeK atualmente pode detectar 22 CMSs, você pode encontrar a lista no arquivo cmss.py que está presente no diretório cmseekdb. Todos os cmss são armazenados da seguinte maneira:
 cmsID = {
   'name':'Name Of CMS',
   'url':'Official URL of the CMS',
   'vd':'Version Detection (0 for no, 1 for yes)',
   'deeps':'Deep Scan (0 for no 1 for yes)'
 }
Resultado do scaneamento
Todos os seus resultados de varredura são armazenados em um arquivo json chamado cms.json, você pode encontrar os logs dentro do diretório Result\<Target Site> e, a partir dos resultados de bruteforce, eles são armazenados em um arquivo txt no diretório de resultados do site também. Aqui está um exemplo do log de relatório do json:


Screenshots





Link: https://github.com/Tuhinshubhra/CMSeeK

quarta-feira, 18 de julho de 2018

BYPASS UTILIZANDO IPV6

E ae galera, traduzi esse artigo muito interessante para vocês. No final do artigo esta os links originais :).

No artigo, um invasor pode usar o IPv6 para contornar as proteções de segurança existentes no iPv4, mas não no IPv6. O número de portas abertas nos endereços IPv6 e IPv4 no mesmo host é diferente.

Abaixo está um passo a passo de como realizar a técnica:
  1. Envia uma solicitação de echo ICMP (ping6 ff02 :: 1% eth0) para o endereço de broadcast (ff02 :: 1), todos os hosts IPv6 na rede local responderão.
  2. Envia uma solicitação ARP para todos os hosts IPv4 na rede local.
  3. Executa uma verificação de porta de todos os hosts IPv4 e IPv6 que estão ativos na rede local.
  4. Corresponde o endereço IPv6 ao endereço IPv4 com base nas informações do endereço MAC.
  5. Verifica se a varredura no endereço IPv6 no host retorna mais portas abertas que o endereço IPv4 no mesmo host e gera a diferença nas portas (se houver).

Foi escrito um script simples para automatizar essas etapas.

Abaixo está print da ferramenta em execução:

Na captura de tela abaixo (nas últimas linhas), as portas TCP 22, 111 e 8080 eram acessíveis na interface IPv6 do host (10.5.192.48 | fe80 :: 250: 56ff: fe97: 7a3b), mas não na interface IPv4.
O próximo passo seria mostrar os serviços em execução na interface IPv6, testar contas padrão ou fracas (SSH), procurar vulnerabilidades e assim por diante.


Link da ferramenta: https://github.com/milo2012/ipv4Bypass

Abaixo estão alguns artigos originais e relacionados:
https://www.trustwave.com/Resources/SpiderLabs-Blog/Using-IPv6-to-Bypass-Security/
https://www.darkreading.com/vulnerabilities—threats/weaponizing-ipv6-to-bypass-ipv4-security-/a/d-id/1331993
https://milo2012.wordpress.com/2018/06/22/using-ipv6-to-bypass-security-tool/

sábado, 14 de julho de 2018

SISTEMAS EMBARCADOS

E ae galera, hoje iremos falar sobre sistemas embarcados.

Um sistema embarcado é um sistema microprocessador no qual o computador é completamente encapsulado ou dedicado ao dispositivo ou sistema que ele controla. Diferentemente de computadores de propósito geral, como o computador pessoal, um sistema embarcado realiza um conjunto de tarefas predefinidas, geralmente com requisitos específicos. Já que o sistema é dedicado a tarefas específicas, através de engenharia pode-se otimizar o projeto reduzindo tamanho, recursos computacionais e custo do produto.

EXEMPLOS

Arduino Mega 2560
A placa Arduino Mega 2560 é mais uma placa da plataforma Arduino que possui recursos bem interessantes para prototipagem e projetos mais elaborados. Baseada no microcontrolador ATmega2560, possui 54 pinos de entradas e saídas digitais onde 15 destes podem ser utilizados como saídas PWM. Possui 16 entradas analógicas, 4 portas de comunicação serial. Além da quantidade de pinos, ela conta com maior quantidade de memória que Arduino UNO, sendo uma ótima opção para projetos que necessitem de muitos pinos de entradas e saídas além de memória de programa com maior capacidade.

Arduino Mega 2560

https://www.embarcados.com.br/arduino-mega-2560/


ESP8266 NodeMCU
O módulo Wifi ESP8266 NodeMCU ESP-12E  é uma das placas mais interessantes da família ESP8266, já que pode ser facilmente ligada à um computador e programada com a linguagem Lua e também utilizando a IDE do Arduino. Essa placa possui 10 pinos GPIO (entrada/saída), suportando funções como PWM, I2C e 1-wire. Tem antena embutida, conversor USB-TLL integrado e o seu formato é ideal para ambientes de prototipação, encaixando facilmente em uma protoboard.

Resultado de imagem para ESP8266 NodeMCU

https://www.filipeflop.com/blog/esp8266-nodemcu-como-programar/


Tiva-C
Tiva-C Launchpads é uma plataforma de prototipagem eletrônica de microcontroladores, são equipados com 40 ou 80 pinos que têm multifunções, ou seja, podem ser configurados como entradas ou saídas, digitais ou analógicas ou outras funções, permitindo uma grande variedade de aplicações. Seus pinos possui o padrão de 3,3 V.

Resultado de imagem para Tiva-C
 
https://pt.wikipedia.org/wiki/Tiva-C

Processamentos
Em geral os sistemas embarcados possuem uma capacidade de processamento reduzida em comparação com computadores desktops. Ao invés de utilizar microprocessadores, os desenvolvedores preferem utilizar microcontroladores, pois estes já possuem diversos periféricos integrados no mesmo chip.

Outra diferença é a variedade de arquiteturas disponíveis tais como ARM, MIPS, Coldfire/68k, PowerPC, x86, PIC, 8051, Atmel AVR, Renesas H8, SH, V850, FR-V, M32R, Z80 e Z8. Isso contrasta com o mercado de computadores pessoais, limitados à somente algumas arquiteturas.
 
Periféricos
Os sistemas embarcados comunicam-se com o meio externo através de periféricos. Estes periféricos podem ser combinados com o processador (como no caso dos sistemas microcontrolados) ou associados no sistema.
Entre os periféricos mais comum temos:

  • Entrada de dados através de teclas (geralmente através de teclados feitos com varredura matricial)
  • Leds
  • Display's de LCD (sendo os mais comuns os alfanuméricos por exemplo o HD44780)
  • Interface serial - (Por exemplo RS 232, I2C)
  • Universal Serial Bus - (USB)
  • TCP/IP

Sites que eu recomendo para leitura:
embarcados.com.br
robocore.net
filipeflop.com
eletronicaprogressiva.net

Onde comprar: 
EMBARCADOS - AMAZON

sexta-feira, 13 de julho de 2018

DICAS DE SEGURANÇA EM SERVIDORES LINUX

E ae galera, hoje irei dar algumas dicas de segurança em servidores Linux.

Firewall -  CSF
Já postei aqui no blog sobre esse incrível firewall.

Resumo: conjunto de regras e diretrizes de segurança, trabalhando a nível de software, e tem como objetivo controlar a entrada e saída de IPs de diferentes localidades, a fim de proteger o servidor e os clientes que nele estão de tentativas de explorar vulnerabilidades, portas ou ataques.
0x7331.blogspot.com/2018/07/firewall-csf.html

Logcheck
Ler logs, apesar de ser imprescindível para qualquer administrador de sistema, também é uma tarefa chata e demorada. O Linux, “grava” todos os passos do sistema (até os que ele deixou de dar) nos diversos arquivos de log.

Para facilitar nossa vida, vamos conhecer o Logcheck. 

O Logcheck é um utilitário simples, que é projetado para que um administrador de sistema possa ler os arquivos de log que são gerados por sua máquina ou servidor. Ele faz isso enviando resumos dos arquivos de log por email.
http://logcheck.org

Fail2Ban
O aplicativo fail2ban, é um agente que monitora os logs, e verifica a quantidade de tentativas de conexão sem sucesso, bloqueando o IP suspeito, após determinado número de insucessos.

O fail2ban pode monitorar a tentativa de login nos serviços ssh, pam, xinetd, apache, vsftpd, proftpd, wuftpd, postfix, couriersmtp, courierauth, sasl e named, e em uma ação pró-ativa bloquear o possível ataque, adicionando uma regra no firewall.

O fail2ban é eficaz em parar ataques de força bruta (brute force), que são comum a hosts conectados à Internet, de maneira elegante, confiável e funcional, sem causar prejuízos aos usuários autênticos dos sistemas e serviços oferecidos. 
www.fail2ban.org
rkhunter
Rootkits são ferramentas utilizadas, geralmente, com o objetivo de ocultar a presença de invasores nas máquinas. Com essas ferramentas alguém não-autorizado, mas que já conseguiu entrar na máquina, pode ter controle sobre a máquina e nem ser notado.

Muitos rootkits acompanham uma gama de binários (como o ls, ps, who, find etc) modificados para que os processos rodados pelo invasor não possam ser vistos pelo administrador da máquina. Além disso, muitos vírus atuais utilizam rootkits.

Existem dois aplicativos que podem te ajudar a detectar rootkits no seu sistema:
rkhunter
chkrootkit

ModSecurity
O Mod Security é um Web Application Firewall que atua na camada 7 do modelo OSI e tem por objetivo bloquear diversos tipos de ataques, como o Cross-Site Scripting (XSS), SQL Injection, Command Injection, ASP e PHP Injection, Trojans & Backdoors Detection, dentre outros, que variam de acordo com as regras existentes, ele filtra todas as requisições e respostas entre o servidor Web e o cliente fazendo a checagem das regras que estão em vigor. Atualmente é suportado pelo Apache, IIS7 e Nginx.
https://www.modsecurity.org/
MRTG
O MRTG é um pacote escrito em PERL e faz a coleta de dados via SNMP. Por isso, o equipamento a ser monitorado precisa oferecer suporte a este protocolo.

Apesar de ser possível utilizar-se do MRTG para monitoração de qualquer equipamento que suporte o protocolo SNMP, este artigo visa a monitoração de equipamentos de rede, ou seja, basicamente switches e roteadores.
https://blogwikinerds.wordpress.com/2014/12/13/instalando-o-mrtg/
SSH Keys
Key Pair, ou SSH Keys ou ainda Chave Pública consiste em duas chaves uma pública que deve ser instalada no servidor remoto, e a outra chave privada que fica salva no seu computador, as duas juntas permitem que você conecte de forma segura a um servidor remoto usando o protocolo SSH ou SFTP.
https://adrianorosa.com/blog/seguranca/como-criar-ssh-key-pair-unix.html

terça-feira, 10 de julho de 2018

FIREWALL - CSF

E ae galera, hoje irei apresentar a vocês o firewall CSF.

O que é CSF?
CSF (ConfigServer Security and Firewall) é um conjunto de soluções que, se implementadas, podem trazer segurança e um maior controle a nível de gerenciamento de recursos do seu servidor. Atualmente a plataforma pode ser instalada em diversas distros distintas (inclusive o CloudLinux), além de suportar plataformas virtualizadas.

Como se trata de um conjunto de diretivas de segurança e configurações de scripts, não há cobrança pela solução, sendo portanto freeware e opensource, uma vez que os códigos podem ser manipulados pelo administrador do servidor.

Instalação
Basta executar o comando abaixo:
cd /usr/local/src; wget http://www.configserver.com/free/csf.tgz; tar -xzf csf.tgz; cd csf; sh install.cpanel.sh

Configuração
Acesse o arquivo “/etc/csf/csf.conf” com o seu editor de texto e altere o valor da linha “TESTING“. Mude de 1 para 0.

As portas abertas por padrão são as seguintes:
TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995"
TCP_OUT = "20,21,22,25,53,80,110,113,443"
UDP_IN = "20,21,53"
UDP_OUT = "20,21,53,113,123"
Você pode abrir ou fechar qualquer porta no arquivo /etc/csf/csf.conf procurando pelas linhas acima.

E por fim, execute o seguinte comando:
csf -u; csf -r

Alguns comandos de utilização
  • csf -g (IP) > Verifica se o IP pesquisado está bloqueado
  • csf -a (IP) “Motivo – Seu Nome” > Adiciona um IP na lista de permissões do servidor. Use com cautela e libere apenas IPs fixos
  • csf -d (IP) “Motivo – Seu Nome” > Bloqueia o IP no firewall e adicionar o comentário no arquivo /etc/csf/csf.deny
  • csf -tr (IP) > Remove o bloqueio temporário de um IP
  • csf -dr (IP) > Remove o bloqueio definitivo de um IP
  • grep IP /var/log/lfd.log > Verifica o motivo de um bloqueio temporário
  • csf -r > reinicia o CSF
  • csf -x > desativa o CSF
  • csf -e > ativa o CSF

Para mais detalhes:
https://configserver.com/cp/csf.html

Material retirado dos sites:
hostdime.com.br
brasilcloud.com.br

sábado, 7 de julho de 2018

INTRODUÇÃO AO BUG BOUNTY

E ae galera, hoje irei dar algumas dicas de como entrar nessa área de bug bounty.

Comece a ler
Existem alguns livros que você pode comprar para ajudá-lo a aprender o básico e essencial de pentest.
Introdução ao Pentest
Pentest em aplicações web
Black Hat Python
Extra: https://www.owasp.org/index.php/Top_10-2017_Top_10

Pratique o que você esta aprendendo
Enquanto você aprende, é importante ter certeza de que você também está entendendo o que aprende. Praticar em aplicativos e sistemas vulneráveis é uma ótima maneira de testar suas habilidades em ambientes simulados. Isso lhe dará uma ideia do que você enfrentará no mundo real.
Hacksplaining
Penetration Testing Practice Labs

Leia as anotações técnicas e os POCs (Proof of Concepts) de outros hackers e assista aos tutoriais no YouTube!
Agora que você tem uma compreensão básica sobre como encontrar e explorar vulnerabilidades de segurança, é hora de começar a conferir o que outros hackers estão enfrentando. Por sorte, a comunidade de segurança é bastante generosa em compartilhar conhecimento.
Bug Bounty write-ups and POCs
Bug Hunting Tutorials
/r/Netsec on Reddit
JackkTutorials on YouTube
DEFCON Conference videos on YouTube
Hak5 on YouTube
Awesome-Infosec

Reúna seu arsenal de ferramentas
Ferramentas não te transformam em hacker, mas certamente são úteis! O Bugcrowd selecionou uma extensa lista de ferramentas:
 
Comece a aprender sobre bug bounties
Ok, agora você está no ponto em que está quase na hora de começar a procurar recompensas. Mas primeiro, vamos aprender como as recompensas de bugs funcionam e como começar.
How to approach a target
How to Report a Bug
Bug Bounty Disclosure Policy

Seja hacker! 
É hora de começar a hackear! Quando você é novo e está começando, é melhor não tentar invadir as recompensas de bugs mais populares por aí. Tentar hackear Tesla Motors, Facebook, Pinterest e outros provavelmente terminará em frustração para iniciantes, já que essas empresas são muito populares e são mais seguras porque recebem muitos relatórios de bugs.
Go for the Kudos only programs
Em vez disso, concentre-se em recompensas de bugs que provavelmente foram dispensadas por outros. Geralmente, esses são bounties de bugs que não pagam recompensas, mas oferecem pontos de elogios no Bugcrowd. Estes programas "kudos points only" são uma maneira fantástica de começar e mostrar suas habilidades para o Bugcrowd. Depois de enviar alguns bugs para o Bugcrowd, mesmo que sejam apenas pontos de recompensas, provavelmente você começará a receber convites para programas de recompensas privados. Os programas de recompensas privadas são apenas para convidados e restritos a um pequeno número de pessoas, o que significa menos concorrência e uma maior probabilidade de encontrar um bug. 

Considerações finais
O hacking é uma jornada de aprendizagem ao longo da vida. Isto é o que torna esta área tão incrível! Há sempre novos artigos e palestras para aprender. Aqui estão algumas conferencias / eventos de 2018:
facebook.com/groups/fsocietybrasil/permalink/1804942113146216/ 

quinta-feira, 5 de julho de 2018

FALHAS EM APLICAÇÕES WEB

E ae galera, resolvi trazer pra vocês as principais falhas em aplicações web.

Injeção
As falhas de injeção, como SQL, OS, XXE e LDAP, ocorrem quando dados não confiáveis são enviados para um intérprete como parte de um comando ou consulta. Por exemplo, na tela de administração do seu sistema, você tem que digitar um usuário e senha para acessar, por trás desse formulário de acesso, o seu sistema normalmente realiza uma consulta ao banco de dados, para verificar se o usuário existe e a senha digitada está correta, o comando para a execução é basicamente o seguinte:
SELECT id FROM USUARIOS WHERE usuário = ‘textoDigitado’ && senha = ‘textoDigitado2’
Esse código seleciona o número de identificação do usuário, que tem o mesmo nome e senha digitado no formulário, retornando o resultado ele libera o acesso ao sistema, o grande problema é que utilizando injeção, poderíamos no textoDigitado informar o seguinte:
‘ OR 1=1
Que ao ser processado pelo sistema, iria influenciar diretamente no contexto, agora o sistema verifica se o usuário é igual a vazio ou 1 é igual a 1, caso verdadeiro, ele pega o primeiro usuário do sistema e libera o acesso.

Gerenciamento de sessão e quebras de autenticação
Um dos pontos principais de uma aplicação é como ela lida com a sessão e a autenticação do usuário, explicando um pouco o funcionamento, o seu formulário de acesso verifica se os dados estão corretos e cria uma sessão, informando que o seu acesso foi autorizado, se essa função for implementada de maneira incorreta, pode permitir que invasores comprometam senhas, chaves ou tokens de sessão, e até mesmo explorem falhas de implementação para assumir identidades de outros usuários no sistema.
Por exemplo, se no seu formulário de acesso, é adicionado o código do usuário através do método POST (método padrão de envio de formulário), pode ser utilizado o Tamper Data ou outro aplicativo similar para realizar a manipulação da informação que será inserida na seção, nesse ponto ao invés de inserir o código do usuário “João” na sessão, podemos alterar e passar o código do usuário “José”.

Cross-Site Scripting (XSS)
Uma falha XSS ocorre sempre que um aplicativo inclui dados não confiáveis em uma nova página da web sem validar ou escapar adequadamente. O XSS permite que os invasores executem scripts no navegador da vítima, por sua vez, esses scripts podem redirecionar a vítima para um site malicioso ou até mesmo sequestrar sessões de usuários.

Por exemplo, se você tem uma conta no banco Digital30 que utiliza o método GET para realizar transferências sem proteção contra CSRF (8), e você acessa o blog do “João”, e o blog tem uma falha de XSS que permitiu um invasor inserir um código malicioso na área de comentários, não havia nenhum filtro de código no comentário, agora todos que acessam a página de comentários têm um script executado no computador. Esse script em específico acessa a página digital30.com/transfer.php?value=500&to=0200, como você estava autenticado no banco, ao acessar o blog, a falha fez com que executasse uma ação dentro do banco, que transferiu R$ 500,00 para a conta 0200.

Quebras no controle de acesso
Uma aplicação normalmente atua com sistema de permissões, que define o que cada usuário pode fazer no sistema, outro ponto é que as páginas do seu sistema precisam que o usuário esteja autenticado para serem acessadas, no entanto, essa vulnerabilidade ocorre quando essa verificação ou não foi feita da maneira correta, ou simplesmente não foi feita.

Por exemplo, dentro de um sistema, se o desenvolvedor se esquecer de verificar na página de cadastro de usuários se o usuário atual está autenticado, é possível que um invasor utilize essa falha para acessar a página diretamente através de scripts de força bruta, que testa várias possibilidades, como por exemplo seusite.com.br/a, seusite.com.br/aa, até testar todas as possibilidades, caso durante esse teste o invasor encontre a página seusite.com.br/usuarios/cadastro e a mesma não tiver uma verificação de autenticação, mesmo sem ter um usuário e senha do sistema é possível cadastrar um usuário e obter acesso total.

Configuração incorreta de segurança
A segurança da informação vai muito além de um script bem configurado, precisamos ter um conceito de segurança amplamente aplicado, com uma configuração de segurança bem definida e implantada para o servidor web, servidor de banco de dados, plataforma e etc. Como citamos no início do artigo, precisamos manter as aplicações do nosso servidor atualizadas, para que vulnerabilidades de terceiros, já descobertas e corrigidas não possam prejudicar a segurança do nosso servidor, a padronização e normatização dos modelos de segurança do negócio, alinhados a políticas rigorosas de segurança são fundamentais para a continuidade do negócio.

Por exemplo, se você tem um código robusto, amplamente testado, mas hospeda-o em um serviço de hospedagem de baixa qualidade, aonde sua aplicação não tem nenhum tipo de proteção contra ataques de negação de serviço, um atacante mal intencionado pode colocar o seu sistema fora do ar por tempo indeterminado, através de ataques, trazendo um prejuízo enorme para o seu negócio.

Exposição de dados sensíveis
Muitas aplicações web não protegem de forma adequada os dados confidenciais, como dados financeiros. Os atacantes podem roubar ou modificar esses dados deficientemente protegidos, para conduzir fraudes em cartões de créditos, roubar identidades ou outros crimes. Dados sensíveis devem possuir uma proteção extra, como uma criptografia.

Por exemplo, se você está dentro de um restaurante utilizando um sistema de pagamentos que não possui criptografia (HTTPS), e digitou as informações do seu cartão de crédito para realizar uma compra, um atacante mal intencionado, utilizando aplicações de análise de tráfego pode capturar as informações, outro ponto bastante comum é que um invasor obtendo acesso ao mesmo sistema, pode obter todas as informações dos cartões de créditos já utilizados no sistema, caso não possua um tipo de criptografia.

Proteção de ataque insuficiente
A maioria dos aplicativos não possui capacidade básica para detectar, prevenir e responder a ataques manuais e automatizados. A proteção de ataques vai muito além da validação de entrada básica e envolve a detecção, resposta e até bloqueio de tentativa de exploração.
 
Cross-Site Request Forgery (CSRF)
Um ataque CSRF força o navegador da vítima autenticada a enviar uma solicitação forjada para uma aplicação vulnerável, dessa forma a aplicação vulnerável pensa ser solicitações legítimas da vítima.

Por exemplo, o invasor pode colocar dentro do site isca, um script que simula o acesso ao link meusite.com.br/conta/alterar/senha?novasenha=123456, caso o usuário esteja autenticado no site alvo(meusite.com.br) a sua senha será alterada para 123456, apenas por acessar o site do invasor. Ou seja, ao acessar outro site é possível que ele execute ações no site vulnerável sem o teu consentimento, também é comum a utilização dessa falha enviando o link encurtado (goo.gl,  bit.ly), que executa a ação para a vítima, sendo assim, ao clicar a ação é executada e algumas vezes a vítima nem percebe o golpe.

Utilizar componentes com vulnerabilidades conhecidas 
Aplicativos, APIs, bibliotecas, frameworks e outros módulos de softwares possuem vulnerabilidades, como eles são executados com os mesmos privilégios que a aplicação, se um componente vulnerável for explorado, toda a aplicação pode ser colocada em risco. Por isso é fundamental que seja documentado todos os módulos de terceiros utilizados no projeto e que seja acompanhado a atualização desses projetos, para que a aplicação tenha sempre a versão mais atual dos módulos de terceiros, para aumentar ao máximo o nível da segurança do mesmo.

Por exemplo, uma aplicação que utiliza o plug-in ComentsEasy, pode estar vulnerável a injeção, caso o ComentsEasy não trate esse item, ou seja, é possível que exista vulnerabilidades, por isso é fundamental verificar a real necessidade de utilizar módulos de terceiros, e quando for utilizar, acompanhar as atualizações para que não utilize versões desatualizadas e com falhas conhecidas.

APIs desprotegidas
Aplicações modernas geralmente utilizam APIs, por exemplo, aplicativos móveis se comunicam com APIs (SOAP, XML, Rest, JSON e afins), para realizar consultas e demais transações com o banco de dados, esse tipo de prática é recomendado, pois adiciona um nível extra de proteção na comunicação. O grande problema é quando essas APIs são desprotegidas ou contém várias vulnerabilidades.

Por exemplo, uma API de consulta ao banco de dados de um sistema financeiro, caso não esteja protegida, pode ser acessada diretamente e liberar a consulta de dados sigilosos a qualquer pessoa, mesmo que não esteja utilizando a aplicação.


Artigo retirado do site: inovedados.com.br

quarta-feira, 4 de julho de 2018

DISTRIBUIÇÃO DE MALWARE NA REDE

E ae galera, após finalizarmos o artigo sobre desenvolvimento de malware, que tal entender como ele pode infectar uma rede?

Hoje irei mostrar algumas formas de distribuição de malware, porem não será um artigo pratico.

Aplicações e protocolos
Uma das formas de infecção é por protocolos que não possuem certificados, aplicações como HTTP, por exemplo, podem ser facilmente manipuladas.

O uso dessa técnica pode ser da seguinte forma: o atacante com o uso de alguma ferramenta altera o link do href de um site,

exemplo:

de:


para:


Além da manipulação do href, existem formas de manipular a troca de dados pela rede, envolvendo dns hijacking, dns spoofing e entre outros ataques.

Ferramentas que recomendo para estudo de segurança em redes:
https://github.com/bettercap/bettercap
http://beefproject.com/
https://github.com/byt3bl33d3r/MITMf

Redirecionamento de DNS
Com o redirecionamento de DNS é possível infectar dispositivos conectados a uma rede. Envolvendo a engenharia social, o uso desse método pode ser de varias formas:
  1. Atualização de Firmware
  2. Instalar plugin
  3. Nova atualização de X sistema
Esse ataque pode ser utilizado com as ferramentas citadas a cima.



0 day
Em 2017 o ransomware wannacry infectou mais de 230.000 sistemas, o wannacry utilizou exploits criados pela NSA, que foram vazados, que levou ao lançamento de uma correção crítica pela Microsoft. Entretanto, muitos não atualizaram seus sistemas e foram afetados.

Imagine então uma rede com vários dispositivos desatualizados, com algumas ferramentas você pode obter  a versão desses dispositivos e procurar por vulnerabilidades nas versões atuais deles.



Ferramentas:
Nmap
Netdiscover
Searchsploit

Daria mais de um artigo sobre distribuição de malware pela rede, é um assunto bem grande por conta da quantidade de protocolos que existem, aqui estão alguns links para leitura
https://x-c3ll.github.io/posts/PAM-backdoor-DNS/

https://www.peerlyst.com/posts/transfer-download-payload-by-icmpv4-traffic-via-ttl-damon-mohammadbagher

https://threatpost.com/exploit-code-released-for-ntp-vulnerability/122104/

https://www.oanalista.com.br/2018/07/02/pesquisadores-descobrem-novas-vulnerabilidades-nas-redes-lte-4g/

segunda-feira, 2 de julho de 2018

CRIANDO MALWARE DO ZERO - PARTE 3

E ae galera, essa é a ultima parte do artigo da serie criando malware do zero. Hoje vamos desenvolver, finalmente, o lado do cliente.

Nessa parte, devemos seguir o mesmo raciocino do artigo passado, o porque disso é por conta da conexão cliente-servidor e por conta da criptografia, onde, o cliente - assim como o servidor - possuem uma mesma chave para troca de dados pela rede de forma segura.

Vale lembrar que existem outras formas  para troca de dados na rede de forma segura com o socket.
 Leia mais em:
https://stackoverflow.com/questions/7698488/turn-a-simple-socket-into-an-ssl-socket

https://stackoverflow.com/questions/26851034/opening-a-ssl-socket-connection-in-python

https://github.com/christiandt/Secure-Chat
Bibliotecas 
Como dito, devemos seguir o mesmo raciocínio do servidor.

 
Configuração de conexão e protocolos
Devemos definir o IP (ou DNS) e a porta que o servidor esta configurado.

 
Criptografia e auxiliares
Sendo a ultima parte do código, finalizamos o nosso malware por completo, tendo ele:
  • Conexão Socket;
  • Criptografia com AES e base64;
  • Módulos auxiliares;
    • Backdoor e Spyware embutidos;



Na pratica
É hora de testar o malware, verificar se a conexão esta pegando, se ela esta realmente criptografada e testar nossos auxiliares. Lembrando que eu não criptografei os dados enviados pelos módulos auxiliares, é muito importante lembrar disso.

Como utilizei o sistema Windows como alvo, eu tive que transformar o .py em .exe
  • cx_Freeze para Windows, Linux, e Mac OS X (Python 2.7, 3.x)
  • pyinstaller para Windows, Linux, e Mac OS X (Python 2.7, 3.3-3.5)
  • bbfreeze para Windows e Linux (Python 2.4-2.7)
  • py2exe para Windows (Python 2.6, 2.7)
  • py2exe para Windows (Python 3.3-3.5)
  • pytoexe para Windows (Python 2, 3)
  • Freeze para Linux e maybe Mac OS X (Python 2.x)
  • py2app para Mac OS X (Python 2.x)




 Lembrando que a conexão entre cliente-servidor não é totalmente criptografada, apenas os comandos que são enviados pelos dados que são criptografados. Para ter um conexão segura, é necessário por o SSL no Socket.


Considerações finais
Bom galera, espero que vocês tenham gostado desse artigo com três partes sobre desenvolvimento de malware. Vimos que é importante saber pelo menos o básico-intermediário de programação, redes e sistemas operacionais.

CRIANDO MALWARE DO ZERO - PARTE 2

E ae galera, dando continuidade ao nosso artigo de desenvolvimento de malware do zero, hoje vamos escrever o código-fonte do servidor :).

Revisão
Linguagem que vai ser desenvolvido;
Protocolos e comunicação;
Sistema alvo;
Módulos;
Bibliotecas
Como já dito na aula passada, irei usar bibliotecas de comunicação, sistema e criptografia.
Comunicação: socket
Sistema: os
Criptografia: AES e base64



Configuração de conexão e protocolos
Aqui vamos definir o servidor, a porta e como o sockets vai trabalhar.



Configurar definições de módulos
Os módulos são auxiliares do seu malware, nele pode vim programas embutidos ou você pode pedir para o sistema fazer o download de algum programa via linha de comando.

Meus auxiliares

 
Esse Keylogger manda os logs para o Email, ele funciona via SMTP.
https://github.com/ajinabraham/Xenotix-Python-Keylogger
https://pastebin.com/FD7sX1Le - não funciona via SMTP


Programa para fazer dump de senhas
https://github.com/AlessandroZ/LaZagne


 Comando que mostra processos do Windows


Adicionando malware no Regedit, assim que o sistema iniciar, o malware vai ser executado



 E por ultimo, a shell

 
A varias maneiras de organizar a estrutura dos módulos, isso vai de cada um.

Nosso servidor está pronto, no próximo artigo vamos escrever o código do cliente, que no caso seria o programa para mandar ao alvo.

Vale lembrar que escrever o lado do servidor é escolha sua, existem programas que aceitam conexões do tipo socket (como por exemplo, o netcat), resolvi escrever o servidor por conta dos meus módulos.

Alertando ao leitor: é importante ter noção da linguagem que o malware vai ser desenvolvido, não adianta apenas copiar e colar o código.

domingo, 1 de julho de 2018

CRIANDO MALWARE DO ZERO - PARTE 1

E ae galera, vamos criar um malware?

Malware
Segundo a Wikipédia:  programa de computador destinado a infiltrar-se em um sistema de computador alheio de forma ilícita, com o intuito de causar alguns danos, alterações ou roubo de informações (confidenciais ou não). Ele pode aparecer na forma de código executável, scripts de conteúdo ativo, e outros softwares.

Dividi esse artigo em três partes:
A primeira parte vai ser o escopo do programa.
A segunda parte vai ser o desenvolvimento do servidor.
E por fim, a terceira vai ser o desenvolvimento do cliente.

Requisitos:
Uma linguagem de programação;
Básico de redes;
Entender como o sistema alvo funciona;

A primeira coisa é saber como o seu malware vai agir
Ele só vai ter acesso ao sistema?
Vai ter algum tipo de spyware embutido?
Vai ter transferência de arquivos?

A linguagem de programação
A linguagem que o malware vai ser criado é de sua escolha, irei utilizar o Python por ser uma linguagem que ja uso a muito tempo.

Básico de redes
É extremamente importante saber como a conexão do malware funciona, como ele se comporta na rede, o seu trafego, uso de socket, comunicação entre cliente e servidor.

Sistema operacional
Outra coisa importante é saber como o sistema alvo funciona, qual arquitetura trabalha, se existe algum tipo de firewall / antivírus, se na rede possui algum tipo de IDS / IPS.

O malware
Montando o escopo do malware
Linguagem que vai ser desenvolvido: Python
Protocolo e comunicação: TCP - Socket,
Sistema alvo: Windows 10 - x64 bits / Kaspersky

Módulos
Spyware
Dump de senhas
Monitoramento e edição de processos e registros do Windows
Adicionar ou editar regras no Regedit
Shell

Organizando código-fonte 
Nessa parte é importante saber deixar seu código limpo e que de para você entender em futuras modificações.

Eu dividi o código do meu malware da seguinte forma:



Após montarmos o escopo do malware, já podemos começar a escreve-lo, mas isso vamos deixar para parte 2 desse artigo :).