Bir işlemi diğer kullanıcılar için nasıl görünmez hale getirebilirim?


19

Bir süreci nasıl başlatabilir ve topkomuta görünmez hale getirebilirsiniz ? İşlem normal bir kullanıcı tarafından (kök değil) başlatılır ve diğer normal kullanıcılar tarafından görülemez.


1
Bu tür bir zirvenin amacını yener ve kötüye kullanımı çok kolay olurdu. İşlemi neden yeniden adlandırmıyorsunuz? this_is_not_the_process_you_are_looking_for?

Kullanıcıyı gizlemeye ne dersiniz?

5
Lütfen bize bir root-kit yazmaya çalışmadığınızı söyleyin. Senaryonuzu açıklayabilir misiniz, belki de genellikle "kötü" davranış olarak kabul edilen bir mimari yerine daha iyi bir güvenlik mimarisi önerebiliriz?
Caleb

2
Grsecurity veya SELinux kullanabilirsiniz . Her ikisi de ilk kurulum için kök müdahalesi gerektirir.
Gilles 'SO- kötü olmayı bırak

Yanıtlar:



11

topKomut doğrudan çekirdekten sağlanmaktadır proc, verileri okur. İşlemleri gizlemek için maskeleme yapmak için çekirdeğin içindeki kodu kullanmanız gerekir.

SELinux ve grsecurity (diğer yanıtlarda belirtilmiştir) gibi bir güvenlik çerçevesi kullanmanın yanı sıra, rootkit tarzı kod kalan tek seçeneğinizdir. "Stil" diyorum çünkü tek başına bir "rootkit" kötü değil, bu nasıl kullanılır. İşlemleri diğer kullanıcılardan gizlemenin arkasında mükemmel meşru nedenler vardır, bu yüzden bu yetenek güvenlik çerçevelerinde bulunur.

Bunu işe almak için izlemeniz gereken temel yol, /proc/pid/verileri veren linux çekirdeğindeki işlevlere bağlanmak (veya nasıl baktığınıza bağlı olarak) kaçırmaktır . Yazdığım bir güvenlik modülünde linux çekirdek işlevlerine bağlanma yöntemlerinden birini gösterdim:

https://github.com/cormander/tpe-lkm

Bunun için "yüksek seviye" kodu içindeki hijack_syscalls()yöntemde security.cve arkasındaki ayrıntılardaki şeytan büyüsü hijacks.cdosyada.

Bağlanmak istediğiniz işlevleri muhtemelen fs/proc/linux çekirdeğinin kaynak kodunun dizininde bulacaksınız . Linux'un kararlı bir ABI sağlamadığını unutmayın, bu nedenle linux çekirdeğinin farklı sürümlerinde çalışmasını sağlamak için kodunuzun biraz değişmesi gerekecektir. Ayrıca, bu kodu ekleyebilmek için makineye tam root erişimine ihtiyacınız olduğunu unutmayın.

GÜNCELLEME:

Eğer sarın Eğer pid_getattrbunu yapmak gerçek kolay için bazı ek kod ile çekirdek sembolü. Son zamanlarda yukarıdaki çekirdek modülüne işlemleri gizleyen bir şey ekledim:

https://github.com/cormander/tpe-lkm/commit/899bd5d74764af343d5fee1d8058756ddc63bfe3

Belirli bir kullanıcının veya grubun işlemlerini root ve o kullanıcı dışında kimse tarafından görüntülenemez hale getirerek benzer bir şey yapabilirsiniz. İşlem adı ile yapmak biraz daha karmaşıktır, ancak mümkündür. Bu exe_from_mm()işleve bir göz atın . İçinde kullanmanın performans sonuçları olabileceğini unutmayın pid_getattr.


4

İki ana seçenek gibi görünüyor.

  • Selinux, farklı insanları farklı güvenlik alanlarına yerleştirerek ve bir anlamda onları birbirleriyle karşılaşamayacakları şekilde kumlamak suretiyle çalışır. Bu, bu soruda ele alınmıştır . Selinux hızla Linux dünyasında fiili güvenlik çerçevesi haline geldiğinden, bu muhtemelen bakmanız gereken yön.

  • Diğeri, marioosh tarafından belirtildiği ve bu soruda sorulduğu gibi grsecurity'dir . Bazı dağıtımlarda grsecurity yamaları uygulanmış alternatif çekirdek paketleri bulunur. Sizinkine sahipseniz bunları kullanmayı düşünebilirsiniz.

Herhangi bir nedenden dolayı bunu selinux veya grsecurity gibi bir güvenlik çerçevesi eklemeden yapmak istiyorsanız, lütfen ne yaptığınızın bir kök kiti yazmadığını açıklayın.


1

Standart linux kutusunda o kadar basit değil. Bak grsecurity ama yama çekirdek vb gerektirir


2
Bence bu standart bir selinux çekirdeği ile geliyor.
user606723


0

Aynı şekilde çalışan top, ancak belirli bir adla eşleşen işlemleri görüntülemeyen eşdeğer bir komut yazabilirsiniz . Alternatif olarak topkomutun kaynak kodunu alıp buna göre değiştirebilirsiniz. Daha sonra içindeki topkomutu /usr/sbin(veya nerede olursa olsun) sürümünüzle değiştirebilirsiniz.


2
'Top' ifadesinin değiştirilmesi, kullanıcının top uygulamasının yapmasını engellemez.
Tim Post

2
Hayır, ancak soru, işlemlerin topkomut için nasıl görünmez hale getirileceğini sordu .
LawrenceC
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.