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

本章内容主要介绍在获取网站服务器webshell后,怎样对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 usernet user xxx   #查看详细信息

查看登录情况

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

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

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

上图就是一个域环境

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

查看系统详细信息,同时关注打了什么补丁(方便后续提权,这里附上一个提权辅助的工具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:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:list

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

wmic product get name,version

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

net sharewmic 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 disablewin 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:\windows\temp\fw.log"

查看代理配置情况

reg query “HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet 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: \windows\system32\dns\dns.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.orgNslookup -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管理系统,那么可以对一下信息进行梳理,做进一步渗透,例如指定人员进行钓鱼

找到域控后做什么

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

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

文章推荐

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

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信息收集相关推荐

  1. 【内网安全】——windows信息收集

    作者名:Demo不是emo  主页面链接:主页传送门 创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷 座右铭:不要让时代的悲哀 ...

  2. 内网安全学习(1)---信息收集

    内网安全-域环境&工作组&局域网探针方案 (此内容参考b站小迪师傅的公开课程学习特此记录) 1.一些基本概念知识: 内网拓扑图: 内网内有各种服务.安全设备以及个人电脑,一般DMZ多为 ...

  3. 内网渗透(windows)

    内网渗透 文章目录 内网渗透 基础知识 信息收集 常用命令 系统默认常见用户身份: 横向渗透(重点) 获取明文密码或Hash密码(需要管理员权限) PwDump7工具 Mimikatz工具 Procd ...

  4. 后渗透(内网渗透学习笔记)

    外网和内网 内网是局域网,在同一个局域网内的各台计算机可以互相ping通(可以相互通信)另外一个局域网内的计算机不可以连入.除非用一台服务器做端口转发.这样才能连入别人内网 而外网就是公网,就是可以让 ...

  5. 内网渗透之Windows反弹shell(一)

    前言 作者简介:不知名白帽,网络安全学习者. 博客主页:https://blog.csdn.net/m0_63127854?type=blog 内网渗透专栏:https://blog.csdn.net ...

  6. 内网渗透系列:信息搜集方法小结2

    目录 前言 一.开源情报(OSINT) 1.whois/反查/相关资产 2.github敏感信息 (1)github邮箱密码爬取 (2)GSIL (3)x-patrol 3.google hackin ...

  7. linux下敏感文件(账号密码)查找—内网渗透linux主机密码收集

    目录 find命令 命令格式 按照文件/目录名搜索 linux正则表达式 find同时查找符合多个格式的文件 grep命令 管道符| egrep xargs命令 案例 内网渗透中linux主机查找账号 ...

  8. 内网渗透之Windows 系统下的目标信息收集

    0x00 前言 遇到的项目需要收集目标信息,在此记录下,一些记录一些关于用户信息的数据位置.(持续补充) 0x01 路径 以下用户均用 administrator 代替,对于不同的 Windows 用 ...

  9. [内网渗透学习]内网收集Fscan扫描探测工具

    简介: fscan 是一个内网综合扫描工具,方便一键自动化.全方位漏洞扫描.它支持主机存活探测.端口扫描.常见服务的爆破.ms17010.redis批量写公钥.计划任务反弹shell.读取win网卡信 ...

最新文章

  1. rhino-java中调用javascript
  2. 软件工程 项目管理的目标和细节
  3. MySQL buffer pool中的三种链
  4. springboot HBase操作工具类
  5. 《笨办法学python》6_笨办法学Python 习题 25: 更多更多的练习
  6. 前端学习(1081):构造函数和原型概述
  7. matlab 联合体,C++11非受限联合体(union)
  8. springboot 集成mybatis_Spring Boot 集成Mybatis实现多数据源
  9. 2016/1/14 java随机数生成
  10. 传统企业该如何拥抱AI?德勤说野心别太大,分四步实施
  11. Weblogic魔法堂:AdminServer.lok被锁导致启动、关闭域失败
  12. 多线程编程(4) - 从 CreateThread 说起[续二]
  13. SQL Where 字符串拼接
  14. struts1(一)流程分析
  15. win10PPT不支持Flash动画
  16. 条码电子秤商品怎么录入?
  17. php自动播放mp3,html5实现背景音乐的自动播放
  18. atikmpag.sys 导致蓝屏
  19. 训练好的神经网络 如何预测_【家长必看】如何帮助孩子训练好口才?
  20. 高精度加法 problem A+B

热门文章

  1. 业务架构师应该做些什么?
  2. 常见的网络协议有哪些?
  3. 计算机的手机储存在哪里,手机wps文件保存在哪里?
  4. iOS登录注册登录界面(UITextField)
  5. 电路设计_自恢复保险丝参数说明
  6. Lamber表达式 List,Map,Set 互相转换
  7. 数值分析正割法python3实现并绘图
  8. 基于python的Django框架 企业公司网站设计与实现毕业设计毕设参考
  9. 国科大学习资料--人工智能原理与算法-第十四次作业解析(学长整理)
  10. 音频D类功放LC滤波器设计(二)