Quais são os aspectos exclusivos de um software Ciclo de vida de um ataque / ferramenta em uma vulnerabilidade de software?


10

Na minha universidade local, há um pequeno clube de computação para estudantes com cerca de 20 alunos. O clube possui várias equipes pequenas com áreas de foco específicas, como desenvolvimento móvel, robótica, desenvolvimento de jogos e hackers / segurança.

Estou introduzindo alguns conceitos básicos de desenvolvimento ágil para algumas equipes, como histórias de usuários, estimativa de complexidade de tarefas e integração contínua para controle de versão e builds / testes automatizados.

Estou familiarizado com alguns ciclos de vida básicos de desenvolvimento, como cascata, espiral, RUP, ágil etc., mas estou imaginando se existe um ciclo de vida de desenvolvimento de software para invadir / violar a segurança. Certamente, os hackers estão escrevendo código de computador, mas qual é o ciclo de vida desse código? Eu não acho que eles estariam preocupados demais com a manutenção, uma vez que a violação foi encontrada e corrigida, o código que explorou essa violação é inútil.

Eu imagino que o ciclo de vida seria algo como:

  1. Encontre lacunas na segurança
  2. Explorar a lacuna na segurança
  3. Adquirir carga útil
  4. Utilize carga útil

Que tipo de diferenças (se houver) existem para o ciclo de vida de desenvolvimento de software quando o objetivo do produto é violar a segurança?


4
que diz que não há qualquer formalidade em hacking tudo
aberração catraca

11
Dang, quatro boas respostas já. Vai ser difícil escolher apenas um.
22412 David Kaczynski

@ DavidKaczynski, você também pode perguntar sobre Segurança da Informação para obter o ponto de vista daqueles que realmente projetam os vários tipos de software. E há grandes diferenças, dependendo dos requisitos de segurança ...
Avid

@AviD obrigado, acho que recebi excelentes respostas aqui no que diz respeito ao fato de que os ciclos de vida de desenvolvimento de software invasivo não são inerentemente diferentes. Gostaria de saber mais sobre os objetivos ou opções de software invasivo quando a segurança for violada, como infectar o computador com um vírus, criar um backdoor ou imitar um usuário para obter dados.
David Kaczynski

11
@DavidKaczynski, mas o que quero dizer é que é inerentemente diferente - ou melhor, o desenvolvimento de um tipo é diferente de outro tipo. Veja, por exemplo, a resposta de Terry como exemplo, e compare-a ainda mais a vírus, e novamente a zero dias, e novamente a Stuxnet e ... .
AviD 15/10/12

Respostas:


7

De que tipo de código você está falando?

Existem muitas ferramentas de segurança usadas no processo de hackers, incluindo scanners como nmap , sqlmap , Nessus e muitos outros. Eu imagino que eles tenham o mesmo tipo de ciclo de vida de software que qualquer outro aplicativo.

Por outro lado, existem códigos de exploração. Códigos escritos para tirar proveito de uma exploração e situação muito específica. Duvido muito que eles precisem de qualquer ciclo de vida. No entanto, muitos códigos de exploração também são integrados a uma estrutura de exploração maior, como o Metasploit .


Após uma discussão com o @AviD, gostaria de acrescentar alguns pontos.

Será muito diferente para situações específicas.

Alguns códigos de exploração podem ser apressados ​​para levar em conta a janela antes que o dia zero seja corrigido. O código pode ser apressado por outros motivos também. Veja: CRIME - Como vencer o sucessor do BEAST? para um ótimo exemplo disso. Uma pessoa escreveu um pedaço de código de PoC para provar rapidamente seu argumento. Nenhuma metodologia de ciclo de vida de software é levada em consideração para códigos como este.

Malwares armados como stuxnet ou FLAME provavelmente o fazem. Software empacotado como o Metasploit faz.

Então a resposta certa é ... depende.


Ainda não tivemos uma reunião formal para discutir metas ou possíveis vias de violar a segurança; portanto, não posso dizer que tipo de código estaríamos desenvolvendo (ou se usaríamos o software / tecnologia existente para atingir nossas metas). Ainda estou interessado em aprender que tipos de técnicas formais existem para tirar proveito de um sistema comprometido, como criar backdoors, imitar usuários, infectar o computador com vírus, etc. Suponho que esse tipo de pergunta possa ser mais adequado para a segurança de TI
David Kaczynski

3

Não vejo por que deve haver um ciclo de vida de desenvolvimento especificamente diferente, dependendo da finalidade do produto.

O software desenvolvido para violar a segurança pode ter a vida útil de qualquer outro tipo de software e exigirá a mesma quantidade de manutenção e trabalho.

Diferentes criadores de software adotam ciclos de vida diferentes, dependendo de suas necessidades.


3

Os modelos de desenvolvimento que você especificar são apenas isso - modelos de desenvolvimento. Eles são extremamente úteis quando você está desenvolvendo engenharia - quando você tem requisitos, quando precisa criar ou modificar arquiteturas de sistema ou projetos de componentes, quando precisa criar ou modificar um produto e testes associados e quando é liberado para um cliente.

Não tenho certeza de que esses modelos possam ser aplicados diretamente a projetos mais orientados à pesquisa, nos quais você está tentando responder a perguntas ou aprender mais sobre um sistema (ou os pontos fracos de segurança do sistema, no seu caso particular).

Eu suspeitaria que os modelos iterativos / incrementais, como os métodos ágeis e o modelo Spiral, seriam os mais úteis para formar uma base. Em cada iteração, você pode trabalhar para responder perguntas ou definir mais parâmetros para trabalhar, que podem ou não incluir a gravação de qualquer código. Talvez vários métodos de pesquisa científica também possam fornecer uma base interessante.


1

Recentemente, o hackeamento viu uma forte profissionalização, longe de hackers solteiros fazerem isso "pelo lulz" ou para ganhar fama, em direção à colaboração entre especialistas com o objetivo de ganhar dinheiro. O resultado foram "kits de hackers" comerciais completos, como o kit de exploração Blackhole, onde pontos fracos de software específicos podem ser facilmente integrados como plug-ins. Eu diria que esses produtos são desenvolvidos exatamente como qualquer outro produto de software.

Aparentemente, também existe um mercado em desenvolvimento para explorações de dia zero .


1

O Life-Cyle nunca depende de código. É bastante dependente de outros fatores como:

  1. Tempo
  2. Despesas
  3. Natureza do Cliente
  4. Natureza do produto

No seu cenário, a metodologia Agile Life Cyle seria mais útil. O motivo é que você precisa envolver seu cliente durante o desenvolvimento e precisa verificar os parâmetros de qualidade aceitáveis ​​do seu produto. Metodologia Ágil iria ajudá-lo imensamente para melhorar o seu Software Hacking via recolha de feedback do seu cliente e, em seguida, trabalhar gradualmente em incrementais base.


Isso parece um pouco subjetivo. Você está sugerindo que outros métodos do ciclo de vida NÃO envolvam o cliente durante o desenvolvimento ou verifiquem parâmetros de qualidade aceitáveis? Claro que isso não é exclusivo do Agile.
Jay Stevens
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.