红蓝对抗之Windows内网渗透

2024-03-23 20:08

本文主要是介绍红蓝对抗之Windows内网渗透,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

无论是渗透测试,还是红蓝对抗,目的都是暴露风险,促进提升安全水平。企业往往在外网布置重兵把守,而内网防护相对来说千疮百孔,所以渗透高手往往通过攻击员工电脑、外网服务、职场WiFi等方式进入内网,然后发起内网渗透。而国内外红蓝对抗服务和开源攻击工具大多数以攻击Windows域为主,主要原因是域控拥有上帝能力,可以控制域内所有员工电脑,进而利用员工的合法权限获取目标权限和数据,达成渗透目的。

 

本文以蓝军攻击视角,介绍常用的Windows内网渗透的手法,包括信息收集、传输通道、权限提升、密码获取、横向移动、权限维持、免杀处理,主要让大家了解内网渗透到手法和危害,以攻促防,希望能给安全建设带来帮助。

{全文内容较长1.4万字,阅读时长15分钟}

在攻陷一台机器后,不要一味的直接去抓取机器密码、去做一些扫描内网的操作,因为如果网内有IDS等安全设备,有可能会造成报警,丢失权限。本节主要介绍当一台内网机器被攻破后,我们收集信息的一些手法。

    

1.1、SPN

SPN:服务主体名称。使用Kerberos须为服务器注册SPN,因此可以在内网中扫描SPN,快速寻找内网中注册的服务,SPN扫描可以规避像端口扫描的不确定性探测动作。主要利用工具有:setspn、GetUserSPNs.vbs和Rubeus。

 

a、利用Windows自带的setspn工具,普通域用户权限执行即可:

setspn -T domain.com -Q */*

在上述截图中可以清晰的看到DCServer机器上运行了dns服务。如果网内存在mssql,利用SPN扫描也可以得到相应的结果。

b、利用GetUserSPNs.vbs也可以获取spn结果:

c、Rubeus工具是Harmj0y开发用于测试Kerberos的利用工具。

如下图利用Rubeus查看哪些域用户注册了SPN,也为后续Kerberoasting做准备:

    

1.2、端口连接

利用netstat -ano命令获取机器通信信息,根据通信的端口、ip可以获取到如下信息。如果通信信息是入流量,则可以获取到跳板机/堡垒机、管理员的PC来源IP、本地web应用端口等信息;如果通信信息是出流量,则可以获取到敏感端口(redis、mysql、mssql等)、API端口等信息。

    

1.3、配置文件

一个正常的Web应用肯定有对应的数据库账号密码信息,是一个不错的宝藏。

可以使用如下命令寻找包含密码字段的文件:

cd /web

findstr  /s /m "password" *.*

下面是常用应用的默认配置路径:

a、

Tomcat:

CATALINA_HOME/conf/tomcat-users.xml

b、

Apache:

/etc/httpd/conf/httpd.conf

c、

Nginx:

/etc/nginx/nginx.conf

d、

Wdcp:

/www/wdlinux/wdcp/conf/mrpw.conf

e、

Mysql:

mysql\data\mysql\user.MYD


    

1.4、用户信息

可以在网内收集用户等信息,对高权限用户做针对性的攻击,包括定位到域控,对域控发起攻击。

a、查看域用户,普通域用户权限即可:

net user /domain

b、查看域管理员:

net group "domain admins" /domain

c、快速定位域控ip,一般是dns、时间服务器:

net time /domain

nslookup -type=all_ldap._tcp.dc._msdcs.jumbolab.com

d、查看域控制器:

net group "domaincontrollers" /domain

    

1.5、内网主机发现

可以使用如下命令来达到内网主机的发现。

a、查看共享资料:

net view

b、查看arp表:

arp -a

c、查看hosts文件:

linux:

cat  /etc/hosts

 

windows:

type  c:\Windows\system32\drivers\etc\hosts

d、查看dns缓存:

ipconfig  /displaydns


e、当然,利用一些工具也可以,比如nmap、nbtscan:

    

1.6、会话收集

在网内收集会话,如看管理员登录过哪些机器、机器被谁登录过,这样攻击的目标就会清晰很多。

 

可以使用NetSessionEnum api来查看其他主机上有哪些用户登录。

api相关介绍如下:

https://docs.microsoft.com/en-us/windows/win32/api/lmshare/nf-lmshare-netsessionenum

利用powershell脚本PowerView为例。

a、可以查看域用户登录过哪些机器:

b、也可以查看机器被哪些用户登陆过:

其他工具、api类似。当有了上述信息后,就可以对发现到的域管或者登录着域管的机器进行攻击,只要能拿下这些机器,就可以有相应的权限去登录域控。

    

1.7、凭据收集

拿下一台机器后,需要尽可能的收集信息。如下是几个常用软件保存密码的注册表地址,可以根据算法去解密保存的账号密码。

 

比如远程连接凭据:

 

cmdkey/list

 

navicat:

MySQL

HKEY_CURRENT_USER\Software\PremiumSoft\Navicat\Servers\<your  connection name>

MariaDB

HKEY_CURRENT_USER\Software\PremiumSoft\NavicatMARIADB\Servers\<your  connection name>

MongoDB

HKEY_CURRENT_USER\Software\PremiumSoft\NavicatMONGODB\Servers\<your  connection name>

Microsoft  SQL

HKEY_CURRENT_USER\Software\PremiumSoft\NavicatMSSQL\Servers\<your  connection name>

Oracle

HKEY_CURRENT_USER\Software\PremiumSoft\NavicatOra\Servers\<your  connection name>

PostgreSQL

HKEY_CURRENT_USER\Software\PremiumSoft\NavicatPG\Servers\<your  connection name>

SQLite

HKEY_CURRENT_USER\Software\PremiumSoft\NavicatSQLite\Servers\<your  connection name>

SecureCRT:

xp/win2003

C:\Documents   and Settings\USERNAME\Application Data\VanDyke\Config\Sessions

 

win7/win2008以上

C:\Users\USERNAME\AppData\Roaming\VanDyke\Config\Sessions

Xshell:

Xshell 5

%userprofile%\Documents\NetSarang\Xshell\Sessions

Xshell 6

%userprofile%\Documents\NetSarang  Computer\6\Xshell\Sessions

WinSCP:

HKCU\Software\Martin  Prikryl\WinSCP 2\Sessions

VNC:

RealVNC

HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC\vncserver

Password

TightVNC

HKEY_CURRENT_USER\Software\TightVNC\Server  Value

Password  or PasswordViewOnly

TigerVNC

HKEY_LOCAL_USER\Software\TigerVNC\WinVNC4

Password

 

UltraVNC

C:\Program  Files\UltraVNC\ultravnc.ini

passwd or  passwd2

    

1.8、DPAPI

DPAPI,由微软从Windows 2000开始发布,称为Data ProtectionApplication Programming Interface(DPAPI)。其分别提供了加密函数CryptProtectData 与解密函数 CryptUnprotectData 。

其作用范围包括且不限于:

outlook客户端密码

windowscredential凭据

chrome保存的密码凭据

internetexplorer密码凭据

 

DPAPI采用的加密类型为对称加密,存放密钥的文件则被称之为Master Key Files,其路径一般为%APPDATA%\Microsoft\Protect\{SID}\{GUID}。其中{SID}为用户的安全标识符,{GUID}为主密钥名称。我们可以利用用户的密码/hash或域备份密钥解密主密钥,然后解密被dpapi加密的数据。

相关的介绍如下:

https://docs.microsoft.com/en-us/dotnet/standard/security/how-to-use-data-protection

在渗透中,可以利用mimikatz做到自动化的数据解密:

a、解密Chrome密码:

mimikatz  dpapi::chrome /in:"%localappdata%\Google\Chrome\User Data\Default\Login  Data" /unprotect

b、解密Credential:

mimikatz  vault::cred /patch

    

1.9、域信任

信任关系是连接在域与域之间的桥梁。当一个域与其他域建立了信任关系后,2个域之间不但可以按需要相互进行管理,还可以跨网分配文件和打印机等设备资源,使不同的域之间实现网络资源的共享与管理。

查看域信任:

nltest  /domain_trusts


上述结果显示child.jumbolab.com和jumbolab.com两个域是双向信任的。

    

1.10、域传送

当存在域传送漏洞时,可以获取域名解析记录。当有了解析记录后,也能提高对网络环境的进一步认知,比如www解析的ip段可能在dmz区,mail解析的ip段可能在核心区域等等。

windows:

nslookup  -type=ns domain.com

nslookup

sserver  dns.domain.com

ls  domain.com

linux:

dig  @dns.domain.com axfr domain.com


    

1.11、DNS记录获取

在网内收集dns记录,可以快速定位一些机器、网站。常用工具有Dnscmd、PowerView。

 

a、在windows server上,可以使用Dnscmd工具获取dns记录。

获取dns记录:

Dnscmd. /ZonePrint jumbolab.com

Dnscmd. /EnumRecords jumbolab.com .

b、在非windows server机器上,可以使用PowerView获取。

import-module  PowerView.ps1

Get-DNSRecord  -ZoneName jumbolab.com


    

1.12、WIFI

通过如下命令获取连接过的wifi密码:

for /f  "skip=9 tokens=1,2 delims=:" %i in ('netsh wlan show profiles')  do  @echo %j | findstr -i -v echo |  netsh wlan show profiles %j key=clear

    

1.13、GPP

当分发组策略时,会在域的SYSVOL目录下生成一个gpp配置的xml文件,如果在配置组策略时填入了密码,则其中会存在加密过的账号密码。这些密码,往往都是管理员的密码。

其中xml中的密码是aes加密的,密钥已被微软公开:

https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-gppref/2c15cbf0-f086-4c74-8b70-1f2fa45dd4be?redirectedfrom=MSDN

 

可以使用相关脚本进行解密,如:

https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Get-GPPPassword.ps1

 

域用户登录脚本存在目录也会存在敏感文件:

\\domain\Netlogon

    

1.14、Seatbelt

可以利用Seatbelt工具做一些自动化的信息收集,收集的信息很多,包括不限于google历史记录、用户等等:

这篇关于红蓝对抗之Windows内网渗透的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/839402

相关文章

javafx 如何将项目打包为 Windows 的可执行文件exe

《javafx如何将项目打包为Windows的可执行文件exe》文章介绍了三种将JavaFX项目打包为.exe文件的方法:方法1使用jpackage(适用于JDK14及以上版本),方法2使用La... 目录方法 1:使用 jpackage(适用于 JDK 14 及更高版本)方法 2:使用 Launch4j(

windows端python版本管理工具pyenv-win安装使用

《windows端python版本管理工具pyenv-win安装使用》:本文主要介绍如何通过git方式下载和配置pyenv-win,包括下载、克隆仓库、配置环境变量等步骤,同时还详细介绍了如何使用... 目录pyenv-win 下载配置环境变量使用 pyenv-win 管理 python 版本一、安装 和

Python使用pysmb库访问Windows共享文件夹的详细教程

《Python使用pysmb库访问Windows共享文件夹的详细教程》本教程旨在帮助您使用pysmb库,通过SMB(ServerMessageBlock)协议,轻松连接到Windows共享文件夹,并列... 目录前置条件步骤一:导入必要的模块步骤二:配置连接参数步骤三:实例化SMB连接对象并尝试连接步骤四:

在 Windows 上部署 gitblit

在 Windows 上部署 gitblit 在 Windows 上部署 gitblit 缘起gitblit 是什么安装JDK部署 gitblit 下载 gitblit 并解压配置登录注册为 windows 服务 修改 installService.cmd 文件运行 installService.cmd运行 gitblitw.exe查看 services.msc 缘起

Windows如何添加右键新建菜单

Windows如何添加右键新建菜单 文章目录 Windows如何添加右键新建菜单实验环境缘起以新建`.md`文件为例第一步第二步第三步 总结 实验环境 Windows7 缘起 因为我习惯用 Markdown 格式写文本,每次新建一个.txt后都要手动修改为.md,真的麻烦。如何在右键新建菜单中添加.md选项呢? 网上有很多方法,这些方法我都尝试了,要么太麻烦,要么不凑效

Windows下Nginx的安装及开机启动

1、将nginx-1.16.1.zip解压拷贝至D:\web\nginx目录下。 2、启动Nginx,两种方法: (1)直接双击nginx.exe,双击后一个黑色的弹窗一闪而过。 (2)打开cmd命令窗口,切换到nginx目录下,输入命令 nginx.exe 或者 start nginx ,回车即可。 3、检查nginx是否启动成功。 直接在浏览器地址栏输入网址 http://lo

Windows环境利用VS2022编译 libvpx 源码教程

libvpx libvpx 是一个开源的视频编码库,由 WebM 项目开发和维护,专门用于 VP8 和 VP9 视频编码格式的编解码处理。它支持高质量的视频压缩,广泛应用于视频会议、在线教育、视频直播服务等多种场景中。libvpx 的特点包括跨平台兼容性、硬件加速支持以及灵活的接口设计,使其可以轻松集成到各种应用程序中。 libvpx 的安装和配置过程相对简单,用户可以从官方网站下载源代码

C++实现俄罗斯方块(Windows控制台版)

C++实现俄罗斯方块(Windows控制台版) 在油管上看到一个使用C++控制台编写的俄罗斯方块小游戏,源代码200多行,B站上也有相关的讲解视频,非常不错,值得学习。 B站讲解视频地址为:【百万好评】国外技术大神C++游戏编程实战教程,油管580W收藏,新手10小时入门,并快速达到游戏开发能力(中英字幕) B站 CSDN博主千帐灯无此声还为此写了一篇博客:C++实现俄罗斯方块(源码+详解),讲

Windows下php扩展开发c++动态库

PHP扩展开发,从零了解到初步完成一个小项目,经过三天的仔细研究,现整理如下 一、需求介绍 PHP扩展开发,调用自己之前的c++动态库,完成功能 二、项目之前 系统:windows xp  开发工具:vs 2008 web环境:apache2.4  PHP5.3.29-VC9-ts-x86 aphach和PHP 环境之前已经搭建完成 PHP源码:去官网http://www.php.n

OpenStack镜像制作系列4—Windows Server2019镜像

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录  CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows10镜像 OpenStack镜像制作系列4—Windows Server2019镜像 OpenStack镜像制作系