Linux Sistemlerde Bellek Analizi – II (Ağ Hareketleri)

Olay müdahale süreçlerinde bellek analizine başlanması gereken nokta saldırının türüne göre değişse de, çoğu durumda zararlının bir C&C ile haberleşmeye çalıştığı göz önünde bulundurularak analize ağ hareketlerinden başlanabilir.
Hedef sistem için oluşturulan profili (bkz: http://blog.bga.com.tr/2014/09/modern-linux-sistemlerde-bellek-dokumu.html) Volatility’e “export VOLATILITY_PLUGINS=../capture/remnux-2014-09-26_07.57.52/“ komutuyla VOLATILITY_PLUGINS çevre değişkeni atanarak tanıtılır.

İlk olarak
“./vol.py -f /media/usb/capture/remnux-2014-09-26_07.57.52/remnux-2014-09-26_07.57.52-memory.lime –profile=Linuxremnux-2014-09-26_07_57_52-profilex86 linux_ifconfig” ile sistemdeki ağ arayüzleri listelenir. Pratiklik adına bellek dökümünün yolunu gösteren -f parametresi ve kullanılan profili belirten —profile parametresi yine çevre değişkeni olarak tanımlanabilir.

Örneğin:
export VOLATILITY_LOCATION= /media/usb/capture/remnux-2014-09-26_07.57.52/remnux-2014-09-26_07.57.52-memory.lime
export VOLATILITY_PROFILE=Linuxremnux-2014-09-26_07_57_52-profilex86

linux_ifconfig eklentisinin çıktısından elde edilen sistemdeki ağ arayüzleri ve atanan IP adresleri analizin devamında gerekli olabilir. Yine “promiscous mode” değeri “True” olan bir arayüz ipucu oluşturabilir.

Interface        IP Address           MAC Address        Promiscous Mode
—————- ——————– —————— —————
lo               127.0.0.1            00:00:00:00:00:00  False         
eth0             172.16.63.160        00:0c:xx:47:xx:xx  False

Daha sonra
“./vol.py linux_netstat”    ile sistemdeki ağ bağlantıları listelenir. UNIX socketleri IPC (inter-process communication) için de kullanıldıklarından linux_netstat komutun çıktısında listeleneceklerdir.

……
UNIX 7719           dbus-daemon/539   /var/run/dbus/system_bus_socket
UNIX 8423           dbus-daemon/539   /var/run/dbus/system_bus_socket
UNIX 6831       upstart-socket-/637  
UDP      0.0.0.0         :   68 0.0.0.0         :    0                         dhclient3/720 
UNIX 7111             dhclient3/720  
….
UNIX 13065           mount.ntfs/1652 
UNIX 21419       gvfsd-metadata/3943 
UNIX 6324                 udevd/4072 
TCP      172.16.63.160   :57105 89.238.150.154  :    5 SYN_SENT          73b0d95541c8496/4145
UNIX 24437           mount.ntfs/4523 
UNIX 24514                 sudo/4550 

Çıktıdan 73b0d95541c8496 isimli 4145 PID’li sürecin 89.238.150.154 adresinin 5 numaralı portuna bağlanmaya çalıştığı anlaşılmaktadır. Bu noktada IP analiz edilmelidir.

“./vol.py linux_list_raw”    ile sistemdeki raw socket kullanan süreçler bulunabilir.

Process          PID    File Descriptor Inode            
—————- —— ————— ——————
dhclient3           720               3               6524

“./vol.py linux_route_cache”    ile hangi IP’ye gitmek isteyen paketlerin hangi IP üzerinden yönlendirildiği ve hangi ağ arayüzünün kullanıldığı görüntülenir. “-R” parametresi kullanılırsa IP’lere DNS çözümlemesi de yapılmaya çalışılır.

Interface        Destination          Gateway
—————- ——————– ——-
lo               172.16.63.160        172.16.63.160
lo               172.16.63.160        172.16.63.160
eth0             89.238.150.154       172.16.63.2
eth0             89.238.150.154       172.16.63.2

“./vol.py linux_arp”    ile sistemin arp tablosu görüntülenir. Bu sayede yerel ağda iletişim kurulmuş olan diğer sistemler/cihazar tespit edilir. Örnek, bir önceki komutun çıktısıyla beraber yorumlanınca yerel ağda sadece gateway ile iletişim kurulduğu anlaşılmaktadır.

Volatility Foundation Volatility Framework 2.4
[172.16.63.2                               ] at 00:50:xx:xx:xx:69    on eth0

Son olarak bazı durumlarda
“./vol.py linux_pkt_queues -D ./output“     komutu ile bağlantıların içeriklerini kısmen de olsa elde etmek mümkündür. Elde edilen çıktıların içerikleri “xxd -a ./output/dosya” komutu ile hexadecimal ve ascii olarak görüntülenebilir.