• 欢迎光临~

内网渗透学习-Windows信息收集

开发技术 开发技术 2022-08-04 次浏览

内网渗透学习-Windows信息收集

本章内容主要介绍在获取网站服务器webshell后,怎样对Windows主机进行信息收集,对其网络环境进行分析和利用,主要是一个思路整理,在后续的章节中会整理更详细的实践过程。

后渗透中最重要的环节就是信息收集。

收集思路

内网渗透学习-Windows信息收集

 

 

 

权限:

  1. 看哪些地方是有权限可以利用的    
  2. 看有哪些进程
  3. 看有几个用户
  4. 查看敏感的配置文件

网络:

  1. 看路由
  2. 看arp
  3. 进程通信
  4. 是否是k8s集群?虚拟集群(vcenter)?有的话找主控端 docker&k8s技术扫盲(在此之前先理清虚拟机,容器,docker,Kubernetes集群,虚拟机的概念)
  5. 是否站库分离?站库分离就要想办法渗透相应的数据库 站库分离渗透思路
  6. 是否有堡垒机?

杀软:

  1. 当前所控服务器有无杀软,杀软是什么类型,有针对性的做免杀处理

分析当前网络架构:

  1. Windows系统:是工作组环境还是域环境
  2. Linux系统:判断是集群,私有云还是阿里云aws(可以利用vpc搭建私网)
  3. MAC系统:判断是工作站还是集群环境

另外关注机器有没有多网卡,后续可以跨网段渗透(OxidScan

针对上述收集到的信息做针对性总结,搞清楚这台机子究竟是干什么的。

本文重点是针对Windows系统的信息收集,接下来作对两种不一样的网络架构环境下信息收集的总结

如何分析是域环境还是工作组环境?要做哪些信息收集?

1.分析方法

systeminfo或者net config workstation(如果存在域那么就会显示工作站域和工作站域DNS等信息)

上述两条指令执行之后如果看到WORKGROUP

就可以判断是工作组环境了,反之出现xxx.com等就是域环境

2.信息收集方法

首先判断当前机器有什么用户,用户的拥有什么程度的权限,查看当前用户SID

whoami
whoami /user
whoami /user && whoami /priv && whoami /all    #查看主机权限(whoami /priv)

当前操作系统

wmic OS get Caption,CSDVersion,OSArchitecture,Version
英文版系统用这条命令:
systeminfo | findstr /B /C:"OS Nmae" /C:"OS Version"
中文版用:
systeminfo | findstr /B /C:“OS 名称” /C:“OS 版本”

查看系统体系结构
echo %PROCESSOR_ARCHITECTURE%

查看主机用户,制作用户字典

net user
net user xxx #查看详细信息

查看登录情况

qwinsta
qwinsta /SERVER:IP                                        #查看远程登录情况

然后开始判断是否有域环境,看主机DNS后缀

ipconfig /all          #查看网关IP地址、DNS的ip地址、域名、本机是否和DNS服务器处于同一网段等信息。

内网渗透学习-Windows信息收集

上图就是一个域环境

当然判断域环境并不只有这一种方法,后续会提到

查看系统详细信息,同时关注打了什么补丁(方便后续提权,这里附上一个提权辅助的工具https://i.hacking8.com/tiquan,可以根据补丁名字看打了哪些补丁),网络连接状态

systeminfo   #是否加入域,加入了会显示域的名字,未加入显示WORKGROUP
wmic qfe get caption,description,hotfixid,installedon      #查看补丁

查询补丁信息

wmic qfe get Caption,Description,HotFixID,InstalledOn

包括查看当前任务进程,看用的什么杀软(一样可以用刚刚的链接来判断杀软的类型)

tasklist
tasklist /v    #输出任务的详细信息,这条指令也可以用来排查后门木马一类的东西  碰到java.exe,也可以猜测是什么进程,例如weblogic,tomcat
tasklist /svc    #导出系统的进程信息,显示每个任务相关的服务,可以放到在线杀软比对中可以看到目标系统安装了哪些杀毒软件
wmic process list brief

查看当前机器在线的用户,看管理员在不在线

query    user |  quser

查看当前主机名字,可以从中判断这台主机的用处

hostname

查看本地密码策略

net accounts

远程桌面连接历史记录,rdp连接,如果有rdp连接记录,可以想办法导出凭证记录,在本地解密

cmdkey   /list
利用凭据:runas /savecred /user:contoso/administrator cmd.exe

查看远程机器开启的共享

netview  \ip
netview  \192.168.31.138/All    #查看某个IP的机器的所有共享

看开放什么端口,对外进行什么连接

netstat -ano

路由表(追踪路由,对内网网段进行测绘)

route print    #打印本机路由信息,可以看到本机所有的网卡接口
netstat -r      #打印本机路由信息,可以看到本机所有的网卡接口,和route print功能
arp -a        #查找有价值的内网arp通信记录
netsh int ip delete arpcache  #删除当前机器的arp缓存
tracert 8.8.8.8  #跟踪本机的出口ip

一条指令查杀软

WMIC /Node:localhost /Namespace:\rootSecurityCenter2 Path AntiVirusProduct Get displayName /Format:list

查看当前安装的程序,软件安装的版本及路径

wmic product get name,version

查看当前主机的共享,如果文件共享对内网其他主机开放,可以采取上传木马的方式对其他主机进行感染,进一步横向渗透

net share
wmic share get name,path,status

查看当前会话

net session

查看主机开机时间

net statistics workstation

查看机器自启动程序信息

wmic startup get command,caption,user
wmic startup get command,caption
wmic startup list full
查询防火墙相关配置

关闭防火墙

win 2003及之前的版本用这条命令:
netsh firewall set opmode disable

win 2003之后的版本用这条命令:
netsh advfirewall set allprofiles state off

查看防火墙配置

netsh firewall show config

修改防火墙配置

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"

查看代理配置情况

reg query “HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionInternet Settings"

探测内网存活主机

for /l %i in (1,1,255) do @ping -w 2 -n 1 10.10.10.%i | findstr “TTL=”

或者采用上传工具的方式,例如fscan或者nbtscan(命令格式:nbtscan.exe 10.10.10.0/20)

工作组环境信息收集

查看机器中的所有组名,了解不同组的职能

net localgroup

查看指定组中的成员列表

net localgroup "Administrator"
其他信息的收集都可以参照上面的内容

域环境信息收集

域环境信息收集,主要针对域用户,域管理员,域控,域机器,服务,exchange邮件服务器

确定当前内网所架设的域,并且所控制的主机账户在域里面,就可以进行域内相关信息的收集了。

因为这些查询命令本质上都是通过 LDAP 协议去域控制器上查询的,查询时候需要经过权限认证,只有域用户才有这个权限,所以本地用户是无法运行以下命令的(system 权限用户除外。在域里面,除了普通用户,所有机器都有一个机器用户,用户名为机器名加“$”。system 用户对应的就是域里面的机器用户,所以 system 权限用户是可以运行以下查询命令的)。(参考https://blog.csdn.net/qq_45290991/article/details/120028595)

在实际情况中,一个域内一般有两台或者两台以上的域控制器,因为一点主域控制器发生故障,备用域控制器就可以保证域内服务和验证工作正常运行。

在一个域中,当计算机加入域后,会默认给域管理员组赋予本地系统管理员的权限。也就是说,在计算机添加到域中,成为域的成员主机后,系统会自动将域管理员组添加到本地系统管理员组中。因此,域管理员组的成员均可访问本地计算机,而且具备完全控制权限。

渗透测试人员通常会通过搜集域内信息,追踪域内特权用户、域管理组用户的历史登录位置、当前登录位置等。定位域内管理员的常规渠道,一是日志,二是会话。日志是指本地机器的管理员日志,可以使用powershell脚本或 wevtutil 导出查看。会话是指域内每个机器的登录会话,可以匿名查询,无须权限,可以使用 netsess.exe 或 PowerView 等工具查询。

net user /domain         #查看域环境用户,当前域中的所有用户名,根据用户名总数大概判断域的规模
net user域用户/domain      #获取某个域用户的详细信息
net localgroup administrators #本机管理员[通常含有域用户]
net localgroup administrators /domain #登录本机的域管理员
net localgroup administrators dcluseroo1 /add #域用户添加到本机
net user /domain xxX 12345678 #修改域用户密码,需要域管理员权限
net config workstation     #查看当前登录域及域用户
net time /domain         #判断主域
net view /domain       #查看内网存在多少个域,所有的域名称,有时候查询出错6118错误,是因为 Computer Brower 服务的问题,把它手动启动。
Net view /domain:xYz     #查看xYz域中的机器列表
net view /domain: 1abtest  #查看指定域中在线的计算机列表
net time /domain       #查看时间服务器,一般域控会做时间服务器
net accounts /domain     #查看当前域的域内账户密码设置策略
net config workstation    #看看当前的登录域

---以下命令在高版本系统(2012及以后)中会提示只能域控中执行---
net group /domain #查看当前域中的所有组名
net group域组名/domain #查询域组所包含的用户
net group "domain admins”/domain #查看当前域中的域管账户
net group "domain computers" /domain #查看当前域中的所有的计算机名(登录过该域的计算机)net group "domain controllers”/domain查看域控
net group"enterprise admins”/domain #查看企业管理组net group "domain guest" /domain
net user admin 123456/add /domain   #添加域用户admin,密码为123456
net group "domain admins" admin /add /domain  #将域用户admin添加到域管理员组domain admins中nltest /DCLIST:主机名[Hacker] #查看域控制器的机器名
Nslookup -type=SRV _ldap._tcp #查看域控制器主机名
net group “Domain Controllers” /domain #查看域控制器

##添加域管理员
net user shuteer xy@china110 /ad /domain   #添加域用户
net group "domain admins" shuteer /ad /domain  #添加域用户到域管理员组
net group "domain admins"/domain  #查看域管理员组  

##域信任关系(很少,基本上只有在域树和域林中才会出现)和查找域控
DC上运行的命令
nltest /domain_trusts  #查看域内信任关系
dnscmd /zoneexport lab.com dns.txt导出域内DNs信息,文件在c: windowssystem32dnsdns.txt
nslookup -q=mx labtest.com #查看域内邮件服务器
nslookup -q=ns labtest.com #查看域内DNS服务器
netdom query pdc #查看域内的主域控,仅限win2008及之后的系统
nltest /domain_trusts /all_trusts /v /server:192.168.52.2
返回所有信任192.168.52.2的域内主机
nltest /dsgetdc:hack /server:192.168.52.2
返回域控和其相应的IP地址


##搜集spn(扫盲:SPN(Service Principal name) 是服务在使用 Kerberos 身份验证的网络上的唯一标识符,它由服务类、主机名和端口组成。)
SPN扫描
不同于常规的tcp/udp端口扫描,由于spn本质就是正常的Kerberos请求,所以扫描是非常隐蔽,日前针对此类扫描的检测暂时也比较少。
大部分win系统默认已自带spn探测工具即:setspn.exe

下列操作无需管理权限,需要域内机器执行

setspn -T hack -0*/*
setspn -T target.com -Q*/*
导出后针对性定位域控

##定位域控

  nslookup -type=all __ldap._tcp.dc._msdcs.rootkit.org
  Nslookup -type=SRV _ldap._tcp
方法一:net group "domain controllers" /domain
#这里查询结果后面会多一个$
方法二:nltest /DCLIST:test.com
方法三:net time /domain
方法五:查看DNS服务器的地址,一般DNS服务器的IP就是域控的地址方法六:netdom query pdc
#该命令只能在域控上执行
方法七:dsquery server
#该命令只能在域控上执行

##定位邮件服务器
nslookup -qt-MX Yahoo.com

##域内信息收集dsquery
有些机器无法执行,需要自行上传工具
dsquery user #查找域目录中的用户
dsquery computer #查找目录中的计算机
dsquery contact  #查找目录中的联系人
dsquery subnet   #查找目录中的子网
dsquery group  #查找目录中的组
dsquery ou     #查找目录中的组织单位
dsquery site   #查找目录中的站点
dsquery server #查找目录中的AD DC/LDS实例
dsquery user   #查找目录中的用户
dsquery quota  #查找目录中的配额规定
dsquery partition #查找目录中的分区
dsquery * -  #用通用的LDAP查询来查找目录中的任何对象
#以下命令只能在域控上查询
dsquery user #查询目录中的用户
dsquery computer #查询目录中的主机
dsquery group    #查询目录中的组,
dsquery ou       #查询目录中的组织单元,
dsquery site     #查询目录中的站点
dsquery server   #查询域控
dsquery contact  #查询目录中的联系人
dsquery subnet   #查询目录中的子网
dsquery quota    #查询目录中的配额规定,
dsquery partition #查询目录中的分区。
dsquery *     #用通用的LDAP查询来查找目录中的任何对
dsquery server -domain test.comI dsget server-dnsname -site  #搜索域内域控制器的DNS主机名和站点名
dsquery computer domainroot -name -xp -limit 10 #搜索域内以- xp结尾的机器10台
dsquery user domainroot -name admin -limit      #搜索域内以admin开头的用户10个

翻找本地文件

在连上目标主机做好权限维持后,针对主机的各类文件进行翻查

1.看是否在本地留存有密码本一类的东西(txt文件或者excel表格)

2.浏览器密码,浏览器访问记录

3.看有无社交软件(微信,qq),有就找存储的文件

4.各类配置文件:数据库密码,access token,access key,api接口,部分api接口的session  key密钥

java网站:找war包,有配置信息

asp网站:web.config

5.若存在文件共享服务器,配置文件可能可以找到写死的密码

6.网站源码(很大概率代码审计一下就可以翻到新漏洞,这样的话后续即便对方封锁了原先的入口删掉webshell,后续一样可以找机会进来)

7.日志文件(主机日志,网站日志等各类日志,不仅仅是为了信息收集,同时也可以做一些消除痕迹的工作,增大后续管理人员排查入侵的难度)

需要梳理的信息

例如拿下的主机上对外映射的web服务是一个oa管理系统,那么可以对一下信息进行梳理,做进一步渗透,例如指定人员进行钓鱼

内网渗透学习-Windows信息收集

找到域控后做什么

内网渗透学习-Windows信息收集

 

 

 

密码喷洒:即利用已经获得密码对所有的域内用户进行探测

 (后续的学习中会详细整理和实践)

文章推荐

本文中在总结的同时,也参考了大量博客文章,这里附上一篇很有参考价值的文章(这篇可能也是转载过来的)

https://blog.csdn.net/qq_45290991/article/details/120028595

在这篇文章中涉及了许多域环境信息收集的内容,同时介绍了很多域信息收集的工具,值得学习。

 ps;在本文中认识到了powershell和普通cmd的区别,填补一些我之前护网面试里的知识空白:

PowerShell可以理解为增强版的”cmd.exe”,打开方式就是:运行->输入powershell:

如果想执行一个Powershell脚本,需要修改Powershell的默认权限为执行权限。PowerShell常用的执行权限有四种:

Restricted:默认设置,不允许执行任何脚本。
Allsigned:只能运行经过证书验证的脚本。
Unrestricted:权限最高,可以执行任意脚本。
RemoteSigned:本地脚本无限制,但是对来自网络的脚本必须经过签名。

在PowerShell中输入Get-ExecutionPolicy,可以查看权限:

如果想要修改权限就可以执行这条命令,然后选择Y:

Set-ExecutionPolicy 权限名
程序员灯塔
转载请注明原文链接:内网渗透学习-Windows信息收集
喜欢 (0)