内网渗透

一、内网环境

工作组

首先,在cmd中输入systeminfo,会有这样一条命令

1
2
3
域:               WORKGROUP
登录服务器: \\LA...8K5
修补程序: 安装了 .. 个修补程序。

WORKGROUP该模式下意味着,任意一台计算机接入网络,都可以访问共享资源,主机间互不管理、关联。

这种情况就是平时同一个局域网下的多台主机的样子,机房。

当然了,如果内网中存在一台运维主机或者堡垒机,安装agent统筹管理也可以实现一个工作组主机的批量控制;类似于机房上课老师用红蜘蛛的那种控制吧。

这个时候,内网渗透的时候就需要挨个对主机渗透

域由来

由于工作组的松散,需要找一个管理者,就引入了域,至少有一台主机(域控DC)对其他主机负责(存储它们的凭证、域计算机列表等信息)。

这个时候呢,主机A想连入域范围,DC先通过 域计算机列表,看A在不在里面,在的话,进一步验证A提供的用户名是否在域内存在,以及密码是否正确;都通过了才可以允许A以登录用户身份去访问DC上有权限保护的资源;否则以域外普通主机访问域对外开放资源

为了方便管理各个主机;比如有1000个主机需要安装某个软件,总不可能让工作人员对这1000个都安一边;或者说有人辞职了啊,TA平时的用的主机,那些信息是不是要处理一下,然后给新来的腾出空间。

总之一句话,域是为了下发任务和统一管理

此时渗透的话,拿到任意一台域内主机(非DC),net view就可以知道其它域内主机名称,可以进一步横向,一般目的都是拿DC的权限

差点有个东西忘了写,那么什么样的主机可以用做域呢?win10?

以前虚拟机搭建的时候,会遇到这样几个名字 Windows Server 2008 R2、Windows Server 2022,它们专门用来做域服务器的

域的创建、加入 https://www.cnblogs.com/lsdb/p/11412472.html

域树和域森林

不想细看,树的话理解为根域名和子域名的树关系(数据结构的那种树);森林,嗯,树组成的;其主要作用就是一般通过DNS定位域控位置

安全域划分

以书中的安全域图为例

3个网络区域:

DMZ区:门户网站等web站点,处理内外交互

网银区:为网上银行提供服务基础,根据不同交易需求进行相应数据处理与交互

核心区:内网办公人员办公网络端区、内部研发生产区、管理信息系统(MIS)和决策支持系统(DSS)核心区

由图可知,DMZ区与网银区是两个子域,各自独立;仅允许外部网络访问DMZ区和网银区

渗透内容一般都是通过DMZ或网银区某个主机进行横向、扩展到其它域环境

难度嘛,大大滴,APT这种高级持续威胁针对的一般就是内网环境

利用场景一览

众所周知,域用户权限很低,安装个什么玩意儿都不行,比如弹出 用户账户控制,TA只能联系管理员去帮忙安装,管理员用域管理身份登录到域成员主机,这个时候TA搞点事情,切换到本地计算机的管理员身份并登录,用mimikatz直接从内存中爬取到域管理员密码

一般思路就是,定位到域控IP和域管理员账号,找出域管理员登录过的其他主机IP,从这些其他主机IP的内存中dump除域管理员密码,拿下域控

基础操作

判断是否是域:

1
2
net user /doamin
net view /domain

定位域:

在登录到域成员主机的情况下,进行

1
2
3
4
#得到域控名
net time /domain #或者 net group "domain controllers" /domain

ping 域控名 #得到域控ip

定位域管理员:

1
net group "domain admins" /domain #一般是Administrator,后续的提权步骤也可以通过其他漏洞,添加域管理员

查看已启动服务:wmic startup get command,caption

工具介绍

敏感密码信息获取——mimikatz

一般在使用工具之前,可以先使用 cmdkey /list,查看是否有保存的凭据

我看视频里,貌似都是用cs上线,它自带很多插件,这样抓取密码很方便,包括提权、横向渗透这种;cs我确实用得少,改天找个靶场练一练

BloodHound可视化AD环境中的关系,了解用户对计算机的权限啊、组成员信息等;我记得htb赛季4,GPO漏洞利用时,有师傅用这个工具,筛选出来了GPO的成员,进而GPO提权。总之,类似于net group什么的命令啊,它都整合了,细节列的明明白白

思考

域成员登录主机,软件安装,N,因为受到了域控的管制

本地用户登录主机,软件安装,Y

所以在域成员主机中尝试新建一个用户并登录,应该不受域规则影响了,但是出不出网不一定,你不知道它是仅用防火墙设置了,还是说有其他配置

隧道技术,主要是协议问题,能登qq,但是不能访问网页,需要进行一个协议转换,一般是绕防火墙,就用隧道技术

代理技术,解决网络不可达问题,网络通讯问题

你比如一个msf后门,开放了所有端口,如果对于出站来讲,防火墙将所有端口禁用

防火墙服务器搭建网站,别人访问,走的入站

本机执行后门,走的入\出站,取决于正方向代理,是跳板/反弹

组策略对象同步,一般是域创建一个GPO链接到防火墙设置,禁用出站所有端口的规则;其下的域主机进行gpupdate /force即可完成同步

那怎么办呢,如果我们拿到了一个shell,想要上线控制,根据出站规则,所有tcp端口被禁用了。

解决办法:正向连接 or 隧道技术,所以一般就是将tcp协议数据封装成icmp协议数据

具体为:

B出站TCP被禁用,但入站没有,且不出网?

A:采用正向连接(首先拿到一台A(能与B通信,且有网)),通过A控制B

B出站TCP被禁用,但入站没有,且出网?

A:正向连接 or 隧道技术(走其他协议啦)

隧道技术的前提还是要:**拿到shell,且是系统管理员权限(所以要提权)**,所以隧道技术本质还是一个为了方便控制和上线的目的

工具一般是pingtunnel,后门木马用msf和cs都可以

需要注意的是生成的木马ip需要是127.0.0.1,端口为x;且监听时的端口为y

端口的转换是靠目标机运行pingtunnel工具将端口x转换到y上的

技术图解

无墙情况下

1
2
3
4
5
6
7
8
graph LR
Internet[互联网]-->|"A的外网出口为2.2.2.2"| A[攻击机A] -->|"win7 外网出口192.168.1.7
内网192.168.11.2"| B[B]

B -->|"win10 192.168.1.8
192.168.22.5"| C[C]
C -->|"win2008 192.168.22.6
192.168.33.4"| D[D]--> |"win2012 192.168.33.5"| E[E]

AB有外网

CDE全内网的

https://www.bilibili.com/video/BV1Ay4y1K7X6?p=123

拿到权限后,一般要实现上线,cs&msf

这里拿到权限的细节不讲,只讲上线

1.首先B这个webshell,已经拿到吧,cs上线成功;

以B和C为例,为了上线C,是需要将工具传到C,再反弹过来,在B上做C的操作,但是嘞,有风险且复杂;上线的目的,就是一切操作都交给攻击机,而不是跳板

2.通过B作为跳板建立正向连接,连到C

假设用的是msf木马,这个时候因为c有两张卡,msf是需要做路由的

1
2
3
4
5
6
7
8
9
10
#在kali下
background
run post/multi/manage/autoroute
run autoroute -p #这个是将B的所有网卡都弄到手,其中有一个通向C的路由

#建立socks节点
use auxiliary/server/socks_proxy
#就像是kali里,为什么proxychains firefox ...就可以打开一样
#cs直接右键代理转发就行
#代理工具,windows用proxifier,kali用proxychains

3.现在就等于用代理工具可以访问到C了,通信问题解决,然后通过漏洞拿到C的shell忽略不计

4.反正目前是kali的msf或者cs已经连到C了,接下来去D,不出网,只能 正向连接

所以重复第2步了,先确认通信(proxy),再拿shell,再正向木马->更新路由->再建立新节点(确认通信),再拿shell->再正向木马,循环即可

这里再讲清楚一下正向:

以A和B为例,B将流量转移到自己的本地x端口,而A去主动连接到B的x端口

反向:

B将流量转移到远程A的y端口,A去监听y端口

http://t.csdnimg.cn/yJw0z

1
2
3
4
5
6
7
8
9
10
11
graph LR
Internet[互联网]-->|"A的外网出口为2.2.2.2"| A[攻击机A] -->|"win7 外网出口192.168.1.7
内网192.168.11.2"| B[B]

B -->|"win10 192.168.1.8
192.168.22.5"| C[C]
C -->|"做入站规则限制,只让访问web服务,让正向连接失效
win2008 192.168.22.6
192.168.33.4"| D[D]--> |"
做入站规则限制,只让访问打印机服务,让正向连接失效
win2012 192.168.33.5"| E[E]

https://www.bilibili.com/video/BV1Ay4y1K7X6?p=124

ARP欺骗

kali告诉目标机说,别怕,我是网关!这是单向

如果kali再告诉路由器说,别怕,我是靶机!这就是双向

所以单向一般就是让目标机得不到响应

双向可以起个中间人作用截获篡改数据

工具:科来数据包生成器

https://www.bilibili.com/video/BV1Ay4y1K7X6?p=139

AD(活动目录)

定义:AD存储了网络对象的信息,管理员和用户可以方便查找这些信息

网络对象:用户(组)、计算机、域、组织单位

功能:计算机管理、用户服务、资源管理、桌面配置、应用系统

AD只是用来管理,不是认证

图来源https://www.cnblogs.com/lsdb/p/11412472.html

windows两种认证机制

NTLM

其加密过程,将明文密码十六进制->unicode编码->MD4加密

挑战/质询——认证方式

  1. 协商:这一步是版本兼容问题,双方交流各自的支持版本

  2. 质询:

    a.客户端将自己的主机信息(必须有用户名)请求发送给服务端

    b.服务端根据这个用户名去自己的数据库找对应的NTLM Hash;服务端生成一个16位随机数,称之为Challenge(挑战,16位随机字符);用这个找到的Hash去加密Chanllenge生成了Challenge1;同时将,Challenge发送给客户端

    c.客户端拿到Challenge,在客户端输入完明文密码后,操作系统将明文密码转换成NTLM Hash,加密这个Challenge,作为Response(响应),发回给服务端

    d.服务端将Challenge1和Response做比较,相等就通过

    PS:这个Challenge1和Response啊,都是一种Net-NTLM Hash形式

Pass the Hash (哈希传递)

定义:不需要明文密码完成认证的技术

条件:知道被传递认证的用户名和NTML Hash

原理:已知,最终认证通过是凭借Challenge1和Respoonse的比对;这边只要获取到发过来的一个Challenge,再利用已知的NTLM Hash加密,就可以通过认证

工具:crackmapExec|smbexec

Kerberos域认证体系

不怕中间人攻击,基于可信的第三方认证服务,通过类似于对称加密的共享密钥执行认证服务

三主体:Client、Server、KDC(密钥分发系统)=DC(域控)

KDC包含:AD(账户数据库,存在于这个白名单的client,才会获得TGT)、AS(为client生成TGT的服务)、TGS(为client生成某个服务的ticket)

粗略的过程:client向KDC请求两次,向server请求一次

  1. client向kdc请求,想获取访问server的权限;这一步其实是访问AS,它需要通过AD判断client是否是白名单的,是的话,就返回给一个TGT;这一步是判断client是否值得信赖
  2. client继续向kdc请求;TGS通过这个上交的TGT啊,确认了这个client有权限,就给它一个访问server的权限ticket
  3. client拿到ticket,可以访问特定的server了

细分

黄金白银票据

每次看kerberos协议的时候,我老头疼,看不进去

二、攻击流程

2x01 入侵手段

网络杀伤链:

侦察、武器化、载荷投递、漏洞利用、安装植入、命令和控制,目标达成

上面也不需要解释了,就是漏洞发现、漏洞利用的细化

攻击面的手段 :

https://attack.mitre.org/ ATT&CK

https://media.defense.gov/ NTCTF

入侵声明周期:探索发现(poc)、入侵感染(exp)、探索感知(熟悉shell)、传播(横向)、持久化(后门)、攻击和利用(破坏+窃取)、恢复(痕迹清理)

后门:方便下次快速登录

反虚拟机、反沙箱检测

文件检测、延迟启动(时间对抗)、进程检测等

https://www.freebuf.com/articles/system/202717.html

参考

1.小迪

https://www.cnblogs.com/cute-puli/p/15510271.html

2.《内网渗透实战攻略》https://chuangshi.qq.com/read/49070865/10

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2023-2025 是羽泪云诶
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信