eo優(yōu)化網(wǎng)站是方方面面的,有許許多多的要素會影響我們網(wǎng)站的排行,查找引擎的抓取,其中有一條十分重要的要素即是網(wǎng)站途徑URL的優(yōu)化,途徑URL是什么呢,它即是你這個網(wǎng)站上面內(nèi)容的每一個連接,一個頁面,一篇文章都別離對應(yīng)著一個URL,而查找引擎蜘蛛爬取你網(wǎng)站的時(shí)分也是通過這一個個URL來進(jìn)行的,所以網(wǎng)站途徑URL的優(yōu)化關(guān)于網(wǎng)站優(yōu)化來說是至關(guān)重要的。
一、途徑分類
網(wǎng)站途徑URL有三種動態(tài)途徑、偽靜態(tài)途徑、靜態(tài)途徑,關(guān)于查找引擎現(xiàn)在來說這三種途徑是都能夠辨認(rèn)的,理論上三種途徑都是不影響的。
1、動態(tài)途徑
(1)動態(tài)途徑是跟數(shù)據(jù)庫之前連接起來的,頁面要顯示出來要拜訪數(shù)據(jù)庫。假設(shè)當(dāng)用戶拜訪你的網(wǎng)站頁面的時(shí)分,某一些數(shù)據(jù)比如圖片之類的需求從數(shù)據(jù)庫中拿出來,并不是直接在網(wǎng)站的頁面上。
(2)動態(tài)途徑的辨認(rèn)主要是看連接中是不是呈現(xiàn)”?、&“通常是這種格局”http://主頁地址/?p=545″。
2、靜態(tài)途徑
(1)靜態(tài)途徑是一個靜態(tài)的頁面,是一個固定的地址,不需求與數(shù)據(jù)庫打交道,拜訪的數(shù)據(jù)悉數(shù)在頁面上。
(2)靜態(tài)頁面通常途徑是以”.html”結(jié)束的。通常是”http://主頁地址/xxx.html”
3、偽靜態(tài)途徑
偽靜態(tài)途徑是介于靜態(tài)途徑與動態(tài)途徑之間,它通過URL重寫手法,將動態(tài)途徑中的動態(tài)參數(shù)去掉,讓它靜態(tài)化,但實(shí)際上它依然需求從數(shù)據(jù)庫中獲取數(shù)據(jù),所以稱之為偽靜態(tài)路由。
二、途徑RUL優(yōu)化
1、途徑長度
途徑URL不要過長,這個是視覺上的一個作用,要保持在查找引擎查找框中完整的顯示出來。
2、途徑深度
(1)途徑深度,查找引擎通過一個節(jié)點(diǎn)連接進(jìn)入你的網(wǎng)站,這是第一個深度,從主頁進(jìn)入到一個導(dǎo)航頁這代表第二個深度,從導(dǎo)航頁進(jìn)入詳情頁代表第三個深度,沒通過一個層次代表一個途徑深度,不斷的添加。
(2)有關(guān)于互聯(lián)網(wǎng)的數(shù)量來說查找引擎蜘蛛是比較少的,為了節(jié)約查找引擎的抓取時(shí)間,要優(yōu)化途徑深度。假如你連接深度多的話關(guān)于查找引擎的抓取是適當(dāng)晦氣的,由于它也許進(jìn)入你第三個連接深度,就返回了,所以這兒主張我們把連接深度控制在三層以內(nèi)。
3、途徑中是不是富含中文
(1)途徑URL中部要富含中文,假如富含中文的話關(guān)于查找引擎錄入是十分晦氣的,假如一篇正常途徑文章錄入需求一星期,那么富含中文途徑的也許需求兩個月。
(2)當(dāng)把富含中文的途徑輸入查找引擎查找框的時(shí)分URL 中的中文字會被當(dāng)成 Unicode,并用 UTF-8 編碼方法送出,最終是轉(zhuǎn)化成http://主頁地址/%A4%A4%A4%A5.html,帶有百分號的一些組合編碼。
4、途徑稱號
(1)途徑稱號不要過長,假如節(jié)目稱號過長能夠運(yùn)用首字母。
(2)途徑命名要與查找盡量匹配,能夠依據(jù)下拉框、有關(guān)查找命名,比如是打標(biāo)機(jī),我能夠把稱號命名為打標(biāo)機(jī)的拼音。
5、途徑截取
(1)途徑截取本來即是查找引擎對你網(wǎng)站途徑的一個反推,從最終一個連接層,一步一步向你的主頁反推,每反推一層會看你的內(nèi)容,假如沒有再去上一層看,知道主頁,假如你的某一層沒有數(shù)據(jù),那么關(guān)于優(yōu)化是十分晦氣的。
(2)關(guān)于查找引擎的途徑截取能夠縮短你的途徑來處理,把不必要的途徑進(jìn)行結(jié)合,像織夢后臺有文章命名規(guī)則,你能夠去設(shè)定。
這基本上即是網(wǎng)站途徑URL優(yōu)化的操作方法了,這兒有一點(diǎn)需求我們留意的事,途徑URL的修正是要在上線前完結(jié)的,由于上線以后在修正的話會發(fā)生死連接,當(dāng)然假如你一定要修正的話,那么就只有把這些前面的連接進(jìn)行robots屏蔽掉。
. 網(wǎng)站結(jié)構(gòu)
對于搜索引擎優(yōu)化,網(wǎng)站的結(jié)構(gòu)是最重要的因素之一。網(wǎng)站結(jié)構(gòu)是所有關(guān)于你的網(wǎng)頁是如何聯(lián)系在一起。搜索引擎爬蟲的基礎(chǔ)上它的設(shè)置方式判斷你的網(wǎng)站的價(jià)值。文件層次結(jié)構(gòu)和站點(diǎn)地圖起到無論是否獲得高排名第至關(guān)重要的作用。
如果你想受到廣大用戶尋找你相關(guān)的關(guān)鍵字可以找到,你的網(wǎng)站需要邏輯布局,易于抓取速度更快。請記住,如果機(jī)器人是快樂的,每個人都會快樂。
2. 易于導(dǎo)航
對搜索引擎優(yōu)化感興趣的網(wǎng)頁設(shè)計(jì)師,導(dǎo)航一定是最優(yōu)先考慮的任何。對于導(dǎo)航,淺越好。帶著淺淺的架構(gòu),用戶可以訪問任何網(wǎng)頁中的幾個環(huán)節(jié)盡可能。這也指回網(wǎng)站的架構(gòu)。當(dāng)談到導(dǎo)航,不要試圖重新發(fā)明輪子。使之簡單,使其短路(八個選項(xiàng)或更少) ,并使它可用。
3. Meta 描述
即使你不熟悉這個術(shù)語,你肯定知道它是什么。meta 描述提供了你的網(wǎng)頁是關(guān)于什么的概述的小片段。在您的網(wǎng)站的每個頁面都會有meta描述。這些描述是160個字符或更少。meta 描述是你要吸引訪問者點(diǎn)擊你的鏈接絕佳機(jī)會。這也是一種方式來獲得注意到您的關(guān)鍵字,因?yàn)楣雀钂呙韬土咙c(diǎn)在你的 meta 描述用戶搜索的關(guān)鍵字。
4. 內(nèi)容
搜索引擎喜歡內(nèi)容更多的文章,當(dāng)然最好是原創(chuàng)。如果你有一個博客(我強(qiáng)烈推薦) ,重要的是要考慮到工藝,將帶來價(jià)值,你的網(wǎng)站內(nèi)容的時(shí)間。如果你不是一個作家更是一個設(shè)計(jì)師,可以找人幫助你。
5. 圖片優(yōu)化
如果你不花時(shí)間來命名你的圖片,你失去寶貴的搜索引擎優(yōu)化。想想這將是多么偉大的是重命名按照同樣的圖像是什么 - 例如 smithers-web-design-mock-up.jpg。不僅是你清楚地解釋顯示的是什么圖像,你也最大限度地提高您的關(guān)鍵字。
6. 優(yōu)化 URL
說到連接符,請確保你優(yōu)化你的網(wǎng)址與復(fù)姓關(guān)鍵字。例如,如果你的博客文章是關(guān)于白帽 SEO ,你的網(wǎng)址應(yīng)該是www.yoursite.com/white-hat-seo。請記住你的目標(biāo)關(guān)鍵詞,并用它在你的博客文章的標(biāo)題,以及在你的博客文章的網(wǎng)址。這是另一種方式來優(yōu)化您的網(wǎng)站。
7. 內(nèi)鏈的絕對路徑
這個技巧雖然簡單但很有用,有兩種類型的連接:
絕對路徑:例如,<a href=”www.yoursite.com”>
相對路徑:例如,<a href=”/home.html”>
如果你正在使用相對路徑,建議換成絕對路徑,因?yàn)榭梢詼p少服務(wù)器的響應(yīng)時(shí)間。
8. 網(wǎng)站速度
研究表明,如果網(wǎng)站加載超過3秒鐘,40%的訪客會放棄。因此,即使你的網(wǎng)站采用了超酷的設(shè)計(jì),但如果新的游客幾乎有一半不圍著看它,那有什么用呢?
速度慢也會對搜索引擎優(yōu)化造成負(fù)面影響。自2010年以來,谷歌已經(jīng)明確承認(rèn),加載速度是由他們來決定你的網(wǎng)頁排名的方法之一。雖然我們不是什么搜索引擎機(jī)器人如何評價(jià)快慢,但我們知道它有一個邏輯的網(wǎng)站結(jié)構(gòu)優(yōu)化的后端是非常重要的。
9. 豐富的片段
類似 meta 描述,豐富的片段顯示在搜索結(jié)果頁面。當(dāng)你搜索“samsung top load washer,” 你會注意到有些網(wǎng)站提供了評分、訪問量和價(jià)格。此信息提供給搜索引擎,會增加你的搜索流量,因?yàn)樗芤鹱⒁狻3诉@些片段,一個令人興奮的選項(xiàng)包括產(chǎn)品的圖片或視頻作為營銷在搜索引擎結(jié)果頁的一部分。你可以通過調(diào)整你的 meta 描述具有豐富的片段利用視覺營銷。
60互聯(lián)網(wǎng)安全中心監(jiān)測到一種利用被入侵服務(wù)器進(jìn)行門羅幣挖礦的僵尸網(wǎng)絡(luò),該僵尸網(wǎng)絡(luò)控制的服務(wù)器數(shù)量高峰時(shí)單日達(dá)到兩萬多臺。僵尸網(wǎng)絡(luò)建立初期利用“永恒之藍(lán)”漏洞攻擊武器入侵一定數(shù)量的計(jì)算機(jī)并以此作為僵尸網(wǎng)絡(luò)發(fā)展的基礎(chǔ),之后這些計(jì)算機(jī)掃描其他計(jì)算機(jī)的1433端口(msSQL服務(wù)端口),嘗試爆破目標(biāo)計(jì)算機(jī)的msSQL服務(wù),一旦爆破成功則登陸SQL Server執(zhí)行惡意代碼。目標(biāo)計(jì)算機(jī)被僵尸網(wǎng)絡(luò)控制之后同樣會通過1433端口入侵其他計(jì)算機(jī),僵尸網(wǎng)絡(luò)因此不斷擴(kuò)大控制范圍,最終形成現(xiàn)在這樣的規(guī)模。
僵尸網(wǎng)絡(luò)的蔓延離不開強(qiáng)大的Bot程序,通過代碼同源性可以發(fā)現(xiàn)該家族的Bot程序的誕生最早可追溯到2014年。在2014年到2017年之間, Bot程序進(jìn)行多次版本更新,最早的版本只是簡單的入侵與遠(yuǎn)程控制,從2017年4月的版本開始, Bot程序借鑒多款掃描器、爆破工具以及著名僵尸網(wǎng)絡(luò)mirai的實(shí)現(xiàn),添加了多種針對不同協(xié)議的掃描爆破模塊,并且實(shí)現(xiàn)了一套針對msSQL的“入侵+利用+傳播”的攻擊模塊。Bot程序版本更替及傳播量如下圖所示。(圖示中xx.x.x.x.x(x)表示的是Bot程序的版本,例如17.1.0.0.2(1)表示2017年編譯的1.0.0.2版本的Bot程序變種1)
圖1-1 Bot程序版本更替及感染量概覽圖
從圖1-1中可以看出,Bot程序自4月底開始傳播量開始出現(xiàn)爆發(fā)式增長,這正是作者利用“永恒之藍(lán)”漏洞攻擊武器進(jìn)行僵尸網(wǎng)絡(luò)建立的時(shí)間段。此外,Bot程序有一套完善的更新體系,當(dāng)Bot程序檢測到有新版本發(fā)布之后,將自動更新至最新版本。從圖1種也不難看出,新版本傳播量增加之后,老版本的傳播量也相應(yīng)地下降。
Bot程序當(dāng)前的主要目的是安裝門羅幣挖礦機(jī),利用服務(wù)器資源挖礦。截止目前,作者的門羅幣錢包已經(jīng)有高達(dá)1975枚門羅幣,當(dāng)前約合人民幣167萬。
圖1-2 作者門羅幣錢包概況
Bot程序高度模塊化,集合了多種不同的功能,并且具有完善的更新和持久駐留機(jī)制。
對Bot程序的分析將有助于了解該僵尸網(wǎng)絡(luò)的傳播機(jī)制。本文將通過對Bot程序的詳細(xì)分析,挖掘該僵尸網(wǎng)絡(luò)的工作原理,并據(jù)此討論服務(wù)器在面對該僵尸網(wǎng)絡(luò)時(shí)所需的預(yù)防措施以及防御策略。
Bot程序由main模塊,update模塊,Scanner模塊,Cracker模塊,ServerAgent模塊和cService模塊6個模塊構(gòu)成,模塊之間互有聯(lián)系,相互協(xié)作。以下將對每個模塊執(zhí)行的功能進(jìn)行分析。
1. main模塊分析
Bot程序是以控制臺形式存在的,在介紹main模塊之前先介紹Bot程序所接收的啟動參數(shù)以及參數(shù)對應(yīng)的功能。
這些啟動參數(shù)滿足以下幾條規(guī)則:
1.當(dāng)存在“-start”,“-stop”,“-create”和“-delete”中的多個時(shí),只有第一個參數(shù)是有效的,因此作者引入“-run”參數(shù)配合“-create”參數(shù)以完成創(chuàng)建服務(wù)并啟動服務(wù)的操作。
2.“-delete”參數(shù)在刪除Bot服務(wù)之前會關(guān)閉該服務(wù)。
3.當(dāng)未指定“-syn”參數(shù)時(shí)默認(rèn)掃描器為TCP_CONNECT模式。
4.當(dāng)同時(shí)存在“-srv”和“-cli”時(shí)只有第一個參數(shù)是是有效的,兩者都不存在時(shí)默認(rèn)為“-srv”。
5.當(dāng)程序啟動參數(shù)包含“-s”時(shí),將以服務(wù)形式執(zhí)行main模塊,否則以控制臺形式執(zhí)行main模塊。
main模塊主要是進(jìn)行一些準(zhǔn)備工作以及配置并啟用其他模塊。在程序準(zhǔn)備工作方面,主要包括以下幾部分。
(1)獲取系統(tǒng)信息。
圖2-1-1 獲取系統(tǒng)信息
(2)判斷系統(tǒng)類型是否為Server。
圖2-1-2 判斷系統(tǒng)類型
(3)結(jié)束并禁用Network list Service和Network Location Awareness。Network list Service用于識別計(jì)算機(jī)已連接的網(wǎng)絡(luò),收集和存儲這些網(wǎng)絡(luò)的屬性,并在更改這些屬性時(shí)通知應(yīng)用程序;Network Location Awareness用于收集并保存網(wǎng)絡(luò)配置和位置信息,并在信息改動時(shí)通知應(yīng)用程序。Bot程序關(guān)閉并禁用這些服務(wù)以防止自身的網(wǎng)絡(luò)通信被記錄。
圖2-1-3 結(jié)束并禁用Network list Service和Network Location Awareness
(4)結(jié)束并禁用SharedAccess和MpsSvc(Intemet連接共享和防火墻服務(wù))以保障Bot程序的網(wǎng)絡(luò)通信能夠正常進(jìn)行,并且刪除日志文件。
圖2-1-4結(jié)束并禁用SharedAccess和MpsSvc
完成初始化工作之后,main模塊將創(chuàng)建新線程執(zhí)行update模塊。update模塊檢查Bot程序版本并根據(jù)情況進(jìn)行更新。同時(shí),main模塊還作為Scanner模塊,Cracker模塊和ServerAgent模塊的入口。
update模塊是Bot程序進(jìn)行自更新的模塊。當(dāng)程序執(zhí)行main模塊時(shí),將創(chuàng)建線程執(zhí)行update模塊進(jìn)行版本檢查及必要的更新。update模塊每6小時(shí)進(jìn)行一次更新檢查。
圖2-2-1 創(chuàng)建線程執(zhí)行update模塊
圖2-2-2 調(diào)用Sleep函數(shù)以定期執(zhí)行update模塊
進(jìn)行更新檢查時(shí),update模塊首先獲取程序當(dāng)前的版本號,之后通過博客地址“http://blog.sina.com.cn/s/blog_16fb721c50102x6hw.html”獲得加密后的C&C的ip地址。將加密后的ip地址去除首尾的分隔符(***和@@@),經(jīng)過base64解密并與0x36異或之后得到真實(shí)的ip地址(在本樣本中,C&C ip地址為67.229.144.218,以下簡稱為“ip”)。
圖2-2-3 博客中加密的ip地址
http://ip:8888/ver.txt中存放最新的Bot程序版本號,update模塊讀取該版本號并與當(dāng)前Bot程序的版本號進(jìn)行對比。當(dāng)兩者相同時(shí),則認(rèn)為程序已經(jīng)更新到最新版本,繼續(xù)執(zhí)行后續(xù)功能;當(dāng)兩者不同時(shí),則對程序進(jìn)行更新。
圖2-2-4 對比Bot程序版本和最新版本號
圖2-2-5 最新的版本號
若Bot程序未更新到最新版本,則進(jìn)行更新。最新版本的Bot程序通過路徑C://windows/system下的更新程序cabs.exe獲取。若cabs.exe不存在,則Bot程序?qū)膆ttp://ip:8888/ups.rar下載cab.exe,并啟動該程序進(jìn)行更新。
圖2-2-5 下載更新程序cab.exe并啟動更新
cabs.exe會判斷當(dāng)前計(jì)算機(jī)系統(tǒng)是否為Windows Server,只有當(dāng)當(dāng)前計(jì)算機(jī)系統(tǒng)為Windows Server時(shí)才會執(zhí)行更新。
圖2-2-6 判斷當(dāng)前系統(tǒng)是否為Windows Server
如果當(dāng)前計(jì)算機(jī)系統(tǒng)為Windows Server,則訪問http://ip:8888/update.txt獲取最新的下載列表,并將下載列表下載到c:\windows\system路徑下,命名為upslist.txt。
圖2-2-7 下載下載列表
下載列表中包含兩個文件ps.jpg和my1.html。
圖2-2-8 下載列表內(nèi)容
ps.jpg是末尾拼接了一個PE文件的圖片。該P(yáng)E文件就是最新版本的Bot程序。
圖2-2-9 藏有最新版本Bot程序的圖片
圖2-2-10 圖片中監(jiān)測到的PE文件特征
my1.html是一個批處理腳本,功能與Cracker:mssql模塊釋放的批處理腳本123.dat基本相同,主要是創(chuàng)建一些需要的文件夾并為之后Cracker模塊配置環(huán)境。
完成下載之后,cabs.exe會結(jié)束Bot程序的進(jìn)程和服務(wù),更新相關(guān)文件之后再重啟Bot進(jìn)程和服務(wù)。
scanner模塊修改自masscan(github:https://github.com/robertdavidgraham/masscan)。masscan是一個快速、靈活的端口掃描器,在windows下發(fā)包速度可達(dá)到每秒30萬包。
在調(diào)用scanner模塊進(jìn)行掃描之前,Bot程序會配置一個excludefile,該文件指定ip段黑名單,在該范圍中的ip地址將不會被掃描。ip黑名單以字符串的形式存放在Bot程序的資源段中,scanner模塊在臨時(shí)文件夾下創(chuàng)建excludefile,讀取資源后將ip黑名單寫入excludefile。
圖2-3-1 讀取ip黑名單資源并寫入excludefile
在Bot程序2017年四月份編譯的1.0.0.2版本和五月份編譯的1.0.0.3版本的其中一個變種中未發(fā)現(xiàn)ip黑名單,在五月份編譯的1.0.0.3版本的另一個變種中發(fā)現(xiàn)了ip黑名單。
圖2-3-2 存放在Bot程序資源段中的ip黑名單
對于每一個a類ip,scaner模塊排除掉部分b段。由于全網(wǎng)掃描容易遭到監(jiān)控,通過排除部分ip地址可以減少被發(fā)現(xiàn)的風(fēng)險(xiǎn)。
圖2-3-3 scanner模塊排除部分ip地址后掃描全網(wǎng)
scanner模塊能夠掃描的端口包括1433端口,3306端口,135端口,22端口,445端口,23端口,80端口和3389端口。
圖2-3-4 部分scanner模塊掃描的端口
scanner模塊可通過兩種模式進(jìn)行端口掃描,分別是TCP_SYN掃描和TCP_CONNECT掃描。使用何種掃描模式由參數(shù)“-syn”決定,如果啟動參數(shù)包含“-syn”則選擇使用TCP_SYN模式進(jìn)行端口掃描,否則選擇TCP_CONNECT模式進(jìn)行端口掃描。當(dāng)選擇TCP_SYN模式進(jìn)行端口掃描時(shí),Bot程序只發(fā)送SYN幀,端口開放回應(yīng)SYN&ACK幀,端口關(guān)閉回應(yīng)RST幀,;當(dāng)選擇TCP_CONNECT模式進(jìn)行端口掃描時(shí),Bot程序嘗試連接目標(biāo)端口,端口開放則連接成功,否則連接失敗。
Scanner模塊創(chuàng)建的最大掃描線程數(shù)由“-t”參數(shù)決定,“-t”的最大值為1800。在scanner模塊創(chuàng)建掃描線程的同時(shí)會同時(shí)創(chuàng)建名為“CrackerWMI”的線程,但是在Bot程序發(fā)送的數(shù)據(jù)包中并未發(fā)現(xiàn)目的端口為135(wmi服務(wù)使用的端口)的數(shù)據(jù)包,推測可能是作者預(yù)留的尚未完善的功能。
圖2-3-5 兩種不同的掃描模式
scanner模塊會記錄開放特定端口的ip地址,并且與ServerAgent模塊和Cracker模塊進(jìn)行交互完成“端口掃描+爆破+入侵”一系列工作。
2. ServerAgent模塊分析
ServerAgent模塊由兩部分功能組成。一是向C&C發(fā)送掃描結(jié)果;二是對端口掃描和爆破進(jìn)行相應(yīng)的配置工作。
ServerAgent模塊在scanner模塊掃描過程中連接C&C。當(dāng)scanner模塊掃描到開放的端口之后,ServerAgent模塊將把對應(yīng)的ip地址和端口號發(fā)送至C&C。
圖2-4-1 ServerAgent模塊連接C&C
此外,ServerAgent模塊下載密碼字典并為Cracker模塊配置密碼字典,當(dāng)scanner模塊掃描到某ip地址的特定端口為開放狀態(tài)時(shí),將通過該字典進(jìn)行爆破。字典的下載地址為http://ip:8888/wpd.dat,當(dāng)下載完成之后,ServerAgent模塊將從http://ip:8888/wpdmd5.txt獲取正確的密碼字典的MD5值并與下載的字典wpd.dat的MD5值進(jìn)行對比以確定下載文件的正確性。下載的密碼字典wpd.dat是經(jīng)過加密的,ServerAgent模塊讀取密鑰“cm9vdCpwd2Q=”,對密鑰進(jìn)行base64解密后,使用其解密wpt.dat。解密后的wpd.dat部分內(nèi)容如下圖所示。
圖2-4-2 密碼字典的部分內(nèi)容
wpd.dat實(shí)際上是一個xml文件,里面包含mysql,mssql,telnet,wmi,ssh,rdp的密碼字典以及不同的入侵方式執(zhí)行的shell。此外,wpd.dat中存在一個名為ports的鍵,當(dāng)該鍵的某個子健鍵值為1時(shí),ServerAgent模塊將配置scanner模塊使其掃描該子鍵對應(yīng)的端口。
圖2-4-3 ports鍵概覽
在默認(rèn)的wpd.dat中,只有mssql子鍵的值設(shè)為1,因此scanner模塊只掃描mssql服務(wù)對應(yīng)的端口(端口號1433)。黑客可以通過配置wpd.dat文件增加、減少、修改掃描端口的數(shù)目和類別。
圖2-4-4 從抓包數(shù)據(jù)發(fā)現(xiàn)Bot程序只掃描1433端口
有趣的是,ServerAgent模塊選擇隨機(jī)的ip段作為每一輪掃描的ip范圍,這和mirai僵尸網(wǎng)絡(luò)的做法十分相似。如下所示,get_random_ip函數(shù)生成的隨機(jī)ip段為220.176.171.93~220.182.171.87,因此本輪掃描中scanner模塊對該ip段進(jìn)行掃描。
圖2-4-5 ServerAgent模塊計(jì)算并選取隨機(jī)ip段
圖2-4-6 測試中生成的隨機(jī)ip段
圖2-4-7 從抓包數(shù)據(jù)中發(fā)現(xiàn)此輪掃描中Bot程序掃描其隨機(jī)生成的ip段
3. Cracker模塊分析
Cracker模塊是Bot程序中最重要的模塊。該模塊用于入侵目標(biāo)計(jì)算機(jī)并在目標(biāo)計(jì)算機(jī)上執(zhí)行惡意代碼。Cracker模塊分為多個小模塊,在分析的樣本中包括Cracker:CCTV,Cracker:mssql, Cracker:RDP,Cracker:Telnet四個小模塊。按照入侵的端口的不同,Cracker模塊提供不同的攻擊方式。下面將介紹每一種攻擊的實(shí)現(xiàn)。
5.1 Cracker:mssql
由于Bot程序默認(rèn)的密碼字典wpd.dat中指定掃描的服務(wù)為msSQL,因此Cracker:mssql模塊是所有Cracker模塊中功能最為完善的。在大部分被感染的服務(wù)器的msSQL服務(wù)中都可以發(fā)現(xiàn)該模塊所執(zhí)行的惡意動作。
Cracker:mssql模塊首先使用爆破字典爆破目標(biāo)的msSQL服務(wù)。如果成功爆破目標(biāo),則登陸SQL Server執(zhí)行下一步操作。
登陸SQL Server之后,需要在SQL Server中獲得執(zhí)行shell的權(quán)限,因此Cracker:mssql模塊使用多種方式嘗試獲得執(zhí)行shell的權(quán)限,包括:
1. 恢復(fù)xp_cmdshell。
圖2-5-1 恢復(fù)xp_cmdshell
2. 開啟被禁止的xp_cmdshell。
圖2-5-2 開啟xp_cmdshell
3. xp_cmdshell被刪除后,使用SP_OACreate執(zhí)行shell。
圖2-5-3 使用SP_OACreate執(zhí)行shell
4. 開啟CLR enabled選項(xiàng),使用SQL Server CLR執(zhí)行shell。
圖2-5-4 開啟CLR enabled選項(xiàng)
5. 注冊regsvr32.dll執(zhí)行遠(yuǎn)端代碼所需的組件,使用regsvr32.dll執(zhí)行shell。
圖2-5-5 注冊相關(guān)組件
6. 通過沙盒執(zhí)行shell。
圖2-5-6 通過沙盒執(zhí)行shell
7. 開啟SQL Agent服務(wù),使用SQL Agent服務(wù)執(zhí)行shell。
圖2-5-7 開啟SQL Agent服務(wù)
Cracker:mssql模塊所執(zhí)行的主要功能主要包括以下幾方面:
1. 在c:\windows\system32\wbem下創(chuàng)建批處理文件123.dat,并在該文件中寫入內(nèi)容。
圖2-5-8 創(chuàng)建123.bat
該批處理文件執(zhí)行的功能包括對一些程序運(yùn)行所涉及到的文件和文件夾進(jìn)行權(quán)限設(shè)置;使用regsvr32.dll執(zhí)行遠(yuǎn)端代碼;判斷是否存在item.dat,若存在則調(diào)用rundll32執(zhí)行該程序。item.dat是修改自PCShare(github:https://github.com/isuhao/pcshare)的遠(yuǎn)程控制程序,C&C通過item.dat控制Bot。
2. 創(chuàng)建文件PerfStringse.ini,并在該文件中寫入內(nèi)容。
圖2-5-9 創(chuàng)建PerfStringse.ini
該文件是個組策略模板文件,主要是禁止一些涉及到的文件的訪問權(quán)限。在創(chuàng)建該模板文件之后調(diào)用secedit.exe配置組策略。
圖2-5-10 調(diào)用secedit.exe配置組策略
3. 在c:\windows\system下創(chuàng)建文件myusa.dvr,并在文件中寫入內(nèi)容。
圖2-5-11 創(chuàng)建myusa.dvr
myusa.dvr是個ftp下載腳本,主要功能是從down.mys2016.info下載文件1.dat到本地c:\windows\system路徑下,命名為myusago.dvr;下載1.bat到本地c:\windows\system路徑下,命名為backs.bat。
myusago.dvr也是個ftp下載腳本,從down.mys2016.info下載多個文件到本地;backs.bat用于記錄系統(tǒng)時(shí)間并寫入1.txt中。
圖2-5-12 myusago.dvr內(nèi)容
下載的文件中,item.dat是C&C用于控制Bot的遠(yuǎn)程控制軟件;ms.rar實(shí)際上就是Bot程序的更新程序cab.exe;ss.bat和Cracker:mssql模塊釋放的123.bat是同一個文件;未找到op7key.rar文件,猜測與爆破字典類似。
從myusago.dvr下載的文件不難看出,Bot程序除了執(zhí)行Cracker:mssql模塊中硬編碼的惡意代碼之外,還通過云端下載相應(yīng)的惡意程序,這保障與Bot程序相關(guān)聯(lián)的惡意代碼能夠持續(xù)駐留。在分析的過程中我們發(fā)現(xiàn),用于進(jìn)行環(huán)境配置和程序運(yùn)行控制的123.bat批處理腳本是更新最為頻繁的,從2017年4月份起更新次數(shù)超過了10次。
myusago.dvr和myusa.dvr將作為ftp的參數(shù)寫入命令行中并加入SQL Agent的Job中,每天執(zhí)行一次。
4. 將Bot程序加入SQL Agent的job中,并附帶參數(shù)“-syn 1000”。每次SQL Agent啟動時(shí)Bot程序也將啟動。
圖2-5-13 將Bot程序加入SQL Agent的Job中
5. 以Job的形式每20分鐘運(yùn)行一次C:\Progra~1\mainsoft\install.exe。該程序是一個掛機(jī)賺分軟件。
圖2-5-14 以Job形式執(zhí)行install.exe
6. 以Job的形式每20分鐘執(zhí)行C:\windows\debug,C:\Progra~1\shengda和C:\Progra~1\kugou2010路徑下的所有exe。從我們的監(jiān)控中發(fā)現(xiàn),Bot程序所釋放的挖礦機(jī)以及能給黑客帶來直接收益的程序都存在于這幾個路徑中,黑客通過定時(shí)啟動這些程序保證收益的源源不斷。
圖2-5-15 定時(shí)執(zhí)行C:\windows\debug下的exe
圖2-5-16 定時(shí)執(zhí)行C:\Progra~1\shengda下的exe
圖2-5-17 定時(shí)執(zhí)行C:\Progra~1\kugou2010下的exe
7. 創(chuàng)建ftp下載腳本msinfo.dat,該腳本從down.mys2016.info下載文件到C:\windows\debug路徑下,并命名為bss.exe。之后通過批處理腳本msinfo.bat調(diào)用ftp執(zhí)行下載腳本,下載完成后啟動bss.exe,并刪除這兩個腳本。bss.exe疑似是個遠(yuǎn)控木馬。
圖2-5-18 msinfo.dat內(nèi)容
圖2-5-19 msinfo.bat內(nèi)容
8. 將item.dat和123.bat加入啟動項(xiàng)中。
圖2-5-20 將item.dat加入啟動項(xiàng)中
圖2-5-21 將123.bat加入啟動項(xiàng)中
9. 確定權(quán)限允許之后,刪除SQL用戶,并設(shè)置SQL SA(超級管理員)帳戶及密碼,同時(shí)添加多個SQL帳戶。完成這步操作之后,黑客正式接管該計(jì)算機(jī)的SQL Server,管理員無法再通過之前的帳戶登錄SQL Server。
圖2-5-22 添加SQL SA
Cracker:mssql模塊還通過SQL Server執(zhí)行多段shellcode,大部分的shellcode都以SQL Agent的Job形式存在并定期執(zhí)行。
第一段shellcode使用wmi中的ActiveScriptEventConsumer類執(zhí)行腳本代碼。該腳本讀取http://www.cyg2016.xyz:8888/test.html網(wǎng)頁內(nèi)容,并根據(jù)網(wǎng)頁內(nèi)容獲取第二組網(wǎng)址,下載文件并執(zhí)行。
圖2-5-23 第一段shellcode內(nèi)容
下載的文件包括更新程序cabs.exe和挖礦機(jī)lsmosee.exe。挖礦機(jī)修改自xmr-stak(github:https://github.com/fireice-uk/xmr-stak-cpu),以32位形式編譯,作者在此挖礦機(jī)中添加了一個模塊,當(dāng)需要64位挖礦機(jī)時(shí),該模塊將從C&C下載64位的挖礦機(jī)lsmose.exe到本地執(zhí)行。本樣本中,32位挖礦機(jī)的路徑為“C:\windows\help”,而64位挖礦機(jī)的路徑修改為“C:\windows\debug”。由于作者添加了SQL Agent的Job,使“C:\windows\debug”路徑下的exe文件每20分鐘執(zhí)行一次,猜測作者將挖礦機(jī)保存到此目錄下是為了保證挖礦機(jī)能夠穩(wěn)定運(yùn)行。
圖2-5-24 下載挖礦機(jī)和更新程序
第二段shellcode使用js腳本執(zhí)行惡意代碼,腳本功能與第一段shellcode中的jscript代碼相同。
圖2-5-25 第二段shellcode內(nèi)容
第三段shellcode同樣使用wmi腳本執(zhí)行jscript代碼,所執(zhí)行的功能與創(chuàng)建的批處理文件123.bat的功能相同,猜測作者此舉為了防止文件123.bat被殺毒軟件清除而執(zhí)行的備用方案。
圖2-5-26 第三段shellcode內(nèi)容
第四段shellcode是第三段shellcode的js版本。不難發(fā)現(xiàn),作者對于每段shellcode都準(zhǔn)備了wmi和js兩種版本,以確保腳本執(zhí)行的穩(wěn)定性。
圖2-5-27 第四段shellcode內(nèi)容
第五段shellcode通過恢復(fù)cmdshell,恢復(fù)SP_OACreate等方式保證能通過SQL Server執(zhí)行shell,猜測作者通過Job定期執(zhí)行這段shellcode以保證shell能長期存活。
圖2-5-28 第五段shellcode內(nèi)容
第六段shellcode刪除C:\Documents and Settings\Default User\Local Settings\Temporary Internet Files\Content.IE5路徑下的文件。由于下載文件時(shí)都會在該目錄下留下對應(yīng)的tmp文件,作者此舉是為了防止用戶通過該目錄發(fā)現(xiàn)可疑文件,可見作者對痕跡的清理十分細(xì)心。
圖2-5-29 第六段shellcode內(nèi)容
第七段shellcode使用js腳本訪問http://www.cyg2016.xyz:8888/kill.html,該頁面是個文件名列表。腳本搜尋系統(tǒng)中是否存在與該頁面返回的文件名相同的文件,若存在則結(jié)束對應(yīng)進(jìn)程并將文件刪除。這些文件大多數(shù)是一些其他入侵者釋放的挖礦機(jī)。
圖2-5-30 第七段shellcode內(nèi)容
透過這些文件名我們發(fā)現(xiàn)了一個有趣的現(xiàn)象,在被刪除的文件中包含了一些和Bot程序釋放的挖礦機(jī)文件名十分相似的文件,例如C:\windows\debug\lsmosee.exe(Bot程序釋放的挖礦機(jī)是c:\windows\help\lsmosee.exe和C:\windows\debug\lsmose.exe)。是作者通過這樣的方式進(jìn)行更新,淘汰舊的挖礦機(jī),還是其他入侵者利用Bot程序定時(shí)執(zhí)行C:\windows\debug路徑下程序的特性坐收漁翁之利就不得而知了。
圖2-5-31 待刪除文件列表
第八段shellcode將123.bat加入啟動項(xiàng)中,此處不再贅述。
第九段shellcode從http://down.mys2016.info:280下載文件到C:\WINDOWS路徑下,并命名為ps.exe。ps.exe實(shí)際上是PsExec,一款強(qiáng)大的遠(yuǎn)程執(zhí)行工具,黑客在每臺入侵的計(jì)算中部署該工具,使每臺計(jì)算機(jī)成為一個控制端,方便構(gòu)建一個龐大的僵尸網(wǎng)絡(luò)。
圖2-5-32 第九段shellcode內(nèi)容
第十段shellcode主要是完成SQL提權(quán)的一系列操作。
圖2-5-33 第十段shellcode內(nèi)容
第十一段shellcode是利用SQL Server CLR執(zhí)行shell的payload,從payload中可以發(fā)現(xiàn)其訪問http://www.cyg2016.xyz:8888/clr.txt并執(zhí)行該頁面中返回的內(nèi)容。
圖2-5-34 payload的部分內(nèi)容
該頁面和http://www.cyg2016.xyz:8888/test.html一致,即下載更新程序和挖礦機(jī)到計(jì)算機(jī)中并運(yùn)行。
Cracker:mssql模塊完成了Bot程序幾乎所有要完成的功能,包括更新、挖礦、清除同類程序、定時(shí)任務(wù)以及SQL Server管理員賬戶的設(shè)置。由于作者目前的密碼字典中將mssql作為唯一攻擊目標(biāo),因此Cracker:mssql模塊如此完善也是可以理解的。若之后作者開啟了其他攻擊方式,其他的Cracker模塊也將變得更加完善。
5.2 Cracker:Telnet
Cracker:Telnet模塊是除了Cracker:mssql模塊之外較為完善的一個模塊。作者充分利用mirai僵尸網(wǎng)絡(luò)的優(yōu)點(diǎn)構(gòu)建了一套類似于mirai的Telnet入侵模塊。
在執(zhí)行Cracker:Telnet模塊之前,Bot程序在ServerAgent模塊中配置Telnet入侵攻擊的payload。ServerAgent模塊會根據(jù)不同的平臺架構(gòu)從資源段中讀取payload并將其轉(zhuǎn)化為十六進(jìn)制字節(jié)碼的形式。
、
圖2-5-35 從資源段讀取payload
在payload中我們發(fā)現(xiàn)一些mirai相關(guān)的標(biāo)識,通過對比發(fā)現(xiàn)Bot程序所使用的payload就是mirai僵尸網(wǎng)絡(luò)的payload(github:https://github.com/jgamblin/Mirai-Source-Code/tree/master/loader/bins),這些payload適用于不同的平臺架構(gòu)(arm,arm7,m68k,mips,mpsl,ppc,sh4,spc,x86)。
圖2-5-36 payload中mirai的相關(guān)標(biāo)識
除了payload與mirai相同之外,Cracker:Telnet模塊也基本修改自mirai源碼,包含密碼爆破功能和入侵功能。
圖2-5-37 Cracker:Telnet模塊中的mirai特征
mirai在通過Telnet入侵之前會配置一個ip地址用于作為report服務(wù)器地址,用于返回掃描結(jié)果,在分析中我們也發(fā)現(xiàn)了一個疑似report服務(wù)器ip地址。如果Bot程序的啟動參數(shù)中包含“-srv”,則ServerAgent模塊會從密碼字典中讀取名為telnetip的子鍵的鍵值,該鍵值是個ip地址,之后被傳入Cracker:Telnet模塊中。如果啟動參數(shù)中包含“-cli”,Bot程序會從當(dāng)前目錄下的wpdconfig.ini文件中讀取ip地址。
圖2-5-38 密碼字典中的report服務(wù)器地址
由于Cracker:Telnet模塊與mirai相差無幾,在此不再贅述,感興趣的讀者可以查看mirai源碼(github:https://github.com/jgamblin/Mirai-Source-Code)。
5.3 Cracker:RDP
Cracker:RDP模塊修改自hydra(github:https://github.com/vanhauser-thc/thc-hydra)的RDP部分。hydra是一款支持多種網(wǎng)絡(luò)服務(wù)的強(qiáng)大的暴力破解工具,Cracker:RDP模塊使用了其源碼中的rdp.c文件,用于對開放了RDP服務(wù)端口的計(jì)算機(jī)進(jìn)行爆破。不同于Cracker:mssql模塊和Cracker:Telnet模塊,Cracker:RDP模塊只是進(jìn)行爆破而未加入任何入侵以及代碼執(zhí)行的功能。
圖2-5-39 Cracker:RDP模塊掃描端口
5.4 Cracker:CCTV
Cracker:CCTV模塊是一個CCTV攝像頭入侵模塊。該模塊會向http://Targetip:port/shell?...(…的內(nèi)容猜測是用戶名&密碼)發(fā)送GET請求,一旦請求返回的狀態(tài)值不為400,401,403,404或500,則認(rèn)為該ip地址和端口號對應(yīng)的CCTV攝像頭可以被入侵。
圖2-5-40 Cracker:CCTV模塊掃描CCTV攝像頭
由于在密碼字典wpd.dat中并沒有配置CCTV相關(guān)的鍵值,猜測該模塊是和Cracker:Telnet模塊結(jié)合使用的。由于mirai中含有識別特定IOT設(shè)備的代碼,而Cracker:Telnet模塊又是修改自mirai,猜測當(dāng)Cracker:Telnet模塊發(fā)現(xiàn)某臺設(shè)備為CCTV攝像機(jī)時(shí)則通過Cracker:CCTV模塊進(jìn)行入侵。
5.5 其他模塊
在Bot程序早期的版本中(2016年10月編譯的版本)還發(fā)現(xiàn)了Cracker:MySQL模塊,Cracker:SSH模塊和Cracker:WMI模塊,這些模塊的功能都是在被入侵的計(jì)算機(jī)中執(zhí)行shell。
圖2-5-41 Cracker:MySQL模塊
圖2-5-41 Cracker:WMI模塊
圖2-5-41 Cracker:WMI模塊
不過這幾個模塊在之后的版本中都被移除了,而原本功能簡單的Cracker:mssql模塊在之后的版本中得到了完善。
cService模塊用于管理Bot服務(wù),Bot服務(wù)是Service形式的Bot程序。
當(dāng)Bot程序的啟動參數(shù)中包含“-create”時(shí),cService模塊創(chuàng)建名為“xWinWpdSrv”的服務(wù),該服務(wù)以“-s –syn 1500”作為啟動參數(shù)啟動Bot程序。
圖2-6-1 創(chuàng)建Bot服務(wù)
當(dāng)Bot程序的啟動參數(shù)包含“-delete”時(shí),cService模塊刪除“xWinWpdSrv”服務(wù)。
圖2-6-2 刪除Bot服務(wù)
當(dāng)Bot程序的啟動參數(shù)包含“-start”時(shí),cService模塊啟動“xWinWpdSrv”服務(wù)。
圖2-6-3 啟動Bot服務(wù)
當(dāng)Bot程序的啟動參數(shù)包含“-stop”時(shí),cService模塊停止“xWinWpdSrv”服務(wù)。
圖2-6-4 停止Bot服務(wù)
Bot程序模塊眾多,并且各模塊之間關(guān)系緊密,相互配合。此外,Bot程序與其他組件相輔相成,以保證攻擊者對計(jì)算機(jī)的持久控制以及僵尸網(wǎng)絡(luò)的不斷壯大。以下將用一個關(guān)系圖描述Bot程序與其他組件之間的關(guān)聯(lián)。
圖2-6-5 Bot程序與其他組件關(guān)系圖
從僵尸網(wǎng)絡(luò)當(dāng)前的攻擊重點(diǎn)來看,防范其通過1433端口入侵計(jì)算機(jī)是非常有必要的。此外,Bot程序還有多種攻擊方式尚未使用,這些攻擊方式可能在未來的某一天被開啟,因此也需要防范可能發(fā)生的攻擊。對此,我們總結(jié)以下幾個防御策略:
1.對于未遭到入侵的服務(wù)器,注意msSQL,RDP,Telnet等服務(wù)的弱口令問題。如果這些服務(wù)設(shè)置了弱口令,需要盡快修改;
2.對于無需使用的服務(wù)不要隨意開放,開放的服務(wù)是黑客入侵的前提。對于必須使用的服務(wù),注意相關(guān)服務(wù)的弱口令問題;
3.特別注意445端口的開放情況。由于黑客曾經(jīng)使用永恒之藍(lán)漏洞入侵計(jì)算機(jī),不排除黑客故技重施。及時(shí)打上補(bǔ)丁更新操作系統(tǒng)是非常有必要的。
4.關(guān)注服務(wù)器運(yùn)行狀況,注意CPU占用率和進(jìn)程列表和網(wǎng)絡(luò)流量情況可以及時(shí)發(fā)現(xiàn)系統(tǒng)存在的異常。此外,注意系統(tǒng)賬戶情況,禁用不必要的賬戶。
5.對于網(wǎng)絡(luò)攝像頭持有者,建議修改默認(rèn)密碼以防止黑客直接使用默認(rèn)密碼爆破。
該僵尸網(wǎng)絡(luò)現(xiàn)今主要依靠端口掃描和弱口令爆破進(jìn)行傳播,但其在“永恒之藍(lán)”漏洞攻擊武器出現(xiàn)之初就利用該武器入侵了一定數(shù)量的計(jì)算機(jī),可見其對于最新曝光的漏洞利用以及攻擊方法的掌握十分迅速,因此需時(shí)刻警惕其可能發(fā)起的重大攻擊。
*請認(rèn)真填寫需求信息,我們會在24小時(shí)內(nèi)與您取得聯(lián)系。