MSF Meterpreter Script API Çağrıları
Kullanışlı API Çağrıları
Önceki script düzenleme yazımızda, meterpreter oturumunda kullanılan script dosyasının genel mimari yapısını açıklamaya çalışmıştık. Bu yazımızda, sürekli kullanılan ve işimize yarayacak API çağrı kodlarını tek tek görelim ve ne işe yaradığını açıklayalım.
Bu çağrıları kendi dosyanızı oluşturarak deneyebileceğiniz gibi Meterpreter oturumu içerisinden irb
komutuyla Ruby girişimcisini kullanarak direk hedef sistemde de çalıştırabilirsiniz. irb
girişimcisini, meterpreter oturumu açık durumdayken, aşağıdaki örnekte olduğu gibi başlatabilirsiniz.
meterpreter ***>*** irb
***[*** ******* ***]*** Starting IRB shell
***[*** ******* ***]*** The 'client' variable holds the meterpreter client
***>>***
client.sys.config.sysinfo
Bu komut, sistem hakkında bir takım bilgileri öğrenmemizi sağlar. Aşağıda, client.sys.config.sysinfo
API çağrısının bir kaç örneğini görebilirsiniz.
***>>*** client.sys.config.sysinfo
***=>*** ***{*** "OS"***=>*** "Windows XP (Build 2600, Service Pack 3).", "Computer"***=>*** "WINXPVM01"***}***
***>>***
Komut çıktısında görüldüğü gibi, ekrana getirilen bilginin aslında farklı alt sınıfları bulunmaktadır. Örneğin, “OS” ve “Computer” bu çağrının alt sınıfıdır. İstersek, sadece bu sınıf bilgilerini de öğrenebiliriz. Bunun için çağrı komutu aşağıdaki gibi kullanılabilir.
***>>*** client.sys.config.sysinfo.class
***=>*** Hash
***>>***
***>>*** client.sys.config.sysinfo['OS'***]***
***=>*** "Windows XP (Build 2600, Service Pack 3)."
***>>***
client.sys.config.getuid
Bu çağrı kullanıcı bilgilerini elde etmek için kullanılır.
***>>*** client.sys.config.getuid
***=>*** "WINXPVM01\labuser"
***>>***
client.sys.process.getpid
Bu çağrı sayesinde, Meterpreter oturumunun hangi program içine gömülü olarak çalıştığını öğrenebiliriz.
***>>*** client.sys.process.getpid
***=>*** 684
## client.net.config.interfaces
Bu çağrı ile hedef sistemin ağ kartları ve arayüzleri hakkında bilgi elde edebilirsiniz.
```sh
***>>*** client.net.config.interfaces
***=>*** ***[*** #, #]
***>>*** client.net.config.interfaces.class
***=>*** Array
Gördüğünüz gibi, API çağrısı array tipi bir değişken kullanmaktadır. Bu değişken tipini aşağıdaki gibi döngüde kullanarak sonuçları görebiliriz.
***>>*** interfaces ***=*** client.net.config.interfaces
***=>*** ***[*** #, #]
***>>*** interfaces.each ***do*** |i|
?> puts i.pretty
***>>*** end
MS TCP Loopback interface
Hardware MAC: 00:00:00:00:00:00
IP Address : 127.0.0.1
Netmask : 255.0.0.0
AMD PCNET Family PCI Ethernet Adapter - Packet Scheduler Miniport
Hardware MAC: 00:0c:29:dc:aa:e4
IP Address : 192.168.1.104
Netmask : 255.255.255.0