Existem inúmeras razões pelas quais alguém pode tentar comprometer a segurança de um sistema. Em traços largos:
- Para usar os recursos do sistema (por exemplo, enviar spam, retransmitir tráfego)
- Para obter informações sobre o sistema (por exemplo, obter dados de clientes de um site de comércio eletrônico).
- Para alterar informações no sistema (por exemplo, desfigurar um site, inserir informações falsas, remover informações)
Apenas algumas vezes essas coisas exigem acesso root. Por exemplo, inserir uma consulta de pesquisa malformada em um site que não limpe adequadamente a entrada do usuário pode revelar informações do banco de dados do site, como nomes de usuário / senhas, endereços de email, etc.
Muitos criminosos de computador são apenas "crianças de script"; ou seja, pessoas que não entendem realmente a segurança de sistemas e podem nem mesmo codificar, mas executar explorações escritas por outras pessoas. Estes são geralmente muito facilmente defendidos porque eles não têm a capacidade de se adaptar; eles estão limitados a explorar vulnerabilidades conhecidas. (Embora possam usar botnets - grandes grupos de computadores comprometidos - o que pode significar um perigo de ataques DDoS.)
Para o invasor habilidoso, o processo é mais ou menos assim:
-
Descubra qual é o objetivo e qual é o objetivo. Segurança - mantendo-a ou comprometendo-a - é um cálculo de risco / recompensa. Quanto mais arriscado e mais caro for o caso, mais atraente será a recompensa para que um ataque valha a pena.
-
Considere todas as partes móveis que afetam qualquer objetivo - por exemplo, se você quiser enviar spam, você poderá atacar o servidor de e-mail, mas talvez faça mais sentido ir atrás de um serviço de rede diferente, pois tudo o que você realmente precisa é usar a conexão de rede do alvo. Se você quiser dados do usuário, você começaria a olhar para o servidor de banco de dados, o webapp e o servidor da Web que têm a capacidade de acessá-lo, o sistema que faz o backup, etc.
Nunca desconsidere o fator humano. Proteger um sistema de computador é muito mais fácil do que garantir o comportamento humano. Conseguir alguém para revelar informações que não deveriam, ou executar códigos que não deveriam, é fácil e eficaz. Na faculdade, ganhei uma aposta com um amigo que envolvia invadir sua rede corporativa segura, vestindo uma roupa reveladora e encontrando um vice-presidente lascivo - a experiência técnica de meu amigo superava em muito a minha, mas nada supera o poder de um 17yo co-ed em uma saia curta!
Se você não tem peitos, considere oferecer um jogo sem sentido ou algo que os idiotas baixem por diversão sem considerar o que realmente poderia estar fazendo.
-
Veja cada parte identificada e considere o que ela pode fazer e como isso pode ser ajustado para fazer o que você quer - talvez o suporte técnico reconfigure as senhas dos usuários com frequência sem identificar corretamente o chamador, e chamá-los de confusos vai te dar a senha de outra pessoa. Talvez o webapp não esteja verificando o que é colocado na caixa de pesquisa para garantir que não seja um código antes de colocá-lo em uma função que ele executa. Compromissos de segurança geralmente começam com algo propositadamente exposto que pode ser feito para se comportar de uma maneira que não deveria.