Building a lab

Introductie

Vandaag zal ik het hebben over mijn afstudeeropdracht, mijn opdracht is het realiseren van een active directory omgeving met daarin een aantal missconfiguraties en kwetsbaarheden. Daarnaast moet de omgeving ook gemonitord worden en moet de persoon die de test afneemt gevolgd worden. Met volgen bedoel ik het bijhouden van wat deze persoon precies doet in zijn powershell sessie of andere dingen die gemonitord zouden moeten worden.

Trouwens, ja! ik ben enorme fan van game of thrones dus trek je niks aan van de machine namen. Ga nu maar eens raden wat voor gebruikers er op het domein KUNNEN staan haha!

Opdracht

Voor het afstuderen moet ik in zes maanden tijd een bepaalde opdracht uitvoeren, deze opdracht mag de student zelf kiezen zolang die maar voldoet aan de eisen van de school natuurlijk. Tijdens het uitvoeren van de opdracht dient de student bepaalde competenties te kunnen aantonen, aan het eind word de student ook hard beoordeelt op de competenties en de verslagen die zijn ingeleverd.

Als opdracht had ik gekozen om een assessment te realiseren die sollicitanten moet gaan testen op hun kennis, niveau en of de sollicitanten voldoen aan de competenties die het bedrijf wilt dat een pentester heeft. Het doel van de opdracht in mijn geval is dus een assessment realiseren. Ik zelf had voor de volgende competenties gekozen:

  • Infrastructuur analyseren
  • Software adviseren
  • Bedrijfsprocessen analyseren
  • Onderzoek doen

Deze competenties moet ik gaan aantonen aan de hand van het bouwen van een assessment en het testen of alles natuurlijk werkt. Ik wil met dit artikel laten zien hoever ik nu ben en wat ik allemaal heb gedaan.

Laatste paar weken hebben jullie ook artikels van mij gelezen waarin ik bepaalde aanvallen uitvoer en laat zien, deze aanvallen zijn allemaal in mijn lab uitgevoerd. Dit om gelijk te testen of de aanval werkt en dan heb ik ook gelijk weer een leuk artikel. Ik hoop dat jullie het leuk vinden om over mijn afstudeer opdracht te lezen, helaas kan ik de omgeving niet openbaar maken zodat jullie allemaal het kunnen testen maar ik ben wel van plan om een eigen server aan te schaffen en daar omgevingen zoals deze opnieuw te bouwen en wie weet komt er ooit een leuke omgeving op hackthebox of tryhackme van mij.

Voor nu is het belangrijkste mijn afstudeer opdracht te halen aangezien de deadline 14 januari 2021 is dus iets langer als een maand heb ik nog, en ik moet nog een aantal documenten realiseren.

Lay-out

De omgeving die ik aan het bouwen ben ziet er als volgt uit (zie onderstaand afbeelding). Dit is niet helemaal hoe het er nu uit ziet aangezien er geen internet toegang is natuurlijk.

Zoals te zien is op bovenstaande afbeelding bestaat de omgeving uit drie verschillende domeinen namelijk:

  • Development
  • rootsec
  • Westeros

Westeros.local is daarnaast een aparte forest, dit is expres geconfigureerd in verband met het assessment (de test). De SIEM machine is de machine die alles zal gaan monitoren, de analist machine is eigenlijk een Ubuntu machine die puur gemaakt is voor toegang tot de SIEM machine. Vanaf de analist machine kan ik op de dashboard kijken van de SIEM en meekijken wat de persoon precies doet.

Development

Dit is het eerste domein waarin de persoon zich zal bevinden als hij/zij begint met de test, in dit domein bevinden zich zoals op de afbeelding te zien is een domain controller en een client machine. Het is de bedoeling dat de persoon vanaf de kali machine de andere twee machines aanvalt en een kwetsbaarheid moet zien te vinden en natuurlijk benutten.

Rootsec

Dit is het volgende domein waarin de persoon zich zal bevinden na het succesvol misbruiken van de development domein, wederom bevind zich hier een domain controller en een client machine. Ik ga helaas niet vertellen welke kwetsbaarheden ik precies heb gebruikt want dan zou de persoon alles hier vandaan kunnen halen en is het geen uitdaging meer haha.

Westeros

Dit is de laatste domein waar de persoon zich naar toe moet werken, als de persoon op de domain controller is van deze domein heeft hij/zij de test behaald. Onderweg worden er natuurlijk nog vlaggen verstopt die de persoon moet verzamelen, dit dient als een soort bewijs dat hij/zij daadwerkelijk langs de machine is gegaan in plaats van te zeggen dat die het heeft gedaan maar misschien wel niet waar is.

Operating systemen

Voor de omgeving heb ik gebruik gemaakt van de volgende operating systemen:

  • Windows Server 2019
  • Windows Pro 10

Waarom precies voor deze twee?

Windows pro 10 is gekozen omdat bij Windows home het niet mogelijk was om de machine te koppelen aan een domein, bij Windows pro 10 was dit wel het geval en daarom is er voor Windows pro 10 gekozen. Er is voor Windows server 2019 gekozen omdat een van de eisen was dat het op een echte penetratietest moest lijken, veel bedrijven in deze tijd maken gebruik van Windows server 2019. Om het zo realistisch mogelijk te maken is er dus voor Windows server 2019 gekozen.

Monitoring

Om de omgeving te kunnen monitoren is er gekozen voor een monitoring applicatie genaamd ‘Security Onion’, dit kan worden gedownload als een ISO bestand waarna je het op een eenvoudige manier kan koppelen aan een virtuele machine. Security Onion is alles in een pakket, of nou ja niet helemaal alles in een maar het bevat velen functies waaronder:

  • Monitoring
  • Netwerkverkeer vastleggen
  • Sessies tussen twee machines vastleggen
  • Meta-data verzamelen over de host
  • Het kan elementen van een sessie verzamelen en opnieuw opbouwen

Vanwege deze functionaliteit is er gekozen voor Security Onion als monitoring software.

Beveiliging

Het is natuurlijk niet de bedoeling dat de persoon naar een ander netwerk segment kan overspringen, het is de bedoeling dat de persoon alleen toegang heeft tot het lab. Daarom is er gebruik gemaakt van PfSense (een firewall) om de verschillende segmenten te kunnen beschermen. Ook is er gebruik gemaakt van vlan, dit om de segmenten van elkaar te scheiden. Een persoon die de test nu zal gaan doen komt automatisch in de 10.1.1.0/24 range. Hierdoor heeft die alleen toegang tot de omgeving (hoop ik).

Kwetsbaarheden

Er zijn verschillende kwetsbaarheden in de omgeving opgezet, een aantal van deze kwetsbaarheden zijn als volgt:

  • SQL-Injectie
  • Remote code execution
  • Path traversal
  • DCSync aanval
  • Pash over the hash
  • ACL misconfiguratie

En nog een aantal missconfiguraties.

Active directory

Mijn lab maakt gebruik van Active Directory, ik vind AD pentesten altijd helemaal geweldig en dat was ook een reden dat ik voor een AD lab heb gekozen. Daarnaast deed ik mijn CRTP (certified red teaming professional) cursus tegelijk met mijn afstudeer opdracht en ik dacht zelf dat is een mooie combinatie om dan ook een AD lab te bouwen. Door een AD lab te bouwen moest ik de missconfiguraties implementeren die ik tijdens de cursus weer leerde. Daarnaast aan de hand van de gekozen kwetsbaarheden en de operating systemen was het ook handig om voor een AD omgeving te gaan. Zo heb ik express een aantal foutjes gemaakt tijdens de configuratie wat ik niet ga beschrijven natuurlijk maar ik kan je vertellen ze zijn lastig te vinden en indien jij ze vindt dan is het nog lastiger om ze uit te buiten.

Fysieke server

Er is uiteindelijk ook besloten om een fysieke server aan te schaffen, dit omdat de andere oplossingen (denk hierbij aan cloud of een desktop machine met daarop hyper-v of andere virtualisatie software) niet de juiste mogelijkheden aan bood. Met een fysieke server lijkt het mij makkelijker om een lab zoals dit te beheren en daarnaast zijn de kosten ook minder. Aangezien er alleen gebruik word gemaakt van de server zodra het lab wordt gebruikt, bij cloud oplossingen is het precies hetzelfde verhaal. Echter is het assessment zo groot dat het niet in een enkele dag gedaan kan worden en de persoon minimaal drie dagen nodig heeft, als dit word berekend voor bijvoorbeeld een cloud oplossing zit je toch al gauw op een hoog bedrag per maand en bij een fysieke server betaal je eenmalig hoge kosten maar daarna niet meer (stroomkosten natuurlijk niet meegerekend).

Competenties

Een van de eisen vanuit mijn school is natuurlijk voldoen aan bepaalde competenties, deze moet ik aantonen aan de hand van onderzoek. Dit onderzoek bestaat uit goede argumenten en conclusies en natuurlijk verwijzingen naar de artikels die ik heb gebruikt. Maar ook moet ik competenties toetsen van de pentester die de test komt afleggen, dit is heel erg lastig om te bepalen want er zijn eigenlijk twee redenen:

  • Het bedrijf vind bepaalde competenties belangrijk terwijl een ander bedrijf misschien weer totaal andere competenties belangrijk vindt.
  • Hoe test je nou eigenlijk een competentie van een pentester?

De competenties die ik wil gaan toetsen bij het maken van dit assessment is als volgt:

  • Schrijfvaardigheid (Dit spreekt voor zichzelf, een pentester moet natuurlijk veel rapporten schrijven.
  • Oplossingsgericht denken (De persoon bevind zich in een probleem, gaat de persoon telkens opnieuw proberen of doet hij/zij een stap naar achteren en bekijkt de situatie)
  • Analytisch denken (denk hierbij aan het vinden van informatie, vervolgens de informatie verwerken en daarop reageren)
  • Nauwkeurig te werk gaan (denk aan het maken van notities tijdens de test)

Analytisch

Een penetratietester moet analytisch zijn, dit betekend dat de penetratietester een probleem moet kunnen verwoorden en samenvatten waarna hij/zij verschillende oplossingen bedenkt en afweegt tegen het probleem. De sollicitant moet kunnen aantonen dat hij met de gevonden informatie tot de bevinding kan komen dat er iets kwetsbaar is en vervolgens op een verstandige manier gaat zoeken naar het antwoord. Het is daarom belangrijk dat de persoon het volgende laat zien tijdens het uitvoeren van de test:

  • De gevonden informatie in zich opnemen.
  • Tot een logische conclusie komen.
  • Aan de hand van de informatie tot een voorspelling komen wat de mogelijke kwetsbaarheid kan zijn.

Nauwkeurig

Een penetratietester moet nauwkeurig te werk gaan, het kan niet zo zijn dat tijdens het uitvoeren van een penetratietest er geen rekening wordt gehouden met de continuïteit van het bedrijf. Het is belangrijk dat er altijd nauwkeurig te werk word gegaan en een duidelijke afweging word gemaakt of bepaalde handelingen wel of niet kunnen. Het is daarom van belang dat de persoon het volgende laat zien tijdens het uitvoeren van de test:

  • Is zijn grammatica voldoende (Spelling, zinsbouw en grammaticaal).
  • Gebruikt hij de tooling op de juiste manier.
  • Verkent hij de omgeving eerst.
  • Maakt de sollicitant notities tijdens het doorlopen van het assessment

Schrijfvaardigheid

Het schrijven van een rapportage is een belangrijk begrip voor een penetratietester, het is belangrijk dat de zinnen vloeiend lopen en duidelijk te begrijpen zijn. Rapportages worden door managers gelezen, deze managers begrijpen de technische aspecten van het verhaal niet. Daarom is het belangrijk dat er op een bepaalde manier word geschreven dat zowel de managers het kunnen begrijpen als de technische mensen. Nadat de sollicitant het assessment heeft uitgevoerd moet hij/zij een rapportage maken van zijn bevindingen en dit aan ons laten zien. Het is belangrijk dat de student de volgende onderdelen laat zien in deze rapportage:

  • Een voorblad.
  • Management samenvatting
  • Technische samenvatting
  • Screenshots van zijn handelingen.
  • Vloeiende zinnen.
  • Een doorlopend verhaal

Oplossingsgericht

Het is belangrijk dat de sollicitant oplossingsgericht is, een penetratietest is een puzzel dat opgelost moet worden. Er kunnen kwetsbaarheden in zitten of juist niet, dit is aan de penetratietester om uit te zoeken. Hiervoor moet hij/zij naar de informatie kijken die hij/zij bemachtigd en dit ordenen. Met deze informatie moet de sollicitant een analyse uitvoeren om uiteindelijk tot een actie te kunnen overgaan. Het kan gebeuren dat na het uitvoeren van een bepaalde actie de sollicitant vast komt te zitten in het proces, dit is juist het moment dat de sollicitant goed moet nadenken hoe hij hieruit kan komen. Het is belangrijk dat de sollicitant de volgende onderdelen laat zien tijdens het uitvoeren van de test:

  • Beschrijven van het probleem waar hij/zij tegen aan liep.
  • Vertellen hoe hij dit heeft aangepakt.
  • Gaat hij/zij op zoek naar een oplossing op het probleem of geeft hij/zij op.
  • Neemt de sollicitant een stap terug en bekijkt zijn huidige situatie.
  • Gaat de sollicitant te werk volgens bepaalde stappen.

Conclusie

Ik vond het bouwen van het lab heel erg leuk, in de toekomst ga ik zeker meer van dit soort projecten zelfstandig doen thuis. Wie weet komt het een keer op hackthebox of tryhackme (zou cool zijn). Daarnaast hoop ik natuurlijk mijn afstudeer opdracht te behalen zodat ik eind januari op zoek kan gaan naar een full time baan (eindelijk!). Hopelijk heb ik dan ook meer tijd in de avond uren om nieuwe cursussen te kunnen op pakken en te blijven streamen natuurlijk en mensen interviewen.

Tot nu toe ben ik aardig op weg met het bouwen van mijn lab en het documenteren van alle stappen en processen. Ik heb veel geleerd van de opdracht, dat is sowieso al mooi meegenomen. Had nog nooit eerder een lab gebouwd, dankzij de opdracht heb ik dit ook mogen ervaren en ik zelf vind het een prachtig staaltje werk wat ik heb geleverd. Heb er heel wat uren inzitten en gaan nog heel wat uren aan toegevoegd worden.

Bedankt voor het lezen en tot de volgende keer !


Please share and spread
NederlandsEnglish