image

Accede a bootcamps ilimitados y a más de 650 cursos

50
%OFF
Article image
Iuri Salgado
Iuri Salgado10/09/2023 00:40
Compartir

Sua aplicação está segura? Tipos de ataques cibernéticos e mais!

  • #Segurança da informação

Há tempos vemos um grande movimento para que os desenvolvedores se tornem Fullstack. Ultimamente a cultura DevOps vem, cada vez mais, fazendo parte dos nossos times e agora chegou o momento de incorporar a mentalidade da #Cibersegurança em nossas entregas.

image

Mas por onde começar?

Logicamente, você dev. não vai precisar se tornar um especialista em segurança, e passar mais alguns longos anos estudando sobre isso. Porém, é importante conhecer alguns conceitos gerais e principalmente as vulnerabilidades das tecnologias que você trabalha.

Direto ao ponto, vamos começar pelos Pilares da Segurança da Informação! Mas antes, uma justificativa para tentar te convencer. Dados são ativos importantes para as empresas e, com o crescente número de ataques a grandes instituições, a atenção deve ser redobrada. Cada um dos pilares que vamos ver tem sua importância para um bom funcionamento dos processos. Basicamente, um sistema é considerado seguro quando satisfaz esses pilares.

Confidencialidade, Integridade e Disponibilidade

    Estes são os princípios que sustentam as práticas e políticas de proteção de dados, servindo como parâmetros para guiar os processos.

    A confidencialidade é a privacidade dos dados. Aqui o objetivo é restringir o acesso às informações, para que ela chegue apenas às pessoas autorizadas. Por exemplo, uma informação do setor de recursos humanos talvez não precise chegar até você e caso precise, você é responsável por manter sigilo e não divulgar a terceiros.

    Já a integridade se refere à veracidade e confiabilidade da informação. Ela deve garantir que os dados estejam livres de qualquer alteração sem autorização, se mantendo conforme foram criados. Controles de acesso, permissões e validações de alteração são alguns mecanismos que ajudam a manter a integridade.

    Por fim, disponibilidade é garantir que dados e sistemas permaneçam acessíveis sempre que necessário, sem interrupções e também, ter meios de solicitar a portabilidade dos dados para outro fornecedor de produto ou serviço. Imagine que em uma rede de hospitais, o prontuário médico de um paciente deve estar disponível para todos os setores que ele precisar passar, principalmente em casos de emergências.

image

    OBS: Dois novos conceitos surgiram para complementar esses pilares, são eles: A autenticidade que pretende garantir que os dados realmente pertencem à fonte anunciada, onde são usados logins e senhas para autenticação e criptografia para evitar a interceptação e alteração; E a legalidade que é um princípio jurídico para assegurar que todos os procedimentos relacionados à informação sejam feitos de acordo com a legislação, o que pode evitar futuros problemas com auditorias de órgãos fiscalizadores.

image

"Uma colher da sopa de letrinhas da cibersegurança"    

    À medida que nos aprofundamos um pouco no assunto, encontramos uma infinidade de siglas e termos em diferentes contextos. Entenda alguns deles e os tipos de ataques:

  •      LDPD:  Lei nº 13.709/2018[1], é a legislação brasileira que regula as atividades de tratamento de dados pessoais na internet. Além disso, a lei altera os arts. 7º e 16 do Marco Civil da Internet.
  •      Phishing: O alvo normalmente é um usuário mais desatento, com o propósito de induzi-lo a informar senhas, dados de acesso, clicar em links falsos de bancos e redes sociais, etc.
  •      DDoS: É uma sobrecarga de requisições a um determinado serviço com a intenção de atacar a disponibilidade dele, vários computadores na internet podem ser usados para compor esse ataque.
  •      XSS: Cross-Site Scripting é uma vulnerabilidade conhecida pela falta de uma validação ou filtro em um campo de entrada, isso permite a injeção de um script malicioso que pode por exemplo alterar o conteúdo de uma página, afetando a integridade e autenticidade de uma aplicação.
  •      SQL-injection: Semelhante ao XSS porém explorando a validação em campos que acessam diretamente um banco de dados, é uma das falhas mais graves por permitir que todos os dados de um banco sejam acessados por pessoas sem autorização e até mesmo excluir esses dados, atingindo principalmente a confidencialidade.
  •      Man-in-the-middle: Envolve a interceptação e escuta de comunicação entre um usuário e uma outra parte envolvida, como um usuário e um sites de compras, por exemplo. Dados de cartão de crédito, senhas e informações sensíveis podem ser vazadas nesse caso.
  •      Ransomware: Malware que impede o usuário de acessar seus arquivos, podendo liberá-los somente com um pagamento de “resgate”. Vimos a pouco tempo grandes grupos comerciais sofrendo com esse ataque.
  •      Virus: Malware que pode vir como um anexo em um e-mail que contém uma carga de vírus, ou parte do malware que executa a ação maliciosa. Depois que a vítima abre o arquivo, o dispositivo é infectado. A partir daí a máquina pode ser usada para ataques de DDoS e também instalado um "Man-in-the-middle".
  •      Worm: Malware que têm a capacidade de se copiar de máquina para máquina em rede, geralmente explorando algum tipo de falha de segurança em um software ou sistema operacional e não exigem interação do usuário para funcionar.
  •      Trojan: Os cavalos de Tróia se disfarçam de aplicativos inofensivos, enganando os usuários para que façam o download e os usem. Uma vez em funcionamento, eles podem roubar dados pessoais, travar um dispositivo, espionar atividades ou até mesmo iniciar um ataque.

    

    Vale lembrar que esses são apenas alguns dos termos mais comuns, como eu disse, "apenas uma colher nesse panelão de sopa"!

Qual o próximo passo?

    Agora que já aquecemos com os pilares e alguns termos, vamos relembrar alguns pontos que podem ser observados no desenvolvimento de software independente da tecnologia que você usa.

    Você não quer que sua aplicação web seja vítima de uma quebra de confidencialidade, certo? Então fique atento a estes pontos de autenticação:

    0 - Valide todos os campos em todos os formulários do seu site: Segundo o relatório OWASP Top10, a injeção de scripts e sql está entre os top ataques recorrentes em aplicações web, portanto não permita que algo que não é esperado seja processado no seu formulário

    1 - Use HTTPS: Sem medo, use o SSL em tudo na sua aplicação web, esse ponto já não é mais apenas uma recomendação e sim sua obrigação como desenvolvedor. Busque pelo Let's Encrypt, é grátis e fácil, não tem desculpas para não usar.

    2 - Senhas seguras e segurança das senhas: Não pense somente na sua senha como administrador de um aplicativo, lembra que o usuário é sempre o elo mais fraco então, não o impeça de usar senha fortes e complexas e também não permita que ele use senhas fracas. Tenha uma política de senhas fortes e complexas e dificulte a vida do pentester. Mas também não armazene as senhas dos seus usuários de qualquer forma, é importante usar alguma hash forte de senhas e saber que algoritmos como o md5 já foram quebrados.

    3 - Limite as tentativas de login: Eu não mencionei mas o Brute-Force também é um termo muito usado, basicamente é como o nome diz, um script vai ficar testando várias combinações até conseguir o acesso na marra!

    4 - Cuidado com os cookies: Depois de feito o logout, lembre que os cookies devem ser destruídos e durante o seu uso é recomendado que sejam criptografados.

    5 - Tratamento de erro: Nunca, jamais, deixe um erro sem tratamento aparecer para o usuário, muitas vezes os erros nas linguagens de programação nos retornam muitas informações que também podem ser usadas para ataques.

    6 - Tempo de resposta no login: Aqui você pode pensar que é paranóia, mas como dizem, "se tem aviso, tem história". Vamos lá, quando um usuário e senha são inseridos nos campos, a sua aplicação vai buscar e validar essas credenciais, e isso leva um tempo, em alguns casos esse tempo pode dar indícios de que a busca em parte está com informações corretas.

    Você pode tentar padronizar para que independente se o usuário tenha sido localizado ou não, o tempo de resposta seja sempre o mesmo. Além disso, nunca retorne algo como, "senha incorreta" ou "usuário não encontrado", escolha retornos genéricos como "Usuário e/ou senha inválidos", esse não é o momento de facilitar a vida do usuário!

Mantenha-se atualizado

    Bacana, você já é um profissional diferenciado por pensar na segurança da sua aplicação, mas não para por aqui. A OWASP (Open Web Application Security Project) é uma organização internacional sem fins lucrativos dedicada à segurança de aplicativos web.

    Dá uma olhada no site deles clicando aqui (ps. não é phishing eu prometo). A ideia é propagar a informação de forma gratuita e com acesso universal, tem artigos interessantes e palestras sobre segurança.

    O OWASP Top 10 é um relatório regular que descreve os ataques mais comuns que têm ocorrido e está disponível para que você possa refletir se sua aplicação está sujeita a exploração dessas vulnerabilidades

    Alguns canais como o Guia Anônima e o Hacking na Web falam de uma forma descomplicada sobre vários assuntos e termos da cibersegurança

Teste, pratique e explore vulnerabilidades.

    A melhor forma de saber se uma porta está fechada é tentando abri-la.

Então conheça e explore vulnerabilidades, aplique esse conhecimento na sua aplicação em um ambiente controlado, você vai se surpreender com que vai encontrar.

    Você pode até usar a inteligência artificial para lhe ajudar nesse processo, mas cuidado, nunca coloque trechos do seu código que possam conter rotas da aplicação, dados sensíveis ou chaves. Procure buscar formas genéricas de simular o seu algoritmo.

Conclusão e bônus:

    Vamos ver um pouco de mão na massa? Então, simulei um ataque DDoS a um servidor apache para ver como ele se comporta. Para isso vamos usar um ambiente controlado no Oracle Virtualbox. Nele instalamos um Kali Linux completo e uma máquina para exploração de vulnerabilidades fornecida pela OWASP.

    O Kali é uma distribuição Linux baseada no Debian que já vem com vários recursos pré instalados para a prática de Pentest e exploração de vulnerabilidades. Se você assistiu Mr. Robot vai lembrar dela. Já a máquina fornecida pela OWASP foi preparada com várias das vulnerabilidades conhecidas para uma aplicação web, pronta para ser explorada.

    Foi criada uma rede interna apenas entre as duas máquinas virtuais para possibilitar a comunicação entre elas. No Kali, vamos usar a ferramenta Slowloris que foi desenvolvida em python e pode ser usada para ataques DDOS a máquinas vulneráveis como essa que vamos usar.

    Vale ressaltar que você só deve tentar simular esse teste em ambiente controlado e jamais em algum site na internet. Além de ser um crime a ferramenta deixa rastros muito claros do seu uso e você será rastreado facilmente e responderá legalmente por isso.

    Acompanha aqui então como foi feito o ataque simulado:

    Para uma melhor qualidade da imagem você pode ver no youtube nesse link: https://www.youtube.com/watch?v=GsZkMBCkY0k

image

Entenda o que aconteceu:

Quando rodei o comando python2 slowloris.py 10.0.2.1 -s 500 no Kali, uma série de requisições http GET foram feitas para o apache na maquina OWASP, esse é o princípio do DDoS, encher de requisições até que a máquina "caia", ou seja, tenha uma sobrecarga e pare de responder.

    Nesse cenário a máquina não chega a cair pois temos apenas um computador fazendo as requisições, por mais fraca que seja, ainda dá conta dessa demanda, gerando apenas uma demora um pouco maior no retorno no navegador.

    Agora imagine aquele e-mail com um anexo duvidoso que você baixou e nem deu importância, nele existia um malware que executa uma função escondida parecida com essa que simulamos agora com o Slowloris, você nem percebe mas agora sua máquina está sendo usada para um ataque DDoS em algum sistema na internet. Esse mesmo e-mail pode ter sido enviado para milhares de contas diferentes e várias delas agora estão com a máquina infectada com esse mesmo malware.

    Voilá! Temos um ataque DDoS Real que, caso a máquina alvo não tenha as proteções necessárias, certamente irá deixar de funcionar e quebrar o princípio da disponibilidade.

    

    Espero ter contribuído um pouco para o seu trabalho e vamos discutir mais sobre o assunto por aqui. Abraços.

    

Iuri Salgado.

Aproveitando, você pode aprender um pouco mais sobre #Cibersegurança na Formação Cybersecurity Specialist aqui da DIO nesse link: https://dio.me/curso-cybersecurity/AFRYJA387KMX

A maioria dos servidores web usam ambientes Linux então não passe trabalho, estude com a Formação Linux Fundamentals: https://dio.me/curso-linux/AFRYJA387KMX

E muitos malwares que rodam por aí e ferramentas para pentest são feitas em Python, então aprenda essa linguagem na Formação Python Developer: https://dio.me/curso-intensivo-python/AFRYJA387KMX

Por fim, é importante conhecer muito bem o SQL para evitar que exista uma brecha para SQL-injections na sua aplicação, então dá uma olhada na Formação SQL Database Specialist: https://dio.me/curso-sql/AFRYJA387KMX

    

Referências:    

    https://www.treinaweb.com.br/blog/pilares-da-seguranca-da-informacao

    https://tecnoblog.net/noticias/2021/10/01/renner-explica-impactos-do-ataque-de-ransomware-a-pedido-do-procon-sp/

    https://www.treinaweb.com.br/blog/termos-comuns-de-seguranca

    https://www.mcafee.com/pt-br/antivirus/malware.html

    https://www.treinaweb.com.br/blog/checklist-de-seguranca-para-autenticacao

    https://www.cloudflare.com/pt-br/learning/security/threats/owasp-top-10/

Compartir
Comentarios (0)