Back

A free and open-source rootkit for Linux

168 points17 hourslwn.net
jraph13 hours ago

> If one did wish to use Singularity for nefarious purposes, however, the code is MIT licensed and freely available — using it in that way would only be a crime, not an instance of copyright infringement.

Too bad the author picked the MIT license. Had they picked (A)GPL, it would have forced the criminals to distribute a copy of LICENSE.TXT alongside their improved copy of the source code on systems they compromise. Failing this, using it in that way would be both a crime and an instance of copyright infringement.

Although, it occurs to me that if they don't give credits to the original author, it's also already a copyright infringement under the MIT.

jjmarr9 hours ago

If I might interject for a moment, you should've recommended the (A)GPLv3.

The anti-tivoization clause in Version 3 would allow users to modify and replace the rootkit with their own, more or less malicious version, even if it would otherwise violate copyright law.

kazinator6 hours ago

> crime and an instance of copyright infringement.

Well-made distinction; +1.

Onavo6 hours ago

It's nice until you get spammed with emails from angry users. I think it happened to the sqlite and other popular open source project authors. Non technical users think they are polluting their computer.

https://news.ycombinator.com/item?id=42358470

rascul3 hours ago
Alive-in-202527 minutes ago

The person in that thread could explain the situation a lot more better to the non technical users. You could do this:

"I don't know what happened to your computer but you seem to be saying someone hacked your computer and installed some software and you found acme.com mentioned on it. This was not done by me. acme.com is open source software that is freely available to anyone. This is the same as if someone installed software on your computer that mentions the google chrome web browser - that would not indicate google had anything to do with that action, since google chrome is freely available too."

written-beyond9 hours ago

Thank you for the laugh!

ilvez13 hours ago

It's probably an old joke, but heard it here first. LOL

jraph13 hours ago

I don't know about you, but for ethical reasons, I only allow libre rootkits to run on my systems.

fc417fc80210 hours ago

It's just like a gun free zone. You glue a prominent sign to your laptop that uses bright colors and an imposing font. "No proprietary software permitted!" Problem solved.

+1
throawayonthe7 hours ago
sva_12 hours ago

Do you compile them yourself then? For possible arch specific optimizations

da_chicken10 hours ago

Are you even free if your rootkit isn't part of Gentoo Stage 0?

reactordev12 hours ago

They checked with their lawyers first… lol.

Pretty sure all laws are null and void in their mind.

matheuzsec8 hours ago

HAHAHAHAHAH I genuinely laughed a lot, thank you

bmitch302012 hours ago
exabrial5 hours ago

> Users who feel their computers are too secure can install the Singularity kernel module in order to allow remote code execution, disable security features, and hide files and processes from normal administrative tools.

Hah

kazinator6 hours ago

Sorry, I like my rootkits proprietary, closed-source, with a click-through/shrinkwrap EULA.

yunnpp2 hours ago

And then having to accept a privacy policy after you buy/install the rootkit.

markus_zhang11 hours ago

Ah this is so interesting. Rootkits are difficult to implement already, and RE them definitely is another level. Now we have a guidance.

TacticalCoder9 hours ago

> The Ftrace mechanism can be disabled at run time, of course — so Singularity helpfully enables it automatically and blocks any attempts to turn it off.

Can a kernel be compiled with Ftrace forced off? If it can be disabled at runtime, I take it it's not mandatory for the kernel to work. And I don't just mean off: I mean striping the Ftrace code path (dead code elimination or whatever).

I'm also interested in other measures, like a unified kernel moreover without the ability to load modules but this is not what my question is about. I'd like to know if Ftrace can just be turned off for good at kernel compile time.

suprjami6 hours ago

Looks like yes

grep FTRACE /boot/config*

sabdarmdhn9 hours ago

Since i dont know about Linux Rootkit, isnt this gonna raise the potential of Cyberattack?

Retr0id9 hours ago

No, plenty of open-source linux rootkits already exist (although this one does look more modern/maintained than most).

XorNot13 hours ago

Man I just discovered this as a good guide on how to exceed the normal limits on Linux kernel modules.

Been working on a derviative which hooks the VFS to allow dynamically remapping file paths on a per process basis so I can force badly behaved apps to load custom TLS certificates (looking at you Bazil builds in nixpkgs).

(If anyone knows something which already does this it would save me a lot of yak shaving)

st_goliath12 hours ago

> how to exceed the normal limits on Linux kernel modules.

Uh, what limits? I'm not aware of anything that would stop your module, once probed, from reaching around the back of the kernel and futzing around in the internals of another driver/device in a completely unrelated subsystem, or subsystem internals. SoC/SoM vendors love to pull that kind of crap in their BSPs.

> hooks the VFS to allow dynamically remapping file paths on a per process basis

Instead of messing with kernel VFS internals, you could try:

- patching the offending application or package (ideally make the path configurable and contribute that back upstream)

- running the application in a mount namespace and bind-mount something over the path

- use LD_PRELOAD to wrap fopen/open/openat (I'm pretty sure, ready made solutions for this already exist)

fc417fc80210 hours ago

> use LD_PRELOAD to wrap fopen/open/openat (I'm pretty sure, ready made solutions for this already exist)

I think I would literally recompile libc to patch fopen/open/openat long before I would even begin to consider writing a kernel module to mess with filesystem paths on a per-process basis.

I feel like if you find yourself seriously considering writing a kernel module then you are either contributing to kernel development, or have embarked on an adventure specifically to learn about kernel internals, or have take a very wrong turn.

thwarted6 hours ago

LD_PRELOAD has nothing to do with the kernel, it's entirely resolved in user space; in this context, it would be used to replace libc functions.

> I think I would literally recompile libc to patch fopen/open/openat

That's literally the functionality that LD_PRELOAD provides without having to recompile libc.

+2
fc417fc8026 hours ago
linuxftw11 hours ago

> Been working on a derviative which hooks the VFS to allow dynamically remapping file paths on a per process basis so I can force badly behaved apps to load custom TLS certificates (looking at you Bazil builds in nixpkgs).

chroot or namespaces/containers?

fc417fc80210 hours ago

Well he said nix so it's probably hardcoded to load from the store. Tampering with the store itself might have unintended consequences if anything else references the same certificate package.

siliconunit8 hours ago

as much as I'm all for the freedom of knownledge, given the sorry state of the world, releasing these tools to imbecils is not peak foresight.. mcafee for linux next ha../s

void-star6 hours ago

Public Linux rootkits have been around a very very long time. Nothing new here in that regard. Also Linux AV has been around almost as long…

This effort is more useful to up and coming defenders and security researchers than attackers by far.