內網資訊收集概述#
對所處的網路環境進行判斷
我是誰?—— 對當前機器角色的判斷。
這是哪?—— 對當前機器所處網路環境的拓撲結構進行分析和判斷。
我在哪?—— 對當前機器所處區域的判斷。
收集本機資訊#
手動搜集#
(1)查詢網路配置#
ipconfig /all
(2)查詢作業系統及軟體的資訊#
查看作業系統和版本資訊
英文版
systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
中文版
systeminfo | findstr /B /C:"OS 名稱" /C:"OS 版本"
查看系統體系結構
echo %PROCESSOR_ARCHITECTURE%
查看安裝的軟體及版本、路徑等
wmic product get name,version
Powershell 版本:
powershell.exe "Get-WmiObject -class Win32_Product | Select-Object -Property name,Version"
(3)查詢本機服務資訊#
wmic service list brief
(4)查詢進程列表#
tasklist
// 或者
wmic process list brief
常見殺毒軟體進程如下
360sd.exe
360tray.exe
ZhuDongFangYu.exe
KSafeTray.exe
SafeDogUpdateCenter.exe
McAfee McShield.exe
egui.exe //NOD32
AVP.EXE // 卡巴斯基
avguard.exe // 小紅傘
bdagent.exe //BitDefender
(5)查看啟動程序資訊#
wmic startup get command,caption
(6)查看計畫任務#
schtasks /query /fo LIST /v
(7)查看主機開機時間#
net statistics workstation
(8)查詢使用者列表#
net user
// 獲取本地管理員組成員:
net localgroup administrators
// 查看當前在線使用者 (不行)
query user || qwinsta
(9)列出或斷開本地計算機與所連接的客戶端之間的會話#
需要管理員權限
net session
(10)查詢端口列表#
netstat -ano
(11)查詢補丁列表#
systeminfo
使用 wmic 命令查看安裝在系統中的補丁:
wmic qfe get Caption,Description,HotFixID,InstalledOn
(12)查詢本機共享列表#
net share
//wmic:
wmic share get name,path,status
(13)查詢路由表及所有可用介面的 ARP 快取表#
route print
arp -a
(14)查詢防火牆相關配置#
關閉防火牆
//windows server 2003之前
netsh firewall set opmode disable
//Windows server 2003之後
netsh advfirewall set allprofile state off
查看防火牆配置
netsh firewall show config
修改防火牆配置
windows server 2003 之前允許指定程序全部連接
netsh firewall add allowedprogram c:\nc.exe "allow nc" enable
windows server 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"
(15)查看代理配置情況#
reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
(16)查詢並開啟遠程連接服務#
查看遠程連接端口
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /V PortNumber
在 Windows server 2003 中開啟 3389
wmic path win32_terminalservicesetting where (__CLASS !="") call setallowtsconnections 1
在 Windows server 2008 和 2012 中
wmic /namespace:\\root\cimv2\terminalservices path win32_terminalservicesetting where (__CLASS !="") call setallowtsconnections 1
wmic /namespace:\\root\cimv2\terminalservices path win32_tsgeneralsetting where (TerminalName='RDP-Tcp') call setuserauthenticationrequired 1
// 修改註冊表方式
reg query "HKLM\System\CURRENT\CONTROLSET\CONTROL\TERMINAL SERVER" /v fSingleSessionPerUser /t REG_DWORD /d 0 /f
自動搜集#
WMIC(Windows Management Instrumentation Command-Line,Windows 管理工具命令行)是最有用的 Windows 命令行工具
Windows XP 的低權限使用者不允許訪問 WMIC
Windows7 以上版本的低權限使用者允許訪問 WMIC 並執行相關查詢操作
不僅可以管理本地計算機,還可以管理同一域內的所有計算機(需要一定權限),而且在被管理的計算機上不可事先安裝 WMIC
書裡提供了一個使用 WMIC 的腳本,執行上一節所有命令,並將結果寫入 HTML 文件:
wmic_info.bat
for /f "delims=" %%A in ('dir /s /b %WINDIR%\system32\*htable.xsl') do set "var=%%A"
wmic process get CSName,Description,ExecutablePath,ProcessId /format:"%var%" >> out.html
wmic service get Caption,Name,PathName,ServiceType,Started,StartMode,StartName /format:"%var%" >> out.html
wmic USERACCOUNT list full /format:"%var%" >> out.html
wmic group list full /format:"%var%" >> out.html
wmic nicconfig where IPEnabled='true' get Caption,DefaultIPGateway,Description,DHCPEnabled,DHCPServer,IPAddress,IPSubnet,MACAddress /format:"%var%" >> out.html
wmic volume get Label,DeviceID,DriveLetter,FileSystem,Capacity,FreeSpace /format:"%var%" >> out.html
wmic netuse list full /format:"%var%" >> out.html
wmic qfe get Caption,Description,HotFixID,InstalledOn /format:"%var%" >> out.html
wmic startup get Caption,Command,Location,User /format:"%var%" >> out.html
wmic PRODUCT get Description,InstallDate,InstallLocation,PackageCache,Vendor,Version /format:"%var%" >> out.html
wmic os get name,version,InstallDate,LastBootUpTime,LocalDateTime,Manufacturer,RegisteredUser,ServicePackMajorVersion,SystemDirectory /format:"%var%" >> out.html
wmic Timezone get DaylightName,Description,StandardName /format:"%var%" >> out.html
3、Empire 下的主機資訊收集#
Empire 提供了用於收集主機資訊的模組
查看本機使用者、域組成員、密碼設定時間、剪貼板內容、系統基本資訊、網路適配器資訊、共享資訊等:
usemodule situational_awareness/host/winenum
execute
有管理員權限的情況下,查看目標主機事件日誌、應用程式控制策略日誌、RDP 登錄資訊、PowerShell 腳本運行和保存的資訊等:
usemodule situational_awareness/host/computerdetails
查詢當前權限#
1、查看當前權限
whoami
有三種情況:本地普通使用者
、本地管理員使用者
、域內使用者
如果當前內網中存在域,那麼本地普通使用者只能查詢本機相關資訊,不能查詢域內資訊;而本地管理員使用者和域內使用者可以查詢域內資訊。
域內的所有查詢都是通過域控制器實現的(基於 LDAP 協議),而這個查詢需要經過權限認證,所以,只有域使用者才擁有這個權限;當域使用者執行查詢命令時,會自動使用Kerberos 協議進行認證,無需額外輸入帳號和密碼。
本地管理員 Administrator 權限可以直接提升為 System 權限(使用 PsExec 等),因此,在域中,除普通使用者外,所有的機器都有一個機器使用者(用戶名為機器名加上 $)。在本質上,機器的 system 使用者對應的就是域裡面的機器使用者。所以,使用 System 權限也可以運行域內的查詢命令。
2、獲取域 SID
whoami /all
3、查詢指定使用者的詳細資訊
net user xxx /domain
沒有管理員權限
--- 判斷是否存在域 ---#
查看 dns 伺服器#
域控制器
和DNS伺服器
是否在同一台伺服器上?(使用 nslookup 反向解析)
ipconfig /all
// 將查看到的 DNS 伺服器用 nslookup 進行解析
nslookup burnchi.cc
查看系統詳細資訊#
systeminfo 中的域即域名、登錄伺服器指的是域控制器。
systeminfo | findstr /B/C:"登錄伺服器" // 如果結果不為 **"WORKGROUP"** 則主機為域主機
查詢當前登錄域及登錄使用者資訊#
只有 DC 才能執行
net group workstation
判斷主域#
net time /domain
// 命令用於查看域內時間,同時也可以查看域控制器
執行結果有三種情況:
- 發生系統錯誤 5:存在域,但當前使用者不是域使用者 -
- 顯示時間資訊:存在域,且當前使用者是域使用者 -
- 找不到域控制器:不存在域
探測域內存活主機#
NetBIOS 快速探測#
前提
需要上傳到目標主機使用。
NetBIOS 是局域網程序使用的一種 API,為程序提供了請求低級別服務的統一的命令集。NetBIOS 也是計算機的標識名,主要用於局域網中計算機的互訪。
使用 nbtscan (http://www.unixwiz.net/tools/nbtscan.html)
nbt.exe 192.168.1.0/20
fscan 探測(推薦)#
fscan64.exe -h 10.0.0.0/24
使用管理員權限速度更快
使用 ICMP 探測#
對每個 IPping (速度超慢)
for /L %I in (1,1,254) DO @ping -w 1 -n 1 10.0.0.%I | findstr "TTL="
ARP 掃描#
通過 ARPscan 工具掃描探測內網
arp.exe -t 192.168.1.0/20
Empire 中的 ARPscan 模組#
usemode situational_awareness/network/arpscan
execute
Nishang 中的 Invoke-ARPScan.ps1#
powershell.exe -exec bypass -Command "& (Import-module c:\windows\temp\Invoke-ARPscan.ps1; Invoke-ARPScan -CIDR 192.168.1.0/20)" >> c:\windows\temp\log.txt
type c:\windows\temp\log.txt
通過常規的 TCP/UDP 端口掃描探測內網#
上傳 ScanLine 進行掃描#
scanline -h -t 22,80-90,110,445 -u 53,161 -O c:\windows\temp\log.txt -p 192.168.1.1-254 /b
fscan#
fscan64.exe -h 10.0.0.0/24
掃描域內端口#
需要關注的點:
- 端口的 Banner 資訊 -
- 端口上運行的服務 -
- 常見應用的默認端口
Telnet(需要添加功能)#
telnet DC 22
fscan#
fscan64.exe -p 1-60000 -h 10.0.0.107
-p string
設置掃描的端口: 22 | 1-65535 | 22,80,3306 (default "21,22,80,81,135,139,443,445,1433,3306,5432,6379,7001,8000,8080,8089,9000,9200,11211,27017")
Metasploit 端口掃描#
Metasploit 不用多說
use auxiliary/scanner/portscan/tcp
set ports 1-1000
set RHOST 192.168.1.1
set THREADS 10
run
其他#
還可以使用如 PowerSploit、NiShang 的 Invoke-portscan 腳本、nmap
然後一些漏洞的資訊可以參考
http://www.securityfocus.com/bid
https://www.exploit-db.com/
收集域內資訊#
本節的域內查詢命令在本質上都是通過 LDAP 協議到域控制器上進行查詢的,故需要域使用者的權限,本地使用者無法運行(除非是 System 使用者)
在默認情況下,Domain Admins 和 Enterprise Admins 對域內所有域控制器有完全控制權限
命令如下:
查詢域#
net view /domain
查詢域內所有計算機#
net view /domain:HACKE
查詢域內所有使用者組列表#
net group /domain
查詢所有域成員計算機列表#
net group "domain computers" /domain
獲取域內密碼資訊#
net accounts /domain
域內信任資訊#
nltest /domain_trusts
查找域控制器#
命令如下:
查看域控制器的機器名#
nltest /DCLIST:hacke
查看當前時間#
net time /domain
查看域控制器的主機名#
nslookup -type=SRV _ldap._tcp
查看域控制器組#
net group "Domain Controllers" /domain
查看主控制器#
可能在域控才能執行?
netdom query pdc
獲取域內使用者和管理員資訊#
查詢所有域使用者列表#
net user /domain
獲取域內使用者的詳細資訊#
wmic useraccount get /all
// 查看存在的使用者,但是這個只能在域控
或者安裝了對應服務的主機
使用,否則會提示命令不存在
dsquery user
在 DC 執行
查找目錄中的計算機#
dsquery computer
在 DC 執行
dsquery 命令#
查詢本地管理員組使用者#
域內 Domain Admins 組中的使用者默認為域內機器的本地管理員使用者
net localgroup administrators
查詢域管理員使用者組#
// 查詢域管理員使用者組
net group "domain admins" /domain
// 查詢管理員使用者組
net group "Enterprise Admins" /domain
定位域管理員#
在內網中,通常會部署大量的網路安全系統和設備,例如 IDS、IPS、日誌審計、安全網關、反病毒軟體等。
在一個域中,當計算機加入域後,會默認給域管理員組賦予本地系統管理員權限。也就是說,當計算機被添加到域中,成為域的成員主機後,系統會自動將域管理員組添加到本地系統管理員組中。因此,域管理員組的成員均可訪問本地計算機,且具備完全控制權限。
在獲取了 Windows 域中的普通權限在進行橫向滲透時,需要知道域內使用者登錄的位置,是否是任何系統 / 主機的本地管理員,以及所屬組等資訊。能夠使用的工具有:psloggedon.exe、PVEFindADUser.exe、netness.exe、hunter、NetView、PowerView。
1、psloggedon.exe
能夠通過此工具查看遠程計算機的資源,也就是說能夠查看目標主機有哪些帳戶在登錄狀態
下載地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/psloggedon
psloggedon.exe \DC
2、PVEFindADUser.exe
PVEFindADUser 能夠用於查找活動目錄使用者登錄的位置,枚舉域使用者,以及查找在特定計算機上登錄的使用者:本地使用者、通過 RDP 登錄的使用者、用於運行服務和計畫任務的使用者。(這個工具需要.NET 3.5)
Windows Server 2012 安裝.NET 3.5 可能不成功,需要指定安裝源:https://www.cr173.com/soft/921507.html
下載地址:https://github.com/chrisdee/Tools/tree/master/AD/ADFindUsersLoggedOn
PVEFindADUser.exe <參數>
參數:
-h:顯示幫助資訊
-u:檢查程序是否有新版本
-current [“username”]:如果僅指定了 - current 參數,將獲取目標計算機上當前登錄的所有使用者;如果指定了用戶名(Domain\Usemame),則顯示該使用者登錄的計算機
-last [“username”]:如果僅指定了 - last 參數,將獲取目標計算機的最後的登錄使用者;如指定了用戶名(Domain\Usemame),則顯示此使用者上次登錄的計算機。根據網路的安全策略,可能會隱藏最後的登錄使用者的用戶名,此時使用該工具可能無法得到該用戶名
-noping:阻止該工具在嘗試獲取使用者登錄資訊之前對目標計算機執行 ping 命令
-taget:可選參數,用於指定要查詢的主機。如果未指定此參數,將查詢當前域中的所有主機;如果指定了此參數,則後跟由逗號分隔的主機名列表
3、NetView.exe
NetView 是一個枚舉工具,使用 WinAPI 枚舉系統,利用 NetSessionEnum 找尋登錄會話,利用 NetShareEnum 找尋共享,利用 NetWkstaUserEnum 枚舉登錄的使用者。同時還能夠查詢共享入口和有價值的使用者。
下載地址:https://github.com/mubix/netview
netview.exe <參數>
參數:
-h:顯示幫助資訊
-f aaa.txt:指定要提取主機列表的文件
-e aaa.txt:指定要排除的主機名的文件
-o aaa.txt:將所有輸出重定向到指定的文件
-d aaa.txt:指定要提取主機列表的域 ° 如果沒有指定’則從當前域中提取主機列表
-g group:指定搜索的組名。如果沒有指定,則在 Domain Admins 組中搜索
-c:對已找到的共享目錄 / 文件的訪問權限進行檢查
4、PowerView
PowerView 是 — 款 PowerShell 腳本,提供了輔助定位關鍵使用者的功能
下載地址:https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerView
5、Empire
Empire 中也存在此類型的腳本:
usemodule situational_awareness/network/powerview/user_hunter
execute
6、Nmap 的 NSE 腳本
通過 Nmap 的 NSE 腳本獲取遠程機器的登錄會話
smb-enum-sessions.nse 獲取域內主機的使用者登錄會話,查看當前是否有使用者登錄,無需管理員權限
smb-enum-domains.nse 對域控制器進行資訊收集,可以獲取主機資訊使用者、可使用密碼策略的使用者等
smb-enum-users.nse 可以使用此腳本對域控進行掃描
下載地址:https://nmap.org/nsedoc/scripts/smb-enum-sessions.html
十、查找域管理進程
在獲取了管理員權限的系統中尋找域管理員登錄進程,進而搜集域管理員的憑據
一個假設情況:
滲透測試人員在某個內網環境中獲得了一個域普通使用者的權限,首先通過各種方法獲得當前伺服器的本地管理員權限,然後分析當前伺服器的使用者登錄列表及會話資訊,知道哪些使用者登錄了這台伺服器。如果滲透測試人員通過分析發現,可以獲取權限的登錄使用者都不是域管理員帳戶,同時沒有域管理員組的使用者登錄這台伺服器,就可以使用另一個帳號並尋找該帳號在內網的哪台機器上具有管理權限,再枚舉這台機器上的登錄使用者,然後繼續進行滲透測試,直至找到一個可以獲取域管理員權限的有效路徑為止。
有一篇參考:五種尋找 “Domain Admin” 運行的進程的方法
1、本機檢查
// 獲取域管理員列表
net group "Domain Admins" /domain
// 列出本機的所有進程和進程使用者
tasklist /v
2、查詢域控的域使用者會話
// 查詢域控列表
net group "Domain Controllers" /domain
// 收集域管理員列表
net group "Domain Admins" /domain
// 收集所有活動域的會話列表
netsess -h
十一、利用 powershell 收集域資訊
使用 PowerView
下載地址:
https://github.com/shigophilo/tools/blob/master/PowerView.ps1
https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1
一些使用:
powerview 使用記錄
powerview 使用小記
十二、敏感數據防護
1、資料、數據、文件的定位流程
內網數據防護首先要熟悉攻擊者獲取數據的流程
在實際的網路環境中,攻擊者主要通過各種惡意方法來定位公司內部各相關人員的機器,從而獲得資料,數據文件,流程如下:
定位內部人事組織結構
在內部人事組織結構中尋找需要監視的人員
定位相關人員的機器
監視相關人員存放文檔的位置
列出存放文檔的伺服器的目錄
2、核心業務機器
高級管理人員、系統管理員、財務/人事/業務人員的個人計算機
產品管理系統伺服器
辦公系統伺服器
財務應用系統伺服器
核心產品源碼伺服器(IT 公司通常會架設自己的 SVN 或者 GIT 伺服器)
資料庫伺服器
文件伺服器、共享伺服器
電子郵件報務器
網路監控系統伺服器
其他伺服器(分公司、工廠)
3、敏感資訊
站點源碼備份文件資料庫備份文件等
各類資料庫的 Web 管理口,例如 phpMyAdmin、Adminer
測覽器密碼和測覽器 Cookie
其他使用者會話、3389 和 ipc$連接記錄、“回收站” 中的資訊等
Windows 無線密碼
網路內部的各種帳號和密碼,包括電子郵件、VPN、FTP、TeamView 等