文章目录
0x00简介
渗透测试本质就是信息收集,信息收集的深度和广度直接关系到内网渗透测试的成败。所以把信息收集工作做好是渗透的第一步。
0x01本机信息收集
本机信息包括操作系统、权限、内网IP地址段、杀毒软件、端口、服务、补丁更新频率、网络连接、共享、会话等。如果是域内主机,操作系统、应用软件、补丁、服务、杀毒软件一般都是批量安装的。
手动收集信息
- 查询网络配置信息。
ipconfig /all
-
查询操作系统及软件信息。
-
查询操作系统和版本信息。
systeminfo | findstr /B /C:"OS Name" /C:"OS Version" //英文 systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本" //中文
-
查询系统体系结构。
echo %PROCESSOR_ARCHITECTURE%
-
利用wmic查看安转的软件及版本、路径等。
wmic product get name,version
-
利用 PowerShell 命令收集软件版本的信息。
powershell "Get-WmiObject -class Win32_Product |Select-Object -Property name,version"
-
查询本机环境变量设置。
set
-
-
查询本机服务信息。
-
利用wmic查询本机服务信息。
wmic service list brief/full
-
-
查询进程列表。
-
查看当前进程列表和进程用户,分析软件、邮件客户端、杀软等。
tasklist wmic process list brief
常见杀软的进程:
进 程 软件名称 360sd.exe 360杀毒 360tray.exe 360实时保护 ZhuDongFangYu.exe 360主动防御 KSafeTray.exe 金山卫士 SafeDogUpdateCenter.exe 服务器安全狗 McAfee McShield.exe McAfee egui.exe NOD32 AVP.EXE 卡巴斯基 avguard.exe 小红伞 bdagent.exe BitDefender
-
-
查看启动程序信息。
wmic startup get command,caption
-
查看计划任务。
schtasks /query /fo LIST /v
-
查看主机开机时间。
net statistics workstation
-
查看用户相关信息。
net user //当前本机用户列表 net localgroup administrators //查看本地管理员组的成员 query user || qwinsta //查看当前在线用户 net user 123 123.com /add //添加用户名为123且密码为123.com的用户 net localgroup administrators 123 /add //将用户123加入管理员组 net localgroup administrators 123 /delete ///将用户123移出管理员组
-
列出或断开本地计算机和连接的客户端的会话。
net session
-
查看端口列表.
netstat -ano
-
查看补丁列表。
systeminfo wmic qfe get Caption,Description,HotFixID,InstalledOn
-
查询本机共享列表。
net share wmic share get name,path,status
-
查询路由表及所有可用接口的ARP缓存表。
route print arp -a
-
查询防火墙相关配置。
-
关闭防火墙
netsh firewall set opmode disable (Windows Server 2003 系统及之前版本) netsh advfirewall set allprofiles state off (Windows Server 2003 系统及之后版本)
-
查看防火墙配置。
netstat 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"
-
-
查看代理配置情况。
reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
-
查询并开启远程连接服务。
-
查看远程连接端口(0xd3d换成10进制即3389)
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 和Windows Server 2012 中开启3389 端口。
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 add "HKLM\SYSTEM\CURRENT\CONTROLSET\CONTROL\TERMINAL SERVER" /v fSingleSessionPerUser /t REG_DWORD /d 0 /f
-
自动收集信息
- wmic脚本:https://www.fuzzysecurity.com/scripts/files/wmic_info.rar
下载后直接运行脚本:
wmic_info.bat
会在当前目录下生成out.html文件,打开即可。
- Empire下主机信息收集。
当使用 Empire 使主机上线后,可调用powershell/situational_awareness/host/winenum
模块查看本机用户、域组成员、密码设置时间、系统基本信息、网络配置信息、共享信息、剪贴板等等。(运行这个模块需要管理员权限)
0x02域内信息收集
1. 判断是否存在域
-
使用ipconfig命令
查看网关 IP 地址、DNS 的 IP 地址、域名、本机是否和 DNS 服务器处于同一网段。ipconfig /all C:\Documents and Settings\Administrator>ipconfig /all Windows IP Configuration Host Name . . . . . . . . . . . . : nchu-wq Primary Dns Suffix . . . . . . . : 1ance.com Node Type . . . . . . . . . . . . : Hybrid IP Routing Enabled. . . . . . . . : No WINS Proxy Enabled. . . . . . . . : No DNS Suffix Search List. . . . . . : 1ance.com localdomain Ethernet adapter 本地连接: Connection-specific DNS Suffix . : localdomain Description . . . . . . . . . . . : Intel(R) PRO/1000 MT Network Connection Physical Address. . . . . . . . . : 00-0C-29-50-5E-EC DHCP Enabled. . . . . . . . . . . : Yes Autoconfiguration Enabled . . . . : Yes IP Address. . . . . . . . . . . . : 192.168.255.136 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 192.168.255.2 DHCP Server . . . . . . . . . . . : 192.168.255.254 DNS Servers . . . . . . . . . . . : 192.168.255.137 Primary WINS Server . . . . . . . : 192.168.255.2 Lease Obtained. . . . . . . . . . : 2021年12月13日 14:52:12 Lease Expires . . . . . . . . . . : 2021年12月13日 15:22:12
使用 nslookup 解析域名的 IP 地址,查看是否与 DNS 服务器为同一 IP,判断域控与DNS服务器是否在同一台服务器上。
nslookup 1ance.com C:\Documents and Settings\Administrator>nslookup 1ance.com *** Can't find server name for address 192.168.255.137: Non-existent domain Server: UnKnown Address: 192.168.255.137 Name: 1ance.com Address: 192.168.255.137
-
查看系统详细信息
"域"即域名,“登录服务器"即域控;如果"域"为"WORKGROUP”,表示当前机器不在域内。systeminfo | findstr "域:" C:\Documents and Settings\Administrator>systeminfo | findstr "域:" 域: 1ance.com C:\Documents and Settings\Administrator>systeminfo | findstr "登录服务器:" 登录服务器: \\NCHU-WQ
-
查询当前登录域及登录用户信息
net config workstation C:\Documents and Settings\Administrator>net config workstation | findstr "域" 工作站域 1ANCE 工作站域 DNS 名称 1ance.com 登录域 NCHU-WQ //非域用户,本地用户 工作站域 1ANCE 工作站域 DNS 名称 1ance.com 登录域 1ANCE //域用户
-
判断主域
存在域但当前用户不是域用户。C:\Users\WQ>net time /domain 发生系统错误 5。 拒绝访问。
存在域且当前用户是域用户。
C:\Users\1ance>net time /domain \\DC.1ance.com的当前时间是2021/12/13 15:31:47
当前网络环境为工作组,不存在域。
C:\Users\1ance>net time /domain 找不到域 WORKGROUP 的域控制器。 请键入 NET HELPMSG 3913 以获得更多的帮助。
2. 查询当前权限
whoami
whoami /all //获取域SID
本地用户:
C:\Users\WQ>whoami
win-7\wq
域内用户:
C:\Users\1ance>whoami
1ance\lance
如果当前内网中存在域,那么本地普通用户只能查询本机相关信息,不能查询域内信息,而本地管理员用户和域内用户可以查询域内信息。
其原理是:域内的所有查询都是通过域控制器实现的(基于LDAP协议),而这个查询需要经过权限认证,所以,只有域用户才拥有这个权限;当域用户执行查询命令时,会自动使用Kerberos协议进行认证,无须额外输入账号和密码。
本地管理员Administrator权限可以直接提升为Ntauthority或System权限,而在域中,除普通用户外,所有的机器都有一个机器用户(用户名是机器名加上“$”)。在本质上,机器的system用户对应的就是域里面的机器用户。所以,使用System权限可以运行域内的查询命令。
所以当拿下一台内网主机后,发现没有域内用户,这个时候需要将当前用户提升到 SYSTEM权限,就可以在域内充当机器用户了。
3. 收集域内基础信息
条件:当前用户为域用户或者system权限用户。
-
查询域
net view /domain
-
查询域内所有计算机
net view /domain:1ance
-
查询域内所有用户组列表
net group /domain
*Domain Admins //域管理员,权限大,完全控制
*Domain Computers //域内机器
*Domain Controllers //域控制器
*Domain Guests //域访客、权限低
*Domain Users //域用户
*Enterprise Admins //企业系统管理员用户,权限大,完全控制 -
查询所有域成员计算机列表
net group "domain computers" /domain net group "Enterprise Admins" /domain
-
获取域密码策略
net accounts /domain
-
获取域信任信息
nltest /domain_trusts
4. 查找域控制器
-
查看域控制器的机器名
nltest /DCLIST:1ance
-
查看域控制器的主机名
nslookup -type=SRV _ldap._tcp
-
查看域时间
net time /domain
-
查看域控制器组
net group "Domain Controllers" /domain netdom query pdc
5. 收集域用户和管理员信息
-
查询域用户
net user /domain
-
查询域用户详细信息
wmic useraccount get /all
-
查询存在的用户
dsquery user C:\Users\Administrator>dsquery user "CN=Administrator,CN=Users,DC=1ance,DC=com" "CN=Guest,CN=Users,DC=1ance,DC=com" "CN=krbtgt,CN=Users,DC=1ance,DC=com" "CN=lance,OU=test,DC=1ance,DC=com"
dsquery常用命令:
dsquery computer - 查找目录中的计算机
dsquery contact - 查找目录中的联系人
dsquery subnet - 查找目录中的子网
dsquery group - 查找目录中的组
dsquery ou - 查找目录中的组织单位
dsquery site - 查找目录中的站点
dsquery server - 查找目录中的域控制器
dsquery user - 查找目录中的用户
dsquery quota - 查找目录中的配额
dsquery partition - 查找目录中的分区
dsquery * - 用通用的 LDAP 查询查找目录中的任何对象
-
查询本地管理员组用户
net localgroup administrators
-
查询域管理员用户组
-
查询域管理员用户
net group "domain admins" /domain
-
查询管理员用户组
net group "Enterprise Admins" /domain
-
6. 定位域管理员
常用的域管理员定位工具有:psloggedon.exe、PVEFindADUser.exe、netview.exe、PowerView
-
psloggedon.exe
在 Windows 上使用net session
可以查看谁使用了本机资源,但没有命令可用来查看谁在使用远程计算机资源、谁登录了本地或远程计算机,使用 psloggedon 可以查看本地登录的用户和通过本地计算机或远程计算机进行资源登录的用户。psloggedon.exe [-] [-l] [-x] [\\computername|username] -: 显示支持的选项和用于输出值的单位。 -l: 仅显示本地登录,不显示本地和网络资源登录。 -x: 不显示登录时间。 \\computername: 指定要列出登录信息的计算机的名称。 Username: 指定用户名,在网络中搜索该用户登录的计算机。
C:\Users\lance\Desktop>PsLoggedon.exe \\DC PsLoggedon v1.35 - See who's logged on Copyright (C) 2000-2016 Mark Russinovich Sysinternals - www.sysinternals.com Users logged on locally: 2021/11/24 16:55:43 1ANCE\Administrator Users logged on via resource shares: 2021/12/13 17:36:35 1ANCE\lance
-
PVEFindADUser.exe
PVEFindADUser 用于查找活动目录用户登录的位置、枚举域用户,以及查找在特定计算机上登录的用户,包括本地用户、通过 RDP 登录的用户、用于运行服务器和计划任务的用户,需要.NET Framework环境且该工具需要管理员权限。
PVEFindADUser.exe <参数> -h: 显示帮助信息 -u: 检测程序是否有新版本 -current ["username"]: 如果仅指定了 -current参数,将获得目标计算机上当前登录的所有用户;如果指定了用户名(Domain\Username),则显示该用户登录的计算机。 -noping: 阻止尝试枚举用户登录名之前对目标计算机执行ping命令 -target: 此可选参数允许您指定要查询的主机。如果未指定此-target参数,则将查询当前域中的所有主机。如果决定指定-target,然后指定以逗号分隔的主机名。查询结果将被输出到report.csv文件中
C:\Users\lance\Desktop>PVEFindADUser.exe -current ----------------------------------------- PVE Find AD Users Peter Van Eeckhoutte (c) 2009 - http://www.corelan.be:8800 Version : 1.0.0.12 ----------------------------------------- [+] Finding currently logged on users ? true [+] Finding last logged on users ? false [+] Enumerating all computers... [+] Number of computers found : 3 [+] Launching queries [+] Processing host : DC.1ance.com (Windows Server 2008 R2 Standard;Service Pack 1) - Logged on user : 1ance\administrator [+] Processing host : WIN-7.1ance.com (Windows 7 旗舰版;Service Pack 1) [+] Processing host : nchu-wq.1ance.com (Windows Server 2003;Service Pack 2) [+] Report written to report.csv
-
netview.exe
netview.exe 是一个枚举工具,使用 WinAPI 枚举系统,利用 NetSessionEnum 寻找登录会话,利用 NetShareEnum 寻找共享,利用 NetWkstaUserEnum 枚举登录的用户,netview.exe 可以查询共享入口和有价值的用户,其绝大部分功能无需管理员权限就可使用。
netview.exe <参数> -h: 显示帮助信息 -f filename.txt: 指定要提取主机列表的文件 -e filename.txt: 指定要排除的主机名的文件 -o filename.txt: 将所有输出重定向到指定的文件 -d domain: 指定要提取主机列表的域。如果没有指定,则从当前域中提取主机列表 -g group: 指定搜索的组名。如果没有指定,则在Domain Admins组中搜索 -c: 对已找到的共享目录/文件的访问权限进行检查 -i interval: 枚举主机之间等待的秒数 -j jitter: 应用于间隔的抖动百分比(0.0-1.0)
C:\Users\lance\Desktop>netview.exe -d [*] -d used without domain specified - using current domain [*] Using interval: 0 [*] Using jitter: 0.00 [+] Number of hosts: 2 [+] Host: DC Enumerating AD Info[+] DC - Comment - [+] D - OS Version - 6.1 [+] DC - Domain Controller Enumerating IP Info [+] (null) - IPv4 Address - 192.168.255.137 .....
-
Nmap的NSE脚本
常用的 NSE脚本如下:
smb-enum-domains.nse
:对域控制器进行信息收集,可以获取主机信息、用户、可使用密码策略的用户等
smb-enum-users.nse
:在进行域渗透时,如获取了域内某台主机权限,但权限有限,无法获取更多的域用户信息,可借助此脚本对域控制器进行扫描
smb-enum-shares.nse
:遍历远程主机的共享目录
smb-enum-processes.nse
:对主机的系统进程进行遍历,通过此信息,可知道目标主机运行着哪些软件
smb-enum-sessions.nse
:获取域内主机的用户登陆会话,查看当前是否有用户登陆,且不需要管理员权限
smb-os-discovery.nse
:收集目标主机的操作系统、计算机名、域名、域林名称、NetBIOS机器名、NetBIOS域名、工作组、系统时间等信息nmap --script=smb-enum-domains.nse -p 445 192.168.255.138(本机ip)
-
PowerView 脚本
下载脚本PowerView 文件夹复制到 PowerShell 的 Module 文件夹内。或者输入$Env:PSModulePath
查看
(win08路径:C:\Windows\System32\WindowsPowerShell\v1.0\Modules
)
在 powershell中输入Import-Module PowerView
即可导入PowerView,使用Get-Command -Module PowerView
可查看已导入的 PowerView 命令。PS C:\Users\Administrator> import-module PowerView PS C:\Users\Administrator> Invoke-UserHunter UserDomain : xxx-WQ UserName : Administrator ComputerName : xxx-wq.1ance.com IP : 192.168.255.136 SessionFrom : LocalAdmin : UserDomain : 1ANCE UserName : Administrator ComputerName : DC.1ance.com IP : 192.168.255.137 SessionFrom : LocalAdmin :
Invoke-StealthUserHunter:只需要进行一次查询,就可以获取域里面的所有用户。其原理为:从
user.HomeDirectories
中提取所有用户,并对每个服务器进行Get-NetSession
获取。因不需要使用Invoke-UserHunter
对每台机器进行操作,所以这个方法的隐蔽性相对较高(但涉及的机器不一定全面)。PowerView 默认使用Invoke-StealthUserHunter
如果找不到需要的信息,就会使用Invoke-UserHunter
.Invoke-UserHunter:找到域内特定的用户群,接受用户名、用户列表和域组查询,接收一个主机列表或查询可用的主机域名。使用
Get-NetSession
和Get-NetLoggedon
(调用 NetSessionEnum 和 NetWkstaUserEnumAPI )扫描每台服务器并对扫描结果进行比较,从而找出目标用户集,在使用时不需要管理员权限。Get-NetDomain:获取当前用户所在域名称
Get-NetUser:获取所有用户的详细信息
Get-NetDomainController:获取所有域控制器的信息
Get-NetComputer:获取域内所有机器的详细信息
Get-NetOU:获取域中的OU信息
Get-NetGroup:获取所有域内组和组成员信息
Get-NetFileServer:根据SPN获取当前域使用的文件服务器信息
Get-NetShare:获取当前域内所有的网络共享信息
Get-NetSession:获取指定服务器的会话
Get-NetRDPSession:获取指定服务器的远程连接
Get-NetProcess:获取远程主机的进程
Get-UserEvent:获取指定用户的日志
Get-ADObject:获取活动目录的对象
Get-NetGPO:获取域内所有组的策略对象
Get-DomainPolicy:获取域默认策略或域控制器策略
Invoke-UserHunter:获取域用户登陆的计算机信息及该用户是否有本地管理员权限
Invoke-ProcessHunter:通过查询域内所有的机器进程找到特定用户
Invoke-UserEventHunter:根据用户日志查询某域用户登陆过哪些域机器
7. 查找域管理员进程
-
获取域管理员列表
net group "Domain Admins" /domain
-
列出本机的所有进程及进程用户
tasklist /v
-
寻找进程所有者为域管理员的进程
8. 查询域控制器的域用户会话
查询域控制器的域用户会话,其原理是:在域控制器中查询域用户会话列表,并将其与域管理员列表进行交叉引用,从而得到域管理会话的系统列表。
0x03参考
https://teamssix.com/210224-210341.html
https://cloud.tencent.com/developer/article/1878203