Door Anoniem: De malware zelf plakken in een terminal en dan ook nog executeren is erg ver gezocht en dus kansloos vind ik. Daar heb je inderdaad geen noexec flag voor nodig zolang het in geheugen blijft (noexec kan je wel op shared memory zetten trouwens)
Fileless Malware is wel een ding om in de gaten te houden, vooralsnog kan het alleen gelegitimeerde tools van het systeem zelf gebruiken maar dat konden gebruikers al.
O, maar alles wat een gebruiker downloadt kan enkel gelegitimeerde tools van het systeem zelf gebruiken, dus is het uitvoeren van gedownloade code geen enkel probleem en heb je dat hele noexec om te beginnen al nergens voor nodig. Die cybercriminelen die deze malafide "captcha" bedacht hebben zitten duidelijk op een dood spoor. Of toch niet?
Vergeet je misschien dat het niet alleen gaat om tools die al op het systeem geïnstalleerd zijn maar dat ook
de gedownloade code zelf wordt uitgevoerd? En dat die misbruik kan maken van zwakheden in het systeem of van de gebruiker?
Of misschien onderschat je de kracht van Python en veel andere scripttalen. Je kan er gewoon system calls mee uitvoeren, in die zin kunnen die talen erg veel dat met gecompileerde code ook kan. En als er toch een echte executable nodig is voor een aanval dan kan je die met Python (of Perl en ongetwijfeld met andere scripttalen) vanuit geheugen uitvoeren in plaats van vanaf een schijf. Ik ging even zoeken ("linux run elf from noexec" — ELF is het executable-formaat van Linux) en dit is het eerste resultaat van meteen mijn eerste zoekopdracht, zo makkelijk is het te vinden:
https://github.com/nnsee/fileless-elf-execDit script genereert code voor een script dat een ELF-executable, gecomprimeerd en base64-gecodeerd in zijn eigen code heeft, dat via de system call memfd_create() in een "bestand" zet dat alleen in geheugen bestaat, en vervolgens met de system call execle() dat uitvoert. Die code kan in Python, Perl of Ruby worden gegenereerd. Het resultaat kan rechtstreeks op de manier die ik beschreef door de gebruiker in een terminal worden geplakt. Je kan langs die weg een gebruiker een door de aanvaller zelf aangeleverde executable laten uitvoeren zonder dat noexec dat tegenhoudt. Het is een scriptje van (afhankelijk van de gekozen taal) 11 of 12 statements (waaronder wel een erg lange met de base64-waarde), dat is alles. Zo makkelijk is het!
Ik heb gezien dat het werkt. Ik heb natuurlijk de broncode van dat script geïnspecteerd voor ik het uitvoerde. Daarna heb ik code voor een onschuldige executable gegenereerd:
python3 fee.py /usr/bin/ls >ls.py
Vervolgens heb ik ls.py ingepakt: de regel "python3 <<EOF" ervoor gezet en "EOF" erna. Dat geheel heb ik gekopieerd en geplakt in een terminal op een systeem met noexec op /home en /tmp. Na een druk op enter werd het ls-commando keurig uitgevoerd. En nee, in de geplakte code zit geen aanroep van het ls-commando op het systeem, het is de in de source opgenomen code die wordt uitgevoerd. De beschreven nep-captcha kan dus gebruikt worden om een executable uit te voeren die de aanvaller aanlevert, ook op een systeem dat noexec gebruikt.
Conclusie: dat hele noexec is echt veel makkelijker te omzeilen dan je jezelf graag wijsmaakt. Dat betekent dat het meer een bescherming tegen ongelukjes is dan tegen gerichte aanvallen.
Tot slot een advies: je redeneert naar de door jou gewenste uitkomst toe. Doe juist (ook) het omgekeerde, want een van de beste manieren om te toetsen of je gelijk hebt is om serieus te proberen je ongelijk aan te tonen. Grotendeels via zoekopdrachten, je hoeft niet alles wat anderen al hebben uitgeplozen zelf over te doen. Maar zoek er serieus naar. Als je dingen vindt die je ongelijk aantonen dan weet je dat je de plank missloeg en doe je er verstandig aan je mening te herzien.