内网渗透

第二章 内网信息收集

自动收集本地信息

自己编写的test.bat脚本文件,只需在后渗透过程中导入该文件到靶机,并执行即可。具体脚本解释参考PDF笔记。

@echo off
echo ###############网卡信息############### >1.txt
ipconfig >>1.txt
echo ##############操作系统版本信息################ >>1.txt
systeminfo | findstr /B /C:"OS Name" /C:"OS Version" >>1.txt
systeminfo| findstr /B /C:"OS 名称" /C:"OS 版本" >>1.txt
echo ##############CPU架构信息################ >>1.txt
echo %PROCESSOR_ARCHITECTURE% >>1.txt
echo ##############服务列表信息################ >>1.txt
wmic service list brief >>1.txt
echo ##############进程列表信息################ >>1.txt
wmic process list brief >> 1.txt
echo ###############用户名信息################### >>1.txt
wmic useraccount get name,SID >>1.txt
echo ##############端口信息################ >>1.txt
netstat -ano >>1.txt
echo ##############RDP端口信息################ >>1.txt
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Winstations\RDP-TCP" /V PortNumber >> 1.txt
echo ##############ARP端口信息################ >>1.txt
arp -a >> 1.txt

注意右键单击session中的sleep,设置休眠时间为1,不然运行命令要休眠很久。

image-20241002171433871

对win2008右键explore中的File Browser

image-20241002170454288

上传该文件到靶机。

image-20241002170658254

执行这个bat脚本文件。

image-20241002171528960

查看输出文件内容,可以查看到所有的信息。

image-20241002171636265

除此之外也可以使用pdf笔记里面的其他脚本,把这些代码复制到bat执行即可生成一个网页文件。查看这个网页文件输出的本地信息更加标准化。

image-20241002171838627

内网IP扫描技术

NetBios该程序对给出范围内的每一个地址发送NetBIOS状态查询,并且以易读的表格列出接收到的信息,对于每个响应的主机,NBTScan列出 它的IP地址、NetBIOS计算机名、登录用户名和MAC地址。

用cs上传该扫描程序到靶机(winserver2008)上。

image-20241002193300454

扫描出所有的内网ip存活的主机。

image-20241002193602814

同理可以把arp.exe文件上传到靶机。然后在cs执行该内网ip扫描文件

image-20241002194225835

kscan是一款资产测绘工具,可针对指定资产进行端口扫描以及TCP指纹识别和Banner抓取,在不发送更多的数据包的情况下尽可能的获取端口更多信息。并能够针对扫描结果进行自动化暴力破解, 且是go平台首款开源的RDP暴力破解工具

同理上传到靶机,然后通过cs执行扫描内网ip

image-20241002194919317

可以扫描出ip和对应的操作系统。

image-20241002195126664

fscan一款内网综合扫描工具,方便一键自动化、全方位漏扫扫描。支持主机存活探测、端口扫描、常见服 务的爆破、ms17010、redis批量写公钥、计划任务反弹shell、读取win网卡信息、web指纹识别、 web漏洞扫描、netbios探测、域控识别等功能。

同理上传到靶机,cs运行即可。

image-20241002195415147

可以看到哪些内网主机活着,以及对应的哪些端口有开放。

image-20241002195438918

并且也扫描出两个内网主机的操作系统类型。

image-20241002195530053

ladon一款用于大型网络渗透的多线程插件化综合扫描神器,含端口扫描、服务识别、网络资产、密 码爆破、高危漏洞检测以及一键GetShell.当然该工具其实功能很多,具体可以参考pdf笔记文档。

同理上传到靶机,cs运行即可。

image-20241002200107400

扫描出的内网ip如下。

image-20241002200117719

内网端口扫描技术

ScanLine是一款windows下的端口扫描的命令行程序。它可以完成PING扫描、TCP端口扫描、UDP端口扫描等功 能。运行速度很快,不需要winPcap库支持,应用场合受限较少。

将这个程序上传到靶机,然后运行。

扫描出server2008靶机有三个端口

image-20241003174756459

也可以这么扫描。

image-20241003175111098

第二种使用telnet协议进行端口探测。

Telnet协议是TCP/IP协议族的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算 机上完成远程主机工作的能力。在目标计算机上使用Telnet协议,可以与目标服务器建立连接。如果只是想快速探 测某台主机的某个常规高危端口是否开放,使用telnet命令是最方便的

由于靶机没有telnet命令,需要安装服务端和客户端。

image-20241003175334695

如果直接使用telnet探测一个没有开放的端口会连接失败。由于cs还是识别不出telnet命令,于是只能在靶机演示端口扫描。

image-20241003175733677

RedTeamTool中有一个本地端口扫描的工具portscan.exe,上传该文件到靶机。

该命令是扫描本机1-5000的端口是否开启。

image-20241003180249106

PowerSploit是一款基于PowerShell的后渗透框架软件,包含了很多PowerShell的攻击脚本,它们主要用于渗透中 的信息侦测,权限提升、权限维持等。

首先需要把该模块的这个文件,放入到靶机。

image-20241003180510849

于是即可通过powershell命令执行端口扫描。

image-20241003183109725

比如扫描出192.168.15.1的端口有哪些是开放的。

image-20241003183318380
image-20241003183421271

除了可以本地执行,也可以使用PowerSploit进行远程扫描。kali先把这个扫描的脚本放到一个目录,然后在当前目录启用http服务。

image-20241003193227689

可以从kali本机获取powerSpolit的扫描脚本信息,然后运行。

image-20241003192939186

扫描结果。

image-20241003193119953

也可以使用Nishang进行端口扫描。

首先执行该命令确保powershell可以导入脚本模块。

image-20241003193454099

Nishang是一款针对PowerShell的渗透工具。说到渗透工具,那自然便是老外开发的东西。国人开发的东西,也不 是不行,只不过不被认可罢了。不管是谁开发的,既然跟渗透有关系,那自然是对我们有帮助的,学习就好。来源 什么的都不重要。总之,nishang也是一款不可多得的好工具。非常的好用。

由于nishang运行,不是单独一个exe文件,而是整个文件夹,所以上传nishang.zip压缩包到靶机。

image-20241003194110745

在上传解压缩的exe文件。

image-20241003194216945

解压压缩包。

image-20241003194300912

由于winserver2008运行有误,于是把该文件放到winserver2012则可以实现成功。

image-20241003194623610

扫描结果如下,但是这里没有完整运行成功。

image-20241003200828696

KScan也可以拿来扫描端口

image-20241003201325610
image-20241003201303997

fscan扫描端口

image-20241003201417410
image-20241003201446394

域内基础信息收集

具体的知识点还是要查看pdf文档。

==注意:加过域的主机,system用户可以看作域用户,可以查看域信息,而本地管理员不能查看域信息,但是有的时候需要降权到administrator来查看一些本地信息,这是system用户做不到的。==

可以使用whoami查看用户信息,比如下面这个就是域控管理员。

image-20241003233537341

判断域存在的方法

可以查看dns信息来看是否加入域。

image-20241003233658682

然后通过反向解析查询是否dns服务器和域控制器是一台机器。

image-20241003233808126

也可以这么查看是否加入域。

image-20241003234040485

也可以这么查看,如果查看失败显示找不到域控,则说明未加入域。

image-20241003234140120

net view显示域列表、计算机列表或指定计算机的共享资源列表。

这里域中的共享资源列表没查到。如果不加/domain,则表示查看本地的共享资源。

image-20241003234500348

可以使用net user创建用户

image-20241003234921285

查看本地的用户。

image-20241003235021563

查看域的用户有哪些,只需加个/domain

image-20241003235051620

Net Use 作用:连接计算机或断开计算机与共享资源的连接,或显示计算机的连接信息。

这里查看连接信息为空。当然除了查看连接信息,也可以拿来远控。

image-20241003235319361

查看本地组的信息。

image-20241003235530874

可以进一步查看某个组里面的用户有哪些

image-20241004000103314
image-20241004000135400

查看域用户组

image-20241004000308749

查看域用户组的具体用户

image-20241004000520773

查看域的所有计算机

image-20241004001528127

获取域密码信息,获取域密码策略、密码长度、错误锁定等信息

image-20241004001728829

获取域信任信息。

image-20241004001855508

查找域控制器

查找域控制器的机器名

image-20241004125856518

获取域控制器机器名后,然后使用nslookup反向解析获取ip

image-20241004125942886

在通常情况下,时间服务器为主域控制器。这样也可获取域控制器的机器名。

image-20241004130106747

查看域控制器组中有哪些域控制器的主机,因为一般情况下域控制器可能会有主备的情况,所以这样查最好。

image-20241004130228646

查找域内用户

当对一个命令不熟,可以在后面加上/?来作为提示。

image-20241004134802123

可以通过wmic命令获取域用户的详细信息

image-20241004134932974
image-20241004135007577

简要查询域用户信息。

image-20241004135057200

还有别的方式,比如执行如下命令,可以看到,域内用户(server机器有这个命令)

image-20241004135205738

也可以查看域有哪些ou组织单元。

image-20241004135241199

查询域管理员用户

image-20241004135411296

定位域管理员

当查询到域管理员的账户,就需要定位域管理员登陆的域计算机在哪里。

接下里使用psloggedon.exe工具,它可以显示本地登录的用户和通过本地计算机或远程计算机的资源登录的用户。如果指定了用户名 而不是计算 机,psloggedon.exe 会搜索网络邻居中的计算机,并显示该用户当前是否已登录。

把工具上传到靶机。

image-20241004143659478

可以指定计算机名,去查询哪些用户登陆过该计算机。

image-20241004144724989

也可以指定用户登录过哪些计算机。但是以上两个操作复现失败。工具扫描不出。

image-20241004144751354

接下里使用另一个工具,pveFindADUser.exe 可用于查找 Active Directory 用户登录的位置,枚举域用户,以及查找在 特定计算机上登录 的用户,包括本地用户、通过RDP 登录的用户、用于运行服务和计划任务的用户账 户。运行该工具的计算机需要 具有.NETFramework 2.0,并且需要具有管理员权限。

该工具有个缺陷需要.NETFramework 2.0,所以在域控制器上运行不了。

可以查看当前主机有哪些用户登录,这里查找到jack域管理员登陆过该主机。

image-20241004145811583

netview.exe 是一个枚举工具,使用 WinAPI 枚举系统,利用NetSessionEnum找寻登陆会话,利NetShareEnum 找寻共享,利用NetWkstaUserEnum枚举登陆的用户。同时,netview.exe 能够查询共享入口和有价值的用户。 netview.exe的绝大部分功能不需要管理员权限就可以使用。

也可以使用该工具来扫描域中的主机被哪些用户登录。比如指定hack域下的主机被谁访问过,但是这个工具什么都没扫描出来。

image-20241004150703114

PowerView 脚本中包含了一系列的 powershell 脚本,信息收集相关的脚本有 Invoke-StealthUserHunter、 Invoke-UserHunter 等。

将脚本放到靶机,然后运行。

image-20241004151620606

于是即可查找到域管理员登陆过192.168.15.140

image-20241004151528714
image-20241004151603031

Powershell基础

Powershell 是运行在windows机器上实现系统和应用程序管理自动化的命令行脚本环境。你可以把 它看成是命令行提示符cmd.exe的扩充,不对,应当是颠覆。 powershell需要.NET环境的支持,同 时支持.NET对象。微软之所以将Powershell 定位为Power,并不是夸大其词,因为它完全支持对 象。其可读性,易用性,可以位居当前所有shell之首。

可以列举文件,按名字排序,并按照表格形式输出。

image-20241004161349301

写入内容到文件,并查看。

image-20241004161510519

可以使用powershell执行cmd的命令

image-20241004161557002

powershell内部命令很多,可以查看pdf

Powershell一般初始化情况下都会禁止脚本执行。脚本能否执行取决于Powershell的执行策略

image-20241004161843648

四种权限的解释

image-20241004161854754

随便写一个简单脚本。然后运行。

image-20241004162003674
image-20241004162050504

也可以设置脚本的运行策略。

image-20241004162111555

powershell收集域内信息

PowerSploit是GitHub上面的一个安全项目,上面有很多powershell攻击脚本,它们主要被用来渗 透中的信息侦察、权限提升、权限维持。

powerview也是一款非常的powershell脚本工具,用于域内信息的收集。他集成在在 PowerSploitmaster\Recon目录下。

首先把powerview.ps1脚本上传到靶机。

但有的脚本可能无法查看有什么命令,有的脚本则可以,像下面这个就没有显示。当然具体这个模块有什么命令,可以查看pdf笔记。

image-20241004172339908

比如查看有什么网络共享资源。

image-20241004172517708

除了本地执行这个脚本,也可以远程执行,kali将脚本放置一个目录下,然后在该目录开启http服务。

image-20241004172716376

远程执行也可以。

image-20241004173023862

除此之外,也可以把脚本放到本地cs来运行。把脚本放到cs的根目录下。

image-20241004173223284

使用cs自带的导入命令,即可从cs根目录导入powershell的脚本文件。

image-20241004173317302

这样该脚本就被导入到cs中,那么cs就可以直接使用该脚本的命令。

image-20241004173423278

也可以通过该脚本的命令直接获取域控制器的ip。

image-20241004173737286

接下里讲另外一个工具nishang,首先将整个Nishang工具包上传到靶机。

由于winserver2008无法直接在cs修改脚本运行策略,而winserver2012可以,所以这里再winserver2012运行。

image-20241004174927795

于是即可查看到很多可以用的命令。

image-20241004175022840

检查是否是虚拟机

image-20241004175236140

查看该靶机主机的详细信息。

接下来通过导入到cs,首先需要把nishang目录放到cs根目录下,然后导入后即可执行命令

image-20241004180747194

抓取该主机的用户密码信息

但是目前抓取的密码信息为空。后续章节来填坑。

image-20241004181034132

第三章Windows认证和密码的抓取

Windows网络认证之基于挑战响应认证的NTLM协议

首先确保server2012清空所有的网络连接。

image-20241005130815190

把这个工具的整个目录上传到靶机server2012

image-20241005132336131

使用该模块的一个函数来抓取NTLMV2认证的数据。

image-20241005132630754

于是server2012(192.168.15.140)开始连接server2008(192.168.15.145)

账号是jack,密码是被擦除的那段。

image-20241005131054921

于是当连接开始,就会抓取到这个NTLMV2的数据。

image-20241005132720404

于是即可使用hashcat暴力破解密码。

首先准备密码本

image-20241005133200899
image-20241005133120001

并且把哈希值放入到一个文件中。不然可能会出写命令过长,无法执行的情况。

image-20241005133909285

-m参数指定要爆破的类型,其中5600是NTLMV2的哈希值。

image-20241007170545636

开始爆破

image-20241005134738335

于是密码被爆破出来了。

image-20241005134820960

黄金票据利用

黄金票据主要是用于权限维持的,比如当域控制器的后门被删除后,并且域控管理员被修改密码,可以使用黄金票据绕过AS的验证,伪造票据TGT进行验证。从而再次上线后门文件到域控制器上。

image-20241005191853450

首先获取到域的SID号,前面都是SID,最后面的500是UID。

image-20241005192248582

获得域名称。

image-20241005192519364

使用mimikatz导出krbtgt用户的ntlm hash

image-20241005192753422
image-20241005192835716

假设此时192.168.15.140(域控制器被管理员发现,并把后门删除了,失去了控制)

image-20241005193039172

此时即可利用上面三个关键信息来生成黄金票据TGT。

右键点击Access中的golden Ticket。生成黄金票据。

==注意:需要system用户才能复制后门文件到域控。==

image-20241005193309020

这里显示创建成功。

image-20241005193406328

于是即可使用黄金票据来绕过kerberos的网络验证,来查看域控的c盘内容。

image-20241005193512341

紧接着利用server2008靶机把后门传入到域控制器上。

由于server2008的jack用户不能复制,需要提权成system用户才能复制文件到域控制器。

image-20241005193922856

创建一个计划任务

image-20241005194126450

运行计划任务。

image-20241005194216592

于是又可以控制域控制器了。

image-20241005194238850

白银票据利用

服务账号就是计算机名字+$用来管理服务的账号

如果说黄金票据是伪造的TGT,那么白银票据就是伪造的ST。 在Kerberos认证的第三步,Client带着ST和 用户信息向Server上的某个服务进行请求,Server接收到Client的请求之后,通过自己的server密码,解密ST, 从而获得 Session Key。通过 Session Key 解密 用户信息,进而验证对方的身份,验证成功就让 Client 访问 server上的指定服务了。所以我们只需要知道Server用户的Hash就可以伪造出一个ST,且不会经过KDC,但是伪造的 门票只对部分服务起作用。

白银票据的好处在于可以绕过整个KDC,即哪怕krbtgt改密码,也不受影响,但是服务改密码会受影响。缺点在于只能访问某个服务器的某个服务,而黄金票据可以使用所有的服务。

==注意服务的NTLM哈希和域管理员的NTLM哈希不是一个东西。==

伪造白银票据的五个条件。

image-20241005212705030

获取域sid.

image-20241005214933078

获取域名。

image-20241005215014950

获取服务账号的ntlm hash值

image-20241005215257071
image-20241005215330328

首先server2008删除所有票据。

image-20241005215915527

如果直接想要得到krbtgt的NTLM哈希是得不到的。

image-20241005220019511

伪造白银票据

image-20241005220101885

此时重新执行查询krbtgt的NTLM哈希。原因在于伪造了白银票据,开放了其中的LDAP服务,那么就可以随便的使用域控制器中的LDAP服务,那么自然也就可以查找这个NTLM哈希。

那么获得了该账户的哈希,那么就又可以构造黄金票据了。

image-20241005220156227
image-20241005220228787

Mimikatz介绍和离线抓取sam文件

Mimikatz是法国人benjamin开发的一款功能强大的轻量级调试工具,但由于其功能强大,能够直接读取 WindowsXP-2012等操作系统的明文密码而闻名于渗透测试,可以说是渗透必备工具,mimikatz可以从内存中提 取明文密码、哈希、PIN 码和 kerberos 票证。 mimikatz 还可以执行哈希传递、票证传递或构建黄金票证。如今mimikatz已经内置到cs上。

比如可以把让mimikatz提权。这样可以使用的命令会更多。

image-20241007135542486

也可以mimikatz运行文件。

image-20241007135748779

mimikatz有很多命令,具体参考pdf文档。

离线抓取sam文件

可以使用reg命令无工具导出

image-20241007140039816

导出的两个文件就是sam的密码文件。

image-20241007140059199

把这两个文件右键download下载到kali.

image-20241007140436289

在cs的download目录下的这两个文件就是下载的sam文件。

image-20241007140522268

于是即可把这两个文件下载到本地去读取,并把名字修改。使用mimikatz工具读取。

image-20241007141541189

读取sam文件。

image-20241007141313011

于是即可读出本地管理员的密码哈希。

image-20241007141633367

在线读取sam和lsass文件

在线读取sam文件,sam存放的是密码加密后的内容。

由于mimikatz在cs不能直接执行这三个命令,这三个命令同时执行才能成功。所以只能借助传入mimikatz工具到靶机。

image-20241007144107644

获得管理员的密码哈希。

image-20241007144223522

在线读取lsass文件,lsass文件的是密码明文内容。

image-20241007144402871
image-20241007145125576

离线读取lsass文件

离线读取lsass文件会更好,这样获取到lsass文件后,基本上就能读取到明文密码,在线使用工具读取可能会失败。并且工具可能会被杀软干掉。

离线读取有几种方式。

其中第一种使用任务管理器。前提条件可以远程连接靶机。

找到lsass进程,右键创建转储文件。保存到硬盘上,然后下载到本地读取。

image-20241007153625759
image-20241007153743865
image-20241007153804798

第二种方式,使用procdump 导出lsass.dmp文件

ProcDump 是一个命令行实用工具,其主要用途是在管理员或开发人员可用于确定峰值原因的峰值期间监视 CPU 峰值和生成故障转储的应用程序。 ProcDump 还包括使用窗口挂起 (使用相同的窗口挂起定义,Windows任务管 理器使用) 、未经处理的异常监视,并且可以根据系统性能计数器的值生成转储。 它还可用作可在其他脚本中嵌入 的常规进程转储实用工具。==因为是微软的所以一般不会被杀软杀掉。==

上传该工具到靶机上。

image-20241007154040935

使用该工具把lsass进程的内容转储到磁盘中。

这个工具运行失败,可以换成system用户来运行。

image-20241007155229454

于是可以使用kali下载到本地。

image-20241007155324500

第三种方式,使用PowerSploit 的Out-MiniDump模块,PowerSploit是一个基于 Powershell 的渗透工具包,可以选择创建 进程的完整内存转储。

把这个powershell脚本放到cs的根目录,并加载。

image-20241007160616945
image-20241007163224186

把lsass进程内存的数据转储到磁盘上。

image-20241007160632448
image-20241007160722004

第四种方式,comsvcs.dll,系统自带。通过comsvcs.dll的导出函数MiniDump实现dump内存

该方式没有复现成功。

image-20241007162122984
image-20241007162133017

根据以上四种方式随便其中一种获取到lsass.dmp文件,于是即可使用mimkatz读取。

image-20241007163423755

先指定要读取的文件是lsass_544.dmp,然后读取里面的内容。

image-20241007163716434

不过读取的明文密码为空,可能是dc安全性比较强,但是win2008是可以读取明文密码的。

image-20241007163830524

hashcat暴力破解NTLM Hash

该命令可以查看用户的NTLM哈希值。

image-20241007170744384
image-20241007170811848

-m 1000专门用于破解NTLM哈希值。

image-20241007171129788

将其中的NTLM哈希取出来,然后即可开始爆破,其中1.txt是字典。

image-20241007170939928

于是密码被爆破出来了。

image-20241007171015770

除此之外可以使用在线网站或者彩虹表来暴力破解。

游览器、数据库等其他密码的抓取

当执行这个程序的时候,就会抓取所有的游览器数据。

image-20241007175244457

会把抓取的密码、cookie、书签、以及历史记录全部保存在result目录下。那么可以把这个文件上传到靶机去运行抓取数据。

image-20241007175314227

SharpDecryptPwd工具可以抓取数据库的账号和密码。

image-20241007175626540

可以抓取常见sql的账号和密码。

image-20241007175546522

这是能抓取数据库的常见使用方法。

image-20241007175719600

Windows RDP凭证的抓取和密码破解

破解原理:Credentials的解密是Windows系统信息收集中非常重要的一环,其中包括各类敏感、重要的凭证(这个可以理解为密码),接下来我们就讲解RDP凭证的抓取和破解在我们点击保存密码后,Windows就通过MasterKey将我们的密码加密后保存在本地,由于Windows还需要解密 从而使用,所以这个过程是可逆,也正因为这一缘由,我们只要拿到MasterKey就能将密码解出来。

server2008远程连接域控制器。

image-20241007203443331

此时server2008可以查找到RDP的凭证,这个凭证显示使用域管理员进行登录。

image-20241007203558589

首先使用在线破解的方式,不过该方式易于被杀软发现。

于是查找RDP凭证文件,复制其凭证文件名。

image-20241007205338429

查找这个凭证masterkey的guid号。

image-20241007204535119
image-20241007205504050

查找内存中的masterkey。

image-20241007205624044

找到指定guid的masterkey,把这个key复制下来。

image-20241007205704392

最后打开mimikatz通过MasterKey值去解密凭据文件

image-20241007205908607

于是即可获得密码。

image-20241007210305377

第二种方式是离线破解,由于我们不能保证我们的mimikatz是免杀状态,为了避免被对方发现,我们可以离线解密从而达到获取密码的目 的其实很简单,就是把目标的文件和内存下载回来,在本机上进行mimikatz解密即可。

首先将procdump工具上传到靶机,这个工具是微软自己做的,所以很难被杀软干掉。

image-20241007210549079

将lsass.exe的内存数据保存到当前目录。

image-20241007210732213

下载这个内存数据和RDP凭证文件。

image-20241007210916963
image-20241007211020056

把两个文件放到本地,凭证文件由于是隐藏文件,所以这里没有看到,实际上已经在该目录下。

image-20241007211301305

用mimikatz载入dump回来的内存

image-20241007211413868

获取Credentials的GUID

image-20241007211540038

获取内存中所有的MasterKey

查找到对应的masterkey

image-20241007211633315

利用masterkey解密得到密码

image-20241007211839967

Server2012之后抓取密码的方式

使用logonpasswords是无法直接查看到server2012及以后操作系统的明文密码。

在Windows2012系统及以上的系统,默认在内存缓存中禁止保存明文密码的。攻击者可以通过修改注册表的方式 抓取明文,需要用户重新登录后才能成功抓取。

需要修改注册表,让其允许保存明文密码。

image-20241007230905449

但是需要锁屏,注册表修改,必须让用户重新登陆这个主机才能生效。

image-20241007231036441

那么域控管理员需要重新登陆。

image-20241007231323292
image-20241007231358436

当然还有另一种方法,可以锁屏。首先查询这个会话id。

image-20241007231814496

然后关闭这个会话,就会锁屏

image-20241007231927556

第四章 内网横向移动

利用向日葵横向移动

由于此向日葵版本过老,未复现成功。

首先把向日葵上传到靶机,这个向日葵必须是指定版本的。

image-20241008114334192

先分析点击这个向日葵,会弹出这个框,点击暂不安装

image-20241008114425488

当点击这个按钮后,注册表会自动生成一些内容。

image-20241008114602955

那么有了注册表的这些内容,就会使得下次打开向日葵不会出现安装弹窗,那么思路就是在黑客上传该文件之前,把注册表先写入到计算机,这样就可以运行向日葵而不出现安装弹窗。

那么右键可以导出这个注册表信息。下次只需点击注册表文件,即可导入注册表内容。那么就可以绕过安装界面。

image-20241008115115961

所以只需在靶机上传注册表文件提前运行,然后上传向日葵运行即可成功。

image-20241008115933168

查看向日葵的配置信息。

ency_pwd就是远程连接的密码,但是被加密了,向日葵11版本是可以进行解密的,后续高版本比较麻烦。

image-20241008120453227
image-20241008120103944
image-20241008120439151

使用python工具进行解密。于是即可用向日葵实现远控

image-20241008121815071

利用todesk横向移动

==todesk只能用旧版来做这个实验。并且要注意server靶机能够连外网,且dns服务器能正常实验。且账户必须是默认的administrator.现在新版的todesk每次开启进程都会刷新其中的配置文件的临时密码,并且旧版已经不能连接了,所以已经没法复现这个漏洞了==

todesk远控工具可以静默安装。所以黑客可以把todesk上传到靶机。

注意:安装包名不能和主程序名字一样。

image-20241008134953359

静默安装

image-20241008135031356

安装完成后自动运行,接下来查看配置文件

其中clientId是todesk的连接账号,tempAuthPassEx是临时的连接密码。

image-20241008145926547

运行ToDesk后会在默认安装目录下生成一个config.ini配置文件,存储的有设备代码、临时密码、安全密码以及登 录用户和密码等重要敏感信息,但密码都经过ToDesk特有加密算法加密,所以不能通过解密得到明文密码,只需 要找到目标主机ToDesk中的tempAuthPassEx临时密码或authPassEx安全密码,将它们覆盖到我们本地ToDesk中 的tempAuthPassEx,重启ToDesk即可得到明文密码

使用cs进行文件替换。下图这个是自己todesk攻击机上的密码。我们可以使用自己的todesk配置文件来替代掉靶机上的配置文件。

image-20241008140539725

删除并重新上传自己的配置文件。

image-20241008140912612

查找todesk进程。

image-20241008141017673
image-20241008145957879

将这两个进程停掉。

image-20241008150053510

将todesk重新开启

image-20241008145837276

确认把temppAuthPass修改后,即可开始使用todesk远控.

image-20241008142044664

利用GoToHttp横向移动

下载以后把这个文件上传到靶机win7。

image-20241008152357674

直接运行,这个远控无需安装。

image-20241008152421077

在运行目录下会生成一个配置文件,查看配置文件里面有连接地址和账号密码

image-20241008152545755

于是根据host网址,登录该网站,然后实验电脑ID和控制码1349即可远程进行横向

image-20241008152751724

复现成功。

image-20241008152916974

利用RustDesk横向移动

RustDesk远程桌面软件,开箱即用,无需任何配置。

把rustdesk上传到靶机win7

image-20241008154949125

运行这个文件。

image-20241008155033141

查看配置文件,其中id是远程连接的账号,密码目前为空,所以需要复制这段文本,随便设置六位的密码。

image-20241008155250580
image-20241008155515390

将这个上传上去,覆盖到原先的配置文件。

image-20241008155624324

查找对应的进程,并把该进程杀死。

image-20241008155710826
image-20241008160005139

重新上线,此时查看配置文件,就会密码了。

image-20241008160029865
image-20241008160100499

于是开始远控。

image-20241008160458901

IPC配合计划任务横向移动

答疑:有的时候使用管理员组的用户,抓起密码会显示权限不够无法访问,原因在于管理员组的用户默认是没有绕过UAC验证的,而管理员组内置的Administrator是绕过UAC认证的。所以才能够抓取密码。

首先查看DC域控是否有开启默认共享,默认打开C盘的共享。

image-20241008174935896

如果管理员组的用户直接查询明文密码,会失败。所以需要右键提权,绕过UAC。如果还是无法查询密码,那就提权到是system。

image-20241008174450340

于是再次查询。有的时候这些管理员的密码可能是一样的,于是就可以利用这些密码进行IPC连接别的主机。

image-20241008173848435
image-20241008174735171

IPC( Internet ProcessConnection)共享“命名管道”的资源,是为了实现进程间通信而开放的命名管道。 IPC可以通过验证用户名和密码获得相应的权限,通常在远程管理计算机和查看计算 机的共享资源时使 用。 通过ipc$,可以与目标机器建立连接。利用这个连接,不仅可以访问目标机器中的文件,进行上传、下载等 操作,还可以在目标机器上运行其他命令,以获取目标机器的目录结构、用户列 表等信息。

建立IPC连接。

image-20241008174817068
image-20241008174847712

查看对方主机的目录信息

image-20241008175147239

远程查看DC的进程信息

image-20241008175312982

复制木马文件到dc

image-20241008175600814

远程创建定时计划

image-20241008175915802

执行计划任务

image-20241008180115568

横向移动成功,拿到域控。

image-20241008180141430

最后攻打完毕,防止运维人员发现,需要删除计划任务

image-20241008180350092

清除IPC连接。

image-20241008180445675

IPC配合系统服务横向

这个没复现成功,权限不够无法访问。暂时原因不知

获取到密码并着手横向时,却发现定时计划服务没有启用。这时候我们就可以远程建立服务,然后再启用服务来运行我们想要运行的命令。

首先一样的需要建立IPC连接,并且复制木马文件到靶机。

然后远程创建服务,来启动木马文件。

image-20241008184725119

然后开启创建的test服务。

image-20241008184801185

于是机器上线成功。

image-20241008184834429

最后也可以删除服务。

image-20241008184851885

密码喷洒和域用户枚举横向移动

如果cs只获得了本地账户的会话,那么无法直接获得域用户的信息,那么可以使用kerbrute工具进行枚举爆破域用户。

首先把工具和账号字典传到靶机上。

于是根据这个字典爆破出两个域用户。

image-20241008221422352

将域用户保存到1.txt字典,并上传到靶机,来进行密码喷洒攻击。

image-20241008222305089

于是喷洒出两个域用户的密码了。

image-20241008222453840

接下来介绍另一款密码喷洒工具,CrackMapExec(⼜名 CME)是⼀款⾮常好⽤的密码喷洒攻击的⼯具,在 Kali Linux 默认已经安装好。

kali喷洒出其中两个账户的密码

image-20241008223121436

哈希传递攻击PTH横向移动

域环境要演示PTH横向移动,需要先学习普通用户可以绕过UAC提权的问题。

前提条件:接下里这个实验,会以两个本地工作组的机器展开,都未加入域,server2008(192.168.15.145)作为被控机,来横向win7虚拟机(192.168.15.115)。并且server2008以管理员组的用户hsw登录(不能使用administrator,因为绕过UAC的管理员可以直接远程访问对方的目录)

server2008无法直接远程访问win7的目录。

image-20241009141056254

将被控server2008提权到system,抓取密码,得到其中的NTLM哈希值。

image-20241009141458960

将mimikatz工具上传到远控机,并且执行。cmd以管理员身份运行,这样管理员组的其他管理员才能绕过UAC验证

image-20241009141943231

于是根据这个NTLM哈希值传递到其他本地机,看看是否和这个哈希值相同。因为本地管理员的密码可能会和其他本地的管理员密码相同。显示ok说明哈希传递成功。并且此时会弹出一个新的cmd框。

image-20241009142058812

这里可以访问win7的目录

image-20241009142144983

于是可以复制木马文件,并设置计划任务运行。

image-20241009142604310

此时win7横向完毕。

image-20241009142622051

另一种方式也可以哈希传递攻击。在cs上直接点击,右键靶机然后点击哈希传递攻击

image-20241009144430633

用户名是靶机的用户,密码是自己远控管理员的密码NTLM哈希,domain填写靶机ip,如果是域环境填写域名。

image-20241009144127641

此时靶机被上线。

image-20241009144554051

密钥传递攻击PTK横向移动

这个没有复现成功。

首先2008主机需要安装补丁才能抓到AES密钥。且让AD域使用域管理员jack远程登录2008主机。

image-20241009154834231

远控机server2008,提权到system后抓取所有账户的aes密钥。

注意:两个用户密码相同,但是aes密钥可能不同

其中有域用户jack,而jack是域管理员。复制其中的aes密钥

image-20241009162804621

传递密钥给jack,于是弹出弹窗就是域管权限,即可实现横向。

image-20241009163608584
image-20241009195532831
image-20241009195712664
image-20241009195726591

票据传递攻击PTT横向移动

比如说内网当中,域管理员曾经远程连接登陆过2008-01,那么就会在内存中留下票据。于是可以从远控2008导出票据。

其中具有域管理员的票据。

image-20241009190344939

首先删除所有的票据。

image-20241009190440183

虽然显示无法访问域控机,但是可以导入域管的票据。

image-20241009191230818

导入票据成功。

image-20241009191204936

于是即可访问dc域控机的目录

image-20241009191506308

于是复制木马到域控,并设置定时任务运行。

==注意:如果出现拒绝访问,一定要把ip换成域名==

image-20241009191830903
image-20241009193324875
image-20241009193434679

于是域控上线成功。

image-20241009192451638

ms-14068传递横向

查看该域用户的sid.

image-20241009205830492

首先域内机器使用普通域用户jack。获取到jack的密码后和sid后,即可利用MS14-068这个漏洞.

首先把该漏洞工具和mimikatz放置被控机器2008

image-20241009210000260

利用该工具伪造TGT。

格式如下:

image-20241009210042453
image-20241009205705149

生成伪造的TGT文件。

image-20241009210113266

导入伪造的票据。

image-20241009210208764

于是即可访问该域控的目录,并且上传木马文件,生成计划任务执行即可。

image-20241009210303118

于是域控拿下。

image-20241009210504584

第二种方式是使用另一个工具goldenPac.exe,此工具是impacket工具包里的,它是MS14-068+psexec的组合,因此使用起来非常方便快捷。

将该工具放置靶机,然后运行。

image-20241009210720998
image-20241009211142038

运行完,这个cmd窗口就变成了域控的窗口了,可以对域控进行操作。

image-20241009211200471

psExec远程CMD横向移动

首先将psexec工具上传到靶机。

image-20241010152204624

与域控建立IPC连接。

image-20241010152301412

把木马复制到域控

image-20241010152535482

由于第一次使用该工具会弹出同意框来点击交互,cs可以使用-accepteula来默认同意,来绕过同意框执行。

image-20241010152750176

于是域控上线。

image-20241010152822056

wmic远程执行命令横向移动

生成powershell后门脚本

image-20241010163712254
image-20241010163813592

在当前目录下,启动web。

image-20241010164003526

仍然使用server2008(192.168.15.145)横向攻击域控(192.168.15.140)。

wmic进行上线,把ps1放到公网,可以使用python 开启http服务提供下载(哪怕开启防火墙也可以上线。)

image-20241010165123452

拿下域控。

image-20241010165133118

使用方式如下

image-20241010165344586

这个必须在远控机执行,在cs执行会出错。最后运行完DC被控制了。

image-20241010195528481
image-20241010195606205

得到本地管理员的哈希,于是碰运气尝试。

image-20241010195813212
image-20241010200129896
image-20241010200156715

smb远程执行命令横向移动

使用方式

image-20241010174302455

只需知道对方的域用户和密码,即可通过使用该工具获得到域控的shell.

image-20241010174250649

当然如果不知道对方的域用户的密码,可以查看自己的本地密码,大多数人本地密码和域用户的密码是一样的。导出本地用户的密码哈希。

image-20241010174505461
image-20241010174531195

于是碰巧使用本地管理员的哈希,来看看能否和域管理员的密码相同,由于相同所以直接认证通过,那么就拿到域控的shell了。

注意:这里指的哈希是lm:NTLM的哈希格式,即微软的特定哈希格式。

image-20241010174701201

DCOM远程执行命令横向移动

可以在powershell输入下面的命令来获取DCOM列表。

image-20241010200408940
image-20241010200902077
image-20241010201423332

DC域控被控制。

image-20241010201434998
image-20241010202018981

DC域控被控制。

image-20241010201434998
image-20241010202553645

DC域控被控制。

image-20241010201434998
image-20241010203023687

把该工具传入到远控机。然后使用该工具远程执行命令。但是这个需要输入域管的账号和密码

image-20241010203258090

winRM远程执行命令横向移动

查看域控的5985端口是否开放

image-20241010211502712

使用方式

image-20241010210416368
image-20241010210356958
image-20241010210551727

添加信任后,于是即可远程让域控执行命令了。

image-20241010210631058
image-20241010211037282
image-20241010211138524

系统漏洞ms17010横向移动

将永恒之蓝放到远控机上。然后到指定目录执行命令

image-20241010235032981

cs生成后门shell的dll

image-20241010235141787
image-20241010235230951

把shell.dll文件放入到该目录下。

image-20241010235337355

于是成功攻击,但是按理来说会在cs生成win7的控制,但是没有。

image-20241010235524864

第五章 域控安全和跨域攻击

多种方式提取和移动ntds.dit文件

该命令是域控自带的。这里是假设域控被拿下后远控的操作。

第一步:创建快照,保存其中的快照id

image-20241011171437802

第二步,挂载快照

image-20241011171653172

首先把挂载的目录名复制下来。

image-20241011172017185

第三步:然后桌面下创建ntds文件夹,然后把挂载文件夹中的ntds.dit复制到ntds文件夹下。

image-20241011172125289

第四步:删除快照

image-20241011172331765
image-20241011172808367

复制文件出来

image-20241011173203322
image-20241011173354232

首先把vssown.vbs脚本上传到域控机。

第一步:启动卷影复制服务

image-20241011173823017

第二步:创建一个C盘的卷影副本

image-20241011173924820

第三步:列出当前卷影副本

image-20241011174038689
image-20241011174234890

删除卷影副本

image-20241011174428002
image-20241011174533469
image-20241011174639527

为防止溯源,删除即可。

image-20241011174716980

首先把该工具放置域控。

image-20241011175140561

在域控输入这条命令,会在当前目录导出ntds.dit文件。并可以读取哈希值。

image-20241011180034018

离线读取ntds.dit文件

image-20241012094437160
image-20241012094505031
image-20241012100529275
image-20241012100919777
image-20241012100940914
image-20241012102053134

在线读取ntds.dit文件

image-20241012111957215
image-20241012112124378
image-20241012112732981
image-20241012113113115
image-20241012113536251

MSF读取ntds.dit文件

image-20241012145338041
image-20241012145544474
image-20241012150151356

顺便改名字。于是获得这两个文件就可以开始读了。

image-20241012150229998

于是放到windows使用工具即可读取信息。

image-20241012152327345
image-20241012150500803

cs新建一个外部监听器,端口设置和msf的监听端口一致。

image-20241012151344000

将cs的会话转移到msf,并选择创建好的触发器。

image-20241012150739057
image-20241012150933028

于是msf获得cs会话,使用hashdump导出所有域用户的哈希信息。

image-20241012151446778
image-20241012152703957
image-20241012152728752

搭建和查看域信任关系

首先基于原先已有的hack.com主机上,在新建多一个域控作为abc.hack.com,只需要注意几个细节,首先子域控的dns服务器要填根域控的ip,然后加入子域控下的主机的dns ip填子域控的ip即可。

这里假设已经控制了子域控机(192.168.15.155)

image-20241012224301159
image-20241012224402038
image-20241012224520642
image-20241012224539549
image-20241012224704489
image-20241012224828837

利用域信任密钥获取目标域

前提:已经控制子域控(192.168.15.155),和子域控的一台域主机(192.168.15.150),目标是打下根域控(192.168.15.140)

使用子域控的域主机无法访问域控的目录。

image-20241013123939459
image-20241013124111279
image-20241013125024888

生成成功。

image-20241013125311663
image-20241013125333430
image-20241013130022923
image-20241013130225052

于是普通域内用户即可访问根域的目录。

image-20241013130255971
image-20241013130708077
image-20241013130817124
image-20241013130901252
image-20241013131209619

根域上线。

image-20241013131234795

利用krbtgt哈希值获取目标域

前提:已经控制子域控(192.168.15.155),和子域控的一台域主机(192.168.15.150),目标是打下根域控(192.168.15.140)

image-20241013142316621
image-20241013142504188

构造格式如下

image-20241013143607757
image-20241013143834115

此时可以访问根域的目录

image-20241013143800306
image-20241013144254380

根域控上线

image-20241013144353282

非约束委派攻击

首先子域中的域主机先设置好非约束性委派(即可以使用该计算机来委派访问任何资源)

image-20241013153926221
image-20241013154541128
image-20241013154733261
image-20241013160327489
image-20241013155221499
image-20241013155743250
image-20241013155956792
image-20241013160158219
image-20241013160951457
image-20241013202059203

于是监听到票据

image-20241013202131953
image-20241013202201086
image-20241013202254949
image-20241013202954564
image-20241013203153650
image-20241013203258637
image-20241013203513483
image-20241013204301068
image-20241013204508626

于是即可访问域控目录,但是这里访问失败了,复现失败。估计换成根域做实验会成功。

约束委派攻击

先给2008-01设置约束性委派,只允许访问dc域控的cifs服务。

image-20241013235146975
image-20241013231109979
image-20241013235335881
image-20241013232045538
image-20241013235630536
image-20241013232405350
image-20241013235820721
image-20241013232516690
image-20241013235924087

Last updated