Back

A free and open-source rootkit for Linux

218 points20 dayslwn.net
jraph20 days 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.

jjmarr20 days 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.

Onavo19 days 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

rascul19 days ago
Alive-in-202519 days 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."

pseudohadamard19 days ago

This is why our temp files have names like malware_dropper.exe and bitcoin_scam.xls. If anyone sees those they assume it's some virus and don't bother us with them.

kazinator19 days ago

> crime and an instance of copyright infringement.

Well-made distinction; +1.

written-beyond20 days ago

Thank you for the laugh!

ilvez20 days ago

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

jraph20 days ago

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

fc417fc80220 days 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
throawayonthe19 days ago
sva_20 days ago

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

da_chicken20 days ago

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

reactordev20 days ago

They checked with their lawyers first… lol.

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

matheuzsec20 days ago

HAHAHAHAHAH I genuinely laughed a lot, thank you

TacticalCoder20 days 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.

suprjami19 days ago

Looks like yes

grep FTRACE /boot/config*

bmitch302020 days ago
XorNot20 days 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_goliath20 days 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)

fc417fc80220 days 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.

thwarted19 days 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
fc417fc80219 days ago
linuxftw20 days 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?

fc417fc80220 days 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.

never_inline19 days ago

+1 for userns, there's also proot (userspace chroot) and fakechroot (using LD_PRELOAD).

markus_zhang20 days ago

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

kazinator19 days ago

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

yunnpp19 days ago

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

exabrial19 days 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

sabdarmdhn20 days ago

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

Retr0id20 days ago

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

siliconunit20 days 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-star19 days 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.

rurban19 days ago

Most such rootkits source code is online and easy to find. So that rootkit finders get better.