Bevor ich das Thema des Diploms auswählte, stellte ich fest, dass eine Situation weit verbreitet ist, in der bei Computerangriffen eine Person nur von einer Seite betrachtet wird - derjenigen, die als Schwachstelle angegriffen wird.
Während des Angriffs interessiert sich jeder nur für die Werkzeuge und Aktionen der Täter und erst nachdem alles passiert ist - wer war hinter dem Angriff und welche Ziele wollten sie erreichen.
Jahre sind vergangen (fast sechs Jahre schon), aber dieses Thema lässt mich immer noch nicht allein.
Als ich ein Diplom schrieb, wurde mir klar, dass ich meine Stärke sehr überschätzt hatte und nicht in sechs Monaten ein Projekt dieser Größenordnung für eine Person erstellen konnte. Zumindest gelang es mir nicht.
Die mangelnde Erfahrung mit realen Systemen wirkte sich ebenfalls aus, und einige Entwurfsentscheidungen wurden beim Verfassen eines Diploms überdacht, aber ich kam erst nach Jahren zu einigen Punkten.
In diesem Artikel geht es um einen Entwurf und die Mängel und Fragen, die während des Entwurfsprozesses aufgetreten sind.
Ich würde mich freuen, wenn sich jemand für diese Seite von Computerangriffen interessiert und er meine bescheidenen Leistungen nutzen könnte.
Und ja, der „Hacker“ im Titel des Artikels wird nur in einer genau definierten Bedeutung verwendet - einem Verstoß gegen die Informationssicherheit.
Thema des Abschlusszeugnisses: Entwurf eines Systems zur dynamischen Ermittlung des potenziellen Ziels eines Verstoßes gegen die Sicherheit von Computernetzwerken.
Die allgemeine Idee: Wenn wir einen Angriff irgendwie reparieren (zum Beispiel mit
SIEM ), dann gehen wir davon aus, was der Eindringling am Ende tun möchte.
Als ich das Diplom schrieb, wurde klar, dass einige der Punkte im Diplom verbessert werden können und sollten.
Ich habe hier bereits über einen Teil meines Diploms gesprochen, oder vielmehr über eines der Probleme, auf die ich beim Schreiben gestoßen bin. Mein Artikel ist nicht der beste, aber ich habe in den Kommentaren etwas Nützliches gelernt, danke an alle Kommentatoren.
Über Layouts
Als erstes möchte ich die Absolventen auf das Layout aufmerksam machen.
Alles und ständig. Es wird klar, wo und was schief geht. Und wenn es nicht klar ist, kannst du deine Fähigkeiten verbessern. Leider bin ich kein Programmierer oder Entwickler, und mit der Administration mache ich das nicht wirklich. Ich erfinde wirklich gerne etwas Neues oder suche nach Engpässen bei Ideen. Das Prototyping und die Durchführung des Experiments fiel daher fast ausschließlich meiner diplomierten Betreuerin zu, wofür sie sich herzlich bedankte.
Ich hatte keine eigene Infrastruktur.
Sie können sich mit jemandem vereinen und Eisen einbringen. Nehmen Sie zum Beispiel mehrere Laptops, einen Router und auf diesem System ein Miniaturmodell auf.
Sie können auch auf den Websites von kostenlosen Kleinanzeigen alt, nicht sehr peppig, aber lebendes Eisen kaufen. Manchmal verkaufen sie für "1.000 Rubel, aber Abholung."
Komm auf den Punkt
Wo soll ich mit der Vorhersage beginnen?
Um zu verstehen, was in der Gegenwart passiert.
Verantwortlich dafür war das SIEM OSSIM. Gleichzeitig erklärte der Entwickler, er könne Angriffe bestimmen und CVE-Angriffsketten bilden. Dafür war ich süchtig - ich muss die Angriffe nicht selbst bestimmen und kann mich direkt auf die Bestimmung des potenziellen Ziels konzentrieren. Ehrlich gesagt war es für mich nicht sehr interessant, wie SIEM OSSIM Angriffe definiert und CVE zuweist. Vor nicht allzu langer Zeit habe ich versucht, es herauszufinden, konnte aber die Einzelheiten nicht finden.
Darüber hinaus könnte
CAPEC zur
Vorhersage herangezogen werden. Ich war jedoch viel mehr daran interessiert, CVE / CVSS und CAPEC zu verwenden, und ich schenkte nicht genügend Aufmerksamkeit.
Aber vorher kümmern wir uns um alles, was wir lieben - die Einstufung von Verstößen.
Einstufung von Verstößen
Ich habe dieses Thema bereits angesprochen, aber lassen Sie uns es noch einmal durchgehen, nur schnell.
SIEM sammelt einen Angriff in einer CVE-Kette. Aus CVE / CVSS nehmen wir den AccessComplexity-Vektor. Die zweite Version von CVSS wurde verwendet, daher gibt es drei Abstufungen und nicht zwei, wie es jetzt ist.
Irgendwie nicht beeindruckend, oder? Es wird weiter interessanter sein. Im Übrigen war dies im letzten Artikel nicht der Fall.
Informationssicherheit ist der Prozess der Gewährleistung der Verfügbarkeit, Integrität und Vertraulichkeit von Informationen.
Dies ist eine der allgemein anerkannten Definitionen.
Was aber, wenn wir Verstöße gegen diese Informationseigenschaften klassifizieren?
So hat sich folgende Einteilung herausgestellt:
- Pfadfinder
- Zerstörer
- Invader
"Scout" - sein Hauptziel ist es, Informationen über das System offenzulegen oder Informationen (Daten, Dateien usw.) von ihm zu erhalten.
"Destroyer" (Zerstörer) - Hauptzweck ist es, das System oder seine Komponenten bis zum Ausfall zu stören.
"Invader" - sein Hauptzweck ist es, die Kontrolle über das System oder seine Komponenten zu erlangen.
Eine solche Rollenverteilung erschien mir vor fünf Jahren als gute Idee. Allerdings schien mir damals vieles eine gute Idee zu sein.
Um Übertreter nach diesen Klassen zu klassifizieren, verwenden wir CVE / CVSS ConfImpact ("Auswirkungen auf die Vertraulichkeit"), IntegImpact ("Auswirkungen auf die Barrierefreiheit"), AvailImpact ("Auswirkungen auf die Integrität").
In einem Vektor kann ein Einfluss die folgenden Werte annehmen: kein Einfluss auf eine Ressource (
N ), teilweiser Einfluss auf eine Ressource (
P ), volle Kontrolle über eine Ressource (
C ).
Abschließend weisen wir darauf hin, dass Klassen unterschiedliche Auswirkungen auf das System haben: Am allerwenigsten „Scout“ und am allermeisten „Invader“.
Nachdem wir eine Angriffskette von SIEM erhalten haben, können wir den Eindringling klassifizieren. Und schon daraus können wir Rückschlüsse auf die Ziele des Verursachers ziehen.
Ein Eindringling, der eine Reihe von Angriffen besteht, kann seine Fähigkeiten und seine Klasse nur erhöhen, aber nicht verringern. Niedrig → Mittel → Hoch und Scout → Zerstörer → Eindringling.
Die Klassifizierung wird verwendet, um die Absicht des Eindringlings indirekt vorherzusagen.
Man kann jedoch davon ausgehen, dass man bei der Klassifizierung von Verstößen das erwartet, wonach sie streben.
Vielleicht können wir sagen, dass die Klassifizierung der am besten funktionierende Platz im Diplom ist.
Alle diese Nuancen, die mich verwirren, sind in einem früheren Artikel allgemein beschrieben.
Architektur
Schauen wir uns zunächst die Lösungsarchitektur an.
Die Hauptkomponenten des Subsystems des Systems zur dynamischen Bestimmung des potenziellen Ziels eines Sicherheitsexperten sind drei Module, die nach den drei mythischen skandinavischen Zauberinnen benannt sind, die das Schicksal einer Person bestimmen - Urd, Verdandi und Skuld.
Als ich über die "skandinavischen Zauberinnen" zur Verteidigung des Diploms sprach, war ich mir sicher, dass dies eine großartige Idee ist und irgendwie helfen wird, "die Situation zu entschärfen". Nein. Es scheint, dass der Effekt das Gegenteil ist. Aber ich fühlte es doch geäußert. Möglicherweise ist dieser Ansatz geeignet, wenn Sie an bestimmten Tagen, jedoch nicht vor der staatlichen Kommission, Redner sind.
Es half mir jedoch zu verstehen, wie das System funktionieren sollte, wenn ich den Subsystemen nur solche Namen gab.
Das System ist funktional in drei Hauptsubsysteme unterteilt:
- Wissensdatenbank (Urd - Past);
- Informationssammelsystem (Verdandi - Gegenwart);
- Zielvorhersagesystem (Skuld - Future).
Den zentralen Platz nimmt DBMS ein - eine in der Wissensdatenbank enthaltene Serverdatenbank.
Es wurde angenommen, dass es eine Art globale Datenbank geben würde, in der Benutzer Angriffsgraphen aufzeichnen und empfangen würden. Sie sollten ungefähr so aussehen.
Also, wie man Graphen in einer Datenbank speichert und mit ihnen als Graphen arbeitet? Es ist ganz einfach - es gibt
Graphendatenbanken .
Aber in diesem Moment wurde mir klar, dass ich es nicht alleine schaffen konnte und dass sich das Diplom eher auf das Konzept als auf ein wirklich entwickeltes und funktionierendes System konzentriert hatte.
Ich musste in der SIEM-Datenbank herausfinden, wo die Angriffe gespeichert sind, und dann einen Parser schreiben, der diese Informationen in die Diagrammdatenbank übertrug.
So wird die Basis gefüllt: SIEM erkennt einen Angriff, gibt mir CVE, ich füge der Basis einen neuen Scheitelpunkt hinzu oder, wenn es bereits einen solchen Scheitelpunkt gibt, erhöhe ich die Anzahl der Übergänge zwischen den Scheitelpunkten um eine Einheit. Wenn der Angriff fortgesetzt wird, füge ich einen Eckpunkt / Übergang hinzu.
Dieser Ansatz hat folgende Vorteile:
- selbstfüllend, d.h. Es sind keine zusätzlichen Schritte erforderlich, um neue Angriffsgraphen zu erstellen, da die Angreifer dies selbst tun.
- niedrige Redundanz, d.h. In der Grafik sind nur die Angriffsgraphen enthalten, die die Angreifer tatsächlich verwenden.
Der Hauptnachteil des Ansatzes besteht darin, dass es unmöglich ist, seine Aktionen vorherzusagen, wenn ein Angreifer einen Angriff ausführt, der zuvor nicht verwendet wurde.
Diese Methode kann verbessert werden, indem auf andere Weise modellierte Angriffsgraphen zur Datenbank hinzugefügt werden und die Übergänge auf "0" gesetzt werden.
Auch diese Methode unter Verwendung einer Graphendatenbank weist zwei rein praktische Schwierigkeiten auf:
- Schreiben Sie in die Datenbank.
- Aus der Datenbank lesen.
Das Problem bei der Aufnahme ist die Erkennung von Angriffen. Ab wann müssen Sie einen Angriff auf die Basis schreiben?
Wann ist der Angriff abgeschlossen? Der Angriff kann langwierig sein. Wann stellen Sie fest, dass es vollständig ist? Plötzlich hat der Eindringling nicht mehr die nötigen Fähigkeiten und hört auf, einen Angriff zu entwickeln? Und wenn der Angriff abgeschlossen ist, ist die Infrastruktur zum Senden von Daten über den Angriff möglicherweise nicht mehr vorhanden.
Im Gange? Schreibe jeden Übergang auf CVE? Nun, keine schlechte Wahl, aber es scheint mir, dass es auch hier Fallstricke geben wird.
Das Problem beim Lesen ist die geschätzte Anzahl von Bäumen, die vom Server entnommen werden müssen. In Bezug auf Ressourcen und Vorlaufzeit scheint dieser Vorgang eine Katastrophe zu sein.
Sie können versuchen, nicht für jede Übergangserkennung eine Auswahl anhand des Angriffsgraphen zu treffen (dazu später mehr), sondern die gesamte Datenbank zu synchronisieren. Aber ich kann mir nicht einmal ungefähr vorstellen, wie viel die Basis in dem Moment belegt, in dem sie beginnt, mit echten Daten zu tippen.
Zusätzlich zur Serverdatenbank habe ich eine lokale Datenbank verwendet, die Statistiken über Angriffe auf ein bestimmtes System sammelt.
Sie können auch sagen, dass der Datenbank keine Offline-Angriffe hinzugefügt werden können. Phishing und in der Tat das gesamte Social Engineering werden an uns vorbeigehen. Wir werden nur feststellen können, wie weit sich der Mörder entlang der Tötungskette bewegt hat, wenn er bereits versucht, uns zu töten.
Magie
Jetzt bleibt es, auf das Wichtigste und Interessanteste überzugehen. Zur Vorhersage.
Historischer Prognosealgorithmus
Nun scheint mir der "statistische Algorithmus" ein passenderer Name zu sein. Aber dann dachte ich, dass es besser ist, das Wort "Statistik" nicht in einem Diplom zu verwenden.
Der Algorithmus, der erfunden wurde, ist wahrscheinlich der wertvollste in meinem Diplom (nochmals danke, dass Sie den Pseudo-Code geschrieben haben, danke, dass Sie meinen Diplom-Supervisor haben).
1. Rufen Sie CVE_ID, HOST_ID von einem Sicherheitsereignis ab
2. Dgraph = DirectedGraph (CVE_ID)
if DirectedGraph == 0 return
3. Set_Edges: = DirectedGraph.getOutEdges (CVE_ID, HOST_ID, DirectedGraph.getRoot ())
4. Set_Edges: = MAX_EXPLOIT_FREQUENCY (SET_EDGES)
If (SET_EDGES) == null zurückgeben
if (SET_EDGES.SIZE ()> 1)
SET_EDGES: = MIN_ACCESS.COMPLEXITY (SET_EDGES)
if (SET_EDGES.SIZE ()> 1)
SET_EDGES: = MIN_IMPACT_GOAL (SET_EDGES)
für jede KANTE ∈ SET_EDGES
edge.Exploit_Probability == ((edge.AttackFrequency) / (1 + ∑edge.AttackFrequency))
5. Fahren Sie mit Schritt 3 fort.
Im Laufe der Jahre fällt es mir nicht leicht, diesen Algorithmus selbst zu lesen. Lassen Sie uns also etwas einfacher werden.
Wir erhalten den Hostnamen CVE-ID aus dem Sicherheitsereignis, das SIEM uns gibt, und wählen aus der Datenbank den Teilbaum aus, der mit der Sicherheitsanfälligkeit beginnt, deren CVE-ID wir erhalten haben.
Unter den am nächsten liegenden Schwachstellen wählen wir eine mit der höchsten Nutzungshäufigkeit aus.
Wenn mehrere Schwachstellen mit der gleichen Häufigkeit vorliegen, wird die Schwachstelle mit der geringeren Zugriffskomplexität verwendet.
Liegen mehrere Schwachstellen mit derselben Zugriffskomplexität vor, wird eine Schwachstelle mit geringerer Auswirkung auf ImpactGoal (aus der Klassifizierung) ausgenutzt.
Wenn in diesem Fall mehrere Sicherheitsanfälligkeiten vorliegen, werden diese als gleich wahrscheinlich angesehen und es werden verschiedene Methoden zur Bestimmung des potenziellen Ziels verwendet.
Für jede Sicherheitsanfälligkeit wird die Wahrscheinlichkeit berechnet, die Sicherheitsanfälligkeit auszunutzen: Die Häufigkeit der Verwendung des Pfads zur Sicherheitsanfälligkeit, die wir für wahrscheinlich halten, wird durch die Summe der Häufigkeit der Verwendung aller von diesem Knoten ausgehenden Gesichter dividiert.
Nachdem wir diese Schritte ausgeführt haben, untersuchen wir erneut die Sicherheitslücken, die uns umgeben, d. H. Wir gehen um den Baum herum bis zum Ende.
Visualisierung des historischen Prognosealgorithmus
Wir haben eine bestimmte bereits gebildete Basis von Angriffen.
Wir bekommen den Angriff und den ersten CVE von SIEM.
Rot zeigt Schwachstellen an, die von SIEM erhalten wurden. Gray - Sicherheitslücken, die während des Algorithmus verworfen wurden, da es keinen Weg mehr zu ihnen gibt. Schwarz - Schwachstellen und Nutzungshäufigkeit von Pfaden, die im Angriffsbaum noch als mögliche Pfade gelten. Orange - Schwachstellen und Häufigkeit der Nutzung von Pfaden, die vom Algorithmus als am wahrscheinlichsten identifiziert werden.
In diesem Fall erhalten wir das folgende potenzielle CVE durch die Anzahl der Übergänge.
Holen Sie sich das nächste CVE von SIEM.
Rate nicht Ja, und in der nächsten Phase gibt es nur zwei Pfade mit der gleichen Anzahl von Übergängen. Wir betrachten die Komplexität des Betriebs.
Wieder nicht erraten. Die Übergänge sind wieder die gleichen. Ja, und die Komplexität des Betriebs stimmte überein. Wir betrachten die Einflussvektoren.
Probleme des historischen Vorhersagealgorithmus
Dies ist ein Stirnansatz. Nicht sehr elegant. Aber ohne echte Erfahrung in der Untersuchung von Computerangriffen ist dies das Maximum, das ich ausnutzen könnte.
Es sollte auch erwähnt werden, dass in der Realität höchstwahrscheinlich nur die Bedingung für die Anzahl der Übergänge verwendet wird, da die Wahrscheinlichkeit, dass die Anzahl der Übergänge zusammenfällt, höchstwahrscheinlich sehr gering ist.
Und auch Schwierigkeiten fangen damit an, dass es zum Beispiel einen Angriff des Zerstörers und einen Angriff des Eindringlings gibt. Sie kreuzen sich in einem CVE. Wenn sie häufiger dem Pfad des Zerstörers folgen, wird der Angriff des Eindringlings nach dem Wechsel zu diesem CVE nicht korrekt vorhergesagt.
Es gibt eine weitere Nuance, die besagt, dass in der Beschreibung des Algorithmus die Wahrscheinlichkeit für das Endziel berechnet wird. Aber die Formel, die ich vorgeschlagen habe, ist an solchen Kreuzungen so schlecht gebrochen. Die Berechnung der Wahrscheinlichkeit bleibt bestehen, ist jedoch einfacher geworden, es ist jedoch unwahrscheinlich, dass sie richtig funktioniert.
Und das Wichtigste ist, dass ... Natürlich bin ich kein Spezialist für die Untersuchung von Computerangriffen (wie ich bereits mehrfach sagte), aber irgendetwas sagt mir, dass meine Datenbank in Wirklichkeit so aussehen würde.
Das heißt ein bisschen Chaos. Und das ist eine mehr oder weniger gute Option, wie es mir scheint.
Eine solche Datenbank funktioniert mehr oder weniger gut auf demselben Host (und selbst der CVE in der Anwendungssoftware wird möglicherweise nicht korrekt berechnet). Aber wie kann man die Bewegung des Eindringlings zwischen den Stationen richtig vorhersagen? Es ist erforderlich, CVE anhand einer Sicherheitsüberprüfung aus der Datenbank zu filtern.
Analytischer Algorithmus
Es ging darum, eine CVE-Angriffsdatenbank mit CAPEC / CWE zu erstellen. Nur bei Übergängen gibt es keine Informationen.
Wir erhalten den CVE von SIEM, klassifizieren damit den Eindringling und wählen dann in der CVE-Datenbank diejenigen aus, die der Klasse und den Fähigkeiten des Eindringlings am besten entsprechen.
Leider ist dies einer der am wenigsten entwickelten Teile in meinem Diplom.
Entwurfs-Zusammenfassung
Es ist schwierig zu beurteilen, welche Ressourcen für die Pflege einer Datenbank erforderlich sind. Zumindest ist es schwer für mich.
Es gibt bestimmte Schwierigkeiten sowohl beim Schreiben neuer Daten in die Datenbank als auch beim Herunterladen von Daten aus der Datenbank.
Das System wurde in keiner Weise implementiert, außer auf Papier, aber das Experiment musste "von Hand" durchgeführt werden. Ich kann mir nicht vorstellen, wie lange es dauern würde, eine Art Demo zu implementieren. Wenn ich mit der Implementierung begonnen hätte, während ich ein Diplom geschrieben hätte, hätte ich es wahrscheinlich gerade beendet.
Die Einstufung von Verstößen dient als zusätzliches Instrument zur Zielbestimmung.
Das System selbst kann für einige
DSS als Datenquelle fungieren. Wenn beispielsweise versucht wurde, vom Invader aus anzugreifen, und der Angriff dann abrupt abgebrochen wurde, könnte DSS eine Überprüfung empfehlen, da der Invader sein Ziel erreichen könnte.
Wenn Sie wissen, wer den Angriff ausführt, können Sie auch versuchen, die Ziele eines bestimmten Täters zu bestimmen. Sie können auch versuchen, das Gegenteil zu tun - sagen Sie, wer den Angriff auf den Angriff ausführt.
Das System muss nicht nur in SIEM, sondern auch in Sicherheitsanalysesysteme integriert werden.
"Historischer Algorithmus" ist ein Arbeitswerkzeug, mit dem Sie Ziele definieren können, aber es gibt eine Menge Einschränkungen. Dies ist nicht die eleganteste Lösung, aber bisher. Wir müssen weiter nachdenken, verfeinern. Oder lehnen Sie ab und nehmen Sie einen völlig anderen Algorithmus.
Die Verwendung von CAPEC hat Vor- und Nachteile, erfordert jedoch zusätzliche Arbeit.
Aus konzeptioneller Sicht ist es wahrscheinlich am anstößigsten, wenn der Eindringling ... keinen Zweck hat. Er erhält Zugang zum System, weil er es einfach könnte. Vielleicht hat er diesen Hack nicht geplant. Und dann weiß er einfach nicht, was er als nächstes tun soll. Oder fängt an, sich wie ein Fuchs in einem Hühnerstall zu benehmen.
Das System ist stark an die Fähigkeit von SIEM gebunden, Angriffe zu erkennen und zu bestimmen, welcher CVE-Angriff verwendet wird. Bei einem 0-Tage-System werden alle drei Prognosemethoden ausgeblendet. Und du musst damit leben, aber vergiss es nie.
Das System ermöglicht es Ihnen, zusätzliche Informationen über den Eindringling zu erhalten, da die meisten Systeme nur technische Informationen über den Angriff liefern, während Informationen über die Motivatoren, Ziele und Fähigkeiten des Eindringlings ebenfalls wichtig sind und ich versuche, ihr System zu ermitteln.
Vielen Dank für Ihre Aufmerksamkeit.