Open source software is altijd al een goede bron geweest voor beveiligingsprofessionals. Metasploit, het open source penetratietest-framework is waarschijnlijk het beste voorbeeld. Maar het beveiligen van informatie is niet alleen weggelegd voor onderzoekers, wetenschappers en analisten en hetzelfde geldt voor de vijf open source beveiligingstools die wij in dit artikel behandelen. systeembeheerders en software-ontwikkelaars spelen een sleutelrol en met deze vijf tools kan je het verschil maken.

Commit Watcher: Check code repos voor "secrets"

"Secrets" horen niet thuis in open source repositories, maar dat weerhoudt verstrooide ontwikkelaars er niet van om ze daar toch per ongeluk op te slaan. We zien genoeg rapporten voorbij komen van mensen die per ongeluk private Amazon Web Services-sleutel, hard coded-wachtwoorden of API tokens beschikbaar maken in code die is opgeslagen in Github of andere code repositories.

Bedrijf SourceClear kwam met het programma Commit Watcher op de proppen. Deze gratis open source tool kijkt naar potentieel gevaarlijke commits in publieke en private Git repositories. Ontwikkelaars en administrators kunnen de tool gebruiken om hun eigen projecten te scannen en te kijken of hun code veilig is. Als er bijvoorbeeld een publiek project wordt bijgewerkt met een commit als "fixes XSS attack", dan zal commit watcher de ontwikkelaar die daarmee werkt melden dat er een nieuwe versie van de dependency opgehaald moet worden.

Commi Watcher kijkt regelmatig of er nieuwe commits zijn gedaan en zoekt naar specifieke sleutelwoorden in de regels van het project. Er wordt gekeken bestandsnamen, code-patronen, comments en auteursnamen. Daarnaast controleert de software ook tientallen voorgeconfigureerde regels waaronder AWS credentials, SSH keys, API-tokens en database dump bestanden.

Jak: Encrypt je "secrets" in Git

Het is een van de eerste dingen die je als ontwikkelaar meekrijgt; houd "secrets" uit je code. Stop deze in een configuratiebestand als het dan toch echt moet en voeg die configuratie doe aan de .gitignore lijst om te voorkomen dat het wordt gecommit in de code repository. Sleutels die worden gebruikt om verbinding te maken met betaalsystemen moeten volledig buiten de code om worden behandeld. Dat kan lastig worden wanneer deze sleutel moeten worden gedeeld.

Het is een scenario dat vaak genoeg voorkomt: Een teamlid downloadt de broncode uit de repository en ontvangt de sleutels via een out-of-band-methode (een plain tekst e-mailtje, chatbericht, USB-stick of sticky note). Wat als er een manier is om om deze secrets in de source code te houde in de repository zodat je deze makkelijk kan delen, maar dan wel versleuteld zodat niemand anders er zomaar bij kan?

Het Python project Jak tackelt dat probleem door ontwikkelaars versleutelde versies van gevoelige bestanden te laten comitten naar Git. In plaats van .gitignore, stoppen ontwikkelaars deze informatie in een jak-bestand. Wanneer het tijd is deze te committen, zorgt Jak ervoor dat versleutelde versies van deze bestanden in de repository terecht komen. Jak houdt zich bezig met het versleutelen en ontsleutelen van de bestanden wanneer nodig. Daarnaast genereert de software automatisch de sleutels en werkt deze bij. Alles wordt afgehandeld op de command line dus ontwikkelaars hoeven niet te wisselen van windows wanneer het tijd is om een bestand te versleutelen.

Het is misschien nog te vroeg voor Jak om in productie-omgevingen gebruikt te worden, maar het is een tool die ontwikkelaars zeker even moeten bekijken. Het feit dat beveiligingsstartup Dispel de tool intern gebruikt geeft aan dat dit een tool is met erg veel potentie.

Yara: Gebruik pattern-matching om problemen op te sporen

Malwareonderzoekers gebruiken graag Yara, de open source rool van VirusTotal's Víctor Manuel Álvarez. Zij gebruiken de tool om malafide bestandssamples te identificeren en te classificeren. Het Zwitserse zakmes onder de "pattern matchers" kan overigens veel meer doen dan het classificeren van malware. Yara kan ook gebruikt worden voor incidentrespons en forensische onderzoeken. Je kan regels aanmaken (aan de hand van tekst strings, hexadecimale waarden of standaard expressies) en Yara kruipt door de verdachte mappen zoekend naar overeenkomsten. Het scannen van bestanden is redelijk normaal, maar Yara kan dankzij de extra regels draaiende processen onderzoeken.

Zowel Kaspersky Lab als AlienVault konden dankzij deze tool uitvogelen welke aanvallers er destijds verantwoordelijk waren voor de Sony-hack en andere aanvallen in Azië.

Een algemene aanvalstechniek is het vervangen van systeembestanden met nepversies om zo een backdoor op machines te installeren. Je zou gebruik kunnen maken van MD% en SHA-1-hashes om te kijken of je bestanden zijn gewijzigd, maar je zou ook Yara kunnen gebruiken met regels om te zoeken naar speciale strings en waardes in systeembestanden en deze regelmatig laten scannen. Als een scan geen matches vindt, weet je dat de bestanden zijn gemodificeerd, tijd om op onderzoek uit te gaan. Als een aanvaller kopieën van van command shells naar onbekende locaties stuurt, kan je op zoek gaan naar deze kopieën.

Naast de vooraf geconfigureerde regels en de regels die jij maakt, kan je virus signature-bestanden gebruiken van open source antivirus tool ClamAV in combinatie met de YaraRules repository die wordt bijgehouden door de community. Deze repository heeft een hoop vooraf ingestelde regels die kunnen worden gebruikt om onder andere malafide processen op te sporen. Als iemand bijvoorbeeld de Virustotal API misbruikt om triggers op te zetten wanneer een bestand wordt gescand (en deze wordt vergeleken met een malafide bestand in de database), kan Yara mooi tussenbeide komen. Deze tool hoeft niet te worden gestart vanaf de command line, het heeft een Python library zodat het geïntegreerd kan worden in Python scripts.

Yara kan dus onwelkome veranderingen aan bestanden herkennen, dat kan onder andere ook gevoelige informatie zijn als BSN nummers en administratieve credentials. Dat kan onder andere gedaan worden in onwelkome plekken (zoals e-mail attachments). Hierdoor kan de tool op verschillende manieren worden gebruikt en is dankzij de extreme flexibiliteit, praktisch onmisbaar.

ProcFilter: Nog een zeer handige pattern matching tool

Yara is zeer behulpzaam voor onderzoekers en incident responders die bestanden willen analyseren na een infectie. Het actief inzetten van de tool tegen bestaande problemen is behoorlijk lastig/ ProcFilter, een open source project van GoDaddy leent zich veel beter voor dit soort taken, zeker voor Windows-omgevingen. ProcFilter kan je gebruiken in combinatie met de Yara-regels om draaiende processen te controleren. Daarnaast kan je ook executables blokkeren en loggen.

P4rocFilter draait als een Windows service en integreert netjes met Microsoft's Event Tracing for Windowsn (ETW) API. Het kan dus activiteiten loggen en deze toevoegen aan het Windows Event Log. Deze integratie kan dus ook regels aanmaken met block, log en quarantine-waarden en de juiste acties ondernemen als er een match is. ProcFilter kan worden geconfigureerd om bestanden en het werkgeheugen te scannen als processen worden aangemaakt of afgesloten.

Let op: Deze software is niet gemaakt om je bestaande antimalware-oplossing te vervangen. Het is meer een tool die gebruikt kan worden om een specifieke, bekende bedreiging op te sporen.

OSquery: Query je endpoint voor een system state

Stel dat het vinden van malafide processen, rogue plugins of software-kwetsbaarheden in je Windows, macOS of Linux-endpoints zo simpel zou zijn als het schrijven van een SQL-query...dat is het idee achter OSQuery, een open source tool van Facebook engineers die informatie over het besturingssysteem verzamelt zoals draaiende processen, geladen kernelmodules, open netwerkverbindingen, browser plug-ins, hardware events en bestandshashes in een relationele databases vergaart. Als je een SQL query kan schrijven, kan je ook alle antwoorden op je beveiligingsvragen tevoorschijn halen.

De volgende query zou bijvoorbeeld alle processen moeten laten zien die luisteren op netwerkpoorten:

SELECT DISTINCT process.name, listening.port, listening.address, process.pid FROM processes AS process JOIN listening_ports AS listening ON process.pid = listening.pid;

Deze query zou vreemde dingen moeten vinden in de Address Resolution Protocol (ARP) cache. Deze bevat informatie over IP adressen en het fysieke Ethernet adres:

SELECT address, mac, COUNT (mac)AS mac_count FROM arp_cache GROUP BY mac HAVING COUNT(mac)>1;

Dat is een stuk makkelijker dan coderen in Python. OSQuery tackelt een belangrijk probleem op een recht-door-zee en toch elegante manier. De tool wordt geleverd met OSQueryi, een interactieve shelldie kan worden gebruikt met PowerShell en OSQueryd, een daemon die zich bezighoudt met low-level host monitoring.