Basit Malware Analizi (Linux)

Zararlı yazılımlar Windows işletim sisteminden mi ibaret ? Tabii ki hayır özellikle botnet ağının parçası olan zombi sunucuların internette güvenlik yaması yüklenmemiş web uygulamalarını istismar etmek için taradığı günümüzde, Linux sunucu kullanımının Windows sunucu kullanımına kıyasla daha yüksek olması, Linux işletim sistemleri üzerinde çalışan zararlı yazılımların sayısında artışa neden olmaktadır.

Bugünkü yazımda üzerinde zararlı yazılım çalıştığından şüphe ettiğiniz bir Linux web sunucusu (veya masa üstü) üzerinde çalıştırabileceğiniz bir kaç basit komut ile nasıl zararlı yazılım hakkında bilgi edinebileceğinizden kısaca ve basitçe bahsedeceğim.

Çoğunlukla üzerinde zararlı yazılım çalışan bir işletim sisteminin stabilitesi bozulduğunda yüksek miktarda hafıza ve/veya CPU tüketimine neden olmaktadır.

Örnek olarak üzerinde zararlı yazılım çalıştığından şüphe duyduğumuz bir Ubuntu dağıtımına göz atalım. (İnceleme öncesine trojan tarafından kullanılan irc sunucularına ait alan adları HOSTS dosyasına 192.168.1.3 IP adresini çözümleyecek şekilde tanımlanmıştır.)

Yüksek CPU tüketiminden şüphe ettiğimiz bir Linux sistem üzerinde “top” komutu ile sistem üzerinde çalışan programların/komutların ne kadar CPU tükettiğini listeleyebiliriz.

Linux Malware

Ekran görüntüsünden görüleceği üzere www-data kullanıcısı tarafından çalıştırılan perl programı %98 CPU tüketmektedir. www-data kullanıcısı, perl komutunun web sunucusu tarafından çalıştırıldığına dair bize ipucu vermekte fakat bu komutun hangi klasör içinden çalıştırıldığına dair bilgi vermediği için araştırmamıza devam etmemiz gerekmektedir.

Sistem üzerinde çalışan programları “ps ax” komutu ile (normal şartlarda kullanıcı bilgisinide içermesi nedeniyle “ax” yerine “aux” parametrelerinin kullanılmasını öneriyorum) çalışan işlemleri (process) listelettiğimizde “top” komutunun çıktısında en üstte yer alan 12457 ID’li perl programının burada “/usr/bin/httpd” olduğunu görüyoruz.

Linux Malware

Bir kaç satır üste baktığımızda sistem üzerinde apache2’ninde çalıştığı görülmektedir. Hem apache2 ve hem httpd sistemimiz üzerinde çalışıyor ve iki farklı komut (top ve ps) tek bir PID (process id) için iki farklı programı işaret ettiği için alarm çanlarını çalabiliriz çünkü bu sistem üzerinde birşeylerin kendini gizlemeye çalıştığını açıkça işaret ediyor.

Araştırmamıza devam ederek sistem üzerinde öncelikle TCP protokolüne ait açık ağ bağlantı noktalarını ve durumlarını “netstat -ant” komutu ile listeliyoruz. (Normal şartlarda netstat programı tarafından desteklenen tüm protokollere ait açık ağ bağlantı noktalarının listelenmesi için “netstat -an” komutunu kullanmanızı öneriyorum.)

Linux Malware

Yukarıdaki ekran görüntüsünde, 192.168.2.129 IP adresine sahip olam sistemimiz 6667 numaralı bağlantı noktası üzerinden 192.168.1.3 IP adresi ile haberleştiğini görüyoruz. 6667-6669 bağlantı noktaları çoğunlukla IRC (internet relay chat) sohbet sunucuları tarafından kullanılmaktadır. Bu bağlantı noktası ile gerçekleşen haberleşme bize sistem üzerinde çalıştığından şüphe ettiğimiz zararlı yazılımın DDOS botu olma ihtimalini güçlendiriyor.

Sistemimiz üzerindeki açık dosya ve soketlerin listesini görmek için “lsof” komutundan faydalanabiliriz. Bu komut sayesinde 12457 PID’li şüpheli programın hangi dosyalara eriştiğini ve soketleri kullandığını listeliyoruz.

Linux Malware

En üst satırda yer alan ve perl’e ait olan socket kütüphanesi bize çalışan zararlı yazılımın Perl ile hazırlandığını, “ps ax” çıktısında yer alan “/usr/bin/httpd” komutunun sahte olduğunu açıkça ifade ediyor. Bununlada yetinmeyip çapraz kontrol adına “ls -al /usr/bin/httpd” komutu ile httpd programının sistem üzerindeki varlığını kolayca teyit edebiliriz.

Linux Malware

“lsof” komutunun diğer bir güzel özelliği ise size ilgili program tarafından kullanılan CWD (current working directory) bilgisinide veriyor olmasıdır. www-data kullanıcısı apache2 programının çalıştırılmasından sorumlu ise ve şüphelendiğimiz zararlı yazılım/komut bu kullanıcı tarafından çalıştırılmış ise bu durumda ikisinin tek ortak noktasının apache2 programı olduğu düşünüldüğünde “lsof | grep -i www-data | grep cwd ” komutu ile www-data kullanıcısına ait bilgiler filtrelendiğinde karşımıza aşağıdaki tablo çıkıyor.

Linux Malware

En üst satırda yer alan ve apache2’ye ait olan CWD bilgisi (“/var/www/maker/info”) bize zararlı programın www-data kullanıcısı ile apache2 üzerinden çalıştırılmış olma ihtimalini oldukça güçlendiriyor.

ClamAV antivirüs yazılımı ile ilgili klasör üzerinde yaptığımız tarama sonuç veriyor ve trojanın bu klasör içinde bulunduğu netlik kazanıyor.

Linux Malware

Linux Malware

Linux Malware

Yukarıda yer alan son ekran görüntüsünde rdl.txt dosyasına herhangi bir metin editörü ile baktığımızda ise bunun bir ddos botu olduğu ve “ps ax” komutunun çıktısında zararlı yazılımın neden “/usr/bin/httpd” olarak görüldüğü anlaşılıyordu.

İnternet üzerinden bulmuş olduğum bir trojan (ddos saldırısı gerçekleştirme özelliğine sahip) ile oluşturmuş olduğum örnek bir senaryo üzerinden giderek sizlere basitte olsa Linux işletim sistemi üzerinde nasıl zararlı yazılım izi sürebileceğinizi kısaca anlatmaya çalıştım, umarım faydalı olmuştur.

Bir sonraki yazıda görüşmek dileğiyle…

image_pdfShow this post in PDF formatimage_printPrint this page
8 comments
  1. Eline saglik.

    “ps auxwf” alt islemleri gorebilme acisindan faydali oluyor.

    netstat komutuna ekleyecegimiz -p parametresi de hangi islemin o baglantiyi yaptigini gosterecegi icin, basit malware’leri analiz ederken isleri hizlandiriyor.

  2. oncelikle belirtmek isterim ki yazinla ilgili bir sorun soz konusu degill sadece yazina ek olarak seninde ekleyebilecegin notlari ekledim, top komutuna gelince kucuk bir espiriydi :)

    not1 icinse inan yazmaya vaktim olsa neler yazicam ama biraz vakit sorun ve birazda tembellikten dolayi hep gecikiyor yazsamda cok kisa yazabiliyorum o da aciklayici olmuyor ama sen boyle birseye karar verirsen kesinlikle yardimci olurum hic problem yok…eger boyle birseye karar verirsen konuya baglantili olarak bende virtual ortamda yapilabilecek trciklerden bahsedebilirim (dogru idtr ye erismek gibi vs…)

    kolay gelsin…

    1. Bence vakit ayırıp yazmalısın bu sayede insanlar eksik olan bilgilerini farklı konularda uzmanlıkları olan kişilerin klavyelerinden ortaya çıkan bilgilerle tamamlayabilir, ihtiyaç duyduklarında faydalanabilirler :)

  3. not-1: kernel memoryde allocate ettigin shared alana (bknz: kmalloc) fucntion inject edip loopa alabilirdin, ki bu processten bagimsiz gorevi icra eder.loop demisken “e tamam top iste” demeden once googling !

    not2: /proc/pid, /dev/kmem tarih olan trickler, rootkit bagimli degil.

    not3: top komutu cpu tuketir..

    1. Paylaşımın için teşekkürler fakat yazım rootkit analizi, ileri düzey zararlı yazılım analizi ile ilgili değildi bu nedenle tarih olduğunu söylediğin adımlar basit bir zararlı yazılım analizinde bizi çözüme götürebilmektedir. Top komutunun cpu tüketmesi ise bizim için kayda değer bir husus değil.

      Not-1 içinse senden daha detaylı teknik bilgi ve savunduğun yöntemin kernel rootkitler karşısında nasıl başarılı olabileceğine dair teknik bir açıklama bekliyoruz, google, rtfm ve benzer terimler ile kurtulamazsın :)

  4. Yararlı bir inceleme olmuş,elinize sağlık.

    Bu zararlı kodu yazanlar, bir de ps çıktısını sistemdeki apache’nin gerçek yerine göre dinamik olarak yapabilselerdi ya da sistem CENTOS ya da RHEL olsaydı tespit etmek (en azından ilk bakışta şüphelenmek) biraz daha zor olacaktı sanırım.

    1. Aslında yola çıkış noktamız top komutunun çıktısından elde ettiğimiz PID idi bu nedenle PID’den yola çıkarak sistem üzerinden çok fazla noktadan (lsof, /proc/PID dizini, pmap komutu, memory dump vs.) tespit edebiliriz bu nedenle zor olacaktı demek pek doğru olmaz fakat geri kalan kontrolleride gerçekleştirmemiz gerekecekti diyebiliriz. Sistem üzerine rootkit yüklenmiş olsaydı evet o zaman daha zor olurdu.

Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like
Read More

e-Devlet Hacklendi mi?

If you are looking for an English version of this article, please visit here. Öncelikle yazının sonunda söyleyeceğimi başta söyleyeyim, “Hayır, hack-len-me-di!” Peki bu durumda vatandaş olarak rahat bir nefes alabilir misiniz ? Maalesef hayır. Bunun sebebini de yazının devamında okuyabilirsiniz. Zaman zaman hortlayan “e-Devlet Hacklendi!”, “e-Devlet verileri çalındı!”, “85…
Read More
Read More

WhatsApp Dolandırıcıları

If you are looking for an English version of this article, please visit here. Başlangıç Son günlerde hemen hemen WhatsApp uygulaması kullanan herkesi rahatsız eden yabancı cep telefonu numaralarından gelen çağrılardan, mesajlardan ben de yakın zamanda nasibimi aldım ve tabii ki diğer dolandırıcılıklarla ilgili yazılarımda (Kripto Para Dolandırıcıları, LinkedIn Dolandırıcıları,…
Read More
Read More

LinkedIn Dolandırıcıları

If you are looking for an English version of this article, please visit here. Uzun yıllardan beri sosyal ağları ve medyayı etkin kullanan bir siber güvenlik araştırmacısı olarak bağlantılarım arasında yer alanlarınız özellikle hafta içi LinkedIn ve Twitter üzerinden okuduğum ve beğendiğim siber güvenlik makalelerini, haberleri paylaştıklarımı farkediyorlardır. Twitter hesabımın…
Read More
Read More

Profilime Kim Baktı?

If you are looking for an English version of this article, please visit here. 23 Eylül 2020 tarihinde Twitter’da siber güvenlik ile ilgili haberlere göz gezdirirken gündem olan başlıklarda #profilimekimbaktı etiketi dikkatimi çekti. Beni oldukça şüphelendiren bu etiketin gündem olmasının arkasında yatan sebebi bulmak için bu etiketi paylaşan hesaplara göz…
Read More