惡意軟件GoScanSSH如何通過掃描SSH服務(wù)器暴力破解憑證進(jìn)行傳播
執(zhí)行概要
在最近一次應(yīng)急響應(yīng)(IR)參與中,Talos發(fā)現(xiàn)了一個(gè)新的惡意軟件家族,它被用來攻擊暴露在網(wǎng)絡(luò)上的SSH服務(wù)器。我們將該惡意軟件命名為GoScanSSH,該惡意軟件是使用Go編程語言編寫的,并顯示了幾個(gè)有趣的特性。雖然這并不是Talos所觀察到的第一個(gè)使用Go語言編寫的惡意軟件家族,但是使用這種編程語言編寫的惡意軟件還是是比較少見的。在這個(gè)特殊的例子中,我們還觀察到攻擊者為每一個(gè)感染了GoScanSSH惡意軟件的主機(jī)創(chuàng)建了獨(dú)有的惡意軟件二進(jìn)制文件。此外,還發(fā)現(xiàn)GoScanSSH命令和控制(C2)基礎(chǔ)設(shè)施,利用Tor2Web代理服務(wù),試圖讓跟蹤攻擊者控制基礎(chǔ)設(shè)施這一操作更加困難,并使其具有很強(qiáng)的靈活性。
初始感染過程
GoScanSSH所使用的初始感染向量很可能是對一個(gè)可公開訪問的SSH服務(wù)器的SSH憑據(jù)強(qiáng)力攻擊,該服務(wù)器允許基于密碼的SSH認(rèn)證。在這一系列的攻擊中,攻擊者利用一個(gè)包含超過7000個(gè)用戶名/密碼組合的wordlist。一旦攻擊者發(fā)現(xiàn)了一個(gè)允許成功進(jìn)行SSH身份驗(yàn)證的有效的憑證集,那么他們就會(huì)創(chuàng)建一個(gè)獨(dú)特的GoScanSSH惡意軟件二進(jìn)制文件,并將其上傳到被攻擊的SSH服務(wù)器上。然后,惡意軟件就會(huì)被執(zhí)行,從而感染系統(tǒng)。
該惡意軟件使用的用戶名/密碼組合似乎針對性較弱或者直接對一系列基于linux的設(shè)備是默認(rèn)憑證。惡意軟件使用下列用戶名試圖對SSH服務(wù)器進(jìn)行身份驗(yàn)證:
- admin
- guest
- oracle
- osmc
- pi
- root
- test
- ubnt
- ubuntu
- user
其中這些憑證的組合特別針對以下內(nèi)容:
- 開放嵌入式Linux娛樂中心(OpenELEC)
- Raspberry Pi
- 開源媒體中心(OSMC)
- Ubiquiti設(shè)備默認(rèn)憑證
- 越獄iphone
- PolyCom SIP電話默認(rèn)憑證
- 華為設(shè)備默認(rèn)憑證
- Asterisk默認(rèn)憑證
- 各種鍵盤模式
- 眾所周知的常用密碼
本文的以下部分包含關(guān)于GoScanSSH惡意軟件具體操作的其他詳細(xì)信息以及該惡意軟件其他可用功能的詳細(xì)信息。
惡意軟件操作
GoScanSSH是一個(gè)針對Linux系統(tǒng)并使用Golang(Go)編程語言編寫的惡意軟件。在分析過程中,Talos發(fā)現(xiàn)了超過70個(gè)與GoScanSSH惡意軟件家族相關(guān)的獨(dú)特的惡意軟件樣本。我們觀察了GoScanSSH樣本的示例,它們被編譯來支持多種系統(tǒng)架構(gòu),包括x86、x8664、ARM和MIPS64。在分析GoScanSSH的MIPS64版本時(shí),Talos發(fā)現(xiàn)了一個(gè)線程,在該線程中Ubiquiti企業(yè)網(wǎng)關(guān)路由器(Ubiquiti Enterprise Gateway Router )用戶在他們的路由器上發(fā)現(xiàn)了該惡意軟件,這表明該惡意軟件也在各種設(shè)備類型上傳播和執(zhí)行。Talos還觀察到了該惡意軟件在野外活動(dòng)的多個(gè)版本(版本1.2.2、1.2.4、1.3.0等等),這表明這種威脅正在繼續(xù)被攻擊者積極地開發(fā)和改進(jìn)。
在感染之后,GoScanSSH惡意軟件試圖確定受感染的系統(tǒng)有多強(qiáng)大。這一操作是通過確定在固定時(shí)間間隔內(nèi)可以執(zhí)行多少哈希計(jì)算來完成的。當(dāng)惡意軟件向C2服務(wù)器發(fā)送一個(gè)“checking_in”消息時(shí),確定的結(jié)果與關(guān)于受害者機(jī)器的基本調(diào)查信息一起將被傳送到C2服務(wù)器。這條消息在發(fā)送到C2服務(wù)器之前將被加密。對這條消息進(jìn)行解密表明它正在使用JSON進(jìn)行傳輸,并使用以下格式:
惡意軟件還會(huì)獲得一個(gè)唯一的標(biāo)識(shí)符,如上面的請求所示,該標(biāo)識(shí)符也會(huì)被發(fā)送到C2服務(wù)器。Talos在分析的樣本中觀察到大量的標(biāo)識(shí)符,但相同的標(biāo)識(shí)符只出現(xiàn)兩次。觀察到的不同標(biāo)識(shí)符的例子如下:
在Talos分析的GoScanSSH樣本中,惡意軟件被配置為接觸以下C2服務(wù)器域名:
- hXXp://5z5zt3qzyp6j4bda[.]onion[.]link
- hXXp://5z5zt3qzyp6j4bda[.]onion[.]to
- hXXp://3xjj3i6rv3bdxd6p[.]onion[.]link
- hXXp://3xjj3i6rv3bdxd6p[.]onion[.]to
- hXXp://b4l7gbnyduslzhq4[.]onion[.]link
- hXXp://b4l7gbnyduslzhq4[.]onion[.]to
這些域名是通過Tor2Web代理服務(wù)訪問的。該服務(wù)允許標(biāo)準(zhǔn)互聯(lián)網(wǎng)上的系統(tǒng)訪問托管在Tor上的資源,而不需要系統(tǒng)安裝Tor客戶端。Talos觀察到惡意軟件越來越多地使用這些代理服務(wù),正如一篇博客中描述的那樣。通過利用Tor2Web,攻擊者可以在Tor網(wǎng)絡(luò)中托管他們的C2基礎(chǔ)設(shè)施,而不需要在他們的惡意軟件中包含額外的Tor功能。
受攻擊的主機(jī)和C2基礎(chǔ)設(shè)施之間的通信是經(jīng)過身份驗(yàn)證的,以確保受攻擊的主機(jī)不能被劫持。為了實(shí)現(xiàn)這一點(diǎn),對在受感染系統(tǒng)和C2服務(wù)器之間傳輸?shù)南ⅲ褂秒S機(jī)生成的密鑰進(jìn)行AES加密。還使用RSA非對稱加密對密鑰進(jìn)行加密。RSA公鑰是在惡意軟件二進(jìn)制文件中硬編碼的。加密的密鑰和被傳輸?shù)腏SON的內(nèi)容被連接起來,并被base64編碼。然后,作為HTTP GET請求的URI部分,發(fā)送給C2服務(wù)器。
在啟動(dòng)SSH掃描活動(dòng)之前,該惡意軟件將等待C2服務(wù)器響應(yīng)前面提到的HTTP GET請求,該請求使用與“checking_in”消息相關(guān)聯(lián)的JSON數(shù)據(jù)結(jié)構(gòu)的SHA256散列。如果還沒有收到響應(yīng),惡意軟件就會(huì)執(zhí)行一個(gè)睡眠功能,并將重新嘗試這個(gè)過程。
通過使用Cisco Umbrella的調(diào)查來分析DNS請求,該請求試圖解析上面列出的一個(gè)C2域名,Talos發(fā)現(xiàn)解析域名的嘗試明顯增加,這可能表明受攻擊的主機(jī)數(shù)量在繼續(xù)增加。
在對與所有Talos分析樣本中收集到的所有C2域名有關(guān)的被動(dòng)DNS數(shù)據(jù)分析中,可以看到,從2017年6月19日開始的解析嘗試,表明這次攻擊活動(dòng)已經(jīng)持續(xù)了至少9個(gè)月。此外,已經(jīng)觀察到具有最大數(shù)量解析請求的C2域名8579次解析請求。
下圖顯示了我們所識(shí)別的所有惡意域名的DNS活動(dòng)總數(shù)如下:
Talos識(shí)別出的與該進(jìn)行中的惡意活動(dòng)有關(guān)的250個(gè)域名的完整列表,在本文的攻擊指標(biāo)(IOC)部分。
掃描易受攻擊的SSH服務(wù)器
GoScanSSH惡意軟件所執(zhí)行的主要功能之一是掃描并識(shí)別暴露在互聯(lián)網(wǎng)上的其他易受攻擊的SSH服務(wù)器,攻擊者可能會(huì)進(jìn)一步攻擊它們。這一操作通過首先隨機(jī)生成一個(gè)IP地址來執(zhí)行的,并且避免特殊用途的IP地址。然后,將IP地址與惡意軟件不掃描的CIDR塊列表進(jìn)行比較。該列表的內(nèi)容主要是由不同的政府和軍事實(shí)體控制的網(wǎng)絡(luò)范圍,特別要避開此處列出的美國國防部指定的范圍。此外,列表中的一個(gè)網(wǎng)絡(luò)范圍被分配給韓國的一個(gè)組織。如果所選的IP屬于這些網(wǎng)絡(luò)范圍就會(huì)被丟棄,并生成一個(gè)新的IP地址。
惡意軟件試圖在TCP/22上與選定的IP地址建立一個(gè)TCP連接。如果連接成功建立,惡意軟件就會(huì)執(zhí)行反向DNS查找,以確定IP地址是否解析為任何域名。如果反向DNS查詢返回一個(gè)域名,則將其與各種政府和軍事實(shí)體相關(guān)的域名列表進(jìn)行比較。如果域名匹配列表上的任何條目,連接終止,IP將被丟棄,并生成一個(gè)新的IP。在這個(gè)過程中包含的CIDR塊和域名的列表可以在附錄A和B中找到。
一旦確定所選的IP地址是額外攻擊的理想目標(biāo),惡意軟件就會(huì)試圖通過使用前面提到的包含用戶名和密碼組合的wordlist對系統(tǒng)進(jìn)行身份驗(yàn)證,從而獲得有效的SSH憑證。如果成功,惡意軟件將報(bào)告返回到C2服務(wù)器。返回到C2服務(wù)器的通信將使用以下格式在JSON中傳輸關(guān)于攻擊狀態(tài)的橫幅和其他信息:
Talos認(rèn)為攻擊者隨后會(huì)為受攻擊的系統(tǒng)編譯一個(gè)新的惡意軟件二進(jìn)制文件,并感染新的主機(jī),導(dǎo)致該進(jìn)程在新感染的系統(tǒng)上重復(fù)。
總結(jié)
上述這些攻擊表明了,暴露在互聯(lián)網(wǎng)上的服務(wù)器,存在被網(wǎng)絡(luò)犯罪分子不斷攻擊的風(fēng)險(xiǎn)。企業(yè)應(yīng)該采用最佳措施,來確保所暴露的服務(wù)器可以免受來自世界各地的攻擊者的不斷攻擊。企業(yè)還應(yīng)該確保系統(tǒng)已被加強(qiáng),在將新系統(tǒng)部署到生產(chǎn)環(huán)境之前,默認(rèn)憑證是可以被更改的,并且這些系統(tǒng)會(huì)被持續(xù)監(jiān)視,以試圖對它們進(jìn)行攻擊。Talos將繼續(xù)監(jiān)測和跟蹤這一攻擊,以及其他威脅,以確??蛻粼谶@些威脅不斷演變的情況下繼續(xù)受到保護(hù)。
覆蓋
我們的客戶可以發(fā)現(xiàn)并阻止這種威脅的其他方法如下。
- 先進(jìn)的惡意軟件保護(hù)(AMP)非常適合用于阻止威脅行為者使用的惡意軟件的執(zhí)行。
- CWS或WSA網(wǎng)頁掃描阻止對惡意網(wǎng)站的訪問,并檢測在這些攻擊中使用的惡意軟件。
- 電子郵件安全(Email Security )可以阻止威脅參與者發(fā)送的惡意電子郵件,作為他們活動(dòng)的一部分。
- 網(wǎng)絡(luò)安全設(shè)備(Network Security ),如NGFW、NGIPS和Meraki MX可以檢測與這種威脅相關(guān)的惡意活動(dòng)。
- AMP Threat Grid有助于識(shí)別惡意的二進(jìn)制文件,并為所有Cisco安全產(chǎn)品建立保護(hù)。
- Umbrella,我們的安全因特網(wǎng)網(wǎng)關(guān)(SIG),阻止用戶連接到惡意域名、IP和URL,不管用戶是否在公司網(wǎng)絡(luò)上。
- Open Source Snort Subscriber Rule Set,客戶可以通過在Snort.org上下載最新的規(guī)則包來保持更新最新的規(guī)則包。
攻擊指標(biāo)(IOC)
在這里可以找到與該惡意軟件相關(guān)聯(lián)的二進(jìn)制哈希(SHA256)的列表。
可以在這里找到與該惡意軟件相關(guān)的域名列表。
附錄A:IP黑名單
下面的列表用于確定惡意軟件所使用的隨機(jī)生成的IP是否不用于試圖破壞系統(tǒng)。
- 0.0.0.0/8
- 10.0.0.0/8
- 100.64.0.0/10
- 127.0.0.0/8
- 169.254.0.0/16
- 172.16.0.0/12
- 192.0.0.0/24
- 192.0.2.0/24
- 192.88.99.0/24
- 192.168.0.0/16
- 198.18.0.0/15
- 198.51.100.0/24
- 203.0.113.0/24
- 224.0.0.0/4
- 240.0.0.0/4
- 255.255.255.255/32
- 6.0.0.0/8
- 7.0.0.0/8
- 11.0.0.0/8
- 21.0.0.0/8
- 22.0.0.0/8
- 26.0.0.0/8
- 28.0.0.0/8
- 29.0.0.0/8
- 30.0.0.0/8
- 33.0.0.0/8
- 55.0.0.0/8
- 214.0.0.0/8
- 215.0.0.0/8
- 211.238.159.0/24
附錄B:域名黑名單
下面的列表用于根據(jù)反向DNS查找的結(jié)果確定是否繼續(xù)嘗試攻擊系統(tǒng)。如果域名在下列列表中,它將被丟棄。
- mil
- gov
- army
- airforce
- navy
- gov.uk
- mil.uk
- govt.uk
- mod.uk
- gov.au
- govt.nz
- mil.nz
- parliament.nz
- gov.il
- muni.il
- idf.il
- gov.za
- mil.za
- gob.es
- police.u