"It is more important to outthink your enemy, than to outfight him" -- Sun Tzu

I den här artikeln avser jag svara på följande frågor:

  1. Vad är Attackträd?
  2. Hur används Attackträd för att skydda system?
  3. Vem använder och när används Attackträd?

Tre delar alltså där jag i den första ger en slags introduktion, lite historik och beskrivningar av metodiken. Den andra delen beskriver mer praktiskt hur den används och fungerar. Och så slutligen vem som är användare av metodiken.

Om du redan är bekant med attackträd kan du utan problem skumma framåt och hoppa till andra delen.

Nyckelinsikter

  • Metoden förutsätter att du har förmåga och kunskap att utvärdera hotaktörer och deras målsättningar, resurser, åtkomster och modus.
  • Metoden är relativt enkel att förstå men förutsätter en bred säkerhetsmässig kunskap samt en god analytisk förmåga för att identifiera och bedöma sårbarheter i system, dess komponenter och arkitekturella sammansättning.
  • Metoden förutsätter att du kan beskriva, i tillräcklig detalj, hur systemet är konstruerat genom vilka komponenter och hur dessa kommunicerar med varandra.
  • Produkter och resultat som uppstår genom användning av metoden är inte uppenbart enkelt att återanvända eller katalogisera. Jag lämnar ett förslag på hur det skulle kunna göras.

Vad är Attackträd?

Attackträd är en metodik 1 med relativt lång historik (1998) och producerades av en arbetsgrupp vid NSA. Metodiken bygger delvis på LAVA 2 , Los Alamos Vulnerability and Risk Assessment, och en annan uppsats från 1991 av J. D. Weiss, A System Security Engineering Process.

Attackträd är tänkt att först och främst utvärdera och analysera säkerhetshot och de hotaktörer som skulle kunna tänkas angripa ett system. Målsättningen är att du ska kunna besvara följande frågor:

  1. Vem vill angripa systemet?
  2. Vilka sårbarheter kommer de att försöka utnyttja?
  3. Vilka metoder kommer mest troligen att användas?
  4. Vilka säkerhetsåtgärder bedöms som rimliga att införa?

Attackträd är särskilt effektivt när det används i kombination med MITRE ATT&CK och tillsammans med Common Weakness Enumeration.

Vem vill angripa systemet?

När du arbetar med attackträd är det första steget att identifiera tänkbara aktörer som har intresse av att angripa det system du ska skydda. Detta förutsätter således en relativt god förståelse för vilka hotaktörer som finns och vad dessa aktörer vanligtvis är intresserade av för tillgångar.

Målet är att du ska kunna identifiera och bedöma vem/vilka som mest troligen kommer att angripa systemet. Du bedömer deras förmåga att genomföra ett angrepp (hur duktiga är dom?), benägenhet att ta risker eller vilka åtkomster de har till systemet.

Sammantaget får du en bild av vilka som kan komma att angripa systemet.

Vilka sårbarheter kan komma att utnyttjas?

En aktör med intresse för någon av de tillgångar du hanterar i systemet (information eller funktion) kommer att försöka identifiera svagheter de kan utnyttja. Svagheter kan uppstå i många faser av ett systems livscykel. De kan uppstå eller identifieras i designfasen, när systemet utvecklas eller när det används.

För att kunna besvara frågan om vilka sårbarheter som finns behöver systemet beskrivas schematiskt genom exempelvis ett flödesdiagram eller annat lämpligt format. Målsättningen är att få fram en karta över systemet, hur dess komponenter interagerar och hur kommunikationen fungerar.

Microsoft har utvecklat Microsoft Threat Modeling Tool för ändamålet att kunna beskriva system och utvärdera dessa ur ett säkerhetsperspektiv.

Det svenska företaget Foreseeti gör liknande saker. Observera att jag personligen inte har någon erfarenhet av att använda verktyget/tjänsten.

Vilka metoder kommer att användas?

När du vet vilka sårbarheter som finns i ett system kan du också börja avgöra vilka metoder som är mest troliga att användas vid ett angrepp. Om det visar sig att autentiseringen för ett tjänstegränssnitt (API) använder endast användarnamn och lösenord skulle brute-forcing kunna användas.

Sårbarheterna ger ofta metoderna. Det sitter användare bakom tangentborden och dessa kan vanligtvis luras ganska enkelt, alltså använder vi phishing och kanske gärna i kombintaion med betrodda tredjeparts-tjänster (Dropbox, Google Drive etc.)

Metoder likt de du hittar i MITRE ATT&CK är en bra utgångspunkt för detta, särskilt i kombination med CWE som jag nämnde tidigare.

Vilka säkerhetsåtgärder bedöms nödvändiga?

När sårbarheter och metoder har identifierats och analyserats kan du börja föreslå säkerhetsåtgärder mot de kombinationer av sårbarheter och metoder du bedömer som mest troliga att användas vid ett angrepp.

Åtgärderna utvärderas i sin tur utifrån ett antal egenskaper som t.ex. kostnad, komplexitet och effektivitet.

Målsättningen är att en säkerhetsåtgärd kan implementeras på ett sådant sätt att den hanterar (begränsar, stoppar etc.) flera sårbarheter och metoder samtidigt.

Hur används attackträd?

Den vanligaste användningen är visuell med en grafisk representation av små lådor som arrangeras utifrån ett klassiskt "organisationsdiagram". En låda längst upp som sedan länkas samman med underordnade lådor osv.

Detta är tilltalande rent visuellt och kan vara värdefullt, men är inte särskilt enkelt att återanvända. Därför förespråkar jag ett textfilsmässigt förfarande för själva grunden med Markdown som stomme. Se nedan:

.
├── Angreppsmetoder
│   ├── 0001_Skadlig_kod_genom_bifogade_filer_per_e-post.md
│   ├── 00_ids.md
│   └── TA0001-Initial_Access
│       └── T1189_Drive-by_Compromise.md
├── Hotaktörer
│   ├── 0001_Cyberkriminella.md
│   ├── 0002_Statligt_finansierade.md
│   └── 0003_APT28.md
├── Målsättningar
│   ├── 0001_Etablera_fotfäste_på_klientdator.md
│   └── 00_ids.md
└── Skyddsåtgärder
    └── 00_ids.md

Enklast är sedan att köra en slags Markdown till HTML-konvertering som sparar statiska HTML-filer i en katalog som kan öppnas med en webbläsare direkt från de lokala-filerna. Det behövs ingen webbserver för den här enkla typen av filer.

Då behövs endast ett PowerShell/Python-skript som antingen körs manuellt efter varje förändring eller som något slags schemalagt jobb med rimlig regelbundenhet.

Fördelarna är att du relativt snabbt kan komma igång och få upp en systematisk grundläggande struktur. Nackdelarna är väl att du/ni måste lära er Markdown och skriva några skript för att konvertera MD-filerna till HTML. Jag kommer att publicera mitt Python-skript för detta som kanske hjälper er att komma igång.

Detta gör att ni skapar en återanvändbarhet och att varje enskild analytisk insats ni gör blir en egen komponent som kan återanvändas i andra sammanhang.

Gör så här

Metoden bygger som tidigare nämnt på att du först identifierar vilka hotaktörer som kan tänkas ha intresse av att angripa systemet och dess information/funktion. Detta kräver att du har dels koll på vilka skyddsvärden ni har i organisationen men framförallt om och vilka hotaktörer som skulle ha intresse av dessa skyddsvärden. En bra start kan vara att studera hotlandskapsrapporter. Det kan ge information om både vilken information aktörer vanligtvis är ute efter och deras metoder.

För att bättre illustrera hur metoden används tycker jag att vi försöker oss på ett exempel. Antag att du vill analysera vilka möjliga sätt en angripare kan etablera fotfäste på en klient. Låt oss vidare anta att det handlar om ett opportunistiskt angrepp.

Skapa en fil i trädstrukturen enligt nedan:

.
├── Målsättningar
    └── 0001_Etablera_fotfäste_på_klientdator.md

Hur ni väljer att strukturera spelar egentligen ingen roll, men det viktiga är att ni har möjlighet att återupprepa och återanvända det ni skriver.

Exempelvis skulle det kunna se ut så här:

# M0001 Etablera fotfäste på klientdator
---

Skapad: 2020-07-26
Uppdaterad: 2020-08-21
Ansvarig: Christoffer Strömblad <christoffer@cstromblad.com>
Status: Aktiv

---

## Beskrivning
Ett fotfäste på en kliendator innebär att den hotande aktören
har möjlighet att exekvera godtycklig kod på datorn. Det 
innebär dock inte nödvändigtvis att aktören har administrativa
rättigheter (ännu). Det innebär dock inte heller nödvändigtvis
att aktören har möjlighet att kommunicera ut mot 
internet då detta är en separat målsättning.

## Attackträd - Metoder
- [T1204_User_Execution]
    + __Status:__ Under utredning
    + __Ansvarig:__ Ej tilldelad
    + __Taggar:__
    + __Aktiveras av:__
        * [T1091_Replication_Through_Removable_Media]
        * [T1566.002-Spearphishing_Link]
- [T1203_Exploitation_for_Client_Execution]
    + __Status:__ Under utredning
    + __Ansvarig:__ Ej tilldelad
    + __Taggar:__
    + __Aktiveras av:__
        * [T1566.001-Spearphishing_Attachment]
        * [T1566.002-Spearphishing_Link]

## Historik
- 2020-08-21: Beskrivning av målsättning ändrad.
- 2020-07-26: Första version av målsättning.

Under rubriken Attackträd - Metoder finns FÖRSTA nivån för att uppnå kodexekvering. För varje metod finns ett antal fält som kan användas för att skapa listor (med hjälp av lite shell-skript) på vilka åtgärder som är under utredning osv. Notera också Aktiveras av: där du hittar nästa nivå av metoder.

För att användaren ska kunna trycka på något måste det finnas något att trycka på, en fil eller en länk. Dessa två metoder länkar i sin tur till separata filer som i detalj förklarar hur effekterna av dessa ska reduceras, stoppas osv.

Allt börjar alltså med en målsättning, som i sin tur givetvis kan vara del av en annan målsättning och andra metoder. Fotfästet är högst sannolikt endast ett delmål. Det övergripande målet kanske är att installera en utpressningstrojan. För det skulle du alltså skapa en ny målsättning som beskriver ett antal delmål för att det ska kunna uppnås. Fotfästet på klienten är ett, kanske är ett annat att erhålla administrativa rättigheter på klientdatorn, eller hitta inloggningsuppgifter till backup-systemet.

Hör av dig om du skulle vilja att jag i mer detalj går igenom ett scenario kring användning av attackträd.

Vem använder och när används attackträd?

En metodik är ett verktyg. Ett verktyg ska användas vid rätt tillfälle och för rätt problem. Attackträd ska betraktas som vilket verktyg som helst. Det finns mer eller mindre lämpliga tillfällen att använda metodiken.

Vem?

Den som använder attackträd bör själv vara tämligen välinformerad om hur säkerhet i en systemarkitektur uppnås, hur angrepp genomförs mot system och hur hotakörer kan beskrivas. Det är svårt att använda metoden utan att dessa förutsättningar är uppfyllda. Bäst effekt får den som har relativt god teknisk förståelse.

Jag skulle därför säga att metoden huvudsakligen ska användas av IT-säkerhetsspecialister vars uppgift är att förse ett system med rätt nivå av säkerhetsåtgärder. En säkerhetsspecialist som kanske har viss nivå av programmeringsbakgrund eller åtminstone har en förståelse för hur olika systemkomponenter kommunicerar med varandra. Begrepp som IPC och RPC bör exempelvis inte kännas som främmande.

När?

Metodiken används lämpligen när det finns ett förslag på en systemarkitektur eller när man befinner sig i något slags prototypstadie. Det är då dess styrkor visar sig som bäst. Metoden går givetvis även att använda för existerande system.

Metoden lämnar sig således väl till när kravställningen håller på att upprättas för systemet.

Referenser och bibliografi


  1. <p>Salter, Chris, O. Sami Saydjari, Bruce Schneier, and Jim Wallner. ‘Toward a Secure System Engineering Methodolgy’. In Proceedings of the 1998 Workshop on New Security Paradigms, 2–10, 1998.&#160;<a href="#fnref1:1" rev="footnote" class="footnote-backref">&#8617;</a></p>
  2. <p>S. T. Smith, ”Risk assessment and LAVA’s (Los Alamos Vulnerability and Risk Assessment) dynamic threat analysis”, Los Alamos National Lab., NM (USA), LA-UR-89-527; CONF-891064-2, jan. 1989. Åtkomstdatum: aug. 20, 2020. [Online]. Tillgänglig vid: <a href="https://www.osti.gov/biblio/5536717-risk-assessment-lava-los-alamos-vulnerability-risk-assessment-dynamic-threat-analysis">https://www.osti.gov/biblio/5536717-risk-assessment-lava-los-alamos-vulnerability-risk-assessment-dynamic-threat-analysis</a>.&#160;<a href="#fnref1:2" rev="footnote" class="footnote-backref">&#8617;</a></p>