内网域渗透信息搜集
前言
当渗透测试进入内网后,面对复杂的内网域环境,首先需要了解当前所处的网络环境,例如判断当前机器的的角色,当前机器所处位置区域,以及当前网络环境的拓扑结构等。因此,我们需要对当前内网环境进行信息搜集。
0x01 域环境判断
查看网卡详细信息
通过查看网卡的主DNS后缀信息,一般情况下域环境机器会显示域信息(luckysec.cn),而工作组环境机器显示为空。
1 | ipconfig /all |
查看系统详细信息
通过查看系统详细信息,根据显示当前域信息(luckysec.cn)可以判断是一台域机器,如果是工作组机器,则显示(WORKGROUP)。
1 | systeminfo |
查看当前登录域信息
通过查看当前登录域及域用户信息,如果是域环境工作站域会显示当前域(luckysec.cn),如果是工作组环境会显示(WORKGROUP)。
1 | net config workstation |
查看域内时间
通过查询域内时间命令,根据结果判断是否是域环境机器:
- 存在域,当前用户不是域用户,会显示拒绝访问。
- 存在域,当前用户是域用户,会显示当前域内时间
- 不存在域,当前为工作组,会显示找不到域WORKGROUP的控制器
1 | net time /domain |
0x02 本机信息搜集
查看本机网络配置信息
通过查看网络配置信息,可以判定当前机器网卡数量,有多个网卡就代表可以扩大资产范围进行内网横向渗透,从而有更多机会拿到域内其他主机的权限。
1 | ipconfig /all |
查看操作系统和版本信息
通过查看确定当前系统版本信息后,就可以针对性的去搜集相关系统版本的漏洞EXP。
1 | 英文版系统用这条命令: |
查看系统体系结构
通过查看查看系统体系结构,可以确定在当前机器上需要使用相对应版本兼容性的渗透工具。
1 | echo %PROCESSOR_ARCHITECTURE% |
查看安装程序和版本信息
通过搜集当前本机安装了哪些程序后,就可以了解当前机器的使用情况,比如某个程序有一些溢出、提权漏洞、DLL劫持提权等。
1 | wmic product get name,version |
查看本机服务信息
通过搜集当前本机的服务信息,可以了解当前机器上有哪些服务是开启的还是关闭的,看是否有可以深入利用的点。
1 | wmic service list brief |
查看进程列表
通过查看当前进程列表对应的用户身份命令,可以了解每个程序的进程以及对应执行的用户身份等。
1 | tasklist /v |
查看当前本地运行的程序、对应进程PID号、服务名,可以将执行命令的返回结果去查询是否有杀毒软件在运行。
1 | tasklist /svc |
Windows杀软在线对比辅助 https://maikefee.com/av_list
查看启动程序信息
通过查看启动程序信息,可以了解当前机器开机的时候会运行哪些程序,这也可以利用自启动劫持。
1 | wmic startup get command,caption |
查看计划任务
通过查看本机计划任务,可以了解当前机器上“某个时间”会运行哪些程序,可以利用这一点来做定时任务劫持。
1 | schtasks /query /fo LIST /v |
查看主机开机时间
通过查看本机的开机时间,可以判断这台机器的管理员是不是经常在登陆这台机器。
1 | net statistics workstation |
查看用户列表
通过查看本机用户列表,可以了解出内部网络机器名的命名规则,特别是个人机器,可以推测出整个域的用户命名方式。
1 | net user |
查看当前在线用户
通过查看当前在线用户,可以了解当前机器有没有管理员在登陆。
1 | query user || qwinsta |
查看本机端口开放情况
通过查看本机网络连接/相关网络地址/端口开放情况,可以了解当前机器有没有与其他机器进行连接,以及分析当前机器是否开放一些敏感服务。
1 | netstat -ano |
查询系统和补丁信息
查看系统的详细信息,注意系统的版本、位数、域、补丁信息及跟新频率等信息,通过查看本地计算机补丁列表,可以找到未打补丁的漏洞,用来辅助提升权限。
1 | # 查询系统信息/补丁安装情况 |
查看路由表及ARP缓冲表
通过查询路由表及所有可用接口的ARP缓冲表,可以了解当前网络的分布情况,内网有没有其他机器等等。
1 | # 查看路由信息 |
查看防火墙配置
通过查看防火墙配置,可以了解当前机器是否开了防火墙,以及更多防火墙配置信息。
1 | netsh firewall show config |
若是想修改防火墙配置信息就可以使用:
1 | win 2003及之前的版本,运行指定程序全部连接: |
若是想要关闭防火墙就可以使用:
1 | win 2003及之前的版本用这条命令: |
查询并开启远程桌面服务
查看远程桌面服务是否开启,在cmd下使用注册表查询语句,命令如下,得到连接端口为0xd3d,转换后为3389
1 | REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /V PortNumber |
一些开启远程桌面的命令:
1 | # 在 Windows Server 2003 中开启 3389 端口 |
0x03 域内信息搜集
获取域SID
获取域SID值,可以用于票据传递攻击。
1 | whoami /all |
查询域内用户
通过查询域内用户,可以获取到这个域内所有用户名。
1 | net user /domain |
查看域用户详细信息
例如要查询luckystar这个域用户的信息,可以使用如下命令:
1 | net user luckystar /domain |
查询域列表
通过查询域列表发现当前只有一个 LUCKYSEC 域。
1 | net view /domain |
查询域主机
通过执行以下命令来查看当前域内有多少台主机,以及主机的主机名信息:
1 | net view /domain:XXX |
查询域管理员列表
查询域管理员用户。
1 | net group "domain admins" /domain |
查询企业管理员
查询企业指定系统管理员用户。
1 | net group "enterprise admins" /domain |
查看域内时间
通过查看域内时间(时间服务器)得知当前域的时间,可以使用定时任务+IPC来运行一些bat文件。
1 | net time /domain |
当前域的时间服务器是AD2-2016,可以Ping一下它的机器名获取道它的IP信息:
1 | ping -n 2 AD2-2016 |
查看登陆本机的域管理员
这条命令会显示本地管理员和域管理员。
1 | net localgroup administrators /domain |
查看域内所有用户组列表
通过执行以下命令来查看域内所有用户组列表信息。
1 | net group /domain |
查看主域控制器
通过查看主域控制器,可以知道当前域的核心域控就是AD-2016这台机器。
1 | netdom query pdc |
通过查看当前时间定位主域控制器。
1 | net time /domain |
通过查询域控制组定位主域控制器。
1 | net group "Domain Controllers" /domain |
通过nltest定位主域控制器。
1 | nltest /DCLIST:xxx |
查看所有域控制器列表
一个域可以有多个域控制器,通过查看域控制器列表就可以得到域控制器对应的机器名
1 | net group "Domain Controllers" /domain |
通过Ping它的机器名即可得到域控制器的IP地址,域控机器名为 AD-2016 的 IP 是 10.10.10.10。
查询域信任信息
通过查询域信任信息,可以知道当前有多少个域以及域名信息。
1 | nltest /domain_trusts |
查询域密码信息
通过查询域密码信息,就可以根据密码策略来制定一份密码字典,例如:密码长度最小值为7,则可以直接忽略7位以下的密码字典。
1 | net accounts /domain |