1.攻击面在安全攻防中的价值Lockheed-Martin的网络杀伤链(KillChain)模型所描述的攻击过程一般包括7个阶段:侦察与跟踪、武器构建、有效载荷投放、漏洞利用、安装植入、指挥与控制,目标达成。侦察阶段主要实现对攻击目标(如服务器、公司网站、内网等)的各类信息的收集,包括通过各种技术手段扫描主机和端口,获取存活IP地址、系统类型、开放端口等和服务。版本等基本信息。安全防御者一般基于传统的纵深防御理念,运用物理、网络、系统、应用、数据、流程、人员管理等不同维度的技术和管理手段,对安全威胁进行威慑、预防、检测、响应和恢复。各种攻击。.针对攻击过程第一阶段的扫描行为,安全防御者可以采取包括梳理和减少暴露于外界的攻击面、加强系统和应用的安全基线、补丁更新、横幅隐藏、日志记录等措施。以及网络流量审计等。一方面减少和减少攻击者可以发现的风险资产数据,同时对早期攻击进行预警。根据实战经验,攻击者在侦察阶段收获的目标资产数据量和风险等级在一定程度上决定了后续攻击的难度和最终的攻击结果。在一些HW操作中,经常会看到红队人员的前期拔线操作,其最终目的是尽量减少蓝队可以获得的攻击面风险资产数据。所以在某种程度上,最初的攻击面扫描和安全防护对双方来说有点抢滩。对于攻击者来说,需要尽可能多地获取攻击面信息,以便进行下一步的武器化攻击;对于防御者而言,需要通过各种方式尽可能减少暴露的攻击面信息,从而在前期拦截攻击者的各种后续攻击。我们可以试着想象这样一个场景:当攻击者在攻击的第一阶段扫描资产漏洞时,如果防御者突然以某种方式给信息资产披上隐形斗篷,会发生什么?攻击读者会发现,无论是fping、nmap、zmap,还是各种扫描工具,如openvas、nessus、wvs等,都失效了,无法与自己想访问的服务器或应用程序建立任何网络层连接攻击。各种攻击工具,POC和0Day漏洞等招数都失败了,看得郁闷。虽然现实中的实际情况并非如此绝对,但如果防御者能够管理关键信息资产(如对外开放的公共网络服务、内部办公应用系统等),将显着提高企业的安全能力。在这种隐身方式中,除了物理断开之外,现有的一些安全技术也可以达到类似的攻击面隐藏效果,例如Port-knocking、SPA和SDP方案。2.隐藏攻击面的几种方法2.1.端口敲门技术(Port-Knocking)端口敲门是一种通过服务器上关闭的端口传输约定信息的方法,使用户在访问受保护的服务之前得到保护。认证主要用于sshd等对外开放的服务的安全保护。Port-Knocking实现原理介绍主机防火墙默认的规则是DRO??P所有请求包。从外部网络无法确认服务器是否存活(注意:因为DROP规则不会发送响应包,从而阻止扫描器根据响应包确认端口的开放。REJECT/DENYrule会将ICMP_PORT_UNREACHABLE回传给客户端,nmap等扫描器可以根据此判断端口状态??为filter,从而揭示服务器本身是存活的,端口是开放的,但是禁止扫描器IP访问。);Port-Knocking守护程序在服务器上运行并分析主机防火墙何时丢弃数据包。如果一个源IP发送的一系列TCP或UDP包访问对应的一组TCP或UDP端口(说明敲码正确),knockd进程自动调用iptables命令执行配置中预设的相应规则文件,比如添加一条规则,允许IP地址访问服务器的SSH端口。如果数据包不符合服务器预设的端口访问顺序,守护进程将不会采取任何行动。Port-Knocking带来的安全性提升使得攻击者无法感知服务器是否在线。服务器主机防火墙默认DROP所有请求的数据包,因此攻击者无法使用扫描仪确认服务器是否存活,以及服务器上打开的任何端口。易受攻击的服务不会暴露给外界。访问服务器开放端口对应的服务,需要提前知道敲门顺序,所以即使SSH等对外开放的服务存在0day漏洞,攻击者也无法利用他们中的。不存在暴力破解、字典攻击、协议漏洞等安全问题。建立多层防御系统端口敲门序列是一个只有受信任的用户才应该知道的秘密密码。因此,从某种程度上说,敲击序列和密码一样,也是一种用户认证机制。只有输入正确的敲击序列后,才允许访问相应的服务,即在访问的服务之前增加一层用户认证保护。2.2.单包授权(SinglePacketAuthorization)SPA可以说是下一代的端口敲门技术。与Port-Knocking的实现机制不同的是,SPA使用敲门所需的信息,即授权包PA(AuthorizationPacket),编码成一个包,发送到服务器上的任意端口。SPA传输的授权包信息类似:AID:发送数据包的客户端的唯一ID,明文传输,以便服务端根据ID找到对应的解密密钥PASSWORD:客户端端口令牌(与服务端共享)NEW_SEED:下一笔交易的新种子RANDOM:客户端在发送数据包前生成的随机数,避免重放攻击MD5_HASH:上述值的哈希计算结果与Port-Knocking技术相比,SPA具有优点:SPA只需要发送一个数据包,而Port-Knocking需要发送多个knocking数据包(datasize)。当Port-Knocking数据包以不一致的顺序到达服务器时,会导致敲码错误,认证失败。SPA中没有类似的问题。SPA数据包包括一次性随机字段,可以避免重放攻击(replayattack)SPA传输的数据是加密的,Port-Knocking数据包中包含明文端口敲击序列(嗅探器)通过修改数据包的源IP地址,攻击者可以破坏Port-KnockingKnocking认证过程,但SPA服务器只允许访问SPA负载中的原始加密IP(避免MITM)2.3。软件定义边界技术(SoftwareDefinedPerimeter)随着云时代的到来,2013年云安全联盟(CSA)提出了软件定义边界(SoftwareDefinedPerimeter,SDP)的概念,并于2014年发布《SDP标准规范1.0》,为各种安全供应商构建自己的SDP产品提供指南。SDP标准的核心仍然是通过SPA协议保护后端服务不可见后,但扩展了SPA的应用场景。通过引入SDP控制器,可以支持多种身份认证和授权服务,通过连接接受主机(AH)的网关模型,可以隐藏和保护网关后面的多个服务器或应用服务,从而可以使用在Iaas、PaaS、SaaS、远程办公、私有云、混合云等场景下实现信息资产的隐身保护。SDP技术方案的真正落地,涉及管理者安全意识的转变,SDP产品性能和功能的提升,IT基础设施和应用场景的身份认证和授权机制的变革。目前主要是替代远程VPN接入、内部办公平台统一安全管理等内部应用场景。关于SDP的介绍和其他应用场景,可以参考之前发表的文章《零信任和软件定义边界》。目前,在游戏行业等其他行业,零信任或“连接前认证”的安全理念也有一定的实际效果。通过游戏客户端内嵌专用sdk与游戏服务器建立连接并进行合法性验证,可以有效的防止和减少DDOS和CC攻击,比如阿里云游戏盾、联云太极盾等。可以肯定的是,基于ZTNA颠覆性的安全理念,未来几年将在云计算、物联网、工业控制、卫星通信等行业出现更多的SDP实施方案和案例。2.4.实现工具服务隐身,如iptablesrecent模块、knockd项目、fwknop项目网段服务和应用隐身,SDP产品厂商如deepcloud、PulseSecure等2.5.参考https://zeroflux.org/projects/knockknockd项目http://www.cipherdyne.org/fwknop/fwknop项目https://ir.lib.uth.gr/xmlui/handle/11615/48775http:///www.securitygeneration.com/wp-content/uploads/2010/05/An-Analysis-of-Port-Knocking-and-Single-Packet-Authorization-Sebastien-Jeanquier.pdf
