Sumap⽹络测绘探测C&C远控在野情况分析

2021-01-12 6,288

Sumap⽹络测绘探测C&C远控在野情况分析  

0x00 ⽹络测绘⻆度下的C&C威胁分析                                 

在⽇渐激烈的⽹络对抗中,伴随渗透⼿段的更新换代,远控为了满⾜需求随之发展,种类繁多,常⻅的 远控有:Cobalt  StrikeMetasploit  FrameworkEmpirePoshC2Pupy等。

在常⻅的远控中,Cobalt Strike是熟知的渗透测试利器,功能⼗分强⼤,可扩展性强,从前期载荷⽣ 成、诱饵捆绑、钓⻥攻击到载荷植⼊⽬标成功后的持续控制、后渗透阶段都可以很好⽀持,⼏乎覆盖攻 击链的各个阶段。并且⽀持多种上线⽅式,以及多种丰富的配置可以达到⾮常好的隐蔽效果。CS teamserver团队服务器⼜可以使众多CS客户端连上它,以进⾏团队协作。Metasploit Framework能够 提供众多漏洞利⽤,这两款远控功能强⼤且容易上⼿,因此也是⼴⼤redteamer的必备武器。

C&C作为全球范围红队的基础设施,⻓期部署在世界各个⻆落,如何通过探测C&C服务器成为了⼀个问 题。传统的流量规则只能对⼩范围的C2设施进⾏识别,有⼀定的局限性。对于全⽹的资产识别,通过⽹ 络测绘来进⾏扫描识别C2会不会更全⾯呢?

 

 

0x01 ⽹络空间测绘                                                                    

互联⽹在⾼速发展的今天,传统的⽹络安全⼤多⾯向局部安全未曾考虑整体全⽹环境下的⽹络安全,这 样也造成了近年来攻击者频繁⾯向全⽹展开攻击。数亿的物联⽹设备安全问题被⼤范围的暴露出来。同 时攻击者在⾯向全⽹攻击既包括传统攻击⽅式WEB攻击,缓冲区溢出攻击,数据库攻击。同时也涵盖新 型的针对物联⽹设备和⼯控设备层⾯的攻击也越发频繁。Sumap⽹络空间测绘拥有快速资产探测能⼒, 以及资产监测能⼒,资产漏洞管理能⼒形成了⼀套基于全球⽹络空间资产安全整体安全解决⽅案。

 

 

0x02 具体分析                                                                            

Metasploit

1.Metasploit 框架简介

在⽇常渗透测试中,Metasploit是常⽤的⼀款⼯具安全漏洞利⽤⼯具,它拥有最新的公开漏洞利⽤、后 渗透利⽤模块等,它集成了各个平台常⻅的漏洞,拥有各种操作系统的shellcode,同时可以作为C&C维 持⽬标权限。Meterpreter作为meatasploit框架的⼀个扩展模块,meterpretermetasploit框架中的

⼀个扩展模块,作为溢出成功以后的攻击载荷使⽤,攻击载荷在溢出攻击成功以后给我们返回⼀个控制 通道。使⽤它作为攻击载荷能够获得⽬标系统的⼀个meterpretershell的链接。meterpretershell作为 渗透模块有很多有⽤的功能,⽐如添加⼀个⽤户、隐藏⼀些东⻄、打开shell、得到⽤户密码、上传下载 远程主机的⽂件、运⾏cmd.exe、捕捉屏幕、得到远程控制权、捕获按键信息、清除应⽤程序、显示远 程主机的系统信息、显示远程机器的⽹络接⼝和IP地址等信息。


 

2.msf特征分析

开始对msfreverse_http进⾏分析,在msfmetasploit- framework/lib/msf/core/handler/reverse_http.rb#83

 

 

OptString.new('HttpUnknownRequestResponse',

'The returned HTML response body when the handler receives a request that is not from a payload',

default: '<html><body><h1>It works!</h1></body></html>'

)


通过分析特征,发现模仿的是apache的初始⻚⾯

https://raw.githubusercontent.com/apache/httpd/5f32ea94af5f1e7ea68d6fca58f0ac2478cc18c5/d ocs/docroot/index.html

但实际测试,apache的初始⻚⾯请求为:

 

 

< HTTP/1.1 200 OK

< Connection: keep-alive

< Content-Length: 45


msfapche⻚⾯为:

 

 

< HTTP/1.1 200 OK

< Connection: keep-alive

< Content-Length: 44


两者相⽐较Content-Length并不相同,相⽐apache原始⻚⾯多了\n

sumap平台中可以直接搜索

 

 

tags:"MSF http"

MSF_http.png

 

全球分布:MSF_http_all.png

 截⽌发稿前探测到msf reverse_http(s)全⽹有682台,同时sumap⽀持reverse_tcp连接查询。 直接搜索:

 

tags:"Metasploit Rex httpd"


rex httpd.png


探测到全⽹有8,048

 

Cobalt Strike

 

1.Cobalt Strike Payload Staging

Cobalt Strike的攻击框架中,payload是执⾏攻击的内容,payload拆分为:payload stagepayload stagerstager是⼀个⼩程序,通常是⼿⼯优化的汇编指令,⽤于下载stage、把它注⼊内存中运⾏。 stage则就是包含了很多功能的代码块,⽤于接受和执⾏我们控制端的任务并返回结果。stager通过各种

⽅式(httpdnstcp)下载stage并注⼊内存运⾏这个过程称为Payload StagingCobalt strike也提 供了传统的⽅式,打包成⼀个完整的exedll,上传运⾏与teamserver回连通讯,这种是Payload Stageless,⽣成Stageless的客户端可以在Attack->Package->Windows Executeables)下⽣成。

通过官⽹的⽂档,因为如果开启了 staging(分阶段),任何⼈都能连到你的服务器上,请求⼀个 payload、并分析它的内容,从⽽可以从你的 payload 配置中获取信息。

 document.png

 

所以可以通过构造,传⼊满⾜要求的uri就能够下载csbeacon

在  /src/main/java/cloudstrike/WebServer.java 中可以看到uricheck规则。check.png

 

所以只需要构造根据4位的数字和⼤⼩字⺟组合满⾜求和取模等于92(93)即可

 

import random


def generate_checksum(input):

    trial = ""

    total = 0

    while total != input:

        total = 0

        trial = ''.join(random.sample("abcdefghhijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890",4))

        for i in range(4):

            total = (total + ord(trial[i:i+1]))% 256

    return trial


if __name__ == '__main__':

    uri_x86 = generate_checksum(92)

    uri_x64 = generate_checksum(93)

    print(uri_x64)

    print(uri_x86)



这⾥的逻辑做了⼀个判断,直接访问返回⼀个 404 Not Found ,但是带有满⾜条件的校验码访问会直接 下载beacon的stage⽂件。stage.png

拿到stage⽂件后,需要抑或解密,这⾥我参考https://sysopfb.github.io/malware,/cobaltstrike/2020/ 03/24/beacon-in-azure.html改写了⼀下python3的脚本

 

import sys

import struct


filename = sys.argv[1]

data = open(filename, 'rb').read()

t = bytearray(data[0x45:])

(a,b) = struct.unpack_from('<II', t)

key = a

t2 = t[8:]

out = ""

with open(filename+'_decoded', 'wb') as f:

    for i in range(len(t2)//4):

        temp = struct.unpack_from('<I', t2[i*4:])[0]

        temp ^= key

        out = struct.pack('<I', temp)

        print(out)

        key ^= temp

        f.write(out)


得到解密后的⽂件然后再使⽤⽹上公开的脚本对配置⽂件进⾏解析https://github.com/Sentinel-One/Co baltStrikeParser

 dec.png

在这个脚本⾥cs3.x异或的0x69cs4.x异或的0x2e,查看我⼿中的4.1版本

 cs4.png


 

cs3.x版本和cs4.x版本的异或字节不⼀致,但是都可以解密出来,说明解密算法并没有改变,那么势必可

以通过改变密钥来bypass获取配置信息,其实这种情况只需要爆破256位就能解决了( for x in range(1, 0xff) ),对于扫stager我更建议是在不需要stager的时候在Manage Web Serverkillstagerstager64,需要的时候直接在listenersedit

Sumap根据此特征已经集成到搜索语法中,可以通过搜索 tags:"CS Beacon" 直接搜索到相关数据。 中国地区相关数据不参与统计

sumap_beacon.png

beacon_all.png

2.Cobalt Strike server

空格bug存在与Cobalt Strike发布3.13之前的版本,Cobalt Strike "Team Server" Web服务器是基于 NanoHTTPD,这是⼀个⽤Java编写的开源Web服务器。但是,此Web服务器⽆意中在其所有HTTP响应 中返回了多余的空⽩符,可以通过这个空格进⾏识别


space.png

 

snort规则: /^HTTP/1.1 200 OK \r\nContent-Type: [^\r\n]{0,100}\r\nDate:  [^\r\n]

{0,100} GMT\r\n(Content-Length: \d+\r\n)\r\n ,⽼版本的Cobalt Strike⽹络服务器的所有 HTTP响应中都有空格,通过snort规则可以抛砖引⽟,既然所有HTTP响应都有空格,那么可以通过访问   Cobalt Strikeweb端⼝,检测返回头就能识别Cobalt Strike了。

Cobalt Strike3.13版本的时候修复了异常空格bug”的同时也修改了默认返回的http头,将date头提前 了,稍作修改为3.13及以后版本的特征。

Sumap根据此特征已经集成到搜索语法中,可以通过搜索 tags:"CS teamserver" 直接搜索到相关数 据。

全球数据分布

 

3.13_map.png

 

 

3. IOC威胁情报验证

取出在Sumap平台搜索的ip数据,在安恒威胁情报中⼼平台验证

 

msf

 

msf_thread.png


 

 

thread2.png

 

Cobalt Strike

 

cs_teamserver1.png

 

threat_cs.png

 

通过Sumap⽹络空间测绘平台C&C数据验证,在威胁情报平台也有相应的情报和标记。

 

 

0x03 趋势分析                                                                            

对全⽹的C&C数据进⾏分析,境外C&C数据占⼤多数。根据数据时间戳分析,近⼏年Cobalt Strike使⽤ 率越来越⾼,主要分布在美国和俄罗斯地区。

 

 

0x04 总结                                                                                    

近年来⽹络安全事件频发,APT攻击持续⾼发,通过追踪攻击组织,结合Sumap⽹络空间测绘探测C&C

的数据,推测未来的C&C设施将会更加多变、隐匿性更强。 随着5G的推⼴,更多的设备被接⼊互联⽹, 在万物互联的时代,APT攻击不再局限于传统⽹络,未来物联⽹等新兴设备可能陆续成为APT组织攻击的

⽬标。

同时在ipv6的覆盖下针对ipv6的形式的攻击也在以不同的⽅式和维度上展开,结合机器学习和深度学习 模型⽅式的攻击也不断出现。⾯对新形势的攻击

我们只有更加深⼊的布局整体全球⽹络空间,才能有更好的联动防御机制。同时对⽹络安全⼈才的培养 体系化建设都将会成为2021年中的关键要素。

 


本文作者:xixi

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/151275.html

Tags:
评论  (0)
快来写下你的想法吧!

xixi

文章数:2 积分: 35

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号