Webshells
Webshell用于与受感染服务器交互。走漏数据中包含了三个webshell,分别为HyperShell、HighShell和Minion,Minion很可能是HighShell的一个变体,在代码、文件名和功能上都有堆叠。HyperShell和HighShell则是TwoFace的变体,其间HyperShell与TwoFace的加载器相关,HighShell与TwoFace的payload相关,这点咱们在2019年7月也有记载。除了OilRig运用的Webshell外,走漏数据中还有一个Webshell布置列表。如图8所示,列出了超越100个Webshell的链接,覆盖了四大洲26个国家的87个安排。
图8.受影响安排的Webshell的地理位置
Hypershell
HyperShell(SHA256:e483eee77fcc5ef11d5bf33a4179312753b62ec9a247dd14528cc797e7632d99)与的TwoFace加载器的3DES变体(咱们也叫它TwoFace++)有关,咱们曾在2019年7月报导过。
咱们曾用强制技能来提取TwoFace加载器嵌入式payload,但相同的办法在TwoFace ++加载器上行不通。
TwoFace加载器样本需求密钥来解密嵌入的webshell,密钥是通过简略的算术运算符(大多是“+”或“ – ”)和webshell中的盐字符串进行修正的,所以运用简略的算术运算符就能解密,逆运算来强制提取密钥,从而提取嵌入式webshell。
而TwoFace ++加载器则运用3DES暗码和攻击者供给的字符串的SHA256哈希并用作密钥,因而咱们无法提取嵌入式webshell。可是,转储数据中的供给了HyperShell的重要信息。与许多TwoFace加载器样本相同,HyperShell样本在HTML符号
和中包含一个字符串,假如未供给暗码,和/或TwoFace ++加载程序无法提取嵌入的webshell,则会在浏览器中显现该字符串。HyperShell样本中的pre标签是:
7a”) %>
图9显现了HyperShell在浏览器中“pre”标签内容。
图9.HyperShell在
标签内显现暗码
咱们以为,pre标签中的字符串正是攻击者供给的暗码,webshell将其作为密钥来加密嵌入的payload,这一点可通过下列进程来验证:
· 暗码上附加一个充任盐的字符串
· 获取包含暗码和盐的结合字符串的SHA1哈希值
· 对SHA1哈希进行Base64编码
· 将Base64编码后的哈希与硬编码的base64字符串进行比较
· 假如匹配,则对入站恳求进行身份验证
· 生成暗码字符串的SHA256哈希值
· Base64对SHA256哈希进行编码,并运用前24个字符作为密钥
· 运用24个字符的密钥和3DES暗码来解密嵌入的webshell
现在让咱们看看攻击者供给的暗码怎么与TwoFace ++加载器样本中的值一同运用。样本中,攻击者运用的暗码为“NxKK7a”,并附加了硬编码盐字符串“aqB2nU65TgFoEfdVqiAddBQLInc9”,两者结合的字符串为“NxKK7aaqB2nU65TgFoEfdVqiAddBQLInc9”,SHA1哈希为“9d3ff106fbc3508b8453c7d6f285543d0b9c2721”,base64编码后为“nT/xBvvDUIuEU8fW8oVUPQucJyE=”。而样本中base64硬编码后的暗码是“NT / xBvvDUIuEU8fW8oVUPQucJyE =”,这也就能证明咱们上面的观念。
通过身份验证后,TwoFace ++加载程序运用暗码来解密嵌入式webshell。要运用暗码作为密钥进行3DES解密,TwoFace ++会生成暗码“NxKK7a ”的SHA256,哈希为“11f66b55f3d24303621e5ef9565b02a576cc58bc5f8789cae96c3d400064b90e”,接着对哈希进行base64编码,发生的字符串为“EfZrVfPSQwNiHl75VlsCpXbMWLxfh4nK6Ww9QABkuQ4 =”,其间前24个字符被用作3DES密钥,并解密webshell (SHA256: d2b835b102117e327fdc4905ead24d45f46e82dd5ae525e90cca0a685d307619) 。此webshell好像也是HighShell(版别v5.0)的变种。
咱们将HighShell的v5.0版别与TwoFace的payload(SHA256:54c8bfa0be1d1419bf0770d49e937b284b52df212df19551576f73653a7d061f)进行了比较。如图10所示,基本是共同的,但HighShell有两个不相同的当地,右上角的版别号“v5.0”和左下角用于显现过错音讯和指令成果的三个小框。
图10.HighShell v5.0和TwoFace payload之间差异性
接着咱们对两个webshell的代码进行了剖析。这两个webshell大部分代码相同,差异在于变量和函数称号上略有不同。最明显的区别是HighShell v5.0 webshell包含一个盐值“di2zag7wZHTK9YR0NGq”,它应用于身份验证的暗码。图11左边显现了TwoFace的payload(SHA256:54c8bfa0be1d1419bf0770d49e937b284b52df212df19551576f73653a7d061f),右侧则是HighShell v5.0(SHA256:d2b835b102117e327fdc4905ead24d45f46e82dd5ae525e90cca0a685d307619),而相同的盐在左边的TwoFace代码中就没有。
图11. HighShell v5.0和TwoFace payload之间的比较
咱们以为TwoFace的 payload是HighShell v5.0 webshell的前身,后者是OilRig在其整个运营进程中创立的。
HighShell
转储数据还包含一个名为HighShell的webshell,它由HyperShell植入,如上一节所述。转储数据中包含了许多不同的HighShell样本,咱们现已确认了至少三个不同的版别,如表4所示。不断添加的版别数量标明OilRig在继续不断开发HighShell。[1][2][3][4]黑客接单网