内网渗透学习-Windows信息收集
內網滲透學習-Windows信息收集
本章內容主要介紹在獲取網站服務器webshell后,怎樣對Windows主機進行信息收集,對其網絡環境進行分析和利用,主要是一個思路整理,在后續的章節中會整理更詳細的實踐過程。
后滲透中最重要的環節就是信息收集。
收集思路
權限:
網絡:
殺軟:
分析當前網絡架構:
另外關注機器有沒有多網卡,后續可以跨網段滲透(OxidScan)
針對上述收集到的信息做針對性總結,搞清楚這臺機子究竟是干什么的。
本文重點是針對Windows系統的信息收集,接下來作對兩種不一樣的網絡架構環境下信息收集的總結
如何分析是域環境還是工作組環境?要做哪些信息收集?
1.分析方法
systeminfo或者net config workstation(如果存在域那么就會顯示工作站域和工作站域DNS等信息)
上述兩條指令執行之后如果看到WORKGROUP
就可以判斷是工作組環境了,反之出現xxx.com等就是域環境
2.信息收集方法
首先判斷當前機器有什么用戶,用戶的擁有什么程度的權限,查看當前用戶SID
whoami whoami /user whoami /user && whoami /priv && whoami /all #查看主機權限(whoami /priv)當前操作系統
wmic OS get Caption,CSDVersion,OSArchitecture,Version 英文版系統用這條命令: systeminfo | findstr /B /C:"OS Nmae" /C:"OS Version" 中文版用: systeminfo | findstr /B /C:“OS 名稱” /C:“OS 版本”查看系統體系結構 echo %PROCESSOR_ARCHITECTURE%查看主機用戶,制作用戶字典
net usernet user xxx #查看詳細信息
查看登錄情況
qwinstaqwinsta /SERVER:IP ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#查看遠程登錄情況
然后開始判斷是否有域環境,看主機DNS后綴
ipconfig /all #查看網關IP地址、DNS的ip地址、域名、本機是否和DNS服務器處于同一網段等信息。上圖就是一個域環境
當然判斷域環境并不只有這一種方法,后續會提到
查看系統詳細信息,同時關注打了什么補丁(方便后續提權,這里附上一個提權輔助的工具https://i.hacking8.com/tiquan,可以根據補丁名字看打了哪些補丁),網絡連接狀態
systeminfo #是否加入域,加入了會顯示域的名字,未加入顯示WORKGROUP wmic qfe get caption,description,hotfixid,installedon #查看補丁查詢補丁信息
wmic qfe get Caption,Description,HotFixID,InstalledOn包括查看當前任務進程,看用的什么殺軟(一樣可以用剛剛的鏈接來判斷殺軟的類型)
tasklist tasklist /v #輸出任務的詳細信息,這條指令也可以用來排查后門木馬一類的東西 碰到java.exe,也可以猜測是什么進程,例如weblogic,tomcat tasklist /svc #導出系統的進程信息,顯示每個任務相關的服務,可以放到在線殺軟比對中可以看到目標系統安裝了哪些殺毒軟件 wmic process list brief查看當前機器在線的用戶,看管理員在不在線
query user | quser查看當前主機名字,可以從中判斷這臺主機的用處
hostname查看本地密碼策略
net accounts遠程桌面連接歷史記錄,rdp連接,如果有rdp連接記錄,可以想辦法導出憑證記錄,在本地解密
cmdkey /list利用憑據:runas /savecred /user:contoso/administrator cmd.exe
查看遠程機器開啟的共享
netview \\ip netview \\192.168.31.138/All #查看某個IP的機器的所有共享看開放什么端口,對外進行什么連接
netstat -ano路由表(追蹤路由,對內網網段進行測繪)
route print #打印本機路由信息,可以看到本機所有的網卡接口 netstat -r #打印本機路由信息,可以看到本機所有的網卡接口,和route print功能 arp -a #查找有價值的內網arp通信記錄 netsh int ip delete arpcache #刪除當前機器的arp緩存 tracert 8.8.8.8 #跟蹤本機的出口ip一條指令查殺軟
WMIC /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:list查看當前安裝的程序,軟件安裝的版本及路徑
wmic product get name,version查看當前主機的共享,如果文件共享對內網其他主機開放,可以采取上傳木馬的方式對其他主機進行感染,進一步橫向滲透
net sharewmic share get name,path,status
查看當前會話
net session查看主機開機時間
net statistics workstation查看機器自啟動程序信息
wmic startup get command,caption,user wmic startup get command,caption wmic startup list full 查詢防火墻相關配置關閉防火墻
win 2003及之前的版本用這條命令: netsh firewall set opmode disablewin 2003之后的版本用這條命令: netsh advfirewall set allprofiles state off查看防火墻配置
netsh firewall show config修改防火墻配置
win 2003之后的版本用這條: netsh advfirewall firewall add rule name=“pass nc” dir=in action=allow program=“C:\nc.exe”允許指定程序連出,命令如下 netsh advfirewall firewall add rule name=“Allow nc” dir=out action=allow program=“C: \nc.exe”允許 3389 端口放行,命令如下 netsh advfirewall firewall add rule name=“Remote Desktop” protocol=TCP dir=in localport=3389 action=allow自定義防火墻日志儲存位置 netsh advfirewall set currentprofile logging filename “C:\windows\temp\fw.log"查看代理配置情況
reg query “HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings"探測內網存活主機
for /l %i in (1,1,255) do @ping -w 2 -n 1 10.10.10.%i | findstr “TTL=”或者采用上傳工具的方式,例如fscan或者nbtscan(命令格式:nbtscan.exe 10.10.10.0/20)
工作組環境信息收集
查看機器中的所有組名,了解不同組的職能
net localgroup查看指定組中的成員列表
net localgroup "Administrator" 其他信息的收集都可以參照上面的內容域環境信息收集
域環境信息收集,主要針對域用戶,域管理員,域控,域機器,服務,exchange郵件服務器
確定當前內網所架設的域,并且所控制的主機賬戶在域里面,就可以進行域內相關信息的收集了。
因為這些查詢命令本質上都是通過 LDAP 協議去域控制器上查詢的,查詢時候需要經過權限認證,只有域用戶才有這個權限,所以本地用戶是無法運行以下命令的(system 權限用戶除外。在域里面,除了普通用戶,所有機器都有一個機器用戶,用戶名為機器名加“$”。system 用戶對應的就是域里面的機器用戶,所以 system 權限用戶是可以運行以下查詢命令的)。(參考https://blog.csdn.net/qq_45290991/article/details/120028595)
在實際情況中,一個域內一般有兩臺或者兩臺以上的域控制器,因為一點主域控制器發生故障,備用域控制器就可以保證域內服務和驗證工作正常運行。
在一個域中,當計算機加入域后,會默認給域管理員組賦予本地系統管理員的權限。也就是說,在計算機添加到域中,成為域的成員主機后,系統會自動將域管理員組添加到本地系統管理員組中。因此,域管理員組的成員均可訪問本地計算機,而且具備完全控制權限。
滲透測試人員通常會通過搜集域內信息,追蹤域內特權用戶、域管理組用戶的歷史登錄位置、當前登錄位置等。定位域內管理員的常規渠道,一是日志,二是會話。日志是指本地機器的管理員日志,可以使用powershell腳本或 wevtutil 導出查看。會話是指域內每個機器的登錄會話,可以匿名查詢,無須權限,可以使用 netsess.exe 或 PowerView 等工具查詢。
net user /domain #查看域環境用戶,當前域中的所有用戶名,根據用戶名總數大概判斷域的規模 net user域用戶/domain #獲取某個域用戶的詳細信息 net localgroup administrators #本機管理員[通常含有域用戶] net localgroup administrators /domain #登錄本機的域管理員 net localgroup administrators dcluseroo1 /add #域用戶添加到本機 net user /domain xxX 12345678 #修改域用戶密碼,需要域管理員權限 net config workstation #查看當前登錄域及域用戶 net time /domain #判斷主域 net view /domain #查看內網存在多少個域,所有的域名稱,有時候查詢出錯6118錯誤,是因為 Computer Brower 服務的問題,把它手動啟動。 Net view /domain:xYz #查看xYz域中的機器列表 net view /domain: 1abtest #查看指定域中在線的計算機列表 net time /domain #查看時間服務器,一般域控會做時間服務器 net accounts /domain #查看當前域的域內賬戶密碼設置策略 net config workstation #看看當前的登錄域---以下命令在高版本系統(2012及以后)中會提示只能域控中執行--- net group /domain #查看當前域中的所有組名 net group域組名/domain #查詢域組所包含的用戶 net group "domain admins”/domain #查看當前域中的域管賬戶 net group "domain computers" /domain #查看當前域中的所有的計算機名(登錄過該域的計算機)net group "domain controllers”/domain查看域控 net group"enterprise admins”/domain #查看企業管理組net group "domain guest" /domain net user admin 123456/add /domain #添加域用戶admin,密碼為123456 net group "domain admins" admin /add /domain #將域用戶admin添加到域管理員組domain admins中nltest /DCLIST:主機名[Hacker] #查看域控制器的機器名 Nslookup -type=SRV _ldap._tcp #查看域控制器主機名 net group “Domain Controllers” /domain #查看域控制器##添加域管理員 net user shuteer xy@china110 /ad /domain #添加域用戶 net group "domain admins" shuteer /ad /domain #添加域用戶到域管理員組 net group "domain admins"/domain #查看域管理員組 ##域信任關系(很少,基本上只有在域樹和域林中才會出現)和查找域控 DC上運行的命令 nltest /domain_trusts #查看域內信任關系 dnscmd /zoneexport lab.com dns.txt導出域內DNs信息,文件在c: \windows\system32\dns\dns.txt nslookup -q=mx labtest.com #查看域內郵件服務器 nslookup -q=ns labtest.com #查看域內DNS服務器 netdom query pdc #查看域內的主域控,僅限win2008及之后的系統 nltest /domain_trusts /all_trusts /v /server:192.168.52.2 返回所有信任192.168.52.2的域內主機 nltest /dsgetdc:hack /server:192.168.52.2 返回域控和其相應的IP地址##搜集spn(掃盲:SPN(Service Principal name) 是服務在使用 Kerberos 身份驗證的網絡上的唯一標識符,它由服務類、主機名和端口組成。) SPN掃描 不同于常規的tcp/udp端口掃描,由于spn本質就是正常的Kerberos請求,所以掃描是非常隱蔽,日前針對此類掃描的檢測暫時也比較少。 大部分win系統默認已自帶spn探測工具即:setspn.exe下列操作無需管理權限,需要域內機器執行setspn -T hack -0*/* setspn -T target.com -Q*/* 導出后針對性定位域控##定位域控nslookup -type=all __ldap._tcp.dc._msdcs.rootkit.orgNslookup -type=SRV _ldap._tcp 方法一:net group "domain controllers" /domain #這里查詢結果后面會多一個$ 方法二:nltest /DCLIST:test.com 方法三:net time /domain 方法五:查看DNS服務器的地址,一般DNS服務器的IP就是域控的地址方法六:netdom query pdc #該命令只能在域控上執行 方法七:dsquery server #該命令只能在域控上執行##定位郵件服務器 nslookup -qt-MX Yahoo.com##域內信息收集dsquery 有些機器無法執行,需要自行上傳工具 dsquery user #查找域目錄中的用戶 dsquery computer #查找目錄中的計算機 dsquery contact #查找目錄中的聯系人 dsquery subnet #查找目錄中的子網 dsquery group #查找目錄中的組 dsquery ou #查找目錄中的組織單位 dsquery site #查找目錄中的站點 dsquery server #查找目錄中的AD DC/LDS實例 dsquery user #查找目錄中的用戶 dsquery quota #查找目錄中的配額規定 dsquery partition #查找目錄中的分區 dsquery * - #用通用的LDAP查詢來查找目錄中的任何對象 #以下命令只能在域控上查詢 dsquery user #查詢目錄中的用戶 dsquery computer #查詢目錄中的主機 dsquery group #查詢目錄中的組, dsquery ou #查詢目錄中的組織單元, dsquery site #查詢目錄中的站點 dsquery server #查詢域控 dsquery contact #查詢目錄中的聯系人 dsquery subnet #查詢目錄中的子網 dsquery quota #查詢目錄中的配額規定, dsquery partition #查詢目錄中的分區。 dsquery * #用通用的LDAP查詢來查找目錄中的任何對 dsquery server -domain test.comI dsget server-dnsname -site #搜索域內域控制器的DNS主機名和站點名 dsquery computer domainroot -name -xp -limit 10 #搜索域內以- xp結尾的機器10臺 dsquery user domainroot -name admin -limit #搜索域內以admin開頭的用戶10個翻找本地文件
在連上目標主機做好權限維持后,針對主機的各類文件進行翻查
1.看是否在本地留存有密碼本一類的東西(txt文件或者excel表格)
2.瀏覽器密碼,瀏覽器訪問記錄
3.看有無社交軟件(微信,qq),有就找存儲的文件
4.各類配置文件:數據庫密碼,access token,access key,api接口,部分api接口的session? key密鑰
java網站:找war包,有配置信息
asp網站:web.config
5.若存在文件共享服務器,配置文件可能可以找到寫死的密碼
6.網站源碼(很大概率代碼審計一下就可以翻到新漏洞,這樣的話后續即便對方封鎖了原先的入口刪掉webshell,后續一樣可以找機會進來)
7.日志文件(主機日志,網站日志等各類日志,不僅僅是為了信息收集,同時也可以做一些消除痕跡的工作,增大后續管理人員排查入侵的難度)
需要梳理的信息
例如拿下的主機上對外映射的web服務是一個oa管理系統,那么可以對一下信息進行梳理,做進一步滲透,例如指定人員進行釣魚
找到域控后做什么
密碼噴灑:即利用已經獲得密碼對所有的域內用戶進行探測
?(后續的學習中會詳細整理和實踐)
文章推薦
本文中在總結的同時,也參考了大量博客文章,這里附上一篇很有參考價值的文章(這篇可能也是轉載過來的)
https://blog.csdn.net/qq_45290991/article/details/120028595
在這篇文章中涉及了許多域環境信息收集的內容,同時介紹了很多域信息收集的工具,值得學習。
?ps;在本文中認識到了powershell和普通cmd的區別,填補一些我之前護網面試里的知識空白:
PowerShell可以理解為增強版的”cmd.exe”,打開方式就是:運行->輸入powershell:
如果想執行一個Powershell腳本,需要修改Powershell的默認權限為執行權限。PowerShell常用的執行權限有四種:
Restricted:默認設置,不允許執行任何腳本。Allsigned:只能運行經過證書驗證的腳本。
Unrestricted:權限最高,可以執行任意腳本。
RemoteSigned:本地腳本無限制,但是對來自網絡的腳本必須經過簽名。
在PowerShell中輸入Get-ExecutionPolicy,可以查看權限:
如果想要修改權限就可以執行這條命令,然后選擇Y:
Set-ExecutionPolicy 權限名總結
以上是生活随笔為你收集整理的内网渗透学习-Windows信息收集的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Pygame制作音乐播放器
- 下一篇: java信息管理系统总结_java实现科