>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Beveiliging
C

Singularity - Hoe Moderne Linux Rootkits Werken en Waarom Ze Zo Moeilijk Te Detecteren Zijn

1.699 sterren

Stel je dit scenario voor: je logt in op een server, voert ps aux uit, en alles ziet er perfect normaal uit. Je controleert netwerkverbindingen met ss — niets verdachts. Je bekijkt de logs dmesg — geen verdachte vermeldingen. Maar op datzelfde moment draait er een verborgen root-level proces op het systeem, dat je acties onderschept en data filtert rechtstreeks in het kernelgeheugen.

Klinkt als iets uit hackerfilms? In werkelijkheid is dit de realiteit van moderne LKM rootkits (Linux Kernel Modules). Vandaag bekijken we het Singularity project van ontwikkelaar MatheuZSecurity — een geavanceerd hulpmiddel voor het onderzoeken van stealth-mogelijkheden in Linux 6.x kernels.

Wat is Singularity en Waarom Heeft Een Onderzoeker Het Nodig?

Singularity is niet zomaar een speeltje om je UID te veranderen. Het is een volwaardig onderzoeksproject dat is gemaakt om de grenzen van moderne beveiligingssystemen te testen. De auteur stelde de vraag: "Hoe ver kan een rootkit gaan als het erin is geslaagd om in de kernel te injecteren?"

Het project richt zich op moderne kernels (6.x branch) en gebruikt ftrace infrastructuur voor systeemaanroep-onderschepping. Dit maakt het extreem interessant voor systeemprogrammeurs en informatiebeveiligingsspecialisten (DFIR), omdat het het omzeilen van beveiligingsgiganten zoals eBPF (Falco, Tracee) en LKRG (Linux Kernel Runtime Guard) demonstreert.

Belangrijkste Functies: De Kunst van Onzichtbaar Blijven

Singularity is een ware Zwitsarse zakmes voor verborgen operaties. Laten we de meest indrukwekkende mogelijkheden doorlopen.

1. Spookniveau Camouflage

De rootkit verbergt niet zomaar bestanden of processen — het doet dit systematisch:

  • Processen: Elke PID kan onzichtbaar gemaakt worden voor ps, top en zelfs /proc. Bovendien volgt Singularity automatisch en verbergt het alle kindprocessen.
  • Bestanden: Verbergen werkt op basis van patronen. Als je een directory hebt aangemaakt met een "geheim" naam, zal deze verdwijnen uit de output van ls en find, hoewel je nog steeds toegang hebt tot bestanden binnenin als je het pad kent.
  • Netwerk: Verbindingen op specifieke poorten (bijvoorbeeld je reverse shell) worden niet gezien door netstat of tcpdump.

2. eBPF en Moderne EDR Omzeilen

Dit is waarschijnlijk het technisch meest complexe deel. De meeste moderne monitoringssystemen (zoals Falco) vertrouwen op eBPF voor real-time event tracking. Singularity blokkeert eBPF niet (dat zou te opvallend zijn), maar filtert zorgvuldig de data die eBPF-programma's naar user space verzenden. Het substitueert resultaten in buffers, waardoor verborgen bronnen onzichtbaar worden voor de monitorings"ogen".

3. Rechtenmanipulatie via Signalen

Vergeet complexe exploits. Singularity implementeert een elegant mechanisme:

kill -59 $$

Het verzenden van een specifiek signaal (in dit geval 59) naar het huidige proces verhoogt onmiddellijk zijn rechten naar root. Simpel, effectief, en zeer gevaarlijk in de verkeerde handen.

4. Vechten Tegen Forensisch Onderzoek (Forensics Evasion)

Het project kan zelfs low-level disk analysehulpmiddelen misleiden, zoals debugfs. Het onderschept read/write systeemaanroepen en "on the fly" verwijdert het vermeldingen van zichzelf uit output buffers, waarbij het deze vervangt door spaties. Dit maakt het mogelijk om bestandssysteemintegriteit te behouden (checksums breken niet), terwijl de aanwezigheid van kwaadaardige code verborgen blijft.

Hoe Werkt Het Intern?

De architectuur van Singularity is gebouwd op een modulair systeem. In de repository vind je aparte bestanden voor elke taak: hiding_tcp.c voor netwerken, bpf_hook.c voor eBPF-tegenmaatregelen, lkrg_bypass.c voor kernelbeveiliging-omzeiling.

De logging implementatie is interessant. De rootkit hookt de do_syslog functie, waardoor het het kernel ring buffer kan filteren. Als het systeem probeert een bericht uit te voeren over kernel taint door het laden van een third-party module, knipt Singularity die string gewoon weg.

Process Hiding Demo

Praktische Waarde voor Ontwikkelaars

Waarom zou een ontwikkelaar rootkit-code bestuderen?

  1. Linux Internals Begrijpen: De projectcode is een uitstekend leerboek over het werken met systeemaanroepen, task_struct structuren, de netwerkstack en het ftrace subsysteem.
  2. Beveiligingssystemen Ontwerpen: Om een sterke vesting te bouwen, moet je weten hoe belegeringswapens werken. Door eBPF-omzeilingsmethoden in Singularity te bestuderen, kun je je regels in Falco of Tracee beter configureren.
  3. Kernelontwikkeling: Dit is een praktisch voorbeeld van hoe je LKM (Linux Kernel Modules) schrijft voor moderne kernelversies, rekening houdend met API-veranderingen.

Veiligheidsvoorzorgsmaatregelen

Belangrijk: Singularity is een krachtig hulpmiddel dat zichzelf verbergt na het laden (lsmod zal het niet tonen). Het heeft geen unload-functie, omdat dat een extra detectievector zou creëren. Om er vanaf te komen, is een herstart vereist.

De auteur raadt sterk aan om het project alleen te testen in virtuele machines. En, uiteraard, het uitsluitend te gebruiken voor educatieve en onderzoeksdoeleinden.

Singularity is een indrukwekkend voorbeeld van hoe geavanceerd Linux stealth-methoden zijn geworden. Het project toont aan dat zelfs de meest moderne beveiligingshulpmiddelen geen silver bullet zijn als de aanvaller een foothold op kernelniveau heeft gekregen.

Voor degenen die dieper willen duiken, raad ik aan om include/core.h te bekijken en te zien hoe de hooks zijn geïmplementeerd. Deze lectuur zou boeiender kunnen zijn dan welke detectiveroman dan ook.

Probeer het (in een VM!): GitHub MatheuZSecurity/Singularity

Trouwens, wat denk jij — is eBPF gebruiken voor beveiliging een doodlopende weg als rootkits hebben geleerd het te omzeilen? Deel je gedachten in de reacties!

Gerelateerde projecten