Kötü amaçlı yazılımların sudo şifresini koklamasını önleme


10

Çoğu zaman sudobir Linux bilgisayara bulaşan kötü amaçlı yazılımların önündeki ana engellerden biri olarak alıntı yapan insanları duyuyorum .

En yaygın argüman şu satırda ilerliyor gibi görünüyor: Sistem yapılandırmasını değiştirmek için kök ayrıcalıkları gerekir ve kök ayrıcalıkları kazanmak için bir parola gerekir, bu nedenle kötü amaçlı yazılım bir parola sormadan sistem yapılandırmasını değiştiremez.

Ancak bana öyle geliyor ki, çoğu sistemde varsayılan olarak, kötü amaçlı yazılım bir yönetici hesabına bulaştığında, ayrıcalık yükselmesi önemsizdir - kötü amaçlı yazılımın kullanıcının çalışmasını beklemesi gerekir sudo.

Kötü amaçlı yazılımlar için kullanıcı çalıştığında kök ayrıcalıkları kazanmak için hangi yöntemler vardır sudove bunlara karşı nasıl korunabiliriz?

Düzenleme: Özellikle güvenliği ihlal edilmiş bir yönetici hesabına karşı koruma ile ilgileniyorum; yani, tam kök ayrıcalıklarına sahip bir hesap sudo(örneğin, kullanıcının tipik bir masaüstü sistemindeki hesabı).


Aradığım şeylere bir örnek için, cevabımı görün . Birisinin orada ortaya çıkan güvenlik risklerinden bazılarını (veya aklınıza gelebilecek diğerlerini) ayrıntılandırabileceğini ve bunları azaltmanın yollarını sağlayabileceğini umuyorum.
Zaz

Windows'ta UAC veya güvenli bir dikkat dizisi gibi bir şey istersiniz. Unixy sistemleri buna sahip değildir. Yöneticilere gitmenin yolu, hesaplarını aptalca şeyler için kullanmak değildir. Kendi cevabınızda bahsettiğiniz birkaç şey SELinux veya Grsecurity gibi rol tabanlı ve zorunlu erişim kontrol sistemleriyle korunabilir. Burada kök olmayan yazılabilir ikili dosyaların yürütülemeyeceği politikalar oluşturabilirsiniz, bu nedenle bu düzeyde truva atları yoktur. Btw, X'e güvenmiyorsanız, sisteme hiç güvenmeyin, çünkü X süper kullanıcı ayrıcalıklarıyla çalışır.
sayaç

Teşekkürler, SELinux'a baktım, ancak büyük kurulumlar için daha fazla tasarlanmış gibi görünüyor, yönetim ve kurulum için çok zaman gerekiyor; Biraz daha basit bir şey umuyordum. Ben bir geliştiriciyim, programları çalıştırmakla ilgili katı politikalar da gerçekten bir seçenek değil.
Zaz

"X süper kullanıcı ayrıcalıklarıyla çalışır" - Ne? Yüklemesinde varsayılan olarak X , startxnormal bir kullanıcı olarak sadece para cezası çalışır. Aslında, şu anda X'i normal bir kullanıcı olarak çalıştırıyorum .
Zaz

Evet, öğrenme eğrisi diktir. Grsecurity'ye bir göz atın, daha basit ama güçlü. ~ X'in ayrıcalıkları: Kutumda X sunucusu SUID köküdür ve bir kök çalıştırır.
sayaç

Yanıtlar:


9

Bir kötü amaçlı yazılım parçası bir kullanıcının hesabına eriştikten sonra şunları yapabilir:

1. İstemi ~/.bashrctaklit eden [sudo] password for $USER:ve kullanıcının parolasını çalan bir komuta bash takma adı (geçerli kabukta ve içinde ) oluşturun .

alias sudo='echo -n "[sudo] password for $USER: " && \
            read -r password && \
            echo "$password" >/tmp/sudo-password'

2. Aynı şekilde, adlı bir yürütülebilir yerleştirebilir sudoiçinde ~/.bin, ve değiştirme PATHaynı etkiyi elde etmek için değişken:PATH="$HOME/.bin:$PATH"

3. X sunucusundaki tuşlara basmayı yakalayın, kelimeyi izleyin sudo, ardından Enterşifre olarak sonraki iki tuşa basma arasındaki metni deneyin .

4. Benzer bir şey herhangi bir ortamda (konsol, Wayland , X) örn $LD_PRELOAD.

5. Kötü amaçlı yazılım kimlik bilgilerini kullanan sudove sudoönbelleğe alan bir kabuk bulaşıyorsa, kötü amaçlı yazılımın sudoparola olmadan mümkün olup olmadığını sürekli olarak kontrol edebilir :

while : ; do
    echo | sudo -S echo "test" &>/dev/null && break
    sleep 10
done
sudo echo "We now have root access"


önleme:

1 ve 2. Kullanım \/bin/sudo. \Ve takma isimleri görmezden /bin/…göz ardı eder $PATH. Alternatif olarak, şöyle bir takma ad ekleyin ssudo="\/bin/sudo"ve her zaman ssudoyerine kullanın sudo. Bir virüsün bu takma adı yeniden eşleştirecek kadar akıllı olması muhtemel görünmüyor.

3. X11'i kullanırken şifrenizi yazmaktan kaçının. Bunun yerine sanal bir konsol veya Weston kullanın .

5. ayarlama timestamp_timeout=0içinde /etc/sudoers.


sudoParolanın koklama şansını tamamen ortadan kaldırmanın tek yolu, tamamen önlemek gibi görünüyor. Bunun yerine, sanal bir konsola root olarak giriş yapın.

Alexander Peslyak'a göre : "su [ve sudo] için tek güvenli kullanım, daha ayrıcalıklı bir hesaptan daha az ayrıcalıklı bir hesaba geçmek ..."


Bir yan notta, sudo'nun bazı önlemleri var:

  • sudottyyerine okur stdin, bu nedenle alias sudo='tee -a /tmp/sudo-password | sudo'kırılır sudo(ancak şifreyi yakalar).

sudo kullanıcıların şifresini sorar, böylece kötü amaçlı yazılım zaten eriştiği kullanıcının şifresini yakalar.
soymak

3
@rob: Aslında nasıl sudoyapılandırdığınıza bağlı, ancak her iki durumda da, kötü amaçlı yazılımın artık gerekli parolası var sudo, bu nedenle kullanıcının root erişimi varsa, kötü amaçlı yazılım da öyle.
Zaz

3

Gerçek bir koruma yok.

Sudo'ya parola korumalı erişim, şimler tarafından yürütülen komutlarla karmaşık kabuk ortamlarından önce bir döneme geri döner. Parola gönderildikten sonra, bir şimin herhangi bir bildirim olmaksızın ve tam sistem kontrolü ile sudo aracılığıyla komutları yürütebileceği bir fırsat penceresi vardır.

Eğer erişim niyetim olsaydı, bash ve zsh ve balık vb. İçin yararlı bir şim oluştururdum. Yürütülen komutları izlerdim. Bir sudo sıfır statüsüyle döndükten kısa bir süre sonra, "sudo chmod + s / bin / sh" ya da diğer nastiness'leri vermeye başlarım.

Sudo'ya tatmin edici bir şifre verildiği ve komut istemi almak için mermi koyduğunuz mermilere sahip olduğunuzda, muhtemelen başınız belada. İyimserlik dışında bir koruma yoktur.

Diğer cevaplar şifreyi korumaya odaklanmıştır. Bir saldırgan olarak bunun için endişelenmezdim. Bir şifre gerekmediğinde, şifre verildikten sonraki süreye odaklanacağım. Bu, saldırganın sistemi tamamen tehlikeye atmak için en azını yapması gereken en riskli zamandır.

Ondan mı korunuyorsunuz? RC dosyalarınızı korumanız gerekir. Komut satırı istemlerinde kullanılan şimleri veya diğer komutları inceleyin. Kabuğa bağlı ortak süreçleri ve kabuk ortamını korumak için kullanılan araçları arayın. Ana savunmalar, ev sahibi izinsiz giriş araçları olacaktır, ancak gerçek bu. Saldırıları önleme? Sadece karmaşık otomatik yapılandırma ve aktif istemler olmadan basit kabuklar kullanarak - sudo'nun geliştirildiği ortam budur.

Komutları eklemek için diğer geliştiricinin kullandığı terminali alacak şeyler yazmaya çalıştığımız diğer geliştiricilerle (1980'ler) oyunlar oynardım. Bu aslında aynı problem. Ve görünür bir iz bırakmadan komut eklemeyi yapacak araçları yerleştirmeyi çok daha kolay hale getirdik. :)


1

Yetkisiz kullanıcıların kök ayrıcalıkları kazanması için herhangi bir yöntemden emin değilim, ancak bunu söylemek isterseniz, biraz daha az tehlikeli hale getirmek için yapabileceğiniz sudobir şey biliyorum . belirli ayrıcalıklara sahip kullanıcı gruplarını ve belirli kullanıcıların çalıştırabileceği belirli komutları tanımlamak için ayrıntılı izinler yapılandırmanıza olanak tanır.sudo

SUDO - GRANÜLER KONTROL

  • Kullanıcı Bölümü

    Burada komutlar belirleyeceğiniz kullanıcılar için gruplar oluşturabilirsiniz. Bir Operasyonlar grubu oluşturalım;

    User_Alias  OPS = bob, jdoe 
    

    Bu OPS grubunu oluşturur ve bob ve jdoe adlı kullanıcıları gruba koyar

  • Cmnd_Alias

    Burada belirli komut setlerini belirtiyoruz. Tam yolu ve kullanılmasını istediğiniz komut seçeneklerini belirtmelisiniz. Operations group komutlarını ayarlayalım;

    Cmnd_Alias OPSCMD = /admin/bin/srvbkup, /admin/bin/test 
    

    Bu, belirtilen üç komutu OPSCMD komut grubuna ekler.

  • Kullanıcı Ayrıcalığı Özelliği

    Şimdiye kadar kurduğumuz grupları burada kullanacağız;

    OPS  ALL=(root)  OPSCMD 
    

    Belirttiğimiz ilk şey kullanıcılar, burada kurduğumuz OPS grubunu kullanıyoruz. Daha sonra TÜMÜ tüm sunucular için geçerli olduğu anlamına gelir, bu yalnızca siz veya her biri aynı yapılandırma dosyasını kullanan birden fazla sunucu üzerinde sudo çalıştırıyorsanız yararlıdır. Daha sonra kullanıcıya Operations grubunun belirtilen komutları çalıştıracağını, bu durumda root olarak çalışmasını istiyoruz. Son olarak OPS grubunun çalışmasını istediğimiz komutları belirtiyoruz, özellikle ayarladığımız OPSCMD grubunu kullanıyoruz. Sudo'yu her kullandıklarında parolalarını girmelerini istemediyseniz, komut belirtimi NOPASSWD: OPSCMD olacaktır.

sudoPolitikalarınızı kullanıcılarınıza güvenmediğiniz kadar sertleştirin :)


Sorunda net olmadığım için üzgünüm, ancak güvenliği ihlal edilmiş yönetici hesaplarına, yani tam kök ayrıcalıklarına sahip hesaplara karşı korunmakla ilgileniyorum sudo. Özellikle normal masaüstü sistemlerini düşünüyorum.
Zaz

1

Güvenliği ihlal edildiğine inandığınız bir sistemle ilgileniyorsanız, "Rootkit" i çalıştırın ve dosya sisteminin bütünlüğünü kontrol etmek için "Tripwire" kullanın.

Ayrıca, sudo ayrıcalıklarını sertleştirmenizi tavsiye ederiz, çünkü tüm kullanıcıların tüm root komutlarına erişmesine gerek yoktur, bunun yerine SUDO aracılığıyla belirli komutlara erişim verebilirsiniz.


0

Her şeyden önce /etc/sudoersdosyaya bir göz atın .

Sözdizimi user MACHINE=COMMANDSbiçim olacaktır .

Örneğin, kök kullanıcı sahip olacaktır root ALL=(ALL) ALL Bu, kök kullanıcının herhangi bir yerde (tüm) komutları çalıştırabileceği anlamına gelir.

Girişiniz de ALL=(ALL)varsa, neredeyse bir kök kullanıcıya eşit olursunuz. Durum böyle değilse ve yalnızca belirli sınırlı ayrıcalıklara sahipseniz, saldırgan / kötü amaçlı yazılım yalnızca sudo ayrıcalığınızın yapabildiği kadarını yapabilir.

Size yardımcı olabilecek ipuçları:

  1. /etc/sudoersDosyanızı inceleyin .
  2. Chkrootkit, rootkit avcısı, Config server Exploit tarayıcı, snort vb. Gibi bir güvenlik tarayıcısı çalıştırın.
  3. visudoSudoers dosyanızın ayrıcalıklarını düzenlemek ve değiştirmek için komut kullanın .
  4. Tarayıcıları tekrar çalıştırın.

Referans: Linux sudoers ve sudo man sudoers man sayfası

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.