Was sind einzigartige Aspekte eines Software-Lebenszyklus eines Angriffs / Tools auf eine Software-Sicherheitsanfälligkeit?


10

An meiner örtlichen Universität gibt es einen kleinen Studenten-Computerclub mit ungefähr 20 Studenten. Der Club hat mehrere kleine Teams mit bestimmten Schwerpunkten wie mobile Entwicklung, Robotik, Spieleentwicklung und Hacking / Sicherheit.

Ich stelle einigen Teams einige grundlegende agile Entwicklungskonzepte vor, z. B. User Stories, das Schätzen der Komplexität von Aufgaben und die kontinuierliche Integration für die Versionskontrolle und automatisierte Builds / Tests.

Ich bin mit einigen grundlegenden Entwicklungslebenszyklen vertraut, wie z. B. Wasserfall, Spirale, RUP, Agilität usw., aber ich frage mich, ob es einen Softwareentwicklungslebenszyklus für das Hacken / Verletzen von Sicherheit gibt. Sicherlich schreiben Hacker Computercode, aber wie ist der Lebenszyklus dieses Codes? Ich glaube nicht, dass sie sich zu sehr mit der Wartung befassen würden, da der Code, der diesen Verstoß ausgenutzt hat, nutzlos ist, sobald der Verstoß gefunden und gepatcht wurde.

Ich stelle mir vor, der Lebenszyklus wäre ungefähr so:

  1. Finden Sie eine Sicherheitslücke
  2. Sicherheitslücke ausnutzen
  3. Nutzlast beschaffen
  4. Nutzlast nutzen

Welche Unterschiede (falls vorhanden) gibt es für den Entwicklungslebenszyklus von Software, wenn der Zweck des Produkts darin besteht, die Sicherheit zu verletzen?


4
Wer sagt, dass es irgendeine Formalität beim Hacken gibt
Ratschenfreak

1
Verdammt, schon vier gute Antworten. Es wird schwierig sein, nur einen auszuwählen.
David Kaczynski

@DavidKaczynski Sie können dies auch in Bezug auf Informationssicherheit erfragen , um den Standpunkt derjenigen zu ermitteln, die tatsächlich die verschiedenen Arten von Software entwerfen. Und es gibt große Unterschiede, abhängig von den Sicherheitsanforderungen ...
AviD

@AviD danke, ich denke, ich habe hier einige hervorragende Antworten in Bezug auf die Tatsache erhalten, dass die Entwicklungslebenszyklen für invasive Software nicht von Natur aus unterschiedlich sind. Ich möchte mehr über die Ziele oder Optionen invasiver Software erfahren, wenn die Sicherheit verletzt ist, z. B. den Computer mit einem Virus infizieren, eine Hintertür erstellen oder einen Benutzer nachahmen, um Daten zu erhalten.
David Kaczynski

1
@DavidKaczynski aber mein Punkt ist , dass es ist von Natur aus anders - oder besser gesagt, unterscheidet sich von einem anderen Typ einen Typ zu entwickeln. Sehen Sie sich beispielsweise Terrys Antwort als Beispiel an und vergleichen Sie diese weiter mit Viren und erneut mit Zero-Days und erneut mit Stuxnet und ... Einige würden ordnungsgemäß entwickelt, andere werden über Nacht verworfen, abhängig vom unterschiedlichen Kontext und den unterschiedlichen Anforderungen .
AviD

Antworten:


7

Über welche Art von Code sprechen Sie?

Es gibt viele Sicherheitstools, die beim Hacken verwendet werden, darunter Scanner wie nmap , sqlmap , Nessus und viele andere. Ich würde mir vorstellen, dass sie die gleiche Art von Software-Lebenszyklen haben wie alle anderen Anwendungen.

Auf der anderen Seite gibt es Exploit-Codes. Codes, die geschrieben wurden, um einen ganz bestimmten Exploit und eine bestimmte Situation auszunutzen. Ich bezweifle sehr, dass diese überhaupt einen Lebenszyklus benötigen. Viele Exploit-Codes sind jedoch auch in ein größeres Exploit-Framework wie Metasploit integriert .


Nach einer Diskussion mit @AviD möchte ich einige Punkte hinzufügen.

Es wird für bestimmte Situationen sehr unterschiedlich sein.

Einige Exploit-Codes werden möglicherweise ausgegeben, um das Fenster zu berücksichtigen, bevor der Zero-Day gepatcht wird. Code kann auch aus anderen Gründen herausgeschleudert werden. Siehe: KRIMINALITÄT - Wie kann man den BEAST-Nachfolger schlagen? für ein gutes Beispiel dafür. Eine Person hat einen PoC-Code geschrieben, um seinen Standpunkt schnell zu beweisen. Für solche Codes wird keine Software-Lebenszyklus-Methodik berücksichtigt.

Waffen-Malware wie Stuxnet oder FLAME ist wahrscheinlich der Fall. Gepackte Software wie Metasploit.

Die richtige Antwort lautet also ... es kommt darauf an.


Wir hatten noch kein offizielles Treffen, um Ziele oder mögliche Wege für Sicherheitsverletzungen zu besprechen. Daher kann ich nicht sagen, welche Art von Code wir entwickeln würden (oder ob wir vorhandene Software / Technologie verwenden würden, um unsere Ziele zu erreichen). Ich bin immer noch daran interessiert zu erfahren, welche Arten von formalen Techniken es gibt, um ein kompromittiertes System zu nutzen, wie das Erstellen von Hintertüren, das Imitieren von Benutzern, das Infizieren des Computers mit einem Virus usw. Ich nehme an, dass diese Art von Frage für die IT-Sicherheit
David Kaczynski

3

Ich verstehe nicht, warum es je nach Zweck des Produkts einen spezifisch unterschiedlichen Entwicklungslebenszyklus geben sollte.

Software, die entwickelt wurde, um die Sicherheit zu verletzen, kann eine so lange Lebensdauer haben wie jede andere Art von Software und erfordert den gleichen Aufwand an Wartung und Arbeit.

Verschiedene Entwickler solcher Software werden je nach ihren Anforderungen unterschiedliche Lebenszyklen annehmen.


3

Die von Ihnen angegebenen Entwicklungsmodelle sind genau das - Entwicklungsmodelle. Sie sind äußerst nützlich, wenn Sie technische Entwicklung durchführen - wenn Sie Anforderungen haben, wenn Sie Systemarchitekturen oder Komponentendesigns erstellen oder ändern müssen, wenn Sie ein Produkt und die zugehörigen Tests erstellen oder ändern müssen und wenn Sie es an einen Kunden freigeben.

Ich bin mir nicht sicher, ob diese Modelle direkt auf forschungsorientiertere Projekte angewendet werden können, bei denen Sie versuchen, Fragen zu beantworten oder mehr über ein System (oder die Sicherheitsschwächen des Systems in Ihrem speziellen Fall) zu erfahren.

Ich würde vermuten, dass die iterativen / inkrementellen Modelle wie die agilen Methoden und das Spiralmodell am nützlichsten sind, um eine Basis zu bilden. In jeder Iteration können Sie darauf hinarbeiten, Fragen zu beantworten oder weitere Parameter zu definieren, mit denen gearbeitet werden soll. Dazu gehört möglicherweise das Schreiben von Code. Vielleicht bieten auch verschiedene wissenschaftliche Forschungsmethoden eine interessante Grundlage.


1

Das Hacken hat in letzter Zeit eine starke Professionalisierung erfahren, weg von einzelnen Hackern, die es "für den Lulz" tun oder um Ruhm zu erlangen, hin zur Zusammenarbeit zwischen Spezialisten mit dem Ziel, Geld zu verdienen. Das Ergebnis waren vollwertige kommerzielle "Hacking-Kits" wie das Blackhole-Exploit-Kit, in die bestimmte Software-Schwachstellen wie Plugins leicht integriert werden können. Ich würde annehmen, dass solche Produkte ziemlich genau wie alle anderen Softwareprodukte entwickelt werden.

Es gibt offenbar auch einen sich entwickelnden Markt für Zero-Day-Exploits .


1

Life-Cyle ist niemals codeabhängig. Es hängt eher von anderen Faktoren ab wie:

  1. Zeit
  2. Budget
  3. Art des Kunden
  4. Art des Produkts

In Ihrem Szenario ist die Agile Life Cyle-Methode am nützlichsten. Grund dafür ist, dass Sie Ihren Kunden in die Entwicklung einbeziehen und die akzeptablen Qualitätsparameter Ihres Produkts überprüfen müssen. Agile Methodology würde Ihnen helfen, immens Ihre Hacking Software zur Verbesserung Ihres Kunden - Feedback über das Sammeln und dann auf nach und nach Arbeits inkrementalen Basis.


Dies scheint ein wenig subjektiv. Schlagen Sie vor, dass andere Lifecycle-Methoden den Kunden NICHT während der Entwicklung einbeziehen oder akzeptable Qualitätsparameter überprüfen? Das gibt es natürlich nicht nur bei Agile.
Jay Stevens
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.