GALLIUM、PingPull、ICMP隧道、遠程訪問木馬
Unit 42近期發現了一個名為PingPull的新的、難以檢測的遠程訪問木馬,該木馬正被高級持久威脅(APT)組織GALLIUM使用。該組織又被稱作Softcell,是一個針對東南亞、歐洲和亞洲電信公司的組織。
在過去的一年裡,該組織已將其攻擊目標擴展到電信公司之外,包括金融機構和政府實體。在此期間Unit42確定了GALLIUM組織的基礎設施與阿富汗、澳大利亞、比利時、柬埔寨、馬來西亞、莫桑比克、菲律賓、俄羅斯和越南的目標實體之間的數個聯繫。最重要的是,還確定了該組織使用的新型PingPull遠程訪問木馬。
PingPull能夠利用三種協議(ICMP、HTTP(S)和原始TCP)進行命令和控制(C2)。儘管使用ICMP隧道不是一種新技術,但由於很少有組織會對其網絡上的ICMP流量進行檢測,因而監測PingPull的C2通信十分困難。本文對這一新工具進行了詳細分析並提供了GALLIUM組織近期基礎設施的分布情況。
PingPull惡意軟件分析
PingPull使用Visual C++編寫,為攻擊者提供在被感染主機上運行C2反向shell的功能。PingPull有三種功能相似的變體,分別使用ICMP、HTTP(S)和原始TCP協議進行C2通信。在成功感染主機後,PingPull將創建一個具有如下結構的自定義字符串,並將該字符串附加在每條C2通信數據中,作為被感染主機的唯一標識符:
PROJECT_[大寫可執行程序名][大寫主機名][大寫16進制IP地址]
PingPull會安裝使用IPv6過渡技術(6to4、ISATAP、Port Proxy和Teredo)和IP-HTTPS提供隧道連接的服務。該服務與合法的iphlpsvc服務功能完全相同,PingPull嘗試使用Iphelpsvc作為服務名稱,也有PingPull實例使用Onedrive作為服務名稱。
PingPull的三種變體具有相同的命令行指令,可以在文件系統中執行各種活動,並能在cmd.exe上運行攻擊者的反向shell命令,詳情如表1.1所示。
列舉存儲卷(A:到Z:)
B列舉文件夾內容
C讀文件D寫文件E刪除文件F十六進制讀文件G十六進制寫文件H複製文件,設置創建、寫入和訪問時間以匹配原始文件
I移動文件,設置創建、寫入和訪問時間以匹配原始文件
J創建目錄K文件時間戳M通過cmd.exe運行命令表1.1 PingPull的可用命令行指令
要運行表1.1中的命令,攻擊者需要讓C2服務器響應PingPull「信標」,該「信標」的命令和參數使用AES-CBC加密,並使用base64編碼。已知的PingPull樣本中有兩個不同的AES密鑰:
P29456789A1234sS
dC@133321Ikd!D^i
PingPull會解密收到的數據,並解析以下結構中的命令和其他參數:
&[AES密鑰]=[命令]&Z0=[未知]&Z1=[參數1]&Z2=[參數2]
字符串中的z0參數的作用未知,雖然觀察到PingPull解析了該參數,但並未發現對該值的使用。為了確認命令字符串的結構,在分析環境中使用以下字符串發出命令,該命令指示PingPull讀取C:\test.txt文件的內容:
&P29456789A1234sS=C&z0=2&z1=c:\\test.txt&z2=none
在分析環境中,PingPull用如下字符串響應了該命令:
ya1JF03nUKLg9TkhDgwvx5MSFIoMPllw1zLMC0h4IwM=
使用AES密鑰P29456789A1234sS對該字符串解密,成功得到文件C:\test.txt文件的內容:
\x07\x07\x07\x07\x07\x07\x07\x07
使用ICMP進行C2通信的PingPull實例將ICMP Echo請求(ping)數據包發送到C2服務器,C2服務器使用Echo應答數據包回復,確認可以向被入侵主機發出命令。PingPull及C2服務器使用的Echo請求和Echo應答數據包具有如下相同結構:
[8字節值]R序列號].[「PROJECT」開始的唯一標識串]\r\n
total=[消息總長度]\r\n
current=[當前消息長度]\r\n
[base64編碼的AES加密數據]
當向C2服務器發出「信標」時,PingPull將發送total和current值設置為0的Echo請求數據包,不包含編碼及加密後的數據,如圖1.1所示。
圖1.1 Ping PullICMP信標示例
圖1.1的示例中,ICMP數據包的數據部分以PingPull中硬編碼的8字節值0x702437047E404103(\x03\x41\x40\x7E\x04\x37\x24\x70)和硬編碼的R開頭,而另一個使用ICMP進行C2通信的PingPull樣本則省略了這個8字節值,如圖1.2所示。
圖1.2 PingPull ICMP信標示例,無硬編碼的8字節值
硬編碼的R之後是一個序列號,在發送或接收超過ICMP數據部分最大大小的數據時會增加,序列號之後則緊跟一個句號「.」。然後是PingPull生成的唯一標識符字符串,以PROJECT開頭。之後,ICMP數據部分包括total=[整數值]和current=[整數值],用於確定傳輸數據的總長度和當前數據包中傳輸的數據塊的長度。每個ICMP數據包中傳輸的是AES加密生成的密文字符串經base64編碼後的數據,其中加密密鑰取決於特定的樣本。此編碼後的加密數據緊隨total值的新行之後。例如,在響應測試命令時,PingPull將ICMP Echo請求數據包發送到C2服務器,該數據包中包含符合預期的base64編碼字符串ya1JF03nUKLg9TkhDgwvx5MSFIoMPllw1zLMC0h4IwM=,如圖1.3所示。
圖1.3 PingPull響應C2命令的ICMP數據包
HTTPS變體PingPull的另一個變體使用HTTPS請求與其C2服務器通信。初始「信標」使用HTTPS通道上的POST請求,使用PingPull生成的唯一標識符字符串作為URL。圖1.4是PingPull作為「信標」發送的POST請求示例,其中samp.exe是文件名,DESKTOP-U9SM1U2是分析系統的主機名,172.16.189.130(0xAC10BD82)是系統的IP地址。
圖1.4 PingPullHTTPS信標示例
初始「信標」是一個沒有數據的POST請求,HTTP標頭中的內容長度為0。當對命令作出響應時,PingPull將使用相同的URL結構發出第二個POST請求,結果在經過AES密鑰加密和base64編碼後放在數據部分。圖1.5顯示了PingPull對測試命令(ya1JF03nUKLg9TkhDgwvx5MSFIoMPllw1zLMC0h4IwM=)的響應結果,在POST請求的數據部分讀取C:\test.txt文件,成功讀取到文件內容:\x07\x07\x07\x07\x07\x07\x07\x07。
圖1.5 PingPull通過HTTPS響應命令的結果
TCP變體PingPull的第三種變體使用原始TCP進行C2通信。與其他C2通信通道相同,該「信標」中發送的數據包含PingPull生成的唯一標識符字符串,該字符串以PROJECT開頭。原始TCP C2通道以4字節值開頭,「信標」結構如下:
[緊隨數據的DWORD長度]PROJECT_[大寫可執行文件名]_[大寫計算機名]_[大寫的16進制IP地址]
圖1.6展示了原始TCP通信信道的示例:
PingPull在第一組紅色文本中發送「信標」;
C2在藍色文本中發出命令;
PingPull在第二組紅色文本中響應命令。
圖1.6 Ping Pull原始TCP信道示例
圖1.6中的「信標」從44字節(0x2c)處開始,唯一標識字符串中,samp_f86ebe.exe是文件名,DESKTOP-U9SM1U2是分析系統的主機名,1721.6.1689.130(0xAC10BD82)是主機的IP地址。對信標的C2響應從64字節(0x40)的數據長度開始,然後是表示命令密文的base64編碼字符串。PingPull運行C2提供的命令,並將結果發送到一個數據包中,數據長度為44字節(0x2c),然後是預期中的base64編碼字符串ya1JF03nUKLg9TkhDgwvx5MSFIoMPllw1zLMC0h4IwM=作為命令的返回結果。
2021年9月9日,越南的一個安全組織在網絡安全社區共享了一個名為ServerMannger.exe(SHA256:de14f22c88e552b61c62ab28d27a617fb8c0737350ca7c631de5680850282761)的PingPull樣本。對此樣本的分析表明,它被配置為聯繫t1.hinitial.com C2服務器。我們確定了託管在thehinitial.com域下的幾個子域,這些子域表現出類似的命名模式:
t1.hinitial[.]comv2.hinitial[.]comv3.hinitial[.]comv4.hinitial[.]comv5.hinitial[.]com
深入分析這些域名,可以發現每個子域關聯的各種IP基礎設施之間的證書使用有重疊。以其中一個特徵尤為突出的證書為例(SHA1:76efd8ef3f64059820d937fa87acf9369775ecd5),其有效期為10年,證書名為bbb,沒有其他細節,很容易監測到其合法性問題。證書內容如圖2.1所示。
圖2.1 與hinitial.com域名相關的X.509證書
該證書於2020年9月首次出現,鏈接到六個不同的IP地址,所有地址都託管在thehinitial.com域名的各個子域以及動態DNS主機(goodjob36.publicvm.com)上。通過分析PingPull樣本及其相關C2域,已經識別了可追溯到2020年底的170多個相關的IP地址。這些基礎設施的列舉在攻擊指標部分,用於網絡安全防禦目的。
GALLIUM仍然是東南亞、歐洲和非洲電信、金融和政府組織的一大威脅。在過去的一年裡,我們確定了影響九個國家的定向襲擊。該組織部署了名為PingPull的新型惡意軟件來支持其間諜活動,Unit 42鼓勵所有組織利用本文的調查結果為部署保護措施提供信息,以抵禦該組織的攻擊。
樣本:
de14f22c88e552b61c62ab28d27a617fb8c0737350ca7c631de5680850282761
b4aabfb8f0327370ce80970c357b84782eaf0aabfc70f5e7340746f25252d541
fc2147ddd8613f08dd833b6966891de9e5309587a61e4b35408d56f43e72697e
c55ab8fdd060fb532c599ee6647d1d7b52a013e4d8d3223b361db86c1f43e845
f86ebeb6b3c7f12ae98fe278df707d9ebdc17b19be0c773309f9af599243d0a3
8b664300fff1238d6c741ac17294d714098c5653c3ef992907fc498655ff7c20
1ce1eb64679689860a1eacb76def7c3e193504be53ebb0588cddcbde9d2b9fe6
C2:
df.micfkbeljacob.com
t1.hinitial.com
5.181.25.55
92.38.135.62
5.8.71.97
域名:
micfkbeljacob.com
df.micfkbeljacob.com
jack.micfkbeljacob.com
hinitial.com
t1.hinitial.com
v2.hinitial.com
v3.hinitial.com
v4.hinitial.com
v5.hinitial.com
goodjob36.publicvm.com
goodluck23.jp.我們
helpinfo.publicvm.com
Mailedc.publicvm.com
IP地址(在過去30天內活躍過):
92.38.135..62
5.181.25.55
5.8.71.97
101.36.102.34
101.36.102.93
101.36.114.167
101.36.123.191
103.116.47.65
103.179.188.93
103.22.183.131
103.22.183.138
103.22.183.141
103.22.183.146
103.51.145.143
103.61.139.71
103.61.139.72
103.61.139.75
103.61.139.78
103.61.139.79
103.78.242.62
118.193.56.130
118.193.62.232
123.58.196.208
123.58.198.205
123.58.203.19
128.14.232.56
152.32.165.70
152.32.203.199
152.32.221.222
152.32.245.157
154.222.238.50
154.222.238.51
165.154.52.41
165.154.70.51
167.88.182.166
176.113.71.62
2.58.242.230
2.58.242.231
2.58.242.235
202.87.223.27
212.115.54.54
37.61.229.104
45.116.13.153
45.128.221.61
45.128.221.66
45.136.187.98
45.14.66.230
45.154.14.132
45.154.14.164
45.154.14.188
45.154.14.254
45.251.241.74
45.251.241.82
45.76.113.163
47.254.192.79
92.223.30.232
92.223.30.52
92.223.90.174
92.223.93.148
92.223.93.222
92.38.139.170
92.38.149.101
92.38.149.241
92.38.171.127
92.38.176.47
107.150.127.124
118.193.56.131
176.113.71.168
185.239.227.12
194.29.100.173
2.58.242.236
45.128.221.182
45.154.14.191
47.254.250.117
79.133.124.88
103.137.185.249
103.61.139.74
107.150.112.211
107.150.127.140
146.185.218.65
152.32.221.242
165.154.70.62
176.113.68.12
185.101.139.176
188.241.250.152
188.241.250.153
193.187.117.144
196.46.190.27
2.58.242.229
2.58.242.232
37.61.229.106
45.128.221.172
45.128.221.186
45.128.221.229
45.134.169.147
103.170.132.199
107.150.110.233
152.32.255.145
167.88.182.107
185.239.226.203
185.239.227.34
45.128.221.169
45.136.187.41
137.220.55.38
45.133.238.234
103.192.226.43
92.38.149.88
5.188.33.237
146.185.218.176
43.254.218.104
43.254.218.57
43.254.218.98
92.223.59.84
43.254.218.43
81.28.13.48
89.43.107.191
103.123.134.145
103.123.134.161
103.123.134.165
103.85.24.81
212.115.54.241
43.254.218.114
89.43.107.190
103.123.134.139
103.123.134.240
103.85.24.121
103.169.91.93
103.169.91.94
45.121.50.230
https://unit42.paloaltonetworks.com/pingpull-gallium/
編輯|董放明
審校|何雙澤、金矢
本文為CNTIC編譯整理,不代表本公眾號觀點,轉載請保留出處與鏈接。聯繫信息進入公眾號後點擊「關於我們」可見。